// <pre>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/to-monitor-list.ts
"use strict";(()=>{var a=new mw.Api;async function l(c){return(await a.get({action:"query",formatversion:"2",prop:"revisions",rvprop:"content",rvslots:"main",titles:c})).query.pages[0].revisions?.[0].slots.main.content.trim()}var o=class{link;toCheck;totalToCheck;isRunning=!1;handledRequests=0;load(){mw.util.addCSS(`
.to-monitor-list-count {
cursor: pointer;
}`);let i=document.querySelector(".mw-editsection").cloneNode(!0);this.link=document.createElement("a"),this.link.href="#",this.link.style.fontWeight="bold",this.link.textContent="Add missing counts",this.link.addEventListener("click",async r=>{if(r.preventDefault(),!this.isRunning){this.isRunning=!0;for(let e of document.querySelectorAll(".to-monitor-list-count"))e.id&&(e.innerHTML='<span style="color: #ed8e07; font-weight: bold">?</span>');await this.loadToCheckData();for(let e of this.toCheck.categories)this.handleCheck(e,async()=>{let t=await a.get({action:"query",list:"search",srinfo:"totalhits",srnamespace:this.getCategory(e),srsearch:`incategory:"${e.category}"`}).catch((s,n)=>(mw.notify(`An error occurred while trying to get category members: ${n?.error?.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.searchinfo.totalhits});for(let e of this.toCheck.searches)this.handleCheck(e,async()=>{let t=await a.get({action:"query",list:"search",srinfo:"totalhits",srnamespace:this.getCategory(e),srsearch:e.search}).catch((s,n)=>(mw.notify(`An error occurred while trying to get search results: ${n?.error?.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.searchinfo.totalhits});for(let e of this.toCheck.whatLinksHere)this.handleCheck(e,async()=>{let t=await a.get({action:"query",list:"backlinks",bllimit:500,blnamespace:this.getCategory(e),bltitle:e.title}).catch((s,n)=>(mw.notify(`An error occurred while trying to get backlinks: ${n?.error?.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.backlinks.length});for(let e of this.toCheck.transclusions)this.handleCheck(e,async()=>{let t=await a.get({action:"query",list:"embeddedin",eilimit:500,einamespace:this.getCategory(e),eititle:e.title}).catch((s,n)=>(mw.notify(`An error occurred while trying to get transclusions: ${n?.error?.info??"Unknown error"} (${s})`,{type:"error"}),null));if(t)return t.query.embeddedin.length})}}),i.querySelector("a").replaceWith(this.link),document.querySelector("h2#Stuff_to_monitor + .mw-editsection").after(i);for(let r of document.querySelectorAll(".to-monitor-list-count"))r.addEventListener("click",()=>{r.innerHTML='<span style="color: #00733f">None</span>'})}async loadToCheckData(){this.toCheck=JSON.parse(await l("User:Eejit43/scripts/to-monitor-list.json")??"{}"),this.totalToCheck=Object.values(this.toCheck).flat().length}async handleCheck(i,r){let e=await r();if(e===void 0)return;let t=document.querySelector(`#to-monitor-list-${i.id}`);if(!t)return mw.notify(`Failed to find element for ID "${i.id}"`);t.innerHTML=e===0?'<span style="color: #00733f">None</span>':`<b><span style="color: #bd2828">${e===500?"500+":e}</span></b>`,this.handledRequests++,this.link.textContent=`Add missing counts (${this.handledRequests}/${this.totalToCheck} loaded)`,this.handledRequests===this.totalToCheck&&setTimeout(()=>{this.isRunning=!1,this.handledRequests=0,this.link.textContent="Add missing counts"},1e3)}getCategory({namespaces:i,notNamespaces:r}){if(!i&&!r)return 0;if(i){let e=i.map(t=>Object.entries(mw.config.get("wgFormattedNamespaces")).find(([,s])=>s===t)).filter(Boolean);return e.length>0?e.map(t=>Number.parseInt(t[0])):0}else return Object.entries(mw.config.get("wgFormattedNamespaces")).filter(([,e])=>!r.includes(e||"Article")).map(([e])=>Number.parseInt(e))}};mw.loader.using(["mediawiki.util"],()=>{mw.config.get("wgPageName")==="User:Eejit43"&&new o().load()});})();
// </pre>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vdXRpbGl0eS50cyIsICIuLi9zY3JpcHRzL3RvLW1vbml0b3ItbGlzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHR5cGUgeyBBcGlRdWVyeVJldmlzaW9uc1BhcmFtcyB9IGZyb20gJ3R5cGVzLW1lZGlhd2lraS9hcGlfcGFyYW1zJztcbmltcG9ydCB0eXBlIHsgUGFnZVJldmlzaW9uc1Jlc3VsdCB9IGZyb20gJy4vZ2xvYmFsLXR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGFwaSA9IG5ldyBtdy5BcGkoKTtcblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBjb250ZW50IG9mIGEgZ2l2ZW4gcGFnZS5cbiAqIEBwYXJhbSB0aXRsZSBUaGUgdGl0bGUgdG8gZmV0Y2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQYWdlQ29udGVudCh0aXRsZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGF3YWl0IGFwaS5nZXQoe1xuICAgICAgICAgICAgYWN0aW9uOiAncXVlcnknLFxuICAgICAgICAgICAgZm9ybWF0dmVyc2lvbjogJzInLFxuICAgICAgICAgICAgcHJvcDogJ3JldmlzaW9ucycsXG4gICAgICAgICAgICBydnByb3A6ICdjb250ZW50JyxcbiAgICAgICAgICAgIHJ2c2xvdHM6ICdtYWluJyxcbiAgICAgICAgICAgIHRpdGxlczogdGl0bGUsXG4gICAgICAgIH0gc2F0aXNmaWVzIEFwaVF1ZXJ5UmV2aXNpb25zUGFyYW1zKSkgYXMgUGFnZVJldmlzaW9uc1Jlc3VsdFxuICAgICkucXVlcnkucGFnZXNbMF0ucmV2aXNpb25zPy5bMF0uc2xvdHMubWFpbi5jb250ZW50LnRyaW0oKTtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IEFwaVF1ZXJ5QmFja2xpbmtzUGFyYW1zLCBBcGlRdWVyeVNlYXJjaFBhcmFtcyB9IGZyb20gJ3R5cGVzLW1lZGlhd2lraS9hcGlfcGFyYW1zJztcbmltcG9ydCB0eXBlIHsgQmFja2xpbmtzUmVzdWx0LCBFbWJlZGRlZGluUmVzdWx0LCBNZWRpYVdpa2lEYXRhRXJyb3IsIFNlYXJjaFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC10eXBlcyc7XG5pbXBvcnQgeyBhcGksIGdldFBhZ2VDb250ZW50IH0gZnJvbSAnLi4vdXRpbGl0eSc7XG5cbmludGVyZmFjZSBTZWFyY2hEYXRhIHtcbiAgICBjYXRlZ29yaWVzOiB7IGlkOiBzdHJpbmc7IGNhdGVnb3J5OiBzdHJpbmc7IG5hbWVzcGFjZXM/OiBzdHJpbmdbXTsgbm90TmFtZXNwYWNlcz86IHN0cmluZ1tdIH1bXTtcbiAgICBzZWFyY2hlczogeyBpZDogc3RyaW5nOyBzZWFyY2g6IHN0cmluZzsgbmFtZXNwYWNlcz86IHN0cmluZ1tdOyBub3ROYW1lc3BhY2VzPzogc3RyaW5nW10gfVtdO1xuICAgIHdoYXRMaW5rc0hlcmU6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgbmFtZXNwYWNlcz86IHN0cmluZ1tdOyBub3ROYW1lc3BhY2VzPzogc3RyaW5nW10gfVtdO1xuICAgIHRyYW5zY2x1c2lvbnM6IHsgaWQ6IHN0cmluZzsgdGl0bGU6IHN0cmluZzsgbmFtZXNwYWNlcz86IHN0cmluZ1tdOyBub3ROYW1lc3BhY2VzPzogc3RyaW5nW10gfVtdO1xufVxuXG50eXBlIFNlYXJjaERhdGFDaGVjayA9IFNlYXJjaERhdGFba2V5b2YgU2VhcmNoRGF0YV1bMF07XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBlbnRpcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdG8tbW9uaXRvci1saXN0IHNjcmlwdC5cbiAqL1xuY2xhc3MgTW9uaXRvcmluZ0xpc3RNYW5hZ2VyIHtcbiAgICBwcml2YXRlIGxpbmshOiBIVE1MQW5jaG9yRWxlbWVudDtcblxuICAgIHByaXZhdGUgdG9DaGVjayE6IFNlYXJjaERhdGE7XG4gICAgcHJpdmF0ZSB0b3RhbFRvQ2hlY2shOiBudW1iZXI7XG5cbiAgICBwcml2YXRlIGlzUnVubmluZyA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBoYW5kbGVkUmVxdWVzdHMgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhlIFwiQWRkIG1pc3NpbmcgY291bnRzXCIgbGluayBlbGVtZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBsb2FkKCkge1xuICAgICAgICBtdy51dGlsLmFkZENTUyhgXG4udG8tbW9uaXRvci1saXN0LWNvdW50IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59YCk7XG5cbiAgICAgICAgY29uc3QgZnVsbExpbmtFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm13LWVkaXRzZWN0aW9uJykhLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MU3BhbkVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5saW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICB0aGlzLmxpbmsuaHJlZiA9ICcjJztcbiAgICAgICAgdGhpcy5saW5rLnN0eWxlLmZvbnRXZWlnaHQgPSAnYm9sZCc7XG4gICAgICAgIHRoaXMubGluay50ZXh0Q29udGVudCA9ICdBZGQgbWlzc2luZyBjb3VudHMnO1xuICAgICAgICB0aGlzLmxpbmsuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzUnVubmluZykgcmV0dXJuO1xuICAgICAgICAgICAgdGhpcy5pc1J1bm5pbmcgPSB0cnVlO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvLW1vbml0b3ItbGlzdC1jb3VudCcpKVxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmlkKSBlbGVtZW50LmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT1cImNvbG9yOiAjZWQ4ZTA3OyBmb250LXdlaWdodDogYm9sZFwiPj88L3NwYW4+JztcblxuICAgICAgICAgICAgYXdhaXQgdGhpcy5sb2FkVG9DaGVja0RhdGEoKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLnRvQ2hlY2suY2F0ZWdvcmllcylcbiAgICAgICAgICAgICAgICB2b2lkIHRoaXMuaGFuZGxlQ2hlY2soY2hlY2ssIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IChhd2FpdCBhcGlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3F1ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0OiAnc2VhcmNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmluZm86ICd0b3RhbGhpdHMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNybmFtZXNwYWNlOiB0aGlzLmdldENhdGVnb3J5KGNoZWNrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcnNlYXJjaDogYGluY2F0ZWdvcnk6XCIke2NoZWNrLmNhdGVnb3J5fVwiYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gc2F0aXNmaWVzIEFwaVF1ZXJ5U2VhcmNoUGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvckNvZGUsIGVycm9ySW5mbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBnZXQgY2F0ZWdvcnkgbWVtYmVyczogJHsoZXJyb3JJbmZvIGFzIE1lZGlhV2lraURhdGFFcnJvcik/LmVycm9yPy5pbmZvID8/ICdVbmtub3duIGVycm9yJ30gKCR7ZXJyb3JDb2RlfSlgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdlcnJvcicgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkpIGFzIFNlYXJjaFJlc3VsdCB8IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLnF1ZXJ5IS5zZWFyY2hpbmZvLnRvdGFsaGl0cztcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLnRvQ2hlY2suc2VhcmNoZXMpXG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmhhbmRsZUNoZWNrKGNoZWNrLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgYXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogJ3NlYXJjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JpbmZvOiAndG90YWxoaXRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcm5hbWVzcGFjZTogdGhpcy5nZXRDYXRlZ29yeShjaGVjayksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JzZWFyY2g6IGNoZWNrLnNlYXJjaCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gc2F0aXNmaWVzIEFwaVF1ZXJ5U2VhcmNoUGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvckNvZGUsIGVycm9ySW5mbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBnZXQgc2VhcmNoIHJlc3VsdHM6ICR7KGVycm9ySW5mbyBhcyBNZWRpYVdpa2lEYXRhRXJyb3IpPy5lcnJvcj8uaW5mbyA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZXJyb3InIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSBhcyBTZWFyY2hSZXN1bHQgfCBudWxsO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHJldHVybjtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YS5xdWVyeSEuc2VhcmNoaW5mby50b3RhbGhpdHM7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hlY2sgb2YgdGhpcy50b0NoZWNrLndoYXRMaW5rc0hlcmUpXG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmhhbmRsZUNoZWNrKGNoZWNrLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgYXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogJ2JhY2tsaW5rcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxsaW1pdDogNTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsbmFtZXNwYWNlOiB0aGlzLmdldENhdGVnb3J5KGNoZWNrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibHRpdGxlOiBjaGVjay50aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gc2F0aXNmaWVzIEFwaVF1ZXJ5QmFja2xpbmtzUGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvckNvZGUsIGVycm9ySW5mbykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG13Lm5vdGlmeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byBnZXQgYmFja2xpbmtzOiAkeyhlcnJvckluZm8gYXMgTWVkaWFXaWtpRGF0YUVycm9yKT8uZXJyb3I/LmluZm8gPz8gJ1Vua25vd24gZXJyb3InfSAoJHtlcnJvckNvZGV9KWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ2Vycm9yJyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkgYXMgQmFja2xpbmtzUmVzdWx0IHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEucXVlcnkhLmJhY2tsaW5rcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hlY2sgb2YgdGhpcy50b0NoZWNrLnRyYW5zY2x1c2lvbnMpXG4gICAgICAgICAgICAgICAgdm9pZCB0aGlzLmhhbmRsZUNoZWNrKGNoZWNrLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgYXBpXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdxdWVyeScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdDogJ2VtYmVkZGVkaW4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVpbGltaXQ6IDUwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlaW5hbWVzcGFjZTogdGhpcy5nZXRDYXRlZ29yeShjaGVjayksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWl0aXRsZTogY2hlY2sudGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9IHNhdGlzZmllcyBBcGlRdWVyeUJhY2tsaW5rc1BhcmFtcylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JDb2RlLCBlcnJvckluZm8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdy5ub3RpZnkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gZ2V0IHRyYW5zY2x1c2lvbnM6ICR7KGVycm9ySW5mbyBhcyBNZWRpYVdpa2lEYXRhRXJyb3IpPy5lcnJvcj8uaW5mbyA/PyAnVW5rbm93biBlcnJvcid9ICgke2Vycm9yQ29kZX0pYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZXJyb3InIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKSBhcyBFbWJlZGRlZGluUmVzdWx0IHwgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEucXVlcnkhLmVtYmVkZGVkaW4ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdWxsTGlua0VsZW1lbnQucXVlcnlTZWxlY3RvcignYScpIS5yZXBsYWNlV2l0aCh0aGlzLmxpbmspO1xuXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2gyI1N0dWZmX3RvX21vbml0b3IgKyAubXctZWRpdHNlY3Rpb24nKSEuYWZ0ZXIoZnVsbExpbmtFbGVtZW50KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRvLW1vbml0b3ItbGlzdC1jb3VudCcpKVxuICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICc8c3BhbiBzdHlsZT1cImNvbG9yOiAjMDA3MzNmXCI+Tm9uZTwvc3Bhbj4nO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTG9hZHMgdGhlIGRhdGEgb2YgY2hlY2tzIHRvIGhhbmRsZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgbG9hZFRvQ2hlY2tEYXRhKCkge1xuICAgICAgICB0aGlzLnRvQ2hlY2sgPSBKU09OLnBhcnNlKChhd2FpdCBnZXRQYWdlQ29udGVudCgnVXNlcjpFZWppdDQzL3NjcmlwdHMvdG8tbW9uaXRvci1saXN0Lmpzb24nKSkgPz8gJ3t9JykgYXMgU2VhcmNoRGF0YTtcblxuICAgICAgICB0aGlzLnRvdGFsVG9DaGVjayA9IE9iamVjdC52YWx1ZXModGhpcy50b0NoZWNrKS5mbGF0KCkubGVuZ3RoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYSBnaXZlbiBjaGVjay5cbiAgICAgKiBAcGFyYW0gY2hlY2sgVGhlIGNoZWNrIGRhdGEgdG8gaGFuZGxlLlxuICAgICAqIEBwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIGZpbmQgdGhlIGNvdW50IGZyb20gYSBjaGVjay5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIGhhbmRsZUNoZWNrKGNoZWNrOiBTZWFyY2hEYXRhQ2hlY2ssIGhhbmRsZXI6ICgpID0+IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPikge1xuICAgICAgICBjb25zdCBjb3VudCA9IGF3YWl0IGhhbmRsZXIoKTtcbiAgICAgICAgaWYgKGNvdW50ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgI3RvLW1vbml0b3ItbGlzdC0ke2NoZWNrLmlkfWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiBtdy5ub3RpZnkoYEZhaWxlZCB0byBmaW5kIGVsZW1lbnQgZm9yIElEIFwiJHtjaGVjay5pZH1cImApO1xuICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9XG4gICAgICAgICAgICBjb3VudCA9PT0gMFxuICAgICAgICAgICAgICAgID8gJzxzcGFuIHN0eWxlPVwiY29sb3I6ICMwMDczM2ZcIj5Ob25lPC9zcGFuPidcbiAgICAgICAgICAgICAgICA6IGA8Yj48c3BhbiBzdHlsZT1cImNvbG9yOiAjYmQyODI4XCI+JHtjb3VudCA9PT0gNTAwID8gJzUwMCsnIDogY291bnR9PC9zcGFuPjwvYj5gO1xuXG4gICAgICAgIHRoaXMuaGFuZGxlZFJlcXVlc3RzKys7XG4gICAgICAgIHRoaXMubGluay50ZXh0Q29udGVudCA9IGBBZGQgbWlzc2luZyBjb3VudHMgKCR7dGhpcy5oYW5kbGVkUmVxdWVzdHN9LyR7dGhpcy50b3RhbFRvQ2hlY2t9IGxvYWRlZClgO1xuXG4gICAgICAgIGlmICh0aGlzLmhhbmRsZWRSZXF1ZXN0cyA9PT0gdGhpcy50b3RhbFRvQ2hlY2spXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUnVubmluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVkUmVxdWVzdHMgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMubGluay50ZXh0Q29udGVudCA9ICdBZGQgbWlzc2luZyBjb3VudHMnO1xuICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBzZWFyY2hlZCBjYXRlZ29yaWVzIGZyb20gdGhlIGNoZWNrIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gY2hlY2sgVGhlIGNoZWNrIG9iamVjdC5cbiAgICAgKiBAcGFyYW0gY2hlY2submFtZXNwYWNlcyBUaGUgbmFtZXNwYWNlIHRvIHNlYXJjaCBpbi5cbiAgICAgKiBAcGFyYW0gY2hlY2subm90TmFtZXNwYWNlcyBUaGUgbmFtZXNwYWNlcyB0byBleGNsdWRlIGZyb20gdGhlIHNlYXJjaC5cbiAgICAgKiBAcmV0dXJucyBUaGUgY2F0ZWdvcnkgSUQgb3IgYXJyYXkgb2YgY2F0ZWdvcnkgSURzLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q2F0ZWdvcnkoeyBuYW1lc3BhY2VzLCBub3ROYW1lc3BhY2VzIH06IHsgbmFtZXNwYWNlcz86IHN0cmluZ1tdOyBub3ROYW1lc3BhY2VzPzogc3RyaW5nW10gfSkge1xuICAgICAgICBpZiAoIW5hbWVzcGFjZXMgJiYgIW5vdE5hbWVzcGFjZXMpIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmIChuYW1lc3BhY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBmb3VuZE5hbWVzcGFjZXMgPSBuYW1lc3BhY2VzXG4gICAgICAgICAgICAgICAgLm1hcCgobmFtZXNwYWNlKSA9PlxuICAgICAgICAgICAgICAgICAgICBPYmplY3QuZW50cmllcyhtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKSkuZmluZCgoWywgbmFtZXNwYWNlTmFtZV0pID0+IG5hbWVzcGFjZU5hbWUgPT09IG5hbWVzcGFjZSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgW3N0cmluZywgc3RyaW5nXVtdO1xuXG4gICAgICAgICAgICByZXR1cm4gZm91bmROYW1lc3BhY2VzLmxlbmd0aCA+IDAgPyBmb3VuZE5hbWVzcGFjZXMubWFwKChmb3VuZE5hbWVzcGFjZSkgPT4gTnVtYmVyLnBhcnNlSW50KGZvdW5kTmFtZXNwYWNlWzBdKSkgOiAwO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhtdy5jb25maWcuZ2V0KCd3Z0Zvcm1hdHRlZE5hbWVzcGFjZXMnKSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChbLCBuYW1lc3BhY2VOYW1lXSkgPT4gIW5vdE5hbWVzcGFjZXMhLmluY2x1ZGVzKG5hbWVzcGFjZU5hbWUgfHwgJ0FydGljbGUnKSlcbiAgICAgICAgICAgICAgICAubWFwKChbbmFtZXNwYWNlSWRdKSA9PiBOdW1iZXIucGFyc2VJbnQobmFtZXNwYWNlSWQpKTtcbiAgICB9XG59XG5cbm13LmxvYWRlci51c2luZyhbJ21lZGlhd2lraS51dGlsJ10sICgpID0+IHtcbiAgICBpZiAobXcuY29uZmlnLmdldCgnd2dQYWdlTmFtZScpID09PSAnVXNlcjpFZWppdDQzJykgbmV3IE1vbml0b3JpbmdMaXN0TWFuYWdlcigpLmxvYWQoKTtcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7O21CQUdPLElBQU1BLEVBQU0sSUFBSSxHQUFHLElBTTFCLGVBQXNCQyxFQUFlQyxFQUFlLENBQ2hELE9BQ0ssTUFBTUYsRUFBSSxJQUFJLENBQ1gsT0FBUSxRQUNSLGNBQWUsSUFDZixLQUFNLFlBQ04sT0FBUSxVQUNSLFFBQVMsT0FDVCxPQUFRRSxDQUNaLENBQW1DLEdBQ3JDLE1BQU0sTUFBTSxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxLQUFLLFFBQVEsS0FBSyxDQUM1RCxDQ0pBLElBQU1DLEVBQU4sS0FBNEIsQ0FDaEIsS0FFQSxRQUNBLGFBRUEsVUFBWSxHQUVaLGdCQUFrQixFQUtuQixNQUFPLENBQ1YsR0FBRyxLQUFLLE9BQU87QUFBQTtBQUFBO0FBQUEsRUFHckIsRUFFTSxJQUFNQyxFQUFrQixTQUFTLGNBQWMsaUJBQWlC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LENBQUMsRUFBSSxDQUN0SCxLQUNJLFFBQU8sT0FBTyxRQUFRLEdBQUcsT0FBTyxJQUFJLHVCQUF1QixDQUFDLEVBQ3ZELE9BQU8sQ0FBQyxDQUFDLENBQUVELENBQWEsSUFBTSxDQUFDSCxFQUFlLFNBQVNHLEdBQWlCLFNBQVMsQ0FBQyxFQUNsRixJQUFJLENBQUMsQ0FBQ0UsQ0FBVyxJQUFNLE9BQU8sU0FBU0EsQ0FBVyxDQUFDLENBQ2hFLENBQ0osRUFFQSxHQUFHLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixFQUFHLElBQU0sQ0FDbEMsR0FBRyxPQUFPLElBQUksWUFBWSxJQUFNLGdCQUFnQixJQUFJbEIsRUFBc0IsRUFBRSxLQUFLLENBQ3pGLENBQUMiLAogICJuYW1lcyI6IFsiYXBpIiwgImdldFBhZ2VDb250ZW50IiwgInRpdGxlIiwgIk1vbml0b3JpbmdMaXN0TWFuYWdlciIsICJmdWxsTGlua0VsZW1lbnQiLCAiZXZlbnQiLCAiZWxlbWVudCIsICJjaGVjayIsICJkYXRhIiwgImFwaSIsICJlcnJvckNvZGUiLCAiZXJyb3JJbmZvIiwgImdldFBhZ2VDb250ZW50IiwgImhhbmRsZXIiLCAiY291bnQiLCAibmFtZXNwYWNlcyIsICJub3ROYW1lc3BhY2VzIiwgImZvdW5kTmFtZXNwYWNlcyIsICJuYW1lc3BhY2UiLCAibmFtZXNwYWNlTmFtZSIsICJmb3VuZE5hbWVzcGFjZSIsICJuYW1lc3BhY2VJZCJdCn0K