"}),r=function(e){
-return He.add(He("ul",i),e),i.hidden=!1};for(a in Re.warnings){(0,Re.warnings[a])(r)}He.add(o,i);const s=m(),l=m(),d=function(e,n){const o=[e];return(()=>{const e=[];for(a in n){var i=n[a];if(i instanceof Array){var r=i[1],d=He.el("div",{innerHTML:`: ${r}`});d.dataset.name=a;var c=He("input",d);He.on(c,"change",He.cb.checked),He.on(c,"change",(function(){return this.parentNode.parentNode.dataset.checked=this.checked})),s[a]=t[a],l[a]=c;var h=i[2]||0;if(o.length<=h){var u=He.el("div",{className:"suboption-list"});He.add(o[o.length-1].lastElementChild,u),o[h]=u}else o.length>h+1&&o.splice(h+1,o.length-(h+1));e.push(He.add(o[h],d))}}return e})()};for(var h in c.main){var u=c.main[h],p=He.el("fieldset",{innerHTML:``});d(p,u),"Posting and Captchas"===h&&He.add(p,He.el("p",{
-innerHTML:'For more info on captcha options and issues, see the captcha FAQ.'})),He.add(o,p)}d(He('div[data-name="JSON Index"] > .suboption-list',o),c.Index),"gecko"!==He.engine&&(He('div[data-name="Remember QR Size"]',o).hidden=!0),(He.perProtocolSettings||"https:"!==location.protocol)&&(He('div[data-name="Redirect to HTTPS"]',o).hidden=!0),"crx"!==x&&(He('div[data-name="Work around CORB Bug"]',o).hidden=!0),He.get(s,(function(e){for(a in e){var t=e[a];l[a].checked=t,l[a].parentNode.parentNode.dataset.checked=t}}));const g=He.el("div",{innerHTML:': Clear manually-hidden threads and posts on all boards. Reload the page to apply.'}),f=He("button",g);return He.get({hiddenThreads:m(),hiddenPosts:m()},(function({hiddenThreads:e,hiddenPosts:t}){let n,o,a,i,r=0;for(o in e)if(a=e[o],"boards"!==o)for(o in a.boards)n=a.boards[o],r+=Object.keys(n).length;for(o in e.boards)n=e.boards[o],
-r+=Object.keys(n).length;for(o in t)if(a=t[o],"boards"!==o)for(o in a.boards)for(o in n=a.boards[o],n)i=n[o],r+=Object.keys(i).length;for(o in t.boards)for(o in n=t.boards[o],n)i=n[o],r+=Object.keys(i).length;return f.textContent=`Hidden: ${r}`})),He.on(f,"click",(function(){return this.textContent="Hidden: 0",He.get("hiddenThreads",m(),(function({hiddenThreads:e}){if(He.hasStorage&&"yotsuba"===n.SITE.software){let t;for(t in e["4chan.org"]?.boards)localStorage.removeItem(`4chan-hide-t-${t}`);for(t in e.boards)localStorage.removeItem(`4chan-hide-t-${t}`)}return He.delete(["hiddenThreads","hiddenPosts"])}))})),He.after(He('input[name="Stubs"]',o).parentNode.parentNode,g)},export(){const e=m();return He.extend(e,t),He.get(e,(function(e){return delete e.boardConfig,Re.downloadExport({version:n.VERSION,date:Date.now(),Conf:e})}))},downloadExport(t){const o=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),a=URL.createObjectURL(o),i=He.el("a",{
-download:`${e.name} v${n.VERSION}-${t.date}.json`,href:a}),r=He(".imp-exp-result",Re.dialog);return He.rmAll(r),He.add(r,i),i.click()},import(){return He("input[type=file]",this.parentNode).click()},onImport(){let e;if(!(e=this.files[0]))return;this.value=null;const t=He(".imp-exp-result");if(!confirm("Your current settings will be entirely overwritten, are you sure?"))return void(t.textContent="Import aborted.");const n=new FileReader;return n.onload=function(e){try{return Re.loadSettings(m.json(e.target.result),(function(e){return e?t.textContent="Import failed due to an error.":confirm("Import successful. Reload now?")?window.location.reload():void 0}))}catch(e){const n=e;return t.textContent="Import failed due to an error.",r.error(n.stack)}},n.readAsText(e)},convertFrom:{loadletter(e){for(var t in"Always CDN"in(e=function(e,t){for(var n in t){var o=t[n];o&&(e.Conf[o]=e.Conf[n]),delete e.Conf[n]}return e}(e,{"Disable 4chan's extension":"Disable Native Extension",
+playBeep(){const{audio:e}=Re;return e.src||(e.src=Re.beep),e.paused?e.play():Ve.one(e,"ended",Re.playBeep)},cb:{checkpost(e){if(e.detail.threadID===Re.thread.ID)return Re.postID=e.detail.postID,Re.checkPostCount=0,Re.outdateCount=0,Re.setInterval()},visibility(){if(!a.hidden)return Re.outdateCount=0,Re.seconds>Re.interval?Re.setInterval():void 0},scrollBG:()=>Re.scrollBG=t["Scroll BG"]?()=>!0:()=>!a.hidden,interval(e){let t=parseInt(this.value,10);if(t<1&&(t=1),Re.interval=this.value=t,e)return Ve.cb.value.call(this)},load(){if(this===Re.req)switch(this.status){case 200:return Re.parse(this),Re.thread.isArchived?Re.kill():Re.setInterval();case 404:return Ve.ajax(n.SITE.urls.catalogJSON({boardID:Re.thread.board.ID}),{onloadend(){let e;if(200===this.status){for(var t of(e=!0,this.response))for(var n of t.threads)if(n.no===Re.thread.ID){e=!1;break}}else e=!1;return e?Re.kill():Re.error(this)}});default:return Re.error(this)}}},kill:()=>(Re.thread.kill(),Re.setInterval(),
+Ve.event("ThreadUpdate",{404:!0,threadID:Re.thread.fullID})),error:e=>(304===e.status&&Re.set("status",""),Re.setInterval(),e.status?304!==e.status?Re.set("status",`${e.statusText} (${e.status})`,"warning"):void 0:Re.set("status","Connection Error","warning")),setInterval(){if(clearTimeout(Re.timeoutID),Re.thread.isDead)return Re.set("status",Re.thread.isArchived?"Archived":"404","warning"),void Re.set("timer","");if(Re.postID&&Re.checkPostCount<5)return Re.set("timer","...","loading"),void(Re.timeoutID=setTimeout(Re.update,++Re.checkPostCount*b));if(!t["Auto Update"])return void Re.set("timer","Update");const{interval:e}=Re;if(t["Optional Increase"]){const t=a.hidden?10:5,n=Math.min(Re.outdateCount,t),o=(Math.floor(.1*e)||1)*n*n;Re.seconds=Ve.minmax(o,e,300)}else Re.seconds=e;return Re.timeout()},intervalShortcut(){Be.open("Advanced");const e=Ve.id("fourchanx-settings");return Ve("input[name=Interval]",e).focus()},set(e,t,n){let o;const a=Re[e]
+;return(o=a.firstChild)?o.data=t:a.textContent=t,a.className=n??(""===t?"empty":"")},timeout:()=>(Re.seconds?(Re.set("timer",Re.seconds),Re.timeoutID=setTimeout(Re.timeout,1e3)):(Re.outdateCount++,Re.update()),Re.seconds--),update(){let e;return clearTimeout(Re.timeoutID),Re.set("timer","...","loading"),(e=Re.req)&&(delete Re.req,e.abort()),Re.req=Ve.whenModified(n.SITE.urls.threadJSON({boardID:Re.thread.board.ID,threadID:Re.thread.ID}),"ThreadUpdater",Re.cb.load,{timeout:A})},updateThreadStatus(e,t){if(Re.thread[`is${e}`]===t)return;if(Re.thread.setStatus(e,t),"Closed"===e&&Re.thread.isArchived)return;return new Xe("info",`The thread is ${"Sticky"===e?t?"now a sticky":"not a sticky anymore":t?"now closed":"not closed anymore"}.`,30)},parse(e){let o,r,s;const l=e.response.posts,d=l[0],{thread:c}=Re,{board:h}=c,u=Re.postIDs[Re.postIDs.length-1];if(l[l.length-1].non?(Re.playBeep(),t.Beep&&Re.playBeep()):t.Beep&&ee.posts?.size>0&&0===e&&Re.playBeep());const o=t["Auto Scroll"]&&Re.scrollBG()&&Re.root.getBoundingClientRect().bottom-i.clientHeight<25;let r=null;for(s of p)Te.insert(s)||(r||(r=s.nodes.root),Ve.add(Re.root,s.nodes.root));Ve.event("PostsInserted",null,Re.root),o&&(t["Bottom Scroll"]?window.scrollTo(0,a.body.clientHeight):r&&Ke.scrollTo(r))}else Re.set("status","");return null!=d.unique_ips&&(r=Ve.id("unique-ips"))&&(r.textContent=d.unique_ips,r.previousSibling.textContent=r.previousSibling.textContent.replace(/\b(?:is|are)\b/,1===d.unique_ips?"is":"are"),r.nextSibling.textContent=r.nextSibling.textContent.replace(/\bposters?\b/,1===d.unique_ips?"poster":"posters")),Ve.event("ThreadUpdate",{404:!1,threadID:c.fullID,newPosts:m,deletedPosts:v,deletedFiles:w,postCount:d.replies+1,fileCount:d.images+!!d.fsize,ipCount:d.unique_ips})}},Be={dialog:void 0,init(){
+const o=Ve.el("a",{className:"settings-link",textContent:"🔧︎",title:`${e.name} Settings`,href:"javascript:;"});Ve.on(o,"click",Be.open),Ke.addShortcut("settings",o,820);const i=this.addSection;if(i("Main",this.main),i("Filter",this.filter),i("Sauce",this.sauce),i("Advanced",this.advanced),i("Keybinds",this.keybinds),Ve.on(a,"AddSettingsSection",Be.addSection),Ve.on(a,"OpenSettings",(e=>Be.open(e.detail))),"yotsuba"===n.SITE.software&&t["Disable Native Extension"])return Ve.hasStorage?Ve.global((function(){try{const e=JSON.parse(localStorage.getItem("4chan-settings"))||{};if(e.disableAll)return;return e.disableAll=!0,localStorage.setItem("4chan-settings",JSON.stringify(e))}catch(e){return Object.defineProperty(window,"Config",{value:{disableAll:!0}})}})):Ve.global((()=>Object.defineProperty(window,"Config",{value:{disableAll:!0}})))},open(e){let t,n;if(Be.dialog)return;Ve.event("CloseMenu"),Be.dialog=t=Ve.el("div",{id:"overlay"},fe),Ve.on(Ve(".export",t),"click",Be.export),
+Ve.on(Ve(".import",t),"click",Be.import),Ve.on(Ve(".reset",t),"click",Be.reset),Ve.on(Ve("input",t),"change",Be.onImport);const o=[];for(var i of Be.sections){var r=Ve.el("a",{className:`tab-${i.hyphenatedTitle}`,textContent:i.title,href:"javascript:;"});Ve.on(r,"click",Be.openSection.bind(i)),o.push(r,Ve.tn(" | ")),i.title===e&&(n=r)}return o.pop(),Ve.add(Ve(".sections-list",t),o),"none"!==e&&(n||o[0]).click(),Ve.on(Ve(".close",t),"click",Be.close),Ve.on(window,"beforeunload",Be.close),Ve.on(t,"click",Be.close),Ve.on(t.firstElementChild,"click",(e=>e.stopPropagation())),Ve.add(a.body,t),Ve.event("OpenSettings",null,t)},close(){if(Be.dialog)return a.activeElement?.blur(),Ve.rm(Be.dialog),delete Be.dialog},sections:[],addSection(e,t){"string"!=typeof e&&({title:e,open:t}=e.detail);const n=e.toLowerCase().replace(/\s+/g,"-");return Be.sections.push({title:e,hyphenatedTitle:n,open:t})},openSection(){let e;(e=Ve(".tab-selected",Be.dialog))&&Ve.rmClass(e,"tab-selected"),
+Ve.addClass(Ve(`.tab-${this.hyphenatedTitle}`,Be.dialog),"tab-selected");const t=Ve("section",Be.dialog);return Ve.rmAll(t),t.className=`section-${this.hyphenatedTitle}`,this.open(t,n),t.scrollTop=0,Ve.event("OpenSettings",null,t)},warnings:{localStorage(t){if(Ve.cantSync){const n=Ve.cantSet?"save your settings":"synchronize settings between tabs";return t(Ve.el("li",{textContent:`${e.name} needs local storage to ${n}.\nEnable it on boards.${location.hostname.split(".")[1]}.org in your browser's privacy settings (may be listed as part of "local data" or "cookies").`}))}},ads:e=>Ve.onExists(i,".adg-rects > .desktop",(t=>Ve.onExists(t,"iframe",(function(){const t=Ze.to("thread",{boardID:"qa",threadID:362590});return e(Ve.el("li",pe(ue,null,"To protect yourself from ",pe("a",{href:t,target:"_blank"},"malicious ads"),", you should ",pe("a",{href:"https://github.com/gorhill/uBlock#ublock-origin",target:"_blank"},"block ads")," on 4chan.")))}))))},main(o){let a;const i=Ve.el("fieldset",{
+hidden:!0},{innerHTML:"
"}),r=function(e){return Ve.add(Ve("ul",i),e),i.hidden=!1};for(a in Be.warnings){(0,Be.warnings[a])(r)}Ve.add(o,i);const s=m(),l=m(),d=function(e,n){const o=[e];return(()=>{const e=[];for(a in n){var i=n[a];if(i instanceof Array){var r=i[1],d=Ve.el("div",{innerHTML:`: ${r}`});d.dataset.name=a;var c=Ve("input",d);Ve.on(c,"change",Ve.cb.checked),Ve.on(c,"change",(function(){return this.parentNode.parentNode.dataset.checked=this.checked})),s[a]=t[a],l[a]=c;var h=i[2]||0;if(o.length<=h){var u=Ve.el("div",{className:"suboption-list"});Ve.add(o[o.length-1].lastElementChild,u),o[h]=u}else o.length>h+1&&o.splice(h+1,o.length-(h+1));e.push(Ve.add(o[h],d))}}return e})()};for(var h in c.main){var u=c.main[h],p=Ve.el("fieldset",{innerHTML:``});d(p,u),"Posting and Captchas"===h&&Ve.add(p,Ve.el("p",{
+innerHTML:'For more info on captcha options and issues, see the captcha FAQ.'})),Ve.add(o,p)}d(Ve('div[data-name="JSON Index"] > .suboption-list',o),c.Index),"gecko"!==Ve.engine&&(Ve('div[data-name="Remember QR Size"]',o).hidden=!0),(Ve.perProtocolSettings||"https:"!==location.protocol)&&(Ve('div[data-name="Redirect to HTTPS"]',o).hidden=!0),"crx"!==x&&(Ve('div[data-name="Work around CORB Bug"]',o).hidden=!0),Ve.get(s,(function(e){for(a in e){var t=e[a];l[a].checked=t,l[a].parentNode.parentNode.dataset.checked=t}}));const g=Ve.el("div",{innerHTML:': Clear manually-hidden threads and posts on all boards. Reload the page to apply.'}),f=Ve("button",g);return Ve.get({hiddenThreads:m(),hiddenPosts:m()},(function({hiddenThreads:e,hiddenPosts:t}){let n,o,a,i,r=0;for(o in e)if(a=e[o],"boards"!==o)for(o in a.boards)n=a.boards[o],r+=Object.keys(n).length;for(o in e.boards)n=e.boards[o],
+r+=Object.keys(n).length;for(o in t)if(a=t[o],"boards"!==o)for(o in a.boards)for(o in n=a.boards[o],n)i=n[o],r+=Object.keys(i).length;for(o in t.boards)for(o in n=t.boards[o],n)i=n[o],r+=Object.keys(i).length;return f.textContent=`Hidden: ${r}`})),Ve.on(f,"click",(function(){return this.textContent="Hidden: 0",Ve.get("hiddenThreads",m(),(function({hiddenThreads:e}){if(Ve.hasStorage&&"yotsuba"===n.SITE.software){let t;for(t in e["4chan.org"]?.boards)localStorage.removeItem(`4chan-hide-t-${t}`);for(t in e.boards)localStorage.removeItem(`4chan-hide-t-${t}`)}return Ve.delete(["hiddenThreads","hiddenPosts"])}))})),Ve.after(Ve('input[name="Stubs"]',o).parentNode.parentNode,g)},export(){const e=m();return Ve.extend(e,t),Ve.get(e,(function(e){return delete e.boardConfig,Be.downloadExport({version:n.VERSION,date:Date.now(),Conf:e})}))},downloadExport(t){const o=new Blob([JSON.stringify(t,null,2)],{type:"application/json"}),a=URL.createObjectURL(o),i=Ve.el("a",{
+download:`${e.name} v${n.VERSION}-${t.date}.json`,href:a}),r=Ve(".imp-exp-result",Be.dialog);return Ve.rmAll(r),Ve.add(r,i),i.click()},import(){return Ve("input[type=file]",this.parentNode).click()},onImport(){let e;if(!(e=this.files[0]))return;this.value=null;const t=Ve(".imp-exp-result");if(!confirm("Your current settings will be entirely overwritten, are you sure?"))return void(t.textContent="Import aborted.");const n=new FileReader;return n.onload=function(e){try{return Be.loadSettings(m.json(e.target.result),(function(e){return e?t.textContent="Import failed due to an error.":confirm("Import successful. Reload now?")?window.location.reload():void 0}))}catch(e){const n=e;return t.textContent="Import failed due to an error.",r.error(n.stack)}},n.readAsText(e)},convertFrom:{loadletter(e){for(var t in"Always CDN"in(e=function(e,t){for(var n in t){var o=t[n];o&&(e.Conf[o]=e.Conf[n]),delete e.Conf[n]}return e}(e,{"Disable 4chan's extension":"Disable Native Extension",
"Comment Auto-Expansion":"","Remove Slug":"","Always HTTPS":"Redirect to HTTPS","Check for Updates":"","Recursive Filtering":"Recursive Hiding","Reply Hiding":"Reply Hiding Buttons","Thread Hiding":"Thread Hiding Buttons","Show Stubs":"Stubs","Image Auto-Gif":"Replace GIF","Expand All WebM":"Expand videos","Reveal Spoilers":"Reveal Spoiler Thumbnails","Expand From Current":"Expand from here","Current Page":"Page Count in Stats","Current Page Position":"","Alternative captcha":"Use Recaptcha v1","Alt index captcha":"Use Recaptcha v1 on Index","Auto Submit":"Post on Captcha Completion","Open Reply in New Tab":"Open Post in New Tab","Remember QR size":"Remember QR Size","Remember Subject":"","Quote Inline":"Quote Inlining","Quote Preview":"Quote Previewing","Indicate OP quote":"Mark OP Quotes","Indicate You quote":"Mark Quotes of You","Indicate Cross-thread Quotes":"Mark Cross-thread Quotes",uniqueid:"uniqueID",mod:"capcode",email:"",country:"flag",md5:"MD5",openEmptyQR:"Open empty QR",
openQR:"Open QR",openOptions:"Open settings",close:"Close",spoiler:"Spoiler tags",sageru:"Toggle sage",code:"Code tags",sjis:"SJIS tags",submit:"Submit QR",watch:"Watch",update:"Update",unreadCountTo0:"",expandAllImages:"Expand images",expandImage:"Expand image",zero:"Front page",nextPage:"Next page",previousPage:"Previous page",nextThread:"Next thread",previousThread:"Previous thread",expandThread:"Expand thread",openThreadTab:"Open thread",openThread:"Open thread tab",nextReply:"Next reply",previousReply:"Previous reply",hide:"Hide",Scrolling:"Auto Scroll",Verbose:""})).Conf&&(e.Conf.fourchanImageHost=e.Conf["Always CDN"]?"i.4cdn.org":"",delete e.Conf["Always CDN"]),e.Conf.sauces=e.Conf.sauces.replace(/\$\d/g,(function(e){switch(e){case"$1":return"%TURL";case"$2":return"%URL";case"$3":return"%MD5";case"$4":return"%board";default:return e}})),c.hotkeys)c.hotkeys[t],
t in e.Conf&&(e.Conf[t]=e.Conf[t].replace(/ctrl|alt|meta/g,(e=>`${e[0].toUpperCase()}${e.slice(1)}`)).replace(/(^|.+\+)[A-Z]$/g,(e=>`Shift+${e.slice(0,-1)}${e.slice(-1).toLowerCase()}`)));if(e.WatchedThreads)for(var n in e.Conf.watchedThreads=m.clone({"4chan.org":{boards:{}}}),e.WatchedThreads){var o=e.WatchedThreads[n];for(var a in o){var i=o[a];(e.Conf.watchedThreads["4chan.org"].boards[n]||(e.Conf.watchedThreads["4chan.org"].boards[n]=m()))[a]={excerpt:i.textContent}}}return e}},upgrade(n,o){let a,i,r;const s=m(),l=(e,t)=>n[e]=s[e]=t,d=function(e,t){if(null==n[e])return l(e,t)},h=function(e){if(null!=n.sauces&&(e=e.filter((e=>n.sauces.indexOf(e.match(/[^#;\s]+|$/)[0])<0))).length)return l("sauces",n.sauces+"\n\n"+e.join("\n"))},u=function(e){if(null==n.usercss&&l("usercss",c.usercss),n.usercss.indexOf(e)<0)return l("usercss",e+"\n\n"+n.usercss)};if(a='"'===o[0])try{o=JSON.parse(o)}catch(e){}const p=o.replace(/\d+/g,(e=>("0000"+e).slice(-5)))
-;if(p<"00001.00013.00014.00008")for(i in n)if(r=n[i],"string"==typeof r&&"string"!=typeof t[i]&&!["Index Sort","Last Long Reply Thresholds 0","Last Long Reply Thresholds 1"].includes(i)){a=!0;break}if(a)for(i in n)if(r=n[i],"string"==typeof r)try{var g=JSON.parse(r);l(i,g)}catch(e){}if(p<"00001.00011.00008.00000"&&(null==n["Fixed Thread Watcher"]&&l("Fixed Thread Watcher",n["Toggleable Thread Watcher"]??!0),null==n["Exempt Archives from Encryption"]&&l("Exempt Archives from Encryption",n["Except Archives from Encryption"]??!1)),p<"00001.00011.00010.00001"&&null!=n.selectedArchives){const e={Moe:0,"4plebs Archive":3,"Nyafuu Archive":4,"Love is Over":5,"Rebecca Black Tech":8,warosu:10,fgts:15,not4plebs:22,DesuStorage:23,"fireden.net":24,disabled:null};for(var f in n.selectedArchives){var b=n.selectedArchives[f];for(var A in b){var v=b[A];He.hasOwn(e,v)&&(b[A]=e[v])}}l("selectedArchives",n.selectedArchives)}if(p<"00001.00011.00016.00000"){let e
-;(e=c.usercss.match(/\/\* Board title rice \*\/(?:\n.+)*/)[0])&&null!=n.usercss&&n.usercss.indexOf(e)<0&&l("usercss",e+"\n\n"+n.usercss)}if(p<"00001.00011.00017.00000")for(i of["Persistent QR","Color User IDs","Fappe Tyme","Werk Tyme","Highlight Posts Quoting You","Highlight Own Posts"])null==n[i]&&l(i,"Persistent QR"===i);if(p<"00001.00011.00017.00006"&&null!=n.sauces&&l("sauces",n.sauces.replace(/^(#?\s*)http:\/\/iqdb\.org\//gm,"$1//iqdb.org/")),p<"00001.00011.00019.00003"&&!Re.dialog&&He.queueTask((()=>Re.warnings.ads((e=>new Ke("warning",[...e.childNodes]))))),p<"00001.00011.00020.00003"){const e={"Inline Cross-thread Quotes Only":!1,"Pass Link":!0};for(i in e){var w=e[i];null==n[i]&&l(i,w)}}if(p<"00001.00011.00021.00003"&&null==n["Remember Your Posts"]&&l("Remember Your Posts",n["Mark Quotes of You"]??!0),p<"00001.00011.00022.00000"&&null!=n.sauces&&(l("sauces",n.sauces.replace(/^(#?\s*https:\/\/www\.google\.com\/searchbyimage\?image_url=%(?:IMG|URL))%3Fs\.jpg/gm,"$1")),
+;if(p<"00001.00013.00014.00008")for(i in n)if(r=n[i],"string"==typeof r&&"string"!=typeof t[i]&&!["Index Sort","Last Long Reply Thresholds 0","Last Long Reply Thresholds 1"].includes(i)){a=!0;break}if(a)for(i in n)if(r=n[i],"string"==typeof r)try{var g=JSON.parse(r);l(i,g)}catch(e){}if(p<"00001.00011.00008.00000"&&(null==n["Fixed Thread Watcher"]&&l("Fixed Thread Watcher",n["Toggleable Thread Watcher"]??!0),null==n["Exempt Archives from Encryption"]&&l("Exempt Archives from Encryption",n["Except Archives from Encryption"]??!1)),p<"00001.00011.00010.00001"&&null!=n.selectedArchives){const e={Moe:0,"4plebs Archive":3,"Nyafuu Archive":4,"Love is Over":5,"Rebecca Black Tech":8,warosu:10,fgts:15,not4plebs:22,DesuStorage:23,"fireden.net":24,disabled:null};for(var f in n.selectedArchives){var b=n.selectedArchives[f];for(var A in b){var v=b[A];Ve.hasOwn(e,v)&&(b[A]=e[v])}}l("selectedArchives",n.selectedArchives)}if(p<"00001.00011.00016.00000"){let e
+;(e=c.usercss.match(/\/\* Board title rice \*\/(?:\n.+)*/)[0])&&null!=n.usercss&&n.usercss.indexOf(e)<0&&l("usercss",e+"\n\n"+n.usercss)}if(p<"00001.00011.00017.00000")for(i of["Persistent QR","Color User IDs","Fappe Tyme","Werk Tyme","Highlight Posts Quoting You","Highlight Own Posts"])null==n[i]&&l(i,"Persistent QR"===i);if(p<"00001.00011.00017.00006"&&null!=n.sauces&&l("sauces",n.sauces.replace(/^(#?\s*)http:\/\/iqdb\.org\//gm,"$1//iqdb.org/")),p<"00001.00011.00019.00003"&&!Be.dialog&&Ve.queueTask((()=>Be.warnings.ads((e=>new Xe("warning",[...e.childNodes]))))),p<"00001.00011.00020.00003"){const e={"Inline Cross-thread Quotes Only":!1,"Pass Link":!0};for(i in e){var w=e[i];null==n[i]&&l(i,w)}}if(p<"00001.00011.00021.00003"&&null==n["Remember Your Posts"]&&l("Remember Your Posts",n["Mark Quotes of You"]??!0),p<"00001.00011.00022.00000"&&null!=n.sauces&&(l("sauces",n.sauces.replace(/^(#?\s*https:\/\/www\.google\.com\/searchbyimage\?image_url=%(?:IMG|URL))%3Fs\.jpg/gm,"$1")),
l("sauces",n.sauces.replace(/^#?\s*https:\/\/www\.google\.com\/searchbyimage\?image_url=%(?:IMG|T?URL)(?=$|;)/gm,"$&&safe=off"))),p<"00001.00011.00022.00002"&&null==n["Use Recaptcha v1 in Reports"]&&n["Use Recaptcha v1"]&&!n["Use Recaptcha v2 in Reports"]&&l("Use Recaptcha v1 in Reports",!0),p<"00001.00011.00024.00000"&&null!=n["JSON Navigation"]&&null==n["JSON Index"]&&l("JSON Index",n["JSON Navigation"]),p<"00001.00011.00026.00000"&&(null!=n["Oekaki Links"]&&null==n["Edit Link"]&&l("Edit Link",n["Oekaki Links"]),null==n["Inline Cross-thread Quotes Only"]&&l("Inline Cross-thread Quotes Only",!0)),p<"00001.00011.00030.00000"&&n["Quote Threading"]&&null==n["Thread Quotes"]&&l("Thread Quotes",!0),p<"00001.00011.00032.00000"&&(null!=n.sauces&&l("sauces",n.sauces.replace(/^(#?\s*)http:\/\/3d\.iqdb\.org\//gm,"$1//3d.iqdb.org/")),
h(["#https://desustorage.org/_/search/image/%sMD5/","#https://boards.fireden.net/_/search/image/%sMD5/","#https://foolz.fireden.net/_/search/image/%sMD5/","#//www.gif-explode.com/%URL;types:gif"])),p<"00001.00011.00035.00000"&&h(["https://whatanime.ga/?auto&url=%IMG;text:wait"]),p<"00001.00012.00000.00000"&&(null==n["Exempt Archives from Encryption"]&&l("Exempt Archives from Encryption",!1),null==n["Show New Thread Option in Threads"]&&l("Show New Thread Option in Threads",!1),n["Show Name and Subject"]&&u("#qr .persona .field {display: block !important;}"),!1===n["QR Shortcut"]&&u("#shortcut-qr {display: none;}"),!1===n["Bottom QR Link"]&&u(".qr-link-container-bottom {display: none;}")),p<"00001.00012.00000.00006"&&null!=n.sauces&&l("sauces",n.sauces.replace(/^(#?\s*)https:\/\/(?:desustorage|cuckchan)\.org\//gm,"$1https://desuarchive.org/")),
p<"00001.00012.00001.00000"&&null==n["Persistent Thread Watcher"]&&null!=n["Toggleable Thread Watcher"]&&l("Persistent Thread Watcher",!n["Toggleable Thread Watcher"]),p<"00001.00012.00003.00000")for(i of["Image Hover in Catalog","Auto Watch","Auto Watch Reply"])d(i,!1);if(p<"00001.00013.00001.00002"&&h(["#//www.bing.com/images/search?q=imgurl:%IMG&view=detailv2&iss=sbi#enterInsights"]),p<"00001.00013.00005.00000"&&(null!=n.sauces&&l("sauces",n.sauces.replace(/^(#?\s*)http:\/\/regex\.info\/exif\.cgi/gm,"$1http://exif.regex.info/exif.cgi")),h(c.sauces.match(/# Known filename formats:(?:\n.+)*|$/)[0].split("\n"))),p<"00001.00013.00007.00002"&&d("Require OP Quote Link",!0),p<"00001.00013.00008.00000"&&d("Download Link",!0),p<"00001.00013.00009.00003"&&null!=n.jsWhitelist){const e=n.jsWhitelist.split("\n");!e.includes("https://cdnjs.cloudflare.com")&&e.includes("https://cdn.mathjax.org")&&l("jsWhitelist",n.jsWhitelist+"\n\nhttps://cdnjs.cloudflare.com")}
@@ -441,222 +444,223 @@ if(p<"00001.00014.00000.00006"&&null!=n.siteSoftware&&l("siteSoftware",n.siteSof
return p<"00001.00014.00006.00006"&&null!=n.sauces&&l("sauces",n.sauces.replace(/\/\/%\$1\.deviantart\.com\/gallery\/#\/d%\$2;regexp:\/\^\\w\+_by_\(\\w\+\)-d\(\[\\da-z\]\+\)\//g,"//www.deviantart.com/gallery/#/d%$1%$2;regexp:/^\\w+_by_\\w+[_-]d([\\da-z]{6})\\b|^d([\\da-z]{6})-[\\da-z]{8}-/")),p<"00001.00014.00008.00000"&&null!=n.sauces&&l("sauces",n.sauces.replace(/https:\/\/www\.yandex\.com\/images\/search/g,"https://yandex.com/images/search")),p<"00001.00014.00009.00000"&&null!=n.sauces&&(l("sauces",n.sauces.replace(/^(#?\s*)(?:http:)?\/\/(www\.pixiv\.net|www\.deviantart\.com|imgur\.com|flickr\.com)\//gm,"$1https://$2/")),l("sauces",n.sauces.replace(/https:\/\/yandex\.com\/images\/search\?rpt=imageview&img_url=%IMG/g,"https://yandex.com/images/search?rpt=imageview&url=%IMG"))),p<"00001.00014.00009.00001"&&null!=n["Use Faster Image Host"]&&null==n.fourchanImageHost&&l("fourchanImageHost",n["Use Faster Image Host"]?"i.4cdn.org":""),
p<"00001.00014.00010.00001"&&null==n["Filter in Native Catalog"]&&l("Filter in Native Catalog",!1),p<"00001.00014.00012.00008"&&null==n.boardnav&&l("boardnav",`[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:"FAQ","${e.faq}"]`),p<"00001.00014.00016.00001"&&null!=n.archiveLists&&l("archiveLists",n.archiveLists.replace("https://mayhemydg.github.io/archives.json/archives.json","https://nstepien.github.io/archives.json/archives.json")),
p<"00001.00014.00016.00007"&&null!=n.sauces&&l("sauces",n.sauces.replace(/https:\/\/www\.deviantart\.com\/gallery\/#\/d%\$1%\$2;regexp:\/\^\\w\+_by_\\w\+\[_-\]d\(\[\\da-z\]\{6\}\)\\b\|\^d\(\[\\da-z\]\{6\}\)-\[\\da-z\]\{8\}-\//g,'javascript:void(open("https://www.deviantart.com/"+%$1.replace(/_/g,"-")+"/art/"+parseInt(%$2,36)));regexp:/^\\w+_by_(\\w+)[_-]d([\\da-z]{6})\\b/').replace(/\/\/imgops\.com\/%URL/g,"//imgops.com/start?url=%URL")),p<"00001.00014.00017.00002"&&null!=n.jsWhitelist&&l("jsWhitelist",n.jsWhitelist+"\n\nhttps://hcaptcha.com\nhttps://*.hcaptcha.com"),p<"00001.00014.00020.00004"&&null!=n.archiveLists&&l("archiveLists",n.archiveLists.replace("https://nstepien.github.io/archives.json/archives.json","https://4chenz.github.io/archives.json/archives.json")),
-p<"00001.00014.00022.00003"&&n.sauces&&(l("sauces",n.sauces.replace(/^#?\s*https:\/\/www\.google\.com\/searchbyimage\?image_url=%(IMG|T?URL)&safe=off(?=$|;)/gm,"https://www.google.com/searchbyimage?sbisrc=4chanx&image_url=%$1&safe=off")),"00001.00014.00022.00002"!==p||/\bsbisrc=/.test(n.sauces)||l("sauces",n.sauces.replace(/^#?\s*https:\/\/lens\.google\.com\/uploadbyurl\?url=%(IMG|T?URL)(?=$|;)/m,"https://www.google.com/searchbyimage?sbisrc=4chanx&image_url=%$1&safe=off"))),s},loadSettings:(e,t)=>("2"===e.version.split(".")[0]?e=Re.convertFrom.loadletter(e):e.version!==n.VERSION&&Re.upgrade(e.Conf,e.version),He.clear((function(n){return n?t(n):He.set(e.Conf,t)}))),reset(){if(confirm("Your current settings will be entirely wiped, are you sure?"))return He.clear((function(e){return e?He(".imp-exp-result").textContent="Import failed due to an error.":confirm("Reset successful. Reload now?")?window.location.reload():void 0}))},filter(e){He.extend(e,{
-innerHTML:'\n\n'});const t=He("select",e);return He.on(t,"change",Re.selectFilter),Re.selectFilter.call(t)},selectFilter(){let e;const n=this.nextElementSibling;if("guide"!==(e=this.value)){if(!He.hasOwn(c.filter,e))return;He.rmAll(n)
-;const o=He.el("textarea",{name:e,className:"field",spellcheck:!1});return He.on(o,"change",He.cb.value),void He.get(e,t[e],(function(t){return o.value=t[e],He.add(n,o)}))}return Object.keys(c.filter).filter((e=>"general"!==e)).map(((e,t)=>({innerHTML:(t?",":"")+`${o(e)}`}))),He.extend(n,{
+p<"00001.00014.00022.00003"&&n.sauces&&(l("sauces",n.sauces.replace(/^#?\s*https:\/\/www\.google\.com\/searchbyimage\?image_url=%(IMG|T?URL)&safe=off(?=$|;)/gm,"https://www.google.com/searchbyimage?sbisrc=4chanx&image_url=%$1&safe=off")),"00001.00014.00022.00002"!==p||/\bsbisrc=/.test(n.sauces)||l("sauces",n.sauces.replace(/^#?\s*https:\/\/lens\.google\.com\/uploadbyurl\?url=%(IMG|T?URL)(?=$|;)/m,"https://www.google.com/searchbyimage?sbisrc=4chanx&image_url=%$1&safe=off"))),s},loadSettings:(e,t)=>("2"===e.version.split(".")[0]?e=Be.convertFrom.loadletter(e):e.version!==n.VERSION&&Be.upgrade(e.Conf,e.version),Ve.clear((function(n){return n?t(n):Ve.set(e.Conf,t)}))),reset(){if(confirm("Your current settings will be entirely wiped, are you sure?"))return Ve.clear((function(e){return e?Ve(".imp-exp-result").textContent="Import failed due to an error.":confirm("Reset successful. Reload now?")?window.location.reload():void 0}))},filter(e){Ve.extend(e,{
+innerHTML:'\n\n'});const t=Ve("select",e);return Ve.on(t,"change",Be.selectFilter),Be.selectFilter.call(t)},selectFilter(){let e;const n=this.nextElementSibling;if("guide"!==(e=this.value)){if(!Ve.hasOwn(c.filter,e))return;Ve.rmAll(n)
+;const o=Ve.el("textarea",{name:e,className:"field",spellcheck:!1});return Ve.on(o,"change",Ve.cb.value),void Ve.get(e,t[e],(function(t){return o.value=t[e],Ve.add(n,o)}))}return Object.keys(c.filter).filter((e=>"general"!==e)).map(((e,t)=>({innerHTML:(t?",":"")+`${o(e)}`}))),Ve.extend(n,{
innerHTML:'
Filter is disabled.
\n
\n Use regular expressions, one per line. \n Lines starting with a # will be ignored. \n For example, /weeaboo/i will filter posts containing the string `weeaboo`, case-insensitive. \n MD5 and Unique ID filtering use exact string matching, not regular expressions.\n
\n
You can use these settings with each regular expression, separate them with semicolons:\n
\n Per boards, separate them with commas. It is global if not specified. Use sfw and nsfw to reference all worksafe or not-worksafe boards. \n For example: boards:a,jp;. \n To specify boards on a particular site, put the beginning of the domain and a slash character before the list. \n Any initial www. should not be included, and all 4chan domains are considered 4chan.org. \n For example: boards:4:a,jp,sama:a,z;. \n An asterisk can be used to specify all boards on a site. \n For example: boards:4:*;. \n
\n
\n Select boards to be excluded from the filter. The syntax is the same as for the boards: option above. \n For example: exclude:vg,v;.\n
\n
\n Filter OPs only along with their threads (`only`) or replies only (`no`). \n For example: op:only; or op:no;.\n
\n
\n Filter only posts with files (`only`) or only posts without files (`no`). \n For example: file:only; or file:no;.\n
\n
\n Overrule the `Show Stubs` setting if specified: create a stub (`yes`) or not (`no`). \n For example: stub:yes; or stub:no;.\n
\n
\n Highlight instead of hiding. You can specify a class name to use with a userstyle. \n For example: highlight; or highlight:wallpaper;.\n
\n
\n Highlighted OPs will have their threads put on top of the board index by default. \n For example: top:yes; or top:no;.\n
\n
\n Show a desktop notification instead of hiding. \n For example: notify;.\n
\n
\n Filters in the "General" section apply to multiple fields, by default subject,name,filename,comment. \n The fields can be specified with the type option, separated by commas. \n For example: type:@{filterTypes};. \n Types can also be combined with a + sign; this indicates the filter applies to the given fields joined by newlines. \n For example: type:filename+filesize+dimensions;. \n