'+stringifyError(e),t=!0}return{success:!t,message:r,warning:a,papersToWrite:i}},makeVenue=async e=>{let t="";switch((t=e.note&&e.note.match(/(accepted|published)\ @\ .+\(?\d{4}\)?/i)?e.note.split("@")[1].trim().replace(/\(?\d{4}\)?/,"").split("--")[0].trim():t)&&"neurips"===t.toLowerCase()&&(t="NeurIPS"),e.source){case"arxiv":break;case"neurips":t="NeurIPS";break;case"cvf":t=t||(await makeCVFPaper(e.pdfLink)).venue;break;case"openreview":t=t||(await makeOpenReviewPaper(e.pdfLink)).venue;break;case"biorxiv":break;case"pmlr":t=e.conf?.split(/\d{4}/)[0]??"";break;case"acl":t=e.conf??"";break;case"pnas":t="PNAS";break;case"nature":t=t||e.venue;break;case"iop":case"acs":t=e.venue}return t},makeTitleHashToIdList=e=>{var t,a,r={};for([t,a]of Object.entries(cleanPapers(e))){var i=miniHash(a.title);r.hasOwnProperty(i)||(r[i]=[]),r[i].push(t)}return r},isPaper=("undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={migrateData:migrateData,logStorage:logStorage,getStorage:getStorage,setStorage:setStorage,deletePaperInStorage:deletePaperInStorage,getTheme:getTheme,backupData:backupData,weeklyBackup:weeklyBackup,getPrefs:getPrefs,getManifestDataVersion:getManifestDataVersion,versionToSemantic:versionToSemantic,validatePaper:validatePaper,prepareOverwriteData:prepareOverwriteData,makeVenue:makeVenue,makeTitleHashToIdList:makeTitleHashToIdList}),async(e,t=!1)=>{var a={};if(e){for(var r in global.knownPaperPages){var i,o=global.knownPaperPages[r].patterns;a[r]=!1;for(i of o)if("string"==typeof i?e.includes(i)&&(a[r]=!0):"function"==typeof i&&(a[r]=i(e)),a[r])break}a.localFile=isKnownLocalFile(e),a.stored=!t&&(await findLocalFile(e)??!1),a.parsedWebsite=global.state.papers["Website_"+urlToWebsiteId(e)]??!1}return a}),isSourceURL=async(e,t)=>Object.values(await isPaper(e,t)).some(e=>e),paperToAbs=e=>{let t,a,r;var i=e.pdfLink;let o,n="";switch(e.source){case"arxiv":n=i.replace("/pdf/","/abs/").replace(".pdf","");break;case"neurips":n=i.replace("/file/","/hash/").replace("-Paper.pdf","-Abstract.html");break;case"cvf":n=i.replace("/papers/","/html/").replace(".pdf",".html");break;case"openreview":n=i.replace("/pdf?","/forum?");break;case"biorxiv":n=i.replace(".full.pdf","");break;case"pmlr":n=i.split("/").slice(0,-1).join("/")+".html";break;case"acl":n=i.replace(".pdf","");break;case"pnas":n=i.replace(".full.pdf","").replace("/doi/pdf/","/doi/full/");break;case"nature":n=i.replace(".pdf","");break;case"acs":n=i.replace("pubs.acs.org/doi/pdf/","pubs.acs.org/doi/").split("?")[0];break;case"iop":n=i.split("#")[0].replace(/\/pdf$/,"");break;case"jmlr":n=i.split("/").slice(0,-1).join("/").replace("/papers/volume","/papers/v")+".html";break;case"pmc":var s=i.match(/PMC\d+/)[0];n=i.split(s)[0]+s;break;case"ijcai":var s=i.replace(".pdf","").split("/").last().match(/[1-9]\d*/),l=i.match(/proceedings\/\d+/gi)[0].split("/")[1];n=`https://www.ijcai.org/proceedings/${l}/`+s;break;case"acm":n=i.replace("/doi/pdf/","/doi/");break;case"ieee":n="https://ieeexplore.ieee.org/document/"+e.key;break;case"springer":n=e.extra.url;break;case"aps":[t,a]=parseUrl(i).pathname.split("/").slice(1,3),n=i.replace(`/${t}/${a}/`,`/${t}/abstract/`);break;case"wiley":n=i.replace(/\/doi\/e?pdf\//g,"/doi/abs/");break;case"sciencedirect":o=i.split("/pii/")[1].split("/")[0].split("#")[0].split("?")[0],n="https://www.sciencedirect.com/science/article/pii/"+o;break;case"science":(r=i.split("/doi/")[1]).startsWith("10.")||(r=r.split("/").slice(1).join("/")),n="https://science.org/doi/full/"+r;break;case"frontiers":n=i.replace(/\/pdf$/,"/full");break;case"ihep":n="https://inspirehep.net/literature/"+e.id.split("-")[1];break;case"plos":n=i.replace("/article/file?","/article?").split("&")[0];break;case"rsc":n=i.replace("/articlepdf/","/articlelanding/");break;case"website":n=e.pdfLink;break;case"mdpi":n=e.pdfLink.split("/pdf")[0];break;case"oup":n="https://doi.org/"+e.doi;break;case"hal":n=i.split("/file/")[0].split("/document")[0];break;case"chemrxiv":n="https://chemrxiv.org/engage/chemrxiv/article-details/"+i.split("/item/")[1].split("/")[0];break;case"cell":const t=e.id.split("_")[0].split("fulltext")[0];o=new URL(i).searchParams.get("pii"),n=`https://www.cell.com/${t}/fulltext/`+o;break;default:n="https://xkcd.com/1969/"}return n.replace("http://","https://")},paperToPDF=e=>{let t=e.pdfLink;switch(e.source){case"arxiv":t=t.replace("arxiv.org/abs/","arxiv.org/pdf/").replace(/\.pdf$/,"").replace(/v\d+$/gi,""),t+=".pdf";break;case"neurips":t=t.replace("/hash/","/file/").replace("-Abstract.html","-Paper.pdf");break;case"cvf":t=t.replace("/html/","/papers/").replace(".html",".pdf");break;case"openreview":t=t.replace("/forum?","/pdf?");break;case"biorxiv":t=cleanBiorxivURL(t)+".full.pdf";break;case"pmlr":case"acl":case"pnas":break;case"nature":t.endsWith(".pdf")||(t+=".pdf");break;case"iop":t.endsWith("/pdf")||(t+="/pdf");break;case"acs":case"jmlr":case"pmc":case"ijcai":case"acm":case"ieee":case"springer":case"aps":case"wiley":case"sciencedirect":case"science":case"frontiers":case"ihep":case"plos":case"rsc":case"mdpi":case"oup":case"hal":case"chemrxiv":case"website":case"cell":break;default:t="https://xkcd.com/1969/"}return t.replace("http://","https://")},findLocalFile=async t=>{if("string"==typeof t){let e;try{e=await parseIdFromUrl(t)}catch(e){return new Promise(e=>e(null))}if(!global.state.papers.hasOwnProperty(e))return new Promise(e=>e(null));paper=global.state.papers[e]}else paper=t;t=await getStoredFiles(),t=await matchPapersToFiles({[paper.id]:paper},t),t=Object.values(t);return 1===t.length?t[0]:null},matchPapersToFiles=async(e,t)=>{var a,r=Object.fromEntries(Object.values(e).map(e=>[e.id,miniHash(e.title)])),i=(t=t.filter(e=>e.exists&&"complete"===e.state&&!e.filename.toLowerCase().includes("readme.txt")),Object.fromEntries(t.map(e=>[e.id,miniHash(e.filename)]))),o={};for(a of t){let t;try{(t=await parseIdFromUrl(a.finalUrl))&&e.hasOwnProperty(t)&&(o[t]=a)}catch(e){t=null}if(!t){let t=i[a.id];var n=Object.entries(r).find(([,e])=>t.includes(e));n&&(o[n[0]]=a)}}return o},matchAllFilesToPapers=()=>new Promise((t,e)=>{chrome.downloads.search({filenameRegex:"PaperMemoryStore/.*"},async e=>{e=await matchPapersToFiles(cleanPapers(global.state.papers),e);t(e)})}),mergePapers=(e={newPaper:{},oldPaper:{}})=>{let{oldPaper:t,newPaper:a,...r}=e;var i,o,n={...t},e={overwrites:["lastOpenDate"],incrementCount:!1,syncMerge:!1,...r};for(i in a)(!t.hasOwnProperty(i)||a[i]&&!t[i])&&(n[i]=a[i]);e.incrementCount&&1===n.count&&(n.count+=1),e.syncMerge&&(n.count=t.count+a.count,n.note=t.note??"",a.note&&a.note!==t.note&&(n.note+="\n\n--[Sync Merge]--\n",n.note+=a.note),n.tags=[...t.tags,...a.tags],n.lastOpenDate=a.lastOpenDate,a.lastOpenDate>t.lastOpenDate&&(n.lastOpenDate=a.lastOpenDate),n.addDate=a.addDate,a.addDate>t.addDate)&&(n.addDate=a.addDate);for(o of e.overwrites)a.hasOwnProperty(o)&&(n[o]=a[o]);return n},updatePaperVisits=e=>(e.count+=1,e.lastOpenDate=(new Date).toJSON(),log("Updating paper to:",e),e),addOrUpdatePaper=async({url:a,is:r,prefs:i,tab:e,store:o=!0,contentScriptCallbacks:n={update:()=>{},preprints:()=>{}}})=>{let s=Date.now(),l,p,c={};consoleHeader("PaperMemory Parsing "+String.fromCodePoint("0x1F4DD")),global.state.papers=await getStorage("papers")??{};var t=await parseIdFromUrl(a,e),d=global.state.papers.hasOwnProperty(t);if(t&&d&&"anonymous"!==global.state.papers[t].author.toLowerCase())l=updatePaperVisits(global.state.papers[t]),p=!1;else{let t=await makePaper(r,a,e);if(!t)return;global.state.titleHashToIds=makeTitleHashToIdList(global.state.papers);d=findFuzzyPaperMatch(global.state.titleHashToIds,t);if(d&&o){let e=global.state.papers[d];log("New paper",t,"already exists as",e),addPaperToTitleHashToId(t),e.venue?(r=["lastOpenDate"],"anonymous"===e.author.toLowerCase()&&(r.push("author"),r.push("year"),r.push("venue"),r.push("bibtex"),r.push("note")),console.log("overwrites: ",r),e=mergePapers({newPaper:t,overwrites:r,oldPaper:e,incrementCount:!1}),updateDuplicatedUrls(a,d)):t.venue?(updateDuplicatedUrls(paperToAbs(e),t.id),updateDuplicatedUrls(paperToPDF(e),t.id),await deletePaperInStorage(e.id,global.state.papers),e=mergePapers({newPaper:t,oldPaper:e,incrementCount:!1,overwrites:["lastOpenDate","venue","bibtex","id","key","pdfLink","source","year","author"]})):"anonymous"===e.author.toLowerCase()&&(e=mergePapers({newPaper:t,oldPaper:e,incrementCount:!0,overwrites:["lastOpenDate","author","year","venue","bibtex","note"]})),t=updatePaperVisits(e),p=!1}else p=!0;l=t}if(!l.codeLink||!l.venue)try{var u=await tryPWCMatch(l),h=!l.codeLink&&u?.codeLink,f=u?.note,m=u?.bibtex,g=!l.venue&&u?.venue;(c={codeLink:h,note:f,venue:g,bibtex:m}).codeLink&&(l.codeLink=c.codeLink,u.hasOwnProperty("note")&&delete u.note,l.code=u)}catch(e){log("Error trying to discover a code repository:"),log(e)}return global.state.papers=await getStorage("papers")??{},p&&global.state.papers.hasOwnProperty(l.id)&&(warn("Paper has been created by another page: merging papers."),l=mergePapers({newPaper:global.state.papers[l.id],oldPaper:l,incrementCount:!0}),p=!1),o&&!global.state.deleted[l.id]&&(global.state.papers[l.id]=l),chrome.storage.local.set({papers:global.state.papers},async()=>{n.update(l),pushToRemote();let e;if(p||c.codeLink?p?(o?logOk("Added '"+l.title+"' to your Memory!"):warn("Discovered '"+l.title+"' but did not store it (`store` is false)."),log("paper: ",l),e="Added to your Memory",c.codeLink&&(e+="
(+ repo from PapersWithCode)
"),i&&i.checkFeedback&&o&&feedback(e,l)):(e="Found a code repository on PapersWithCode!",i&&i.checkFeedback&&o&&feedback(e)):o&&logOk("Updated '"+l.title+"' in your Memory"),!l.note||!l.venue||"anonymous"===l.author.toLowerCase()){var t,a,r=await tryPreprintMatch(l);for(t of["note","venue","bibtex","doi"])l[t]&&"bibtex"!==t||(a=r[t]??c[t])&&(log(`Updating preprint ${t} to`,a),l[t]=a),"bibtex"===t&&r[t]&&(a=bibtexToObject(r[t])).year!==l.year&&(l.year=a.year);global.state.papers=await getStorage("papers")??{},p&&global.state.papers.hasOwnProperty(l.id)&&1chrome.storage.local.set({papers:global.state.papers},e))}n.preprints(l),pushToRemote(),info(`Done processing paper (${(Date.now()-s)/1e3}s).`),console.groupEnd()}),{paper:l,id:t}},findPaperForProperty=(e,t,a,r="id")=>e.find(e=>e.source===t&&e[r].includes(a))?.id,parseIdFromUrl=async(t,e=null)=>{if(e)return urlToWebsiteId(t);let a;e=miniHash(t),e=global.state.urlHashToId[e];if(e)return e;var e=await isPaper(t,!0),r=Object.values(cleanPapers(global.state.papers));if(e.arxiv){var i=arxivIdFromURL(t),i=(a="Arxiv-"+i,Object.values(global.state.titleHashToIds).find(e=>e.includes(a)));i&&(a=i.find(e=>!e.startsWith("Arxiv-"))??a)}else if(e.neurips){var i=t.split("/paper/")[1].split("/")[0],o=t.split("/").last().split("-")[0].slice(0,8);a=`NeurIPS-${i}_`+o}else if(e.cvf)a=parseCVFUrl(t).id;else if(e.openreview){i=t.match(/id=\w+/)[0].replace("id=","");a=findPaperForProperty(r,"openreview",i)}else if(e.biorxiv){let e=(t=cleanBiorxivURL(t)).split("/").last();e.match(/v\d+$/)&&(e=e.split("v")[0]),a="Biorxiv-"+e;var o=Object.values(global.state.titleHashToIds).find(e=>e.includes(a));o&&(a=o.find(e=>!e.startsWith("Biorxiv-"))??a)}else if(e.pmlr){i=t.split("/").last().split(".")[0],o="20"+i.match(/\d+/)[0];a=`PMLR-${o}-`+i}else if(e.acl){o=(t=(t=t.replace(".pdf","")).endsWith("/")?t.slice(0,-1):t).split("/").last();a=findPaperForProperty(r,"acl",o)}else if(e.pnas){i=((t=t.replace(".full.pdf","")).endsWith("/")?t.split("/").slice(-2):t.split("/").slice(-1))[0];a=findPaperForProperty(r,"pnas",i)}else if(e.nature){o=(t=t.replace(".pdf","").split("#")[0]).split("/").last();a=findPaperForProperty(r,"nature",o)}else if(e.acs){t=noParamUrl(t).replace("pubs.acs.org/doi/pdf/","/doi/").replace("pubs.acs.org/doi/abs/","/doi/");let e=miniHash(t.split("/doi/")[1]);a="ACS_"+e}else if(e.iop){t=noParamUrl(t).replace(/\/pdf$/,"");let e=miniHash(t.split("/article/")[1].split("/meta")[0]);a="IOPscience_"+e}else if(e.jmlr){i=(t=(t=t.endsWith(".pdf")?t.split("/").slice(0,-1).join("/"):t).replace(".html","")).split("/").last(),o="20"+i.match(/\d+/)[0];a=`JMLR-${o}_`+i}else if(e.pmc){o=t.match(/PMC\d+/g)[0].replace("PMC","");a=findPaperForProperty(r,"pmc",o)}else if(e.ijcai){i=t.endsWith(".pdf")?t.replace(".pdf","").split("/").last().match(/[1-9]\d*/):t.split("/").last(),o=t.match(/proceedings\/\d+/gi)[0].split("/")[1];a=`IJCAI-${o}_`+i}else if(e.acm){let e=t.replace(/\/doi\/?(pdf|abs|full)?\//,"/doi/").split("/doi/")[1];a=findPaperForProperty(r,"acm",miniHash(e))}else if(e.ieee){o=(t.includes("ieee.org/document/")?t.split("ieee.org/document/"):t.includes("ieee.org/abstract/document/")?t.split("ieee.org/abstract/document/"):t.split("arnumber="))[1].match(/\d+/)[0];a=findPaperForProperty(r,"ieee",o)}else if(e.springer){let e=global.sourceExtras.springer.types.filter(e=>t.includes(`/${e}/`))[0];if(!e){if(!t.includes("/content/pdf/"))throw new Error("Could not find Springer type for "+t);e="content/pdf"}i=noParamUrl(t).split(`/${e}/`)[1].replace(".pdf","");a=findPaperForProperty(r,"springer",miniHash(i))}else if(e.aps){var[o,i]=parseUrl(t.split("#")[0]).pathname.split("/").slice(1,3);let e=t.split(`/${o}/${i}/`).last();a=findPaperForProperty(r,"aps",miniHash(e))}else if(e.wiley){let e=t.split("?")[0].split("#")[0].split("/").slice(-2).join("/");a=findPaperForProperty(r,"wiley",miniHash(e))}else if(e.sciencedirect){o=t.split("/pii/")[1].split("/")[0].split("#")[0].split("?")[0];a=findPaperForProperty(r,"sciencedirect",miniHash(o))}else if(e.science)(doi=noParamUrl(t).split("/doi/")[1]).startsWith("10.")||(doi=doi.split("/").slice(1).join("/")),a=findPaperForProperty(r,"science",miniHash(doi));else if(e.frontiers)doi=noParamUrl(t).split("/articles/")[1].split("/").slice(0,-1).join("/"),a=findPaperForProperty(r,"frontiers",miniHash(doi));else if(e.ihep)a=t.includes("/literature/")?(i=noParamUrl(t).match(/\/literature\/(\d+)/)[1],findPaperForProperty(r,"ihep",i)):(o=noParamUrl(t).split("/files/")[1].split("/")[0],findPaperForProperty(r,"ihep",o,"pdfLink"));else if(e.plos){let e=t.split("?id=").last().split("&")[0];a=findPaperForProperty(r,"plos",miniHash(e))}else if(e.rsc){i=noParamUrl(t).replace("/unauth","").split("/").last();a=findPaperForProperty(r,"rsc",miniHash(i))}else if(e.mdpi){o=noParamUrl(t.split("mdpi.com/")[1].split("/pdf")[0].split("/reprints")[0].split("/notes")[0]);a=findPaperForProperty(r,"mdpi",miniHash(o))}else if(e.oup){t=noParamUrl(t).split("https://academic.oup.com/").last();i=(t=isPdfUrl(t)?t.split("/").slice(0,-1).join("/"):t).split("/").slice(2).join("");a=findPaperForProperty(r,"oup",miniHash(i))}else if(e.hal){o=(t=noParamUrl(t).replace(/(hal\.science\/\w+-\d+)(v\d+)?((\/document|\/file\/.+\.pdf))?/,"$1")).split("/").last();a=findPaperForProperty(r,"hal",miniHash(o))}else if(e.chemrxiv)chemRxivId=chemRxivId=isPdfUrl(t)?t.split("/item/")[1].split("/")[0]:noParamUrl(t).split("/").last(),a=findPaperForProperty(r,"chemrxiv",miniHash(chemRxivId));else if(e.cell)t=(await findCellPii(t)).url,a=findPaperForProperty(r,"cell",miniHash(t.split("cell.com/")[1]));else if(e.localFile)a=e.localFile;else{if(!e.parsedWebsite)throw new Error("`parseIdFromUrl` failed, unknown paper url. Is: "+JSON.stringify(e));a=e.parsedWebsite.id}return a},isKnownLocalFile=e=>{if(!e.startsWith("file://"))return!1;if(!e.endsWith(".pdf"))return!1;let t=decodeURIComponent(e).replace("file://","");var a=Object.entries(global.state.files).filter(([,e])=>e.filename===t);if(0({title:miniHash(e.title),id:e.id})).filter(e=>r.includes(e.title));return 0!==a.length&&a[0].id},makeMdLink=(e,t={})=>{var a=(t.checkPreferPdf?paperToPDF:paperToAbs)(e);let r="",i=(!t.checkMdYearVenue||(r=(r=e.note.match(/(.+)\s*@\s*([\w\s]+\(?\d{4}\)?)/i))&&r[2]?.replace(/\s+/g," ").replace(/[\(\)]/g,""))||(r="",e.venue&&(r+=e.venue+" "),r+=e.year),e.title);return`[${i=r?`${i} (${r.replace(/\s+/g," ")})`:i}](${a})`},duration=("undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={isPaper:isPaper,isSourceURL:isSourceURL,paperToAbs:paperToAbs,paperToPDF:paperToPDF,findLocalFile:findLocalFile,matchPapersToFiles:matchPapersToFiles,matchAllFilesToPapers:matchAllFilesToPapers,mergePapers:mergePapers,updatePaperVisits:updatePaperVisits,addOrUpdatePaper:addOrUpdatePaper,findPaperForProperty:findPaperForProperty,parseIdFromUrl:parseIdFromUrl,isKnownLocalFile:isKnownLocalFile,makeMdLink:makeMdLink}),e=>(Date.now()-e[0])/1e3),initState=async({papers:e,isContentScript:t,print:a=!0}={})=>{var r=[],i=(r.unshift(Date.now()),a&&consoleHeader("PaperMemory Init "+String.fromCodePoint("0x2705")),e||(e=await getStorage("papers")??{},a&&log("Time to retrieve stored papers (s): "+duration(r))),r.unshift(Date.now()),global.state.dataVersion=getManifestDataVersion(),a&&log("Time to parse data version (s): "+duration(r)),r.unshift(Date.now()),weeklyBackup(),a&&log("Time to backup papers (weekly) (s): "+duration(r)),r.unshift(Date.now()),await migrateData(e,global.state.dataVersion));a&&log("Time to migrate data (s): "+duration(r)),r.unshift(Date.now()),e=i.papers,global.state.papers=e,global.state.prefs=await getPrefs(),a&&log("Time to retrieve user preferences (s): "+duration(r)),r.unshift(Date.now()),global.state.ignoreSources=await getStorage("ignoreSources")??{},a&&log("Time to retrieve sources to ignore (s): "+duration(r)),r.unshift(Date.now()),global.state.urlHashToId=await getStorage("urlHashToId")??{},a&&log("Time to retrieve sources to urlHashToId (s): "+duration(r)),r.unshift(Date.now()),global.state.titleHashToIds=makeTitleHashToIdList(e),a&&log("Time to hash titles (s): "+duration(r)),r.unshift(Date.now()),t||(global.state.files=await matchAllFilesToPapers(),a&&log("Time to match all local files (s): "+duration(r)),r.unshift(Date.now()),global.state.papersList=Object.values(cleanPapers(e)),global.state.sortKey="lastOpenDate",global.state.papersReady=!0,sortMemory(),a&&log("Time to sort memory (s): "+duration(r)),r.unshift(Date.now()),makeTags(),a&&log("Time to make tags (s): "+duration(r)),r.unshift(Date.now())),info("State init duration (s): "+(Date.now()-r.last())/1e3),a&&console.groupEnd(),(async()=>{var e=chrome.runtime.getURL("src/data/cell.json"),e=await fetch(e).then(e=>e.json());global.state.cellJournalData=e})()},sortMemory=()=>{global.state.sortedPapers=Object.values(cleanPapers(global.state.papers)),global.state.sortedPapers.sort(orderPapers(0<=global.descendingSortKeys.indexOf(global.state.sortKey))),global.state.papersList.sort(orderPapers(0<=global.descendingSortKeys.indexOf(global.state.sortKey)))},orderPapers=i=>(e,t)=>{let a=e[global.state.sortKey],r=t[global.state.sortKey];return void 0===a&&(a=""),void 0===r&&(r=""),"string"==typeof a&&(a=a.toLowerCase(),r=r.toLowerCase()),i?a>r?-1:1:a>r?1:-1},makeTags=()=>{var e,t=new Set;for(e of global.state.sortedPapers)for(var a of e.tags)t.add(a);global.state.paperTags=[...t],global.state.paperTags.sort()},getExamplePaper=async e=>{var t=await getStorage("papers")??{},a=Object.keys(t).filter(e=>-1===e.indexOf("__")).reverse();let r=t[a[e=void 0===e?getRandomInt(a.length):e]];return r=void 0===r?{title:"Dummy title",author:"Cool Author and Great Author and Complicated Name Àuthor",year:2021,id:"NoneXiv-214324",bibtex:"@Nonesense{}",tags:["t1","t2"],note:"Thispaperdoesnotexist.com"}:r},stateTitleFunction=e=>{let t=e;return"string"==typeof e&&void 0===(t=global.state.papers[e])?(log("Error in stateTitleFunction: unknown id",e),"Unknown ID"):global.state.titleFunction(t).replaceAll("\n"," ").replace(/\s\s+/g," ")},updateDuplicatedUrls=(t,a,e=!1)=>{if(e){let e;if((e=t?[miniHash(t)]:Object.keys(global.state.urlHashToId).filter(e=>global.state.urlHashToId[e]===a))&&e.length){for(var r of e)warn("Removing duplicated url",t,"for",a),delete global.state.urlHashToId[r];setStorage("urlHashToId",global.state.urlHashToId)}}else global.state.urlHashToId[miniHash(t)]=a,setStorage("urlHashToId",global.state.urlHashToId)},addPaperToTitleHashToId=e=>{var t=e.id,e=miniHash(e.title);global.state.titleHashToIds.hasOwnProperty(e)||(global.state.titleHashToIds[e]=[]),global.state.titleHashToIds[e].includes(t)||global.state.titleHashToIds[e].push(t)},readJournalAbbreviations=async()=>{var e,t;global.journalAbbreviations||(e=chrome.runtime.getURL("src/data/iso4-journals.json"),e=await fetch(e).then(e=>e.json()),t=chrome.runtime.getURL("src/data/journal-abbreviations.json"),t=await fetch(t).then(e=>e.json()),global.journalAbbreviations=Object.fromEntries([...Object.entries(e),...Object.entries(t)].map(([e,t])=>[miniHash(e),t])))},downloadPaperPdf=async e=>{if(!global.state.papersReady)throw new Error("[PM] State is not ready (downloadPaperPdf)");let t=stateTitleFunction(e);t=(t=t.replaceAll(":"," ")).replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\/:;<=>?@\[\]^`{|}~]/g," ").replace(/\s+/g," "),global.state.prefs.checkStore&&(t="PaperMemoryStore/"+t,0===(await getStoredFiles()).length)&&chrome.downloads.download({url:URL.createObjectURL(new Blob([global.storeReadme])),filename:"PaperMemoryStore/IMPORTANT_README.txt",saveAs:!1}),(t=t.endsWith("pdf")?t.slice(0,-3)+".pdf":t).endsWith(".pdf")||(t+=".pdf"),log("Downloading paper",e,"to",t),chrome.downloads.download({url:paperToPDF(e),filename:t})},decodeHtml=("undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={duration:duration,initState:initState,sortMemory:sortMemory,orderPapers:orderPapers,makeTags:makeTags,getExamplePaper:getExamplePaper,stateTitleFunction:stateTitleFunction,updateDuplicatedUrls:updateDuplicatedUrls,addPaperToTitleHashToId:addPaperToTitleHashToId,readJournalAbbreviations:readJournalAbbreviations,downloadPaperPdf:downloadPaperPdf}),e=>{var t=document.createElement("textarea");return t.innerHTML=e,t.value}),flipAuthor=e=>e.split(", ").reverse().join(" "),flipAndAuthors=e=>e.split(" and ").map(flipAuthor).join(" and "),fetchArxivXML=async e=>{e=e.replace("Arxiv-","").replace("_","/");return fetch("https://export.arxiv.org/api/query?"+new URLSearchParams({id_list:e}))},fetchCvfHTML=async e=>{let t,a;var r;return t=e.endsWith(".pdf")?e.replace("/papers_backup/","/papers/").replace("/papers/","/html/").replace(".pdf",".html"):e,!(a=await fetch(t).then(e=>e.ok?e.text():""))&&t.includes("thecvf.com/content_")&&({conf:e,year:r}=parseCVFUrl(e),t=t.replace(`/content_${e}_${r}/`,`/content_${e.toLowerCase()}_${r}/`),a=await fetch(t).then(e=>e.ok?e.text():"")),a},getOpenReviewNoteJSON=e=>sendMessageToBackground({type:"OpenReviewNoteJSON",url:e}),getOpenReviewForumJSON=e=>sendMessageToBackground({type:"OpenReviewForumJSON",url:e}),fetchDom=async e=>{e=await fetch(e).then(e=>e.ok?e.text():"");return(new DOMParser).parseFromString(e.replaceAll("\n",""),"text/html")},fetchText=async e=>{try{var t=await fetch(e);return(t.ok?await t.text():"").trim()}catch(e){return logError("fetchText error:",e),""}},fetchJSON=async e=>{try{var t=await fetch(e),a=t.status;return{data:t.ok?await t.json():null,status:a}}catch(e){return logError("fetchJSON error:",e),{}}},fetchBibtex=async({url:e,doi:t})=>{let a;if(e&&t)throw new Error("fetchBibtex: both url and doi provided");if(t)a=await fetchText(`https://citation.doi.org/format?doi=${t}&style=bibtex&lang=en-US`);else{if(!e)throw new Error("fetchBibtex: no url or doi provided");a=await fetchText(e)}t=bibtexToObject(a);return delete t.abstract,a=bibtexToString(t),t.bibtex=a,t.key=t.citationKey,t.journal&&(t.venue=t.journal,t.note=`Published in ${t.journal} (${t.year})`),t},extractCrossrefData=e=>{if(e.status&&"ok"===e.status)if("work"!==e["message-type"])error("Unknown `message-type` from CrossRef",e);else{var t=e.message,a=(log("Crossref data.message: ",t),t.author.map(e=>e.given+" "+e.family).join(" and ")),r=t.issued?t.issued["date-parts"][0][0]+"":t.published?t.published["date-parts"][0][0]+"":null;if(r){var i,o,n,s=t.title[0];if(s)return i=t["container-title"][0]??"Springer",n=[miniHash(t.author[0].family),r.slice(2),firstNonStopLowercase(s)].join(""),o=t.DOI,n={entryType:"book"===t.type?"book":"book-chapter"===t.type?"InBook":t.type.includes("article")?"Article":"InProceedings",citationKey:n,publisher:t.publisher,author:a,title:s,year:r,doi:o},t.page&&(n.pages=t.page),t.volume&&(n.volume=t.volume),t.type.includes("journal")&&(n.journal=i),t.link&&0"application/pdf"===e["content-type"]))&&(n.pdf=a.URL),s=t.link.find(e=>"text/html"===e["content-type"])??t.link[0])&&(n.url=s.URL),r=bibtexToString(n),{...n,bibtex:r,venue:i};error("Cannot find title in CrossRef data",t)}else error("Cannot find year in CrossRef data",t)}else error("Cannot parse CrossRef response",e)},fetchCrossRefDataForDoi=async e=>{var{data:e,status:t}=await fetchJSON(`https://api.crossref.org/works/${e}?mailto=schmidtv%40mila.quebec`);return{data:extractCrossrefData(e),status:t}},fetchSemanticScholarDataForDoi=async e=>{var t,e=(await fetchJSON(`https://api.semanticscholar.org/graph/v1/paper/${e}?fields=venue,year,authors,title`)).data;let a;return e&&(a={},e.venue&&(a.venue=e.venue),e.year&&(a.year=e.year),e.authors&&(a.author=e.authors.map(e=>e.name).join(" and ")),e.title&&(a.title=e.title),e=""+miniHash(e.authors[0].name)+firstNonStopLowercase(a.title),t=bibtexToString({entryType:"article",citationKey:e,...a}),a.bibtex=t,a.key=e),a},getDCPatterns=e=>{let t=e.slice(3);var e=["dc.","DC:","DC.","dc:"].map(e=>e+t.toLowerCase()),a=["dc.","DC:","DC.","dc:"].map(e=>e+t.capitalize());return[...e,...a]},getMetaContent=({selector:a,dom:t,all:e=!1,pure:r=!1})=>{let i="";for(let[t,e]of Object.entries(a))/dc\W/.test(e.toLowerCase())?i+=getDCPatterns(e).map(e=>`meta[${t}='${e}']`).join(","):i+=`meta[${t}='${e}']`;if(e){let e=queryAll(i,t).map(e=>e.getAttribute("content")??"");return r?e:e.map(spaceCamelCase).map(toSingleSpace)}let o=t.querySelector(i)?.getAttribute("content")??"";return r?o:toSingleSpace(spaceCamelCase(o))},extractDataFromDCMetaTags=e=>{var t,a,r,i,o,n,s=getMetaContent({selector:{name:"dc.Creator"},dom:e,all:!0}).join(" and ")||getMetaContent({selector:{name:"citation_author"},dom:e,all:!0}).join(" and ");return s?(t=(getMetaContent({selector:{name:"dc.Date"},dom:e})||getMetaContent({selector:{name:"citation_publication_date"},dom:e})).split("-")[0].split("/")[0],a=getMetaContent({selector:{name:"dc.Publisher"},dom:e}).replaceAll("\n"," ")||getMetaContent({selector:{property:"og:site_name"},dom:e,pure:!0}),r=getMetaContent({selector:{name:"dc.Title"},dom:e})||getMetaContent({selector:{name:"citation_title"},dom:e}),i=getMetaContent({selector:{name:"citation_journal_title"},dom:e}),o=getMetaContent({selector:{name:"citation_pdf_url"},dom:e,pure:!0}),e=getMetaContent({selector:{scheme:"doi"},dom:e})||getMetaContent({selector:{name:"citation_doi"},dom:e}),n=(""+s.split(" and ")[0].split(" ").find((e,t)=>1<=t&&1{var e=arxivIdFromURL(e),t=await(await fetchArxivXML(e)).text(),t=(new DOMParser).parseFromString(t.replaceAll("\n",""),"text/xml"),a=queryAll("author name",t).map(e=>e.innerHTML),r=a.join(" and "),i=[...t.getElementsByTagName("link")].map(e=>e.getAttribute("href")).filter(e=>e.includes("arxiv.org/pdf/"))[0].replace(/v\d+(\.pdf)?$/gi,".pdf"),o=(o=t.querySelector("entry title"))?.textContent||o?.innerText||"",t=t.querySelector("entry published").innerHTML.slice(0,4),a=a[0].split(" ").last().toLowerCase()+t+firstNonStopLowercase(o),n="Arxiv-"+e.replace("/","_"),s="";return{author:r,bibtex:s+`@article{${a},
+`)}},venue:{type:"string",desc:"the paper's publication venue",default:e=>""},year:{type:"string",desc:"year of publication",validation:e=>{if(!/^\d{4}$/.test(e))return`Invalid year (${e}): must be 4 digits exactly`}}},n={};for(a in o)if(n[a]||(n[a]=[]),t.hasOwnProperty(a)){var s,l=o[a].type,p=typeof t[a];l.includes("array")||"object"===l?l.includes("array")?Array.isArray(t[a])?(c=l.split("[")[1].replace("]",""),0{let t=!0,a="",r="",i;try{e.__dataVersion||(e.__dataVersion=1);var o,n,s=await migrateData(e,getManifestDataVersion(),!1);if(!s.success)return r="Could not migrate the data before storing it",s.error&&(r+=": "+stringifyError(s.error)),{success:!1,message:r};for(o in i=s.papers)o.startsWith("__")||(paperWarnings=validatePaper(i[o]).warnings)&&0"+Object.entries(paperWarnings).map((e,t)=>`
'+stringifyError(e),t=!0}return{success:!t,message:r,warning:a,papersToWrite:i}},makeVenue=async e=>{let t="";switch((t=e.note&&e.note.match(/(accepted|published)\ @\ .+\(?\d{4}\)?/i)?e.note.split("@")[1].trim().replace(/\(?\d{4}\)?/,"").split("--")[0].trim():t)&&"neurips"===t.toLowerCase()&&(t="NeurIPS"),e.source){case"arxiv":break;case"neurips":t="NeurIPS";break;case"cvf":t=t||(await makeCVFPaper(e.pdfLink)).venue;break;case"openreview":t=t||(await makeOpenReviewPaper(e.pdfLink)).venue;break;case"biorxiv":break;case"pmlr":t=e.conf?.split(/\d{4}/)[0]??"";break;case"acl":t=e.conf??"";break;case"pnas":t="PNAS";break;case"nature":t=t||e.venue;break;case"iop":case"acs":t=e.venue}return t},makeTitleHashToIdList=e=>{var t,a,r={};for([t,a]of Object.entries(cleanPapers(e))){var i=miniHash(a.title);r.hasOwnProperty(i)||(r[i]=[]),r[i].push(t)}return r},isPaper=("undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={migrateData:migrateData,logStorage:logStorage,getStorage:getStorage,setStorage:setStorage,deletePaperInStorage:deletePaperInStorage,getTheme:getTheme,backupData:backupData,weeklyBackup:weeklyBackup,getPrefs:getPrefs,getManifestDataVersion:getManifestDataVersion,versionToSemantic:versionToSemantic,validatePaper:validatePaper,prepareOverwriteData:prepareOverwriteData,makeVenue:makeVenue,makeTitleHashToIdList:makeTitleHashToIdList}),async(e,t=!1)=>{var a={};if(e){for(var r in global.knownPaperPages){var i,o=global.knownPaperPages[r].patterns;a[r]=!1;for(i of o)if("string"==typeof i?e.includes(i)&&(a[r]=!0):"function"==typeof i&&(a[r]=i(e)),a[r])break}a.localFile=isKnownLocalFile(e),a.stored=!t&&(await findLocalFile(e)??!1),a.parsedWebsite=global.state.papers["Website_"+urlToWebsiteId(e)]??!1}return a}),isSourceURL=async(e,t)=>Object.values(await isPaper(e,t)).some(e=>e),paperToAbs=e=>{let t,a,r;var i=e.pdfLink;let o,n="";switch(e.source){case"arxiv":n=i.replace("/pdf/","/abs/").replace(".pdf","");break;case"neurips":n=i.replace("/file/","/hash/").replace("-Paper.pdf","-Abstract.html");break;case"cvf":n=i.replace("/papers/","/html/").replace(".pdf",".html");break;case"openreview":n=i.replace("/pdf?","/forum?");break;case"biorxiv":n=i.replace(".full.pdf","");break;case"pmlr":n=i.split("/").slice(0,-1).join("/")+".html";break;case"acl":n=i.replace(".pdf","");break;case"pnas":n=i.replace(".full.pdf","").replace("/doi/pdf/","/doi/full/");break;case"nature":n=i.replace(".pdf","");break;case"acs":n=i.replace("pubs.acs.org/doi/pdf/","pubs.acs.org/doi/").split("?")[0];break;case"iop":n=i.split("#")[0].replace(/\/pdf$/,"");break;case"jmlr":n=i.split("/").slice(0,-1).join("/").replace("/papers/volume","/papers/v")+".html";break;case"pmc":var s=i.match(/PMC\d+/)[0];n=i.split(s)[0]+s;break;case"ijcai":var s=i.replace(".pdf","").split("/").last().match(/[1-9]\d*/),l=i.match(/proceedings\/\d+/gi)[0].split("/")[1];n=`https://www.ijcai.org/proceedings/${l}/`+s;break;case"acm":n=i.replace("/doi/pdf/","/doi/");break;case"ieee":n="https://ieeexplore.ieee.org/document/"+e.key;break;case"springer":n=e.extra.url;break;case"aps":[t,a]=parseUrl(i).pathname.split("/").slice(1,3),n=i.replace(`/${t}/${a}/`,`/${t}/abstract/`);break;case"wiley":n=i.replace(/\/doi\/e?pdf\//g,"/doi/abs/");break;case"sciencedirect":o=i.split("/pii/")[1].split("/")[0].split("#")[0].split("?")[0],n="https://www.sciencedirect.com/science/article/pii/"+o;break;case"science":(r=i.split("/doi/")[1]).startsWith("10.")||(r=r.split("/").slice(1).join("/")),n="https://science.org/doi/full/"+r;break;case"frontiers":n=i.replace(/\/pdf$/,"/full");break;case"ihep":n="https://inspirehep.net/literature/"+e.id.split("-")[1];break;case"plos":n=i.replace("/article/file?","/article?").split("&")[0];break;case"rsc":n=i.replace("/articlepdf/","/articlelanding/");break;case"website":n=e.pdfLink;break;case"mdpi":n=e.pdfLink.split("/pdf")[0];break;case"oup":n="https://doi.org/"+e.doi;break;case"hal":n=i.split("/file/")[0].split("/document")[0];break;case"chemrxiv":n="https://chemrxiv.org/engage/chemrxiv/article-details/"+i.split("/item/")[1].split("/")[0];break;case"cell":const t=e.id.split("_")[0].split("fulltext")[0];o=new URL(i).searchParams.get("pii"),n=`https://www.cell.com/${t}/fulltext/`+o;break;default:n="https://xkcd.com/1969/"}return n.replace("http://","https://")},paperToPDF=e=>{let t=e.pdfLink;switch(e.source){case"arxiv":t=t.replace("arxiv.org/abs/","arxiv.org/pdf/").replace(/\.pdf$/,"").replace(/v\d+$/gi,""),t+=".pdf";break;case"neurips":t=t.replace("/hash/","/file/").replace("-Abstract.html","-Paper.pdf");break;case"cvf":t=t.replace("/html/","/papers/").replace(".html",".pdf");break;case"openreview":t=t.replace("/forum?","/pdf?");break;case"biorxiv":t=cleanBiorxivURL(t)+".full.pdf";break;case"pmlr":case"acl":case"pnas":break;case"nature":t.endsWith(".pdf")||(t+=".pdf");break;case"iop":t.endsWith("/pdf")||(t+="/pdf");break;case"acs":case"jmlr":case"pmc":case"ijcai":case"acm":case"ieee":case"springer":case"aps":case"wiley":case"sciencedirect":case"science":case"frontiers":case"ihep":case"plos":case"rsc":case"mdpi":case"oup":case"hal":case"chemrxiv":case"website":case"cell":break;default:t="https://xkcd.com/1969/"}return t.replace("http://","https://")},findLocalFile=async t=>{if("string"==typeof t){let e;try{e=await parseIdFromUrl(t)}catch(e){return new Promise(e=>e(null))}if(!global.state.papers.hasOwnProperty(e))return new Promise(e=>e(null));paper=global.state.papers[e]}else paper=t;t=await getStoredFiles(),t=await matchPapersToFiles({[paper.id]:paper},t),t=Object.values(t);return 1===t.length?t[0]:null},matchPapersToFiles=async(e,t)=>{var a,r=Object.fromEntries(Object.values(e).map(e=>[e.id,miniHash(e.title)])),i=(t=t.filter(e=>e.exists&&"complete"===e.state&&!e.filename.toLowerCase().includes("readme.txt")),Object.fromEntries(t.map(e=>[e.id,miniHash(e.filename)]))),o={};for(a of t){let t;try{(t=await parseIdFromUrl(a.finalUrl))&&e.hasOwnProperty(t)&&(o[t]=a)}catch(e){t=null}if(!t){let t=i[a.id];var n=Object.entries(r).find(([,e])=>t.includes(e));n&&(o[n[0]]=a)}}return o},matchAllFilesToPapers=()=>new Promise((t,e)=>{chrome.downloads.search({filenameRegex:"PaperMemoryStore/.*"},async e=>{e=await matchPapersToFiles(cleanPapers(global.state.papers),e);t(e)})}),mergePapers=(e={newPaper:{},oldPaper:{}})=>{let{oldPaper:t,newPaper:a,...r}=e;var i,o,n={...t},e={overwrites:["lastOpenDate"],incrementCount:!1,syncMerge:!1,...r};for(i in a)(!t.hasOwnProperty(i)||a[i]&&!t[i])&&(n[i]=a[i]);e.incrementCount&&1===n.count&&(n.count+=1),e.syncMerge&&(n.count=t.count+a.count,n.note=t.note??"",a.note&&a.note!==t.note&&(n.note+="\n\n--[Sync Merge]--\n",n.note+=a.note),n.tags=[...t.tags,...a.tags],n.lastOpenDate=a.lastOpenDate,a.lastOpenDate>t.lastOpenDate&&(n.lastOpenDate=a.lastOpenDate),n.addDate=a.addDate,a.addDate>t.addDate)&&(n.addDate=a.addDate);for(o of e.overwrites)a.hasOwnProperty(o)&&(n[o]=a[o]);return n},updatePaperVisits=e=>(e.count+=1,e.lastOpenDate=(new Date).toJSON(),log("Updating paper to:",e),e),addOrUpdatePaper=async({url:a,is:r,prefs:i,tab:e,store:o=!0,contentScriptCallbacks:n={update:()=>{},preprints:()=>{}}})=>{let s=Date.now(),l,p,c={};consoleHeader("PaperMemory Parsing "+String.fromCodePoint("0x1F4DD")),global.state.papers=await getStorage("papers")??{};var t=await parseIdFromUrl(a,e),d=global.state.papers.hasOwnProperty(t);if(i&&i.checkFeedback&&feedback({loading:!0}),t&&d&&"anonymous"!==global.state.papers[t].author.toLowerCase())l=updatePaperVisits(global.state.papers[t]),p=!1;else{let t=await makePaper(r,a,e);if(!t)return;global.state.titleHashToIds=makeTitleHashToIdList(global.state.papers);d=findFuzzyPaperMatch(global.state.titleHashToIds,t);if(d&&o){let e=global.state.papers[d];log("New paper",t,"already exists as",e),addPaperToTitleHashToId(t),e.venue?(r=["lastOpenDate"],"anonymous"===e.author.toLowerCase()&&(r.push("author"),r.push("year"),r.push("venue"),r.push("bibtex"),r.push("note")),console.log("overwrites: ",r),e=mergePapers({newPaper:t,overwrites:r,oldPaper:e,incrementCount:!1}),updateDuplicatedUrls(a,d)):t.venue?(updateDuplicatedUrls(paperToAbs(e),t.id),updateDuplicatedUrls(paperToPDF(e),t.id),await deletePaperInStorage(e.id,global.state.papers),e=mergePapers({newPaper:t,oldPaper:e,incrementCount:!1,overwrites:["lastOpenDate","venue","bibtex","id","key","pdfLink","source","year","author"]})):"anonymous"===e.author.toLowerCase()&&(e=mergePapers({newPaper:t,oldPaper:e,incrementCount:!0,overwrites:["lastOpenDate","author","year","venue","bibtex","note"]})),t=updatePaperVisits(e),p=!1}else p=!0;l=t}if(!l.codeLink||!l.venue)try{var u=await silentPromiseTimeout(tryPWCMatch(l)),h=!l.codeLink&&u?.codeLink,f=u?.note,m=u?.bibtex,g=!l.venue&&u?.venue;(c={codeLink:h,note:f,venue:g,bibtex:m}).codeLink&&(l.codeLink=c.codeLink,u.hasOwnProperty("note")&&delete u.note,l.code=u)}catch(e){log("Error trying to discover a code repository:"),log(e)}return global.state.papers=await getStorage("papers")??{},p&&global.state.papers.hasOwnProperty(l.id)&&(warn("Paper has been created by another page: merging papers."),l=mergePapers({newPaper:global.state.papers[l.id],oldPaper:l,incrementCount:!0}),p=!1),o&&!global.state.deleted[l.id]&&(global.state.papers[l.id]=l),chrome.storage.local.set({papers:global.state.papers},async()=>{n.update(l),pushToRemote();let e;if(p||c.codeLink?p?(o?logOk("Added '"+l.title+"' to your Memory!"):warn("Discovered '"+l.title+"' but did not store it (`store` is false)."),log("paper: ",l),e="Added to your Memory",c.codeLink&&(e+="
(+ repo from PapersWithCode)
"),i&&i.checkFeedback&&o&&feedback({text:e,paper:l})):(e="Found a code repository on PapersWithCode!",i&&i.checkFeedback&&o&&feedback({text:e})):o&&logOk("Updated '"+l.title+"' in your Memory"),!l.note||!l.venue||"anonymous"===l.author.toLowerCase()){var t,a,r=await tryPreprintMatch(l);for(t of["note","venue","bibtex","doi"])l[t]&&"bibtex"!==t||(a=r[t]??c[t])&&(log(`Updating preprint ${t} to`,a),l[t]=a),"bibtex"===t&&r[t]&&(a=bibtexToObject(r[t])).year!==l.year&&(l.year=a.year);global.state.papers=await getStorage("papers")??{},p&&global.state.papers.hasOwnProperty(l.id)&&1chrome.storage.local.set({papers:global.state.papers},e))}n.preprints(l),pushToRemote(),info(`Done processing paper (${(Date.now()-s)/1e3}s).`),console.groupEnd()}),{paper:l,id:t}},findPaperForProperty=(e,t,a,r="id")=>e.find(e=>e.source===t&&e[r].includes(a))?.id,parseIdFromUrl=async(t,e=null)=>{if(e)return urlToWebsiteId(t);let a;e=miniHash(t),e=global.state.urlHashToId[e];if(e)return e;var e=await isPaper(t,!0),r=Object.values(cleanPapers(global.state.papers));if(e.arxiv){var i=arxivIdFromURL(t),i=(a="Arxiv-"+i,Object.values(global.state.titleHashToIds).find(e=>e.includes(a)));i&&(a=i.find(e=>!e.startsWith("Arxiv-"))??a)}else if(e.neurips){var i=t.split("/paper/")[1].split("/")[0],o=t.split("/").last().split("-")[0].slice(0,8);a=`NeurIPS-${i}_`+o}else if(e.cvf)a=parseCVFUrl(t).id;else if(e.openreview){i=t.match(/id=\w+/)[0].replace("id=","");a=findPaperForProperty(r,"openreview",i)}else if(e.biorxiv){let e=(t=cleanBiorxivURL(t)).split("/").last();e.match(/v\d+$/)&&(e=e.split("v")[0]),a="Biorxiv-"+e;var o=Object.values(global.state.titleHashToIds).find(e=>e.includes(a));o&&(a=o.find(e=>!e.startsWith("Biorxiv-"))??a)}else if(e.pmlr){i=t.split("/").last().split(".")[0],o="20"+i.match(/\d+/)[0];a=`PMLR-${o}-`+i}else if(e.acl){o=(t=(t=t.replace(".pdf","")).endsWith("/")?t.slice(0,-1):t).split("/").last();a=findPaperForProperty(r,"acl",o)}else if(e.pnas){i=((t=t.replace(".full.pdf","")).endsWith("/")?t.split("/").slice(-2):t.split("/").slice(-1))[0];a=findPaperForProperty(r,"pnas",i)}else if(e.nature){o=(t=t.replace(".pdf","").split("#")[0]).split("/").last();a=findPaperForProperty(r,"nature",o)}else if(e.acs){t=noParamUrl(t).replace("pubs.acs.org/doi/pdf/","/doi/").replace("pubs.acs.org/doi/abs/","/doi/");let e=miniHash(t.split("/doi/")[1]);a="ACS_"+e}else if(e.iop){t=noParamUrl(t).replace(/\/pdf$/,"");let e=miniHash(t.split("/article/")[1].split("/meta")[0]);a="IOPscience_"+e}else if(e.jmlr){i=(t=(t=t.endsWith(".pdf")?t.split("/").slice(0,-1).join("/"):t).replace(".html","")).split("/").last(),o="20"+i.match(/\d+/)[0];a=`JMLR-${o}_`+i}else if(e.pmc){o=t.match(/PMC\d+/g)[0].replace("PMC","");a=findPaperForProperty(r,"pmc",o)}else if(e.ijcai){i=t.endsWith(".pdf")?t.replace(".pdf","").split("/").last().match(/[1-9]\d*/):t.split("/").last(),o=t.match(/proceedings\/\d+/gi)[0].split("/")[1];a=`IJCAI-${o}_`+i}else if(e.acm){let e=t.replace(/\/doi\/?(pdf|abs|full)?\//,"/doi/").split("/doi/")[1];a=findPaperForProperty(r,"acm",miniHash(e))}else if(e.ieee){o=(t.includes("ieee.org/document/")?t.split("ieee.org/document/"):t.includes("ieee.org/abstract/document/")?t.split("ieee.org/abstract/document/"):t.split("arnumber="))[1].match(/\d+/)[0];a=findPaperForProperty(r,"ieee",o)}else if(e.springer){let e=global.sourceExtras.springer.types.filter(e=>t.includes(`/${e}/`))[0];if(!e){if(!t.includes("/content/pdf/"))throw new Error("Could not find Springer type for "+t);e="content/pdf"}i=noParamUrl(t).split(`/${e}/`)[1].replace(".pdf","");a=findPaperForProperty(r,"springer",miniHash(i))}else if(e.aps){var[o,i]=parseUrl(t.split("#")[0]).pathname.split("/").slice(1,3);let e=t.split(`/${o}/${i}/`).last();a=findPaperForProperty(r,"aps",miniHash(e))}else if(e.wiley){let e=t.split("?")[0].split("#")[0].split("/").slice(-2).join("/");a=findPaperForProperty(r,"wiley",miniHash(e))}else if(e.sciencedirect){o=t.split("/pii/")[1].split("/")[0].split("#")[0].split("?")[0];a=findPaperForProperty(r,"sciencedirect",miniHash(o))}else if(e.science)(doi=noParamUrl(t).split("/doi/")[1]).startsWith("10.")||(doi=doi.split("/").slice(1).join("/")),a=findPaperForProperty(r,"science",miniHash(doi));else if(e.frontiers)doi=noParamUrl(t).split("/articles/")[1].split("/").slice(0,-1).join("/"),a=findPaperForProperty(r,"frontiers",miniHash(doi));else if(e.ihep)a=t.includes("/literature/")?(i=noParamUrl(t).match(/\/literature\/(\d+)/)[1],findPaperForProperty(r,"ihep",i)):(o=noParamUrl(t).split("/files/")[1].split("/")[0],findPaperForProperty(r,"ihep",o,"pdfLink"));else if(e.plos){let e=t.split("?id=").last().split("&")[0];a=findPaperForProperty(r,"plos",miniHash(e))}else if(e.rsc){i=noParamUrl(t).replace("/unauth","").split("/").last();a=findPaperForProperty(r,"rsc",miniHash(i))}else if(e.mdpi){o=noParamUrl(t.split("mdpi.com/")[1].split("/pdf")[0].split("/reprints")[0].split("/notes")[0]);a=findPaperForProperty(r,"mdpi",miniHash(o))}else if(e.oup){t=noParamUrl(t).split("https://academic.oup.com/").last();i=(t=isPdfUrl(t)?t.split("/").slice(0,-1).join("/"):t).split("/").slice(2).join("");a=findPaperForProperty(r,"oup",miniHash(i))}else if(e.hal){o=(t=noParamUrl(t).replace(/(hal\.science\/\w+-\d+)(v\d+)?((\/document|\/file\/.+\.pdf))?/,"$1")).split("/").last();a=findPaperForProperty(r,"hal",miniHash(o))}else if(e.chemrxiv)chemRxivId=chemRxivId=isPdfUrl(t)?t.split("/item/")[1].split("/")[0]:noParamUrl(t).split("/").last(),a=findPaperForProperty(r,"chemrxiv",miniHash(chemRxivId));else if(e.cell)t=(await findCellPii(t)).url,a=findPaperForProperty(r,"cell",miniHash(t.split("cell.com/")[1]));else if(e.localFile)a=e.localFile;else{if(!e.parsedWebsite)throw new Error("`parseIdFromUrl` failed, unknown paper url. Is: "+JSON.stringify(e));a=e.parsedWebsite.id}return a},isKnownLocalFile=e=>{if(!e.startsWith("file://"))return!1;if(!e.endsWith(".pdf"))return!1;let t=decodeURIComponent(e).replace("file://","");var a=Object.entries(global.state.files).filter(([,e])=>e.filename===t);if(0({title:miniHash(e.title),id:e.id})).filter(e=>r.includes(e.title));return 0!==a.length&&a[0].id},makeMdLink=(e,t={})=>{var a=(t.checkPreferPdf?paperToPDF:paperToAbs)(e);let r="",i=(!t.checkMdYearVenue||(r=(r=e.note.match(/(.+)\s*@\s*([\w\s]+\(?\d{4}\)?)/i))&&r[2]?.replace(/\s+/g," ").replace(/[\(\)]/g,""))||(r="",e.venue&&(r+=e.venue+" "),r+=e.year),e.title);return`[${i=r?`${i} (${r.replace(/\s+/g," ")})`:i}](${a})`},duration=("undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={isPaper:isPaper,isSourceURL:isSourceURL,paperToAbs:paperToAbs,paperToPDF:paperToPDF,findLocalFile:findLocalFile,matchPapersToFiles:matchPapersToFiles,matchAllFilesToPapers:matchAllFilesToPapers,mergePapers:mergePapers,updatePaperVisits:updatePaperVisits,addOrUpdatePaper:addOrUpdatePaper,findPaperForProperty:findPaperForProperty,parseIdFromUrl:parseIdFromUrl,isKnownLocalFile:isKnownLocalFile,makeMdLink:makeMdLink}),e=>(Date.now()-e[0])/1e3),initState=async({papers:e,isContentScript:t,print:a=!0}={})=>{var r=[],i=(r.unshift(Date.now()),a&&consoleHeader("PaperMemory Init "+String.fromCodePoint("0x2705")),e||(e=await getStorage("papers")??{},a&&log("Time to retrieve stored papers (s): "+duration(r))),r.unshift(Date.now()),global.state.dataVersion=getManifestDataVersion(),a&&log("Time to parse data version (s): "+duration(r)),r.unshift(Date.now()),weeklyBackup(),a&&log("Time to backup papers (weekly) (s): "+duration(r)),r.unshift(Date.now()),await migrateData(e,global.state.dataVersion));a&&log("Time to migrate data (s): "+duration(r)),r.unshift(Date.now()),e=i.papers,global.state.papers=e,global.state.prefs=await getPrefs(),a&&log("Time to retrieve user preferences (s): "+duration(r)),r.unshift(Date.now()),global.state.ignoreSources=await getStorage("ignoreSources")??{},a&&log("Time to retrieve sources to ignore (s): "+duration(r)),r.unshift(Date.now()),global.state.urlHashToId=await getStorage("urlHashToId")??{},a&&log("Time to retrieve sources to urlHashToId (s): "+duration(r)),r.unshift(Date.now()),global.state.titleHashToIds=makeTitleHashToIdList(e),a&&log("Time to hash titles (s): "+duration(r)),r.unshift(Date.now()),t||(global.state.files=await matchAllFilesToPapers(),a&&log("Time to match all local files (s): "+duration(r)),r.unshift(Date.now()),global.state.papersList=Object.values(cleanPapers(e)),global.state.sortKey="lastOpenDate",global.state.papersReady=!0,sortMemory(),a&&log("Time to sort memory (s): "+duration(r)),r.unshift(Date.now()),makeTags(),a&&log("Time to make tags (s): "+duration(r)),r.unshift(Date.now())),info("State init duration (s): "+(Date.now()-r.last())/1e3),a&&console.groupEnd(),(async()=>{var e=chrome.runtime.getURL("src/data/cell.json"),e=await fetch(e).then(e=>e.json());global.state.cellJournalData=e})()},sortMemory=()=>{global.state.sortedPapers=Object.values(cleanPapers(global.state.papers)),global.state.sortedPapers.sort(orderPapers(0<=global.descendingSortKeys.indexOf(global.state.sortKey))),global.state.papersList.sort(orderPapers(0<=global.descendingSortKeys.indexOf(global.state.sortKey)))},orderPapers=i=>(e,t)=>{let a=e[global.state.sortKey],r=t[global.state.sortKey];return void 0===a&&(a=""),void 0===r&&(r=""),"string"==typeof a&&(a=a.toLowerCase(),r=r.toLowerCase()),i?a>r?-1:1:a>r?1:-1},makeTags=()=>{var e,t=new Set;for(e of global.state.sortedPapers)for(var a of e.tags)t.add(a);global.state.paperTags=[...t],global.state.paperTags.sort()},getExamplePaper=async e=>{var t=await getStorage("papers")??{},a=Object.keys(t).filter(e=>-1===e.indexOf("__")).reverse();let r=t[a[e=void 0===e?getRandomInt(a.length):e]];return r=void 0===r?{title:"Dummy title",author:"Cool Author and Great Author and Complicated Name Àuthor",year:2021,id:"NoneXiv-214324",bibtex:"@Nonesense{}",tags:["t1","t2"],note:"Thispaperdoesnotexist.com"}:r},stateTitleFunction=e=>{let t=e;return"string"==typeof e&&void 0===(t=global.state.papers[e])?(log("Error in stateTitleFunction: unknown id",e),"Unknown ID"):global.state.titleFunction(t).replaceAll("\n"," ").replace(/\s\s+/g," ")},updateDuplicatedUrls=(t,a,e=!1)=>{if(e){let e;if((e=t?[miniHash(t)]:Object.keys(global.state.urlHashToId).filter(e=>global.state.urlHashToId[e]===a))&&e.length){for(var r of e)warn("Removing duplicated url",t,"for",a),delete global.state.urlHashToId[r];setStorage("urlHashToId",global.state.urlHashToId)}}else global.state.urlHashToId[miniHash(t)]=a,setStorage("urlHashToId",global.state.urlHashToId)},addPaperToTitleHashToId=e=>{var t=e.id,e=miniHash(e.title);global.state.titleHashToIds.hasOwnProperty(e)||(global.state.titleHashToIds[e]=[]),global.state.titleHashToIds[e].includes(t)||global.state.titleHashToIds[e].push(t)},readJournalAbbreviations=async()=>{var e,t;global.journalAbbreviations||(e=chrome.runtime.getURL("src/data/iso4-journals.json"),e=await fetch(e).then(e=>e.json()),t=chrome.runtime.getURL("src/data/journal-abbreviations.json"),t=await fetch(t).then(e=>e.json()),global.journalAbbreviations=Object.fromEntries([...Object.entries(e),...Object.entries(t)].map(([e,t])=>[miniHash(e),t])))},downloadPaperPdf=async e=>{if(!global.state.papersReady)throw new Error("[PM] State is not ready (downloadPaperPdf)");let t=stateTitleFunction(e);t=(t=t.replaceAll(":"," ")).replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\/:;<=>?@\[\]^`{|}~]/g," ").replace(/\s+/g," "),global.state.prefs.checkStore&&(t="PaperMemoryStore/"+t,0===(await getStoredFiles()).length)&&chrome.downloads.download({url:URL.createObjectURL(new Blob([global.storeReadme])),filename:"PaperMemoryStore/IMPORTANT_README.txt",saveAs:!1}),(t=t.endsWith("pdf")?t.slice(0,-3)+".pdf":t).endsWith(".pdf")||(t+=".pdf"),log("Downloading paper",e,"to",t),chrome.downloads.download({url:paperToPDF(e),filename:t})},decodeHtml=("undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={duration:duration,initState:initState,sortMemory:sortMemory,orderPapers:orderPapers,makeTags:makeTags,getExamplePaper:getExamplePaper,stateTitleFunction:stateTitleFunction,updateDuplicatedUrls:updateDuplicatedUrls,addPaperToTitleHashToId:addPaperToTitleHashToId,readJournalAbbreviations:readJournalAbbreviations,downloadPaperPdf:downloadPaperPdf}),e=>{var t=document.createElement("textarea");return t.innerHTML=e,t.value}),flipAuthor=e=>e.split(", ").reverse().join(" "),flipAndAuthors=e=>e.split(" and ").map(flipAuthor).join(" and "),fetchArxivXML=async e=>{e=e.replace("Arxiv-","").replace("_","/");return fetch("https://export.arxiv.org/api/query?"+new URLSearchParams({id_list:e}))},fetchCvfHTML=async e=>{let t,a;var r;return t=e.endsWith(".pdf")?e.replace("/papers_backup/","/papers/").replace("/papers/","/html/").replace(".pdf",".html"):e,!(a=await fetch(t).then(e=>e.ok?e.text():""))&&t.includes("thecvf.com/content_")&&({conf:e,year:r}=parseCVFUrl(e),t=t.replace(`/content_${e}_${r}/`,`/content_${e.toLowerCase()}_${r}/`),a=await fetch(t).then(e=>e.ok?e.text():"")),a},getOpenReviewNoteJSON=e=>sendMessageToBackground({type:"OpenReviewNoteJSON",url:e}),getOpenReviewForumJSON=e=>sendMessageToBackground({type:"OpenReviewForumJSON",url:e}),fetchDom=async e=>{e=await fetch(e).then(e=>e.ok?e.text():"");return(new DOMParser).parseFromString(e.replaceAll("\n",""),"text/html")},fetchText=async e=>{try{var t=await fetch(e);return(t.ok?await t.text():"").trim()}catch(e){return logError("fetchText error:",e),""}},fetchJSON=async e=>{try{var t=await fetch(e),a=t.status;return{data:t.ok?await t.json():null,status:a}}catch(e){return logError("fetchJSON error:",e),{}}},fetchBibtex=async({url:e,doi:t})=>{let a;if(e&&t)throw new Error("fetchBibtex: both url and doi provided");if(t)a=await fetchText(`https://citation.doi.org/format?doi=${t}&style=bibtex&lang=en-US`);else{if(!e)throw new Error("fetchBibtex: no url or doi provided");a=await fetchText(e)}t=bibtexToObject(a);return delete t.abstract,a=bibtexToString(t),t.bibtex=a,t.key=t.citationKey,t.journal&&(t.venue=t.journal,t.note=`Published in ${t.journal} (${t.year})`),t},extractCrossrefData=e=>{if(e.status&&"ok"===e.status)if("work"!==e["message-type"])error("Unknown `message-type` from CrossRef",e);else{var t=e.message,a=(log("Crossref data.message: ",t),t.author.map(e=>e.given+" "+e.family).join(" and ")),r=t.issued?t.issued["date-parts"][0][0]+"":t.published?t.published["date-parts"][0][0]+"":null;if(r){var i,o,n,s=t.title[0];if(s)return i=t["container-title"][0]??"Springer",n=[miniHash(t.author[0].family),r.slice(2),firstNonStopLowercase(s)].join(""),o=t.DOI,n={entryType:"book"===t.type?"book":"book-chapter"===t.type?"InBook":t.type.includes("article")?"Article":"InProceedings",citationKey:n,publisher:t.publisher,author:a,title:s,year:r,doi:o},t.page&&(n.pages=t.page),t.volume&&(n.volume=t.volume),t.type.includes("journal")&&(n.journal=i),t.link&&0"application/pdf"===e["content-type"]))&&(n.pdf=a.URL),s=t.link.find(e=>"text/html"===e["content-type"])??t.link[0])&&(n.url=s.URL),r=bibtexToString(n),{...n,bibtex:r,venue:i};error("Cannot find title in CrossRef data",t)}else error("Cannot find year in CrossRef data",t)}else error("Cannot parse CrossRef response",e)},fetchCrossRefDataForDoi=async e=>{var{data:e,status:t}=await fetchJSON(`https://api.crossref.org/works/${e}?mailto=schmidtv%40mila.quebec`);return{data:extractCrossrefData(e),status:t}},fetchSemanticScholarDataForDoi=async e=>{var t,e=(await fetchJSON(`https://api.semanticscholar.org/graph/v1/paper/${e}?fields=venue,year,authors,title`)).data;let a;return e&&(a={},e.venue&&(a.venue=e.venue),e.year&&(a.year=e.year),e.authors&&(a.author=e.authors.map(e=>e.name).join(" and ")),e.title&&(a.title=e.title),e=""+miniHash(e.authors[0].name)+firstNonStopLowercase(a.title),t=bibtexToString({entryType:"article",citationKey:e,...a}),a.bibtex=t,a.key=e),a},getDCPatterns=e=>{let t=e.slice(3);var e=["dc.","DC:","DC.","dc:"].map(e=>e+t.toLowerCase()),a=["dc.","DC:","DC.","dc:"].map(e=>e+t.capitalize());return[...e,...a]},getMetaContent=({selector:a,dom:t,all:e=!1,pure:r=!1})=>{let i="";for(let[t,e]of Object.entries(a))/dc\W/.test(e.toLowerCase())?i+=getDCPatterns(e).map(e=>`meta[${t}='${e}']`).join(","):i+=`meta[${t}='${e}']`;if(e){let e=queryAll(i,t).map(e=>e.getAttribute("content")??"");return r?e:e.map(spaceCamelCase).map(toSingleSpace)}let o=t.querySelector(i)?.getAttribute("content")??"";return r?o:toSingleSpace(spaceCamelCase(o))},extractDataFromDCMetaTags=e=>{var t,a,r,i,o,n,s=getMetaContent({selector:{name:"dc.Creator"},dom:e,all:!0}).join(" and ")||getMetaContent({selector:{name:"citation_author"},dom:e,all:!0}).join(" and ");return s?(t=(getMetaContent({selector:{name:"dc.Date"},dom:e})||getMetaContent({selector:{name:"citation_publication_date"},dom:e})).split("-")[0].split("/")[0],a=getMetaContent({selector:{name:"dc.Publisher"},dom:e}).replaceAll("\n"," ")||getMetaContent({selector:{property:"og:site_name"},dom:e,pure:!0}),r=getMetaContent({selector:{name:"dc.Title"},dom:e})||getMetaContent({selector:{name:"citation_title"},dom:e}),i=getMetaContent({selector:{name:"citation_journal_title"},dom:e}),o=getMetaContent({selector:{name:"citation_pdf_url"},dom:e,pure:!0}),e=getMetaContent({selector:{scheme:"doi"},dom:e})||getMetaContent({selector:{name:"citation_doi"},dom:e}),n=(""+s.split(" and ")[0].split(" ").find((e,t)=>1<=t&&1{var e=arxivIdFromURL(e),t=await(await fetchArxivXML(e)).text(),t=(new DOMParser).parseFromString(t.replaceAll("\n",""),"text/xml"),a=queryAll("author name",t).map(e=>e.innerHTML),r=a.join(" and "),i=[...t.getElementsByTagName("link")].map(e=>e.getAttribute("href")).filter(e=>e.includes("arxiv.org/pdf/"))[0].replace(/v\d+(\.pdf)?$/gi,".pdf"),o=(o=t.querySelector("entry title"))?.textContent||o?.innerText||"",t=t.querySelector("entry published").innerHTML.slice(0,4),a=a[0].split(" ").last().toLowerCase()+t+firstNonStopLowercase(o),n="Arxiv-"+e.replace("/","_"),s="";return{author:r,bibtex:s+`@article{${a},
`+` title={${o} },
`+` author={${r} },
`+` year={${t}},
@@ -180,4 +180,4 @@ Fix the json file and try again.
year = {${i}},
url = {${t}},
note = {Accessed ${(new Date).toISOString().split("T")[0]}}
- }`;return{author:r,bibtex:bibtexToString(bibtexToObject(t)),id:o,key:e,note:n,pdfLink:s,title:a,venue:"",year:i}},makeMDPIPaper=async e=>{(e=(e=(e=noParamUrl(e)).split("/").last().startsWith("pdf")?e.split("/").slice(0,-1).join("/"):e).endsWith("/notes")?e.replace("/notes",""):e).endsWith("/reprints")&&(e=e.replace("/reprints",""));var t=await fetchDom(e),{author:t,year:a,title:r,venue:i,key:o,doi:n,bibtex:s,note:l,pdfLink:p}=extractDataFromDCMetaTags(t);return{author:t,bibtex:s,id:`MDPI-${a}_`+miniHash(e.split("mdpi.com/")[1]),key:o,note:l,pdfLink:p,title:r,venue:i,year:a,doi:n}},makeOUPPaper=async e=>{var t=(e=noParamUrl(e)).split("/").last(),t=await fetchText(`https://academic.oup.com/Citation/Download?resourceId=${t}&resourceType=3&citationFormat=2`),a=bibtexToObject(t),{title:a,year:r,author:i,journal:o,doi:n,citationKey:s,eprint:l}=(delete a.abstract,t=bibtexToString(a),a),i=flipAndAuthors(i),p=`Published @ ${o} (${r})`,c=e.split("https://academic.oup.com/")[1].split("/").slice(2).join("");return{author:i,bibtex:t,id:`OUP-${r}_`+miniHash(c),key:s,note:p,pdfLink:l?.replaceAll("\\","")??e,title:a,venue:o,year:r,doi:n}},makerHALPaper=async e=>{var t=(e=noParamUrl(e).replace(/(hal\.science\/\w+-\d+)(v\d+)?(\/document)?/,"$1")).split("/").last(),a=`https://hal.science/${t}/bibtex`,a=await fetchText(a),r=bibtexToObject(a),{title:i,year:o,journal:n,author:s,doi:l,pdf:p}=r,c=n?`Published @ ${n} (${o})`:"",r=r.citationKey;return{author:flipAndAuthors(s),bibtex:bibtexToString(a),id:`HAL-${o}_`+miniHash(t),key:r,note:c,pdfLink:p??e,title:i,venue:n,year:o,doi:l}},makeChemRxivPaper=async e=>{let t,a=e;isPdfUrl(e)?(t=e.split("/item/")[1].split("/")[0],a="https://chemrxiv.org/engage/chemrxiv/article-details/"+t):t=noParamUrl(e).split("/").last();var e=await fetchDom(a),{author:e,year:r,title:i,venue:o,key:n,doi:s,bibtex:l,pdfLink:p,note:c}=extractDataFromDCMetaTags(e);return{author:e,bibtex:l,id:`ChemRxiv-${r}_`+miniHash(t),key:n,note:c,pdfLink:p,title:i,venue:o,year:r,doi:s}},findCellPii=async e=>{var t=e.toLowerCase().includes("showpdf"),i=e.toLowerCase().includes("pdfextended");let o;if(t||i){i=global.state.cellJournalData;let a=(o=t?new URL(e).searchParams.get("pii"):e.split("/").last()).match(/\d{4}-\d{3}[0-9X]/g)[0],r;Object.entries(i).forEach(([e,t])=>{t.issn.includes(a)&&(r=e)});i=r.split(" ").map(e=>e.toLowerCase()).join("-");e=(e=t?noParamUrl(e).split("/showPdf")[0]+(`/${i}/fulltext/`+o):noParamUrl(e).split("/pdfExtended")[0]+("/fulltext/"+o)).replace("/action/","/")}else o=noParamUrl(e).split("/").last();return{pii:o,url:e}},makeCellPaper=async e=>{({pii:t,url:e}=await findCellPii(e));var t="https://www.cell.com/action/showPdf?pii="+t,a=(await fetchDom(e)).head.querySelector('meta[name="citation_doi"]').getAttribute("content"),{author:r,year:i,title:o,venue:n,bibtex:s,note:l,citationKey:p}=await fetchBibtex({doi:a});return{author:r,bibtex:s,id:`Cell-${i}_`+miniHash(e.split("cell.com/")[1]),key:p,note:l,pdfLink:t,title:o,venue:n,year:i,doi:a}},tryPWCMatch=async e=>{let t;var a={type:"papersWithCode",pwcPrefs:await getStorage("pwcPrefs")??{},paper:e},{url:a,note:r,venue:i,pubYear:o}=await sendMessageToBackground(a)??{};return a&&!e.codeLink?log("[PapersWithCode] Discovered a code repository:",a):log("[PapersWithCode] No code repository found"),i&&!e.venue?(log("[PapersWithCode] Found a publication venue:",i),e=bibtexToObject(e.bibtex),t=bibtexToString({...e,year:o,journal:i})):log("[PapersWithCode] No publication found"),{codeLink:a,note:r,venue:i,bibtex:t}},tryCrossRef=async(e,t)=>{if(t)return sendMessageToBackground({type:"try-cross-ref",paper:e});try{var a="https://api.crossref.org/works?rows=1&mailto=schmidtv%40mila.quebec&select=event%2Ctitle&query.title="+encodeURI(e.title),r=await fetch(a).then(e=>e.json());if("ok"!==r.status)return log(`[Crossref] ${a} returned `+r.message.status),{};if(0===r.message.items.length)return{};if(r.message.items[0].title[0]?.toLowerCase().replaceAll("\n"," ").replaceAll(/\s\s+/g," ")!==e.title.toLowerCase().replaceAll("\n"," ").replaceAll(/\s\s+/g," "))return{};if(!r.message.items[0].event||!r.message.items[0].event.name)return{};info("Found a CrossRef match");var i=r.message.items[0].event.name.trim();return{venue:i,note:`Accepted @ ${i} -- [crossref.org]`}}catch(e){return logError("[Crossref]",e),{}}},tryDBLP=async(e,t)=>{if(t)return sendMessageToBackground({type:"try-dblp",paper:e});try{var a=encodeURI(e.title),r=await fetch(`https://dblp.org/search/publ/api?q=${a}&format=json`);if(429===r.status)return{status:429};var i,o,n,s,l,p=await r.json();if(p.result&&p.result.hits&&p.result.hits.hit&&p.result.hits.hit.length)for(i of p.result.hits.hit.sort((e,t)=>parseInt(e.info.year,10)-parseInt(t.info.year,10)))if(decodeHtml(i.info.title?.toLowerCase().replaceAll("\n"," ").replaceAll(".","").replaceAll(/\s\s+/g," "))===e.title.toLowerCase().replaceAll("\n"," ").replaceAll(".","").replaceAll(/\s\s+/g," ")&&"CoRR"!==i.info.venue)return info("Found a DBLP match"),o=await fetchText(i.info.url+".bib"),n=miniHash(i.info.venue),await readJournalAbbreviations(),s=(global.journalAbbreviations[n]??i.info.venue).trim(),l=i.info.year,i.info.url,{venue:s,note:`Accepted @ ${s} ${l} -- [dblp.org]`,bibtex:o};return{}}catch(e){return logError("[DBLP]",e),{}}},trySemanticScholar=async(t,e)=>{if(e)return sendMessageToBackground({type:"try-semantic-scholar",paper:t});try{var{data:a,status:r}=await fetchJSON(`https://api.semanticscholar.org/graph/v1/paper/search?query=${encodeURI(t.title)}&fields=title,venue,year,authors,externalIds,url&limit=5`);if(a&&a.data&&0e.name).join(" and "),l=i.externalIds.DOI,p=bibtexToString({entryType:"article",citationKey:miniHash(i.authors[0].name.split(" ").last())+o+firstNonStopLowercase(t.title),title:t.title,author:s,journal:e,year:o,doi:l,bibSource:"Semantic Scholar "+i.url});return{venue:e,note:n,bibtex:p,status:r}}return{status:r}}catch(e){logError("[SemanticScholar]",e)}return{status:404}},tryGoogleScholar=async e=>{e=await sendMessageToBackground({type:"google-scholar",paper:e});return e.note&&info("Found a Google Scholar match",e.note),e},tryUnpaywall=async(t,e)=>{if(e)return sendMessageToBackground({type:"try-unpaywall",paper:t});var e=`https://api.unpaywall.org/v2/search?query=${encodeURI(t.title)}&is_oa=true&email=papermemory+${parseInt(1e3*Math.random())}@gmail.com`,{data:e,status:a}=await fetchJSON(e);if(e&&200===a){var r,e=e.results?.find(e=>miniHash(e.response.title)===miniHash(t.title));if(e&&e.journal_name)return{venue:r=e.journal_name,note:`Accepted @ ${r} (${e.year}) -- [unpaywall.org]`,doi:e.doi}}return{status:a}},tryPreprintMatch=async(e,t=!1)=>{let a,r,i,o,n;var s,l,p={},c=["GoogleScholar","SemanticScholar","CrossRef","DBLP","Unpaywall"],d=[silentPromiseTimeout(tryGoogleScholar(e)),silentPromiseTimeout(trySemanticScholar(e,!0)),silentPromiseTimeout(tryCrossRef(e)),silentPromiseTimeout(tryDBLP(e)),silentPromiseTimeout(tryUnpaywall(e))];t&&(d.push(silentPromiseTimeout(tryPWCMatch(e))),c.push("PapersWithCode"));for([s,l]of Object.entries(c)){if(p[l]=await d[s],{note:a,venue:r,bibtex:i,doi:n}=p[l]??{},a)break;log(`[${l}] No publication found`)}return t&&(p.hasOwnProperty(c="PapersWithCode")||(p[c]=await d[c]),p[c].codeLink)&&!e.codeLink&&(o=p[c].codeLink),{note:a,venue:r,bibtex:i,code:o,doi:n}},initPaper=async e=>{for(var t in e.note||(e.note=""),e.md=`[${e.title}](${e.pdfLink})`,e.tags=[],e.codeLink=e.codeLink??"",e.favorite=!1,e.favoriteDate="",e.addDate=(new Date).toJSON(),e.lastOpenDate=e.addDate,e.count=1,e.code={},e.doi=e.doi??bibtexToObject(e.bibtex).doi??"",e)e.hasOwnProperty(t)&&"string"==typeof e[t]&&(e[t]=e[t].trim());return e=await autoTagPaper(e),validatePaper(e),e},autoTagPaper=async a=>{try{var e,r,i=await getStorage("autoTags");if(i&&i.length){let t=new Set;for(var o of i)o.tags?.length&&(o.title||o.author)&&(e=!o.title||new RegExp(o.title,"i").test(a.title),r=!o.author||new RegExp(o.author,"i").test(a.author),e)&&r&&o.tags.forEach(e=>t.add(e));a.tags=[...t].sort(),a.tags.length&&log("Automatically adding tags:",a.tags)}return a}catch(e){return log("Error auto-tagging:",e),log("Paper:",a),a}},makePaper=async(e,t,a=!1)=>{let r;var i=performance.now();if(info("Making paper..."),a)(r=await makeWebsitePaper(a))&&(r.source="website");else if(e.arxiv)(r=await makeArxivPaper(t))&&(r.source="arxiv");else if(e.neurips)(r=await makeNeuripsPaper(t))&&(r.source="neurips");else if(e.cvf)(r=await makeCVFPaper(t))&&(r.source="cvf");else if(e.openreview)(r=await makeOpenReviewPaper(t))&&(r.source="openreview");else if(e.biorxiv)(r=await makeBioRxivPaper(t))&&(r.source="biorxiv");else if(e.pmlr)(r=await makePMLRPaper(t))&&(r.source="pmlr");else if(e.acl)(r=await makeACLPaper(t))&&(r.source="acl");else if(e.pnas)(r=await makePNASPaper(t))&&(r.source="pnas");else if(e.nature)(r=await makeNaturePaper(t))&&(r.source="nature");else if(e.acs)(r=await makeACSPaper(t))&&(r.source="acs");else if(e.iop)(r=await makeIOPPaper(t))&&(r.source="iop");else if(e.jmlr)(r=await makeJMLRPaper(t))&&(r.source="jmlr");else if(e.pmc)(r=await makePMCPaper(t))&&(r.source="pmc");else if(e.ijcai)(r=await makeIJCAIPaper(t))&&(r.source="ijcai");else if(e.acm)(r=await makeACMPaper(t))&&(r.source="acm");else if(e.ieee)(r=await makeIEEEPaper(t))&&(r.source="ieee");else if(e.springer)(r=await makeSpringerPaper(t))&&(r.source="springer");else if(e.aps)(r=await makeAPSPaper(t))&&(r.source="aps");else if(e.wiley)(r=await makeWileyPaper(t))&&(r.source="wiley");else if(e.sciencedirect)(r=await makeScienceDirectPaper(t))&&(r.source="sciencedirect");else if(e.science)(r=await makeSciencePaper(t))&&(r.source="science");else if(e.frontiers)(r=await makeFrontiersPaper(t))&&(r.source="frontiers");else if(e.ihep)(r=await makeIHEPPaper(t))&&(r.source="ihep");else if(e.plos)(r=await makePLOSPaper(t))&&(r.source="plos");else if(e.rsc)(r=await makeRSCPaper(t))&&(r.source="rsc");else if(e.mdpi)(r=await makeMDPIPaper(t))&&(r.source="mdpi");else if(e.oup)(r=await makeOUPPaper(t))&&(r.source="oup");else if(e.hal)(r=await makerHALPaper(t))&&(r.source="hal");else if(e.chemrxiv)(r=await makeChemRxivPaper(t))&&(r.source="chemrxiv");else{if(!e.cell)throw console.error({is:e,url:t}),new Error("Could not parse paper (in `makePaper`). Unknown paper source, see above.");(r=await makeCellPaper(t))&&(r.source="cell")}if(void 0!==r)return a=(performance.now()-i)/1e3,info(`Paper parsed in ${a.toFixed(2)}s`),initPaper(r)},findFuzzyPaperMatch=(e,t)=>{t=miniHash(t.title);return e.hasOwnProperty(t)?(e=e[t]).find(t=>!global.preprintSources.some(e=>t.toLowerCase().startsWith(e)))||e[0]:null};"undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={decodeHtml:decodeHtml,flipAuthor:flipAuthor,flipAndAuthors:flipAndAuthors,fetchArxivXML:fetchArxivXML,fetchCvfHTML:fetchCvfHTML,getOpenReviewNoteJSON:getOpenReviewNoteJSON,getOpenReviewForumJSON:getOpenReviewForumJSON,fetchDom:fetchDom,fetchText:fetchText,fetchJSON:fetchJSON,fetchBibtex:fetchBibtex,extractCrossrefData:extractCrossrefData,fetchCrossRefDataForDoi:fetchCrossRefDataForDoi,fetchSemanticScholarDataForDoi:fetchSemanticScholarDataForDoi,getMetaContent:getMetaContent,extractDataFromDCMetaTags:extractDataFromDCMetaTags,makeArxivPaper:makeArxivPaper,makeNeuripsPaper:makeNeuripsPaper,makeCVFPaper:makeCVFPaper,makeOpenReviewBibTex:makeOpenReviewBibTex,extractAPIv2ContentValue:extractAPIv2ContentValue,makeOpenReviewPaper:makeOpenReviewPaper,makeBioRxivPaper:makeBioRxivPaper,makePMLRPaper:makePMLRPaper,findACLValue:findACLValue,makeACLPaper:makeACLPaper,makePNASPaper:makePNASPaper,makeNaturePaper:makeNaturePaper,makeACSPaper:makeACSPaper,makeIOPPaper:makeIOPPaper,makeJMLRPaper:makeJMLRPaper,makePMCPaper:makePMCPaper,makePubMedPaper:makePubMedPaper,makeIJCAIPaper:makeIJCAIPaper,makeACMPaper:makeACMPaper,makeIEEEPaper:makeIEEEPaper,makeSpringerPaper:makeSpringerPaper,makeAPSPaper:makeAPSPaper,makeWileyPaper:makeWileyPaper,makeScienceDirectPaper:makeScienceDirectPaper,makeSciencePaper:makeSciencePaper,makeFrontiersPaper:makeFrontiersPaper,makeIHEPPaper:makeIHEPPaper,makePLOSPaper:makePLOSPaper,makeRSCPaper:makeRSCPaper,makeWebsitePaper:makeWebsitePaper,makeMDPIPaper:makeMDPIPaper,makeOUPPaper:makeOUPPaper,makerHALPaper:makerHALPaper,tryPWCMatch:tryPWCMatch,tryCrossRef:tryCrossRef,tryDBLP:tryDBLP,trySemanticScholar:trySemanticScholar,tryGoogleScholar:tryGoogleScholar,tryUnpaywall:tryUnpaywall,tryPreprintMatch:tryPreprintMatch,initPaper:initPaper,autoTagPaper:autoTagPaper,makePaper:makePaper,findFuzzyPaperMatch:findFuzzyPaperMatch});
\ No newline at end of file
+ }`;return{author:r,bibtex:bibtexToString(bibtexToObject(t)),id:o,key:e,note:n,pdfLink:s,title:a,venue:"",year:i}},makeMDPIPaper=async e=>{(e=(e=(e=noParamUrl(e)).split("/").last().startsWith("pdf")?e.split("/").slice(0,-1).join("/"):e).endsWith("/notes")?e.replace("/notes",""):e).endsWith("/reprints")&&(e=e.replace("/reprints",""));var t=await fetchDom(e),{author:t,year:a,title:r,venue:i,key:o,doi:n,bibtex:s,note:l,pdfLink:p}=extractDataFromDCMetaTags(t);return{author:t,bibtex:s,id:`MDPI-${a}_`+miniHash(e.split("mdpi.com/")[1]),key:o,note:l,pdfLink:p,title:r,venue:i,year:a,doi:n}},makeOUPPaper=async e=>{var t=(e=noParamUrl(e)).split("/").last(),t=await fetchText(`https://academic.oup.com/Citation/Download?resourceId=${t}&resourceType=3&citationFormat=2`),a=bibtexToObject(t),{title:a,year:r,author:i,journal:o,doi:n,citationKey:s,eprint:l}=(delete a.abstract,t=bibtexToString(a),a),i=flipAndAuthors(i),p=`Published @ ${o} (${r})`,c=e.split("https://academic.oup.com/")[1].split("/").slice(2).join("");return{author:i,bibtex:t,id:`OUP-${r}_`+miniHash(c),key:s,note:p,pdfLink:l?.replaceAll("\\","")??e,title:a,venue:o,year:r,doi:n}},makerHALPaper=async e=>{var t=(e=noParamUrl(e).replace(/(hal\.science\/\w+-\d+)(v\d+)?(\/document)?/,"$1")).split("/").last(),a=`https://hal.science/${t}/bibtex`,a=await fetchText(a),r=bibtexToObject(a),{title:i,year:o,journal:n,author:s,doi:l,pdf:p}=r,c=n?`Published @ ${n} (${o})`:"",r=r.citationKey;return{author:flipAndAuthors(s),bibtex:bibtexToString(a),id:`HAL-${o}_`+miniHash(t),key:r,note:c,pdfLink:p??e,title:i,venue:n,year:o,doi:l}},makeChemRxivPaper=async e=>{let t,a=e;isPdfUrl(e)?(t=e.split("/item/")[1].split("/")[0],a="https://chemrxiv.org/engage/chemrxiv/article-details/"+t):t=noParamUrl(e).split("/").last();var e=await fetchDom(a),{author:e,year:r,title:i,venue:o,key:n,doi:s,bibtex:l,pdfLink:p,note:c}=extractDataFromDCMetaTags(e);return{author:e,bibtex:l,id:`ChemRxiv-${r}_`+miniHash(t),key:n,note:c,pdfLink:p,title:i,venue:o,year:r,doi:s}},findCellPii=async e=>{var t=e.toLowerCase().includes("showpdf"),i=e.toLowerCase().includes("pdfextended");let o;if(t||i){for(;!global.state.cellJournalData;)console.log("Waiting for cell journal data..."),await sleep(5);i=global.state.cellJournalData;let a=(o=t?new URL(e).searchParams.get("pii"):e.split("/").last()).match(/\d{4}-\d{3}[0-9X]/g)[0],r;Object.entries(i).forEach(([e,t])=>{t.issn.includes(a)&&(r=e)});i=r.split(" ").map(e=>e.toLowerCase()).join("-");e=(e=t?noParamUrl(e).split("/showPdf")[0]+(`/${i}/fulltext/`+o):noParamUrl(e).split("/pdfExtended")[0]+("/fulltext/"+o)).replace("/action/","/")}else o=noParamUrl(e).split("/").last();return{pii:o,url:e}},makeCellPaper=async e=>{({pii:t,url:e}=await findCellPii(e));var t="https://www.cell.com/action/showPdf?pii="+t,a=(await fetchDom(e)).head.querySelector('meta[name="citation_doi"]').getAttribute("content"),{author:r,year:i,title:o,venue:n,bibtex:s,note:l,citationKey:p}=await fetchBibtex({doi:a});return{author:r,bibtex:s,id:`Cell-${i}_`+miniHash(e.split("cell.com/")[1]),key:p,note:l,pdfLink:t,title:o,venue:n,year:i,doi:a}},tryPWCMatch=async e=>{let t;var a={type:"papersWithCode",pwcPrefs:await getStorage("pwcPrefs")??{},paper:e},{url:a,note:r,venue:i,pubYear:o}=await sendMessageToBackground(a)??{};return a&&!e.codeLink?log("[PapersWithCode] Discovered a code repository:",a):log("[PapersWithCode] No code repository found"),i&&!e.venue?(log("[PapersWithCode] Found a publication venue:",i),e=bibtexToObject(e.bibtex),t=bibtexToString({...e,year:o,journal:i})):log("[PapersWithCode] No publication found"),{codeLink:a,note:r,venue:i,bibtex:t}},tryCrossRef=async(e,t)=>{if(t)return sendMessageToBackground({type:"try-cross-ref",paper:e});try{var a="https://api.crossref.org/works?rows=1&mailto=schmidtv%40mila.quebec&select=event%2Ctitle&query.title="+encodeURI(e.title),r=await fetch(a).then(e=>e.json());if("ok"!==r.status)return log(`[Crossref] ${a} returned `+r.message.status),{};if(0===r.message.items.length)return{};if(r.message.items[0].title[0]?.toLowerCase().replaceAll("\n"," ").replaceAll(/\s\s+/g," ")!==e.title.toLowerCase().replaceAll("\n"," ").replaceAll(/\s\s+/g," "))return{};if(!r.message.items[0].event||!r.message.items[0].event.name)return{};info("Found a CrossRef match");var i=r.message.items[0].event.name.trim();return{venue:i,note:`Accepted @ ${i} -- [crossref.org]`}}catch(e){return logError("[Crossref]",e),{}}},tryDBLP=async(e,t)=>{if(t)return sendMessageToBackground({type:"try-dblp",paper:e});try{var a=encodeURI(e.title),r=await fetch(`https://dblp.org/search/publ/api?q=${a}&format=json`);if(429===r.status)return{status:429};var i,o,n,s,l,p=await r.json();if(p.result&&p.result.hits&&p.result.hits.hit&&p.result.hits.hit.length)for(i of p.result.hits.hit.sort((e,t)=>parseInt(e.info.year,10)-parseInt(t.info.year,10)))if(decodeHtml(i.info.title?.toLowerCase().replaceAll("\n"," ").replaceAll(".","").replaceAll(/\s\s+/g," "))===e.title.toLowerCase().replaceAll("\n"," ").replaceAll(".","").replaceAll(/\s\s+/g," ")&&"CoRR"!==i.info.venue)return info("Found a DBLP match"),o=await fetchText(i.info.url+".bib"),n=miniHash(i.info.venue),await readJournalAbbreviations(),s=(global.journalAbbreviations[n]??i.info.venue).trim(),l=i.info.year,i.info.url,{venue:s,note:`Accepted @ ${s} ${l} -- [dblp.org]`,bibtex:o};return{}}catch(e){return logError("[DBLP]",e),{}}},trySemanticScholar=async(t,e)=>{if(e)return sendMessageToBackground({type:"try-semantic-scholar",paper:t});try{var{data:a,status:r}=await fetchJSON(`https://api.semanticscholar.org/graph/v1/paper/search?query=${encodeURI(t.title)}&fields=title,venue,year,authors,externalIds,url&limit=5`);if(a&&a.data&&0e.name).join(" and "),l=i.externalIds.DOI,p=bibtexToString({entryType:"article",citationKey:miniHash(i.authors[0].name.split(" ").last())+o+firstNonStopLowercase(t.title),title:t.title,author:s,journal:e,year:o,doi:l,bibSource:"Semantic Scholar "+i.url});return{venue:e,note:n,bibtex:p,status:r}}return{status:r}}catch(e){logError("[SemanticScholar]",e)}return{status:404}},tryGoogleScholar=async e=>{e=await sendMessageToBackground({type:"google-scholar",paper:e});return e.note&&info("Found a Google Scholar match",e.note),e},tryUnpaywall=async(t,e)=>{if(e)return sendMessageToBackground({type:"try-unpaywall",paper:t});var e=`https://api.unpaywall.org/v2/search?query=${encodeURI(t.title)}&is_oa=true&email=papermemory+${parseInt(1e3*Math.random())}@gmail.com`,{data:e,status:a}=await fetchJSON(e);if(e&&200===a){var r,e=e.results?.find(e=>miniHash(e.response.title)===miniHash(t.title));if(e&&e.journal_name)return{venue:r=e.journal_name,note:`Accepted @ ${r} (${e.year}) -- [unpaywall.org]`,doi:e.doi}}return{status:a}},tryPreprintMatch=async(e,t=!1)=>{let a,r,i,o,n;var s,l,p={},c=["GoogleScholar","SemanticScholar","CrossRef","DBLP","Unpaywall"],d=[silentPromiseTimeout(tryGoogleScholar(e)),silentPromiseTimeout(trySemanticScholar(e,!0)),silentPromiseTimeout(tryCrossRef(e)),silentPromiseTimeout(tryDBLP(e)),silentPromiseTimeout(tryUnpaywall(e))];t&&(d.push(silentPromiseTimeout(tryPWCMatch(e))),c.push("PapersWithCode"));for([s,l]of Object.entries(c)){if(p[l]=await d[s],{note:a,venue:r,bibtex:i,doi:n}=p[l]??{},a)break;log(`[${l}] No publication found`)}return t&&(p.hasOwnProperty(c="PapersWithCode")||(p[c]=await silentPromiseTimeout(d[c])),p[c].codeLink)&&!e.codeLink&&(o=p[c].codeLink),{note:a,venue:r,bibtex:i,code:o,doi:n}},initPaper=async e=>{for(var t in e.note||(e.note=""),e.md=`[${e.title}](${e.pdfLink})`,e.tags=[],e.codeLink=e.codeLink??"",e.favorite=!1,e.favoriteDate="",e.addDate=(new Date).toJSON(),e.lastOpenDate=e.addDate,e.count=1,e.code={},e.doi=e.doi??bibtexToObject(e.bibtex).doi??"",e)e.hasOwnProperty(t)&&"string"==typeof e[t]&&(e[t]=e[t].trim());return e=await autoTagPaper(e),validatePaper(e),e},autoTagPaper=async a=>{try{var e,r,i=await getStorage("autoTags");if(i&&i.length){let t=new Set;for(var o of i)o.tags?.length&&(o.title||o.author)&&(e=!o.title||new RegExp(o.title,"i").test(a.title),r=!o.author||new RegExp(o.author,"i").test(a.author),e)&&r&&o.tags.forEach(e=>t.add(e));a.tags=[...t].sort(),a.tags.length&&log("Automatically adding tags:",a.tags)}return a}catch(e){return log("Error auto-tagging:",e),log("Paper:",a),a}},makePaper=async(e,t,a=!1)=>{let r;var i=performance.now();if(info("Making paper..."),a)(r=await makeWebsitePaper(a))&&(r.source="website");else if(e.arxiv)(r=await makeArxivPaper(t))&&(r.source="arxiv");else if(e.neurips)(r=await makeNeuripsPaper(t))&&(r.source="neurips");else if(e.cvf)(r=await makeCVFPaper(t))&&(r.source="cvf");else if(e.openreview)(r=await makeOpenReviewPaper(t))&&(r.source="openreview");else if(e.biorxiv)(r=await makeBioRxivPaper(t))&&(r.source="biorxiv");else if(e.pmlr)(r=await makePMLRPaper(t))&&(r.source="pmlr");else if(e.acl)(r=await makeACLPaper(t))&&(r.source="acl");else if(e.pnas)(r=await makePNASPaper(t))&&(r.source="pnas");else if(e.nature)(r=await makeNaturePaper(t))&&(r.source="nature");else if(e.acs)(r=await makeACSPaper(t))&&(r.source="acs");else if(e.iop)(r=await makeIOPPaper(t))&&(r.source="iop");else if(e.jmlr)(r=await makeJMLRPaper(t))&&(r.source="jmlr");else if(e.pmc)(r=await makePMCPaper(t))&&(r.source="pmc");else if(e.ijcai)(r=await makeIJCAIPaper(t))&&(r.source="ijcai");else if(e.acm)(r=await makeACMPaper(t))&&(r.source="acm");else if(e.ieee)(r=await makeIEEEPaper(t))&&(r.source="ieee");else if(e.springer)(r=await makeSpringerPaper(t))&&(r.source="springer");else if(e.aps)(r=await makeAPSPaper(t))&&(r.source="aps");else if(e.wiley)(r=await makeWileyPaper(t))&&(r.source="wiley");else if(e.sciencedirect)(r=await makeScienceDirectPaper(t))&&(r.source="sciencedirect");else if(e.science)(r=await makeSciencePaper(t))&&(r.source="science");else if(e.frontiers)(r=await makeFrontiersPaper(t))&&(r.source="frontiers");else if(e.ihep)(r=await makeIHEPPaper(t))&&(r.source="ihep");else if(e.plos)(r=await makePLOSPaper(t))&&(r.source="plos");else if(e.rsc)(r=await makeRSCPaper(t))&&(r.source="rsc");else if(e.mdpi)(r=await makeMDPIPaper(t))&&(r.source="mdpi");else if(e.oup)(r=await makeOUPPaper(t))&&(r.source="oup");else if(e.hal)(r=await makerHALPaper(t))&&(r.source="hal");else if(e.chemrxiv)(r=await makeChemRxivPaper(t))&&(r.source="chemrxiv");else{if(!e.cell)throw console.error({is:e,url:t}),new Error("Could not parse paper (in `makePaper`). Unknown paper source, see above.");(r=await makeCellPaper(t))&&(r.source="cell")}if(void 0!==r)return a=(performance.now()-i)/1e3,info(`Paper parsed in ${a.toFixed(2)}s`),initPaper(r)},findFuzzyPaperMatch=(e,t)=>{t=miniHash(t.title);return e.hasOwnProperty(t)?(e=e[t]).find(t=>!global.preprintSources.some(e=>t.toLowerCase().startsWith(e)))||e[0]:null};"undefined"!=typeof module&&null!=module.exports&&((dummyModule=module).exports={decodeHtml:decodeHtml,flipAuthor:flipAuthor,flipAndAuthors:flipAndAuthors,fetchArxivXML:fetchArxivXML,fetchCvfHTML:fetchCvfHTML,getOpenReviewNoteJSON:getOpenReviewNoteJSON,getOpenReviewForumJSON:getOpenReviewForumJSON,fetchDom:fetchDom,fetchText:fetchText,fetchJSON:fetchJSON,fetchBibtex:fetchBibtex,extractCrossrefData:extractCrossrefData,fetchCrossRefDataForDoi:fetchCrossRefDataForDoi,fetchSemanticScholarDataForDoi:fetchSemanticScholarDataForDoi,getMetaContent:getMetaContent,extractDataFromDCMetaTags:extractDataFromDCMetaTags,makeArxivPaper:makeArxivPaper,makeNeuripsPaper:makeNeuripsPaper,makeCVFPaper:makeCVFPaper,makeOpenReviewBibTex:makeOpenReviewBibTex,extractAPIv2ContentValue:extractAPIv2ContentValue,makeOpenReviewPaper:makeOpenReviewPaper,makeBioRxivPaper:makeBioRxivPaper,makePMLRPaper:makePMLRPaper,findACLValue:findACLValue,makeACLPaper:makeACLPaper,makePNASPaper:makePNASPaper,makeNaturePaper:makeNaturePaper,makeACSPaper:makeACSPaper,makeIOPPaper:makeIOPPaper,makeJMLRPaper:makeJMLRPaper,makePMCPaper:makePMCPaper,makePubMedPaper:makePubMedPaper,makeIJCAIPaper:makeIJCAIPaper,makeACMPaper:makeACMPaper,makeIEEEPaper:makeIEEEPaper,makeSpringerPaper:makeSpringerPaper,makeAPSPaper:makeAPSPaper,makeWileyPaper:makeWileyPaper,makeScienceDirectPaper:makeScienceDirectPaper,makeSciencePaper:makeSciencePaper,makeFrontiersPaper:makeFrontiersPaper,makeIHEPPaper:makeIHEPPaper,makePLOSPaper:makePLOSPaper,makeRSCPaper:makeRSCPaper,makeWebsitePaper:makeWebsitePaper,makeMDPIPaper:makeMDPIPaper,makeOUPPaper:makeOUPPaper,makerHALPaper:makerHALPaper,tryPWCMatch:tryPWCMatch,tryCrossRef:tryCrossRef,tryDBLP:tryDBLP,trySemanticScholar:trySemanticScholar,tryGoogleScholar:tryGoogleScholar,tryUnpaywall:tryUnpaywall,tryPreprintMatch:tryPreprintMatch,initPaper:initPaper,autoTagPaper:autoTagPaper,makePaper:makePaper,findFuzzyPaperMatch:findFuzzyPaperMatch});
\ No newline at end of file