summaryrefslogtreecommitdiff
path: root/static/js/main.a90a4e80.chunk.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'static/js/main.a90a4e80.chunk.js.map')
-rw-r--r--static/js/main.a90a4e80.chunk.js.map1
1 files changed, 1 insertions, 0 deletions
diff --git a/static/js/main.a90a4e80.chunk.js.map b/static/js/main.a90a4e80.chunk.js.map
new file mode 100644
index 0000000..7eb8592
--- /dev/null
+++ b/static/js/main.a90a4e80.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["components/icons/logo.js","components/launcher/index.js","redux/github/transform.js","redux/github/types.js","redux/preference/types.js","redux/github/reducer.js","redux/preference/reducer.js","redux/reducers.js","store.js","components/alert/index.js","components/icons/solar.js","components/loader/index.js","components/top-nav/index.js","components/filters/language-filter/index.js","components/filters/view-filter/index.js","components/filters/date-jump-filter/index.js","components/filters/index.js","components/group-heading/index.js","redux/github/actions.js","components/icons/star.js","components/icons/fork.js","components/icons/issue.js","components/repository-list/list-item/index.js","components/repository-grid/grid-item/index.js","components/repository-grid/index.js","components/repository-list/index.js","containers/feed/index.js","redux/preference/actions.js","components/options-form/index.js","containers/options/index.js","router/index.js","app.js","worker.js","index.js"],"names":["Logo","props","react_default","a","createElement","id","xmlns","width","height","viewBox","className","d","Launcher","logo","GithubTransform","createTransform","inboundState","key","repositories","length","Object","objectSpread","processing","error","outboundState","whitelist","PROCESS_FETCH_TRENDING","FETCH_TRENDING_SUCCESS","FETCH_TRENDING_FAILED","UPDATE_OPTIONS","UPDATE_VIEW_TYPE","UPDATE_DATE_TYPE","UPDATE_LANGUAGE","initialState","reducer","state","arguments","undefined","action","type","concat","toConsumableArray","payload","viewType","dateJump","language","options","token","combineReducers","github","preference","persistedReducers","persistReducer","storage","stateReconciler","autoMergeLevel2","transforms","expireReducer","expireSeconds","expiredState","githubState","autoExpire","rootReducer","store","createStore","composeWithDevTools","applyMiddleware","thunk","persist","persistStore","Alert","classnames","children","Solar","assign","Loader","solar","TopNav","tweet","isRunningExtension","window","chrome","runtime","href","rel","target","this","React","Component","LanguageFilter","filterInputRef","createRef","filterText","selectedIndex","showDropdown","focusFilterInput","_this","current","focus","onKeyDown","e","isEnterKey","keyCode","isUpKey","isDownKey","filteredLanguages","getFilteredLanguages","preventDefault","setState","prevState","selectLanguage","selectedLanguage","updateLanguage","value","hideDropdown","filterLanguages","toggleDropdown","prevProps","ensureSelectedVisible","itemComponent","refs","activeItem","domNode","ReactDOM","findDOMNode","scrollIntoView","block","_this2","availableLanguages","languages","filter","languageText","title","toLowerCase","selectedText","indexOf","_this3","map","counter","isSelectedIndex","refProp","ref","classNames","active-item","onMouseDown","placeholder","onBlur","onChange","renderLanguages","onClick","getLanguageDropdown","ViewFilter","changeSelected","updateViewType","active","selectedViewType","DateJumpFilter","dropdownOpen","updateDateJump","selectedDateJump","toggle","Dropdown","isOpen","DropdownToggle","getSelectedDateJump","DropdownMenu","DropdownItem","Filters","language_filter","date_jump_filter","view_filter","GroupHeading","startMoment","moment","start","currentMoment","yesterdayMoment","subtract","isSame","format","formattedDate","fromNow","endMoment","end","getTitle","getSubtitle","transformFilters","filters","transformedFilters","dateRange","reposDate","reposLanguage","access_token","q","sort","order","Star","version","role","fillRule","Fork","Issue","ListItem","repository","html_url","owner","login","name","created_at","description","itemProp","star","stargazers_count","toLocaleString","fork","forks","issue","open_issues","src","avatar_url","onError","alt","GridItem","slice","RepositoryGrid","repositoryGroup","groupHeading","group_heading","groupKey","data","items","data-group-key","grid_item","renderGroup","RepositoryList","list_item","propTypes","PropTypes","array","isRequired","string","FeedContainer","fetchNextRepositories","getFilters","fetchTrending","currPreferences","prevPreferences","getNextDateRange","lastRecords","startOf","components_alert","react_router_dom","to","message","tokenWarning","renderTokenWarning","renderErrors","repository_grid","repository_list","top_nav","renderAlerts","hasRepositories","components_filters","renderRepositoriesList","loader","mapDispatchToProps","dispatch","axios","get","params","then","response","catch","connect","OptionsForm","success","saveOptions","updateOptions","_this$setState","defineProperty","OptionsContainer","options_form","AppRoutes","react_router","exact","path","component","App","es","integration_react","loading","launcher","persistor","router","isLocalhost","Boolean","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","console","log","render","app","document","getElementById","URL","process","origin","addEventListener","fetch","status","headers","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"iVA8CeA,SA5CF,SAACC,GAAD,OACXC,EAAAC,EAAAC,cAAA,OAAKC,GAAG,eAAeC,MAAM,6BAA6BC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aACvFP,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,aAAS,8LAEXF,EAAAC,EAAAC,cAAA,iCACAF,EAAAC,EAAAC,cAAA,KAAGC,GAAG,oBACJH,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,siBACRT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,qHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,6HAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,+FAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,4JAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,ueACRT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,4EAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,0HAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,oFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,wZACRT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,wMAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,4JAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,qHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,2GAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,0GAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,yHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,yFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,uGAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,6GAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,qTAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,uSAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sOAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,gKAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,gKAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sKAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,2IAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,gGAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sGAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,0gBCxBCC,EAZE,kBACfV,EAAAC,EAAAC,cAAA,OAAKM,UAAU,iBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,kBACbR,EAAAC,EAAAC,cAACS,EAAD,MACAX,EAAAC,EAAAC,cAAA,OAAKM,UAAU,aACbR,EAAAC,EAAAC,cAAA,wBACAF,EAAAC,EAAAC,cAAA,KAAGM,UAAU,cAAb,8HC0BOI,EAnCSC,0BAEtB,SAACC,EAAcC,GAqBb,OApBAD,EAAeA,GAAgB,IAGdE,cAAgBF,EAAaE,aAAaC,OAAS,IAClEH,EAAYI,OAAAC,EAAA,EAAAD,CAAA,GACPJ,EADO,CAEVE,aAAc,CACZF,EAAaE,aAAa,OAOhCF,EAAYI,OAAAC,EAAA,EAAAD,CAAA,GACPJ,EADO,CAEVM,YAAY,EACZC,MAAO,QAMX,SAACC,EAAeP,GACd,OAAOG,OAAAC,EAAA,EAAAD,CAAA,GAAKI,IAGd,CACEC,UAAW,CAAC,oBCjCHC,EAAyB,yBACzBC,EAAyB,yBACzBC,EAAwB,wBCFxBC,EAAiB,iBACjBC,EAAmB,mBACnBC,EAAmB,mBACnBC,EAAkB,kBCAlBC,EAAe,CAC1BX,YAAY,EAMZJ,aAAc,GACdK,MAAO,MAGM,SAASW,IAAsC,IAA9BC,EAA8BC,UAAAjB,OAAA,QAAAkB,IAAAD,UAAA,GAAAA,UAAA,GAAtBH,EAAcK,EAAQF,UAAAjB,OAAA,EAAAiB,UAAA,QAAAC,EAC5D,OAAQC,EAAOC,MACb,KAAKb,EACH,OAAON,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAEEb,YAAY,EACZC,MAAO,OAEX,KAAKQ,EACL,KAAKC,EACH,OAAOZ,OAAAC,EAAA,EAAAD,CAAA,GACFe,EACAF,GAEP,KAAKN,EACH,OAAOP,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAGEjB,aAAY,GAAAsB,OAAApB,OAAAqB,EAAA,EAAArB,CACPe,EAAMjB,cADC,CAEVoB,EAAOI,UAETpB,YAAY,EACZC,MAAO,OAEX,KAAKK,EACH,OAAOR,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAEEb,YAAY,EACZC,MAAOe,EAAOI,UAElB,QACE,OAAOP,GC5Cb,IAAMF,EAAe,CACnBU,SAAU,OACVC,SAAU,OACVC,SAAU,GACVC,QAAS,CACPC,MAAO,KCFIC,gCAAgB,CAC7BC,SACAC,WDIa,WAA+C,IAA9Bf,EAA8BC,UAAAjB,OAAA,QAAAkB,IAAAD,UAAA,GAAAA,UAAA,GAAtBH,EAAcK,EAAQF,UAAAjB,OAAA,EAAAiB,UAAA,QAAAC,EAC5D,OAAQC,EAAOC,MACb,KAAKV,EACH,OAAOT,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAEEW,QAASR,EAAOI,UAEpB,KAAKX,EACH,OAAOX,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAEES,SAAUN,EAAOI,UAErB,KAAKZ,EACH,OAAOV,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAEEQ,SAAUL,EAAOI,UAErB,KAAKV,EACH,OAAOZ,OAAAC,EAAA,EAAAD,CAAA,GACFe,EADL,CAEEU,SAAUP,EAAOI,UAErB,QACE,OAAOP,MEtBPgB,EAAoBC,yBACxB,CACEnC,IAAK,eACLoC,QAASA,IACTC,gBAAiBC,IACjBC,WAAY,CACV1C,EACA2C,IAAc,SAAU,CACtBC,cAAe,KACfC,aAAavC,OAAAC,EAAA,EAAAD,CAAA,GAAMwC,GACnBC,YAAY,MAIlBC,GAGWC,EAAQC,sBAAYb,EAAmBc,8BAClDC,0BACEC,OAISC,EAAUC,uBAAaN,6DCvBrBO,EARD,SAACrE,GAAD,OACZC,EAAAC,EAAAC,cAAA,OAAKM,UAAY6D,IAAW,QAAD,SAAA/B,OAAmBvC,EAAMsC,QAAYtC,EAAMuE,WCyCzDC,SA3CD,SAACxE,GAAD,OACZC,EAAAC,EAAAC,cAAA,MAAAgB,OAAAsD,OAAA,CAAKrE,GAAG,gBAAoBJ,EAA5B,CAAoCK,MAAM,6BAA6BC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,cACpGP,EAAAC,EAAAC,cAAA,YACEF,EAAAC,EAAAC,cAAA,aAAS,mOAEXF,EAAAC,EAAAC,cAAA,6BACAF,EAAAC,EAAAC,cAAA,KAAGC,GAAG,gBACJH,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,4mBACRT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,6FAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,yFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,yFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,yEAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,uFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,+EAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,uTACRT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,0GAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QACVC,EAAE,qYACRT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,+KAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,yHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,oHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,kHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,gHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,qGAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,wHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,sGAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,wHAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,8GAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,qFAC1BT,EAAAC,EAAAC,cAAA,QAAMM,UAAU,QAAQC,EAAE,2FC1BjBgE,EANA,kBACbzE,EAAAC,EAAAC,cAAA,OAAKM,UAAU,qBACbR,EAAAC,EAAAC,cAACwE,EAAD,CAAOlE,UAAU,cC2DNmE,oNA5DbC,MAAQ,oLAIN,IAAMC,EAAqBC,OAAOC,QAChCD,OAAOC,OAAOC,SACdF,OAAOC,OAAOC,QAAQ7E,GAExB,OACEH,EAAAC,EAAAC,cAAA,OAAKM,UAAU,WACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,sBACbR,EAAAC,EAAAC,cAAA,KAAG+E,KAAK,2CACLC,IAAI,sBACJC,OAAO,SACP3E,UAAU,4BACXR,EAAAC,EAAAC,cAACS,EAAD,MACAX,EAAAC,EAAAC,cAAA,OAAKM,UAAU,aACbR,EAAAC,EAAAC,cAAA,qBACAF,EAAAC,EAAAC,cAAA,KAAGM,UAAU,6FAAb,mCACAR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,qEAAb,yBAGJR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,6BACbR,EAAAC,EAAAC,cAAA,KAAG+E,KAAK,0CACLE,OAAO,SACPD,IAAI,sBACJ1E,UAAU,gBAAeR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,sBAHzC,iBAKGqE,GACC7E,EAAAC,EAAAC,cAAA,KAAG+E,KAAK,wBACLE,OAAO,SACPD,IAAI,sBACJ1E,UAAU,yFACXR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,sBAJf,kBASFqE,GACE7E,EAAAC,EAAAC,cAAA,KAAG+E,KAAK,oCACLE,OAAO,SACPD,IAAI,sBACJ1E,UAAU,yFACXR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,uBAJf,kBAQJR,EAAAC,EAAAC,cAAA,KAAG+E,KAAI,yCAAA3C,OAA4C8C,KAAKR,OACrDO,OAAO,SACPD,IAAI,sBACJ1E,UAAU,4FACXR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,uBAJf,oBAhDS6E,IAAMC,4BCuLZC,8MAnLbC,eAAiBH,IAAMI,cAEvBxD,MAAQ,CACNyD,WAAY,GACZC,cAAe,EACfC,cAAc,KAGhBC,iBAAmB,WACjBC,EAAKN,eAAeO,QAAQC,WAgE9BC,UAAY,SAAAC,GAAK,IACPP,EAAkBG,EAAK7D,MAAvB0D,cAEFQ,EAA2B,KAAdD,EAAEE,QACfC,EAAwB,KAAdH,EAAEE,QACZE,EAA0B,KAAdJ,EAAEE,QAEpB,GAAKC,GAAYC,GAAcH,EAA/B,CAIA,IAAMI,EAAoBT,EAAKU,uBAC/BN,EAAEO,iBAGEJ,GAAWV,EAAgB,EAC7BG,EAAKY,SAAS,SAAAC,GAAS,MAAK,CAC1BhB,cAAegB,EAAUhB,cAAgB,KAElCW,GAAaX,EAAiBY,EAAkBtF,OAAS,EAClE6E,EAAKY,SAAS,SAAAC,GAAS,MAAK,CAC1BhB,cAAegB,EAAUhB,cAAgB,KAElCQ,GAAcI,EAAkBZ,IACzCG,EAAKc,eAAejB,OAIxBiB,eAAiB,SAACjB,GAChB,IACMkB,EADoBf,EAAKU,uBACYb,GACtCkB,IAILf,EAAKY,SAAS,CACZhB,WAAY,GACZE,cAAc,IAGhBE,EAAK/F,MAAM+G,eAAeD,EAAiBE,WAG7CC,aAAe,WACblB,EAAKY,SAAS,CACZd,cAAc,EACdF,WAAY,QAIhBuB,gBAAkB,SAACf,GACjBJ,EAAKY,SAAS,CACZhB,WAAYQ,EAAEf,OAAO4B,MACrBpB,cAAe,OA6BnBuB,eAAiB,WACfpB,EAAKY,SAAS,SAAAC,GAAS,MAAK,CAC1Bf,cAAee,EAAUf,mGAjJVuB,EAAWR,GAExBA,EAAUhB,gBAAkBP,KAAKnD,MAAM0D,eACzCP,KAAKgC,wBAIHhC,KAAKnD,MAAM2D,eAAiBe,EAAUf,cACxCR,KAAKS,mEAKP,IAAMwB,EAAgBjC,KAAKkC,KAAKC,WAChC,GAAKF,EAAL,CAIA,IAAMG,EAAUC,IAASC,YAAYL,GAChCG,GAILA,EAAQG,eAAe,CAAEC,MAAO,wDAGX,IAAAC,EAAAzC,KACjB0C,EAAkB5G,OAAAqB,EAAA,EAAArB,CAAO6G,GAW7B,OATI3C,KAAKnD,MAAMyD,aACboC,EAAqBA,EAAmBE,OAAO,SAAArF,GAC7C,IAAMsF,EAAetF,EAASuF,MAAMC,cAC9BC,EAAeP,EAAK5F,MAAMyD,WAAWyC,cAE3C,OAAOF,EAAaI,QAAQD,IAAiB,KAI1CN,4CAGS,IAAAQ,EAAAlD,KAGhB,OAFyBA,KAAKoB,uBAEJ+B,IAAI,SAAC5F,EAAU6F,GACvC,IAAMC,EAAkBD,IAAYF,EAAKrG,MAAM0D,cAGzC+C,EAAUD,EAAkB,CAAEE,IAAK,cAAiB,GAE1D,OACE3I,EAAAC,EAAAC,cAAA,IAAAgB,OAAAsD,OAAA,CAAGhE,UAAYoI,IAAW,mBAAoB,CAAEC,cAAeJ,KACvDC,EADR,CAEGI,YAAc,kBAAMR,EAAK1B,eAAe4B,IACxCzH,IAAMyH,IACPxI,EAAAC,EAAAC,cAAA,QAAMM,UAAU,yBAA0BmC,EAASuF,wDAgEzD,OACElI,EAAAC,EAAAC,cAAA,OAAKM,UAAU,mBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,sBACbR,EAAAC,EAAAC,cAAA,QAAMM,UAAU,qBAAhB,oBAEFR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,uBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,2BACbR,EAAAC,EAAAC,cAAA,SAAOmC,KAAK,OACL7B,UAAU,eACVuI,YAAY,mBACZJ,IAAMvD,KAAKI,eACXwD,OAAS5D,KAAK4B,aACdiC,SAAW7D,KAAK6B,gBAChBhB,UAAYb,KAAKa,cAI5BjG,EAAAC,EAAAC,cAAA,OAAKM,UAAU,oBACX4E,KAAK8D,qDAab,OACElJ,EAAAC,EAAAC,cAAA,OAAKM,UAAU,wBACbR,EAAAC,EAAAC,cAAA,UAAQiJ,QAAU/D,KAAK8B,eAAiB1G,UAAU,0CAChDR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,sBACX4E,KAAKrF,MAAM8G,kBAAoB,iBAEjCzB,KAAKnD,MAAM2D,cAAgBR,KAAKgE,8BAzKb/D,IAAMC,WC4BpB+D,qNA7BbpH,MAAQ,KAERqH,eAAiB,SAAC7G,GAChBqD,EAAK/F,MAAMwJ,eAAe9G,4EAGnB,IAAAoF,EAAAzC,KACP,OACEpF,EAAAC,EAAAC,cAAA,OAAKM,UAAU,kBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,yCACbR,EAAAC,EAAAC,cAAA,UAAQiJ,QAAU,kBAAMtB,EAAKyB,eAAe,SAAU9I,UAAYoI,IAAW,CAAEY,OAAwC,SAAhCpE,KAAKrF,MAAM0J,oBAChGzJ,EAAAC,EAAAC,cAAA,KAAGM,UAAU,qBADf,QAIAR,EAAAC,EAAAC,cAAA,UAAQiJ,QAAU,kBAAMtB,EAAKyB,eAAe,SAAU9I,UAAYoI,IAAW,CAAEY,OAAwC,SAAhCpE,KAAKrF,MAAM0J,oBAChGzJ,EAAAC,EAAAC,cAAA,KAAGM,UAAU,oBADf,iBAfe6E,IAAMC,4DCyDhBoE,qNAxDbzH,MAAQ,CACN0H,cAAc,KAGhBC,eAAiB,SAAClH,GACZA,IAAaoD,EAAK/F,MAAM8J,kBAI5B/D,EAAK/F,MAAM6J,eAAelH,MAG5BoH,OAAS,WACPhE,EAAKY,SAAS,SAAAC,GAAS,MAAK,CAC1BgD,cAAehD,EAAUgD,sGAK3B,OAAQvE,KAAKrF,MAAM8J,kBACjB,IAAK,MACH,MAAO,QACT,IAAK,QACH,MAAO,UACT,IAAK,OACH,MAAO,SACT,IAAK,OAEL,QACE,MAAO,2CAIJ,IAAAhC,EAAAzC,KACP,OACEpF,EAAAC,EAAAC,cAAC6J,GAAA,EAAD,CAAUvJ,UAAU,iBAAiBwJ,OAAS5E,KAAKnD,MAAM0H,aAAeG,OAAS1E,KAAK0E,QACpF9J,EAAAC,EAAAC,cAAC+J,GAAA,EAAD,CAAgBzJ,UAAU,2BACxBR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,wBACX4E,KAAK8E,uBAETlK,EAAAC,EAAAC,cAACiK,GAAA,EAAD,KACEnK,EAAAC,EAAAC,cAACkK,GAAA,EAAD,CAAcjB,QAAU,kBAAMtB,EAAK+B,eAAe,UAAlD,UACA5J,EAAAC,EAAAC,cAACkK,GAAA,EAAD,CAAcjB,QAAU,kBAAMtB,EAAK+B,eAAe,WAAlD,WACA5J,EAAAC,EAAAC,cAACkK,GAAA,EAAD,CAAcjB,QAAU,kBAAMtB,EAAK+B,eAAe,UAAlD,UACA5J,EAAAC,EAAAC,cAACkK,GAAA,EAAD,CAAcjB,QAAU,kBAAMtB,EAAK+B,eAAe,SAAlD,kBA7CmBvE,IAAMC,YCkCpB+E,GAhCC,SAACtK,GAAD,OACdC,EAAAC,EAAAC,cAAA,OAAKM,UAAU,qDACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eACbR,EAAAC,EAAAC,cAACoK,GAAD,CACEzD,iBAAmB9G,EAAM8G,iBACzBC,eAAiB/G,EAAM+G,kBAG3B9G,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eACbR,EAAAC,EAAAC,cAACqK,GAAD,CACEX,eAAiB7J,EAAM6J,eACvBC,iBAAmB9J,EAAM8J,oBAG7B7J,EAAAC,EAAAC,cAAA,OAAKM,UAAU,gEACbR,EAAAC,EAAAC,cAACsK,GAAD,CACEf,iBAAmB1J,EAAM0J,iBACzBF,eAAiBxJ,EAAMwJ,oBC0ChBkB,6LA3DX,IAAMC,EAAcC,IAAOvF,KAAKrF,MAAM6K,OAChCC,EAAgBF,MAChBG,EAAkBH,MAASI,SAAS,EAAG,OAG7C,GAA4B,QAAxB3F,KAAKrF,MAAM2C,SACb,OAAIgI,EAAYM,OAAOH,EAAe,OAC7B,QACEH,EAAYM,OAAOF,EAAiB,OACtC,YAGFJ,EAAYO,OAAO,QAI5B,IAAMC,EAAgBR,EAAYS,UAClC,MAAsB,eAAlBD,EACK,YACoB,eAAlBA,EACF,YACoB,gBAAlBA,EACF,YAGFA,wCAIP,IAAMR,EAAcC,IAAOvF,KAAKrF,MAAM6K,OAChCQ,EAAYT,IAAOvF,KAAKrF,MAAMsL,KAEpC,OAAIX,EAAYM,OAAOI,EAAW,QAAkC,QAAxBhG,KAAKrF,MAAM2C,SAC9CgI,EAAYO,OAAO,gBAGrBP,EAAYO,OAAO,gBAAkB,WAAQG,EAAUH,OAAO,iDAIrE,OACEjL,EAAAC,EAAAC,cAAA,OAAKM,UAAU,iBACbR,EAAAC,EAAAC,cAAA,UACEF,EAAAC,EAAAC,cAAA,QAAMM,UAAU,oBAAqB4E,KAAKkG,YAC1CtL,EAAAC,EAAAC,cAAA,QAAMM,UAAU,yBACZ4E,KAAKmG,wBA/CQlG,IAAMC,gCCK3BkG,GAAmB,SAACC,GACxB,IAAMC,EAAqB,GAErBhB,EAAcC,IAAOc,EAAQE,UAAUf,OACvCQ,EAAYT,IAAOc,EAAQE,UAAUN,KACrCO,EAAS,WAAAtJ,OAAcoI,EAAYO,SAA1B,MAAA3I,OAAuC8I,EAAUH,UAC1DY,EAAgBJ,EAAQ9I,SAAR,YAAAL,OAA+BmJ,EAAQ9I,SAAvC,KAAqD,GAU3E,OARI8I,EAAQ5I,QACV6I,EAAmBI,aAAeL,EAAQ5I,OAG5C6I,EAAmBK,EAAIF,EAAgBD,EACvCF,EAAmBM,KAAO,QAC1BN,EAAmBO,MAAQ,OAEpBP,sBCnBMQ,kBANF,SAACnM,GAAD,OACXC,EAAAC,EAAAC,cAAA,OAAKK,QAAQ,YAAY4L,QAAQ,MAAM9L,MAAM,KAAKC,OAAO,KAAK8L,KAAK,OACjEpM,EAAAC,EAAAC,cAAA,QAAMmM,SAAS,UAAU5L,EAAE,yFCKhB6L,GAPF,SAACvM,GAAD,OACXC,EAAAC,EAAAC,cAAA,OAAKK,QAAQ,YAAY4L,QAAQ,MAAM9L,MAAM,KAAKC,OAAO,KAAK8L,KAAK,OACjEpM,EAAAC,EAAAC,cAAA,QAAMmM,SAAS,UACT5L,EAAE,qdCGG8L,GAND,SAACxM,GAAD,OACZC,EAAAC,EAAAC,cAAA,OAAKM,UAAU,+BAA+BD,QAAQ,YAAY4L,QAAQ,MAAM9L,MAAM,KAAKC,OAAO,MAChGN,EAAAC,EAAAC,cAAA,QAAMmM,SAAS,UAAU5L,EAAE,yLC6EhB+L,oLAtEX,OACExM,EAAAC,EAAAC,cAAA,OAAKM,UAAU,8BACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,kBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eACbR,EAAAC,EAAAC,cAAA,UACEF,EAAAC,EAAAC,cAAA,KAAG+E,KAAOG,KAAKrF,MAAM0M,WAAWC,SAAWxH,IAAI,sBAAsBC,OAAO,UAC1EnF,EAAAC,EAAAC,cAAA,QAAMM,UAAU,eAAgB4E,KAAKrF,MAAM0M,WAAWE,MAAMC,MAA5D,OACExH,KAAKrF,MAAM0M,WAAWI,OAG5B7M,EAAAC,EAAAC,cAAA,KAAGM,UAAU,8BAAb,iBAA4DR,EAAAC,EAAAC,cAAA,KAAG+E,KAAOG,KAAKrF,MAAM0M,WAAWE,MAAMD,SAAWxH,IAAI,sBAAsBC,OAAO,UAAWC,KAAKrF,MAAM0M,WAAWE,MAAMC,OAArL,SAA4MjC,IAAOvF,KAAKrF,MAAM0M,WAAWK,YAAY7B,OAAO,iBAE9PjL,EAAAC,EAAAC,cAAA,OAAKM,UAAU,aACbR,EAAAC,EAAAC,cAAA,SAAKkF,KAAKrF,MAAM0M,WAAWM,aAAe,0BAE5C/M,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eAEX4E,KAAKrF,MAAM0M,WAAW9J,UACpB3C,EAAAC,EAAAC,cAAA,QAAMM,UAAU,uBACdR,EAAAC,EAAAC,cAAA,QAAMM,UAAU,6BAChBR,EAAAC,EAAAC,cAAA,QAAM8M,SAAS,uBACX5H,KAAKrF,MAAM0M,WAAW9J,WAKhC3C,EAAAC,EAAAC,cAAA,KAAGM,UAAU,iCACVyE,KAAI,GAAA3C,OAAM8C,KAAKrF,MAAM0M,WAAWC,SAA5B,eACJxH,IAAI,sBACJC,OAAO,UACRnF,EAAAC,EAAAC,cAAC+M,GAAD,MACE7H,KAAKrF,MAAM0M,WAAWS,iBAAiBC,kBAE3CnN,EAAAC,EAAAC,cAAA,KAAGM,UAAU,iCACVyE,KAAI,GAAA3C,OAAM8C,KAAKrF,MAAM0M,WAAWC,SAA5B,oBACJxH,IAAI,sBACJC,OAAO,UACRnF,EAAAC,EAAAC,cAACkN,GAAD,MACEhI,KAAKrF,MAAM0M,WAAWY,MAAQjI,KAAKrF,MAAM0M,WAAWY,MAAMF,iBAAmB,GAEjFnN,EAAAC,EAAAC,cAAA,KAAGM,UAAU,iCACVyE,KAAI,GAAA3C,OAAM8C,KAAKrF,MAAM0M,WAAWC,SAA5B,WACJxH,IAAI,sBACJC,OAAO,UACRnF,EAAAC,EAAAC,cAACoN,GAAD,MACElI,KAAKrF,MAAM0M,WAAWc,YAAcnI,KAAKrF,MAAM0M,WAAWc,YAAYJ,iBAAmB,KAKjGnN,EAAAC,EAAAC,cAAA,KAAG+E,KAAOG,KAAKrF,MAAM0M,WAAWE,MAAMD,SACnCvH,OAAO,SACPD,IAAI,sBACJ1E,UAAU,uDACXR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,aACVgN,IAAMpI,KAAKrF,MAAM0M,WAAWE,MAAMc,WAClCC,QAAU,SAACxH,GACTA,EAAEf,OAAOqI,IAAM,iBAEjBG,IAAMvI,KAAKrF,MAAM0M,WAAWE,MAAMC,iBA7D1BvH,IAAMC,WC4EdsI,4LA1EX,OACE5N,EAAAC,EAAAC,cAAA,OAAKM,UAAU,mEACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,kBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,0BACbR,EAAAC,EAAAC,cAAA,KAAG+E,KAAOG,KAAKrF,MAAM0M,WAAWE,MAAMD,SAAWxH,IAAI,sBAAsBC,OAAO,UAChFnF,EAAAC,EAAAC,cAAA,OAAKM,UAAU,cACbR,EAAAC,EAAAC,cAAA,OAAKsN,IAAMpI,KAAKrF,MAAM0M,WAAWE,MAAMc,WAClCC,QAAU,SAACxH,GACTA,EAAEf,OAAOqI,IAAM,iBAEjBG,IAAMvI,KAAKrF,MAAM0M,WAAWE,MAAMC,SAEzC5M,EAAAC,EAAAC,cAAA,OAAKM,UAAU,kBACbR,EAAAC,EAAAC,cAAA,UAAMkF,KAAKrF,MAAM0M,WAAWE,MAAMC,OAClC5M,EAAAC,EAAAC,cAAA,KAAGM,UAAU,oBAAb,mBAINR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eACbR,EAAAC,EAAAC,cAAA,UACEF,EAAAC,EAAAC,cAAA,KAAG+E,KAAOG,KAAKrF,MAAM0M,WAAWC,SAAWxH,IAAI,sBAAsBC,OAAO,UAC1EnF,EAAAC,EAAAC,cAAA,QAAMM,UAAU,aAAc4E,KAAKrF,MAAM0M,WAAWI,QAGxD7M,EAAAC,EAAAC,cAAA,KAAGM,UAAU,8BAAb,iBACoBR,EAAAC,EAAAC,cAAA,KAAGiF,OAAO,SAASD,IAAI,sBAAsBD,KAAOG,KAAKrF,MAAM0M,WAAWE,MAAMD,UAAatH,KAAKrF,MAAM0M,WAAWE,MAAMC,OAD7I,SACoKjC,IAAOvF,KAAKrF,MAAM0M,WAAWK,YAAY7B,OAAO,kBAGtNjL,EAAAC,EAAAC,cAAA,OAAKM,UAAU,aACbR,EAAAC,EAAAC,cAAA,SAAMkF,KAAKrF,MAAM0M,WAAWM,aAAe3H,KAAKrF,MAAM0M,WAAWM,YAAYc,MAAM,EAAG,MAAS,0BAEjG7N,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eAEX4E,KAAKrF,MAAM0M,WAAW9J,UACpB3C,EAAAC,EAAAC,cAAA,QAAMM,UAAU,uBACdR,EAAAC,EAAAC,cAAA,QAAMM,UAAU,6BAChBR,EAAAC,EAAAC,cAAA,QAAM8M,SAAS,uBACX5H,KAAKrF,MAAM0M,WAAW9J,WAKhC3C,EAAAC,EAAAC,cAAA,KAAGM,UAAU,iCACVyE,KAAI,GAAA3C,OAAM8C,KAAKrF,MAAM0M,WAAWC,SAA5B,eACJxH,IAAI,sBACJC,OAAO,UACRnF,EAAAC,EAAAC,cAAC+M,GAAD,MACE7H,KAAKrF,MAAM0M,WAAWS,iBAAmB9H,KAAKrF,MAAM0M,WAAWS,iBAAiBC,iBAAmB,GAEvGnN,EAAAC,EAAAC,cAAA,KAAGM,UAAU,iCACVyE,KAAI,GAAA3C,OAAM8C,KAAKrF,MAAM0M,WAAWC,SAA5B,oBACJxH,IAAI,sBACJC,OAAO,UACRnF,EAAAC,EAAAC,cAACkN,GAAD,MACEhI,KAAKrF,MAAM0M,WAAWY,MAAQjI,KAAKrF,MAAM0M,WAAWY,MAAMF,iBAAmB,GAEjFnN,EAAAC,EAAAC,cAAA,KAAGM,UAAU,iCACVyE,KAAI,GAAA3C,OAAM8C,KAAKrF,MAAM0M,WAAWC,SAA5B,WACJxH,IAAI,sBACJC,OAAO,UACRnF,EAAAC,EAAAC,cAACoN,GAAD,MACElI,KAAKrF,MAAM0M,WAAWc,YAAcnI,KAAKrF,MAAM0M,WAAWc,YAAYJ,iBAAmB,aA/DlF9H,IAAMC,YC8CdwI,+LA/CDC,EAAiBvF,GAC3B,IAAIwF,EAAe,GAGH,IAAZxF,IACFwF,EACEhO,EAAAC,EAAAC,cAAA,OAAKM,UAAU,iBACbR,EAAAC,EAAAC,cAAC+N,GAAD,CACErD,MAAQmD,EAAgBnD,MACxBS,IAAM0C,EAAgB1C,IACtB3I,SAAW0C,KAAKrF,MAAM2C,aAM9B,IAAMwL,EAAQ,GAAA5L,OAAMyL,EAAgBnD,MAAtB,KAAAtI,OAA+ByL,EAAgB1C,IAA/C,KAAA/I,OAAsDkG,GAC9DxH,EAAe+M,EAAgBI,KAAKC,MAE1C,OACEpO,EAAAC,EAAAC,cAAA,OAAKa,IAAMmN,EAAWG,iBAAiBH,GACnCF,EACFhO,EAAAC,EAAAC,cAAA,OAAKM,UAAU,sBACXQ,EAAauH,IAAI,SAAAkE,GAAU,OAAIzM,EAAAC,EAAAC,cAACoO,GAAD,CAAU7B,WAAaA,EAAa1L,IAAM0L,EAAWtM,0CAMrF,IAAA2F,EAAAV,KACP,OACEpF,EAAAC,EAAAC,cAAA,OAAKM,UAAU,qBAEX4E,KAAKrF,MAAMiB,aAAauH,IAAI,SAACwF,EAAiBvF,GAC5C,OAAO1C,EAAKyI,YAAYR,EAAiBvF,aAnCxBnD,IAAMC,YCC7BkJ,uLAEQT,EAAiBvF,GAC3B,IAAIwF,EAAe,GAGH,IAAZxF,IACFwF,EACEhO,EAAAC,EAAAC,cAAA,OAAKM,UAAU,iBACbR,EAAAC,EAAAC,cAAC+N,GAAD,CACErD,MAAQmD,EAAgBnD,MACxBS,IAAM0C,EAAgB1C,IACtB3I,SAAW0C,KAAKrF,MAAM2C,aAM9B,IAAMwL,EAAQ,GAAA5L,OAAMyL,EAAgBnD,MAAtB,KAAAtI,OAA+ByL,EAAgB1C,IAA/C,KAAA/I,OAAsDkG,GAC9DxH,EAAe+M,EAAgBI,KAAKC,MAE1C,OACEpO,EAAAC,EAAAC,cAAA,OAAKa,IAAMmN,EAAWG,iBAAiBH,GACnCF,EACFhO,EAAAC,EAAAC,cAAA,OAAKM,UAAU,sBACXQ,EAAauH,IAAI,SAAAkE,GAAU,OAAIzM,EAAAC,EAAAC,cAACuO,GAAD,CAAUhC,WAAaA,EAAa1L,IAAM0L,EAAWtM,0CAMrF,IAAA2F,EAAAV,KACP,OACEpF,EAAAC,EAAAC,cAAA,OAAKM,UAAU,qBAEX4E,KAAKrF,MAAMiB,aAAauH,IAAI,SAACwF,EAAiBvF,GAC5C,OAAO1C,EAAKyI,YAAYR,EAAiBvF,aApCxBnD,IAAMC,WA4CnCwI,GAAeY,UAAY,CACzB1N,aAAc2N,KAAUC,MAAMC,WAC9BnM,SAAUiM,KAAUG,OAAOD,YAGdL,UCzCTO,+LAKkC,KAHP3J,KAAKrF,MAAMgD,OAAO/B,cAAgB,IAGtCC,QACvBmE,KAAK4J,wEAKP,IAAMvD,EAAUrG,KAAK6J,aACrB7J,KAAKrF,MAAMmP,cAAczD,8CAGRtE,GACjB,IAAMgI,EAAkB/J,KAAKrF,MAAMiD,WAC7BoM,EAAkBjI,EAAUnE,WAI9BmM,EAAgBxM,WAAayM,EAAgBzM,UAC/CwM,EAAgBzM,WAAa0M,EAAgB1M,UAC7C0C,KAAK4J,6DAKP,IAAMvD,EAAU,GAWhB,OATAA,EAAQE,UAAYvG,KAAKiK,mBACrBjK,KAAKrF,MAAMiD,WAAWL,WACxB8I,EAAQ9I,SAAWyC,KAAKrF,MAAMiD,WAAWL,UAGvCyC,KAAKrF,MAAMiD,WAAWJ,QAAQC,QAChC4I,EAAQ5I,MAAQuC,KAAKrF,MAAMiD,WAAWJ,QAAQC,OAGzC4I,6CAIP,IAAMzK,EAAeoE,KAAKrF,MAAMgD,OAAO/B,cAAgB,GACjD0B,EAAW0C,KAAKrF,MAAMiD,WAAWN,SAEjCiJ,EAAY,GACZ2D,EAActO,EAAaA,EAAaC,OAAS,GAUvD,OARIqO,GACF3D,EAAUf,MAAQD,IAAO2E,EAAY1E,OAAOG,SAAS,EAAGrI,GAAU6M,QAAQ,OAC1E5D,EAAUN,IAAMiE,EAAY1E,QAE5Be,EAAUf,MAAQD,MAASI,SAAS,EAAGrI,GAAU6M,QAAQ,OACzD5D,EAAUN,IAAMV,MAAS4E,QAAQ,QAG5B5D,+CAIP,OAAQvG,KAAKrF,MAAMiD,WAAWJ,QAAQC,OACpC7C,EAAAC,EAAAC,cAACsP,EAAD,CAAOnN,KAAK,WAAZ,eAEErC,EAAAC,EAAAC,cAAA,UAAQM,UAAU,aAChBR,EAAAC,EAAAC,cAACuP,EAAA,EAAD,CAAMC,GAAG,YAAT,gBAHJ,0EAWF,IAAKtK,KAAKrF,MAAMgD,OAAO1B,MACrB,OAAO,KAGT,IAAIsO,EAAU,GACd,OAAQvK,KAAKrF,MAAMgD,OAAO1B,MAAM8G,eAC9B,IAAK,kBACHwH,EACE3P,EAAAC,EAAAC,cAAA,qCACwBF,EAAAC,EAAAC,cAACuP,EAAA,EAAD,CAAMC,GAAG,YAAT,sBADxB,wBAIF,MACF,IAAK,gBACHC,EAAU,4CACV,MACF,QACEA,EAAUvK,KAAKrF,MAAMgD,OAAO1B,MAIhC,OACErB,EAAAC,EAAAC,cAACsP,EAAD,CAAOnN,KAAK,UACRsN,0CAMN,IAAMC,EAAexK,KAAKyK,qBACpBxO,EAAQ+D,KAAK0K,eAEnB,OAAIF,GAAgBvO,EAEhBrB,EAAAC,EAAAC,cAAA,OAAKM,UAAU,eACXoP,EACAvO,GAKD,sDAIP,MAAuC,SAAnC+D,KAAKrF,MAAMiD,WAAWP,SACjBzC,EAAAC,EAAAC,cAAC6P,GAAD,CACL/O,aAAeoE,KAAKrF,MAAMgD,OAAO/B,cAAgB,GACjD0B,SAAW0C,KAAKrF,MAAMiD,WAAWN,WAI9B1C,EAAAC,EAAAC,cAAC8P,GAAD,CACLhP,aAAeoE,KAAKrF,MAAMgD,OAAO/B,cAAgB,GACjD0B,SAAW0C,KAAKrF,MAAMiD,WAAWN,qDAKnC,OAAO0C,KAAKrF,MAAMgD,OAAO/B,cAA0D,IAA1CoE,KAAKrF,MAAMgD,OAAO/B,aAAaC,wCAGjE,IAAA6E,EAAAV,KACP,OACEpF,EAAAC,EAAAC,cAAA,OAAKM,UAAU,aACbR,EAAAC,EAAAC,cAAC+P,EAAD,MAEE7K,KAAK8K,eAEPlQ,EAAAC,EAAAC,cAAA,OAAKM,UAAU,uBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,uBAEX4E,KAAK+K,mBAAqBnQ,EAAAC,EAAAC,cAAC+N,GAAD,CACxBrD,MAAQxF,KAAKrF,MAAMgD,OAAO/B,aAAa,GAAG4J,MAC1CS,IAAMjG,KAAKrF,MAAMgD,OAAO/B,aAAa,GAAGqK,IACxC3I,SAAW0C,KAAKrF,MAAMiD,WAAWN,WAGrC1C,EAAAC,EAAAC,cAAA,OAAKM,UAAU,iBAEX4E,KAAK+K,mBAAqBnQ,EAAAC,EAAAC,cAACkQ,GAAD,CACxBvJ,iBAAmBzB,KAAKrF,MAAMiD,WAAWL,SACzC8G,iBAAmBrE,KAAKrF,MAAMiD,WAAWP,SACzCqE,eAAiB1B,KAAKrF,MAAM+G,eAC5ByC,eAAiBnE,KAAKrF,MAAMwJ,eAC5BK,eAAiBxE,KAAKrF,MAAM6J,eAC5BC,iBAAmBzE,KAAKrF,MAAMiD,WAAWN,aAKjD1C,EAAAC,EAAAC,cAAA,OAAKM,UAAU,YACX4E,KAAKiL,yBAELjL,KAAKrF,MAAMgD,OAAO3B,YAAcpB,EAAAC,EAAAC,cAACoQ,EAAD,OAG/BlL,KAAKrF,MAAMgD,OAAO3B,YACnBgE,KAAK+K,mBAEHnQ,EAAAC,EAAAC,cAAA,UAAQM,UAAU,wCACV2I,QAAU,kBAAMrD,EAAKkJ,0BAC3BhP,EAAAC,EAAAC,cAAA,KAAGM,UAAU,uBAFf,aAGc4E,KAAKrF,MAAMiD,WAAWN,oBAhLxB2C,IAAMC,WAkM5BiL,GAAqB,CACzBzJ,eC/L4B,SAAUnE,GACtC,OAAO,SAAA6N,GACLA,EAAS,CACPnO,KAAMP,EACNU,QAASG,MD4Lb4G,eCzM4B,WAA6B,IAAnB9G,EAAmBP,UAAAjB,OAAA,QAAAkB,IAAAD,UAAA,GAAAA,UAAA,GAAR,OACjD,OAAO,SAAAsO,GACLA,EAAS,CACPnO,KAAMT,EACNY,QAASC,MDsMbmH,eCxL4B,SAAUlH,GACtC,OAAO,SAAA8N,GACLA,EAAS,CACPnO,KAAMR,EACNW,QAASE,MDqLbwM,cRpL2B,SAAUzD,GACrC,OAAO,SAAA+E,GACLA,EAAS,CAAEnO,KAAMb,IAEjBiP,KAAMC,IA7BM,6CA6BO,CACjBC,OAAQnF,GAAiBC,KACxBmF,KAAK,SAAAC,GACNL,EAAS,CACPnO,KAAMZ,EACNe,QAAS,CACPoI,MAAOD,IAAOc,EAAQE,UAAUf,OAAOK,SACvCI,IAAKV,IAAOc,EAAQE,UAAUN,KAAKJ,SACnCkD,KAAM0C,EAAS1C,UAGlB2C,MAAM,SAAAzP,GACP,IAAIsO,EAAUtO,EAAMwP,UAClBxP,EAAMwP,SAAS1C,MACf9M,EAAMwP,SAAS1C,KAAKwB,QAEjBA,IACHA,EAAUtO,EAAMsO,SAGlBa,EAAS,CACPnO,KAAMX,EACNc,QAASmN,SQ6JFoB,eAdS,SAAAlN,GACtB,MAAO,CACLb,WAAYa,EAAMb,WAClBD,OAAQc,EAAMd,SAWsBwN,GAAzBQ,CAA6ChC,sBElI7CiC,sNA9Eb/O,MAAQ,CACNY,MAAOiD,EAAK/F,MAAM6C,QAAQC,MAC1BoO,SAAS,KAWXC,YAAc,WACZpL,EAAK/F,MAAMoR,cAAc,CACvBtO,MAAOiD,EAAK7D,MAAMY,WAItBoG,SAAW,SAAC/C,GAAM,IAAAkL,EAChBtL,EAAKY,UAAL0K,EAAA,GAAAlQ,OAAAmQ,GAAA,EAAAnQ,CAAAkQ,EACGlL,EAAEf,OAAO0H,KAAO3G,EAAEf,OAAO4B,OAD5B7F,OAAAmQ,GAAA,EAAAnQ,CAAAkQ,EAAA,WAEW,GAFXA,OAMFnL,UAAY,SAACC,GACO,KAAdA,EAAEE,SACJN,EAAKoL,iGAvBU/J,EAAWR,GACxBvB,KAAKrF,MAAM6C,QAAQC,QAAUsE,EAAUvE,QAAQC,OACjDuC,KAAKsB,SAAS,CACZuK,SAAS,qCAyBb,OACEjR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,gBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,cACbR,EAAAC,EAAAC,cAAA,2BACAF,EAAAC,EAAAC,cAAA,KAAGM,UAAU,cAAb,sEACAR,EAAAC,EAAAC,cAAA,WACAF,EAAAC,EAAAC,cAAA,UACEF,EAAAC,EAAAC,cAAA,uBACYF,EAAAC,EAAAC,cAAA,KAAG+E,KAAK,qCAAqCE,OAAO,SAASD,IAAI,uBAAsBlF,EAAAC,EAAAC,cAAA,KAAGM,UAAU,6BAApG,aAA6IR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,sBAA1J,2BADZ,2BAGAR,EAAAC,EAAAC,cAAA,mBAAUF,EAAAC,EAAAC,cAAA,kCAAV,0CAAgFF,EAAAC,EAAAC,cAAA,qBAAhF,WAA0GF,EAAAC,EAAAC,cAAA,2BAA1G,yBAAwJF,EAAAC,EAAAC,cAAA,8BAAxJ,KACAF,EAAAC,EAAAC,cAAA,8FAEFF,EAAAC,EAAAC,cAAA,SAAOmC,KAAK,OACLwK,KAAK,QACL5D,SAAW7D,KAAK6D,SAChBhD,UAAYb,KAAKa,UACjBzF,UAAU,eACVuG,MAAQ3B,KAAKnD,MAAMY,SAE5B7C,EAAAC,EAAAC,cAAA,UAAQM,UAAU,sCAAsC2I,QAAU/D,KAAK8L,aACrElR,EAAAC,EAAAC,cAAA,KAAGM,UAAU,mBADf,cAIAR,EAAAC,EAAAC,cAACuP,EAAA,EAAD,CAAMjP,UAAU,0CAA0CkP,GAAG,KAC3D1P,EAAAC,EAAAC,cAAA,KAAGM,UAAU,0BADf,YAKE4E,KAAKnD,MAAMgP,SACTjR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,QACbR,EAAAC,EAAAC,cAACsP,EAAD,CAAOnN,KAAK,WAAZ,iCAlEYgD,IAAMC,YCA1BgM,oLAEF,OACEtR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,qBACbR,EAAAC,EAAAC,cAAA,OAAKM,UAAU,oBACbR,EAAAC,EAAAC,cAACqR,GAAD,CACEJ,cAAgB/L,KAAKrF,MAAMoR,cAC3BvO,QAAUwC,KAAKrF,MAAMiD,WAAWJ,mBAPbyC,IAAMC,WAqB/BiL,GAAqB,CACzBY,cF3B2B,SAAUvO,GACrC,OAAO,SAAA4N,GACLA,EAAS,CACPnO,KAAMV,EACNa,QAASI,OE0BAmO,eAVS,SAAClN,GACvB,MAAO,CACLb,WAAYa,EAAMb,aAQkBuN,GAAzBQ,CAA6CO,ICb7CE,GAbG,WAChB,OAEExR,EAAAC,EAAAC,cAACuR,EAAA,EAAD,KACEzR,EAAAC,EAAAC,cAACuR,EAAA,EAAD,KACEzR,EAAAC,EAAAC,cAACuR,EAAA,EAAD,CAAOC,OAAK,EAACC,KAAK,IAAIC,UAAY7C,KAClC/O,EAAAC,EAAAC,cAACuR,EAAA,EAAD,CAAOC,OAAK,EAACC,KAAK,WAAWC,UAAYN,KACzCtR,EAAAC,EAAAC,cAACuR,EAAA,EAAD,CAAOG,UAAY7C,QCOZ8C,oLAVX,OACE7R,EAAAC,EAAAC,cAAC4R,EAAA,EAAD,CAAUjO,MAAQA,GAChB7D,EAAAC,EAAAC,cAAC6R,EAAA,YAAD,CAAaC,QAAUhS,EAAAC,EAAAC,cAAC+R,EAAD,MAAcC,UAAYhO,GAC/ClE,EAAAC,EAAAC,cAACiS,GAAD,eALQ7M,aCEZ8M,GAAcC,QACW,cAA7BvN,OAAOwN,SAASC,UAEa,UAA7BzN,OAAOwN,SAASC,UAEhBzN,OAAOwN,SAASC,SAASC,MACvB,2DAsCJ,SAASC,GAAgBC,GACvBC,UAAUC,cACPC,SAASH,GACT9B,KAAK,SAAAkC,GACJA,EAAaC,cAAgB,WAC3B,IAAMC,EAAmBF,EAAaG,WACtCD,EAAiBE,cAAgB,WACA,cAA3BF,EAAiB/Q,QACf0Q,UAAUC,cAAcO,WAK1BC,QAAQC,IAAI,6CAKZD,QAAQC,IAAI,2CAMrBvC,MAAM,SAAAzP,GACL+R,QAAQ/R,MAAM,4CAA6CA,KCtEjEoG,IAAS6L,OAAOtT,EAAAC,EAAAC,cAACqT,GAAD,MAAQC,SAASC,eAAe,SDWjC,WACb,GAA6C,kBAAmBd,UAAW,CAGzE,GADkB,IAAIe,IAAIC,WAAwB7O,OAAOwN,UAC3CsB,SAAW9O,OAAOwN,SAASsB,OAIvC,OAGF9O,OAAO+O,iBAAiB,OAAQ,WAC9B,IAAMnB,EAAK,GAAApQ,OAAMqR,WAAN,sBAEPvB,IAiDV,SAAiCM,GAE/BoB,MAAMpB,GACH9B,KAAK,SAAAC,GAGkB,MAApBA,EAASkD,SACuD,IAAhElD,EAASmD,QAAQtD,IAAI,gBAAgBrI,QAAQ,cAG7CsK,UAAUC,cAAcqB,MAAMrD,KAAK,SAAAkC,GACjCA,EAAaoB,aAAatD,KAAK,WAC7B9L,OAAOwN,SAAS6B,aAKpB1B,GAAgBC,KAGnB5B,MAAM,WACLsC,QAAQC,IACN,mEArEAe,CAAwB1B,GAIxBC,UAAUC,cAAcqB,MAAMrD,KAAK,WACjCwC,QAAQC,IACN,+GAMJZ,GAAgBC,MCtCxB2B","file":"static/js/main.a90a4e80.chunk.js","sourcesContent":["import React from 'react';\n\nconst Logo = (props) => (\n <svg id='githunt-logo' xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\">\n <defs>\n <style>{ '#githunt-logo .cls-1{ fill:#1d1d1b; }#githunt-logo .cls-2{ fill:#e7413e; }#githunt-logo .cls-3{ fill:#e6e4da; }#githunt-logo .cls-4{ fill:#cbe7f5; }#githunt-logo .cls-5{ fill:#1f4863; }' }</style>\n </defs>\n <title>astronaut-helmet</title>\n <g id=\"astronaut-helmet\">\n <path className=\"cls-1\"\n d=\"M9.19,25s.88-7.71,6.46-11.79,9.42-5.42,17.58-4.92,11.58,5.25,13.58,7.33S50,24.22,50,24.22s1.42.38,1.46,1.25.08,2,.08,2a9.44,9.44,0,0,0,2.17-.08c0-.17-.58-12.67-.58-12.67s-2.29-.75-2.37-2.5,1.38-3.38,3.83-2.58.71,4.58.71,4.58,1.5,14.5,1.38,15.08-.71.75-1,.83-4-.21-4-.21a9.81,9.81,0,0,1-.21,3c-.33.54-2,.88-2,.88A13.9,13.9,0,0,1,49,37.18a5.32,5.32,0,0,1-1,2.21s2.54,6.46,2.5,6.83-5.87,5.83-12.75,8.38-14.75.79-19-1.71-7.29-5.87-7.5-6.5,2-5.33,2-5.33-1.12-2.33-1.79-4a28.51,28.51,0,0,1-1-2.92S8,33.51,7.78,32.93s-.62-6.88-.33-7.38S8.82,25,9.19,25Z\"/>\n <path className=\"cls-2\" d=\"M9.15,26.59s1.54-.17,1.58.13a46.49,46.49,0,0,1,0,5.92,1.48,1.48,0,0,1-1.13-.12C9.44,32.34,8.86,26.84,9.15,26.59Z\"/>\n <path className=\"cls-2\" d=\"M48.65,25.51c.12-.12,1.08.13,1.13.38a45.42,45.42,0,0,1,0,5.83,1.3,1.3,0,0,1-1.08.13C48.61,31.72,48.61,25.55,48.65,25.51Z\"/>\n <path className=\"cls-3\" d=\"M53.19,10.64c.95-.36,1.54.42,1.67,1.46A1.3,1.3,0,0,1,53,13.43,1.51,1.51,0,0,1,53.19,10.64Z\"/>\n <path className=\"cls-3\" d=\"M51.94,28.26c.13,0,2.79,0,2.79-.25s-.5-8.42-.25-8.62.29.08.42.33a81.73,81.73,0,0,1,.67,9,11.81,11.81,0,0,1-3.62.13C51.78,28.72,51.94,28.26,51.94,28.26Z\"/>\n <path className=\"cls-4\"\n d=\"M12.19,25.18s-1.42.13-1.54,0A17.8,17.8,0,0,1,14.36,17a16.22,16.22,0,0,1,6.25-4.92s.08,1.63.29,1.71a10.07,10.07,0,0,0,3.17-.17c.17-.25-.25-2.92-.12-3a6.35,6.35,0,0,1,1.83-.33,32.37,32.37,0,0,0,.29,4,6.86,6.86,0,0,0,2.25.21A3.22,3.22,0,0,0,30.07,14c0-.12-.54-4-.42-4a3.49,3.49,0,0,1,.42-.08s.21,3.54.46,3.5,3.17-.12,3.13-.46-.46-3.25-.21-3.21a16.38,16.38,0,0,1,8.71,3.62C46,16.64,48,23.59,47.9,23.68a5,5,0,0,1-.71.25s-5.46-5.62-10.67-6.46-9.46-1.37-14.92,1.13A35,35,0,0,0,12.19,25.18Z\"/>\n <path className=\"cls-2\" d=\"M21.61,11.68c.17-.08,1.33-.5,1.33-.5s.33,1.5.13,1.58a7,7,0,0,1-1.21.08Z\"/>\n <path className=\"cls-2\" d=\"M26.73,10.09a10.72,10.72,0,0,1,2-.08,33.54,33.54,0,0,1,.13,3.5,5.81,5.81,0,0,1-1.71.13A17.46,17.46,0,0,1,26.73,10.09Z\"/>\n <path className=\"cls-2\" d=\"M31,9.89c.17,0,1.46,0,1.46,0a13.34,13.34,0,0,1,.13,2.25c-.12,0-1.25.13-1.25.13Z\"/>\n <path className=\"cls-5\"\n d=\"M12.44,27.05a39.54,39.54,0,0,1,8.88-6.46c4.17-2,9.58-2.08,13.33-1.46s7.08,3.08,9.42,4.71,2.54,2.21,2.54,2.21a62.38,62.38,0,0,0,.29,6.5,4.29,4.29,0,0,0,.75,1A16.13,16.13,0,0,1,46,38.05a16.08,16.08,0,0,1-3.83,5A25.87,25.87,0,0,1,38.9,45s-2.83-2.75-3-2.79-.83.46-.71.71,3.13,2.42,2.88,2.58a24.82,24.82,0,0,1-8.58,1.83,18.55,18.55,0,0,1-11.87-4.58,24.08,24.08,0,0,1-5.17-8.5C12.36,34,12.4,27.14,12.44,27.05Z\"/>\n <path className=\"cls-1\" d=\"M22.57,23.68c.51,0,1,.92.54,1.67s-2.75,3.54-2.54,6.17a7.63,7.63,0,0,0,1.92,4.83c.75.83,1.17.75,1.17,1.13s0,.42-.25.5a7.79,7.79,0,0,1-5.67-1c-2.38-1.62-2.42-5.25-2.29-6.54S16.23,23.89,22.57,23.68Z\"/>\n <path className=\"cls-3\" d=\"M21.15,24.72c.46-.07.75.29.54.46s-2.71,3-2.58,6S20,35.51,20.48,36s.71.71.58.83a4.74,4.74,0,0,1-3.79-2.21c-1.25-2-.42-5.46.25-6.79S19.15,25,21.15,24.72Z\"/>\n <path className=\"cls-1\" d=\"M40.53,22.68a4.32,4.32,0,0,1,1.88,1.38c0,.25-.08.46-.21.42a12.82,12.82,0,0,1-1.83-1.12A.47.47,0,0,1,40.53,22.68Z\"/>\n <path className=\"cls-1\" d=\"M40.86,26.76a18.35,18.35,0,0,1,3.71,2.08c0,.25,0,.5-.12.5S41,27.68,40.82,27.59,40.65,26.8,40.86,26.76Z\"/>\n <path className=\"cls-1\" d=\"M41.07,29.68a23.29,23.29,0,0,1,3.83,2.5c0,.25.08.63-.08.58s-3.79-2.12-4-2.33S40.94,29.68,41.07,29.68Z\"/>\n <path className=\"cls-1\" d=\"M40.9,32.76a23,23,0,0,1,3.83,2.63c0,.21-.25.54-.25.54a44.18,44.18,0,0,1-3.87-2.37C40.57,33.34,40.9,32.76,40.9,32.76Z\"/>\n <path className=\"cls-1\" d=\"M39.86,35.76s4.58,3,4.5,3.21-.12.54-.29.46-4.67-2.79-4.67-3S39.86,35.76,39.86,35.76Z\"/>\n <path className=\"cls-1\" d=\"M38.9,38.26a29.79,29.79,0,0,1,4,3.25,2.2,2.2,0,0,1-.46.38s-4-2.92-4.08-3.12S38.65,38.3,38.9,38.26Z\"/>\n <path className=\"cls-1\" d=\"M37.36,40.3a18.21,18.21,0,0,1,3.42,2.79,2.2,2.2,0,0,1-.46.38,32,32,0,0,1-3.42-2.58A1,1,0,0,1,37.36,40.3Z\"/>\n <path className=\"cls-3\" d=\"M28.53,23.72a3.23,3.23,0,0,1,1,.08s.08-1.42.38-1.5.58,0,.58.13.08,1.21.08,1.21,1.17-.62,1.29-.46-.08.75-.08.75.42.25.42.42a1,1,0,0,1-.17.42s-1.42-.25-1.42,0a10.26,10.26,0,0,0,.46,1.46l-.62.25s-.5-.87-.58-.71a2.23,2.23,0,0,1-.75.67c-.12,0-.46-.5-.46-.5s.83-1.08.71-1.17-1-.29-1-.46A.9.9,0,0,1,28.53,23.72Z\"/>\n <path className=\"cls-3\" d=\"M34.73,36.49a1.91,1.91,0,0,1,.59,0s0-.84.22-.89.34,0,.34.07,0,.71,0,.71.69-.37.76-.27,0,.44,0,.44.25.15.25.25a.61.61,0,0,1-.1.25S36,37,36,37.1a6.07,6.07,0,0,0,.27.86l-.37.15s-.3-.52-.34-.42a1.32,1.32,0,0,1-.44.39c-.07,0-.27-.3-.27-.3s.49-.64.42-.69-.62-.17-.62-.27A.53.53,0,0,1,34.73,36.49Z\"/>\n <path className=\"cls-3\" d=\"M23.18,40.09c.17-.12.38-.33.58-.21s.38,1.08.38,1.08.88,0,1,.21a1.92,1.92,0,0,1,0,.75l-.67,0,.13.92-.42,0-.58-.79s-.33.58-.46.54a7.12,7.12,0,0,1-.71-.46l.67-.67s-.83-.17-.83-.42,0-.54.17-.5.63.25.67.13S23.18,40.09,23.18,40.09Z\"/>\n <path className=\"cls-3\" d=\"M27.92,32.59c.17-.08.88-.42.88-.29s-.08.79.21.79,1.13-.08,1.13.08.29.5,0,.54-1,.17-1,.17l.13,1h-.5c-.25,0-.5-.92-.5-.92s-.71-.17-.71-.29,0-.42,0-.42l.38,0Z\"/>\n <path className=\"cls-3\" d=\"M35.69,28.05c.17-.08.88-.42.88-.29s-.08.79.21.79,1.13-.08,1.13.08.29.5,0,.54-1,.17-1,.17l.13,1h-.5c-.25,0-.5-.92-.5-.92s-.71-.17-.71-.29,0-.42,0-.42l.38,0Z\"/>\n <path className=\"cls-3\" d=\"M29.4,39.2c.17-.08.67-.12.75.08s.67.5.67.5L31.4,41l-.37.38s-.67.46-.75.29a3.72,3.72,0,0,0-.37-.5l-.37.54-.79-.33s-.25-.67,0-.87.54-.08.5-.33A2,2,0,0,1,29.4,39.2Z\"/>\n <path className=\"cls-4\" d=\"M14.48,42.72c.22.15,1.33,1.42,2,2a9.09,9.09,0,0,0,1,.79s-1.54,2.54-1.79,2.5a10.93,10.93,0,0,1-2.54-2.08A11.44,11.44,0,0,1,14.48,42.72Z\"/>\n <path className=\"cls-2\" d=\"M18.07,45.64c.12-.09.5.13.42.25s-1.54,3.17-1.67,3.17-.62-.08-.5-.25S17.9,45.76,18.07,45.64Z\"/>\n <path className=\"cls-2\" d=\"M19.07,46.51l.42.25a23.68,23.68,0,0,1-1.54,3.29c-.17-.08-.46-.17-.46-.29S19.07,46.51,19.07,46.51Z\"/>\n <path className=\"cls-4\"\n d=\"M20.15,47.05a17.92,17.92,0,0,0,7.92,2.08c4.83.21,6.54.13,10.79-2a22.05,22.05,0,0,0,6.5-4.5,11.37,11.37,0,0,1,1.46-1.25s1.67,4.33,1.58,4.5a1.83,1.83,0,0,1-.46.42,22,22,0,0,0-1.79-2.92c-.21,0-.67.71-.67.71s1.67,2.46,1.5,2.71a5.24,5.24,0,0,1-1.17.75,15.06,15.06,0,0,0-1.42-2.42c-.25-.08-.92.42-.83.63s1.54,2.46,1.54,2.46-.83.75-1,.67-1.21-2.17-1.37-2.17-.67.58-.67.58,1.54,2,1.38,2.17l-.75.58-1.42-2.12s-.62.25-.62.42,1.46,2.38,1.38,2.5-2.46,2-7.75,2.63-8.62.13-11.54-.83-4-1.87-4.08-2A14.17,14.17,0,0,1,20.15,47.05Z\"/>\n </g>\n </svg>\n);\n\nexport default Logo;\n","import React from 'react';\n\nimport './styles.css';\nimport Logo from '../icons/logo';\n\nconst Launcher = () => (\n <div className=\"launcher-body\">\n <div className=\"logo-container\">\n <Logo/>\n <div className=\"logo-text\">\n <h4>Loading ..</h4>\n <p className=\"text-muted\">We're testing your patience</p>\n </div>\n </div>\n </div>\n);\n\nexport default Launcher;\n","import { createTransform } from 'redux-persist';\n\nconst GithubTransform = createTransform(\n // transform state on its way to being serialized and persisted.\n (inboundState, key) => {\n inboundState = inboundState || {};\n\n // Keep the first group only to avoid overflowing the storage\n if (inboundState.repositories && inboundState.repositories.length > 1) {\n inboundState = {\n ...inboundState,\n repositories: [\n inboundState.repositories[0]\n ]\n };\n }\n\n // Do not persist `processing` flag or `error` information,\n // as we want to start fresh on reload in such cases\n inboundState = {\n ...inboundState,\n processing: false,\n error: null\n };\n\n return inboundState;\n },\n // transform state being rehydrated\n (outboundState, key) => {\n return { ...outboundState };\n },\n // define which reducers this transform gets called for.\n {\n whitelist: ['github']\n }\n);\n\nexport default GithubTransform;\n","export const PROCESS_FETCH_TRENDING = 'PROCESS_FETCH_TRENDING';\nexport const FETCH_TRENDING_SUCCESS = 'FETCH_TRENDING_SUCCESS';\nexport const FETCH_TRENDING_FAILED = 'FETCH_TRENDING_FAILED';\n","export const UPDATE_OPTIONS = 'UPDATE_OPTIONS';\nexport const UPDATE_VIEW_TYPE = 'UPDATE_VIEW_TYPE';\nexport const UPDATE_DATE_TYPE = 'UPDATE_DATE_TYPE';\nexport const UPDATE_LANGUAGE = 'UPDATE_LANGUAGE';\n","import { FETCH_TRENDING_FAILED, FETCH_TRENDING_SUCCESS, PROCESS_FETCH_TRENDING } from './types';\nimport { UPDATE_DATE_TYPE, UPDATE_LANGUAGE } from '../preference/types';\n\nexport const initialState = {\n processing: false,\n // Array of objects with the below format\n // [\n // { start: '', end: '', data: [] },\n // { start: '', end: '', data: [] }\n // ]\n repositories: [],\n error: null,\n};\n\nexport default function reducer(state = initialState, action) {\n switch (action.type) {\n case PROCESS_FETCH_TRENDING:\n return {\n ...state,\n processing: true,\n error: null\n };\n case UPDATE_DATE_TYPE:\n case UPDATE_LANGUAGE:\n return {\n ...state,\n ...initialState\n };\n case FETCH_TRENDING_SUCCESS:\n return {\n ...state,\n // Append the fetched repositories to existing list\n repositories: [\n ...state.repositories,\n action.payload\n ],\n processing: false,\n error: null\n };\n case FETCH_TRENDING_FAILED:\n return {\n ...state,\n processing: false,\n error: action.payload\n };\n default:\n return state;\n }\n}\n","import { UPDATE_DATE_TYPE, UPDATE_LANGUAGE, UPDATE_OPTIONS, UPDATE_VIEW_TYPE } from './types';\n\nconst initialState = {\n viewType: 'list',\n dateJump: 'week',\n language: '',\n options: {\n token: '',\n },\n};\n\nexport default function reducer(state = initialState, action) {\n switch (action.type) {\n case UPDATE_OPTIONS:\n return {\n ...state,\n options: action.payload\n };\n case UPDATE_DATE_TYPE:\n return {\n ...state,\n dateJump: action.payload\n };\n case UPDATE_VIEW_TYPE:\n return {\n ...state,\n viewType: action.payload\n };\n case UPDATE_LANGUAGE:\n return {\n ...state,\n language: action.payload\n };\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\n\nimport preference from './preference/reducer';\nimport github from './github/reducer';\n\nexport default combineReducers({\n github,\n preference,\n});\n","import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';\nimport { composeWithDevTools } from 'redux-devtools-extension';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport { applyMiddleware, createStore } from 'redux';\nimport storage from 'redux-persist/lib/storage';\nimport thunk from 'redux-thunk';\nimport expireReducer from 'redux-persist-expire';\n\nimport GithubTransform from './redux/github/transform';\nimport githubState from './redux/github/reducer';\nimport rootReducer from './redux/reducers';\n\nconst persistedReducers = persistReducer(\n {\n key: 'githunt:root',\n storage: storage,\n stateReconciler: autoMergeLevel2,\n transforms: [\n GithubTransform,\n expireReducer('github', {\n expireSeconds: 3600,\n expiredState: { ...githubState },\n autoExpire: true\n })\n ]\n },\n rootReducer,\n);\n\nexport const store = createStore(persistedReducers, composeWithDevTools(\n applyMiddleware(\n thunk,\n ),\n));\n\nexport const persist = persistStore(store);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\n\nconst Alert = (props) => (\n <div className={ classnames('alert', `alert-${props.type}`) }>{ props.children }</div>\n);\n\nAlert.propTypes = {\n type: PropTypes.string.isRequired\n};\n\nexport default Alert;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Solar = (props) => (\n <svg id='solar-loader' { ...props } xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"64\" viewBox=\"0 0 64 64\">\n <defs>\n <style>{ '#solar-loader .cls-1{ fill:#1d1d1b; }#solar-loader .cls-2{ fill:#85bfe9; }#solar-loader .cls-3{ fill:#e6e4da; }#solar-loader .cls-4{ fill:#ddc07c; }#solar-loader .cls-5{ fill:#cbe7f5; }#solar-loader .cls-6{ fill:#fab900; }' }</style>\n </defs>\n <title>solar-system</title>\n <g id=\"solar-system\">\n <path className=\"cls-1\"\n d=\"M51.68,14C45.59,6.57,38.89,4.57,35,4.57s-11.08.88-15.12,3.17-9.33,7.62-11.38,11.5A23.88,23.88,0,0,0,6.22,35.78a24.6,24.6,0,0,0,5.42,10.67s-3.5,5.71-.75,8.38a7.74,7.74,0,0,0,9,1.5s3.33,2.83,11,3.08,11.33-1.92,16-6,9.13-8.54,10.83-17.37S57.76,21.41,51.68,14ZM50.47,47.53c-5.29,6.54-10.54,8.75-14,9.79s-10.17.17-12.08-.54a7.52,7.52,0,0,1-2.92-1.87s3.65-5.56-1.21-9c-4-2.83-7.08-.33-7.08-.33A20.46,20.46,0,0,1,8,34c-.54-6.79.79-12.17,3.38-15.62s7.58-11.75,22.58-12c3.54-.06,8.38,1.25,13.21,5.37S55.55,21.49,56,27.49,55.76,41,50.47,47.53Zm5-39.21a2.37,2.37,0,0,0-3-3A2.46,2.46,0,0,0,51,9.12C51.68,10,55,10.78,55.47,8.32Z\"/>\n <path className=\"cls-2\" d=\"M52.64,6.41a1.61,1.61,0,0,1,2,1,1.38,1.38,0,0,1-2,1.46C51.14,8.24,51.76,6.82,52.64,6.41Z\"/>\n <path className=\"cls-1\" d=\"M37.59,10.45c1-.72,2.13.54,2.13,1.25s-1.25,1.29-1.92.92A1.28,1.28,0,0,1,37.59,10.45Z\"/>\n <path className=\"cls-1\" d=\"M46.64,14.66c1-.34,2.58.13,2.54,2.17s-2.79,1.75-3.42.75A1.94,1.94,0,0,1,46.64,14.66Z\"/>\n <path className=\"cls-3\" d=\"M47,15.54a1,1,0,0,1,1.29,1.1c0,1-1.41.89-1.73.38A1,1,0,0,1,47,15.54Z\"/>\n <path className=\"cls-1\" d=\"M26.43,49.7c1-.34,2.58.13,2.54,2.17s-2.79,1.75-3.42.75A1.94,1.94,0,0,1,26.43,49.7Z\"/>\n <path className=\"cls-3\" d=\"M26.76,50.58A1,1,0,0,1,28,51.68c0,1-1.41.89-1.73.38A1,1,0,0,1,26.76,50.58Z\"/>\n <path className=\"cls-4\"\n d=\"M14.09,47c1.88-1.17,5-.37,5.88.92s.75,4,.5,4.79a2.64,2.64,0,0,1-.92,1.25s-1-4-1.33-4.08-.83,0-.83.21,1.38,4.46,1.17,4.63a4.6,4.6,0,0,1-.62.38s-1.33-4.54-1.58-4.58-.83.38-.71.5,1.54,4.42,1.29,4.46-.67.13-.75,0-1.46-4.25-1.62-4.25-1,.33-.87.5,1.21,3.42,1,3.46A3.85,3.85,0,0,1,12,51.87,4.9,4.9,0,0,1,14.09,47Z\"/>\n <path className=\"cls-1\" d=\"M19.26,49.53c.29-.17.88-.25.83-.08S20,51.32,20,51.32a.43.43,0,0,1-.5-.25A11.3,11.3,0,0,1,19.26,49.53Z\"/>\n <path className=\"cls-1\"\n d=\"M48.51,29.12c-.5-6.62-5-8.54-5-8.54s1.63-3.62-1.37-5.58S36,16.16,36,16.16c-4.75-1.25-9.33-.83-13.54,2.38a19.14,19.14,0,0,0-7,14.71C15.55,38.66,19,43.41,25,46.78S38.8,48.2,42.76,45.37,49,35.74,48.51,29.12ZM38.76,45.37c-4.67,1.88-12.54,1.71-16.83-2.83s-5.46-10.08-3.33-15.46,8.33-11.17,16.67-9.46a3.56,3.56,0,0,0,2.33,4.17c3,1,4.63.21,4.63.21s4.5,2.25,4.58,8.92S43.43,43.49,38.76,45.37Z\"/>\n <path className=\"cls-5\" d=\"M38.68,16a2.75,2.75,0,0,1,3.13,1c.83,1.29-.42,3.13-.83,3.38s-1.42-.17-1.42-.17S39.26,18.12,39,18s-1-.12-.83.08.33,2,.17,1.88a3.29,3.29,0,0,1-1.17-2.17A2,2,0,0,1,38.68,16Z\"/>\n <path className=\"cls-1\" d=\"M40,17.45c-.06-.26.67-.42.75-.08s.33,1.67.08,1.88-.75.21-.79,0S40,17.62,40,17.45Z\"/>\n <path className=\"cls-1\" d=\"M31.51,22.57c-.09-.14-.17-3.17.17-3.17s.88-.25,1,.13a10.65,10.65,0,0,1-.08,3.08C32.34,22.74,31.68,22.82,31.51,22.57Z\"/>\n <path className=\"cls-1\" d=\"M26.09,20.53c0-.13.71-.42.92-.25a8.82,8.82,0,0,1,1.17,2.67c-.12.21-.46.58-.71.42A10.49,10.49,0,0,1,26.09,20.53Z\"/>\n <path className=\"cls-1\" d=\"M22.68,23.66s2.33.71,2.33,1a1.79,1.79,0,0,1-.33.79,18.76,18.76,0,0,1-2.67-1C22,24.37,22.39,23.78,22.68,23.66Z\"/>\n <path className=\"cls-1\" d=\"M19.89,28.66c.21,0,2.83.5,2.92.79s.13.92-.12.92a24.43,24.43,0,0,1-3-.54C19.43,29.7,19.89,28.66,19.89,28.66Z\"/>\n <path className=\"cls-1\" d=\"M20.05,33.2a5.41,5.41,0,0,1,2.75-.08c.08.21.25.75.08.88a12.34,12.34,0,0,1-2.75.29C20,34.2,19.93,33.37,20.05,33.2Z\"/>\n <path className=\"cls-1\" d=\"M22.22,39.87c-.17-.12,1.92-2.29,2.13-2.17s.54.38.46.67-1.75,2.33-2.08,2.29S22.39,40,22.22,39.87Z\"/>\n <path className=\"cls-1\" d=\"M28.18,42.74c-.45,0,1.21-3.54,1.42-3.5s.79.08.71.42A21.16,21.16,0,0,1,29.05,43C28.8,43.2,28.39,42.74,28.18,42.74Z\"/>\n <path className=\"cls-1\" d=\"M33.14,39.57c.16-.16,1.08-.5,1.17-.17a20.81,20.81,0,0,1,.33,3.75c-.17.08-1,.13-1-.08A21.24,21.24,0,0,1,33.14,39.57Z\"/>\n <path className=\"cls-1\" d=\"M38.55,37.07c-.17-.17.46-.87.67-.83s2.71,1.58,2.71,2-.25.88-.54.92A18.25,18.25,0,0,1,38.55,37.07Z\"/>\n <path className=\"cls-1\" d=\"M40.51,30.12c0-.16,3.75,0,3.88.38a.79.79,0,0,1,0,.71A17.68,17.68,0,0,1,40.51,31C40.3,30.82,40.47,30.37,40.51,30.12Z\"/>\n <path className=\"cls-1\" d=\"M38.39,25c.13-.08,2.17-2,2.42-1.83a1.86,1.86,0,0,1,.71.83,12.37,12.37,0,0,1-2.46,1.71A5,5,0,0,1,38.39,25Z\"/>\n <path className=\"cls-1\" d=\"M28.93,24.95c2.7-1.15,10-.33,10,6.46s-8.75,9-11.92,5.17S23.34,27.32,28.93,24.95Z\"/>\n <path className=\"cls-6\" d=\"M29.64,26.59c2-.86,7.48-.25,7.45,4.83s-6.55,6.7-8.92,3.87S25.46,28.37,29.64,26.59Z\"/>\n </g>\n </svg>\n);\n\nSolar.propTypes = {\n className: PropTypes.string\n};\n\nexport default Solar;\n","import React from 'react';\n\nimport './styles.css';\nimport Solar from '../icons/solar';\n\nconst Loader = () => (\n <div className=\"loading-indicator\">\n <Solar className='fa-spin'/>\n </div>\n);\n\nexport default Loader;\n","import React from 'react';\n\nimport './styles.css';\nimport Logo from '../icons/logo';\n\nclass TopNav extends React.Component {\n tweet = 'GitHunt – Most starred projects on Github by @kamranahmedse https://github.com/kamranahmedse/githunt';\n\n render() {\n // We need that to show the extension button only if not running in extension\n const isRunningExtension = window.chrome &&\n window.chrome.runtime &&\n window.chrome.runtime.id;\n\n return (\n <div className='top-nav'>\n <div className=\"container clearfix\">\n <a href='https://github.com/kamranahmedse/githunt'\n rel=\"noopener noreferrer\"\n target='_blank'\n className=\"logo clearfix float-left\">\n <Logo/>\n <div className=\"logo-text\">\n <h4>GitHunt</h4>\n <p className=\"text-muted d-none d-sm-inline-block d-md-inline-block d-xl-inline-block d-lg-inline-block\">Most starred projects on GitHub</p>\n <p className=\"text-muted d-inline-block d-sm-none d-md-none d-xl-none d-lg-none\">Top Github Projects</p>\n </div>\n </a>\n <div className=\"float-right external-btns\">\n <a href='http://github.com/kamranahmedse/githunt'\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-dark\"><i className=\"fa fa-github mr-1\"></i> View Source</a>\n {\n !isRunningExtension && (\n <a href='https://goo.gl/e7YP1h'\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-danger d-none d-sm-none d-md-inline-block d-xl-inline-block d-lg-inline-block\">\n <i className=\"fa fa-chrome mr-1\"></i> Use Extension\n </a>\n )\n }\n {\n isRunningExtension && (\n <a href='https://twitter.com/kamranahmedse'\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-danger d-none d-sm-none d-md-inline-block d-xl-inline-block d-lg-inline-block\">\n <i className=\"fa fa-comment mr-1\"></i> Give Feedback\n </a>\n )\n }\n <a href={ `https://twitter.com/intent/tweet?text=${this.tweet}` }\n target='_blank'\n rel=\"noopener noreferrer\"\n className=\"btn btn-primary btn-tweet d-none d-sm-none d-md-none d-xl-inline-block d-lg-inline-block\">\n <i className=\"fa fa-twitter mr-1\"></i> Tweet\n </a>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default TopNav;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport './styles.css';\nimport languages from './languages';\n\nclass LanguageFilter extends React.Component {\n filterInputRef = React.createRef();\n\n state = {\n filterText: '',\n selectedIndex: 0,\n showDropdown: false\n };\n\n focusFilterInput = () => {\n this.filterInputRef.current.focus();\n };\n\n componentDidUpdate(prevProps, prevState) {\n // only scroll into view if the active item changed since last render\n if (prevState.selectedIndex !== this.state.selectedIndex) {\n this.ensureSelectedVisible();\n }\n\n // If the dropdown has just been made visible focus the input\n if (this.state.showDropdown && !prevState.showDropdown) {\n this.focusFilterInput();\n }\n }\n\n ensureSelectedVisible() {\n const itemComponent = this.refs.activeItem;\n if (!itemComponent) {\n return;\n }\n\n const domNode = ReactDOM.findDOMNode(itemComponent);\n if (!domNode) {\n return;\n }\n\n domNode.scrollIntoView({ block: 'end' });\n }\n\n getFilteredLanguages() {\n let availableLanguages = [...languages];\n\n if (this.state.filterText) {\n availableLanguages = availableLanguages.filter(language => {\n const languageText = language.title.toLowerCase();\n const selectedText = this.state.filterText.toLowerCase();\n\n return languageText.indexOf(selectedText) >= 0;\n });\n }\n\n return availableLanguages;\n }\n\n renderLanguages() {\n let availableLanguages = this.getFilteredLanguages();\n\n return availableLanguages.map((language, counter) => {\n const isSelectedIndex = counter === this.state.selectedIndex;\n\n // This will be used in making sure of the element visibility\n const refProp = isSelectedIndex ? { ref: 'activeItem' } : {};\n\n return (\n <a className={ classNames('select-menu-item', { 'active-item': isSelectedIndex }) }\n { ...refProp }\n onMouseDown={ () => this.selectLanguage(counter) }\n key={ counter }>\n <span className=\"select-menu-item-text\">{ language.title }</span>\n </a>\n );\n });\n }\n\n onKeyDown = e => {\n const { selectedIndex } = this.state;\n\n const isEnterKey = e.keyCode === 13;\n const isUpKey = e.keyCode === 38;\n const isDownKey = e.keyCode === 40;\n\n if (!isUpKey && !isDownKey && !isEnterKey) {\n return;\n }\n\n const filteredLanguages = this.getFilteredLanguages();\n e.preventDefault();\n\n // arrow up/down button should select next/previous list element\n if (isUpKey && selectedIndex > 0) {\n this.setState(prevState => ({\n selectedIndex: prevState.selectedIndex - 1\n }));\n } else if (isDownKey && selectedIndex < (filteredLanguages.length - 1)) {\n this.setState(prevState => ({\n selectedIndex: prevState.selectedIndex + 1\n }));\n } else if (isEnterKey && filteredLanguages[selectedIndex]) {\n this.selectLanguage(selectedIndex);\n }\n };\n\n selectLanguage = (selectedIndex) => {\n const filteredLanguages = this.getFilteredLanguages();\n const selectedLanguage = filteredLanguages[selectedIndex];\n if (!selectedLanguage) {\n return;\n }\n\n this.setState({\n filterText: '',\n showDropdown: false\n });\n\n this.props.updateLanguage(selectedLanguage.value);\n };\n\n hideDropdown = () => {\n this.setState({\n showDropdown: false,\n filterText: ''\n });\n };\n\n filterLanguages = (e) => {\n this.setState({\n filterText: e.target.value,\n selectedIndex: 0 // Reset and select the first language\n });\n };\n\n getLanguageDropdown() {\n return (\n <div className=\"language-select\">\n <div className=\"select-menu-header\">\n <span className=\"select-menu-title\">Search Language</span>\n </div>\n <div className=\"select-menu-filters\">\n <div className=\"select-menu-text-filter\">\n <input type=\"text\"\n className=\"form-control\"\n placeholder=\"Filter Languages\"\n ref={ this.filterInputRef }\n onBlur={ this.hideDropdown }\n onChange={ this.filterLanguages }\n onKeyDown={ this.onKeyDown }\n />\n </div>\n </div>\n <div className=\"select-menu-list\">\n { this.renderLanguages() }\n </div>\n </div>\n );\n }\n\n toggleDropdown = () => {\n this.setState(prevState => ({\n showDropdown: !prevState.showDropdown\n }));\n };\n\n render() {\n return (\n <div className='language-filter-wrap'>\n <button onClick={ this.toggleDropdown } className=\"btn btn-light language-filter shadowed\">\n <i className=\"fa fa-filter mr-2\"></i>\n { this.props.selectedLanguage || 'All Languages' }\n </button>\n { this.state.showDropdown && this.getLanguageDropdown() }\n </div>\n );\n }\n}\n\nLanguageFilter.propTypes = {\n updateLanguage: PropTypes.func.isRequired,\n selectedLanguage: PropTypes.string\n};\n\nexport default LanguageFilter;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\n\nclass ViewFilter extends React.Component {\n state = {};\n\n changeSelected = (viewType) => {\n this.props.updateViewType(viewType);\n };\n\n render() {\n return (\n <div className=\"view-type-wrap\">\n <div className=\"view-type btn shadowed cursor-default\">\n <button onClick={ () => this.changeSelected('grid') } className={ classNames({ active: this.props.selectedViewType === 'grid' }) }>\n <i className=\"fa fa-table mr-2\"></i>\n Grid\n </button>\n <button onClick={ () => this.changeSelected('list') } className={ classNames({ active: this.props.selectedViewType === 'list' }) }>\n <i className=\"fa fa-list mr-2\"></i>\n List\n </button>\n </div>\n </div>\n );\n }\n}\n\nViewFilter.propTypes = {\n updateViewType: PropTypes.func.isRequired,\n selectedViewType: PropTypes.string,\n};\n\nexport default ViewFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Dropdown, DropdownItem, DropdownMenu, DropdownToggle } from 'reactstrap';\n\nimport './styles.css';\n\nclass DateJumpFilter extends React.Component {\n state = {\n dropdownOpen: false\n };\n\n updateDateJump = (dateJump) => {\n if (dateJump === this.props.selectedDateJump) {\n return;\n }\n\n this.props.updateDateJump(dateJump);\n };\n\n toggle = () => {\n this.setState(prevState => ({\n dropdownOpen: !prevState.dropdownOpen\n }));\n };\n\n getSelectedDateJump() {\n switch (this.props.selectedDateJump) {\n case 'day':\n return 'Daily';\n case 'month':\n return 'Monthly';\n case 'year':\n return 'Yearly';\n case 'week':\n return 'Weekly';\n default:\n return 'Weekly';\n }\n }\n\n render() {\n return (\n <Dropdown className='date-jump-wrap' isOpen={ this.state.dropdownOpen } toggle={ this.toggle }>\n <DropdownToggle className='date-jump-type shadowed'>\n <i className=\"fa fa-calendar mr-2\"></i>\n { this.getSelectedDateJump() }\n </DropdownToggle>\n <DropdownMenu>\n <DropdownItem onClick={ () => this.updateDateJump('year') }>Yearly</DropdownItem>\n <DropdownItem onClick={ () => this.updateDateJump('month') }>Monthly</DropdownItem>\n <DropdownItem onClick={ () => this.updateDateJump('week') }>Weekly</DropdownItem>\n <DropdownItem onClick={ () => this.updateDateJump('day') }>Daily</DropdownItem>\n </DropdownMenu>\n </Dropdown>\n );\n }\n}\n\nDateJumpFilter.propTypes = {\n updateDateJump: PropTypes.func.isRequired,\n selectedDateJump: PropTypes.string\n};\n\nexport default DateJumpFilter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport LanguageFilter from './language-filter';\nimport ViewFilter from './view-filter';\nimport './styles.css';\nimport DateJumpFilter from './date-jump-filter';\n\nconst Filters = (props) => (\n <div className=\"filters-wrap mt-3 mt-sm-3 mt-md-0 mt-xl-0 mt-lg-0\">\n <div className=\"filter-item\">\n <LanguageFilter\n selectedLanguage={ props.selectedLanguage }\n updateLanguage={ props.updateLanguage }\n />\n </div>\n <div className=\"filter-item\">\n <DateJumpFilter\n updateDateJump={ props.updateDateJump }\n selectedDateJump={ props.selectedDateJump }\n />\n </div>\n <div className=\"filter-item d-none d-sm-none d-md-none d-xl-block d-lg-block\">\n <ViewFilter\n selectedViewType={ props.selectedViewType }\n updateViewType={ props.updateViewType }\n />\n </div>\n </div>\n);\n\nFilters.propTypes = {\n updateLanguage: PropTypes.func.isRequired,\n updateViewType: PropTypes.func.isRequired,\n updateDateJump: PropTypes.func.isRequired,\n selectedLanguage: PropTypes.string,\n selectedViewType: PropTypes.string,\n selectedDateJump: PropTypes.string\n};\n\nexport default Filters;\n","import React from 'react';\nimport moment from 'moment';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\n\nclass GroupHeading extends React.Component {\n getTitle() {\n const startMoment = moment(this.props.start);\n const currentMoment = moment();\n const yesterdayMoment = moment().subtract(1, 'day');\n\n // For \"day\" jumps return the day name\n if (this.props.dateJump === 'day') {\n if (startMoment.isSame(currentMoment, 'day')) {\n return 'Today';\n } else if (startMoment.isSame(yesterdayMoment, 'day')) {\n return 'Yesterday';\n }\n\n return startMoment.format('dddd');\n }\n\n // Return the relative date\n const formattedDate = startMoment.fromNow();\n if (formattedDate === 'a year ago') {\n return 'Last year';\n } else if (formattedDate === '7 days ago') {\n return 'This week';\n } else if (formattedDate === '14 days ago') {\n return 'Last week';\n }\n\n return formattedDate;\n }\n\n getSubtitle() {\n const startMoment = moment(this.props.start);\n const endMoment = moment(this.props.end);\n\n if (startMoment.isSame(endMoment, 'day') || this.props.dateJump === 'day') {\n return startMoment.format('MMMM D, YYYY');\n }\n\n return startMoment.format('MMMM D, YYYY') + ' – ' + endMoment.format('MMMM D, YYYY');\n }\n\n render() {\n return (\n <div className=\"group-heading\">\n <h4>\n <span className=\"text-capitalizes\">{ this.getTitle() }</span>\n <span className=\"small text-muted ml-2\">\n { this.getSubtitle() }\n </span>\n </h4>\n </div>\n );\n }\n}\n\nGroupHeading.propTypes = {\n start: PropTypes.string,\n end: PropTypes.string,\n dateJump: PropTypes.oneOf(['week', 'month', 'year', 'day'])\n};\n\nexport default GroupHeading;\n","import axios from 'axios';\nimport moment from 'moment';\n\nimport {\n FETCH_TRENDING_FAILED,\n FETCH_TRENDING_SUCCESS,\n PROCESS_FETCH_TRENDING,\n} from './types';\n\nconst API_URL = 'https://api.github.com/search/repositories';\n\nconst transformFilters = (filters) => {\n const transformedFilters = {};\n\n const startMoment = moment(filters.dateRange.start);\n const endMoment = moment(filters.dateRange.end);\n const reposDate = `created:${startMoment.format()}..${endMoment.format()}`;\n const reposLanguage = filters.language ? `language:${filters.language} ` : '';\n\n if (filters.token) {\n transformedFilters.access_token = filters.token;\n }\n\n transformedFilters.q = reposLanguage + reposDate;\n transformedFilters.sort = 'stars';\n transformedFilters.order = 'desc';\n\n return transformedFilters;\n};\n\n/**\n * @param {object} filters\n * @returns {Function}\n */\nexport const fetchTrending = function (filters) {\n return dispatch => {\n dispatch({ type: PROCESS_FETCH_TRENDING });\n\n axios.get(API_URL, {\n params: transformFilters(filters)\n }).then(response => {\n dispatch({\n type: FETCH_TRENDING_SUCCESS,\n payload: {\n start: moment(filters.dateRange.start).format(),\n end: moment(filters.dateRange.end).format(),\n data: response.data\n }\n });\n }).catch(error => {\n let message = error.response &&\n error.response.data &&\n error.response.data.message;\n\n if (!message) {\n message = error.message;\n }\n\n dispatch({\n type: FETCH_TRENDING_FAILED,\n payload: message\n });\n });\n };\n};\n","import React from 'react';\n\nconst Star = (props) => (\n <svg viewBox=\"0 0 14 16\" version=\"1.1\" width=\"14\" height=\"16\" role=\"img\">\n <path fillRule=\"evenodd\" d=\"M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z\"/>\n </svg>\n);\n\nexport default Star;\n","import React from 'react';\n\nconst Fork = (props) => (\n <svg viewBox=\"0 0 10 16\" version=\"1.1\" width=\"10\" height=\"16\" role=\"img\">\n <path fillRule=\"evenodd\"\n d=\"M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z\"></path>\n </svg>\n);\n\nexport default Fork;\n","import React from 'react';\n\nconst Issue = (props) => (\n <svg className=\"octicon octicon-issue-opened\" viewBox=\"0 0 14 16\" version=\"1.1\" width=\"14\" height=\"16\">\n <path fillRule=\"evenodd\" d=\"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z\"></path>\n </svg>\n);\n\nexport default Issue;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\nimport moment from 'moment';\nimport Star from '../../icons/star';\nimport Fork from '../../icons/fork';\nimport Issue from \"../../icons/issue\";\n\nclass ListItem extends React.Component {\n render() {\n return (\n <div className=\"col-12 list-item-container\">\n <div className=\"list-item-body\">\n <div className=\"repo-header\">\n <h3>\n <a href={ this.props.repository.html_url } rel=\"noopener noreferrer\" target=\"_blank\">\n <span className=\"text-normal\">{ this.props.repository.owner.login } / </span>\n { this.props.repository.name }\n </a>\n </h3>\n <p className=\"repo-meta text-muted small\">Built by &middot; <a href={ this.props.repository.owner.html_url } rel=\"noopener noreferrer\" target=\"_blank\">{ this.props.repository.owner.login }</a> &middot; { moment(this.props.repository.created_at).format('MMMM D YYYY') }</p>\n </div>\n <div className=\"repo-body\">\n <p>{ this.props.repository.description || 'No description given.' }</p>\n </div>\n <div className=\"repo-footer\">\n {\n this.props.repository.language && (\n <span className=\"d-inline-block mr-3\">\n <span className=\"repo-language-color ml-0\"></span>\n <span itemProp=\"programmingLanguage\">\n { this.props.repository.language }\n </span>\n </span>\n )\n }\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/stargazers` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Star />\n { this.props.repository.stargazers_count.toLocaleString() }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/network/members` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Fork />\n { this.props.repository.forks ? this.props.repository.forks.toLocaleString() : 0 }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/issues` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Issue />\n { this.props.repository.open_issues ? this.props.repository.open_issues.toLocaleString() : 0 }\n </a>\n </div>\n </div>\n\n <a href={ this.props.repository.owner.html_url }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"author-link d-none d-lg-block d-xl-block d-md-block\">\n <img className='author-img'\n src={ this.props.repository.owner.avatar_url }\n onError={ (e) => {\n e.target.src = '/img/logo.svg';\n } }\n alt={ this.props.repository.owner.login } />\n </a>\n </div>\n );\n }\n}\n\nListItem.propTypes = {\n repository: PropTypes.object.isRequired\n};\n\nexport default ListItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\n\nimport './styles.css';\nimport Star from '../../icons/star';\nimport Fork from '../../icons/fork';\nimport Issue from \"../../icons/issue\";\n\nclass GridItem extends React.Component {\n render() {\n return (\n <div className=\"col-xl-4 col-lg-4 col-md-6 col-sm-12 col-12 grid-item-container\">\n <div className=\"grid-item-body\">\n <div className=\"author-header clearfix\">\n <a href={ this.props.repository.owner.html_url } rel=\"noopener noreferrer\" target=\"_blank\">\n <div className=\"author-img\">\n <img src={ this.props.repository.owner.avatar_url }\n onError={ (e) => {\n e.target.src = '/img/logo.svg';\n } }\n alt={ this.props.repository.owner.login }/>\n </div>\n <div className=\"author-details\">\n <h5>{ this.props.repository.owner.login }</h5>\n <p className=\"small text-muted\">View Profile</p>\n </div>\n </a>\n </div>\n <div className=\"repo-header\">\n <h5>\n <a href={ this.props.repository.html_url } rel=\"noopener noreferrer\" target=\"_blank\">\n <span className=\"repo-name\">{ this.props.repository.name }</span>\n </a>\n </h5>\n <p className=\"repo-meta text-muted small\">\n Built by &middot; <a target=\"_blank\" rel=\"noopener noreferrer\" href={ this.props.repository.owner.html_url }>{ this.props.repository.owner.login }</a> &middot; { moment(this.props.repository.created_at).format('MMMM D, YYYY') }\n </p>\n </div>\n <div className=\"repo-body\">\n <p>{ (this.props.repository.description && this.props.repository.description.slice(0, 140)) || 'No description given.' }</p>\n </div>\n <div className=\"repo-footer\">\n {\n this.props.repository.language && (\n <span className=\"d-inline-block mr-3\">\n <span className=\"repo-language-color ml-0\"></span>\n <span itemProp=\"programmingLanguage\">\n { this.props.repository.language }\n </span>\n </span>\n )\n }\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/stargazers` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Star/>\n { this.props.repository.stargazers_count ? this.props.repository.stargazers_count.toLocaleString() : 0 }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/network/members` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Fork/>\n { this.props.repository.forks ? this.props.repository.forks.toLocaleString() : 0 }\n </a>\n <a className=\"muted-link d-inline-block mr-3\"\n href={ `${this.props.repository.html_url}/issues` }\n rel=\"noopener noreferrer\"\n target=\"_blank\">\n <Issue />\n { this.props.repository.open_issues ? this.props.repository.open_issues.toLocaleString() : 0 }\n </a>\n </div>\n </div>\n </div>\n );\n }\n}\n\nGridItem.propTypes = {\n repository: PropTypes.object.isRequired\n};\n\nexport default GridItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport GridItem from './grid-item';\nimport './styles.css';\nimport GroupHeading from '../group-heading';\n\nclass RepositoryGrid extends React.Component {\n renderGroup(repositoryGroup, counter) {\n let groupHeading = '';\n // for the first repository group, we have the\n // heading among the filters out of the grid\n if (counter !== 0) {\n groupHeading = (\n <div className=\"row row-group\">\n <GroupHeading\n start={ repositoryGroup.start }\n end={ repositoryGroup.end }\n dateJump={ this.props.dateJump }\n />\n </div>\n );\n }\n\n const groupKey = `${repositoryGroup.start}_${repositoryGroup.end}_${counter}`;\n const repositories = repositoryGroup.data.items;\n\n return (\n <div key={ groupKey } data-group-key={ groupKey }>\n { groupHeading }\n <div className=\"row grid-container\">\n { repositories.map(repository => <GridItem repository={ repository } key={ repository.id }/>) }\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <div className=\"repositories-grid\">\n {\n this.props.repositories.map((repositoryGroup, counter) => {\n return this.renderGroup(repositoryGroup, counter);\n })\n }\n </div>\n );\n }\n}\n\nRepositoryGrid.propTypes = {\n repositories: PropTypes.array.isRequired,\n dateJump: PropTypes.string.isRequired\n};\n\nexport default RepositoryGrid;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\nimport ListItem from './list-item';\nimport GroupHeading from '../group-heading';\nimport RepositoryGrid from '../repository-grid';\n\nclass RepositoryList extends React.Component {\n\n renderGroup(repositoryGroup, counter) {\n let groupHeading = '';\n // for the first repository group, we have the\n // heading among the filters out of the grid\n if (counter !== 0) {\n groupHeading = (\n <div className=\"row row-group\">\n <GroupHeading\n start={ repositoryGroup.start }\n end={ repositoryGroup.end }\n dateJump={ this.props.dateJump }\n />\n </div>\n );\n }\n\n const groupKey = `${repositoryGroup.start}_${repositoryGroup.end}_${counter}`;\n const repositories = repositoryGroup.data.items;\n\n return (\n <div key={ groupKey } data-group-key={ groupKey }>\n { groupHeading }\n <div className=\"row list-container\">\n { repositories.map(repository => <ListItem repository={ repository } key={ repository.id }/>) }\n </div>\n </div>\n );\n }\n\n render() {\n return (\n <div className=\"repositories-list\">\n {\n this.props.repositories.map((repositoryGroup, counter) => {\n return this.renderGroup(repositoryGroup, counter);\n })\n }\n </div>\n );\n }\n}\n\nRepositoryGrid.propTypes = {\n repositories: PropTypes.array.isRequired,\n dateJump: PropTypes.string.isRequired\n};\n\nexport default RepositoryList;\n","import React from 'react';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { Link } from 'react-router-dom';\n\nimport './styles.css';\nimport Alert from '../../components/alert';\nimport Loader from '../../components/loader';\nimport TopNav from '../../components/top-nav';\nimport Filters from '../../components/filters';\nimport GroupHeading from '../../components/group-heading';\nimport { fetchTrending } from '../../redux/github/actions';\nimport RepositoryList from '../../components/repository-list';\nimport RepositoryGrid from '../../components/repository-grid';\nimport { updateDateJump, updateLanguage, updateViewType } from '../../redux/preference/actions';\n\nclass FeedContainer extends React.Component {\n componentDidMount() {\n const existingRepositories = this.props.github.repositories || [];\n\n // If there are no loaded repositories before, fetch them\n if (existingRepositories.length === 0) {\n this.fetchNextRepositories();\n }\n }\n\n fetchNextRepositories() {\n const filters = this.getFilters();\n this.props.fetchTrending(filters);\n }\n\n componentDidUpdate(prevProps) {\n const currPreferences = this.props.preference;\n const prevPreferences = prevProps.preference;\n\n // If language or dateJump has been updated, reload\n // the repositories\n if (currPreferences.language !== prevPreferences.language ||\n currPreferences.dateJump !== prevPreferences.dateJump) {\n this.fetchNextRepositories();\n }\n }\n\n getFilters() {\n const filters = {};\n\n filters.dateRange = this.getNextDateRange();\n if (this.props.preference.language) {\n filters.language = this.props.preference.language;\n }\n\n if (this.props.preference.options.token) {\n filters.token = this.props.preference.options.token;\n }\n\n return filters;\n }\n\n getNextDateRange() {\n const repositories = this.props.github.repositories || [];\n const dateJump = this.props.preference.dateJump;\n\n const dateRange = {};\n const lastRecords = repositories[repositories.length - 1];\n\n if (lastRecords) {\n dateRange.start = moment(lastRecords.start).subtract(1, dateJump).startOf('day');\n dateRange.end = lastRecords.start;\n } else {\n dateRange.start = moment().subtract(1, dateJump).startOf('day');\n dateRange.end = moment().startOf('day');\n }\n\n return dateRange;\n }\n\n renderTokenWarning() {\n return !this.props.preference.options.token && (\n <Alert type='warning'>\n Make sure to\n <strong className='ml-1 mr-1'>\n <Link to='/options'>add a token</Link>\n </strong>\n to avoid hitting the rate limit\n </Alert>\n );\n }\n\n renderErrors() {\n if (!this.props.github.error) {\n return null;\n }\n\n let message = '';\n switch (this.props.github.error.toLowerCase()) {\n case 'bad credentials':\n message = (\n <span>\n Token is invalid, try <Link to='/options'>updating the token</Link> on the options page\n </span>\n );\n break;\n case 'network error':\n message = 'Error trying to connect to GitHub servers';\n break;\n default:\n message = this.props.github.error;\n break;\n }\n\n return (\n <Alert type='danger'>\n { message }\n </Alert>\n );\n }\n\n renderAlerts() {\n const tokenWarning = this.renderTokenWarning();\n const error = this.renderErrors();\n\n if (tokenWarning || error) {\n return (\n <div className=\"alert-group\">\n { tokenWarning }\n { error }\n </div>\n );\n }\n\n return null;\n }\n\n renderRepositoriesList() {\n if (this.props.preference.viewType === 'grid') {\n return <RepositoryGrid\n repositories={ this.props.github.repositories || [] }\n dateJump={ this.props.preference.dateJump }\n />;\n }\n\n return <RepositoryList\n repositories={ this.props.github.repositories || [] }\n dateJump={ this.props.preference.dateJump }\n />;\n }\n\n hasRepositories() {\n return this.props.github.repositories && this.props.github.repositories.length !== 0;\n }\n\n render() {\n return (\n <div className=\"page-wrap\">\n <TopNav/>\n\n { this.renderAlerts() }\n\n <div className=\"container mb-5 pb-4\">\n <div className=\"header-row clearfix\">\n {\n this.hasRepositories() && <GroupHeading\n start={ this.props.github.repositories[0].start }\n end={ this.props.github.repositories[0].end }\n dateJump={ this.props.preference.dateJump }\n />\n }\n <div className=\"group-filters\">\n {\n this.hasRepositories() && <Filters\n selectedLanguage={ this.props.preference.language }\n selectedViewType={ this.props.preference.viewType }\n updateLanguage={ this.props.updateLanguage }\n updateViewType={ this.props.updateViewType }\n updateDateJump={ this.props.updateDateJump }\n selectedDateJump={ this.props.preference.dateJump }\n />\n }\n </div>\n </div>\n <div className=\"body-row\">\n { this.renderRepositoriesList() }\n\n { this.props.github.processing && <Loader/> }\n\n {\n !this.props.github.processing &&\n this.hasRepositories() &&\n (\n <button className=\"btn btn-primary shadow load-next-date\"\n onClick={ () => this.fetchNextRepositories() }>\n <i className=\"fa fa-refresh mr-2\"></i>\n Load next { this.props.preference.dateJump }\n </button>\n )\n }\n </div>\n </div>\n </div>\n );\n }\n}\n\nconst mapStateToProps = store => {\n return {\n preference: store.preference,\n github: store.github\n };\n};\n\nconst mapDispatchToProps = {\n updateLanguage,\n updateViewType,\n updateDateJump,\n fetchTrending\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FeedContainer);\n","import { UPDATE_DATE_TYPE, UPDATE_LANGUAGE, UPDATE_OPTIONS, UPDATE_VIEW_TYPE } from './types';\n\nexport const updateOptions = function (options) {\n return dispatch => {\n dispatch({\n type: UPDATE_OPTIONS,\n payload: options,\n });\n };\n};\n\nexport const updateViewType = function (viewType = 'grid') {\n return dispatch => {\n dispatch({\n type: UPDATE_VIEW_TYPE,\n payload: viewType\n });\n };\n};\n\nexport const updateLanguage = function (language) {\n return dispatch => {\n dispatch({\n type: UPDATE_LANGUAGE,\n payload: language\n });\n };\n};\n\nexport const updateDateJump = function (dateJump) {\n return dispatch => {\n dispatch({\n type: UPDATE_DATE_TYPE,\n payload: dateJump\n });\n };\n};\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nimport './styles.css';\nimport Alert from '../alert';\n\nclass OptionsForm extends React.Component {\n\n state = {\n token: this.props.options.token,\n success: false,\n };\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.options.token !== prevProps.options.token) {\n this.setState({\n success: true\n });\n }\n }\n\n saveOptions = () => {\n this.props.updateOptions({\n token: this.state.token\n });\n };\n\n onChange = (e) => {\n this.setState({\n [e.target.name]: e.target.value,\n success: false\n });\n };\n\n onKeyDown = (e) => {\n if (e.keyCode === 13) {\n this.saveOptions();\n }\n };\n\n render() {\n return (\n <div className=\"options-form\">\n <div className=\"form-field\">\n <h2>Add the Token</h2>\n <p className=\"text-muted\">Generate a token and add it below to avoid hitting the rate limit.</p>\n <hr/>\n <ul>\n <li>\n Go to the <a href=\"https://github.com/settings/tokens\" target=\"_blank\" rel=\"noopener noreferrer\"><i className=\"fa fa-external-link mr-1\"></i> Settings <i className=\"fa fa-angle-right\"></i> Personal Access Tokens</a> of your github profile\n </li>\n <li>Click <span>Generate New Token</span>. Enter the description and select the <span>scope</span> called <span>public_repo</span> under repo and click <span>Generate Token</span>.</li>\n <li>You will be presented with the generated token. Copy the token and add it below</li>\n </ul>\n <input type=\"text\"\n name='token'\n onChange={ this.onChange }\n onKeyDown={ this.onKeyDown }\n className=\"form-control\"\n value={ this.state.token }/>\n </div>\n <button className=\"btn btn-dark btn-lg btn-save shadow\" onClick={ this.saveOptions }>\n <i className=\"fa fa-cog mr-2\"></i>\n Save Token\n </button>\n <Link className='btn btn-primary shadow btn-block btn-lg' to='/'>\n <i className=\"fa fa-arrow-left mr-2\"></i> Go Home\n </Link>\n\n {\n this.state.success && (\n <div className=\"mt-4\">\n <Alert type='warning'>Successfully updated</Alert>\n </div>\n )\n }\n </div>\n );\n }\n}\n\nOptionsForm.propTypes = {\n updateOptions: PropTypes.func.isRequired,\n options: PropTypes.object.isRequired\n};\n\nexport default OptionsForm;\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport './styles.css';\nimport OptionsForm from '../../components/options-form';\nimport { updateOptions } from '../../redux/preference/actions';\n\nclass OptionsContainer extends React.Component {\n render() {\n return (\n <div className=\"options-container\">\n <div className=\"container shadow\">\n <OptionsForm\n updateOptions={ this.props.updateOptions }\n options={ this.props.preference.options }\n />\n </div>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (store) => {\n return {\n preference: store.preference\n };\n};\n\nconst mapDispatchToProps = {\n updateOptions\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OptionsContainer);\n","import React from 'react';\nimport { MemoryRouter, Route, Switch } from 'react-router-dom';\n\nimport FeedContainer from '../containers/feed';\nimport OptionsContainer from '../containers/options';\n\nconst AppRoutes = () => {\n return (\n // @todo use browser router and generate prerendered options.html page for chrome extension\n <MemoryRouter>\n <Switch>\n <Route exact path='/' component={ FeedContainer }/>\n <Route exact path='/options' component={ OptionsContainer }/>\n <Route component={ FeedContainer }/>\n </Switch>\n </MemoryRouter>\n );\n};\n\nexport default AppRoutes;\n","import React, { Component } from 'react';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/lib/integration/react';\n\nimport Launcher from './components/launcher';\nimport { persist, store } from './store';\nimport AppRoutes from './router';\n\nclass App extends Component {\n render() {\n return (\n <Provider store={ store }>\n <PersistGate loading={ <Launcher/> } persistor={ persist }>\n <AppRoutes/>\n </PersistGate>\n </Provider>\n );\n }\n}\n\nexport default App;\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\n );\n });\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'bootstrap/dist/css/bootstrap.css';\nimport 'font-awesome/css/font-awesome.css'\n\nimport './global.css';\nimport App from './app';\nimport registerServiceWorker from './worker';\n\nReactDOM.render(<App/>, document.getElementById('root'));\nregisterServiceWorker();\n"],"sourceRoot":""} \ No newline at end of file