diff --git a/.eslintrc.js b/.eslintrc.js index 8c45ee69..deeecb55 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,28 +8,20 @@ module.exports = { l: 'readonly', b64_to_utf8: 'readonly', utf8_to_b64: 'readonly', - realAudio: 'readonly', BeautifyAll: 'readonly', - CM: 'writable', - unsafeWindow: 'readonly', }, extends: ['airbnb-base', 'plugin:prettier/recommended'], parserOptions: { ecmaVersion: 12, }, rules: { - 'import/no-named-default': 'off', 'import/no-mutable-exports': 'off', - 'no-param-reassign': 'off', - 'no-plusplus': 'off', + 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }], 'no-new-func': 'off', - 'no-restricted-syntax': 'off', - 'prefer-destructuring': 'off', 'func-names': 'off', 'no-console': 'off', - 'no-nested-ternary': 'off', - 'no-new': 'off', 'no-alert': 'off', 'no-restricted-globals': 'off', + 'prefer-destructuring': ['error', { object: true, array: false }], }, }; diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 00000000..cec4bcc4 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,18 @@ +Cookie Monster is written to modify Cookie Clicker as little as possible. This means the data is copied to simulate instead of actually modifying the current values and reverting later. The benefit is that CM should never mess up any data. The downside is that there is an extra overhead to copy and store the copied data. + +The following is a short description of the various `src` directories and their contents: + +JS | Description +-- | - +Cache | Functions related to creating and storing data cache +Config | Functions related to manipulating CM configuration +Data | Hard coded values +Disp | Functions related to displaying CM's UI +InitSaveLoad | Functions related to registering the CM object with the Game's Modding API +Main | Functions related to the main loop and initializing CM +Sim | Functions related to simulate something + +These are some additional guidelines: +- Try to use DOM as much as possible instead of using string manipulation to modify HTML. +- Please be descriptive of your commits. If the commit is related to an issue or PR, please add the issue/PR number to the commit message. +- PR's should target the `dev` branch diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e42ac539..4c954e9d 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -19,5 +19,6 @@ If applicable, add screenshots to help explain your problem. **Save file** ``` -If applicable please copy your save file here +Please add a save file here. +This makes debugging much easier as we do not always have a good test save to debug the issue ``` diff --git a/LICENSE b/.github/LICENSE.md similarity index 100% rename from LICENSE rename to .github/LICENSE.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index ff2fd180..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,22 +0,0 @@ -The following is a description of the our approach to the project. - -Cookie Monster is written to modify Cookie Clicker as little as possible. This means the data is copied to simulate instead of actually modifying the current values and reverting later. The benefit is that CM should never mess up any data. The downside is that there is an extra overhead to copy and store the copied data. - -Here is a description of what should be stored in each of the source JS. Make edits to the source file first and then use the combine file to compile the final file: - -JS | Description --- | - -Cache | Functions related to creating and storing data cache -Config | Functions related to manipulating CM configuration -Data | Hard coded values -Disp | Functions related to displaying CM's UI -Footer | The footer of CM's JS (not modified often or ever) -Header | The header of CM's JS (not modified often or ever) -Main | Functions related to the main loop and initializing CM -Sim | Functions related to simulate something - -These are some additional guidelines: -- Try to use DOM as much as possible instead of using string manipulation to modify HTML. -- Please be descriptive of your commits. If the commit is related to an issue or PR, please add the issue/PR number to the commit message. -- Try to follow the formatting and annotation as specified by JSCode -- PR's should target the `dev` branch diff --git a/CookieMonster.js b/CookieMonster.js index 93a56918..935e1b51 100644 --- a/CookieMonster.js +++ b/CookieMonster.js @@ -1,2 +1,2 @@ /*! For license information please see CookieMonster.js.LICENSE.txt */ -(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],f=o.fixed?"fixed":"absolute",g=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var f=m[h];if(f)if(i.pub.presets.hasOwnProperty(f)){for(var u in i.pub.presets[f])if(i.pub.presets[f].hasOwnProperty(u))try{a(u,i.pub.presets[f][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",f)}var g=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===g.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};const t=["","","M","G","T","P","E","Z","Y"],n=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],i=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let a,r,s,c,d,p,u,m,h,f,g,C,y,b,k,G,v,w=[],x=[],T=[],M={};const S="CMText",B="CMBack",P="Blue",E="Green",N="Yellow",O="Orange",F="Red",W="Purple",L="Gray",A="Pink",j="Brown",U=[L,P,E,N,O,F,W,A,j],D=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"]];let R,H,$=0,I=-1,z=[],V=1,_=1,X=1;const Q=[10,15,30,60,300,600,900,1800],q=[1,5,10,15,30],Y={Frenzy:N,"Dragon Harvest":j,"Elder frenzy":E,Clot:F,"Click frenzy":P,Dragonflight:A};let K,J,Z,ee,te,oe,ne,ie={},ae="";function re(o,a,r){const l=e.ScaleDecimals+1;if(o===1/0)return"Infinity";if(void 0===o)return"0";if(0===e.Scale)return M.Beautify(o,a);if(Number.isFinite(o)){let s="";if(0===o)return o.toString();if(o>.001&&o=.01&&o=.01&&o=.01&&o315576e4)return"XX:XX:XX:XX:XX";s+=(n<10?"0":"")+n+":",s+=(i<10?"0":"")+i+":",s+=(a<10?"0":"")+a+":",s+=(r<10?"0":"")+r+":",s+=(l<10?"0":"")+l}else{if(t>7776e5)return o?"Over 9000 days!":">9000d";s+=n>0?n+(o?1===n?" year":" years":"y")+", ":"",s+=i>0?i+(o?1===i?" day":" days":"d")+", ":"",(s.length>0||a>0)&&(s+=a+(o?1===a?" hour":" hours":"h")+", "),(s.length>0||r>0)&&(s+=r+(o?1===r?" minute":" minutes":"m")+", "),s+=l+(o?1===l?" second":" seconds":"s")}return s}function se(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=E):(n=le(t),o=t>300?F:t>60?O:N),{text:n,color:o}}let ce,de,pe,ue,me,he,fe,ge,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,Ue,De,Re,He=0,$e=0,Ie=0,ze=0,Ve=0,_e=0,Xe=0,Qe=0,qe=0,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=1,nt=1,it=1,at=0,rt=0,lt=0,st=0,ct={},dt={},pt={},ut=0,mt=0,ht=[0,null],ft=0,gt=0,Ct={},yt={},bt={},kt={},Gt={},vt=0,wt=0,xt=[],Tt=0,Mt=0,St=[],Bt=0,Pt=0,Et=[],Nt=0,Ot=0,Ft=[],Wt=0,Lt=0,At={},jt={},Ut=0,Dt=0,Rt=0,Ht=0,$t=[],It={},zt=0,Vt=[],_t=[],Xt=[],Qt=Game.startDate,qt=Game.startDate;function Yt(e){let t=0;return Game.dragonAuras[Le].name!==e&&Game.dragonAuras[Ae].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[Le].name&&"Reality Bending"!==Game.dragonAuras[Ae].name||(t+=.1),t}function Kt(){let e=.25;return e*=1+Yt("Earth Shatterer"),e}function Jt(e,t){return void 0===Ue[e]?void 0===t?1:t:Ue[e]}function Zt(e){const t=_t[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function eo(e){if(Game.hasGod){void 0===Vt.Temple.minigame&&(Vt.Temple.minigame=Game.Objects.Temple.minigame);const t=Vt.Temple.minigame.gods[e];for(let e=0;e<3;e++)if(Vt.Temple.minigame.slot[e]===t.id)return e+1}return!1}function to(e,t){if(Zt("Season savings")&&(t*=.99),Zt("Santa's dominion")&&(t*=.99),Zt("Faberge egg")&&(t*=.99),Zt("Divine discount")&&(t*=.99),Zt("Fortune #100")&&(t*=.99),t*=1-.02*Yt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(t*=.95),Game.hasBuff("Crafty pixies")&&(t*=.98),Game.hasBuff("Nasty goblins")&&(t*=1.02),e.fortune&&Zt(e.fortune.name)&&(t*=.93),t*=Jt("buildingCost"),Vt.Temple.minigameLoaded){const e=eo("creation");1===e?t*=.93:2===e?t*=.95:3===e&&(t*=.98)}return t}function oo(e,t,o,n,i,a){a=void 0===a?0:a;let r=0;-1===i&&(i=o),i||(i=Game.buyBulk);for(let l=0;l0&&(r+=i,o--)}return r}function no(){let t=Game.buyBulk;if(1===Game.buyMode?_=t:t=_,1===t?t=ct:10===t?t=dt:100===t&&(t=pt),1===Game.buyMode)if(1===e.BuildColor)for(const o of Object.keys(t))l(`productPrice${Game.Objects[o].id}`).style.color=e.Colors[t[o].color];else for(const e of Object.keys(Game.Objects))l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color");else if(-1===Game.buyMode)for(const e of Object.keys(ct)){const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=re(oo(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))}if(1===Game.buyMode&&e.SortBuildings){const e=Object.keys(t).map((e=>{const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o}));e.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const t=ct[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;for(const s of Object.keys(Game.UpgradesInStore)){const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eU.indexOf(t.color)?1:U.indexOf(e.color)e.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e=10&&(e+=1);return e}:o.power=function(){let e=2;if(Zt("Starlove")&&(e=3),Game.hasGod){const t=eo("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function xo(){Ee=Game.UpgradesOwned,Ne=Game.pledges,Oe=Game.AchievementsOwned,Fe=Game.heavenlyPower,We=Game.prestige;for(const e of Object.keys(Game.Objects)){const t=Game.Objects[e];let o=Vt[e];void 0===o&&(Vt[e]=vo(e),o=Vt[e],so(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&(o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Vt[e]=o}for(const e of Object.keys(Game.Upgrades)){const t=Game.Upgrades[e];let o=_t[e];void 0===o&&(_t[e]=wo(e),o=_t[e]),o.bought=t.bought,_t[e]=o}for(const e of Object.keys(Game.Achievements)){const t=Game.Achievements[e];let o=Xt[e];void 0===o&&(Xt[e]=ko(e),o=Xt[e]),o.won=t.won,Xt[e]=o}bo(),Le=He,Ae=$e}function To(e,t,o,n,i){let a=0;for(let r=0;rt.plantsById[t.plot[ee[1]][ee[0]][0]-1].matureBase,o=t.plantsById[t.plot[ee[1]][ee[0]][0]-1].name;l("CMTooltipBorder").appendChild(Co("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${re(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${re(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${re(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${re(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===Z&&function(){const t=Game.Objects.Farm.minigame;if(e.TooltipLump){l("CMTooltipBorder").appendChild(Co("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${re(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${se((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(re(Game.Objects[o].bulkPrice)).join(re((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t&&(l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return Z=t,ee=o,So(),l("tooltip").innerHTML}function Po(){if(Game.prefs.autosave&&Game.drawT%10==0&&"stats"===Game.onMenu&&e.Stats){const e=document.getElementById("CMStatsAutosaveTimer");e&&(e.innerText=Game.sayTime(60*Game.fps-Game.T%(60*Game.fps),4))}no(),io(),function(){if(1===e.TimerBar){const t=l("CMTimerBar").offsetWidth-163,o=l("CMTimerBar").offsetWidth-133;let n=0;0!==Game.shimmerTypes.golden.spawned||Game.Has("Golden switch [off]")?l("CMTimerBarGC").style.display="none":(l("CMTimerBarGC").style.display="",l("CMTimerBarGCMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n++),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n++):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="";for(const t of Object.keys(Game.buffs))if(Game.buffs[t]){const a=lo(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==Y[Game.buffs[t].name]?Y[Game.buffs[t].name]:W,a.lastChild.children[1].className=B+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n++,i[Game.buffs[t].name]=a}for(const e of Object.keys(i))l("CMTimerBarBuffTimers").appendChild(i[e]);0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),ne!==n&&(ne=n,uo())}}(),co(),So(),function(){if(1===e.TooltipWrink&&1===$){let e=!1;for(const t of Object.keys(Game.wrinklers)){const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0!==z[t]&&void 0!==z[t])break;{const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),I=t,z[t]=1}}else z[t]=0}e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let e=Game.wrinklers[I].sucked,t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[I].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Vt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=re(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu();let t=l("cookies").innerHTML.replace(/.*(?=
)/i,re(Game.cookies));Game.prefs.monospace&&(t=`${t}`),l("cookies").innerHTML=t}class Eo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){e>this.maxLength&&(e=this.maxLength),e>this.queue.length&&(e=this.queue.length);let t=0;for(let o=this.queue.length-1;o>=0&&o>this.queue.length-1-e;o--)t+=this.queue[o];return 0===t?0:t/e}}function No(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+zt;Game.cpsSucked>0&&(o+=ut),Wt=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-fe,i=Math.max(0,Game.cookies-ge)/n,a=Math.max(0,ut-Ce)/n,r=Math.max(0,ht[0]-ye)/n,l=Math.max(0,o-st)/n,s=(Game.cookieClicks-be)/n;for(let e=0;eHt?W:t.pp>Rt?O:N,0!==Number(e.PPSecondsLowerLimit)&&o/ao()0&&(n=F),n}function Fo(e){for(const t of Object.keys(e))Game.cookiesPs?e[t].pp=Math.max(e[t].price-(Game.cookies+ro()),0)/Game.cookiesPs+e[t].price/e[t].bonus:e[t].pp=e[t].price/e[t].bonus,e[t].color=Oo(e[t],e[t].price)}function Wo(){!function(){if(Dt=1/0,Ht=1,$t=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),0===e.ColorPPBulkMode&&Game.buyMode>0){for(const e of Object.keys(ct))Game.cookiesPs?ct[e].pp=Math.max(Game.Objects[e].getPrice()-(Game.cookies+ro()),0)/Game.cookiesPs+Game.Objects[e].getPrice()/ct[e].bonus:ct[e].pp=Game.Objects[e].getPrice()/ct[e].bonus,$t.push([ct[e].pp,Game.Objects[e].getPrice()]);if($t.sort(((e,t)=>e[0]-t[0])),e.PPOnlyConsiderBuyable)for(;$t[0][1]>Game.cookies&&1!==$t.length;)$t.shift();Dt=$t[e.PPExcludeTop][0],Ht=$t[$t.length-1][0],Rt=(Ht-Dt)/2+Dt;for(const t of Object.keys(ct)){ct[t].color=Oo(ct[t],Game.Objects[t].getPrice());for(let o=0;o0){let t;1===Game.buyBulk?t=ct:10===Game.buyBulk?t=dt:100===Game.buyBulk&&(t=pt);for(const e of Object.keys(t))Game.cookiesPs?t[e].pp=Math.max(Game.Objects[e].bulkPrice-(Game.cookies+ro()),0)/Game.cookiesPs+Game.Objects[e].bulkPrice/t[e].bonus:t[e].pp=Game.Objects[e].bulkPrice/t[e].bonus,$t.push([t[e].pp,Game.Objects[e].bulkPrice]);if($t.sort(((e,t)=>e[0]-t[0])),e.PPOnlyConsiderBuyable)for(;$t[0][1]>Game.cookies&&1!==$t.length;)$t.shift();Dt=$t[e.PPExcludeTop][0],Ht=$t[$t.length-1][0],Rt=(Ht-Dt)/2+Dt;for(const o of Object.keys(ct)){t[o].color=Oo(t[o],Game.Objects[o].bulkPrice);for(let n=0;n=Game.CpsAchievements[e].threshold&&Lo(Game.CpsAchievements[e].name);Re=l;const s=Game.shimmerTypes.golden.n,c=Yt("Dragon's Fortune");for(let t=0;t=7&&Lo("Elder"),!$o("Veteran")&&e>=14&&Lo("Veteran");let t=0,o=1,n=1,i=1e5;for(const e of Object.keys(Vt))t+=Vt[e].amount,i=Math.min(Vt[e].amount,i),$o("Mathematician")||Vt[e].amount=1&&Lo("One with everything"),1===o&&Lo("Mathematician"),1===n&&Lo("Base 10"),i>=100&&Lo("Centennial"),i>=150&&Lo("Centennial and a half"),i>=200&&Lo("Bicentennial"),i>=250&&Lo("Bicentennial and a half"),i>=300&&Lo("Tricentennial"),i>=350&&Lo("Tricentennial and a half"),i>=400&&Lo("Quadricentennial"),i>=450&&Lo("Quadricentennial and a half"),i>=500&&Lo("Quincentennial"),i>=550&&Lo("Quincentennial and a half"),i>=600&&Lo("Sexcentennial"),t>=100&&Lo("Builder"),t>=500&&Lo("Architect"),t>=1e3&&Lo("Engineer"),t>=2e3&&Lo("Lord of Constructs"),t>=4e3&&Lo("Grand design"),t>=8e3&&Lo("Ecumenopolis"),Ee>=20&&Lo("Enhancer"),Ee>=50&&Lo("Augmenter"),Ee>=100&&Lo("Upgrader"),Ee>=200&&Lo("Lord of Progress"),Ee>=300&&Lo("The full picture"),Ee>=400&&Lo("When there's nothing left to add"),t>=4e3&&Ee>=300&&Lo("Polymath"),t>=8e3&&Ee>=400&&Lo("Renaissance baker"),Vt.Cursor.amount+Vt.Grandma.amount>=777&&Lo("The elder scrolls");let a=!0;for(const e of Object.keys(Uo))Zt(Uo[e])||(a=!1);a&&Lo("Spooky cookies");let r=!0;for(const e of Object.keys(Do))Zt(Do[e])||(r=!1);if(r&&Lo("Let it snow"),Zt("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;for(const o of Object.keys(e))Zt(e[o].name)&&t++;t>=e.length&&Lo("O Fortuna")}}function zo(e,t){xo(),Vt[e].amount+=t;const o=Vt[e];if("Cursor"===e)o.amount>=1&&Lo("Click"),o.amount>=2&&Lo("Double-click"),o.amount>=50&&Lo("Mouse wheel"),o.amount>=100&&Lo("Of Mice and Men"),o.amount>=200&&Lo("The Digital"),o.amount>=300&&Lo("Extreme polydactyly"),o.amount>=400&&Lo("Dr. T"),o.amount>=500&&Lo("Thumbs, phalanges, metacarpals"),o.amount>=600&&Lo("With her finger and her thumb"),o.amount>=700&&Lo("Gotta hand it to you"),o.amount>=800&&Lo("The devil's workshop");else for(const e in Game.Objects[o.name].tieredAchievs)o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&Lo(Game.Objects[o.name].tieredAchievs[e].name);const n=Oe;return Ao(),Io(),n!==Oe&&Ao(),De-Game.cookiesPs}function Vo(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){xo(),"Shimmering veil [on]"===_t[e].name?_t["Shimmering veil [off]"].bought=0:"Golden switch [on]"===_t[e].name?_t["Golden switch [off]"].bought=0:_t[e].bought=(_t[e].bought+1)%2,_t[e],Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&Ee++,"Elder Pledge"===e?(Ne++,Ne>0&&Lo("Elder nap"),Ne>=5&&Lo("Elder slumber")):"Elder Covenant"===e?Lo("Elder calm"):"Prism heart biscuits"===e?Lo("Lovely cookies"):"Heavenly key"===e&&Lo("Wholesome");const t=Oe;Ao(),Io(),t!==Oe&&Ao();const o=function(){let e=0;Zt("Thousand fingers")&&(e+=.1),Zt("Million fingers")&&(e*=5),Zt("Billion fingers")&&(e*=10),Zt("Trillion fingers")&&(e*=20),Zt("Quadrillion fingers")&&(e*=20),Zt("Quintillion fingers")&&(e*=20),Zt("Sextillion fingers")&&(e*=20),Zt("Septillion fingers")&&(e*=20),Zt("Octillion fingers")&&(e*=20),Zt("Nonillion fingers")&&(e*=20);let t=0;for(const e of Object.keys(Vt))t+=Vt[e].amount;t-=Vt.Cursor.amount,e*=t,Zt("Plastic mouse")&&(e+=.01*De),Zt("Iron mouse")&&(e+=.01*De),Zt("Titanium mouse")&&(e+=.01*De),Zt("Adamantium mouse")&&(e+=.01*De),Zt("Unobtainium mouse")&&(e+=.01*De),Zt("Eludium mouse")&&(e+=.01*De),Zt("Wishalloy mouse")&&(e+=.01*De),Zt("Fantasteel mouse")&&(e+=.01*De),Zt("Nevercrack mouse")&&(e+=.01*De),Zt("Armythril mouse")&&(e+=.01*De),Zt("Technobsidian mouse")&&(e+=.01*De),Zt("Plasmarble mouse")&&(e+=.01*De),Zt("Miraculite mouse")&&(e+=.01*De),Zt("Fortune #104")&&(e+=.01*De);let o=1;if(Zt("Santa's helpers")&&(o*=1.1),Zt("Cookie egg")&&(o*=1.1),Zt("Halo gloves")&&(o*=1.1),Zt("Dragon claw")&&(o*=1.03),Zt("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,Zt("Luminous gloves")?20:10)),o*=Jt("click"),Vt.Temple.minigameLoaded&&eo){const e=eo("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}for(const e of Object.keys(Game.buffs))void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick);o*=1+.05*Yt("Dragon Cursor");let n=o*Game.ComputeCps(1,Zt("Reinforced index finger")+Zt("Carpal tunnel prevention cream")+Zt("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[De-Game.cookiesPs,o]:[De-Game.cookiesPs]}return[]}function _o(e,t){const o=[];for(const t of Object.keys(Game.Objects))o[t]={},o[t].bonus=zo(t,e),1!==e&&(Se=1);return o}function Xo(){for(const e of Object.keys(Game.Objects))ct[e].price=To(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),dt[e].price=To(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),pt[e].price=To(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}function Qo(){ct=_o(1),dt=_o(10),pt=_o(100),function(){Ct=[];for(const e of Object.keys(Game.Upgrades)){const t=Vo(e);Ct[e]={},t[0]&&(Ct[e].bonus=t[0]),t[1]&&(Ct[e].bonusMouse=t[1])}}()}function qo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,xt=qo(7,e,nt),vt=2*xt[1]/nt,wt=xt[2]/60/60/6/ot,St=qo(6,e,it),Tt=2*St[1]/it,Mt=St[2]/60/60/6/ot,Et=qo(7,7*e,nt),Bt=2*Et[1]/nt,Pt=Et[2]/60/60/6/ot,Ft=qo(6,7*e,it),Nt=2*Ft[1]/it,Ot=Ft[2]/60/60/6/ot}function Ko(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Te,i=Math.max(0,o-Me)/n;for(let e=0;e\n\t`}function Zo(){bt="",Gt="",kt="";const e=[];for(const t of Object.keys(Game.Upgrades))e.push(Game.Upgrades[t]);e.sort((function(e,t){return e.order>t.order?1:e.order0?Ve/=e:Ve=0,_e=nt*(.15*Ve)+13,Xe=it*(.15*Ve)+13,Qe=7*Ve,qe=nt*(.15*Qe)+13,Ye=it*(.15*Qe)+13,Ke=2*Ve,Je=.15*Ke,Ze=0;let t=0,o=0;for(const e of Object.keys(Game.Objects))Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&o++;for(const e of Object.keys(Game.Objects))(Game.Objects[e].amountZe&&(Ze=2*Game.Objects[e].price,et=e)}function on(){let e=1,t=1,o=1;Zt("Green yeast digestives")&&(o*=1.01),Zt("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),nt=o*e,it=o*t,ot=1,0===Game.shimmerTypes.golden.n&&(ot*=1+1.23*Game.auraMult("Dragon's Fortune"))}function nn(){ut=0,mt=0,ht=[0,null];for(let e=0;eht[0]&&(ht=[t,e]))}}function an(){bo(),nn(),tn(),on(),Yo(),Zo(),en(),ce=new Eo(Q[Q.length-1]),de=new Eo(Q[Q.length-1]),pe=new Eo(Q[Q.length-1]),ue=new Eo(Q[Q.length-1]),me=new Eo(q[q.length-1]),he=new Eo(5),Ko(),No(),Qo(),Xo(),Wo()}const rn={BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,BuildColor:1,BulkBuildColor:0,UpBarColor:1,UpgradeBarFixedPos:1,CalcWrink:0,CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,ColorPPBulkMode:1,PPExcludeTop:0,PPSecondsLowerLimit:0,PPOnlyConsiderBuyable:0,ToolWarnBon:0,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,DragonAuraInfo:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,UpStats:1,TimeFormat:0,DetailedTime:1,GrimoireBar:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,Colors:{Blue:"#4bb8f0",Green:"#00ff00",Yellow:"#ffff00",Orange:"#ff7f00",Red:"#ff0000",Purple:"#ff00ff",Gray:"#b3b3b3",Pink:"#ff1493",Brown:"#8b4513"},SortBuildings:0,SortUpgrades:0,GCTimer:1,Favicon:1,WrinklerButtons:1,BulkBuyBlock:0,Header:{BarsColors:1,Calculation:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Tooltip:1,Statistics:1,Notation:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},ln=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function sn(){1===e.BotBar?(l("CMBotBar").style.display="",co()):l("CMBotBar").style.display="none",uo()}function cn(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),co(),no(),io()}function dn(){let t="";for(let o=0;o0?At.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class un{constructor(e,t){this.type=e,this.group=t}}class mn extends un{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class hn extends un{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class fn extends un{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const gn={BotBar:new mn("bool","BarsColors",["Bottom Bar OFF","Bottom Bar ON"],"Building Information",!0,(function(){sn()})),TimerBar:new mn("bool","BarsColors",["Timer Bar OFF","Timer Bar ON"],"Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){mo()})),TimerBarPos:new mn("bool","BarsColors",["Timer Bar Position (Top Left)","Timer Bar Position (Bottom)"],"Placement of the Timer Bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),uo()})),TimerBarOverlay:new mn("bool","BarsColors",["Timer Bar Overlay OFF","Timer Bar Overlay Only Seconds","Timer Bar Overlay Full"],"Overlay on timers displaying seconds and/or percentage left",!0),SortBuildings:new mn("bool","BarsColors",["Sort Buildings: Default","Sort Buildings: PP"],"Sort the display of buildings in either default order or by PP",!1,(function(){no()})),SortUpgrades:new mn("bool","BarsColors",["Sort Upgrades: Default","Sort Upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){io()})),BuildColor:new mn("bool","BarsColors",["Building Colors OFF","Building Colors ON"],"Color code buildings",!0,(function(){no()})),BulkBuildColor:new mn("bool","BarsColors",["Bulk Building Colors (Single Building Color)","Bulk Building Colors (Calculated Bulk Color)"],"Color code bulk buildings based on single buildings color or calculated bulk value color",!1,(function(){no()})),UpBarColor:new mn("bool","BarsColors",["Upgrade Colors/Bar OFF","Upgrade Colors with Bar ON","Upgrade Colors without Bar ON"],"Color code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",io()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",io()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),Colors:new class extends un{constructor(e,t,o,n){super(e,t),this.desc=o,this.func=n}}("color","BarsColors",{Blue:"Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels",Green:"Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels",Yellow:"Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels",Orange:"Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels",Red:"Color Red. Used to show worst PP building, for Clot bar, and for various labels",Purple:"Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels",Gray:"Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar",Pink:"Color Pink. Used for Dragonflight bar",Brown:"Color Brown. Used for Dragon Harvest bar"},(function(){dn()})),UpgradeBarFixedPos:new mn("bool","BarsColors",["Upgrade Bar Fixed Position OFF","Upgrade Bar Fixed Position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),CalcWrink:new mn("bool","Calculation",["Calculate with Wrinklers OFF","Calculate with Wrinklers ON","Calculate with Single Fattest Wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers",!0),CPSMode:new mn("bool","Calculation",["Current Cookies Per Second","Average Cookies Per Second"],"Calculate times using current Cookies Per Second or average Cookies Per Second",!1),AvgCPSHist:new mn("bool","Calculation",["Average CPS for past 10s","Average CPS for past 15s","Average CPS for past 30s","Average CPS for past 1m","Average CPS for past 5m","Average CPS for past 10m","Average CPS for past 15m","Average CPS for past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new mn("bool","Calculation",["Average Cookie Clicks for past 1s","Average Cookie Clicks for past 5s","Average Cookie Clicks for past 10s","Average Cookie Clicks for past 15s","Average Cookie Clicks for past 30s"],"How much time average Cookie Clicks should consider",!1),ColorPPBulkMode:new mn("bool","Calculation",["Color of PP (Compared to Single)","Color of PP (Compared to Bulk)"],"Color PP-values based on comparison with single purchase or with selected bulk-buy mode",!1,(function(){Wo()})),PPExcludeTop:new mn("bool","Calculation",["Don't Ignore Any","Ignore 1st Best","Ignore 1st and 2nd Best","Ignore 1st, 2nd and 3rd Best"],"Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPSecondsLowerLimit:new fn("numscale","Calculation","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),PPOnlyConsiderBuyable:new mn("bool","Calculation",["Don't Ignore Non-Buyable","Ignore Non-Buyable"],"Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),ToolWarnBon:new mn("bool","Calculation",["Calculate Tooltip Warning With Bonus CPS OFF","Calculate Tooltip Warning With Bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),Title:new mn("bool","NotificationGeneral",["Title OFF","Title ON","Title Pinned Tab Highlight"],'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn',!0),GeneralSound:new mn("bool","NotificationGeneral",["Consider Game Volume Setting OFF","Consider Game Volume Setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new mn("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when Golden Cookie spawns",!0,(function(){ln(e.GCNotification)})),GCFlash:new mn("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on Golden Cookie",!0),GCSound:new mn("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on Golden Cookie",!0),GCVolume:new hn("vol","NotificationGC",[],"Volume"),GCSoundURL:new mn("url","NotificationGC","Sound URL:","URL of the sound to be played when a Golden Cookie spawns"),FortuneNotification:new mn("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when Fortune Cookie is on the Ticker",!0,(function(){ln(e.FortuneNotification)})),FortuneFlash:new mn("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on Fortune Cookie",!0),FortuneSound:new mn("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on Fortune Cookie",!0),FortuneVolume:new hn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new mn("url","NotificationFC","Sound URL:","URL of the sound to be played when the Ticker has a Fortune Cookie"),SeaNotification:new mn("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on Season Popup",!0,(function(){ln(e.SeaNotification)})),SeaFlash:new mn("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on Season Popup",!0),SeaSound:new mn("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on Season Popup",!0),SeaVolume:new hn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new mn("url","NotificationSea","Sound URL:","URL of the sound to be played when a Season Special spawns"),GardFlash:new mn("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on Garden Tick",!0),GardSound:new mn("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on Garden Tick",!0),GardVolume:new hn("vol","NotificationGard",[],"Volume"),GardSoundURL:new mn("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new mn("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){ln(e.MagicNotification)})),MagicFlash:new mn("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),MagicSound:new mn("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new hn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new mn("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new mn("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a Wrinkler appears",!0,(function(){ln(e.WrinklerNotification)})),WrinklerFlash:new mn("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a Wrinkler appears",!0),WrinklerSound:new mn("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a Wrinkler appears",!0),WrinklerVolume:new hn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new mn("url","NotificationWrink","Sound URL:","URL of the sound to be played when a Wrinkler appears"),WrinklerMaxNotification:new mn("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of Wrinklers has appeared",!0,(function(){ln(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new mn("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxSound:new mn("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxVolume:new hn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new mn("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of Wrinklers has appeared"),TooltipBuildUpgrade:new mn("bool","Tooltip",["Building/Upgrade Tooltip Information OFF","Building/Upgrade Tooltip Information ON"],"Extra information in Building/Upgrade tooltips",!0),TooltipAmor:new mn("bool","Tooltip",["Buildings Tooltip Amortization Information OFF","Buildings Tooltip Amortization Information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new mn("bool","Tooltip",["Tooltip Lucky Warning OFF","Tooltip Lucky Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new mn("bool","Tooltip",["Tooltip Lucky Frenzy Warning OFF","Tooltip Lucky Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new mn("bool","Tooltip",["Tooltip Conjure Warning OFF","Tooltip Conjure Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new mn("bool","Tooltip",["Tooltip Conjure Frenzy Warning OFF","Tooltip Conjure Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new mn("bool","Tooltip",["Tooltip Edifice Warning OFF","Tooltip Edifice Warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new fn("numscale","Tooltip","Tooltip Warning At x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnPos:new mn("bool","Tooltip",["Tooltip Warning Position (Left)","Tooltip Warning Position (Bottom)"],"Placement of the warning boxes",!1,(function(){fo()})),TooltipGrim:new mn("bool","Tooltip",["Grimoire Tooltip Information OFF","Grimoire Tooltip Information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new mn("bool","Tooltip",["Wrinkler Tooltip OFF","Wrinkler Tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new mn("bool","Tooltip",["Sugar Lump Tooltip OFF","Sugar Lump Tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new mn("bool","Tooltip",["Garden Plots Tooltip OFF","Garden Plots Tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),DragonAuraInfo:new mn("bool","Tooltip",["Extra Dragon Aura Info OFF","Extra Dragon Aura Info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),TooltipAscendButton:new mn("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new mn("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new mn("bool","Statistics",["Missing Upgrades OFF","Missing Upgrades ON"],"Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.",!0),UpStats:new mn("bool","Statistics",["Statistics Update Rate (Default)","Statistics Update Rate (1s)"],"Default Game rate is once every 5 seconds",!1),TimeFormat:new mn("bool","Statistics",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new mn("bool","Statistics",["Detailed Time OFF","Detailed Time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=H:Game.sayTime=M.sayTime})),GrimoireBar:new mn("bool","Statistics",["Grimoire Magic Meter Timer OFF","Grimoire Magic Meter Timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),HeavenlyChipsTarget:new fn("numscale","Statistics","Heavenly Chips Target: ",'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new mn("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many Golden Cookies you have missed",!0),Scale:new mn("bool","Notation",["Game's Setting Scale","Metric","Short Scale","Short Scale (Abbreviated)","Scientific Notation","Engineering Notation"],"Change how long numbers are handled",!1,(function(){cn()})),ScaleDecimals:new mn("bool","Notation",["1 decimals","2 decimals","3 decimals"],"Set the number of decimals used when applicable",!1,(function(){cn()})),ScaleSeparator:new mn("bool","Notation",[". for decimals (Standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){cn()})),ScaleCutoff:new fn("numscale","Notation","Notation Cut-off Point: ","The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),GCTimer:new mn("bool","Miscellaneous",["Golden Cookie Timer OFF","Golden Cookie Timer ON"],"A timer on the Golden Cookie when it has been spawned",!0,(function(){!function(){if(1===e.GCTimer)for(const e of Object.keys(ie))ie[e].style.display="block",ie[e].style.left=It[e].l.style.left,ie[e].style.top=It[e].l.style.top;else for(const e of Object.keys(ie))ie[e].style.display="none"}()})),Favicon:new mn("bool","Miscellaneous",["Favicon OFF","Favicon ON"],"Update favicon with Golden/Wrath Cookie",!0,(function(){pn()})),WrinklerButtons:new mn("bool","Miscellaneous",["Extra Buttons OFF","Extra Buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){e.WrinklerButtons?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")})),BulkBuyBlock:new mn("bool","Miscellaneous",["Block Bulk Buying OFF","Block Bulk Buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0)};function Cn(){return JSON.stringify({settings:e,version:"2.031.5"})}function yn(){if(Ie!==Game.dragonLevel||je){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount0&&(e=t);Vt[e].amount--,Pe--}for(const t of Object.keys(Vt)){const o=Vt[t];e+=oo(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)}return e}(),zt=e}(),je=0);const t=Game.auraMult("Fierce Hoarder")>0;!Be&&t?(Be=!0,Se=1):Be&&!t&&(Be=!1,Se=1),Se&&(Xo(),Se=0),function(){nn(),Wo(),function(){ft=0;let e=0;for(const t in Game.wrinklers)2===Game.wrinklers[t].phase&&e++;let t=1;if(Vt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}gt=e,ft=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),No(),Ko();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);Ut=le(e/ao())}(),function(){!function(){k=0,It={};for(const e of Object.keys(Game.shimmers))It[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(At=Game.shimmers[e],k+=1)}();for(const e of Object.keys(ie))void 0===It[e]&&(ie[e].parentNode.removeChild(ie[e]),delete ie[e]);if(C!==Game.shimmerTypes.golden.n){if(C=Game.shimmerTypes.golden.n,C){y0){let t=0;for(const e in Game.wrinklers)2===Game.wrinklers[e].phase&&t++;t>G?(G=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?Gn(3,"WrinklerMaxFlash"):Gn(3,"WrinklerFlash"),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?vn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume"):vn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume"),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?xn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):xn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):G=t}}()}}function Mn(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${Cn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function Sn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t;let o=!1;for(const t in rn)if(void 0===e[t])o=!0,e[t]=rn[t];else if("Header"!==t&&"Colors"!==t)-1===t.indexOf("SoundURL")?e[t]>-1&&e[t]-1&&e[t][n]<2||(o=!0,e[t][n]=rn[t][n]);else for(const n in rn.Colors)void 0!==e[t][n]&&"string"==typeof e[t][n]||(o=!0,e[t][n]=rn[t][n]);o&&Mn(),Tn();for(const e in rn)"Header"!==e&&void 0!==gn[e].func&&gn[e].func()}else Sn(rn)}function Bn(){for(const e of Object.keys(Game.wrinklers))Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}function Pn(){if(Game.Objects["Wizard tower"].minigameLoaded)for(const e in Game.Objects["Wizard tower"].minigame.spellsById)null!==l(`grimoireSpell${e}`).onmouseover&&(x[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("g",`${e}`)}),"this"),Game.tooltip.wobble()})}function En(){if(!u&&Game.Objects["Wizard tower"].minigameLoaded){const t=Game.Objects["Wizard tower"].minigame;d=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){d(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),Mn()}function jn(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){An(o),Game.UpdateMenu()},n.appendChild(i),n}function Un(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(D[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function Dn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a);for(const t of Object.keys(e)){const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)}return n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Rn(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(jn("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+ro()0&&(t.appendChild(Un("basic","Heavenly Chips To Target Set In Settings (CUR)",document.createTextNode(re(e)))),t.appendChild(Un("basic","Time To Target (CUR, Current 5 Second Average)",document.createTextNode(le(e/at)))))}const l=function(e){let t=Game.cookiesPs;xo(),0===_t["Heavenly key"].bought&&(_t["Heavenly chip secret"].bought=1,_t["Heavenly cookie stand"].bought=1,_t["Heavenly bakery"].bought=1,_t["Heavenly confectionery"].bought=1,_t["Heavenly key"].bought=1,Ao(),t=De,xo()),Wt>=1e6&&Lo("Sacrifice"),Wt>=1e9&&Lo("Oblivion"),Wt>=1e12&&Lo("From scratch"),Wt>=1e15&&Lo("Nihilism"),Wt>=1e18&&Lo("Dematerialize"),Wt>=1e21&&Lo("Nil zero zilch"),Wt>=1e24&&Lo("Transcendence"),Wt>=1e27&&Lo("Obliterate"),Wt>=1e30&&Lo("Negative void"),Wt>=1e33&&Lo("To crumbs, you say?"),Wt>=1e36&&Lo("You get nothing"),Wt>=1e39&&Lo("Humble rebeginnings"),Wt>=1e42&&Lo("The end of the world"),Wt>=1e45&&Lo("Oh, you're back"),Wt>=1e48&&Lo("Lazarus"),Wt>=1e51&&Lo("Smurf account"),Wt>=1e54&&Lo("If at first you don't succeed"),_t["Heavenly chip secret"].bought=1,_t["Heavenly cookie stand"].bought=1,_t["Heavenly bakery"].bought=1,_t["Heavenly confectionery"].bought=1,_t["Heavenly key"].bought=1,We=e;const o=Oe;Ao(),Io(),o!==Oe&&Ao();const n=De-t;return We=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(re(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(Un("withTooltip","Reset Bonus Income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(jn("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${re(ut)} / ${re(mt)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){Bn()},e.appendChild(t),o.appendChild(Un("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${re(ht[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==ht[1]&&(Game.wrinklers[ht[1]].hp=0)},n.appendChild(i),o.appendChild(Un("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==ht[1]?ht[1]:"None"})`,n))}let n=!1;const i=[];for(const e of Object.keys(Uo))Game.Has(Uo[e])||(i.push(Uo[e]),n=!0);const a=[];for(const e of Object.keys(Do))Game.Has(Do[e])||(a.push(Do[e]),n=!0);const r=[];for(const e of Object.keys(Ro))Game.Has(Ro[e])||(r.push(Ro[e]),n=!0);const s=[];for(const e of Object.keys(Game.eggDrops))Game.HasUnlocked(Game.eggDrops[e])||(s.push(Game.eggDrops[e]),n=!0);const c=[];for(const e of Object.keys(Game.rareEggDrops))Game.HasUnlocked(Game.rareEggDrops[e])||(c.push(Game.rareEggDrops[e]),n=!0);const d=[];for(const e of Object.keys(Ho))Game.HasUnlocked(Ho[e])||(d.push(Ho[e]),n=!0);const p=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),u=Game.Has("Century egg");if(("christmas"===Game.season||n||p||u)&&(o.appendChild(jn("Season Specials","Sea")),e.Header.Sea&&(0!==i.length&&o.appendChild(Un("basic","Halloween Cookies Left to Buy",Dn(i))),0!==a.length&&o.appendChild(Un("basic","Christmas Cookies Left to Buy",Dn(a))),0!==r.length&&o.appendChild(Un("basic","Valentine Cookies Left to Buy",Dn(r))),0!==s.length&&o.appendChild(Un("basic","Normal Easter Eggs Left to Unlock",Dn(s))),0!==c.length&&o.appendChild(Un("basic","Rare Easter Eggs Left to Unlock",Dn(c))),0!==d.length&&o.appendChild(Un("basic","Rare Plant Drops Left to Unlock",Dn(d))),"christmas"===Game.season&&o.appendChild(Un("basic","Reindeer Reward",document.createTextNode(re(lt)))),p&&o.appendChild(Un("withTooltip","Chocolate Egg Cookies",document.createTextNode(re(st)),"ChoEggTooltipPlaceholder")),u&&o.appendChild(Un("basic","Century Egg Multiplier",document.createTextNode(Math.round(1e4*(rt-1))/100+"%"))))),o.appendChild(jn("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(Un("basic",`Average Cookies Per Second (Past ${Q[e.AvgCPSHist]<60?`${Q[e.AvgCPSHist]} seconds`:Q[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(re(ao(),3)))),o.appendChild(Un("basic",`Average Cookie Clicks Per Second (Past ${q[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(re(yt,1)))),Game.Has("Fortune cookies")){const e=[];for(const t of Object.keys(jo))Game.Has(jo[t])||e.push(jo[t]);0!==e.length&&o.appendChild(Un("basic","Fortune Upgrades Left to Buy",Dn(e)))}if(e.ShowMissedGC&&o.appendChild(Un("basic","Missed Golden Cookies",document.createTextNode(re(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(Un("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&function(){for(const e of l("menu").children)if(e.children[0])if("Prestige"===e.children[0].innerHTML&&kt){const t=kt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=kt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(bt){const t=bt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=bt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Gt){const t=Gt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Gt,e.appendChild(i)}}}()}const Hn={BarsColors:"Bars/Colors",Calculation:"Calculation",Notification:"Notification",Tooltip:"Tooltips and additional insights",Statistics:"Statistics",Notation:"Notation",Miscellaneous:"Miscellaneous"},$n={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function In(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){An(t),Game.UpdateMenu()},n.appendChild(i),n}function zn(t){const o=document.createElement("div");if(o.className="listing","bool"===gn[t].type){const n=document.createElement("a");gn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=Wn+t,n.onclick=function(){!function(t){e[t]++,e[t]===gn[t].label.length?(e[t]=0,gn[t].toggle&&(l(Wn+t).className="option off")):l(Wn+t).className="option",void 0!==gn[t].func&&gn[t].func(),l(Wn+t).innerHTML=gn[t].label[e[t]],Mn()}(t)},n.textContent=gn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=gn[t].desc,o.appendChild(i),o}if("vol"===gn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=gn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");return r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Ln(t)},r.onchange=function(){Ln(t)},n.appendChild(r),o.appendChild(n),o}if("url"===gn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${gn[t].label} `,o.appendChild(n);const i=document.createElement("input");i.id=Wn+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${Wn+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){Game.Prompt(a.outerHTML,[["Save",function(){e[`${t}`]=l(`CMConfig${t}Prompt`).value,Mn(),Game.ClosePrompt(),Game.UpdateMenu()}],"Cancel"])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=gn[t].desc,o.appendChild(s),o}if("color"===gn[t].type){o.className="";for(let t=0;tthis.max&&console.log("TEST"),e[t]=this.value,Mn(),cn()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=gn[t].desc,o.appendChild(a),o}return o}function Vn(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function _n(){M.Beautify=Beautify,Beautify=re,M.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){M.CalculateGains(),je=1,qt=Date.now(),Qt=Date.now()},M.tooltip={},M.tooltip.draw=Game.tooltip.draw,M.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){M.tooltip.drawMod(e,t,o)},M.tooltip.update=Game.tooltip.update,M.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){M.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},M.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Vn(M.UpdateWrinklers)},M.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Vn(M.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){Vn(Game.ClickCookie)}),!1),M.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){M.RebuildUpgrades(),function(){T=[];for(const e of Object.keys(Game.UpgradesInStore))null!==l(`upgrade${e}`).onmouseover&&(T[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("u",`${e}`)}),"store"),Game.tooltip.wobble())})}(),Game.CalculateGains()},M.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e-1].amount>0){const o=Vt[Game.ObjectsById[e].name].name;Vt[o].amount-=1,Pe-=1,t=Vt[o].basePrice*Game.priceIncrease**Math.max(0,Vt[o].amount-1-Vt[o].free),t=Game.modifyBuildingPrice(Vt[o],t),t=Math.ceil(t);break}const o=Oe;return Ao(),Io(),o!==Oe&&Ao(),[De-Game.cookiesPs,t]}(t),n=le(o/(e+Game.cookiesPs)),i=re(e/Game.cookiesPs);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${re(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},M.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){M.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${ze}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},M.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Fn().picker&&void 0!==Fn().picker.owner||(M.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t);for(const t of Object.keys(Hn)){const n=In(t,Hn[t]);if(o.appendChild(n),e.Header[t])if("Notification"===t)for(const t of Object.keys($n)){const n=In(t,$n[t]);if(n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t])for(const e in gn)gn[e].group===t&&o.appendChild(zn(e))}else for(const e of Object.keys(gn))gn[e].group===t&&o.appendChild(zn(e))}const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){Sn(rn)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Rn(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){An("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML='
\nThe latest update (v 2.031.5) sees a total rehaul of the backend of the mod. It does not introduce any new functions, this is planned for the next release.
\nWe believe we have fixed all bugs related to this new code, but if you find any bugs, please report them on the GitHub!
\n
\nBesides, this update fixes the following bugs:
\n- Fixed some upgrade tooltips which did not display the full effect of buying the upgrades
\n- Fixed not always being able to sell when "blocking bulk buy"
\n- Fixed heavenly chips per second display
\n- Fixed small display bug when pressing shift and hovering over garden plots
\n- Fixed some bugs with the display of numbers and formatting of them
\n
\n
\n',o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},M.sayTime=Game.sayTime,H=function(e,t){return Number.isNaN(e)||e<=0?M.sayTime(e,t):le(e/Game.fps,1)},M.Logic=Game.Logic,Game.Logic=function(){M.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),ae=`${Game.OnAscend?"Ascending! ":""}${re(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=ae;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=At?At.wrath?`[W${Math.ceil(At.life/Game.fps)}]`:`[G${Math.ceil(At.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,f&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=h?`[R${Math.ceil(jt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=ae;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;At&&(t=!0,At.wrath?e+=`[W${Math.ceil(At.life/Game.fps)}]`:e+=`[G${Math.ceil(At.life/Game.fps)}]`),f&&(t=!0,e+="[F]"),"christmas"===Game.season&&h&&(e+=`[R${Math.ceil(jt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${re(Game.prestige)}.
(CpS +${re(Game.prestige)}%)`,n+='
'),n+=Me<1?"Ascending now would grant you no prestige.":Me<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${re(Me)} prestige levels (+${re(Me)}% CpS)
and ${re(Me)} heavenly chips to spend.`,n+='
',n+=`You need ${re(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${Ut} to reach the next level and you are making ${re(at,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Xn(){bn(),tn(),an(),a=Object.keys(Game.mods).length,v=document.createElement("style"),v.type="text/css",v.id="CMCSS",document.head.appendChild(v),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=S+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.5",N)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",P)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",P)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",P)),l("wrapper").appendChild(e);for(const e of Object.keys(Game.Objects))so(e)}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=lo("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:L},{id:"CMTimerBarGCBar",color:W}]);e.appendChild(t);const o=lo("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:L},{id:"CMTimerBarRenBar",color:O}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=B+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(P,"Better than best PP building")),e.appendChild(o(E,"Same as best PP building")),e.appendChild(o(N,"Between best and worst PP buildings closer to best")),e.appendChild(o(O,"Between best and worst PP buildings closer to worst")),e.appendChild(o(F,"Same as worst PP building")),e.appendChild(o(W,"Worse than worst PP building")),e.appendChild(o(L,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=S+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",P)),e.appendChild(o("CMUpgradeBarGreen",E)),e.appendChild(o("CMUpgradeBarYellow",N)),e.appendChild(o("CMUpgradeBarOrange",O)),e.appendChild(o("CMUpgradeBarRed",F)),e.appendChild(o("CMUpgradeBarPurple",W)),e.appendChild(o("CMUpgradeBarGray",L)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMWhiteScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}();for(const e of Object.keys(D))Mo(D[e][0],D[e][1],D[e][2]);!function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Bn()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==ht[1]&&(Game.wrinklers[ht[1]].hp=0)},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",function(){for(const e of Object.keys(Game.Objects)){const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(w[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("b",`${e}`)}),"store"),Game.tooltip.wobble()})}}(),Game.canLumps()&&(r=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("s","Lump")}),"this"),Game.tooltip.wobble()}),m=Game.LoadMinigames,Game.LoadMinigames=function(){m(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Pn(),Nn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){$=1},l("backgroundLeftCanvas").onmouseout=function(){$=0,Game.tooltip.hide();for(const e of Object.keys(Game.wrinklers))z[e]=0},_n(),Nn(),Game.CalculateGains(),Sn(),R=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.5 loaded!"):Game.Notify("Cookie Monster version 2.031.5 loaded!","","",1,1),Game.Win("Third-party")}const Qn={init:function(){kn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.5 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Xn(),Game.registerHook("draw",Po),Game.registerHook("logic",Tn),kn=!1)},load:function(e){const t=JSON.parse(e);bn(),Sn(t.settings),"2.031.5"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:Cn};Game.registerMod("CookieMonster",Qn)})()})(); +(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],g=o.fixed?"fixed":"absolute",f=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var g=m[h];if(g)if(i.pub.presets.hasOwnProperty(g)){for(var u in i.pub.presets[g])if(i.pub.presets[g].hasOwnProperty(u))try{a(u,i.pub.presets[g][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===f.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};const t=["","","M","G","T","P","E","Z","Y"],n=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],i=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let a,r,s,c,d,p,u,m,h,g,f,C,y,b,k,G,v,w=[],x=[],T=[],M={};const S="CMText",B="CMBack",P="Blue",E="Green",N="Yellow",O="Orange",F="Red",W="Purple",L="Gray",A="Pink",j="Brown",U=[L,P,E,N,O,F,W,A,j],D=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"]],H={};let R,$,I=0,z=-1,V=[],_=1,X=1,Q=1;const q=[10,15,30,60,300,600,900,1800],Y=[1,5,10,15,30],K={Frenzy:N,"Dragon Harvest":j,"Elder frenzy":E,Clot:F,"Click frenzy":P,Dragonflight:A};let J,Z,ee,te,oe,ne,ie,ae={},re="";function le(o,a,r){const l=e.ScaleDecimals+1;if(o===1/0)return"Infinity";if(void 0===o)return"0";if(0===e.Scale)return M.Beautify(o,a);if(Number.isFinite(o)){let s="";if(0===o)return o.toString();if(o>.001&&o=.01&&o=.01&&o=.01&&o315576e4)return"XX:XX:XX:XX:XX";c+=(i<10?"0":"")+i+":",c+=(a<10?"0":"")+a+":",c+=(r<10?"0":"")+r+":",c+=(l<10?"0":"")+l+":",c+=(s<10?"0":"")+s}else{if(n>7776e5)return o?"Over 9000 days!":">9000d";c+=i>0?i+(o?1===i?" year":" years":"y")+", ":"",c+=a>0?a+(o?1===a?" day":" days":"d")+", ":"",(c.length>0||r>0)&&(c+=r+(o?1===r?" hour":" hours":"h")+", "),(c.length>0||l>0)&&(c+=l+(o?1===l?" minute":" minutes":"m")+", "),c+=s+(o?1===s?" second":" seconds":"s")}return c}function ce(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=E):(n=se(t),o=t>300?F:t>60?O:N),{text:n,color:o}}let de,pe,ue,me,he,ge,fe,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,Ue,De,He,Re,$e,Ie,ze,Ve=0,_e=0,Xe=0,Qe=0,qe=0,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=0,nt=0,it=0,at=0,rt=1,lt=1,st=1,ct=0,dt=0,pt=0,ut=0,mt={},ht={},gt={},ft=0,Ct=0,yt=[0,null],bt=0,kt=0,Gt={},vt={},wt={},xt={},Tt={},Mt=0,St=0,Bt=[],Pt=0,Et=0,Nt=[],Ot=0,Ft=0,Wt=[],Lt=0,At=0,jt=[],Ut=0,Dt=0,Ht={},Rt={},$t=0,It=0,zt=[],Vt={},_t=0,Xt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Qt=[],qt=[],Yt=[],Kt=Game.startDate,Jt=Game.startDate;function Zt(e){let t=0;return Game.dragonAuras[Ae].name!==e&&Game.dragonAuras[je].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[Ae].name&&"Reality Bending"!==Game.dragonAuras[je].name||(t+=.1),t}function eo(){let e=.25;return e*=1+Zt("Earth Shatterer"),e}function to(e,t){return void 0===$e[e]?void 0===t?1:t:$e[e]}function oo(e){const t=qt[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function no(e){if(Game.hasGod){void 0===Qt.Temple.minigame&&(Qt.Temple.minigame=Game.Objects.Temple.minigame);const t=Qt.Temple.minigame.gods[e];if(Ue===t.id)return 1;if(De===t.id)return 2;if(He===t.id)return 3}return!1}function io(e,t){let o=t;if(oo("Season savings")&&(o*=.99),oo("Santa's dominion")&&(o*=.99),oo("Faberge egg")&&(o*=.99),oo("Divine discount")&&(o*=.99),oo("Fortune #100")&&(o*=.99),o*=1-.02*Zt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&oo(e.fortune.name)&&(o*=.93),o*=to("buildingCost"),Qt.Temple.minigameLoaded){const e=no("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function ao(e,t,o,n,i,a){const r=void 0===a?0:a;let l=i,s=o,c=0;-1===i&&(l=s),i||(l=Game.buyBulk);for(let o=0;o0&&(c+=o,s-=1)}return c}function ro(){let t=Game.buyBulk;if(1===Game.buyMode?X=t:t=X,1===t?t=mt:10===t?t=ht:100===t&&(t=gt),1===Game.buyMode?1===e.BuildColor?Object.keys(t).forEach((o=>{l(`productPrice${Game.Objects[o].id}`).style.color=e.Colors[t[o].color]})):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(mt).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=le(ao(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&e.SortBuildings){let o;1===e.SortBuildings?(o=Object.keys(mt).map((e=>{const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eU.indexOf(t.color)?1:U.indexOf(e.color)e.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e{let n,i=Game.buyBulk;1===Game.buyMode?_=i:i=_,1===i&&(i=mt),10===i&&(i=ht),100===i&&(i=gt),t+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[t].childNodes[1].textContent=Game.Objects[o].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[t].textContent=le(i[o].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].className=S+i[o].color,n=e.PPDisplayTime?se(Math.round(i[o].pp)):le(Math.round(i[o].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].textContent=n;const a=ce((Game.Objects[o].bulkPrice-(Game.cookies+co()))/so());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[t].className=S+a.color,"Done!"===a.text&&Game.cookies{!Game.Tiers[e.tieredUpgrades[o].tier].special&&oo(e.tieredUpgrades[o].name)&&(t*=2)})),Object.keys(e.synergies).forEach((o=>{if(oo(e.synergies[o].name)){const n=e.synergies[o];n.buildingTie1.name===e.name?t*=1+.05*n.buildingTie2.amount:n.buildingTie2.name===e.name&&(t*=1+.001*n.buildingTie1.amount)}})),e.fortune&&oo(e.fortune.name)&&(t*=1.07),e.grandma&&oo(e.grandma.name)&&(t*=1+.01*Qt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&oo(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function ko(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;oo("Thousand fingers")&&(t+=.1),oo("Million fingers")&&(t*=5),oo("Billion fingers")&&(t*=10),oo("Trillion fingers")&&(t*=20),oo("Quadrillion fingers")&&(t*=20),oo("Quintillion fingers")&&(t*=20),oo("Sextillion fingers")&&(t*=20),oo("Septillion fingers")&&(t*=20),oo("Octillion fingers")&&(t*=20),oo("Nonillion fingers")&&(t*=20);let o=1,n=0;return Object.keys(Qt).forEach((e=>{"Cursor"!==Qt[e].name&&(n+=Qt[e].amount)})),t*=n,o*=bo(e),o*=Game.magicCpS("Cursor"),o*=to("cursorCps"),Game.ComputeCps(.1,oo("Reinforced index finger")+oo("Carpal tunnel prevention cream")+oo("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{oo(Game.GrandmaSynergies[e])&&(o*=2)})),oo("Bingo center/Research facility")&&(o*=4),oo("Ritual rolling pins")&&(o*=2),oo("Naughty list")&&(o*=2),oo("Elderwort biscuits")&&(o*=1.02),o*=to("grandmaCps"),oo("Cat ladies"))for(let e=0;e{"Grandma"!==Qt[e].name&&(i+=Qt[e].amount)})),o*=1+.01*Zt("Elder Battalion")*i,o*=Game.magicCpS(t.name),(t.baseCps+n)*o}:o.cps=function(e){let t=1;return t*=bo(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o}function Go(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Qt).forEach((t=>{Qt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(oo("Starlove")&&(e=3),Game.hasGod){const t=no("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function vo(){Ne=Game.UpgradesOwned,Oe=Game.pledges,Fe=Game.AchievementsOwned,We=Game.heavenlyPower,Le=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Qt[e];void 0===o&&(Qt[e]=ko(e),o=Qt[e],uo(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(Ue=t.minigame.slot[0],De=t.minigame.slot[1],He=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Qt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=qt[e];void 0===o&&(qt[e]=Go(e),o=qt[e]),o.bought=t.bought,qt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=Yt[e];void 0===o&&(Yt[e]=yo(e),o=Yt[e]),o.won=t.won,Yt[e]=o})),Co(),Ae=Ve,je=_e}function wo(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function xo(e){e.appendChild(wo("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(wo("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(wo("Payback Period"));const n=document.createElement("div");n.style.marginBottom="4px",n.id="CMTooltipPP",e.appendChild(n),e.appendChild(wo("Time Left"));const i=document.createElement("div");if(i.id="CMTooltipTime",e.appendChild(i),"b"===ee){e.appendChild(wo("Production left till next achievement")),e.lastChild.id="CMTooltipProductionHeader";const t=document.createElement("div");t.id="CMTooltipProduction",e.appendChild(t)}}function To(e,t,o){let n=e,i=0;for(;n{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function So(){null!==l("CMDispTooltipWarningParent")&&(0===e.ToolWarnPos?(l("CMDispTooltipWarningParent").style.top="auto",l("CMDispTooltipWarningParent").style.margin="4px -4px",l("CMDispTooltipWarningParent").style.padding="3px 4px"):(l("CMDispTooltipWarningParent").style.right="auto",l("CMDispTooltipWarningParent").style.margin="4px",l("CMDispTooltipWarningParent").style.padding="4px 3px"))}function Bo(){if(vo(),"none"!==l("tooltipAnchor").style.display&&l("CMTooltipArea")){l("CMTooltipArea").innerHTML="";const t=function(){l("tooltip").firstChild.style.paddingBottom="4px";const e=document.createElement("div");return e.style.border="1px solid",e.style.padding="4px",e.style.margin="0px -4px",e.id="CMTooltipBorder",e.className="CMTextGray",e}();l("CMTooltipArea").appendChild(t),"b"===ee?function(){if(1===e.TooltipBuildUpgrade&&1===Game.buyMode){let t;if(xo(l("CMTooltipBorder")),1===Game.buyMode?Q=t:t=Q,1===Game.buyBulk?t=mt:10===Game.buyBulk?t=ht:100===Game.buyBulk&&(t=gt),J=Game.Objects[te].bulkPrice,Z=t[te].bonus,1===e.TooltipBuildUpgrade&&1===Game.buyMode){l("CMTooltipIncome").textContent=le(Z,2);const o=Math.round(Z/Game.cookiesPs*1e4);Number.isFinite(o)&&0!==o?l("CMTooltipIncome").textContent+=` (${o/100}% of income)`:l("CMTooltipIncome").textContent+=` (<0${e.ScaleSeparator?",":"."}01% of income)`,l("CMTooltipBorder").className=S+t[te].color,e.PPDisplayTime?l("CMTooltipPP").textContent=se(t[te].pp):l("CMTooltipPP").textContent=le(t[te].pp,2),l("CMTooltipPP").className=S+t[te].color;const n=ce((J-(Game.cookies+co()))/so());l("CMTooltipTime").textContent=n.text,"Done!"===n.text&&Game.cookiest.plantsById[t.plot[te[1]][te[0]][0]-1].matureBase,o=t.plantsById[t.plot[te[1]][te[0]][0]-1].name;l("CMTooltipBorder").appendChild(wo("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${le(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${le(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${le(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${le(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===ee?function(){const{minigame:t}=Game.Objects.Farm;if(e.TooltipLump){l("CMTooltipBorder").appendChild(wo("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n+=1):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((t=>{if(Game.buffs[t]){const a=po(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==K[Game.buffs[t].name]?K[Game.buffs[t].name]:W,a.lastChild.children[1].className=B+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n+=1,i[Game.buffs[t].name]=a}})),Object.keys(i).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(i[e])})),0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),ie!==n&&(ie=n,go())}}(),mo(),Bo(),function(){if(1===e.TooltipWrink&&1===I){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===V[t]||void 0===V[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),z=t,V[t]=1}}else V[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[z],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[z].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Qt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=le(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu();let t=l("cookies").innerHTML.replace(/.*(?=
)/i,le(Game.cookies));Game.prefs.monospace&&(t=`${t}`),l("cookies").innerHTML=t}class Eo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}}function No(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+_t;Game.cpsSucked>0&&(o+=ft),Ut=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-fe,i=Math.max(0,Game.cookies-Ce)/n,a=Math.max(0,ft-ye)/n,r=Math.max(0,yt[0]-be)/n,l=Math.max(0,o-ut)/n,s=(Game.cookieClicks-ke)/n;for(let e=0;ezt[30][0]?F:W,0!==Number(e.PPSecondsLowerLimit)&&o/so()0&&(n=F),n}function Fo(t,o){Object.keys(t).forEach((n=>{t[n].color=Oo(t[n],Game.Objects[n].getSumPrice(o));for(let o=0;o{const n=Game.Objects[o].getSumPrice(t);Game.cookiesPs?e[o].pp=Math.max(n-(Game.cookies+co()),0)/Game.cookiesPs+n/e[o].bonus:e[o].pp=n/e[o].bonus,zt.push([e[o].pp,t])}))}function Lo(){!function(){It=1/0,zt=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),Wo(mt,1),Wo(ht,10),Wo(gt,100),zt.sort(((e,t)=>e[0]-t[0]));let t=0;if(e.PPOnlyConsiderBuyable)for(;zt[t][1]>Game.cookies&&(t+=1,zt.length!==t+1););It=zt[e.PPExcludeTop][t],Fo(mt,1),Fo(ht,10),Fo(gt,100)}(),Object.keys(Gt).forEach((e=>{Game.cookiesPs?Gt[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+co()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/Gt[e].bonus:Gt[e].pp=Game.Upgrades[e].getPrice()/Gt[e].bonus,Number.isNaN(Gt[e].pp)&&(Gt[e].pp=1/0),Gt[e].color=Oo(Gt[e],Game.Upgrades[e].getPrice())}))}function Ao(e,t,o,n,i){let a=o,r=0;for(let o=0;o{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),$e=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(Le)*We*function(){let e=0;if(oo("Heavenly chip secret")&&(e+=.05),oo("Heavenly cookie stand")&&(e+=.2),oo("Heavenly bakery")&&(e+=.25),oo("Heavenly confectionery")&&(e+=.25),oo("Heavenly key")&&(e+=.25),e*=1+.05*Zt("Dragon God"),oo("Lucky digit")&&(e*=1.01),oo("Lucky number")&&(e*=1.01),oo("Lucky payout")&&(e*=1.01),Game.hasGod){const t=no("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=to("cps"),oo("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];oo(o.name)&&("function"==typeof o.power?e*=1+.01*qt[o.name].power(qt[o.name]):e*=1+.01*o.power)})),oo("Specialized chocolate chips")&&(e*=1.01),oo("Designer cocoa beans")&&(e*=1.02),oo("Underworld ovens")&&(e*=1.03),oo("Exotic nuts")&&(e*=1.04),oo("Arcane sugar")&&(e*=1.05),oo("Increased merriness")&&(e*=1.15),oo("Improved jolliness")&&(e*=1.15),oo("A lump of coal")&&(e*=1.01),oo("An itchy sweater")&&(e*=1.01),oo("Santa's dominion")&&(e*=1.2),oo("Fortune #100")&&(e*=1.01),oo("Fortune #101")&&(e*=1.07),oo("Dragon scale")&&(e*=1.03);let o=1;if(no){let t=no("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=no("ages"),1===t?e*=1+.15*Math.sin(Jt/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Jt/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Jt/1e3/86400*Math.PI*2)),t=no("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=no("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=no("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}oo("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const n=Fe/25;let i=1;if(oo("Santa's milk and cookies")&&(i*=1.05),i*=1+.05*Zt("Breath of Milk"),no){const e=no("mother");1===e?i*=1.1:2===e?i*=1.05:3===e&&(i*=1.03)}i*=to("milk");let a=1;oo("Kitten helpers")&&(a*=1+.1*n*i),oo("Kitten workers")&&(a*=1+.125*n*i),oo("Kitten engineers")&&(a*=1+.15*n*i),oo("Kitten overseers")&&(a*=1+.175*n*i),oo("Kitten managers")&&(a*=1+.2*n*i),oo("Kitten accountants")&&(a*=1+.2*n*i),oo("Kitten specialists")&&(a*=1+.2*n*i),oo("Kitten experts")&&(a*=1+.2*n*i),oo("Kitten consultants")&&(a*=1+.2*n*i),oo("Kitten assistants to the regional manager")&&(a*=1+.175*n*i),oo("Kitten marketeers")&&(a*=1+.15*n*i),oo("Kitten analysts")&&(a*=1+.125*n*i),oo("Kitten executives")&&(a*=1+.115*n*i),oo("Kitten angels")&&(a*=1+.1*n*i),oo("Fortune #103")&&(a*=1+.05*n*i),Object.keys(Qt).forEach((e=>{const t=Qt[e];let a=t.cps(t);1!==Game.ascensionMode&&(a*=(1+.01*t.level)*o),"Grandma"===t.name&&oo("Milkhelp® lactose intolerance relief tablets")&&(a*=1+.05*n*i),Ie+=t.amount*a})),oo('"egg"')&&(Ie+=9),e*=a;let r=1;if(oo("Chicken egg")&&(r*=1.01),oo("Duck egg")&&(r*=1.01),oo("Turkey egg")&&(r*=1.01),oo("Quail egg")&&(r*=1.01),oo("Robin egg")&&(r*=1.01),oo("Ostrich egg")&&(r*=1.01),oo("Cassowary egg")&&(r*=1.01),oo("Salmon roe")&&(r*=1.01),oo("Frogspawn")&&(r*=1.01),oo("Shark egg")&&(r*=1.01),oo("Turtle egg")&&(r*=1.01),oo("Ant larva")&&(r*=1.01),oo("Century egg")){let e=10*Math.floor((Kt-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),dt=1+.1*(1-(1-e/100)**3),r*=dt}e*=r,oo("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+Zt("Radiant Appetite");const l=Ie*e;Object.keys(Game.CpsAchievements).forEach((e=>{l>=Game.CpsAchievements[e].threshold&&jo(Game.CpsAchievements[e].name)})),ze=l;const{n:s}=Game.shimmerTypes.golden,c=Zt("Dragon's Fortune");for(let t=0;t{oo(e[o])&&(t+=.1)}))}e*=t}if(oo("Shimmering veil [off]")){let t=.5;oo("Reinforced membrane")&&(t+=.1),e*=1+t}oo("Magic shenanigans")&&(e*=1e3),oo("Occult obstruction")&&(e*=0),Ie=Game.runModHookOnValue("cps",Ie),e*=Mo(),Ie*=e}const Do=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],Ho=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],Ro=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],$o=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Io=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function zo(e){return Yt[e]?Yt[e].won:0}function Vo(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{oo(Game.GrandmaSynergies[t])&&(e+=1)})),!zo("Elder")&&e>=7&&jo("Elder"),!zo("Veteran")&&e>=14&&jo("Veteran");let t=0,o=1,n=1,i=1e5;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount,i=Math.min(Qt[e].amount,i),zo("Mathematician")||Qt[e].amount=1&&jo("One with everything"),1===o&&jo("Mathematician"),1===n&&jo("Base 10"),i>=100&&jo("Centennial"),i>=150&&jo("Centennial and a half"),i>=200&&jo("Bicentennial"),i>=250&&jo("Bicentennial and a half"),i>=300&&jo("Tricentennial"),i>=350&&jo("Tricentennial and a half"),i>=400&&jo("Quadricentennial"),i>=450&&jo("Quadricentennial and a half"),i>=500&&jo("Quincentennial"),i>=550&&jo("Quincentennial and a half"),i>=600&&jo("Sexcentennial"),t>=100&&jo("Builder"),t>=500&&jo("Architect"),t>=1e3&&jo("Engineer"),t>=2e3&&jo("Lord of Constructs"),t>=4e3&&jo("Grand design"),t>=8e3&&jo("Ecumenopolis"),Ne>=20&&jo("Enhancer"),Ne>=50&&jo("Augmenter"),Ne>=100&&jo("Upgrader"),Ne>=200&&jo("Lord of Progress"),Ne>=300&&jo("The full picture"),Ne>=400&&jo("When there's nothing left to add"),t>=4e3&&Ne>=300&&jo("Polymath"),t>=8e3&&Ne>=400&&jo("Renaissance baker"),Qt.Cursor.amount+Qt.Grandma.amount>=777&&jo("The elder scrolls");let a=!0;Object.keys(Ho).forEach((e=>{oo(Ho[e])||(a=!1)})),a&&jo("Spooky cookies");let r=!0;if(Object.keys(Ro).forEach((e=>{oo(Ro[e])||(r=!1)})),r&&jo("Let it snow"),oo("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{oo(e[o].name)&&(t+=1)})),t>=e.length&&jo("O Fortuna")}}function _o(e,t){const o=[];return Object.keys(Game.Objects).forEach((t=>{o[t]={},o[t].bonus=function(e,t){vo(),Qt[e].amount+=t;const o=Qt[e];"Cursor"===e?(o.amount>=1&&jo("Click"),o.amount>=2&&jo("Double-click"),o.amount>=50&&jo("Mouse wheel"),o.amount>=100&&jo("Of Mice and Men"),o.amount>=200&&jo("The Digital"),o.amount>=300&&jo("Extreme polydactyly"),o.amount>=400&&jo("Dr. T"),o.amount>=500&&jo("Thumbs, phalanges, metacarpals"),o.amount>=600&&jo("With her finger and her thumb"),o.amount>=700&&jo("Gotta hand it to you"),o.amount>=800&&jo("The devil's workshop")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&jo(Game.Objects[o.name].tieredAchievs[e].name)}));const n=Fe;return Uo(),Vo(),n!==Fe&&Uo(),Ie-Game.cookiesPs}(t,e),1!==e&&(Be=1)})),o}function Xo(){Object.keys(Game.Objects).forEach((e=>{mt[e].price=Ao(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),ht[e].price=Ao(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),gt[e].price=Ao(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}))}function Qo(){mt=_o(1),ht=_o(10),gt=_o(100),Gt=[],Object.keys(Game.Upgrades).forEach((t=>{const o=function(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){vo(),"Shimmering veil [on]"===qt[e].name?qt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===qt[e].name?qt["Golden switch [off]"].bought=0:qt[e].bought=(qt[e].bought+1)%2,qt[e],Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Ne+=1),"Elder Pledge"===e?(Oe+=1,Oe>0&&jo("Elder nap"),Oe>=5&&jo("Elder slumber")):"Elder Covenant"===e?jo("Elder calm"):"Prism heart biscuits"===e?jo("Lovely cookies"):"Heavenly key"===e&&jo("Wholesome");const t=Fe;Uo(),Vo(),t!==Fe&&Uo();const o=function(){let e=0;oo("Thousand fingers")&&(e+=.1),oo("Million fingers")&&(e*=5),oo("Billion fingers")&&(e*=10),oo("Trillion fingers")&&(e*=20),oo("Quadrillion fingers")&&(e*=20),oo("Quintillion fingers")&&(e*=20),oo("Sextillion fingers")&&(e*=20),oo("Septillion fingers")&&(e*=20),oo("Octillion fingers")&&(e*=20),oo("Nonillion fingers")&&(e*=20);let t=0;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount})),t-=Qt.Cursor.amount,e*=t,oo("Plastic mouse")&&(e+=.01*Ie),oo("Iron mouse")&&(e+=.01*Ie),oo("Titanium mouse")&&(e+=.01*Ie),oo("Adamantium mouse")&&(e+=.01*Ie),oo("Unobtainium mouse")&&(e+=.01*Ie),oo("Eludium mouse")&&(e+=.01*Ie),oo("Wishalloy mouse")&&(e+=.01*Ie),oo("Fantasteel mouse")&&(e+=.01*Ie),oo("Nevercrack mouse")&&(e+=.01*Ie),oo("Armythril mouse")&&(e+=.01*Ie),oo("Technobsidian mouse")&&(e+=.01*Ie),oo("Plasmarble mouse")&&(e+=.01*Ie),oo("Miraculite mouse")&&(e+=.01*Ie),oo("Fortune #104")&&(e+=.01*Ie);let o=1;if(oo("Santa's helpers")&&(o*=1.1),oo("Cookie egg")&&(o*=1.1),oo("Halo gloves")&&(o*=1.1),oo("Dragon claw")&&(o*=1.03),oo("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,oo("Luminous gloves")?20:10)),o*=to("click"),Qt.Temple.minigameLoaded&&no){const e=no("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*Zt("Dragon Cursor");let n=o*Game.ComputeCps(1,oo("Reinforced index finger")+oo("Carpal tunnel prevention cream")+oo("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[Ie-Game.cookiesPs,o]:[Ie-Game.cookiesPs]}return[]}(t);"Elder Pledge"===t?(Gt[t]={bonus:Game.cookiesPs-Ge},1===e.CalcWrink?Gt[t].bonus-=ve:2===e.CalcWrink&&(Gt[t].bonus-=we),Number.isFinite(Gt[t].bonus)||(Gt[t].bonus=0)):(Gt[t]={},o[0]&&(Gt[t].bonus=o[0]),o[1]&&(Gt[t].bonusMouse=o[1]))}))}function qo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,Bt=qo(7,e,lt),Mt=2*Bt[1]/lt,St=Bt[2]/60/60/6/rt,Nt=qo(6,e,st),Pt=2*Nt[1]/st,Et=Nt[2]/60/60/6/rt,Wt=qo(7,7*e,lt),Ot=2*Wt[1]/lt,Ft=Wt[2]/60/60/6/rt,jt=qo(6,7*e,st),Lt=2*jt[1]/st,At=jt[2]/60/60/6/rt}function Ko(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Me,i=Math.max(0,o-Se)/n;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());const i=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?xt+=e:"cookie"===o.pool?Tt+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(wt+=e)}}))}function Zo(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),pt=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(pt*=2)}}function en(){qe=900*at/.15,qe*=rt;const e=Mo();e>0?qe/=e:qe=0,Ye=lt*(.15*qe)+13,Ke=st*(.15*qe)+13,Je=7*qe,Ze=lt*(.15*Je)+13,et=st*(.15*Je)+13,tt=2*qe,ot=.15*tt,nt=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountnt&&(nt=2*Game.Objects[e].price,it=e)}))}function tn(){let e=1,t=1,o=1;oo("Green yeast digestives")&&(o*=1.01),oo("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),lt=o*e,st=o*t,rt=1,0===Game.shimmerTypes.golden.n&&(rt*=1+1.23*Game.auraMult("Dragon's Fortune"))}function on(){ft=0,Ct=0,yt=[0,null];for(let e=0;eyt[0]&&(yt=[t,e]))}}function nn(){Co(),on(),en(),tn(),Yo(),Jo(),Zo(),de=new Eo(q[q.length-1]),pe=new Eo(q[q.length-1]),ue=new Eo(q[q.length-1]),me=new Eo(q[q.length-1]),he=new Eo(Y[Y.length-1]),ge=new Eo(5),Ko(),No(),Qo(),Xo(),Lo()}const an={BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,BuildColor:1,PPDisplayTime:0,UpBarColor:1,UpgradeBarFixedPos:1,CalcWrink:0,CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,PPExcludeTop:0,PPSecondsLowerLimit:0,PPOnlyConsiderBuyable:0,ToolWarnBon:1,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,TooltipPantheon:1,DragonAuraInfo:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,UpStats:1,TimeFormat:0,DetailedTime:1,GrimoireBar:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,Colors:{Blue:"#4bb8f0",Green:"#00ff00",Yellow:"#ffff00",Orange:"#ff7f00",Red:"#ff0000",Purple:"#ff00ff",Gray:"#b3b3b3",Pink:"#ff1493",Brown:"#8b4513"},SortBuildings:0,SortUpgrades:0,GCTimer:1,Favicon:1,WrinklerButtons:1,HideSectionsButtons:0,BulkBuyBlock:0,Header:{BarsColors:1,Calculation:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Tooltip:1,Statistics:1,Notation:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},rn=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function ln(){1===e.BotBar?(l("CMBotBar").style.display="",mo()):l("CMBotBar").style.display="none",go()}function sn(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),mo(),ro(),lo()}function cn(){let t="";for(let o=0;o0?Ht.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class pn{constructor(e,t){this.type=e,this.group=t}}class un extends pn{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class mn extends pn{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class hn extends pn{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const gn={BotBar:new un("bool","BarsColors",["Bottom Bar OFF","Bottom Bar ON"],"Building Information",!0,(function(){ln()})),TimerBar:new un("bool","BarsColors",["Timer Bar OFF","Timer Bar ON"],"Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){fo()})),TimerBarPos:new un("bool","BarsColors",["Timer Bar Position (Top Left)","Timer Bar Position (Bottom)"],"Placement of the Timer Bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),go()})),TimerBarOverlay:new un("bool","BarsColors",["Timer Bar Overlay OFF","Timer Bar Overlay Only Seconds","Timer Bar Overlay Full"],"Overlay on timers displaying seconds and/or percentage left",!0),SortBuildings:new un("bool","BarsColors",["Sort Buildings: Default","Sort Buildings: PP of x1 purchase","Sort Buildings: PP of selected bulk mode"],"Sort the display of buildings in either default order or by PP",!1,(function(){ro()})),SortUpgrades:new un("bool","BarsColors",["Sort Upgrades: Default","Sort Upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){lo()})),BuildColor:new un("bool","BarsColors",["Building Colors OFF","Building Colors ON"],"Color code buildings",!0,(function(){ro()})),PPDisplayTime:new un("bool","BarsColors",["PP As Value (Standard)","PP As Time Unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),UpBarColor:new un("bool","BarsColors",["Upgrade Colors/Bar OFF","Upgrade Colors with Bar ON","Upgrade Colors without Bar ON"],"Color code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",lo()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",lo()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),Colors:new class extends pn{constructor(e,t,o,n){super(e,t),this.desc=o,this.func=n}}("color","BarsColors",{Blue:"Color Blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels",Green:"Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels",Yellow:"Color Yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels",Orange:"Color Orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels",Red:"Color Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels",Purple:"Color Purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels",Gray:"Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar",Pink:"Color Pink. Used for Dragonflight bar",Brown:"Color Brown. Used for Dragon Harvest bar"},(function(){cn()})),UpgradeBarFixedPos:new un("bool","BarsColors",["Upgrade Bar Fixed Position OFF","Upgrade Bar Fixed Position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),CalcWrink:new un("bool","Calculation",["Calculate with Wrinklers OFF","Calculate with Wrinklers ON","Calculate with Single Fattest Wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers",!0,(function(){Re=!0})),CPSMode:new un("bool","Calculation",["Current Cookies Per Second","Average Cookies Per Second"],"Calculate times using current Cookies Per Second or average Cookies Per Second",!1),AvgCPSHist:new un("bool","Calculation",["Average CPS for past 10s","Average CPS for past 15s","Average CPS for past 30s","Average CPS for past 1m","Average CPS for past 5m","Average CPS for past 10m","Average CPS for past 15m","Average CPS for past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new un("bool","Calculation",["Average Cookie Clicks for past 1s","Average Cookie Clicks for past 5s","Average Cookie Clicks for past 10s","Average Cookie Clicks for past 15s","Average Cookie Clicks for past 30s"],"How much time average Cookie Clicks should consider",!1),PPExcludeTop:new un("bool","Calculation",["Don't Ignore Any","Ignore 1st Best","Ignore 1st and 2nd Best","Ignore 1st, 2nd and 3rd Best"],"Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPSecondsLowerLimit:new hn("numscale","Calculation","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),PPOnlyConsiderBuyable:new un("bool","Calculation",["Don't Ignore Non-Buyable","Ignore Non-Buyable"],"Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),ToolWarnBon:new un("bool","Calculation",["Calculate Tooltip Warning With Bonus CPS OFF","Calculate Tooltip Warning With Bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),Title:new un("bool","NotificationGeneral",["Title OFF","Title ON","Title Pinned Tab Highlight"],'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn',!0),GeneralSound:new un("bool","NotificationGeneral",["Consider Game Volume Setting OFF","Consider Game Volume Setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new un("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when Golden Cookie spawns",!0,(function(){rn(e.GCNotification)})),GCFlash:new un("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on Golden Cookie",!0),GCSound:new un("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on Golden Cookie",!0),GCVolume:new mn("vol","NotificationGC",[],"Volume"),GCSoundURL:new un("url","NotificationGC","Sound URL:","URL of the sound to be played when a Golden Cookie spawns"),FortuneNotification:new un("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when Fortune Cookie is on the Ticker",!0,(function(){rn(e.FortuneNotification)})),FortuneFlash:new un("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on Fortune Cookie",!0),FortuneSound:new un("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on Fortune Cookie",!0),FortuneVolume:new mn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new un("url","NotificationFC","Sound URL:","URL of the sound to be played when the Ticker has a Fortune Cookie"),SeaNotification:new un("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on Season Popup",!0,(function(){rn(e.SeaNotification)})),SeaFlash:new un("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on Season Popup",!0),SeaSound:new un("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on Season Popup",!0),SeaVolume:new mn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new un("url","NotificationSea","Sound URL:","URL of the sound to be played when a Season Special spawns"),GardFlash:new un("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on Garden Tick",!0),GardSound:new un("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on Garden Tick",!0),GardVolume:new mn("vol","NotificationGard",[],"Volume"),GardSoundURL:new un("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new un("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){rn(e.MagicNotification)})),MagicFlash:new un("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),MagicSound:new un("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new mn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new un("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new un("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a Wrinkler appears",!0,(function(){rn(e.WrinklerNotification)})),WrinklerFlash:new un("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a Wrinkler appears",!0),WrinklerSound:new un("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a Wrinkler appears",!0),WrinklerVolume:new mn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new un("url","NotificationWrink","Sound URL:","URL of the sound to be played when a Wrinkler appears"),WrinklerMaxNotification:new un("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of Wrinklers has appeared",!0,(function(){rn(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new un("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxSound:new un("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxVolume:new mn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new un("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of Wrinklers has appeared"),TooltipBuildUpgrade:new un("bool","Tooltip",["Building/Upgrade Tooltip Information OFF","Building/Upgrade Tooltip Information ON"],"Extra information in Building/Upgrade tooltips",!0),TooltipAmor:new un("bool","Tooltip",["Buildings Tooltip Amortization Information OFF","Buildings Tooltip Amortization Information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new un("bool","Tooltip",["Tooltip Lucky Warning OFF","Tooltip Lucky Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new un("bool","Tooltip",["Tooltip Lucky Frenzy Warning OFF","Tooltip Lucky Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new un("bool","Tooltip",["Tooltip Conjure Warning OFF","Tooltip Conjure Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new un("bool","Tooltip",["Tooltip Conjure Frenzy Warning OFF","Tooltip Conjure Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new un("bool","Tooltip",["Tooltip Edifice Warning OFF","Tooltip Edifice Warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new hn("numscale","Tooltip","Tooltip Warning At x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnPos:new un("bool","Tooltip",["Tooltip Warning Position (Left)","Tooltip Warning Position (Bottom)"],"Placement of the warning boxes",!1,(function(){So()})),TooltipGrim:new un("bool","Tooltip",["Grimoire Tooltip Information OFF","Grimoire Tooltip Information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new un("bool","Tooltip",["Wrinkler Tooltip OFF","Wrinkler Tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new un("bool","Tooltip",["Sugar Lump Tooltip OFF","Sugar Lump Tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new un("bool","Tooltip",["Garden Plots Tooltip OFF","Garden Plots Tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipPantheon:new un("bool","Tooltip",["Show Extra Info Pantheon Tooltip OFF","Show Extra Info Pantheon Tooltip ON"],"Shows additional info in the pantheon tooltip",!0),DragonAuraInfo:new un("bool","Tooltip",["Extra Dragon Aura Info OFF","Extra Dragon Aura Info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),TooltipAscendButton:new un("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new un("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new un("bool","Statistics",["Missing Upgrades OFF","Missing Upgrades ON"],"Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.",!0),UpStats:new un("bool","Statistics",["Statistics Update Rate (Default)","Statistics Update Rate (1s)"],"Default Game rate is once every 5 seconds",!1),TimeFormat:new un("bool","Statistics",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new un("bool","Statistics",["Detailed Time OFF","Detailed Time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=$:Game.sayTime=M.sayTime})),GrimoireBar:new un("bool","Statistics",["Grimoire Magic Meter Timer OFF","Grimoire Magic Meter Timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),HeavenlyChipsTarget:new hn("numscale","Statistics","Heavenly Chips Target: ",'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new un("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many Golden Cookies you have missed",!0),Scale:new un("bool","Notation",["Game's Setting Scale","Metric","Short Scale","Short Scale (Abbreviated)","Scientific Notation","Engineering Notation"],"Change how long numbers are handled",!1,(function(){sn()})),ScaleDecimals:new un("bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(function(){sn()})),ScaleSeparator:new un("bool","Notation",[". for decimals (Standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){sn()})),ScaleCutoff:new hn("numscale","Notation","Notation Cut-off Point: ","The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),GCTimer:new un("bool","Miscellaneous",["Golden Cookie Timer OFF","Golden Cookie Timer ON"],"A timer on the Golden Cookie when it has been spawned",!0,(function(){1===e.GCTimer?Object.keys(ae).forEach((e=>{ae[e].style.display="block",ae[e].style.left=Vt[e].l.style.left,ae[e].style.top=Vt[e].l.style.top})):Object.keys(ae).forEach((e=>ae[e].style.display="none"))})),Favicon:new un("bool","Miscellaneous",["Favicon OFF","Favicon ON"],"Update favicon with Golden/Wrath Cookie",!0,(function(){dn()})),WrinklerButtons:new un("bool","Miscellaneous",["Extra Wrinkler Buttons OFF","Extra Wrinkler Buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){e.WrinklerButtons?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")})),HideSectionsButtons:new un("bool","Miscellaneous",["Hide Upgrades/Buildings Button OFF","Hide Upgrades/Buildings Button ON"],"Show buttons for hiding and showing the upgrades and buildings section in the right column",!0,(function(){e.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),BulkBuyBlock:new un("bool","Miscellaneous",["Block Bulk Buying OFF","Block Bulk Buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0)};function fn(){return JSON.stringify({settings:e,version:"2.031.6"})}function Cn(){if(Xe!==Game.dragonLevel||Re){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount{Qt[e]=ko(e)})),qt=[],Object.keys(Game.Upgrades).forEach((e=>{qt[e]=Go(e)})),Yt=[],Object.keys(Game.Achievements).forEach((e=>{Yt[e]=yo(e)})),vo()}let kn=!1;function Gn(t,o){1===e[o]&&3===t&&!1===kn||1===t?(l("CMWhiteScreen").style.opacity="0.5",3===t?(l("CMWhiteScreen").style.display="inline",setTimeout((function(){Gn(2,o)}),1e3/Game.fps)):setTimeout((function(){Gn(0,o)}),1e3/Game.fps)):2===t?(l("CMWhiteScreen").style.opacity="1",setTimeout((function(){Gn(1,o)}),1e3/Game.fps)):0===t&&(l("CMWhiteScreen").style.display="none")}function vn(t,o,n,i){if((1===e[o]||i)&&!1===kn){const o=new Audio(t);e.GeneralSound?o.volume=e[n]/100*(Game.volume/100):o.volume=e[n]/100,o.play()}}function wn(t,o,n){1===e[t]&&"hidden"===document.visibilityState&&!1===kn&&new Notification(o,{body:n,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})}function xn(){if(ne!==Game.OnAscend&&(ne=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===e.BotBar&&(l("CMBotBar").style.display="none"),1===e.TimerBar&&(l("CMTimerBar").style.display="none")):(ln(),fo()),ho()),!Game.OnAscend&&0===Game.AscendTimer){a!==Object.keys(Game.mods).length&&(bn(),nn(),a=Object.keys(Game.mods).length),Re&&(Qo(),Game.Has("Golden switch [off]")?(vo(),qt["Golden switch [off]"].bought=0,Uo(),at=Ie):at=Game.cookiesPs,tn(),en(),Jo(),Yo(),Cn(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Xt[e][t]=yn(e,t)}(),Zo(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const n=t[e];o+=n.stock*n.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;vo();let t=2;5!==Ae&&18!==Ae||(t-=1),5!==je&&18!==je||(t-=1),Ae=5,je=18;for(let e=0;e{Qt[t].amount>0&&(e=t)})),Qt[e].amount-=1,Ee-=1}return Object.keys(Qt).forEach((t=>{const o=Qt[t];e+=ao(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),_t=e}(),Re=0);const t=Game.auraMult("Fierce Hoarder")>0;!Pe&&t?(Pe=!0,Be=1):Pe&&!t&&(Pe=!1,Be=1),Be&&(Xo(),Be=0),function(){on(),Lo(),function(){bt=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Qt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}kt=e,bt=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),No(),Ko();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);$t=se(e/so())}(),k=0,Vt={},Object.keys(Game.shimmers).forEach((e=>{Vt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(Ht=Game.shimmers[e],k+=1)})),Object.keys(ae).forEach((e=>{void 0===Vt[e]&&(ae[e].parentNode.removeChild(ae[e]),delete ae[e])})),C!==Game.shimmerTypes.golden.n?(C=Game.shimmerTypes.golden.n,C&&(y{void 0===ae[Game.shimmers[t].id]&&function(t){const o=document.createElement("div");o.id=`GCTimer${t.id}`,o.style.width="96px",o.style.height="96px",o.style.position="absolute",o.style.zIndex="10000000001",o.style.textAlign="center",o.style.lineHeight="96px",o.style.fontFamily='"Kavoon", Georgia, serif',o.style.fontSize="35px",o.style.cursor="pointer",o.style.display="block",0===e.GCTimer&&(o.style.display="none"),o.style.left=t.l.style.left,o.style.top=t.l.style.top,o.onclick=function(){t.pop()},o.onmouseover=function(){t.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",t.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},o.onmouseout=function(){t.l.style.filter="",t.l.style.webkitFilter=""},ae[t.id]=o,l("shimmers").appendChild(o)}(Game.shimmers[t])}))),dn(),y=k,0===k&&(Ht=0)):1===e.GCTimer&&C&&Object.keys(ae).forEach((e=>{ae[e].style.opacity=Vt[e].l.style.opacity,ae[e].style.transform=Vt[e].l.style.transform,ae[e].textContent=Math.ceil(Vt[e].life/Game.fps)})),g!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(g=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,g&&(Gn(3,"FortuneFlash"),vn(e.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),wn("FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),h!==Game.shimmerTypes.reindeer.spawned&&(h=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(Rt=Game.shimmers[e])})),Gn(3,"SeaFlash"),vn(e.SeaSoundURL,"SeaSound","SeaVolume",!1),wn("SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!")),Game.Objects.Farm.minigameLoaded&&f!==Game.Objects.Farm.minigame.nextStep&&(0!==f&&f0){let t=0;Object.keys(Game.wrinklers).forEach((e=>{2===Game.wrinklers[e].phase&&(t+=1)})),t>G?(G=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?Gn(3,"WrinklerMaxFlash"):Gn(3,"WrinklerFlash"),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?vn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):vn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?wn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):wn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):G=t}}()}}function Tn(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${fn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function Mn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t;let o=!1;Object.keys(an).forEach((t=>{void 0===e[t]?(o=!0,e[t]=an[t]):"Header"!==t&&"Colors"!==t?-1===t.indexOf("SoundURL")?e[t]>-1&&e[t]{void 0!==e[t][n]&&e[t][n]>-1&&e[t][n]<2||(o=!0,e[t][n]=an[t][n])})):Object.keys(an.Colors).forEach((n=>{void 0!==e[t][n]&&"string"==typeof e[t][n]||(o=!0,e[t][n]=an[t][n])}))})),o&&Tn(),xn(),Object.keys(an).forEach((e=>{"Header"!==e&&void 0!==gn[e].func&&gn[e].func()}))}else Mn(an)}function Sn(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Bn(t,o){if("b"===t){if(l("tooltip").innerHTML=Game.Objects[o].tooltip(),1===e.TooltipAmor){const e=Ao(Game.Objects[o],Game.Objects[o].basePrice,0,Game.Objects[o].free,Game.Objects[o].amount),t=e-Game.Objects[o].totalCookies;t>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${le(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${ce((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(le(Game.Objects[o].bulkPrice)).join(le((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"wb"===t?l("tooltip").innerHTML="":"pag"===t?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(o)():"pas"===t&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(o[0])());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t||"wb"===t||"pag"===t||"pas"===t&&-1!==o[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return ee=t,te=o,Bo(),l("tooltip").innerHTML}function Pn(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(x[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("g",`${e}`)}),"this"),Game.tooltip.wobble()})}))}function En(){if(!u&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:t}=Game.Objects["Wizard tower"];d=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){d(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),Tn()}function jn(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){An(o),Game.UpdateMenu()},n.appendChild(i),n}function Un(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(H[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function Dn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");return a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)})),n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Hn(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(jn("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+co()0&&(t.appendChild(Un("basic","Heavenly Chips To Target Set In Settings (CUR)",document.createTextNode(le(e)))),t.appendChild(Un("basic","Time To Target (CUR, Current 5 Second Average)",document.createTextNode(se(e/ct)))))}const l=function(e){let t=Game.cookiesPs;vo(),0===qt["Heavenly key"].bought&&(qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Uo(),t=Ie,vo()),Ut>=1e6&&jo("Sacrifice"),Ut>=1e9&&jo("Oblivion"),Ut>=1e12&&jo("From scratch"),Ut>=1e15&&jo("Nihilism"),Ut>=1e18&&jo("Dematerialize"),Ut>=1e21&&jo("Nil zero zilch"),Ut>=1e24&&jo("Transcendence"),Ut>=1e27&&jo("Obliterate"),Ut>=1e30&&jo("Negative void"),Ut>=1e33&&jo("To crumbs, you say?"),Ut>=1e36&&jo("You get nothing"),Ut>=1e39&&jo("Humble rebeginnings"),Ut>=1e42&&jo("The end of the world"),Ut>=1e45&&jo("Oh, you're back"),Ut>=1e48&&jo("Lazarus"),Ut>=1e51&&jo("Smurf account"),Ut>=1e54&&jo("If at first you don't succeed"),qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Le=e;const o=Fe;Uo(),Vo(),o!==Fe&&Uo();const n=Ie-t;return Le=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(le(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(Un("withTooltip","Reset Bonus Income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(jn("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${le(ft)} / ${le(Ct)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){Sn()},e.appendChild(t),o.appendChild(Un("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${le(yt[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},n.appendChild(i),o.appendChild(Un("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==yt[1]?yt[1]:"None"})`,n))}if(o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsSeasonSection";let o=!1;const n=[];Object.keys(Ho).forEach((e=>{Game.Has(Ho[e])||(n.push(Ho[e]),o=!0)}));const i=[];Object.keys(Ro).forEach((e=>{Game.Has(Ro[e])||(i.push(Ro[e]),o=!0)}));const a=[];Object.keys($o).forEach((e=>{Game.Has($o[e])||(a.push($o[e]),o=!0)}));const r=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(r.push(Game.eggDrops[e]),o=!0)}));const l=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(l.push(Game.rareEggDrops[e]),o=!0)}));const s=[];Object.keys(Io).forEach((e=>{Game.HasUnlocked(Io[e])||(s.push(Io[e]),o=!0)}));const c=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),d=Game.Has("Century egg");if(("christmas"===Game.season||o||c||d)&&(t.appendChild(jn("Season Specials","Sea")),e.Header.Sea)){if(0!==n.length){t.appendChild(Un("basic","Halloween cookies left to buy",Dn(n)));let e=.95;if(Game.HasAchiev("Spooky cookies")&&(e=.8),Game.Has("Starterror")&&(e*=.9),e*=1/Game.dropRateMult(),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(Un("basic","Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${le(100*(1-e))}% / ${le(100*(1-.9*e))}%`)))}if(0!==i.length){t.appendChild(Un("basic","Christmas cookies left to buy",Dn(i)));let e=.8;if(Game.HasAchiev("Let it snow")&&(e=.6),e*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(e*=.95),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(Un("basic","Chance of receiving a cookie from reindeer",document.createTextNode(`${le(100*(1-e))}%`)))}0!==a.length&&t.appendChild(Un("basic","Valentine cookies left to buy",Dn(a)));const e=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,n=Game.eggDrops.length-r.length,i=Game.rareEggDrops.length-l.length,a=.9*o*(1-n/Game.eggDrops.length),s=.1*o*(1-i/Game.rareEggDrops.length),c=.9*o*(n/Game.eggDrops.length)+.1*o*(i/Game.rareEggDrops.length);return[a+.9*c*(1-n/Game.eggDrops.length),s+.1*c*(1-i/Game.rareEggDrops.length)]};0!==r.length&&(t.appendChild(Un("basic","Normal easter eggs left to unlock",Dn(r))),t.appendChild(Un("basic","Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[0])}% / ${le(100*e(.9)[0])}%`)))),0!==l.length&&(t.appendChild(Un("basic","Rare easter eggs left to unlock",Dn(l))),t.appendChild(Un("basic","Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[1])}% / ${le(100*e(.9)[1])}%`)))),0!==s.length&&t.appendChild(Un("basic","Rare plant drops left to unlock",Dn(s))),"christmas"===Game.season&&t.appendChild(Un("basic","Reindeer reward",document.createTextNode(le(pt)))),c&&t.appendChild(Un("withTooltip","Chocolate egg cookies",document.createTextNode(le(ut)),"ChoEggTooltipPlaceholder")),d&&t.appendChild(Un("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(dt-1))/100+"%")))}return t}()),o.appendChild(jn("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(Un("basic",`Average Cookies Per Second (Past ${q[e.AvgCPSHist]<60?`${q[e.AvgCPSHist]} seconds`:q[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(le(so(),3)))),o.appendChild(Un("basic",`Average Cookie Clicks Per Second (Past ${Y[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(le(vt,1)))),Game.Has("Fortune cookies")){const e=[];Object.keys(Do).forEach((t=>{Game.Has(Do[t])||e.push(Do[t])})),0!==e.length&&o.appendChild(Un("basic","Fortune Upgrades Left to Buy",Dn(e)))}if(e.ShowMissedGC&&o.appendChild(Un("basic","Missed Golden Cookies",document.createTextNode(le(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(Un("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&xt){const t=xt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=xt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(wt){const t=wt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=wt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Tt){const t=Tt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Tt,e.appendChild(i)}}}))}const Rn={BarsColors:"Bars/Colors",Calculation:"Calculation",Notification:"Notification",Tooltip:"Tooltips and additional insights",Statistics:"Statistics",Notation:"Notation",Miscellaneous:"Miscellaneous"},$n={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function In(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){An(t),Game.UpdateMenu()},n.appendChild(i),n}function zn(t){const o=document.createElement("div");if(o.className="listing","bool"===gn[t].type){const n=document.createElement("a");gn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=Wn+t,n.onclick=function(){!function(t){e[t]+=1,e[t]===gn[t].label.length?(e[t]=0,gn[t].toggle&&(l(Wn+t).className="option off")):l(Wn+t).className="option",void 0!==gn[t].func&&gn[t].func(),l(Wn+t).innerHTML=gn[t].label[e[t]],Tn()}(t)},n.textContent=gn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=gn[t].desc,o.appendChild(i),o}if("vol"===gn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=gn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Ln(t)},r.onchange=function(){Ln(t)},n.appendChild(r),o.appendChild(n);const l=document.createElement("a");return l.className="option",l.onclick=function(){vn(e[t.replace("Volume","SoundURL")],t.replace("Volume","Sound"),t,!0)},l.textContent="Test sound",o.appendChild(l),o}if("url"===gn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${gn[t].label} `,o.appendChild(n);const i=document.createElement("input");i.id=Wn+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${Wn+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){Game.Prompt(a.outerHTML,[["Save",function(){e[`${t}`]=l(`CMConfig${t}Prompt`).value,Tn(),Game.ClosePrompt(),Game.UpdateMenu()}],"Cancel"])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=gn[t].desc,o.appendChild(s),o}if("color"===gn[t].type){o.className="";for(let t=0;tthis.max&&console.log("TEST"),e[t]=this.value,Tn(),sn()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=gn[t].desc,o.appendChild(a),o}return o}function Vn(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function _n(){M.Beautify=Beautify,Beautify=le,M.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){M.CalculateGains(),Re=1,Jt=Date.now(),Kt=Date.now()},M.tooltip={},M.tooltip.draw=Game.tooltip.draw,M.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){M.tooltip.drawMod(e,t,o)},M.tooltip.update=Game.tooltip.update,M.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){M.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},M.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Vn(M.UpdateWrinklers)},M.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Vn(M.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){Vn(Game.ClickCookie)}),!1),M.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){M.RebuildUpgrades(),T=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(T[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("u",`${e}`)}),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},M.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e-1].amount>0){const o=Qt[Game.ObjectsById[e].name].name;Qt[o].amount-=1,Ee-=1,t=Qt[o].basePrice*Game.priceIncrease**Math.max(0,Qt[o].amount-1-Qt[o].free),t=Game.modifyBuildingPrice(Qt[o],t),t=Math.ceil(t);break}const o=Fe;return Uo(),Vo(),o!==Fe&&Uo(),[Ie-Game.cookiesPs,t]}(t),n=se(o/(e+Game.cookiesPs)),i=le(e/Game.cookiesPs);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${le(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},M.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){M.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Qe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},M.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Fn().picker&&void 0!==Fn().picker.owner||(M.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t),Object.keys(Rn).forEach((t=>{const n=In(t,Rn[t]);o.appendChild(n),e.Header[t]&&("Notification"===t?Object.keys($n).forEach((t=>{const n=In(t,$n[t]);n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t]&&Object.keys(gn).forEach((e=>{gn[e].group===t&&o.appendChild(zn(e))}))})):Object.keys(gn).forEach((e=>{gn[e].group===t&&o.appendChild(zn(e))})))}));const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){Mn(an)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Hn(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){An("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML='
\nThe latest update (v 2.031.6) has revamped the way PP is colourcoded. In the previous versions this was not always correct and we had some settings that made it even more incorrect. With this update Cookie Monster compares the PP of a building to all other possibilities (also buying 10 or 100) of a building and colors the PP accordingly.
\nThis means that if it is better to buy 10 of a building immediately rather than to buy in increments of 1 Cookie Monster will now show this! In this case the buy 1 option will be yellow, while the buy 10 option will be green.
\nThis also means that you will see some more diverse colors. Rather than coloring according to arbitrary "middle values" Cookie Monster now uses a top 10, 20 and 30. While this might take some getting used to we believe the new system is much better in conveying useful information to the user while also being more correct!
\n
\nThis update also implements the following functions:
\n- Added a tooltip displaying the reward to the extra pop wrinkler buttons
\n- Added tooltips to the Gods in the Pantheon
\n- The tooltip for Elder Pledge now displays correctly, although it takes some time to load after Cookie Monster has been loaded
\n- You can now test the volume and sound of notifications in the settings screen
\n- The bottom bar will now flicker less and each column has received a bit of padding
\n- Introduced new colour scheme for PP, see the explanation of colors in the Readme or the settings
\n- Added option to show buttons that can hide the upgrade and building section
\n- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)
\n- Statistics page now shows chance for random drops when they have not been achieved
\n
\nThis update fixes the following bugs:
\n- Incorrect amount for "required for max plant reward" in statistics page
\n- Fixed the tooltips of the \'?\' buttons in the statistics page not showing
\n- Fixed some unclear settings descriptions
\n
\nPlease submit any bug reports or feature requests to the GitHub page!\n
\n
\n',o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},M.sayTime=Game.sayTime,$=function(e,t){return Number.isNaN(e)||e<=0?M.sayTime(e,t):se(e/Game.fps,1)},M.Logic=Game.Logic,Game.Logic=function(){M.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),re=`${Game.OnAscend?"Ascending! ":""}${le(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=re;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=Ht?Ht.wrath?`[W${Math.ceil(Ht.life/Game.fps)}]`:`[G${Math.ceil(Ht.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,g&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=h?`[R${Math.ceil(Rt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=re;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;Ht&&(t=!0,Ht.wrath?e+=`[W${Math.ceil(Ht.life/Game.fps)}]`:e+=`[G${Math.ceil(Ht.life/Game.fps)}]`),g&&(t=!0,e+="[F]"),"christmas"===Game.season&&h&&(e+=`[R${Math.ceil(Rt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${le(Game.prestige)}.
(CpS +${le(Game.prestige)}%)`,n+='
'),n+=Se<1?"Ascending now would grant you no prestige.":Se<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${le(Se)} prestige levels (+${le(Se)}% CpS)
and ${le(Se)} heavenly chips to spend.`,n+='
',n+=`You need ${le(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${$t} to reach the next level and you are making ${le(ct,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Xn(){bn(),en(),nn(),a=Object.keys(Game.mods).length,v=document.createElement("style"),v.type="text/css",v.id="CMCSS",document.head.appendChild(v),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=S+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.6",N)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",P)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",P)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",P)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{uo(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=po("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:L},{id:"CMTimerBarGCBar",color:W}]);e.appendChild(t);const o=po("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:L},{id:"CMTimerBarRenBar",color:O}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=B+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(P,"Better than best PP building")),e.appendChild(o(E,"Same as best PP building")),e.appendChild(o(N,"Between best and worst PP buildings closer to best")),e.appendChild(o(O,"Between best and worst PP buildings closer to worst")),e.appendChild(o(F,"Same as worst PP building")),e.appendChild(o(W,"Worse than worst PP building")),e.appendChild(o(L,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=S+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",P)),e.appendChild(o("CMUpgradeBarGreen",E)),e.appendChild(o("CMUpgradeBarYellow",N)),e.appendChild(o("CMUpgradeBarOrange",O)),e.appendChild(o("CMUpgradeBarRed",F)),e.appendChild(o("CMUpgradeBarPurple",W)),e.appendChild(o("CMUpgradeBarGray",L)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMWhiteScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(D).forEach((e=>{!function(e,t,o){const n=document.createElement("div");n.id=e;const i=document.createElement("div");i.style.minWidth=o,i.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="left",a.textContent=t,i.appendChild(a),n.appendChild(i),H[e]=n}(D[e][0],D[e][1],D[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Sn()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("wb","PopAll")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("wb","PopFattest")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(w[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("b",`${e}`)}),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(r=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("s","Lump")}),"this"),Game.tooltip.wobble()}),m=Game.LoadMinigames,Game.LoadMinigames=function(){m(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Pn(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("pag",e)}),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("pas",[e,Game.Objects.Temple.minigame.slot[e]])}),"this"),Game.tooltip.wobble()}}}(),Nn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){I=1},l("backgroundLeftCanvas").onmouseout=function(){I=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{V[e]=0}))},_n(),Nn(),Game.CalculateGains(),Mn(),R=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.6 loaded!"):Game.Notify("Cookie Monster version 2.031.6 loaded!","","",1,1),Game.Win("Third-party")}const Qn={init:function(){kn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.6 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Xn(),Game.registerHook("draw",Po),Game.registerHook("logic",xn),kn=!1)},load:function(e){const t=JSON.parse(e);bn(),Mn(t.settings),"2.031.6"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:fn};Game.registerMod("CookieMonster",Qn)})()})(); diff --git a/README.md b/README.md index 776df405..78024948 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ Cookie Monster also indicates the time left before being able to buy an upgrade This index is computed for buildings and upgrades. If the relevant option is enabled, it will color-code each of them based on their value: -* Light Blue: (upgrades) This item has a better PP than any building -* Green: This item has the best PP -* Yellow: This item is not the best, but it is closer to best than it is to worst -* Orange: This item is not the worst, but it is closer to worst than it is to best -* Red: This item has the worst PP -* Purple: (upgrades) This item has a worse PP than any building -* Gray: (upgrades) This item has not been calculated and/or cannot be calculated due to no definitive worth. +* Light Blue: (upgrades) This item has a better PP than the best building to buy +* Green: This building has the best PP +* Yellow: This building is within the top 10 of best PP's +* Orange: This building is within the top 20 of best PP's +* Red: This building is within the top 30 of best PP's +* Purple: This building is worse than the top 10 of best PP's +* Gray: This item does not have a PP, often this means that there is no change to CPS Note: For this index, **lower is better**, meaning a building with a PP of 1 is more interesting than one with a PP of 3. diff --git a/dist/CookieMonster.js b/dist/CookieMonster.js index 93a56918..935e1b51 100644 --- a/dist/CookieMonster.js +++ b/dist/CookieMonster.js @@ -1,2 +1,2 @@ /*! For license information please see CookieMonster.js.LICENSE.txt */ -(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],f=o.fixed?"fixed":"absolute",g=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var f=m[h];if(f)if(i.pub.presets.hasOwnProperty(f)){for(var u in i.pub.presets[f])if(i.pub.presets[f].hasOwnProperty(u))try{a(u,i.pub.presets[f][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",f)}var g=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===g.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){if(t[n])return t[n].exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,o),i.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};const t=["","","M","G","T","P","E","Z","Y"],n=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],i=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let a,r,s,c,d,p,u,m,h,f,g,C,y,b,k,G,v,w=[],x=[],T=[],M={};const S="CMText",B="CMBack",P="Blue",E="Green",N="Yellow",O="Orange",F="Red",W="Purple",L="Gray",A="Pink",j="Brown",U=[L,P,E,N,O,F,W,A,j],D=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"]];let R,H,$=0,I=-1,z=[],V=1,_=1,X=1;const Q=[10,15,30,60,300,600,900,1800],q=[1,5,10,15,30],Y={Frenzy:N,"Dragon Harvest":j,"Elder frenzy":E,Clot:F,"Click frenzy":P,Dragonflight:A};let K,J,Z,ee,te,oe,ne,ie={},ae="";function re(o,a,r){const l=e.ScaleDecimals+1;if(o===1/0)return"Infinity";if(void 0===o)return"0";if(0===e.Scale)return M.Beautify(o,a);if(Number.isFinite(o)){let s="";if(0===o)return o.toString();if(o>.001&&o=.01&&o=.01&&o=.01&&o315576e4)return"XX:XX:XX:XX:XX";s+=(n<10?"0":"")+n+":",s+=(i<10?"0":"")+i+":",s+=(a<10?"0":"")+a+":",s+=(r<10?"0":"")+r+":",s+=(l<10?"0":"")+l}else{if(t>7776e5)return o?"Over 9000 days!":">9000d";s+=n>0?n+(o?1===n?" year":" years":"y")+", ":"",s+=i>0?i+(o?1===i?" day":" days":"d")+", ":"",(s.length>0||a>0)&&(s+=a+(o?1===a?" hour":" hours":"h")+", "),(s.length>0||r>0)&&(s+=r+(o?1===r?" minute":" minutes":"m")+", "),s+=l+(o?1===l?" second":" seconds":"s")}return s}function se(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=E):(n=le(t),o=t>300?F:t>60?O:N),{text:n,color:o}}let ce,de,pe,ue,me,he,fe,ge,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,Ue,De,Re,He=0,$e=0,Ie=0,ze=0,Ve=0,_e=0,Xe=0,Qe=0,qe=0,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=1,nt=1,it=1,at=0,rt=0,lt=0,st=0,ct={},dt={},pt={},ut=0,mt=0,ht=[0,null],ft=0,gt=0,Ct={},yt={},bt={},kt={},Gt={},vt=0,wt=0,xt=[],Tt=0,Mt=0,St=[],Bt=0,Pt=0,Et=[],Nt=0,Ot=0,Ft=[],Wt=0,Lt=0,At={},jt={},Ut=0,Dt=0,Rt=0,Ht=0,$t=[],It={},zt=0,Vt=[],_t=[],Xt=[],Qt=Game.startDate,qt=Game.startDate;function Yt(e){let t=0;return Game.dragonAuras[Le].name!==e&&Game.dragonAuras[Ae].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[Le].name&&"Reality Bending"!==Game.dragonAuras[Ae].name||(t+=.1),t}function Kt(){let e=.25;return e*=1+Yt("Earth Shatterer"),e}function Jt(e,t){return void 0===Ue[e]?void 0===t?1:t:Ue[e]}function Zt(e){const t=_t[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function eo(e){if(Game.hasGod){void 0===Vt.Temple.minigame&&(Vt.Temple.minigame=Game.Objects.Temple.minigame);const t=Vt.Temple.minigame.gods[e];for(let e=0;e<3;e++)if(Vt.Temple.minigame.slot[e]===t.id)return e+1}return!1}function to(e,t){if(Zt("Season savings")&&(t*=.99),Zt("Santa's dominion")&&(t*=.99),Zt("Faberge egg")&&(t*=.99),Zt("Divine discount")&&(t*=.99),Zt("Fortune #100")&&(t*=.99),t*=1-.02*Yt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(t*=.95),Game.hasBuff("Crafty pixies")&&(t*=.98),Game.hasBuff("Nasty goblins")&&(t*=1.02),e.fortune&&Zt(e.fortune.name)&&(t*=.93),t*=Jt("buildingCost"),Vt.Temple.minigameLoaded){const e=eo("creation");1===e?t*=.93:2===e?t*=.95:3===e&&(t*=.98)}return t}function oo(e,t,o,n,i,a){a=void 0===a?0:a;let r=0;-1===i&&(i=o),i||(i=Game.buyBulk);for(let l=0;l0&&(r+=i,o--)}return r}function no(){let t=Game.buyBulk;if(1===Game.buyMode?_=t:t=_,1===t?t=ct:10===t?t=dt:100===t&&(t=pt),1===Game.buyMode)if(1===e.BuildColor)for(const o of Object.keys(t))l(`productPrice${Game.Objects[o].id}`).style.color=e.Colors[t[o].color];else for(const e of Object.keys(Game.Objects))l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color");else if(-1===Game.buyMode)for(const e of Object.keys(ct)){const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=re(oo(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))}if(1===Game.buyMode&&e.SortBuildings){const e=Object.keys(t).map((e=>{const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o}));e.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const t=ct[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;for(const s of Object.keys(Game.UpgradesInStore)){const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eU.indexOf(t.color)?1:U.indexOf(e.color)e.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e=10&&(e+=1);return e}:o.power=function(){let e=2;if(Zt("Starlove")&&(e=3),Game.hasGod){const t=eo("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function xo(){Ee=Game.UpgradesOwned,Ne=Game.pledges,Oe=Game.AchievementsOwned,Fe=Game.heavenlyPower,We=Game.prestige;for(const e of Object.keys(Game.Objects)){const t=Game.Objects[e];let o=Vt[e];void 0===o&&(Vt[e]=vo(e),o=Vt[e],so(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&(o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Vt[e]=o}for(const e of Object.keys(Game.Upgrades)){const t=Game.Upgrades[e];let o=_t[e];void 0===o&&(_t[e]=wo(e),o=_t[e]),o.bought=t.bought,_t[e]=o}for(const e of Object.keys(Game.Achievements)){const t=Game.Achievements[e];let o=Xt[e];void 0===o&&(Xt[e]=ko(e),o=Xt[e]),o.won=t.won,Xt[e]=o}bo(),Le=He,Ae=$e}function To(e,t,o,n,i){let a=0;for(let r=0;rt.plantsById[t.plot[ee[1]][ee[0]][0]-1].matureBase,o=t.plantsById[t.plot[ee[1]][ee[0]][0]-1].name;l("CMTooltipBorder").appendChild(Co("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${re(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${re(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${re(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?re(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${re(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===Z&&function(){const t=Game.Objects.Farm.minigame;if(e.TooltipLump){l("CMTooltipBorder").appendChild(Co("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${re(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${se((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(re(Game.Objects[o].bulkPrice)).join(re((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t&&(l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return Z=t,ee=o,So(),l("tooltip").innerHTML}function Po(){if(Game.prefs.autosave&&Game.drawT%10==0&&"stats"===Game.onMenu&&e.Stats){const e=document.getElementById("CMStatsAutosaveTimer");e&&(e.innerText=Game.sayTime(60*Game.fps-Game.T%(60*Game.fps),4))}no(),io(),function(){if(1===e.TimerBar){const t=l("CMTimerBar").offsetWidth-163,o=l("CMTimerBar").offsetWidth-133;let n=0;0!==Game.shimmerTypes.golden.spawned||Game.Has("Golden switch [off]")?l("CMTimerBarGC").style.display="none":(l("CMTimerBarGC").style.display="",l("CMTimerBarGCMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n++),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n++):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="";for(const t of Object.keys(Game.buffs))if(Game.buffs[t]){const a=lo(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==Y[Game.buffs[t].name]?Y[Game.buffs[t].name]:W,a.lastChild.children[1].className=B+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n++,i[Game.buffs[t].name]=a}for(const e of Object.keys(i))l("CMTimerBarBuffTimers").appendChild(i[e]);0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),ne!==n&&(ne=n,uo())}}(),co(),So(),function(){if(1===e.TooltipWrink&&1===$){let e=!1;for(const t of Object.keys(Game.wrinklers)){const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0!==z[t]&&void 0!==z[t])break;{const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),I=t,z[t]=1}}else z[t]=0}e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let e=Game.wrinklers[I].sucked,t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[I].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Vt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=re(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu();let t=l("cookies").innerHTML.replace(/.*(?=
)/i,re(Game.cookies));Game.prefs.monospace&&(t=`${t}`),l("cookies").innerHTML=t}class Eo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){e>this.maxLength&&(e=this.maxLength),e>this.queue.length&&(e=this.queue.length);let t=0;for(let o=this.queue.length-1;o>=0&&o>this.queue.length-1-e;o--)t+=this.queue[o];return 0===t?0:t/e}}function No(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+zt;Game.cpsSucked>0&&(o+=ut),Wt=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-fe,i=Math.max(0,Game.cookies-ge)/n,a=Math.max(0,ut-Ce)/n,r=Math.max(0,ht[0]-ye)/n,l=Math.max(0,o-st)/n,s=(Game.cookieClicks-be)/n;for(let e=0;eHt?W:t.pp>Rt?O:N,0!==Number(e.PPSecondsLowerLimit)&&o/ao()0&&(n=F),n}function Fo(e){for(const t of Object.keys(e))Game.cookiesPs?e[t].pp=Math.max(e[t].price-(Game.cookies+ro()),0)/Game.cookiesPs+e[t].price/e[t].bonus:e[t].pp=e[t].price/e[t].bonus,e[t].color=Oo(e[t],e[t].price)}function Wo(){!function(){if(Dt=1/0,Ht=1,$t=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),0===e.ColorPPBulkMode&&Game.buyMode>0){for(const e of Object.keys(ct))Game.cookiesPs?ct[e].pp=Math.max(Game.Objects[e].getPrice()-(Game.cookies+ro()),0)/Game.cookiesPs+Game.Objects[e].getPrice()/ct[e].bonus:ct[e].pp=Game.Objects[e].getPrice()/ct[e].bonus,$t.push([ct[e].pp,Game.Objects[e].getPrice()]);if($t.sort(((e,t)=>e[0]-t[0])),e.PPOnlyConsiderBuyable)for(;$t[0][1]>Game.cookies&&1!==$t.length;)$t.shift();Dt=$t[e.PPExcludeTop][0],Ht=$t[$t.length-1][0],Rt=(Ht-Dt)/2+Dt;for(const t of Object.keys(ct)){ct[t].color=Oo(ct[t],Game.Objects[t].getPrice());for(let o=0;o0){let t;1===Game.buyBulk?t=ct:10===Game.buyBulk?t=dt:100===Game.buyBulk&&(t=pt);for(const e of Object.keys(t))Game.cookiesPs?t[e].pp=Math.max(Game.Objects[e].bulkPrice-(Game.cookies+ro()),0)/Game.cookiesPs+Game.Objects[e].bulkPrice/t[e].bonus:t[e].pp=Game.Objects[e].bulkPrice/t[e].bonus,$t.push([t[e].pp,Game.Objects[e].bulkPrice]);if($t.sort(((e,t)=>e[0]-t[0])),e.PPOnlyConsiderBuyable)for(;$t[0][1]>Game.cookies&&1!==$t.length;)$t.shift();Dt=$t[e.PPExcludeTop][0],Ht=$t[$t.length-1][0],Rt=(Ht-Dt)/2+Dt;for(const o of Object.keys(ct)){t[o].color=Oo(t[o],Game.Objects[o].bulkPrice);for(let n=0;n=Game.CpsAchievements[e].threshold&&Lo(Game.CpsAchievements[e].name);Re=l;const s=Game.shimmerTypes.golden.n,c=Yt("Dragon's Fortune");for(let t=0;t=7&&Lo("Elder"),!$o("Veteran")&&e>=14&&Lo("Veteran");let t=0,o=1,n=1,i=1e5;for(const e of Object.keys(Vt))t+=Vt[e].amount,i=Math.min(Vt[e].amount,i),$o("Mathematician")||Vt[e].amount=1&&Lo("One with everything"),1===o&&Lo("Mathematician"),1===n&&Lo("Base 10"),i>=100&&Lo("Centennial"),i>=150&&Lo("Centennial and a half"),i>=200&&Lo("Bicentennial"),i>=250&&Lo("Bicentennial and a half"),i>=300&&Lo("Tricentennial"),i>=350&&Lo("Tricentennial and a half"),i>=400&&Lo("Quadricentennial"),i>=450&&Lo("Quadricentennial and a half"),i>=500&&Lo("Quincentennial"),i>=550&&Lo("Quincentennial and a half"),i>=600&&Lo("Sexcentennial"),t>=100&&Lo("Builder"),t>=500&&Lo("Architect"),t>=1e3&&Lo("Engineer"),t>=2e3&&Lo("Lord of Constructs"),t>=4e3&&Lo("Grand design"),t>=8e3&&Lo("Ecumenopolis"),Ee>=20&&Lo("Enhancer"),Ee>=50&&Lo("Augmenter"),Ee>=100&&Lo("Upgrader"),Ee>=200&&Lo("Lord of Progress"),Ee>=300&&Lo("The full picture"),Ee>=400&&Lo("When there's nothing left to add"),t>=4e3&&Ee>=300&&Lo("Polymath"),t>=8e3&&Ee>=400&&Lo("Renaissance baker"),Vt.Cursor.amount+Vt.Grandma.amount>=777&&Lo("The elder scrolls");let a=!0;for(const e of Object.keys(Uo))Zt(Uo[e])||(a=!1);a&&Lo("Spooky cookies");let r=!0;for(const e of Object.keys(Do))Zt(Do[e])||(r=!1);if(r&&Lo("Let it snow"),Zt("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;for(const o of Object.keys(e))Zt(e[o].name)&&t++;t>=e.length&&Lo("O Fortuna")}}function zo(e,t){xo(),Vt[e].amount+=t;const o=Vt[e];if("Cursor"===e)o.amount>=1&&Lo("Click"),o.amount>=2&&Lo("Double-click"),o.amount>=50&&Lo("Mouse wheel"),o.amount>=100&&Lo("Of Mice and Men"),o.amount>=200&&Lo("The Digital"),o.amount>=300&&Lo("Extreme polydactyly"),o.amount>=400&&Lo("Dr. T"),o.amount>=500&&Lo("Thumbs, phalanges, metacarpals"),o.amount>=600&&Lo("With her finger and her thumb"),o.amount>=700&&Lo("Gotta hand it to you"),o.amount>=800&&Lo("The devil's workshop");else for(const e in Game.Objects[o.name].tieredAchievs)o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&Lo(Game.Objects[o.name].tieredAchievs[e].name);const n=Oe;return Ao(),Io(),n!==Oe&&Ao(),De-Game.cookiesPs}function Vo(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){xo(),"Shimmering veil [on]"===_t[e].name?_t["Shimmering veil [off]"].bought=0:"Golden switch [on]"===_t[e].name?_t["Golden switch [off]"].bought=0:_t[e].bought=(_t[e].bought+1)%2,_t[e],Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&Ee++,"Elder Pledge"===e?(Ne++,Ne>0&&Lo("Elder nap"),Ne>=5&&Lo("Elder slumber")):"Elder Covenant"===e?Lo("Elder calm"):"Prism heart biscuits"===e?Lo("Lovely cookies"):"Heavenly key"===e&&Lo("Wholesome");const t=Oe;Ao(),Io(),t!==Oe&&Ao();const o=function(){let e=0;Zt("Thousand fingers")&&(e+=.1),Zt("Million fingers")&&(e*=5),Zt("Billion fingers")&&(e*=10),Zt("Trillion fingers")&&(e*=20),Zt("Quadrillion fingers")&&(e*=20),Zt("Quintillion fingers")&&(e*=20),Zt("Sextillion fingers")&&(e*=20),Zt("Septillion fingers")&&(e*=20),Zt("Octillion fingers")&&(e*=20),Zt("Nonillion fingers")&&(e*=20);let t=0;for(const e of Object.keys(Vt))t+=Vt[e].amount;t-=Vt.Cursor.amount,e*=t,Zt("Plastic mouse")&&(e+=.01*De),Zt("Iron mouse")&&(e+=.01*De),Zt("Titanium mouse")&&(e+=.01*De),Zt("Adamantium mouse")&&(e+=.01*De),Zt("Unobtainium mouse")&&(e+=.01*De),Zt("Eludium mouse")&&(e+=.01*De),Zt("Wishalloy mouse")&&(e+=.01*De),Zt("Fantasteel mouse")&&(e+=.01*De),Zt("Nevercrack mouse")&&(e+=.01*De),Zt("Armythril mouse")&&(e+=.01*De),Zt("Technobsidian mouse")&&(e+=.01*De),Zt("Plasmarble mouse")&&(e+=.01*De),Zt("Miraculite mouse")&&(e+=.01*De),Zt("Fortune #104")&&(e+=.01*De);let o=1;if(Zt("Santa's helpers")&&(o*=1.1),Zt("Cookie egg")&&(o*=1.1),Zt("Halo gloves")&&(o*=1.1),Zt("Dragon claw")&&(o*=1.03),Zt("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,Zt("Luminous gloves")?20:10)),o*=Jt("click"),Vt.Temple.minigameLoaded&&eo){const e=eo("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}for(const e of Object.keys(Game.buffs))void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick);o*=1+.05*Yt("Dragon Cursor");let n=o*Game.ComputeCps(1,Zt("Reinforced index finger")+Zt("Carpal tunnel prevention cream")+Zt("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[De-Game.cookiesPs,o]:[De-Game.cookiesPs]}return[]}function _o(e,t){const o=[];for(const t of Object.keys(Game.Objects))o[t]={},o[t].bonus=zo(t,e),1!==e&&(Se=1);return o}function Xo(){for(const e of Object.keys(Game.Objects))ct[e].price=To(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),dt[e].price=To(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),pt[e].price=To(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}function Qo(){ct=_o(1),dt=_o(10),pt=_o(100),function(){Ct=[];for(const e of Object.keys(Game.Upgrades)){const t=Vo(e);Ct[e]={},t[0]&&(Ct[e].bonus=t[0]),t[1]&&(Ct[e].bonusMouse=t[1])}}()}function qo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,xt=qo(7,e,nt),vt=2*xt[1]/nt,wt=xt[2]/60/60/6/ot,St=qo(6,e,it),Tt=2*St[1]/it,Mt=St[2]/60/60/6/ot,Et=qo(7,7*e,nt),Bt=2*Et[1]/nt,Pt=Et[2]/60/60/6/ot,Ft=qo(6,7*e,it),Nt=2*Ft[1]/it,Ot=Ft[2]/60/60/6/ot}function Ko(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Te,i=Math.max(0,o-Me)/n;for(let e=0;e\n\t`}function Zo(){bt="",Gt="",kt="";const e=[];for(const t of Object.keys(Game.Upgrades))e.push(Game.Upgrades[t]);e.sort((function(e,t){return e.order>t.order?1:e.order0?Ve/=e:Ve=0,_e=nt*(.15*Ve)+13,Xe=it*(.15*Ve)+13,Qe=7*Ve,qe=nt*(.15*Qe)+13,Ye=it*(.15*Qe)+13,Ke=2*Ve,Je=.15*Ke,Ze=0;let t=0,o=0;for(const e of Object.keys(Game.Objects))Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&o++;for(const e of Object.keys(Game.Objects))(Game.Objects[e].amountZe&&(Ze=2*Game.Objects[e].price,et=e)}function on(){let e=1,t=1,o=1;Zt("Green yeast digestives")&&(o*=1.01),Zt("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),nt=o*e,it=o*t,ot=1,0===Game.shimmerTypes.golden.n&&(ot*=1+1.23*Game.auraMult("Dragon's Fortune"))}function nn(){ut=0,mt=0,ht=[0,null];for(let e=0;eht[0]&&(ht=[t,e]))}}function an(){bo(),nn(),tn(),on(),Yo(),Zo(),en(),ce=new Eo(Q[Q.length-1]),de=new Eo(Q[Q.length-1]),pe=new Eo(Q[Q.length-1]),ue=new Eo(Q[Q.length-1]),me=new Eo(q[q.length-1]),he=new Eo(5),Ko(),No(),Qo(),Xo(),Wo()}const rn={BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,BuildColor:1,BulkBuildColor:0,UpBarColor:1,UpgradeBarFixedPos:1,CalcWrink:0,CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,ColorPPBulkMode:1,PPExcludeTop:0,PPSecondsLowerLimit:0,PPOnlyConsiderBuyable:0,ToolWarnBon:0,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,DragonAuraInfo:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,UpStats:1,TimeFormat:0,DetailedTime:1,GrimoireBar:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,Colors:{Blue:"#4bb8f0",Green:"#00ff00",Yellow:"#ffff00",Orange:"#ff7f00",Red:"#ff0000",Purple:"#ff00ff",Gray:"#b3b3b3",Pink:"#ff1493",Brown:"#8b4513"},SortBuildings:0,SortUpgrades:0,GCTimer:1,Favicon:1,WrinklerButtons:1,BulkBuyBlock:0,Header:{BarsColors:1,Calculation:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Tooltip:1,Statistics:1,Notation:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},ln=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function sn(){1===e.BotBar?(l("CMBotBar").style.display="",co()):l("CMBotBar").style.display="none",uo()}function cn(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),co(),no(),io()}function dn(){let t="";for(let o=0;o0?At.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class un{constructor(e,t){this.type=e,this.group=t}}class mn extends un{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class hn extends un{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class fn extends un{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const gn={BotBar:new mn("bool","BarsColors",["Bottom Bar OFF","Bottom Bar ON"],"Building Information",!0,(function(){sn()})),TimerBar:new mn("bool","BarsColors",["Timer Bar OFF","Timer Bar ON"],"Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){mo()})),TimerBarPos:new mn("bool","BarsColors",["Timer Bar Position (Top Left)","Timer Bar Position (Bottom)"],"Placement of the Timer Bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),uo()})),TimerBarOverlay:new mn("bool","BarsColors",["Timer Bar Overlay OFF","Timer Bar Overlay Only Seconds","Timer Bar Overlay Full"],"Overlay on timers displaying seconds and/or percentage left",!0),SortBuildings:new mn("bool","BarsColors",["Sort Buildings: Default","Sort Buildings: PP"],"Sort the display of buildings in either default order or by PP",!1,(function(){no()})),SortUpgrades:new mn("bool","BarsColors",["Sort Upgrades: Default","Sort Upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){io()})),BuildColor:new mn("bool","BarsColors",["Building Colors OFF","Building Colors ON"],"Color code buildings",!0,(function(){no()})),BulkBuildColor:new mn("bool","BarsColors",["Bulk Building Colors (Single Building Color)","Bulk Building Colors (Calculated Bulk Color)"],"Color code bulk buildings based on single buildings color or calculated bulk value color",!1,(function(){no()})),UpBarColor:new mn("bool","BarsColors",["Upgrade Colors/Bar OFF","Upgrade Colors with Bar ON","Upgrade Colors without Bar ON"],"Color code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",io()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",io()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),Colors:new class extends un{constructor(e,t,o,n){super(e,t),this.desc=o,this.func=n}}("color","BarsColors",{Blue:"Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels",Green:"Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels",Yellow:"Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels",Orange:"Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels",Red:"Color Red. Used to show worst PP building, for Clot bar, and for various labels",Purple:"Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels",Gray:"Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar",Pink:"Color Pink. Used for Dragonflight bar",Brown:"Color Brown. Used for Dragon Harvest bar"},(function(){dn()})),UpgradeBarFixedPos:new mn("bool","BarsColors",["Upgrade Bar Fixed Position OFF","Upgrade Bar Fixed Position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),CalcWrink:new mn("bool","Calculation",["Calculate with Wrinklers OFF","Calculate with Wrinklers ON","Calculate with Single Fattest Wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers",!0),CPSMode:new mn("bool","Calculation",["Current Cookies Per Second","Average Cookies Per Second"],"Calculate times using current Cookies Per Second or average Cookies Per Second",!1),AvgCPSHist:new mn("bool","Calculation",["Average CPS for past 10s","Average CPS for past 15s","Average CPS for past 30s","Average CPS for past 1m","Average CPS for past 5m","Average CPS for past 10m","Average CPS for past 15m","Average CPS for past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new mn("bool","Calculation",["Average Cookie Clicks for past 1s","Average Cookie Clicks for past 5s","Average Cookie Clicks for past 10s","Average Cookie Clicks for past 15s","Average Cookie Clicks for past 30s"],"How much time average Cookie Clicks should consider",!1),ColorPPBulkMode:new mn("bool","Calculation",["Color of PP (Compared to Single)","Color of PP (Compared to Bulk)"],"Color PP-values based on comparison with single purchase or with selected bulk-buy mode",!1,(function(){Wo()})),PPExcludeTop:new mn("bool","Calculation",["Don't Ignore Any","Ignore 1st Best","Ignore 1st and 2nd Best","Ignore 1st, 2nd and 3rd Best"],"Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPSecondsLowerLimit:new fn("numscale","Calculation","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),PPOnlyConsiderBuyable:new mn("bool","Calculation",["Don't Ignore Non-Buyable","Ignore Non-Buyable"],"Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),ToolWarnBon:new mn("bool","Calculation",["Calculate Tooltip Warning With Bonus CPS OFF","Calculate Tooltip Warning With Bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),Title:new mn("bool","NotificationGeneral",["Title OFF","Title ON","Title Pinned Tab Highlight"],'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn',!0),GeneralSound:new mn("bool","NotificationGeneral",["Consider Game Volume Setting OFF","Consider Game Volume Setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new mn("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when Golden Cookie spawns",!0,(function(){ln(e.GCNotification)})),GCFlash:new mn("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on Golden Cookie",!0),GCSound:new mn("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on Golden Cookie",!0),GCVolume:new hn("vol","NotificationGC",[],"Volume"),GCSoundURL:new mn("url","NotificationGC","Sound URL:","URL of the sound to be played when a Golden Cookie spawns"),FortuneNotification:new mn("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when Fortune Cookie is on the Ticker",!0,(function(){ln(e.FortuneNotification)})),FortuneFlash:new mn("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on Fortune Cookie",!0),FortuneSound:new mn("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on Fortune Cookie",!0),FortuneVolume:new hn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new mn("url","NotificationFC","Sound URL:","URL of the sound to be played when the Ticker has a Fortune Cookie"),SeaNotification:new mn("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on Season Popup",!0,(function(){ln(e.SeaNotification)})),SeaFlash:new mn("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on Season Popup",!0),SeaSound:new mn("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on Season Popup",!0),SeaVolume:new hn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new mn("url","NotificationSea","Sound URL:","URL of the sound to be played when a Season Special spawns"),GardFlash:new mn("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on Garden Tick",!0),GardSound:new mn("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on Garden Tick",!0),GardVolume:new hn("vol","NotificationGard",[],"Volume"),GardSoundURL:new mn("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new mn("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){ln(e.MagicNotification)})),MagicFlash:new mn("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),MagicSound:new mn("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new hn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new mn("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new mn("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a Wrinkler appears",!0,(function(){ln(e.WrinklerNotification)})),WrinklerFlash:new mn("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a Wrinkler appears",!0),WrinklerSound:new mn("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a Wrinkler appears",!0),WrinklerVolume:new hn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new mn("url","NotificationWrink","Sound URL:","URL of the sound to be played when a Wrinkler appears"),WrinklerMaxNotification:new mn("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of Wrinklers has appeared",!0,(function(){ln(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new mn("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxSound:new mn("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxVolume:new hn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new mn("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of Wrinklers has appeared"),TooltipBuildUpgrade:new mn("bool","Tooltip",["Building/Upgrade Tooltip Information OFF","Building/Upgrade Tooltip Information ON"],"Extra information in Building/Upgrade tooltips",!0),TooltipAmor:new mn("bool","Tooltip",["Buildings Tooltip Amortization Information OFF","Buildings Tooltip Amortization Information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new mn("bool","Tooltip",["Tooltip Lucky Warning OFF","Tooltip Lucky Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new mn("bool","Tooltip",["Tooltip Lucky Frenzy Warning OFF","Tooltip Lucky Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new mn("bool","Tooltip",["Tooltip Conjure Warning OFF","Tooltip Conjure Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new mn("bool","Tooltip",["Tooltip Conjure Frenzy Warning OFF","Tooltip Conjure Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new mn("bool","Tooltip",["Tooltip Edifice Warning OFF","Tooltip Edifice Warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new fn("numscale","Tooltip","Tooltip Warning At x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnPos:new mn("bool","Tooltip",["Tooltip Warning Position (Left)","Tooltip Warning Position (Bottom)"],"Placement of the warning boxes",!1,(function(){fo()})),TooltipGrim:new mn("bool","Tooltip",["Grimoire Tooltip Information OFF","Grimoire Tooltip Information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new mn("bool","Tooltip",["Wrinkler Tooltip OFF","Wrinkler Tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new mn("bool","Tooltip",["Sugar Lump Tooltip OFF","Sugar Lump Tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new mn("bool","Tooltip",["Garden Plots Tooltip OFF","Garden Plots Tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),DragonAuraInfo:new mn("bool","Tooltip",["Extra Dragon Aura Info OFF","Extra Dragon Aura Info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),TooltipAscendButton:new mn("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new mn("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new mn("bool","Statistics",["Missing Upgrades OFF","Missing Upgrades ON"],"Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.",!0),UpStats:new mn("bool","Statistics",["Statistics Update Rate (Default)","Statistics Update Rate (1s)"],"Default Game rate is once every 5 seconds",!1),TimeFormat:new mn("bool","Statistics",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new mn("bool","Statistics",["Detailed Time OFF","Detailed Time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=H:Game.sayTime=M.sayTime})),GrimoireBar:new mn("bool","Statistics",["Grimoire Magic Meter Timer OFF","Grimoire Magic Meter Timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),HeavenlyChipsTarget:new fn("numscale","Statistics","Heavenly Chips Target: ",'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new mn("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many Golden Cookies you have missed",!0),Scale:new mn("bool","Notation",["Game's Setting Scale","Metric","Short Scale","Short Scale (Abbreviated)","Scientific Notation","Engineering Notation"],"Change how long numbers are handled",!1,(function(){cn()})),ScaleDecimals:new mn("bool","Notation",["1 decimals","2 decimals","3 decimals"],"Set the number of decimals used when applicable",!1,(function(){cn()})),ScaleSeparator:new mn("bool","Notation",[". for decimals (Standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){cn()})),ScaleCutoff:new fn("numscale","Notation","Notation Cut-off Point: ","The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),GCTimer:new mn("bool","Miscellaneous",["Golden Cookie Timer OFF","Golden Cookie Timer ON"],"A timer on the Golden Cookie when it has been spawned",!0,(function(){!function(){if(1===e.GCTimer)for(const e of Object.keys(ie))ie[e].style.display="block",ie[e].style.left=It[e].l.style.left,ie[e].style.top=It[e].l.style.top;else for(const e of Object.keys(ie))ie[e].style.display="none"}()})),Favicon:new mn("bool","Miscellaneous",["Favicon OFF","Favicon ON"],"Update favicon with Golden/Wrath Cookie",!0,(function(){pn()})),WrinklerButtons:new mn("bool","Miscellaneous",["Extra Buttons OFF","Extra Buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){e.WrinklerButtons?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")})),BulkBuyBlock:new mn("bool","Miscellaneous",["Block Bulk Buying OFF","Block Bulk Buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0)};function Cn(){return JSON.stringify({settings:e,version:"2.031.5"})}function yn(){if(Ie!==Game.dragonLevel||je){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount0&&(e=t);Vt[e].amount--,Pe--}for(const t of Object.keys(Vt)){const o=Vt[t];e+=oo(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)}return e}(),zt=e}(),je=0);const t=Game.auraMult("Fierce Hoarder")>0;!Be&&t?(Be=!0,Se=1):Be&&!t&&(Be=!1,Se=1),Se&&(Xo(),Se=0),function(){nn(),Wo(),function(){ft=0;let e=0;for(const t in Game.wrinklers)2===Game.wrinklers[t].phase&&e++;let t=1;if(Vt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}gt=e,ft=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),No(),Ko();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);Ut=le(e/ao())}(),function(){!function(){k=0,It={};for(const e of Object.keys(Game.shimmers))It[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(At=Game.shimmers[e],k+=1)}();for(const e of Object.keys(ie))void 0===It[e]&&(ie[e].parentNode.removeChild(ie[e]),delete ie[e]);if(C!==Game.shimmerTypes.golden.n){if(C=Game.shimmerTypes.golden.n,C){y0){let t=0;for(const e in Game.wrinklers)2===Game.wrinklers[e].phase&&t++;t>G?(G=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?Gn(3,"WrinklerMaxFlash"):Gn(3,"WrinklerFlash"),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?vn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume"):vn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume"),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?xn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):xn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):G=t}}()}}function Mn(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${Cn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function Sn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t;let o=!1;for(const t in rn)if(void 0===e[t])o=!0,e[t]=rn[t];else if("Header"!==t&&"Colors"!==t)-1===t.indexOf("SoundURL")?e[t]>-1&&e[t]-1&&e[t][n]<2||(o=!0,e[t][n]=rn[t][n]);else for(const n in rn.Colors)void 0!==e[t][n]&&"string"==typeof e[t][n]||(o=!0,e[t][n]=rn[t][n]);o&&Mn(),Tn();for(const e in rn)"Header"!==e&&void 0!==gn[e].func&&gn[e].func()}else Sn(rn)}function Bn(){for(const e of Object.keys(Game.wrinklers))Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}function Pn(){if(Game.Objects["Wizard tower"].minigameLoaded)for(const e in Game.Objects["Wizard tower"].minigame.spellsById)null!==l(`grimoireSpell${e}`).onmouseover&&(x[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("g",`${e}`)}),"this"),Game.tooltip.wobble()})}function En(){if(!u&&Game.Objects["Wizard tower"].minigameLoaded){const t=Game.Objects["Wizard tower"].minigame;d=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){d(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),Mn()}function jn(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){An(o),Game.UpdateMenu()},n.appendChild(i),n}function Un(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(D[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function Dn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a);for(const t of Object.keys(e)){const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)}return n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Rn(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(jn("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+ro()0&&(t.appendChild(Un("basic","Heavenly Chips To Target Set In Settings (CUR)",document.createTextNode(re(e)))),t.appendChild(Un("basic","Time To Target (CUR, Current 5 Second Average)",document.createTextNode(le(e/at)))))}const l=function(e){let t=Game.cookiesPs;xo(),0===_t["Heavenly key"].bought&&(_t["Heavenly chip secret"].bought=1,_t["Heavenly cookie stand"].bought=1,_t["Heavenly bakery"].bought=1,_t["Heavenly confectionery"].bought=1,_t["Heavenly key"].bought=1,Ao(),t=De,xo()),Wt>=1e6&&Lo("Sacrifice"),Wt>=1e9&&Lo("Oblivion"),Wt>=1e12&&Lo("From scratch"),Wt>=1e15&&Lo("Nihilism"),Wt>=1e18&&Lo("Dematerialize"),Wt>=1e21&&Lo("Nil zero zilch"),Wt>=1e24&&Lo("Transcendence"),Wt>=1e27&&Lo("Obliterate"),Wt>=1e30&&Lo("Negative void"),Wt>=1e33&&Lo("To crumbs, you say?"),Wt>=1e36&&Lo("You get nothing"),Wt>=1e39&&Lo("Humble rebeginnings"),Wt>=1e42&&Lo("The end of the world"),Wt>=1e45&&Lo("Oh, you're back"),Wt>=1e48&&Lo("Lazarus"),Wt>=1e51&&Lo("Smurf account"),Wt>=1e54&&Lo("If at first you don't succeed"),_t["Heavenly chip secret"].bought=1,_t["Heavenly cookie stand"].bought=1,_t["Heavenly bakery"].bought=1,_t["Heavenly confectionery"].bought=1,_t["Heavenly key"].bought=1,We=e;const o=Oe;Ao(),Io(),o!==Oe&&Ao();const n=De-t;return We=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(re(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(Un("withTooltip","Reset Bonus Income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(jn("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${re(ut)} / ${re(mt)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){Bn()},e.appendChild(t),o.appendChild(Un("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${re(ht[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==ht[1]&&(Game.wrinklers[ht[1]].hp=0)},n.appendChild(i),o.appendChild(Un("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==ht[1]?ht[1]:"None"})`,n))}let n=!1;const i=[];for(const e of Object.keys(Uo))Game.Has(Uo[e])||(i.push(Uo[e]),n=!0);const a=[];for(const e of Object.keys(Do))Game.Has(Do[e])||(a.push(Do[e]),n=!0);const r=[];for(const e of Object.keys(Ro))Game.Has(Ro[e])||(r.push(Ro[e]),n=!0);const s=[];for(const e of Object.keys(Game.eggDrops))Game.HasUnlocked(Game.eggDrops[e])||(s.push(Game.eggDrops[e]),n=!0);const c=[];for(const e of Object.keys(Game.rareEggDrops))Game.HasUnlocked(Game.rareEggDrops[e])||(c.push(Game.rareEggDrops[e]),n=!0);const d=[];for(const e of Object.keys(Ho))Game.HasUnlocked(Ho[e])||(d.push(Ho[e]),n=!0);const p=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),u=Game.Has("Century egg");if(("christmas"===Game.season||n||p||u)&&(o.appendChild(jn("Season Specials","Sea")),e.Header.Sea&&(0!==i.length&&o.appendChild(Un("basic","Halloween Cookies Left to Buy",Dn(i))),0!==a.length&&o.appendChild(Un("basic","Christmas Cookies Left to Buy",Dn(a))),0!==r.length&&o.appendChild(Un("basic","Valentine Cookies Left to Buy",Dn(r))),0!==s.length&&o.appendChild(Un("basic","Normal Easter Eggs Left to Unlock",Dn(s))),0!==c.length&&o.appendChild(Un("basic","Rare Easter Eggs Left to Unlock",Dn(c))),0!==d.length&&o.appendChild(Un("basic","Rare Plant Drops Left to Unlock",Dn(d))),"christmas"===Game.season&&o.appendChild(Un("basic","Reindeer Reward",document.createTextNode(re(lt)))),p&&o.appendChild(Un("withTooltip","Chocolate Egg Cookies",document.createTextNode(re(st)),"ChoEggTooltipPlaceholder")),u&&o.appendChild(Un("basic","Century Egg Multiplier",document.createTextNode(Math.round(1e4*(rt-1))/100+"%"))))),o.appendChild(jn("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(Un("basic",`Average Cookies Per Second (Past ${Q[e.AvgCPSHist]<60?`${Q[e.AvgCPSHist]} seconds`:Q[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(re(ao(),3)))),o.appendChild(Un("basic",`Average Cookie Clicks Per Second (Past ${q[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(re(yt,1)))),Game.Has("Fortune cookies")){const e=[];for(const t of Object.keys(jo))Game.Has(jo[t])||e.push(jo[t]);0!==e.length&&o.appendChild(Un("basic","Fortune Upgrades Left to Buy",Dn(e)))}if(e.ShowMissedGC&&o.appendChild(Un("basic","Missed Golden Cookies",document.createTextNode(re(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(Un("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&function(){for(const e of l("menu").children)if(e.children[0])if("Prestige"===e.children[0].innerHTML&&kt){const t=kt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=kt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(bt){const t=bt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=bt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Gt){const t=Gt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Gt,e.appendChild(i)}}}()}const Hn={BarsColors:"Bars/Colors",Calculation:"Calculation",Notification:"Notification",Tooltip:"Tooltips and additional insights",Statistics:"Statistics",Notation:"Notation",Miscellaneous:"Miscellaneous"},$n={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function In(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){An(t),Game.UpdateMenu()},n.appendChild(i),n}function zn(t){const o=document.createElement("div");if(o.className="listing","bool"===gn[t].type){const n=document.createElement("a");gn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=Wn+t,n.onclick=function(){!function(t){e[t]++,e[t]===gn[t].label.length?(e[t]=0,gn[t].toggle&&(l(Wn+t).className="option off")):l(Wn+t).className="option",void 0!==gn[t].func&&gn[t].func(),l(Wn+t).innerHTML=gn[t].label[e[t]],Mn()}(t)},n.textContent=gn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=gn[t].desc,o.appendChild(i),o}if("vol"===gn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=gn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");return r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Ln(t)},r.onchange=function(){Ln(t)},n.appendChild(r),o.appendChild(n),o}if("url"===gn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${gn[t].label} `,o.appendChild(n);const i=document.createElement("input");i.id=Wn+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${Wn+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){Game.Prompt(a.outerHTML,[["Save",function(){e[`${t}`]=l(`CMConfig${t}Prompt`).value,Mn(),Game.ClosePrompt(),Game.UpdateMenu()}],"Cancel"])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=gn[t].desc,o.appendChild(s),o}if("color"===gn[t].type){o.className="";for(let t=0;tthis.max&&console.log("TEST"),e[t]=this.value,Mn(),cn()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=gn[t].desc,o.appendChild(a),o}return o}function Vn(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function _n(){M.Beautify=Beautify,Beautify=re,M.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){M.CalculateGains(),je=1,qt=Date.now(),Qt=Date.now()},M.tooltip={},M.tooltip.draw=Game.tooltip.draw,M.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){M.tooltip.drawMod(e,t,o)},M.tooltip.update=Game.tooltip.update,M.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){M.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},M.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Vn(M.UpdateWrinklers)},M.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Vn(M.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){Vn(Game.ClickCookie)}),!1),M.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){M.RebuildUpgrades(),function(){T=[];for(const e of Object.keys(Game.UpgradesInStore))null!==l(`upgrade${e}`).onmouseover&&(T[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("u",`${e}`)}),"store"),Game.tooltip.wobble())})}(),Game.CalculateGains()},M.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e-1].amount>0){const o=Vt[Game.ObjectsById[e].name].name;Vt[o].amount-=1,Pe-=1,t=Vt[o].basePrice*Game.priceIncrease**Math.max(0,Vt[o].amount-1-Vt[o].free),t=Game.modifyBuildingPrice(Vt[o],t),t=Math.ceil(t);break}const o=Oe;return Ao(),Io(),o!==Oe&&Ao(),[De-Game.cookiesPs,t]}(t),n=le(o/(e+Game.cookiesPs)),i=re(e/Game.cookiesPs);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${re(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},M.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){M.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${ze}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},M.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Fn().picker&&void 0!==Fn().picker.owner||(M.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t);for(const t of Object.keys(Hn)){const n=In(t,Hn[t]);if(o.appendChild(n),e.Header[t])if("Notification"===t)for(const t of Object.keys($n)){const n=In(t,$n[t]);if(n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t])for(const e in gn)gn[e].group===t&&o.appendChild(zn(e))}else for(const e of Object.keys(gn))gn[e].group===t&&o.appendChild(zn(e))}const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){Sn(rn)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Rn(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){An("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML='
\nThe latest update (v 2.031.5) sees a total rehaul of the backend of the mod. It does not introduce any new functions, this is planned for the next release.
\nWe believe we have fixed all bugs related to this new code, but if you find any bugs, please report them on the GitHub!
\n
\nBesides, this update fixes the following bugs:
\n- Fixed some upgrade tooltips which did not display the full effect of buying the upgrades
\n- Fixed not always being able to sell when "blocking bulk buy"
\n- Fixed heavenly chips per second display
\n- Fixed small display bug when pressing shift and hovering over garden plots
\n- Fixed some bugs with the display of numbers and formatting of them
\n
\n
\n',o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},M.sayTime=Game.sayTime,H=function(e,t){return Number.isNaN(e)||e<=0?M.sayTime(e,t):le(e/Game.fps,1)},M.Logic=Game.Logic,Game.Logic=function(){M.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),ae=`${Game.OnAscend?"Ascending! ":""}${re(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=ae;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=At?At.wrath?`[W${Math.ceil(At.life/Game.fps)}]`:`[G${Math.ceil(At.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,f&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=h?`[R${Math.ceil(jt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=ae;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;At&&(t=!0,At.wrath?e+=`[W${Math.ceil(At.life/Game.fps)}]`:e+=`[G${Math.ceil(At.life/Game.fps)}]`),f&&(t=!0,e+="[F]"),"christmas"===Game.season&&h&&(e+=`[R${Math.ceil(jt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${re(Game.prestige)}.
(CpS +${re(Game.prestige)}%)`,n+='
'),n+=Me<1?"Ascending now would grant you no prestige.":Me<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${re(Me)} prestige levels (+${re(Me)}% CpS)
and ${re(Me)} heavenly chips to spend.`,n+='
',n+=`You need ${re(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${Ut} to reach the next level and you are making ${re(at,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Xn(){bn(),tn(),an(),a=Object.keys(Game.mods).length,v=document.createElement("style"),v.type="text/css",v.id="CMCSS",document.head.appendChild(v),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=S+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.5",N)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",P)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",P)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",P)),l("wrapper").appendChild(e);for(const e of Object.keys(Game.Objects))so(e)}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=lo("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:L},{id:"CMTimerBarGCBar",color:W}]);e.appendChild(t);const o=lo("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:L},{id:"CMTimerBarRenBar",color:O}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=B+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(P,"Better than best PP building")),e.appendChild(o(E,"Same as best PP building")),e.appendChild(o(N,"Between best and worst PP buildings closer to best")),e.appendChild(o(O,"Between best and worst PP buildings closer to worst")),e.appendChild(o(F,"Same as worst PP building")),e.appendChild(o(W,"Worse than worst PP building")),e.appendChild(o(L,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=S+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",P)),e.appendChild(o("CMUpgradeBarGreen",E)),e.appendChild(o("CMUpgradeBarYellow",N)),e.appendChild(o("CMUpgradeBarOrange",O)),e.appendChild(o("CMUpgradeBarRed",F)),e.appendChild(o("CMUpgradeBarPurple",W)),e.appendChild(o("CMUpgradeBarGray",L)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMWhiteScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}();for(const e of Object.keys(D))Mo(D[e][0],D[e][1],D[e][2]);!function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Bn()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==ht[1]&&(Game.wrinklers[ht[1]].hp=0)},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",function(){for(const e of Object.keys(Game.Objects)){const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(w[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("b",`${e}`)}),"store"),Game.tooltip.wobble()})}}(),Game.canLumps()&&(r=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("s","Lump")}),"this"),Game.tooltip.wobble()}),m=Game.LoadMinigames,Game.LoadMinigames=function(){m(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bo("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Pn(),Nn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){$=1},l("backgroundLeftCanvas").onmouseout=function(){$=0,Game.tooltip.hide();for(const e of Object.keys(Game.wrinklers))z[e]=0},_n(),Nn(),Game.CalculateGains(),Sn(),R=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.5 loaded!"):Game.Notify("Cookie Monster version 2.031.5 loaded!","","",1,1),Game.Win("Third-party")}const Qn={init:function(){kn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.5 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Xn(),Game.registerHook("draw",Po),Game.registerHook("logic",Tn),kn=!1)},load:function(e){const t=JSON.parse(e);bn(),Sn(t.settings),"2.031.5"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:Cn};Game.registerMod("CookieMonster",Qn)})()})(); +(()=>{var e={877:function(e){!function(t,o){"use strict";"object"!=typeof e.exports?o(t):e.exports=t.document?o(t):function(e){if(!e.document)throw new Error("jscolor needs a window with document");return o(e)}}("undefined"!=typeof window?window:this,(function(e){"use strict";var t,o,n,i,a=((i={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&e.document.addEventListener("DOMContentLoaded",i.pub.init,!1)},installBySelector:function(t,o){if(!(o=o?i.node(o):e.document))throw new Error("Missing root node");for(var n=o.querySelectorAll(t),a=new RegExp("(^|\\s)("+i.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(i.nodeName(e)){case"input":return!e.value||""===e.value.trim();case"button":return""===e.textContent.trim()}return null},isPassiveEventSupported:function(){var t=!1;try{var o=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassive",null,o),e.removeEventListener("testPassive",null,o)}catch(e){}return t}(),isColorAttrSupported:(n=e.document.createElement("input"),!(!n.setAttribute||(n.setAttribute("type","color"),"color"!=n.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={},o=arguments[2];return t[a=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(i.dataProp)?e[i.dataProp]:e[i.dataProp]={};var n=arguments[1];for(var a in n)n.hasOwnProperty(a)&&(t[a]=n[a]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(i.dataProp))return!0;for(var t=1;t=3&&(n=l[0].match(s))&&(i=l[1].match(s))&&(a=l[2].match(s)))return o.format="rgb",o.rgba=[parseFloat(n[1])||0,parseFloat(i[1])||0,parseFloat(a[1])||0,null],l.length>=4&&(r=l[3].match(s))&&(o.format="rgba",o.rgba[3]=parseFloat(r[1])||0),o}return!1},parsePaletteValue:function(e){var t=[];"string"==typeof e?e.replace(/#[0-9A-F]{3}([0-9A-F]{3})?|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],n=0;ns[n]&&-t[n]+e[n]+l[n]/2>s[n]/2&&e[n]+l[n]-d[n]>=0?e[n]+l[n]-d[n]:e[n],-t[a]+e[a]+l[a]+d[a]-p+p*r>s[a]?-t[a]+e[a]+l[a]/2>s[a]/2&&e[a]+l[a]-p-p*r>=0?e[a]+l[a]-p-p*r:e[a]+l[a]-p+p*r:e[a]+l[a]-p+p*r>=0?e[a]+l[a]-p+p*r:e[a]+l[a]-p-p*r];else var u=[e[n],e[a]+l[a]-p+p*r];var m=u[n],h=u[a],g=o.fixed?"fixed":"absolute",f=(u[0]+d[0]>e[0]||u[0]0?Math.ceil(l/o):0,i=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),a=e.paletteHeight?Math.min(e.paletteHeight,i):i),n&&(r=n*a+(n-1)*e.paletteSpacing),{cols:o,rows:n,cellW:i,cellH:a,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderChannel:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},triggerCallback:function(e,t){if(e[t]){var o=null;if("string"==typeof e[t])try{o=new Function(e[t])}catch(e){console.error(e)}else o=e[t];o&&o.call(e)}},triggerGlobal:function(e){for(var t=i.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!a(arguments[0],arguments[1]))return!1}catch(e){return console.warn(e),!1}return this.redraw(),this.exposeColor(),!0}if(1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0],t=!0;for(var o in e)if(e.hasOwnProperty(o))try{a(o,e[o])||(t=!1)}catch(e){console.warn(e),t=!1}return this.redraw(),this.exposeColor(),t}throw new Error("Invalid arguments")},this.channel=function(e,t){if("string"!=typeof e)throw new Error("Invalid value for channel name: "+e);if(void 0===t)return this.channels.hasOwnProperty(e.toLowerCase())?this.channels[e.toLowerCase()]:(console.warn("Getting unknown channel: "+e),!1);var o=!1;switch(e.toLowerCase()){case"r":o=this.fromRGBA(t,null,null,null);break;case"g":o=this.fromRGBA(null,t,null,null);break;case"b":o=this.fromRGBA(null,null,t,null);break;case"h":o=this.fromHSVA(t,null,null,null);break;case"s":o=this.fromHSVA(null,t,null,null);break;case"v":o=this.fromHSVA(null,null,t,null);break;case"a":o=this.fromHSVA(null,null,null,t);break;default:return console.warn("Setting unknown channel: "+e),!1}return!!o&&(this.redraw(),!0)},this.trigger=function(e){for(var t=i.strList(e),o=0;o127.5},this.hide=function(){p()&&(i.removeClass(n.targetElement,i.pub.activeClassName),i.picker.wrap.parentNode.removeChild(i.picker.wrap),delete i.picker.owner)},this.show=function(){l()},this.redraw=function(){p()&&l()},this.getFormat=function(){return this._currentFormat},this._setFormat=function(e){this._currentFormat=e.toLowerCase()},this.hasAlphaChannel=function(){return"auto"===this.alphaChannel?"any"===this.format.toLowerCase()||i.isAlphaFormat(this.getFormat())||void 0!==this.alpha||void 0!==this.alphaElement:this.alphaChannel},this.processValueInput=function(e){this.fromString(e)||this.exposeColor()},this.processAlphaInput=function(e){this.fromHSVA(null,null,null,parseFloat(e))||this.exposeColor()},this.exposeColor=function(e){var t=this.toString(),o=this.getFormat();if(i.setDataAttr(this.targetElement,"current-color",t),e&i.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&i.flags.leaveAlpha)&&this.alphaElement){var n=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(n)}e&i.flags.leavePreview||!this.previewElement||((i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),p()&&(s(),c(),d())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(i.isTextInput(this.previewElement)||i.isButton(this.previewElement)&&!i.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var n=[];if(e){n.push({image:i.genColorPreviewGradient(e,t,o?o-i.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var a=i.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);n.push({image:"url('"+a.canvas.toDataURL()+"')",position:(t||"left")+" top",size:a.width+"px "+a.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else n.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},l=0;l=0;h-=1){var g=m[h];if(g)if(i.pub.presets.hasOwnProperty(g)){for(var u in i.pub.presets[g])if(i.pub.presets[g].hasOwnProperty(u))try{a(u,i.pub.presets[g][u])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",g)}var f=["preset"];for(var u in o)if(o.hasOwnProperty(u)&&-1===f.indexOf(u))try{a(u,o[u])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=i.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=i.node(t),!this.targetElement){if("string"==typeof t&&/^[a-zA-Z][\w:.-]*$/.test(t))throw new Error("If '"+t+"' is supposed to be an ID, please use '#"+t+"' or any valid CSS selector.");throw new Error("Cannot instantiate color picker without a target element")}if(this.targetElement.jscolor&&this.targetElement.jscolor instanceof i.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,i.addClass(this.targetElement,i.pub.className),i.instances.push(this),i.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),i.isButtonEmpty(this.targetElement))){i.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var C=i.getCompStyle(this.targetElement);(parseFloat(C["min-width"])||0)-1){var G=i.parseColorString(b);this._currentFormat=G?G.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(b),void 0!==k&&this.processAlphaInput(k)}}).pub.className="jscolor",i.pub.activeClassName="jscolor-active",i.pub.looseJSON=!0,i.pub.presets={},i.pub.presets.default={},i.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},i.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},i.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},i.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},i.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},i.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},i.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},i.pub.sliderInnerSpace=3,i.pub.chessboardSize=8,i.pub.chessboardColor1="#666666",i.pub.chessboardColor2="#999999",i.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],i.pub.init=function(){if(!i.initialized)for(e.document.addEventListener("mousedown",i.onDocumentMouseDown,!1),e.document.addEventListener("keyup",i.onDocumentKeyUp,!1),e.addEventListener("resize",i.onWindowResize,!1),e.addEventListener("scroll",i.onWindowScroll,!1),i.pub.install(),i.initialized=!0;i.readyQueue.length;)i.readyQueue.shift()()},i.pub.install=function(e){var t=!0;try{i.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(i.pub.lookupClass)try{i.installBySelector("input."+i.pub.lookupClass+", button."+i.pub.lookupClass,e)}catch(e){}return t},i.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(i.initialized?e():i.readyQueue.push(e),!0)},i.pub.trigger=function(e){var t=function(){i.triggerGlobal(e)};i.initialized?t():i.pub.ready(t)},i.pub.hide=function(){i.picker&&i.picker.owner&&i.picker.owner.hide()},i.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),i.genColorPreviewCanvas(e).canvas.toDataURL()},i.pub.background=function(e){var t=[];t.push(i.genColorPreviewGradient(e));var o=i.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},i.pub.options={},i.pub.lookupClass="jscolor",i.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+i.docsRef),!1},i.register(),i.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=a),a}))}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";let e={};const t=["","","M","G","T","P","E","Z","Y"],n=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],i=["","K","M","B","T","Qa","Qi","Sx","Sp","Oc","No","De","UDe","DDe","TDe","QaDe","QiDe","SxDe","SpDe","ODe","NDe","Vi","UVi","DVi","TVi","QaVi","QiVi","SxVi","SpVi","OVi","NVi","Tr","UTr","DTr","TTr","QaTr","QiTr","SxTr","SpTr","OTr","NTr","Qaa","UQa","DQa","TQa","QaQa","QiQa","SxQa","SpQa","OQa","NQa","Qia","UQi","DQi","TQi","QaQi","QiQi","SxQi","SpQi","OQi","NQi","Sxa","USx","DSx","TSx","QaSx","QiSx","SxSx","SpSx","OSx","NSx","Spa","USp","DSp","TSp","QaSp","QiSp","SxSp","SpSp","OSp","NSp","Oco","UOc","DOc","TOc","QaOc","QiOc","SxOc","SpOc","OOc","NOc","Noa","UNo","DNo","TNo","QaNo","QiNo","SxNo","SpNo","ONo","NNo","Ct","UCt"];let a,r,s,c,d,p,u,m,h,g,f,C,y,b,k,G,v,w=[],x=[],T=[],M={};const S="CMText",B="CMBack",P="Blue",E="Green",N="Yellow",O="Orange",F="Red",W="Purple",L="Gray",A="Pink",j="Brown",U=[L,P,E,N,O,F,W,A,j],D=[["GoldCookTooltipPlaceholder","Calculated with Golden Switch off","200px"],["GoldCookDragonsFortuneTooltipPlaceholder","Calculated with Golden Switch off and at least one golden cookie on-screen","240px"],["PrestMaxTooltipPlaceholder","The MAX prestige is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","320px"],["NextPrestTooltipPlaceholder","Calculated with cookies gained from wrinklers and Chocolate egg","200px"],["HeavenChipMaxTooltipPlaceholder","The MAX heavenly chips is calculated with the cookies gained from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and buying Chocolate egg","330px"],["ResetTooltipPlaceholder","The bonus income you would get from new prestige levels unlocked at 100% of its potential and from ascension achievements if you have the same buildings/upgrades after reset","370px"],["ChoEggTooltipPlaceholder","The amount of cookies you would get from popping all wrinklers with Skruuia god in Diamond slot, selling all stock market goods, selling all buildings with Earth Shatterer and Reality Bending auras, and then buying Chocolate egg","300px"],["ChainNextLevelPlaceholder","Cheated cookies might break this formula","250px"]],H={};let R,$,I=0,z=-1,V=[],_=1,X=1,Q=1;const q=[10,15,30,60,300,600,900,1800],Y=[1,5,10,15,30],K={Frenzy:N,"Dragon Harvest":j,"Elder frenzy":E,Clot:F,"Click frenzy":P,Dragonflight:A};let J,Z,ee,te,oe,ne,ie,ae={},re="";function le(o,a,r){const l=e.ScaleDecimals+1;if(o===1/0)return"Infinity";if(void 0===o)return"0";if(0===e.Scale)return M.Beautify(o,a);if(Number.isFinite(o)){let s="";if(0===o)return o.toString();if(o>.001&&o=.01&&o=.01&&o=.01&&o315576e4)return"XX:XX:XX:XX:XX";c+=(i<10?"0":"")+i+":",c+=(a<10?"0":"")+a+":",c+=(r<10?"0":"")+r+":",c+=(l<10?"0":"")+l+":",c+=(s<10?"0":"")+s}else{if(n>7776e5)return o?"Over 9000 days!":">9000d";c+=i>0?i+(o?1===i?" year":" years":"y")+", ":"",c+=a>0?a+(o?1===a?" day":" days":"d")+", ":"",(c.length>0||r>0)&&(c+=r+(o?1===r?" hour":" hours":"h")+", "),(c.length>0||l>0)&&(c+=l+(o?1===l?" minute":" minutes":"m")+", "),c+=s+(o?1===s?" second":" seconds":"s")}return c}function ce(t){let o,n;return t<=0?(n=e.TimeFormat?"00:00:00:00:00":"Done!",o=E):(n=se(t),o=t>300?F:t>60?O:N),{text:n,color:o}}let de,pe,ue,me,he,ge,fe,Ce,ye,be,ke,Ge,ve,we,xe,Te,Me,Se,Be,Pe,Ee,Ne,Oe,Fe,We,Le,Ae,je,Ue,De,He,Re,$e,Ie,ze,Ve=0,_e=0,Xe=0,Qe=0,qe=0,Ye=0,Ke=0,Je=0,Ze=0,et=0,tt=0,ot=0,nt=0,it=0,at=0,rt=1,lt=1,st=1,ct=0,dt=0,pt=0,ut=0,mt={},ht={},gt={},ft=0,Ct=0,yt=[0,null],bt=0,kt=0,Gt={},vt={},wt={},xt={},Tt={},Mt=0,St=0,Bt=[],Pt=0,Et=0,Nt=[],Ot=0,Ft=0,Wt=[],Lt=0,At=0,jt=[],Ut=0,Dt=0,Ht={},Rt={},$t=0,It=0,zt=[],Vt={},_t=0,Xt={0:[0,0,0],1:[0,0,0],2:[0,0,0],3:[0,0,0],4:[0,0,0],5:[0,0,0],6:[0,0,0],7:[0,0,0],8:[0,0,0],9:[0,0,0],10:[0,0,0]},Qt=[],qt=[],Yt=[],Kt=Game.startDate,Jt=Game.startDate;function Zt(e){let t=0;return Game.dragonAuras[Ae].name!==e&&Game.dragonAuras[je].name!==e||(t=1),"Reality Bending"!==Game.dragonAuras[Ae].name&&"Reality Bending"!==Game.dragonAuras[je].name||(t+=.1),t}function eo(){let e=.25;return e*=1+Zt("Earth Shatterer"),e}function to(e,t){return void 0===$e[e]?void 0===t?1:t:$e[e]}function oo(e){const t=qt[e];return(1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function no(e){if(Game.hasGod){void 0===Qt.Temple.minigame&&(Qt.Temple.minigame=Game.Objects.Temple.minigame);const t=Qt.Temple.minigame.gods[e];if(Ue===t.id)return 1;if(De===t.id)return 2;if(He===t.id)return 3}return!1}function io(e,t){let o=t;if(oo("Season savings")&&(o*=.99),oo("Santa's dominion")&&(o*=.99),oo("Faberge egg")&&(o*=.99),oo("Divine discount")&&(o*=.99),oo("Fortune #100")&&(o*=.99),o*=1-.02*Zt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&oo(e.fortune.name)&&(o*=.93),o*=to("buildingCost"),Qt.Temple.minigameLoaded){const e=no("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function ao(e,t,o,n,i,a){const r=void 0===a?0:a;let l=i,s=o,c=0;-1===i&&(l=s),i||(l=Game.buyBulk);for(let o=0;o0&&(c+=o,s-=1)}return c}function ro(){let t=Game.buyBulk;if(1===Game.buyMode?X=t:t=X,1===t?t=mt:10===t?t=ht:100===t&&(t=gt),1===Game.buyMode?1===e.BuildColor?Object.keys(t).forEach((o=>{l(`productPrice${Game.Objects[o].id}`).style.color=e.Colors[t[o].color]})):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(mt).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=le(ao(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&e.SortBuildings){let o;1===e.SortBuildings?(o=Object.keys(mt).map((e=>{const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const o=t[e];return o.name=e,o.id=Game.Objects[e].id,o})),o.sort((function(e,t){return U.indexOf(e.color)>U.indexOf(t.color)?1:U.indexOf(e.color){const t=mt[e];return t.name=e,t.id=Game.Objects[e].id,t}));e.sort(((e,t)=>e.id-t.id));for(let t=0;t0){let e=0,t=0,o=0,n=0,i=0,a=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;eU.indexOf(t.color)?1:U.indexOf(e.color)e.price-t.price));const o=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let e=0;e{let n,i=Game.buyBulk;1===Game.buyMode?_=i:i=_,1===i&&(i=mt),10===i&&(i=ht),100===i&&(i=gt),t+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[t].childNodes[1].textContent=Game.Objects[o].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[t].textContent=le(i[o].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].className=S+i[o].color,n=e.PPDisplayTime?se(Math.round(i[o].pp)):le(Math.round(i[o].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[t].textContent=n;const a=ce((Game.Objects[o].bulkPrice-(Game.cookies+co()))/so());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[t].className=S+a.color,"Done!"===a.text&&Game.cookies{!Game.Tiers[e.tieredUpgrades[o].tier].special&&oo(e.tieredUpgrades[o].name)&&(t*=2)})),Object.keys(e.synergies).forEach((o=>{if(oo(e.synergies[o].name)){const n=e.synergies[o];n.buildingTie1.name===e.name?t*=1+.05*n.buildingTie2.amount:n.buildingTie2.name===e.name&&(t*=1+.001*n.buildingTie1.amount)}})),e.fortune&&oo(e.fortune.name)&&(t*=1.07),e.grandma&&oo(e.grandma.name)&&(t*=1+.01*Qt.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&oo(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){default:t*=1;break;case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06}return t}function ko(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;oo("Thousand fingers")&&(t+=.1),oo("Million fingers")&&(t*=5),oo("Billion fingers")&&(t*=10),oo("Trillion fingers")&&(t*=20),oo("Quadrillion fingers")&&(t*=20),oo("Quintillion fingers")&&(t*=20),oo("Sextillion fingers")&&(t*=20),oo("Septillion fingers")&&(t*=20),oo("Octillion fingers")&&(t*=20),oo("Nonillion fingers")&&(t*=20);let o=1,n=0;return Object.keys(Qt).forEach((e=>{"Cursor"!==Qt[e].name&&(n+=Qt[e].amount)})),t*=n,o*=bo(e),o*=Game.magicCpS("Cursor"),o*=to("cursorCps"),Game.ComputeCps(.1,oo("Reinforced index finger")+oo("Carpal tunnel prevention cream")+oo("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{oo(Game.GrandmaSynergies[e])&&(o*=2)})),oo("Bingo center/Research facility")&&(o*=4),oo("Ritual rolling pins")&&(o*=2),oo("Naughty list")&&(o*=2),oo("Elderwort biscuits")&&(o*=1.02),o*=to("grandmaCps"),oo("Cat ladies"))for(let e=0;e{"Grandma"!==Qt[e].name&&(i+=Qt[e].amount)})),o*=1+.01*Zt("Elder Battalion")*i,o*=Game.magicCpS(t.name),(t.baseCps+n)*o}:o.cps=function(e){let t=1;return t*=bo(e),t*=Game.magicCpS(e.name),e.baseCPS*t},o.baseCps=t.baseCps,o.name=t.name,o.tieredUpgrades=t.tieredUpgrades,o.synergies=t.synergies,o.fortune=t.fortune,o.grandma=t.grandma,o.baseCPS=t.baseCps,o.id=t.id,o.vanilla=t.vanilla,o}function Go(e){const t=Game.Upgrades[e],o={};return o.power=t.power,"function"==typeof o.power&&("Sugar crystal cookies"===t.name?o.power=function(){let e=5;return Object.keys(Qt).forEach((t=>{Qt[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(oo("Starlove")&&(e=3),Game.hasGod){const t=no("seasons");1===t?e*=1.3:2===t?e*=1.2:3===t&&(e*=1.1)}return e}),o.pool=t.pool,o.name=t.name,o}function vo(){Ne=Game.UpgradesOwned,Oe=Game.pledges,Fe=Game.AchievementsOwned,We=Game.heavenlyPower,Le=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Qt[e];void 0===o&&(Qt[e]=ko(e),o=Qt[e],uo(e)),o.amount=t.amount,o.level=t.level,o.totalCookies=t.totalCookies,o.basePrice=t.basePrice,o.free=t.free,t.minigameLoaded&&("Temple"===t.name&&(Ue=t.minigame.slot[0],De=t.minigame.slot[1],He=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Qt[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=qt[e];void 0===o&&(qt[e]=Go(e),o=qt[e]),o.bought=t.bought,qt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=Yt[e];void 0===o&&(Yt[e]=yo(e),o=Yt[e]),o.won=t.won,Yt[e]=o})),Co(),Ae=Ve,je=_e}function wo(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className="CMTextBlue",t.textContent=e,t}function xo(e){e.appendChild(wo("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(wo("Bonus Cookies per Click")),e.lastChild.style.display="none";const o=document.createElement("div");o.style.marginBottom="4px",o.style.color="white",o.style.display="none",o.id="CMTooltipCookiePerClick",e.appendChild(o),e.appendChild(wo("Payback Period"));const n=document.createElement("div");n.style.marginBottom="4px",n.id="CMTooltipPP",e.appendChild(n),e.appendChild(wo("Time Left"));const i=document.createElement("div");if(i.id="CMTooltipTime",e.appendChild(i),"b"===ee){e.appendChild(wo("Production left till next achievement")),e.lastChild.id="CMTooltipProductionHeader";const t=document.createElement("div");t.id="CMTooltipProduction",e.appendChild(t)}}function To(e,t,o){let n=e,i=0;for(;n{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function So(){null!==l("CMDispTooltipWarningParent")&&(0===e.ToolWarnPos?(l("CMDispTooltipWarningParent").style.top="auto",l("CMDispTooltipWarningParent").style.margin="4px -4px",l("CMDispTooltipWarningParent").style.padding="3px 4px"):(l("CMDispTooltipWarningParent").style.right="auto",l("CMDispTooltipWarningParent").style.margin="4px",l("CMDispTooltipWarningParent").style.padding="4px 3px"))}function Bo(){if(vo(),"none"!==l("tooltipAnchor").style.display&&l("CMTooltipArea")){l("CMTooltipArea").innerHTML="";const t=function(){l("tooltip").firstChild.style.paddingBottom="4px";const e=document.createElement("div");return e.style.border="1px solid",e.style.padding="4px",e.style.margin="0px -4px",e.id="CMTooltipBorder",e.className="CMTextGray",e}();l("CMTooltipArea").appendChild(t),"b"===ee?function(){if(1===e.TooltipBuildUpgrade&&1===Game.buyMode){let t;if(xo(l("CMTooltipBorder")),1===Game.buyMode?Q=t:t=Q,1===Game.buyBulk?t=mt:10===Game.buyBulk?t=ht:100===Game.buyBulk&&(t=gt),J=Game.Objects[te].bulkPrice,Z=t[te].bonus,1===e.TooltipBuildUpgrade&&1===Game.buyMode){l("CMTooltipIncome").textContent=le(Z,2);const o=Math.round(Z/Game.cookiesPs*1e4);Number.isFinite(o)&&0!==o?l("CMTooltipIncome").textContent+=` (${o/100}% of income)`:l("CMTooltipIncome").textContent+=` (<0${e.ScaleSeparator?",":"."}01% of income)`,l("CMTooltipBorder").className=S+t[te].color,e.PPDisplayTime?l("CMTooltipPP").textContent=se(t[te].pp):l("CMTooltipPP").textContent=le(t[te].pp,2),l("CMTooltipPP").className=S+t[te].color;const n=ce((J-(Game.cookies+co()))/so());l("CMTooltipTime").textContent=n.text,"Done!"===n.text&&Game.cookiest.plantsById[t.plot[te[1]][te[0]][0]-1].matureBase,o=t.plantsById[t.plot[te[1]][te[0]][0]-1].name;l("CMTooltipBorder").appendChild(wo("Reward (Current / Maximum)"));const n=document.createElement("div");n.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(n),"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${le(60*Game.cookiesPs*30)}`:"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${le(60*Game.cookiesPs*3)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${le(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${e?le(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${le(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===ee?function(){const{minigame:t}=Game.Objects.Farm;if(e.TooltipLump){l("CMTooltipBorder").appendChild(wo("Cookies gained from harvesting:"));let e=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let n=0;n<6;n++)for(let i=0;i<6;i++)if(t.plot[n][i][0]>=1){const a=t.plot[n][i],r=t.plantsById[a[0]-1],l=r.name;let s=!0;o&&r.immortal&&(s=!1),a[1]0&&t=1?l("CMTimerBarGCMinBar").textContent=Math.ceil((Game.shimmerTypes.golden.minTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCMinBar").textContent="",Game.shimmerTypes.golden.minTime===Game.shimmerTypes.golden.maxTime?(l("CMTimerBarGCMinBar").style.borderTopRightRadius="10px",l("CMTimerBarGCMinBar").style.borderBottomRightRadius="10px"):(l("CMTimerBarGCMinBar").style.borderTopRightRadius="",l("CMTimerBarGCMinBar").style.borderBottomRightRadius=""),l("CMTimerBarGCBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)*t/Game.shimmerTypes.golden.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarGCBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime,Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps):l("CMTimerBarGCBar").textContent="",l("CMTimerBarGCTime").textContent=Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps),n+=1),"christmas"===Game.season&&0===Game.shimmerTypes.reindeer.spawned?(l("CMTimerBarRen").style.display="",l("CMTimerBarRenMinBar").style.width=`${Math.round(Math.max(0,Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenMinBar").textContent=Math.ceil((Game.shimmerTypes.reindeer.minTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenMinBar").textContent="",l("CMTimerBarRenBar").style.width=`${Math.round(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)*t/Game.shimmerTypes.reindeer.maxTime)}px`,e.TimerBarOverlay>=1?l("CMTimerBarRenBar").textContent=Math.ceil(Math.min(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime,Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps):l("CMTimerBarRenBar").textContent="",l("CMTimerBarRenTime").textContent=Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps),n+=1):l("CMTimerBarRen").style.display="none";const i={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((t=>{if(Game.buffs[t]){const a=po(Game.buffs[t].name,Game.buffs[t].name,[{id:`${Game.buffs[t].name}Bar`}]);a.style.display="";let r="";r=void 0!==K[Game.buffs[t].name]?K[Game.buffs[t].name]:W,a.lastChild.children[1].className=B+r,a.lastChild.children[1].style.color="black",2===e.TimerBarOverlay?a.lastChild.children[1].textContent=`${Math.round(Game.buffs[t].time/Game.buffs[t].maxTime*100)}%`:a.lastChild.children[1].textContent="",a.lastChild.children[1].style.width=`${Math.round(Game.buffs[t].time*(o-8*Math.ceil(Game.buffs[t].time/Game.fps).toString().length)/Game.buffs[t].maxTime)}px`,a.lastChild.children[2].textContent=Math.ceil(Game.buffs[t].time/Game.fps),n+=1,i[Game.buffs[t].name]=a}})),Object.keys(i).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(i[e])})),0!==n&&(l("CMTimerBar").style.height=12*n+2+"px"),ie!==n&&(ie=n,go())}}(),mo(),Bo(),function(){if(1===e.TooltipWrink&&1===I){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===V[t]||void 0===V[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const n=document.createElement("div");n.style.textAlign="center",n.id="CMTooltipWrinkler",o.appendChild(n),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),z=t,V[t]=1}}else V[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===e.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[z],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[z].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Qt.Temple.minigameLoaded){const t=Game.hasGod("scorn");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05)}l("CMTooltipWrinkler").textContent=le(e)}}(),e.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu();let t=l("cookies").innerHTML.replace(/.*(?=
)/i,le(Game.cookies));Game.prefs.monospace&&(t=`${t}`),l("cookies").innerHTML=t}class Eo{constructor(e){this.maxLength=e,this.queue=[]}addLatest(e){this.queue.push(e)>this.maxLength&&this.queue.shift()}calcAverage(e){let t=e;t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length);let o=0;for(let e=this.queue.length-1;e>=0&&e>this.queue.length-1-t;e--)o+=this.queue[e];return 0===o?0:o/t}}function No(){const t=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let o=Game.cookies+_t;Game.cpsSucked>0&&(o+=ft),Ut=Math.max(Game.cookiesEarned,o),o*=.05;const n=t-fe,i=Math.max(0,Game.cookies-Ce)/n,a=Math.max(0,ft-ye)/n,r=Math.max(0,yt[0]-be)/n,l=Math.max(0,o-ut)/n,s=(Game.cookieClicks-ke)/n;for(let e=0;ezt[30][0]?F:W,0!==Number(e.PPSecondsLowerLimit)&&o/so()0&&(n=F),n}function Fo(t,o){Object.keys(t).forEach((n=>{t[n].color=Oo(t[n],Game.Objects[n].getSumPrice(o));for(let o=0;o{const n=Game.Objects[o].getSumPrice(t);Game.cookiesPs?e[o].pp=Math.max(n-(Game.cookies+co()),0)/Game.cookiesPs+n/e[o].bonus:e[o].pp=n/e[o].bonus,zt.push([e[o].pp,t])}))}function Lo(){!function(){It=1/0,zt=[],void 0===e.PPExcludeTop&&(e.PPExcludeTop=0),Wo(mt,1),Wo(ht,10),Wo(gt,100),zt.sort(((e,t)=>e[0]-t[0]));let t=0;if(e.PPOnlyConsiderBuyable)for(;zt[t][1]>Game.cookies&&(t+=1,zt.length!==t+1););It=zt[e.PPExcludeTop][t],Fo(mt,1),Fo(ht,10),Fo(gt,100)}(),Object.keys(Gt).forEach((e=>{Game.cookiesPs?Gt[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+co()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/Gt[e].bonus:Gt[e].pp=Game.Upgrades[e].getPrice()/Gt[e].bonus,Number.isNaN(Gt[e].pp)&&(Gt[e].pp=1/0),Gt[e].color=Oo(Gt[e],Game.Upgrades[e].getPrice())}))}function Ao(e,t,o,n,i){let a=o,r=0;for(let o=0;o{if(Game.Objects[e].minigameLoaded&&Game.Objects[e].minigame.effs){const o=Game.Objects[e].minigame.effs;Object.keys(o).forEach((e=>{t[e]?t[e]*=o[e]:t[e]=o[e]}))}})),$e=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(Le)*We*function(){let e=0;if(oo("Heavenly chip secret")&&(e+=.05),oo("Heavenly cookie stand")&&(e+=.2),oo("Heavenly bakery")&&(e+=.25),oo("Heavenly confectionery")&&(e+=.25),oo("Heavenly key")&&(e+=.25),e*=1+.05*Zt("Dragon God"),oo("Lucky digit")&&(e*=1.01),oo("Lucky number")&&(e*=1.01),oo("Lucky payout")&&(e*=1.01),Game.hasGod){const t=no("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=to("cps"),oo("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];oo(o.name)&&("function"==typeof o.power?e*=1+.01*qt[o.name].power(qt[o.name]):e*=1+.01*o.power)})),oo("Specialized chocolate chips")&&(e*=1.01),oo("Designer cocoa beans")&&(e*=1.02),oo("Underworld ovens")&&(e*=1.03),oo("Exotic nuts")&&(e*=1.04),oo("Arcane sugar")&&(e*=1.05),oo("Increased merriness")&&(e*=1.15),oo("Improved jolliness")&&(e*=1.15),oo("A lump of coal")&&(e*=1.01),oo("An itchy sweater")&&(e*=1.01),oo("Santa's dominion")&&(e*=1.2),oo("Fortune #100")&&(e*=1.01),oo("Fortune #101")&&(e*=1.07),oo("Dragon scale")&&(e*=1.03);let o=1;if(no){let t=no("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=no("ages"),1===t?e*=1+.15*Math.sin(Jt/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Jt/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Jt/1e3/86400*Math.PI*2)),t=no("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=no("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=no("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}oo("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const n=Fe/25;let i=1;if(oo("Santa's milk and cookies")&&(i*=1.05),i*=1+.05*Zt("Breath of Milk"),no){const e=no("mother");1===e?i*=1.1:2===e?i*=1.05:3===e&&(i*=1.03)}i*=to("milk");let a=1;oo("Kitten helpers")&&(a*=1+.1*n*i),oo("Kitten workers")&&(a*=1+.125*n*i),oo("Kitten engineers")&&(a*=1+.15*n*i),oo("Kitten overseers")&&(a*=1+.175*n*i),oo("Kitten managers")&&(a*=1+.2*n*i),oo("Kitten accountants")&&(a*=1+.2*n*i),oo("Kitten specialists")&&(a*=1+.2*n*i),oo("Kitten experts")&&(a*=1+.2*n*i),oo("Kitten consultants")&&(a*=1+.2*n*i),oo("Kitten assistants to the regional manager")&&(a*=1+.175*n*i),oo("Kitten marketeers")&&(a*=1+.15*n*i),oo("Kitten analysts")&&(a*=1+.125*n*i),oo("Kitten executives")&&(a*=1+.115*n*i),oo("Kitten angels")&&(a*=1+.1*n*i),oo("Fortune #103")&&(a*=1+.05*n*i),Object.keys(Qt).forEach((e=>{const t=Qt[e];let a=t.cps(t);1!==Game.ascensionMode&&(a*=(1+.01*t.level)*o),"Grandma"===t.name&&oo("Milkhelp® lactose intolerance relief tablets")&&(a*=1+.05*n*i),Ie+=t.amount*a})),oo('"egg"')&&(Ie+=9),e*=a;let r=1;if(oo("Chicken egg")&&(r*=1.01),oo("Duck egg")&&(r*=1.01),oo("Turkey egg")&&(r*=1.01),oo("Quail egg")&&(r*=1.01),oo("Robin egg")&&(r*=1.01),oo("Ostrich egg")&&(r*=1.01),oo("Cassowary egg")&&(r*=1.01),oo("Salmon roe")&&(r*=1.01),oo("Frogspawn")&&(r*=1.01),oo("Shark egg")&&(r*=1.01),oo("Turtle egg")&&(r*=1.01),oo("Ant larva")&&(r*=1.01),oo("Century egg")){let e=10*Math.floor((Kt-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),dt=1+.1*(1-(1-e/100)**3),r*=dt}e*=r,oo("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+Zt("Radiant Appetite");const l=Ie*e;Object.keys(Game.CpsAchievements).forEach((e=>{l>=Game.CpsAchievements[e].threshold&&jo(Game.CpsAchievements[e].name)})),ze=l;const{n:s}=Game.shimmerTypes.golden,c=Zt("Dragon's Fortune");for(let t=0;t{oo(e[o])&&(t+=.1)}))}e*=t}if(oo("Shimmering veil [off]")){let t=.5;oo("Reinforced membrane")&&(t+=.1),e*=1+t}oo("Magic shenanigans")&&(e*=1e3),oo("Occult obstruction")&&(e*=0),Ie=Game.runModHookOnValue("cps",Ie),e*=Mo(),Ie*=e}const Do=["Fortune #001","Fortune #002","Fortune #003","Fortune #004","Fortune #005","Fortune #006","Fortune #007","Fortune #008","Fortune #009","Fortune #010","Fortune #011","Fortune #012","Fortune #013","Fortune #014","Fortune #015","Fortune #016","Fortune #017","Fortune #018","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],Ho=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],Ro=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],$o=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],Io=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function zo(e){return Yt[e]?Yt[e].won:0}function Vo(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{oo(Game.GrandmaSynergies[t])&&(e+=1)})),!zo("Elder")&&e>=7&&jo("Elder"),!zo("Veteran")&&e>=14&&jo("Veteran");let t=0,o=1,n=1,i=1e5;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount,i=Math.min(Qt[e].amount,i),zo("Mathematician")||Qt[e].amount=1&&jo("One with everything"),1===o&&jo("Mathematician"),1===n&&jo("Base 10"),i>=100&&jo("Centennial"),i>=150&&jo("Centennial and a half"),i>=200&&jo("Bicentennial"),i>=250&&jo("Bicentennial and a half"),i>=300&&jo("Tricentennial"),i>=350&&jo("Tricentennial and a half"),i>=400&&jo("Quadricentennial"),i>=450&&jo("Quadricentennial and a half"),i>=500&&jo("Quincentennial"),i>=550&&jo("Quincentennial and a half"),i>=600&&jo("Sexcentennial"),t>=100&&jo("Builder"),t>=500&&jo("Architect"),t>=1e3&&jo("Engineer"),t>=2e3&&jo("Lord of Constructs"),t>=4e3&&jo("Grand design"),t>=8e3&&jo("Ecumenopolis"),Ne>=20&&jo("Enhancer"),Ne>=50&&jo("Augmenter"),Ne>=100&&jo("Upgrader"),Ne>=200&&jo("Lord of Progress"),Ne>=300&&jo("The full picture"),Ne>=400&&jo("When there's nothing left to add"),t>=4e3&&Ne>=300&&jo("Polymath"),t>=8e3&&Ne>=400&&jo("Renaissance baker"),Qt.Cursor.amount+Qt.Grandma.amount>=777&&jo("The elder scrolls");let a=!0;Object.keys(Ho).forEach((e=>{oo(Ho[e])||(a=!1)})),a&&jo("Spooky cookies");let r=!0;if(Object.keys(Ro).forEach((e=>{oo(Ro[e])||(r=!1)})),r&&jo("Let it snow"),oo("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{oo(e[o].name)&&(t+=1)})),t>=e.length&&jo("O Fortuna")}}function _o(e,t){const o=[];return Object.keys(Game.Objects).forEach((t=>{o[t]={},o[t].bonus=function(e,t){vo(),Qt[e].amount+=t;const o=Qt[e];"Cursor"===e?(o.amount>=1&&jo("Click"),o.amount>=2&&jo("Double-click"),o.amount>=50&&jo("Mouse wheel"),o.amount>=100&&jo("Of Mice and Men"),o.amount>=200&&jo("The Digital"),o.amount>=300&&jo("Extreme polydactyly"),o.amount>=400&&jo("Dr. T"),o.amount>=500&&jo("Thumbs, phalanges, metacarpals"),o.amount>=600&&jo("With her finger and her thumb"),o.amount>=700&&jo("Gotta hand it to you"),o.amount>=800&&jo("The devil's workshop")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&jo(Game.Objects[o.name].tieredAchievs[e].name)}));const n=Fe;return Uo(),Vo(),n!==Fe&&Uo(),Ie-Game.cookiesPs}(t,e),1!==e&&(Be=1)})),o}function Xo(){Object.keys(Game.Objects).forEach((e=>{mt[e].price=Ao(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),ht[e].price=Ao(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),gt[e].price=Ao(Game.Objects[e],Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100)}))}function Qo(){mt=_o(1),ht=_o(10),gt=_o(100),Gt=[],Object.keys(Game.Upgrades).forEach((t=>{const o=function(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){vo(),"Shimmering veil [on]"===qt[e].name?qt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===qt[e].name?qt["Golden switch [off]"].bought=0:qt[e].bought=(qt[e].bought+1)%2,qt[e],Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Ne+=1),"Elder Pledge"===e?(Oe+=1,Oe>0&&jo("Elder nap"),Oe>=5&&jo("Elder slumber")):"Elder Covenant"===e?jo("Elder calm"):"Prism heart biscuits"===e?jo("Lovely cookies"):"Heavenly key"===e&&jo("Wholesome");const t=Fe;Uo(),Vo(),t!==Fe&&Uo();const o=function(){let e=0;oo("Thousand fingers")&&(e+=.1),oo("Million fingers")&&(e*=5),oo("Billion fingers")&&(e*=10),oo("Trillion fingers")&&(e*=20),oo("Quadrillion fingers")&&(e*=20),oo("Quintillion fingers")&&(e*=20),oo("Sextillion fingers")&&(e*=20),oo("Septillion fingers")&&(e*=20),oo("Octillion fingers")&&(e*=20),oo("Nonillion fingers")&&(e*=20);let t=0;Object.keys(Qt).forEach((e=>{t+=Qt[e].amount})),t-=Qt.Cursor.amount,e*=t,oo("Plastic mouse")&&(e+=.01*Ie),oo("Iron mouse")&&(e+=.01*Ie),oo("Titanium mouse")&&(e+=.01*Ie),oo("Adamantium mouse")&&(e+=.01*Ie),oo("Unobtainium mouse")&&(e+=.01*Ie),oo("Eludium mouse")&&(e+=.01*Ie),oo("Wishalloy mouse")&&(e+=.01*Ie),oo("Fantasteel mouse")&&(e+=.01*Ie),oo("Nevercrack mouse")&&(e+=.01*Ie),oo("Armythril mouse")&&(e+=.01*Ie),oo("Technobsidian mouse")&&(e+=.01*Ie),oo("Plasmarble mouse")&&(e+=.01*Ie),oo("Miraculite mouse")&&(e+=.01*Ie),oo("Fortune #104")&&(e+=.01*Ie);let o=1;if(oo("Santa's helpers")&&(o*=1.1),oo("Cookie egg")&&(o*=1.1),oo("Halo gloves")&&(o*=1.1),oo("Dragon claw")&&(o*=1.03),oo("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,oo("Luminous gloves")?20:10)),o*=to("click"),Qt.Temple.minigameLoaded&&no){const e=no("labor");1===e?o*=1.15:2===e?o*=1.1:3===e&&(o*=1.05)}Object.keys(Game.buffs).forEach((e=>{void 0!==Game.buffs[e].multClick&&(o*=Game.buffs[e].multClick)})),o*=1+.05*Zt("Dragon Cursor");let n=o*Game.ComputeCps(1,oo("Reinforced index finger")+oo("Carpal tunnel prevention cream")+oo("Ambidextrous"),e);return n=Game.runModHookOnValue("cookiesPerClick",n),Game.hasBuff("Cursed finger")&&(n=Game.buffs["Cursed finger"].power),n}()-Game.computedMouseCps;return o?[Ie-Game.cookiesPs,o]:[Ie-Game.cookiesPs]}return[]}(t);"Elder Pledge"===t?(Gt[t]={bonus:Game.cookiesPs-Ge},1===e.CalcWrink?Gt[t].bonus-=ve:2===e.CalcWrink&&(Gt[t].bonus-=we),Number.isFinite(Gt[t].bonus)||(Gt[t].bonus=0)):(Gt[t]={},o[0]&&(Gt[t].bonus=o[0]),o[1]&&(Gt[t].bonusMouse=o[1]))}))}function qo(e,t,o){let n=0,i=0,a=0,r=0,l=1+Math.max(0,Math.ceil(Math.log(Game.cookies)/Math.LN10)-10);for(;a0?e/=t:e=0,Bt=qo(7,e,lt),Mt=2*Bt[1]/lt,St=Bt[2]/60/60/6/rt,Nt=qo(6,e,st),Pt=2*Nt[1]/st,Et=Nt[2]/60/60/6/rt,Wt=qo(7,7*e,lt),Ot=2*Wt[1]/lt,Ft=Wt[2]/60/60/6/rt,jt=qo(6,7*e,st),Lt=2*jt[1]/st,At=jt[2]/60/60/6/rt}function Ko(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){const t=Game.HowMuchPrestige(Game.cookiesReset),o=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))-Math.floor(t),n=e-Me,i=Math.max(0,o-Se)/n;for(let e=0;e{e.push(Game.Upgrades[t])})),e.sort((function(e,t){return e.order>t.order?1:e.order{const o=e[t];if(0===o.bought){let e="";e+=function(e){let t="crate upgrade missing";"prestige"===e.pool&&(t+=" heavenly");let o=0;Game.prefs.crates||(o=1),o&&(t+=" noFrame");let{icon:n}=e;e.iconFunction&&(n=e.iconFunction());const i=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?xt+=e:"cookie"===o.pool?Tt+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(wt+=e)}}))}function Zo(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),pt=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(pt*=2)}}function en(){qe=900*at/.15,qe*=rt;const e=Mo();e>0?qe/=e:qe=0,Ye=lt*(.15*qe)+13,Ke=st*(.15*qe)+13,Je=7*qe,Ze=lt*(.15*Je)+13,et=st*(.15*Je)+13,tt=2*qe,ot=.15*tt,nt=0;let t=0,o=0;Object.keys(Game.Objects).forEach((e=>{Game.Objects[e].amount>t&&(t=Game.Objects[e].amount),Game.Objects[e].amount>0&&(o+=1)})),Object.keys(Game.Objects).forEach((e=>{(Game.Objects[e].amountnt&&(nt=2*Game.Objects[e].price,it=e)}))}function tn(){let e=1,t=1,o=1;oo("Green yeast digestives")&&(o*=1.01),oo("Dragon fang")&&(o*=1.03),e*=1+.1*Game.auraMult("Ancestral Metamorphosis"),e*=Game.eff("goldenCookieGain"),t*=1+.1*Game.auraMult("Unholy Dominion"),t*=Game.eff("wrathCookieGain"),lt=o*e,st=o*t,rt=1,0===Game.shimmerTypes.golden.n&&(rt*=1+1.23*Game.auraMult("Dragon's Fortune"))}function on(){ft=0,Ct=0,yt=[0,null];for(let e=0;eyt[0]&&(yt=[t,e]))}}function nn(){Co(),on(),en(),tn(),Yo(),Jo(),Zo(),de=new Eo(q[q.length-1]),pe=new Eo(q[q.length-1]),ue=new Eo(q[q.length-1]),me=new Eo(q[q.length-1]),he=new Eo(Y[Y.length-1]),ge=new Eo(5),Ko(),No(),Qo(),Xo(),Lo()}const an={BotBar:1,TimerBar:1,TimerBarPos:0,TimerBarOverlay:2,BuildColor:1,PPDisplayTime:0,UpBarColor:1,UpgradeBarFixedPos:1,CalcWrink:0,CPSMode:1,AvgCPSHist:3,AvgClicksHist:0,PPExcludeTop:0,PPSecondsLowerLimit:0,PPOnlyConsiderBuyable:0,ToolWarnBon:1,Title:1,GeneralSound:1,GCNotification:0,GCFlash:1,GCSound:1,GCVolume:100,GCSoundURL:"https://freesound.org/data/previews/66/66717_931655-lq.mp3",FortuneNotification:0,FortuneFlash:1,FortuneSound:1,FortuneVolume:100,FortuneSoundURL:"https://freesound.org/data/previews/174/174027_3242494-lq.mp3",SeaNotification:0,SeaFlash:1,SeaSound:1,SeaVolume:100,SeaSoundURL:"https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3",GardFlash:1,GardSound:1,GardVolume:100,GardSoundURL:"https://freesound.org/data/previews/103/103046_861714-lq.mp3",MagicNotification:0,MagicFlash:1,MagicSound:1,MagicVolume:100,MagicSoundURL:"https://freesound.org/data/previews/221/221683_1015240-lq.mp3",WrinklerNotification:0,WrinklerFlash:1,WrinklerSound:1,WrinklerVolume:100,WrinklerSoundURL:"https://freesound.org/data/previews/124/124186_8043-lq.mp3",WrinklerMaxNotification:0,WrinklerMaxFlash:1,WrinklerMaxSound:1,WrinklerMaxVolume:100,WrinklerMaxSoundURL:"https://freesound.org/data/previews/152/152743_15663-lq.mp3",TooltipBuildUpgrade:1,TooltipAmor:0,ToolWarnLucky:1,ToolWarnLuckyFrenzy:1,ToolWarnConjure:1,ToolWarnConjureFrenzy:1,ToolWarnEdifice:1,ToolWarnUser:0,ToolWarnPos:1,TooltipGrim:1,TooltipWrink:1,TooltipLump:1,TooltipPlots:1,TooltipPantheon:1,DragonAuraInfo:1,TooltipAscendButton:1,Stats:1,MissingUpgrades:1,UpStats:1,TimeFormat:0,DetailedTime:1,GrimoireBar:1,HeavenlyChipsTarget:1,ShowMissedGC:1,Scale:2,ScaleDecimals:2,ScaleSeparator:0,ScaleCutoff:999999,Colors:{Blue:"#4bb8f0",Green:"#00ff00",Yellow:"#ffff00",Orange:"#ff7f00",Red:"#ff0000",Purple:"#ff00ff",Gray:"#b3b3b3",Pink:"#ff1493",Brown:"#8b4513"},SortBuildings:0,SortUpgrades:0,GCTimer:1,Favicon:1,WrinklerButtons:1,HideSectionsButtons:0,BulkBuyBlock:0,Header:{BarsColors:1,Calculation:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Tooltip:1,Statistics:1,Notation:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Misc:1,InfoTab:1}},rn=function(e){if(1===e){const e=function(){try{Notification.requestPermission().then()}catch(e){return!1}return!0};"Notification"in window?e()?Notification.requestPermission().then():Notification.requestPermission():console.log("This browser does not support notifications.")}};function ln(){1===e.BotBar?(l("CMBotBar").style.display="",mo()):l("CMBotBar").style.display="none",go()}function sn(){BeautifyAll(),Game.RefreshStore(),Game.RebuildUpgrades(),mo(),ro(),lo()}function cn(){let t="";for(let o=0;o0?Ht.wrath?l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://aktanusa.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}class pn{constructor(e,t){this.type=e,this.group=t}}class un extends pn{constructor(e,t,o,n,i,a=null){super(e,t),this.label=o,this.desc=n,this.toggle=i,a&&(this.func=a)}}class mn extends pn{constructor(e,t,o,n){super(e,t),this.label=o,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}}class hn extends pn{constructor(e,t,o,n,i,a){super(e,t),this.label=o,this.desc=n,this.min=i,this.max=a}}const gn={BotBar:new un("bool","BarsColors",["Bottom Bar OFF","Bottom Bar ON"],"Building Information",!0,(function(){ln()})),TimerBar:new un("bool","BarsColors",["Timer Bar OFF","Timer Bar ON"],"Timers of Golden Cookie, Season Popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(function(){fo()})),TimerBarPos:new un("bool","BarsColors",["Timer Bar Position (Top Left)","Timer Bar Position (Bottom)"],"Placement of the Timer Bar",!1,(function(){0===e.TimerBarPos?(l("CMTimerBar").style.width="30%",l("CMTimerBar").style.bottom="",l("game").insertBefore(l("CMTimerBar"),l("sectionLeft"))):(l("CMTimerBar").style.width="100%",l("CMTimerBar").style.bottom="0px",l("wrapper").appendChild(l("CMTimerBar"))),go()})),TimerBarOverlay:new un("bool","BarsColors",["Timer Bar Overlay OFF","Timer Bar Overlay Only Seconds","Timer Bar Overlay Full"],"Overlay on timers displaying seconds and/or percentage left",!0),SortBuildings:new un("bool","BarsColors",["Sort Buildings: Default","Sort Buildings: PP of x1 purchase","Sort Buildings: PP of selected bulk mode"],"Sort the display of buildings in either default order or by PP",!1,(function(){ro()})),SortUpgrades:new un("bool","BarsColors",["Sort Upgrades: Default","Sort Upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(function(){lo()})),BuildColor:new un("bool","BarsColors",["Building Colors OFF","Building Colors ON"],"Color code buildings",!0,(function(){ro()})),PPDisplayTime:new un("bool","BarsColors",["PP As Value (Standard)","PP As Time Unit"],"Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.",!1),UpBarColor:new un("bool","BarsColors",["Upgrade Colors/Bar OFF","Upgrade Colors with Bar ON","Upgrade Colors without Bar ON"],"Color code upgrades and optionally add a counter bar",!1,(function(){1===e.UpBarColor?(l("CMUpgradeBar").style.display="",lo()):2===e.UpBarColor?(l("CMUpgradeBar").style.display="none",lo()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),Colors:new class extends pn{constructor(e,t,o,n){super(e,t),this.desc=o,this.func=n}}("color","BarsColors",{Blue:"Color Blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels",Green:"Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels",Yellow:"Color Yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels",Orange:"Color Orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels",Red:"Color Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels",Purple:"Color Purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels",Gray:"Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar",Pink:"Color Pink. Used for Dragonflight bar",Brown:"Color Brown. Used for Dragon Harvest bar"},(function(){cn()})),UpgradeBarFixedPos:new un("bool","BarsColors",["Upgrade Bar Fixed Position OFF","Upgrade Bar Fixed Position ON"],"Lock the upgrade bar at top of the screen to prevent it from moving ofscreen when scrolling",!0,(function(){1===e.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),CalcWrink:new un("bool","Calculation",["Calculate with Wrinklers OFF","Calculate with Wrinklers ON","Calculate with Single Fattest Wrinkler ON"],"Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers",!0,(function(){Re=!0})),CPSMode:new un("bool","Calculation",["Current Cookies Per Second","Average Cookies Per Second"],"Calculate times using current Cookies Per Second or average Cookies Per Second",!1),AvgCPSHist:new un("bool","Calculation",["Average CPS for past 10s","Average CPS for past 15s","Average CPS for past 30s","Average CPS for past 1m","Average CPS for past 5m","Average CPS for past 10m","Average CPS for past 15m","Average CPS for past 30m"],"How much time average Cookies Per Second should consider",!1),AvgClicksHist:new un("bool","Calculation",["Average Cookie Clicks for past 1s","Average Cookie Clicks for past 5s","Average Cookie Clicks for past 10s","Average Cookie Clicks for past 15s","Average Cookie Clicks for past 30s"],"How much time average Cookie Clicks should consider",!1),PPExcludeTop:new un("bool","Calculation",["Don't Ignore Any","Ignore 1st Best","Ignore 1st and 2nd Best","Ignore 1st, 2nd and 3rd Best"],"Makes CookieMonster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPSecondsLowerLimit:new hn("numscale","Calculation","Lower limit for PP (in seconds): ",'If a building or upgrade costs less than the specified seconds of CPS it will also be considered optimal and label it as such ("PP is less than xx seconds of CPS"); setting to 0 ignores this option',0,1/0),PPOnlyConsiderBuyable:new un("bool","Calculation",["Don't Ignore Non-Buyable","Ignore Non-Buyable"],"Makes CookieMonster label buildings and upgrades you can't buy right now red, useful in those situations where you just want to spend your full bank 'most optimally'",!0),ToolWarnBon:new un("bool","Calculation",["Calculate Tooltip Warning With Bonus CPS OFF","Calculate Tooltip Warning With Bonus CPS ON"],"Calculate the warning with or without the bonus CPS you get from buying",!0),Title:new un("bool","NotificationGeneral",["Title OFF","Title ON","Title Pinned Tab Highlight"],'Update title with Golden Cookie/Season Popup timers; pinned tab highlight only changes the title when a Golden Cookie/Season Popup spawns; "!" means that Golden Cookie/Reindeer can spawn',!0),GeneralSound:new un("bool","NotificationGeneral",["Consider Game Volume Setting OFF","Consider Game Volume Setting ON"],'Turning this toggle to "off" makes Cookie Monster no longer consider the volume setting of the base game, allowing mod notifications to play with base game volume turned down',!0),GCNotification:new un("bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when Golden Cookie spawns",!0,(function(){rn(e.GCNotification)})),GCFlash:new un("bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on Golden Cookie",!0),GCSound:new un("bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on Golden Cookie",!0),GCVolume:new mn("vol","NotificationGC",[],"Volume"),GCSoundURL:new un("url","NotificationGC","Sound URL:","URL of the sound to be played when a Golden Cookie spawns"),FortuneNotification:new un("bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when Fortune Cookie is on the Ticker",!0,(function(){rn(e.FortuneNotification)})),FortuneFlash:new un("bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on Fortune Cookie",!0),FortuneSound:new un("bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on Fortune Cookie",!0),FortuneVolume:new mn("vol","NotificationFC",[],"Volume"),FortuneSoundURL:new un("url","NotificationFC","Sound URL:","URL of the sound to be played when the Ticker has a Fortune Cookie"),SeaNotification:new un("bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on Season Popup",!0,(function(){rn(e.SeaNotification)})),SeaFlash:new un("bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on Season Popup",!0),SeaSound:new un("bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on Season Popup",!0),SeaVolume:new mn("vol","NotificationSea",[],"Volume"),SeaSoundURL:new un("url","NotificationSea","Sound URL:","URL of the sound to be played when a Season Special spawns"),GardFlash:new un("bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on Garden Tick",!0),GardSound:new un("bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on Garden Tick",!0),GardVolume:new mn("vol","NotificationGard",[],"Volume"),GardSoundURL:new un("url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new un("bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(function(){rn(e.MagicNotification)})),MagicFlash:new un("bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),MagicSound:new un("bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new mn("vol","NotificationMagi",[],"Volume"),MagicSoundURL:new un("url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new un("bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a Wrinkler appears",!0,(function(){rn(e.WrinklerNotification)})),WrinklerFlash:new un("bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a Wrinkler appears",!0),WrinklerSound:new un("bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a Wrinkler appears",!0),WrinklerVolume:new mn("vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new un("url","NotificationWrink","Sound URL:","URL of the sound to be played when a Wrinkler appears"),WrinklerMaxNotification:new un("bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of Wrinklers has appeared",!0,(function(){rn(e.WrinklerMaxNotification)})),WrinklerMaxFlash:new un("bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxSound:new un("bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of Wrinklers has appeared",!0),WrinklerMaxVolume:new mn("vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new un("url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of Wrinklers has appeared"),TooltipBuildUpgrade:new un("bool","Tooltip",["Building/Upgrade Tooltip Information OFF","Building/Upgrade Tooltip Information ON"],"Extra information in Building/Upgrade tooltips",!0),TooltipAmor:new un("bool","Tooltip",["Buildings Tooltip Amortization Information OFF","Buildings Tooltip Amortization Information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new un("bool","Tooltip",["Tooltip Lucky Warning OFF","Tooltip Lucky Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" rewards',!0),ToolWarnLuckyFrenzy:new un("bool","Tooltip",["Tooltip Lucky Frenzy Warning OFF","Tooltip Lucky Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Lucky!" (Frenzy) rewards',!0),ToolWarnConjure:new un("bool","Tooltip",["Tooltip Conjure Warning OFF","Tooltip Conjure Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards',!0),ToolWarnConjureFrenzy:new un("bool","Tooltip",["Tooltip Conjure Frenzy Warning OFF","Tooltip Conjure Frenzy Warning ON"],'A warning when buying if it will put the bank under the amount needed for max "Conjure Baked Goods" rewards with Frenzy active',!0),ToolWarnEdifice:new un("bool","Tooltip",["Tooltip Edifice Warning OFF","Tooltip Edifice Warning ON"],'A warning when buying if it will put the bank under the amount needed for "Spontaneous Edifice" to possibly give you your most expensive building',!0),ToolWarnUser:new hn("numscale","Tooltip","Tooltip Warning At x times CPS: ","Use this to show a customized warning if buying it will put the bank under the amount equal to value times cps; setting to 0 disables the function altogether",0,1/0),ToolWarnPos:new un("bool","Tooltip",["Tooltip Warning Position (Left)","Tooltip Warning Position (Bottom)"],"Placement of the warning boxes",!1,(function(){So()})),TooltipGrim:new un("bool","Tooltip",["Grimoire Tooltip Information OFF","Grimoire Tooltip Information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new un("bool","Tooltip",["Wrinkler Tooltip OFF","Wrinkler Tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new un("bool","Tooltip",["Sugar Lump Tooltip OFF","Sugar Lump Tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new un("bool","Tooltip",["Garden Plots Tooltip OFF","Garden Plots Tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipPantheon:new un("bool","Tooltip",["Show Extra Info Pantheon Tooltip OFF","Show Extra Info Pantheon Tooltip ON"],"Shows additional info in the pantheon tooltip",!0),DragonAuraInfo:new un("bool","Tooltip",["Extra Dragon Aura Info OFF","Extra Dragon Aura Info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),TooltipAscendButton:new un("bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new un("bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new un("bool","Statistics",["Missing Upgrades OFF","Missing Upgrades ON"],"Shows Missing upgrades in Stats Menu. This feature can be laggy for users with a low amount of unlocked achievements.",!0),UpStats:new un("bool","Statistics",["Statistics Update Rate (Default)","Statistics Update Rate (1s)"],"Default Game rate is once every 5 seconds",!1),TimeFormat:new un("bool","Statistics",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX"],"Change the time format",!1),DetailedTime:new un("bool","Statistics",["Detailed Time OFF","Detailed Time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(function(){1===e.DetailedTime?Game.sayTime=$:Game.sayTime=M.sayTime})),GrimoireBar:new un("bool","Statistics",["Grimoire Magic Meter Timer OFF","Grimoire Magic Meter Timer ON"],"A timer on how long before the Grimoire magic meter is full",!0),HeavenlyChipsTarget:new hn("numscale","Statistics","Heavenly Chips Target: ",'Use this to set a Heavenly Chips target that will be counted towards in the "prestige" statsistics sections',1,1/0),ShowMissedGC:new un("bool","Statistics",["Missed GC OFF","Missed GC ON"],"Show a stat in the statistics screen that counts how many Golden Cookies you have missed",!0),Scale:new un("bool","Notation",["Game's Setting Scale","Metric","Short Scale","Short Scale (Abbreviated)","Scientific Notation","Engineering Notation"],"Change how long numbers are handled",!1,(function(){sn()})),ScaleDecimals:new un("bool","Notation",["1 decimals","2 decimals","3 decimals"],'Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game\'s Setting Scale"',!1,(function(){sn()})),ScaleSeparator:new un("bool","Notation",[". for decimals (Standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(function(){sn()})),ScaleCutoff:new hn("numscale","Notation","Notation Cut-off Point: ","The number from which CookieMonster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),GCTimer:new un("bool","Miscellaneous",["Golden Cookie Timer OFF","Golden Cookie Timer ON"],"A timer on the Golden Cookie when it has been spawned",!0,(function(){1===e.GCTimer?Object.keys(ae).forEach((e=>{ae[e].style.display="block",ae[e].style.left=Vt[e].l.style.left,ae[e].style.top=Vt[e].l.style.top})):Object.keys(ae).forEach((e=>ae[e].style.display="none"))})),Favicon:new un("bool","Miscellaneous",["Favicon OFF","Favicon ON"],"Update favicon with Golden/Wrath Cookie",!0,(function(){dn()})),WrinklerButtons:new un("bool","Miscellaneous",["Extra Wrinkler Buttons OFF","Extra Wrinkler Buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(function(){e.WrinklerButtons?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")})),HideSectionsButtons:new un("bool","Miscellaneous",["Hide Upgrades/Buildings Button OFF","Hide Upgrades/Buildings Button ON"],"Show buttons for hiding and showing the upgrades and buildings section in the right column",!0,(function(){e.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),BulkBuyBlock:new un("bool","Miscellaneous",["Block Bulk Buying OFF","Block Bulk Buying ON"],"Block clicking bulk buying when you can't buy all. This prevents buying 7 of a building when you are in buy-10 or buy-100 mode.",!0)};function fn(){return JSON.stringify({settings:e,version:"2.031.6"})}function Cn(){if(Xe!==Game.dragonLevel||Re){if(Game.dragonLevel<25&&Game.dragonLevels[Game.dragonLevel].buy.toString().includes("sacrifice")){let e=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/Objects\[(.*)\]/)[1];const t=Game.dragonLevels[Game.dragonLevel].buy.toString().match(/sacrifice\((.*?)\)/)[1];if("i"!==e)if(e=e.replaceAll("'",""),Game.Objects[e].amount{Qt[e]=ko(e)})),qt=[],Object.keys(Game.Upgrades).forEach((e=>{qt[e]=Go(e)})),Yt=[],Object.keys(Game.Achievements).forEach((e=>{Yt[e]=yo(e)})),vo()}let kn=!1;function Gn(t,o){1===e[o]&&3===t&&!1===kn||1===t?(l("CMWhiteScreen").style.opacity="0.5",3===t?(l("CMWhiteScreen").style.display="inline",setTimeout((function(){Gn(2,o)}),1e3/Game.fps)):setTimeout((function(){Gn(0,o)}),1e3/Game.fps)):2===t?(l("CMWhiteScreen").style.opacity="1",setTimeout((function(){Gn(1,o)}),1e3/Game.fps)):0===t&&(l("CMWhiteScreen").style.display="none")}function vn(t,o,n,i){if((1===e[o]||i)&&!1===kn){const o=new Audio(t);e.GeneralSound?o.volume=e[n]/100*(Game.volume/100):o.volume=e[n]/100,o.play()}}function wn(t,o,n){1===e[t]&&"hidden"===document.visibilityState&&!1===kn&&new Notification(o,{body:n,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})}function xn(){if(ne!==Game.OnAscend&&(ne=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===e.BotBar&&(l("CMBotBar").style.display="none"),1===e.TimerBar&&(l("CMTimerBar").style.display="none")):(ln(),fo()),ho()),!Game.OnAscend&&0===Game.AscendTimer){a!==Object.keys(Game.mods).length&&(bn(),nn(),a=Object.keys(Game.mods).length),Re&&(Qo(),Game.Has("Golden switch [off]")?(vo(),qt["Golden switch [off]"].bought=0,Uo(),at=Ie):at=Game.cookiesPs,tn(),en(),Jo(),Yo(),Cn(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)Xt[e][t]=yn(e,t)}(),Zo(),function(){let e=0;if(Game.Objects.Bank.minigameLoaded){const t=Game.Objects.Bank.minigame.goods;let o=0;Object.keys(t).forEach((e=>{const n=t[e];o+=n.stock*n.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;vo();let t=2;5!==Ae&&18!==Ae||(t-=1),5!==je&&18!==je||(t-=1),Ae=5,je=18;for(let e=0;e{Qt[t].amount>0&&(e=t)})),Qt[e].amount-=1,Ee-=1}return Object.keys(Qt).forEach((t=>{const o=Qt[t];e+=ao(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),_t=e}(),Re=0);const t=Game.auraMult("Fierce Hoarder")>0;!Pe&&t?(Pe=!0,Be=1):Pe&&!t&&(Pe=!1,Be=1),Be&&(Xo(),Be=0),function(){on(),Lo(),function(){bt=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Qt.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}kt=e,bt=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t}(),No(),Ko();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);$t=se(e/so())}(),k=0,Vt={},Object.keys(Game.shimmers).forEach((e=>{Vt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(Ht=Game.shimmers[e],k+=1)})),Object.keys(ae).forEach((e=>{void 0===Vt[e]&&(ae[e].parentNode.removeChild(ae[e]),delete ae[e])})),C!==Game.shimmerTypes.golden.n?(C=Game.shimmerTypes.golden.n,C&&(y{void 0===ae[Game.shimmers[t].id]&&function(t){const o=document.createElement("div");o.id=`GCTimer${t.id}`,o.style.width="96px",o.style.height="96px",o.style.position="absolute",o.style.zIndex="10000000001",o.style.textAlign="center",o.style.lineHeight="96px",o.style.fontFamily='"Kavoon", Georgia, serif',o.style.fontSize="35px",o.style.cursor="pointer",o.style.display="block",0===e.GCTimer&&(o.style.display="none"),o.style.left=t.l.style.left,o.style.top=t.l.style.top,o.onclick=function(){t.pop()},o.onmouseover=function(){t.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",t.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},o.onmouseout=function(){t.l.style.filter="",t.l.style.webkitFilter=""},ae[t.id]=o,l("shimmers").appendChild(o)}(Game.shimmers[t])}))),dn(),y=k,0===k&&(Ht=0)):1===e.GCTimer&&C&&Object.keys(ae).forEach((e=>{ae[e].style.opacity=Vt[e].l.style.opacity,ae[e].style.transform=Vt[e].l.style.transform,ae[e].textContent=Math.ceil(Vt[e].life/Game.fps)})),g!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(g=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,g&&(Gn(3,"FortuneFlash"),vn(e.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),wn("FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),h!==Game.shimmerTypes.reindeer.spawned&&(h=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(Rt=Game.shimmers[e])})),Gn(3,"SeaFlash"),vn(e.SeaSoundURL,"SeaSound","SeaVolume",!1),wn("SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!")),Game.Objects.Farm.minigameLoaded&&f!==Game.Objects.Farm.minigame.nextStep&&(0!==f&&f0){let t=0;Object.keys(Game.wrinklers).forEach((e=>{2===Game.wrinklers[e].phase&&(t+=1)})),t>G?(G=t,t===Game.getWrinklersMax()&&e.WrinklerMaxFlash?Gn(3,"WrinklerMaxFlash"):Gn(3,"WrinklerFlash"),t===Game.getWrinklersMax()&&e.WrinklerMaxSound?vn(e.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):vn(e.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),t===Game.getWrinklersMax()&&e.WrinklerMaxNotification?wn("WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):wn("WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):G=t}}()}}function Tn(){const e=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),t=e.match(/CookieMonster.*(;|$)/);if(null!==t){const o=e.replace(t[0],`CookieMonster:${fn()}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(o)}!END!`))}}function Mn(t){if(void 0!==localStorage.CMConfig&&delete localStorage.CMConfig,void 0!==t){e=t;let o=!1;Object.keys(an).forEach((t=>{void 0===e[t]?(o=!0,e[t]=an[t]):"Header"!==t&&"Colors"!==t?-1===t.indexOf("SoundURL")?e[t]>-1&&e[t]{void 0!==e[t][n]&&e[t][n]>-1&&e[t][n]<2||(o=!0,e[t][n]=an[t][n])})):Object.keys(an.Colors).forEach((n=>{void 0!==e[t][n]&&"string"==typeof e[t][n]||(o=!0,e[t][n]=an[t][n])}))})),o&&Tn(),xn(),Object.keys(an).forEach((e=>{"Header"!==e&&void 0!==gn[e].func&&gn[e].func()}))}else Mn(an)}function Sn(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Bn(t,o){if("b"===t){if(l("tooltip").innerHTML=Game.Objects[o].tooltip(),1===e.TooltipAmor){const e=Ao(Game.Objects[o],Game.Objects[o].basePrice,0,Game.Objects[o].free,Game.Objects[o].amount),t=e-Game.Objects[o].totalCookies;t>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${le(t)} ${1===Math.floor(t)?"cookie":"cookies"} left to amortize (${ce((e-Game.Objects[o].totalCookies)/(Game.Objects[o].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(le(Game.Objects[o].bulkPrice)).join(le((Game.Objects[o],Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,Game.buyBulk,1))))}else if("u"===t){if(!Game.UpgradesInStore[o])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[o],"store")}else"s"===t?l("tooltip").innerHTML=Game.lumpTooltip():"g"===t?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(o)():"p"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(o[0],o[1])():"ha"===t?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"wb"===t?l("tooltip").innerHTML="":"pag"===t?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(o)():"pas"===t&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(o[0])());if("b"===t&&1===Game.buyMode||"u"===t||"s"===t||"g"===t||"p"===t&&!Game.keys[16]||"ha"===t||"wb"===t||"pag"===t||"pas"===t&&-1!==o[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return ee=t,te=o,Bo(),l("tooltip").innerHTML}function Pn(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(x[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("g",`${e}`)}),"this"),Game.tooltip.wobble()})}))}function En(){if(!u&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:t}=Game.Objects["Wizard tower"];d=t.draw,Game.Objects["Wizard tower"].minigame.draw=function(){d(),1===e.GrimoireBar&&t.magic1&&(e.Header[t]=0),Tn()}function jn(t,o){const n=document.createElement("div");n.className="title",n.style.padding="0px 16px",n.style.opacity="0.7",n.style.fontSize="17px",n.style.fontFamily='"Kavoon", Georgia, serif',n.appendChild(document.createTextNode(`${t} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[o]?"-":"+",i.onclick=function(){An(o),Game.UpdateMenu()},n.appendChild(i),n}function Un(e,t,o,n){const i=document.createElement("div");i.className="listing";const a=document.createElement("b");if(a.textContent=t,i.appendChild(a),"withTooltip"===e){i.className="listing",i.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(H[n].innerHTML))},e.style.cursor="default",e.style.display="inline-block",e.style.height="10px",e.style.width="10px",e.style.borderRadius="5px",e.style.textAlign="center",e.style.backgroundColor="#C0C0C0",e.style.color="black",e.style.fontSize="9px",e.style.verticalAlign="bottom",e.textContent="?",i.appendChild(e)}return i.appendChild(document.createTextNode(": ")),i.appendChild(o),i}function Dn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const n=document.createElement("div"),i=document.createElement("div");i.style.minWidth="140px",i.style.marginBottom="4px";const a=document.createElement("div");return a.className="name",a.style.marginBottom="4px",a.style.textAlign="center",a.textContent="Missing",i.appendChild(a),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),i.appendChild(o)})),n.appendChild(i),o.onmouseover=function(){Game.tooltip.draw(this,escape(n.innerHTML))},o.style.cursor="default",o.style.display="inline-block",o.style.height="10px",o.style.width="10px",o.style.borderRadius="5px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="9px",o.style.verticalAlign="bottom",o.textContent="?",t.appendChild(o),t}function Hn(t){const o=document.createElement("div");if(o.className="subsection",o.appendChild(t),o.appendChild(jn("Lucky Cookies","Lucky")),e.Header.Lucky&&o.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+co()0&&(t.appendChild(Un("basic","Heavenly Chips To Target Set In Settings (CUR)",document.createTextNode(le(e)))),t.appendChild(Un("basic","Time To Target (CUR, Current 5 Second Average)",document.createTextNode(se(e/ct)))))}const l=function(e){let t=Game.cookiesPs;vo(),0===qt["Heavenly key"].bought&&(qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Uo(),t=Ie,vo()),Ut>=1e6&&jo("Sacrifice"),Ut>=1e9&&jo("Oblivion"),Ut>=1e12&&jo("From scratch"),Ut>=1e15&&jo("Nihilism"),Ut>=1e18&&jo("Dematerialize"),Ut>=1e21&&jo("Nil zero zilch"),Ut>=1e24&&jo("Transcendence"),Ut>=1e27&&jo("Obliterate"),Ut>=1e30&&jo("Negative void"),Ut>=1e33&&jo("To crumbs, you say?"),Ut>=1e36&&jo("You get nothing"),Ut>=1e39&&jo("Humble rebeginnings"),Ut>=1e42&&jo("The end of the world"),Ut>=1e45&&jo("Oh, you're back"),Ut>=1e48&&jo("Lazarus"),Ut>=1e51&&jo("Smurf account"),Ut>=1e54&&jo("If at first you don't succeed"),qt["Heavenly chip secret"].bought=1,qt["Heavenly cookie stand"].bought=1,qt["Heavenly bakery"].bought=1,qt["Heavenly confectionery"].bought=1,qt["Heavenly key"].bought=1,Le=e;const o=Fe;Uo(),Vo(),o!==Fe&&Uo();const n=Ie-t;return Le=Game.prestige,n}(o),s=document.createDocumentFragment();s.appendChild(document.createTextNode(le(l)));const c=Math.round(l/Game.cookiesPs*1e4);if(Number.isFinite(c)&&0!==c){const e=document.createElement("small");e.textContent=` (${c/100}% of income)`,s.appendChild(e)}t.appendChild(Un("withTooltip","Reset Bonus Income",s,"ResetTooltipPlaceholder"));const d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),p=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),u=p-d;if(!Game.Has("Lucky digit")){let e=7-p%10;e<0&&(e+=10);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Digit" (total / reset)',i))}if(!Game.Has("Lucky number")){let e=777-p%1e3;e<0&&(e+=1e3);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Number" (total / reset)',i))}if(!Game.Has("Lucky payout")){let e=777777-p%1e6;e<0&&(e+=1e6);const o=u+e,n=p+e,i=document.createDocumentFragment();i.appendChild(document.createTextNode(`${n.toLocaleString()} / ${o.toLocaleString()} (+${e})`)),t.appendChild(Un("basic",'Next "Lucky Payout" (total / reset)',i))}return t}()),Game.cpsSucked>0&&(o.appendChild(jn("Wrinklers","Wrink")),e.Header.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${le(ft)} / ${le(Ct)} `));const t=document.createElement("a");t.textContent="Pop All Normal",t.className="option",t.onclick=function(){Sn()},e.appendChild(t),o.appendChild(Un("basic","Rewards of Popping (All/Normal)",e));const n=document.createDocumentFragment();n.appendChild(document.createTextNode(`${le(yt[0])} `));const i=document.createElement("a");i.textContent="Pop Single Fattest",i.className="option",i.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},n.appendChild(i),o.appendChild(Un("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==yt[1]?yt[1]:"None"})`,n))}if(o.appendChild(function(){const t=document.createElement("div");t.className="CMStatsSeasonSection";let o=!1;const n=[];Object.keys(Ho).forEach((e=>{Game.Has(Ho[e])||(n.push(Ho[e]),o=!0)}));const i=[];Object.keys(Ro).forEach((e=>{Game.Has(Ro[e])||(i.push(Ro[e]),o=!0)}));const a=[];Object.keys($o).forEach((e=>{Game.Has($o[e])||(a.push($o[e]),o=!0)}));const r=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(r.push(Game.eggDrops[e]),o=!0)}));const l=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(l.push(Game.rareEggDrops[e]),o=!0)}));const s=[];Object.keys(Io).forEach((e=>{Game.HasUnlocked(Io[e])||(s.push(Io[e]),o=!0)}));const c=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),d=Game.Has("Century egg");if(("christmas"===Game.season||o||c||d)&&(t.appendChild(jn("Season Specials","Sea")),e.Header.Sea)){if(0!==n.length){t.appendChild(Un("basic","Halloween cookies left to buy",Dn(n)));let e=.95;if(Game.HasAchiev("Spooky cookies")&&(e=.8),Game.Has("Starterror")&&(e*=.9),e*=1/Game.dropRateMult(),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(Un("basic","Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${le(100*(1-e))}% / ${le(100*(1-.9*e))}%`)))}if(0!==i.length){t.appendChild(Un("basic","Christmas cookies left to buy",Dn(i)));let e=.8;if(Game.HasAchiev("Let it snow")&&(e=.6),e*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(e*=.95),Game.hasGod){const t=Game.hasGod("seasons");1===t?e*=.9:2===t?e*=.95:3===t&&(e*=.97)}t.appendChild(Un("basic","Chance of receiving a cookie from reindeer",document.createTextNode(`${le(100*(1-e))}%`)))}0!==a.length&&t.appendChild(Un("basic","Valentine cookies left to buy",Dn(a)));const e=function(e){let t=e*(1/Game.dropRateMult());if(Game.HasAchiev("Hide & seek champion")&&(t*=.7),Game.Has("Omelette")&&(t*=.9),Game.Has("Starspawn")&&(t*=.9),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=1-t,n=Game.eggDrops.length-r.length,i=Game.rareEggDrops.length-l.length,a=.9*o*(1-n/Game.eggDrops.length),s=.1*o*(1-i/Game.rareEggDrops.length),c=.9*o*(n/Game.eggDrops.length)+.1*o*(i/Game.rareEggDrops.length);return[a+.9*c*(1-n/Game.eggDrops.length),s+.1*c*(1-i/Game.rareEggDrops.length)]};0!==r.length&&(t.appendChild(Un("basic","Normal easter eggs left to unlock",Dn(r))),t.appendChild(Un("basic","Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[0])}% / ${le(100*e(.9)[0])}%`)))),0!==l.length&&(t.appendChild(Un("basic","Rare easter eggs left to unlock",Dn(l))),t.appendChild(Un("basic","Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${le(100*e(.98)[1])}% / ${le(100*e(.9)[1])}%`)))),0!==s.length&&t.appendChild(Un("basic","Rare plant drops left to unlock",Dn(s))),"christmas"===Game.season&&t.appendChild(Un("basic","Reindeer reward",document.createTextNode(le(pt)))),c&&t.appendChild(Un("withTooltip","Chocolate egg cookies",document.createTextNode(le(ut)),"ChoEggTooltipPlaceholder")),d&&t.appendChild(Un("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(dt-1))/100+"%")))}return t}()),o.appendChild(jn("Miscellaneous","Misc")),e.Header.Misc){if(o.appendChild(Un("basic",`Average Cookies Per Second (Past ${q[e.AvgCPSHist]<60?`${q[e.AvgCPSHist]} seconds`:q[e.AvgCPSHist]/60+(3===e.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(le(so(),3)))),o.appendChild(Un("basic",`Average Cookie Clicks Per Second (Past ${Y[e.AvgClicksHist]}${0===e.AvgClicksHist?" second":" seconds"})`,document.createTextNode(le(vt,1)))),Game.Has("Fortune cookies")){const e=[];Object.keys(Do).forEach((t=>{Game.Has(Do[t])||e.push(Do[t])})),0!==e.length&&o.appendChild(Un("basic","Fortune Upgrades Left to Buy",Dn(e)))}if(e.ShowMissedGC&&o.appendChild(Un("basic","Missed Golden Cookies",document.createTextNode(le(Game.missedGoldenClicks)))),Game.prefs.autosave){const e=document.createElement("span");e.id="CMStatsAutosaveTimer",e.innerText=Game.sayTime(60*Game.fps-(Game.OnAscend?0:Game.T%(60*Game.fps)),4),o.appendChild(Un("basic","Time till autosave",e))}}l("menu").insertBefore(o,l("menu").childNodes[2]),e.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&xt){const t=xt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=xt,e.appendChild(i)}else if("Upgrades"===e.children[0].innerHTML){if(wt){const t=wt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing normal upgrades: ${t}/${Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length} (${Math.floor(t/(Game.UpgradesByPool[""].length+Game.UpgradesByPool.tech.length)*100)}%)`,o.appendChild(n),e.insertBefore(o,e.childNodes[3]);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=wt,e.insertBefore(i,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Tt){const t=Tt.match(new RegExp("div","g")||0).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const n=document.createElement("div");n.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(n),e.appendChild(o);const i=document.createElement("div");i.className="listing crateBox",i.innerHTML=Tt,e.appendChild(i)}}}))}const Rn={BarsColors:"Bars/Colors",Calculation:"Calculation",Notification:"Notification",Tooltip:"Tooltips and additional insights",Statistics:"Statistics",Notation:"Notation",Miscellaneous:"Miscellaneous"},$n={NotificationGeneral:"General Notifications",NotificationGC:"Golden Cookie",NotificationFC:"Fortune Cookie",NotificationSea:"Season Special",NotificationGard:"Garden Tick",NotificationMagi:"Full Magic Bar",NotificationWrink:"Wrinkler",NotificationWrinkMax:"Maximum Wrinklers"};function In(t,o){const n=document.createElement("div");n.className="title",n.style.opacity="0.7",n.style.fontSize="17px",n.appendChild(document.createTextNode(`${o} `));const i=document.createElement("span");return i.style.cursor="pointer",i.style.display="inline-block",i.style.height="14px",i.style.width="14px",i.style.borderRadius="7px",i.style.textAlign="center",i.style.backgroundColor="#C0C0C0",i.style.color="black",i.style.fontSize="13px",i.style.verticalAlign="middle",i.textContent=e.Header[t]?"-":"+",i.onclick=function(){An(t),Game.UpdateMenu()},n.appendChild(i),n}function zn(t){const o=document.createElement("div");if(o.className="listing","bool"===gn[t].type){const n=document.createElement("a");gn[t].toggle&&0===e[t]?n.className="option off":n.className="option",n.id=Wn+t,n.onclick=function(){!function(t){e[t]+=1,e[t]===gn[t].label.length?(e[t]=0,gn[t].toggle&&(l(Wn+t).className="option off")):l(Wn+t).className="option",void 0!==gn[t].func&&gn[t].func(),l(Wn+t).innerHTML=gn[t].label[e[t]],Tn()}(t)},n.textContent=gn[t].label[e[t]],o.appendChild(n);const i=document.createElement("label");return i.textContent=gn[t].desc,o.appendChild(i),o}if("vol"===gn[t].type){const n=document.createElement("div");n.className="sliderBox";const i=document.createElement("div");i.style.float="left",i.innerHTML=gn[t].desc,n.appendChild(i);const a=document.createElement("div");a.id=`slider${t}right`,a.style.float="right",a.innerHTML=`${e[t]}%`,n.appendChild(a);const r=document.createElement("input");r.className="slider",r.id=`slider${t}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=e[t],r.oninput=function(){Ln(t)},r.onchange=function(){Ln(t)},n.appendChild(r),o.appendChild(n);const l=document.createElement("a");return l.className="option",l.onclick=function(){vn(e[t.replace("Volume","SoundURL")],t.replace("Volume","Sound"),t,!0)},l.textContent="Test sound",o.appendChild(l),o}if("url"===gn[t].type){const n=document.createElement("span");n.className="option",n.textContent=`${gn[t].label} `,o.appendChild(n);const i=document.createElement("input");i.id=Wn+t,i.className="option",i.type="text",i.readOnly=!0,i.setAttribute("value",e[t]),i.style.width="300px",o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("input");a.id=`${Wn+t}Prompt`,a.className="option",a.type="text",a.setAttribute("value",e[t]);const r=document.createElement("a");r.className="option",r.onclick=function(){Game.Prompt(a.outerHTML,[["Save",function(){e[`${t}`]=l(`CMConfig${t}Prompt`).value,Tn(),Game.ClosePrompt(),Game.UpdateMenu()}],"Cancel"])},r.textContent="Edit",o.appendChild(r);const s=document.createElement("label");return s.textContent=gn[t].desc,o.appendChild(s),o}if("color"===gn[t].type){o.className="";for(let t=0;tthis.max&&console.log("TEST"),e[t]=this.value,Tn(),sn()},o.appendChild(i),o.appendChild(document.createTextNode(" "));const a=document.createElement("label");return a.textContent=gn[t].desc,o.appendChild(a),o}return o}function Vn(t){if(1===e.TimerBar&&0===e.TimerBarPos){const e=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=e,t(),Game.mouseY+=e}else t()}function _n(){M.Beautify=Beautify,Beautify=le,M.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){M.CalculateGains(),Re=1,Jt=Date.now(),Kt=Date.now()},M.tooltip={},M.tooltip.draw=Game.tooltip.draw,M.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){M.tooltip.drawMod(e,t,o)},M.tooltip.update=Game.tooltip.update,M.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){M.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let t=0;1===e.ToolWarnLucky&&1===e.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(t=l("CMDispTooltipWarningParent").clientHeight-4),Game.tooltip.tta.style.top=`${Math.min(parseInt(Game.tooltip.tta.style.top,10),l("game").clientHeight+l("topBar").clientHeight-Game.tooltip.tt.clientHeight-t-46)}px`}}()},M.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){Vn(M.UpdateWrinklers)},M.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){Vn(M.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(function(){Vn(Game.ClickCookie)}),!1),M.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){M.RebuildUpgrades(),T=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(T[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("u",`${e}`)}),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},M.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(t){(!e.BulkBuyBlock||Game.ObjectsById[t].bulkPrice-1;--e)if(Game.ObjectsById[e-1].amount>0){const o=Qt[Game.ObjectsById[e].name].name;Qt[o].amount-=1,Ee-=1,t=Qt[o].basePrice*Game.priceIncrease**Math.max(0,Qt[o].amount-1-Qt[o].free),t=Game.modifyBuildingPrice(Qt[o],t),t=Math.ceil(t);break}const o=Fe;return Uo(),Vo(),o!==Fe&&Uo(),[Ie-Game.cookiesPs,t]}(t),n=se(o/(e+Game.cookiesPs)),i=le(e/Game.cookiesPs);l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const a=document.createElement("div");a.style.minWidth="200px",a.style.textAlign="center",a.textContent=`Picking this aura will change CPS by ${le(e)} (${i}% of current CPS).`,l("dragonAuraInfo").appendChild(a);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${n} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(t)},M.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){M.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${Qe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},M.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==Fn().picker&&void 0!==Fn().picker.owner||(M.UpdateMenu(),function(){const t=document.createElement("div");t.className="title","prefs"===Game.onMenu?(t.textContent="Cookie Monster Settings",function(t){const o=document.createDocumentFragment();o.appendChild(t),Object.keys(Rn).forEach((t=>{const n=In(t,Rn[t]);o.appendChild(n),e.Header[t]&&("Notification"===t?Object.keys($n).forEach((t=>{const n=In(t,$n[t]);n.style.fontSize="15px",n.style.opacity="0.5",o.appendChild(n),e.Header[t]&&Object.keys(gn).forEach((e=>{gn[e].group===t&&o.appendChild(zn(e))}))})):Object.keys(gn).forEach((e=>{gn[e].group===t&&o.appendChild(zn(e))})))}));const n=document.createElement("div");n.className="listing";const i=document.createElement("a");i.className="option",i.onclick=function(){Mn(an)},i.textContent="Restore Default",n.appendChild(i),o.appendChild(n),l("menu").childNodes[2].insertBefore(o,l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}(t)):"stats"===Game.onMenu?e.Stats&&(t.textContent="Cookie Monster Statistics",Hn(t)):"log"===Game.onMenu&&(t.textContent="Cookie Monster ",function(t){const o=document.createElement("div");o.className="subsection";const n=document.createElement("span");if(n.style.cursor="pointer",n.style.display="inline-block",n.style.height="14px",n.style.width="14px",n.style.borderRadius="7px",n.style.textAlign="center",n.style.backgroundColor="#C0C0C0",n.style.color="black",n.style.fontSize="13px",n.style.verticalAlign="middle",n.textContent=e.Header.InfoTab?"-":"+",n.onclick=function(){An("InfoTab"),Game.UpdateMenu()},t.appendChild(n),o.appendChild(t),e.Header.InfoTab){const e=document.createElement("div");e.innerHTML='
\n Cookie Monster\n offers a wide range of tools and statistics to enhance your game experience.\n It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want.
\n Progess on new updates and all previous release notes can be found on the GitHub page linked above!
\n Please also report any bugs you may find over there!
\n
\n ',o.appendChild(e);const t=document.createElement("div");t.innerHTML='
\nThe latest update (v 2.031.6) has revamped the way PP is colourcoded. In the previous versions this was not always correct and we had some settings that made it even more incorrect. With this update Cookie Monster compares the PP of a building to all other possibilities (also buying 10 or 100) of a building and colors the PP accordingly.
\nThis means that if it is better to buy 10 of a building immediately rather than to buy in increments of 1 Cookie Monster will now show this! In this case the buy 1 option will be yellow, while the buy 10 option will be green.
\nThis also means that you will see some more diverse colors. Rather than coloring according to arbitrary "middle values" Cookie Monster now uses a top 10, 20 and 30. While this might take some getting used to we believe the new system is much better in conveying useful information to the user while also being more correct!
\n
\nThis update also implements the following functions:
\n- Added a tooltip displaying the reward to the extra pop wrinkler buttons
\n- Added tooltips to the Gods in the Pantheon
\n- The tooltip for Elder Pledge now displays correctly, although it takes some time to load after Cookie Monster has been loaded
\n- You can now test the volume and sound of notifications in the settings screen
\n- The bottom bar will now flicker less and each column has received a bit of padding
\n- Introduced new colour scheme for PP, see the explanation of colors in the Readme or the settings
\n- Added option to show buttons that can hide the upgrade and building section
\n- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)
\n- Statistics page now shows chance for random drops when they have not been achieved
\n
\nThis update fixes the following bugs:
\n- Incorrect amount for "required for max plant reward" in statistics page
\n- Fixed the tooltips of the \'?\' buttons in the statistics page not showing
\n- Fixed some unclear settings descriptions
\n
\nPlease submit any bug reports or feature requests to the GitHub page!\n
\n
\n',o.appendChild(t)}const i=l("menu").children[1];i.insertBefore(o,i.children[1])}(t))}())},M.sayTime=Game.sayTime,$=function(e,t){return Number.isNaN(e)||e<=0?M.sayTime(e,t):se(e/Game.fps,1)},M.Logic=Game.Logic,Game.Logic=function(){M.Logic();let t="Cookie Clicker";"fools"===Game.season&&(t="Cookie Baker"),re=`${Game.OnAscend?"Ascending! ":""}${le(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${t}`,function(){if(Game.OnAscend||0===e.Title)document.title=re;else if(1===e.Title){let e,t,o,n=!1,i=!1;e=Ht?Ht.wrath?`[W${Math.ceil(Ht.life/Game.fps)}]`:`[G${Math.ceil(Ht.life/Game.fps)}]`:Game.Has("Golden switch [off]")?"[GS]":`[${Number(l("CMTimerBarGCMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)}]`,g&&(n=!0,t="[F]"),"christmas"===Game.season&&(i=!0,o=h?`[R${Math.ceil(Rt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let a=re;"["===a.charAt(0)&&(a=a.substring(a.lastIndexOf("]")+1)),document.title=`${e+(n?t:"")+(i?o:"")} ${a}`}else if(2===e.Title){let e="",t=!1;Ht&&(t=!0,Ht.wrath?e+=`[W${Math.ceil(Ht.life/Game.fps)}]`:e+=`[G${Math.ceil(Ht.life/Game.fps)}]`),g&&(t=!0,e+="[F]"),"christmas"===Game.season&&h&&(e+=`[R${Math.ceil(Rt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const t=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),o=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let n="";n+=`You've been on this run for ${""===o?"not very long":o}.
`,n+='
',Game.prestige>0&&(n+=`Your prestige level is currently ${le(Game.prestige)}.
(CpS +${le(Game.prestige)}%)`,n+='
'),n+=Se<1?"Ascending now would grant you no prestige.":Se<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${le(Se)} prestige levels (+${le(Se)}% CpS)
and ${le(Se)} heavenly chips to spend.`,n+='
',n+=`You need ${le(t)} more cookies for the next level.
`,n+=e.TooltipAscendButton?`
It takes ${$t} to reach the next level and you are making ${le(ct,2)} chips on average in the last 5 seconds.
`:"",l("ascendTooltip").innerHTML=n}()}}function Xn(){bn(),en(),nn(),a=Object.keys(Game.mods).length,v=document.createElement("style"),v.type="text/css",v.id="CMCSS",document.head.appendChild(v),function(){const e=document.createElement("div");e.id="CMBotBar",e.style.height="69px",e.style.width="100%",e.style.position="absolute",e.style.display="none",e.style.backgroundColor="#262224",e.style.backgroundImage="linear-gradient(to bottom, #4d4548, #000000)",e.style.borderTop="1px solid black",e.style.overflow="auto",e.style.textShadow="-1px 0 black, 0 1px black, 1px 0 black, 0 -1px black";const t=e.appendChild(document.createElement("table"));t.style.width="100%",t.style.textAlign="center",t.style.whiteSpace="nowrap";const o=t.appendChild(document.createElement("tbody")),n=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=S+t,o.textContent=e,o},i=o.appendChild(document.createElement("tr"));i.style.fontWeight="bold",i.appendChild(n("CM 2.031.6",N)),o.appendChild(document.createElement("tr")).appendChild(n("Bonus Income",P)),o.appendChild(document.createElement("tr")).appendChild(n("Payback Period",P)),o.appendChild(document.createElement("tr")).appendChild(n("Time Left",P)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{uo(e)}))}(),function(){const e=document.createElement("div");e.id="CMTimerBar",e.style.position="absolute",e.style.display="none",e.style.height="0px",e.style.fontSize="10px",e.style.fontWeight="bold",e.style.backgroundColor="black";const t=po("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",color:L},{id:"CMTimerBarGCBar",color:W}]);e.appendChild(t);const o=po("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",color:L},{id:"CMTimerBarRenBar",color:O}]);e.appendChild(o);const n=document.createElement("div");n.id="CMTimerBarBuffTimers",e.appendChild(n),l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMUpgradeBar",e.style.width="100%",e.style.backgroundColor="black",e.style.textAlign="center",e.style.fontWeight="bold",e.style.display="none",e.style.zIndex="21",e.onmouseout=function(){Game.tooltip.hide()};const t=document.createElement("div");t.appendChild(function(){const e=document.createElement("div");e.style.minWidth="330px",e.style.marginBottom="4px";const t=document.createElement("div");t.className="name",t.style.marginBottom="4px",t.textContent="Legend",e.appendChild(t);const o=function(e,t){const o=document.createElement("div");o.style.verticalAlign="middle";const n=document.createElement("span");return n.className=B+e,n.style.display="inline-block",n.style.height="10px",n.style.width="10px",n.style.marginRight="4px",o.appendChild(n),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(P,"Better than best PP building")),e.appendChild(o(E,"Same as best PP building")),e.appendChild(o(N,"Between best and worst PP buildings closer to best")),e.appendChild(o(O,"Between best and worst PP buildings closer to worst")),e.appendChild(o(F,"Same as worst PP building")),e.appendChild(o(W,"Worse than worst PP building")),e.appendChild(o(L,"Negative or infinity PP")),e}()),e.onmouseover=function(){Game.tooltip.draw(this,escape(t.innerHTML),"store")};const o=function(e,t){const o=document.createElement("span");return o.id=e,o.className=S+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",P)),e.appendChild(o("CMUpgradeBarGreen",E)),e.appendChild(o("CMUpgradeBarYellow",N)),e.appendChild(o("CMUpgradeBarOrange",O)),e.appendChild(o("CMUpgradeBarRed",F)),e.appendChild(o("CMUpgradeBarPurple",W)),e.appendChild(o("CMUpgradeBarGray",L)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),function(){const e=document.createElement("div");e.id="CMWhiteScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",l("wrapper").appendChild(e)}(),function(){const e=document.createElement("div");e.id="CMSectionHidButtons",e.style.textAlign="center";const t=document.createElement("a");t.className="option",t.onclick=function(){"flex"===l("upgrades").style.display?(l("upgrades").style.display="none",l("toggleUpgrades").style.display="none",l("techUpgrades").style.display="none",l("vaultUpgrades").style.display="none"):(l("upgrades").style.display="flex",0!==l("toggleUpgrades").children.length&&(l("toggleUpgrades").style.display="block"),0!==l("techUpgrades").children.length&&(l("techUpgrades").style.display="block"),0!==l("vaultUpgrades").children.length&&(l("vaultUpgrades").style.display="block"))},t.textContent="Hide/Show Upgrades",e.appendChild(t);const o=document.createElement("a");o.className="option",o.onclick=function(){"grid"===l("products").style.display?l("products").style.display="none":l("products").style.display="grid"},o.textContent="Hide/Show Buildings",e.appendChild(o),l("store").insertBefore(e,l("store").childNodes[2])}(),function(){const e=document.createElement("link");e.id="CMFavicon",e.rel="shortcut icon",e.href="https://orteil.dashnet.org/cookieclicker/favicon.ico",document.getElementsByTagName("head")[0].appendChild(e)}(),Object.keys(D).forEach((e=>{!function(e,t,o){const n=document.createElement("div");n.id=e;const i=document.createElement("div");i.style.minWidth=o,i.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="left",a.textContent=t,i.appendChild(a),n.appendChild(i),H[e]=n}(D[e][0],D[e][1],D[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Sn()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("wb","PopAll")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(e);const t=document.createElement("a");t.id="PopFattestWrinklerButton",t.textContent="Pop Single Fattest",t.className="option",t.onclick=function(){null!==yt[1]&&(Game.wrinklers[yt[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("wb","PopFattest")}),"this"),Game.tooltip.wobble()},l("sectionLeftExtra").children[0].append(t)}(),l("products").style.display="grid",l("storeBulk").style.gridRow="1/1",l("upgrades").style.display="flex",l("upgrades").style["flex-wrap"]="wrap",Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(w[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("b",`${e}`)}),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(r=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("s","Lump")}),"this"),Game.tooltip.wobble()}),m=Game.LoadMinigames,Game.LoadMinigames=function(){m(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("ha","HarvestAllButton")}),"this"),Game.tooltip.wobble()},Array.from(l("gardenPlot").children).forEach((e=>{const t=e.id.slice(-3);e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("p",[`${t[0]}`,`${t[2]}`])}),"this"),Game.tooltip.wobble()}}))),Pn(),function(){if(Game.Objects.Temple.minigameLoaded){for(let e=0;e<11;e+=1)l(`templeGod${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("pag",e)}),"this"),Game.tooltip.wobble()};for(let e=0;e<3;e+=1)l(`templeSlot${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(function(){return Bn("pas",[e,Game.Objects.Temple.minigame.slot[e]])}),"this"),Game.tooltip.wobble()}}}(),Nn()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){I=1},l("backgroundLeftCanvas").onmouseout=function(){I=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{V[e]=0}))},_n(),Nn(),Game.CalculateGains(),Mn(),R=Game.OnAscend,Game.prefs.popups?Game.Popup("Cookie Monster version 2.031.6 loaded!"):Game.Notify("Cookie Monster version 2.031.6 loaded!","","",1,1),Game.Win("Third-party")}const Qn={init:function(){kn=!0;let e=!0;Game.version!==Number("2.031")&&(e=confirm("Cookie Monster version 2.031.6 is meant for Game version 2.031. Loading a different version may cause errors. Do you still want to load Cookie Monster?")),e&&(Xn(),Game.registerHook("draw",Po),Game.registerHook("logic",xn),kn=!1)},load:function(e){const t=JSON.parse(e);bn(),Mn(t.settings),"2.031.6"!==t.version&&(Game.prefs.popups?Game.Popup("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!"):Game.Notify("A new version of Cookie Monster has been loaded, check out the release notes in the info tab!","","",0,1))},save:fn};Game.registerMod("CookieMonster",Qn)})()})(); diff --git a/dist/CookieMonster.js.map b/dist/CookieMonster.js.map index 54c21cbb..d310927c 100644 --- a/dist/CookieMonster.js.map +++ b/dist/CookieMonster.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://cookiemonster-mod/CookieMonster.js"],"names":["__webpack_modules__","877","module","global","factory","exports","document","win","Error","window","this","BoxShadow","funcName","elm","jsc","jscolor","initialized","instances","readyQueue","register","addEventListener","pub","init","installBySelector","selector","rootNode","node","elms","querySelectorAll","matchClass","RegExp","lookupClass","i","length","dataOpts","m","undefined","type","toLowerCase","isColorAttrSupported","getDataAttr","className","match","targetElm","optsStr","console","warn","docsRef","opts","trim","parseOptionsStr","e","str","JSON","parse","eParse","looseJSON","Function","eEval","getInstances","inst","targetElement","push","createEl","tagName","el","createElement","setData","nodeOrSelector","sel","querySelector","isNode","val","Node","nodeType","nodeName","removeChildren","firstChild","removeChild","isTextInput","isButton","n","indexOf","isButtonEmpty","value","textContent","isPassiveEventSupported","supported","Object","defineProperty","get","removeEventListener","setAttribute","dataProp","obj","arguments","data","hasOwnProperty","prop","map","removeData","getData","setDefault","name","attrName","getAttribute","setDataAttr","_attachedGroupEvents","attachGroupEvent","groupName","evnt","func","detachGroupEvents","evt","preventDefault","returnValue","captureTarget","target","setCapture","_capturedTarget","releaseTarget","releaseCapture","triggerEvent","eventName","bubbles","cancelable","ev","Event","createEvent","initEvent","dispatchEvent","triggerInputEvent","eventKey","keys","9","13","27","code","keyCode","strList","replace","split","hasClass","classList","contains","addClass","classNames","add","removeClass","repl","remove","getCompStyle","getComputedStyle","currentStyle","setStyle","styles","important","reversible","priority","origStyle","setVal","style","setProperty","hexColor","r","g","b","Math","round","toString","substr","toUpperCase","hexaColor","a","rgbColor","rgbaColor","linearGradient","stdName","prefixes","helper","tryFunc","tryVal","background","getFuncName","Array","prototype","join","call","setBorderRadius","border-radius","setBoxShadow","box-shadow","getElementPos","relativeToViewport","x","y","rect","getBoundingClientRect","left","top","viewPos","getViewPos","getElementSize","offsetWidth","offsetHeight","getAbsPointerPos","changedTouches","clientX","clientY","getRelPointerPos","targetRect","srcElement","doc","documentElement","pageXOffset","scrollLeft","clientLeft","pageYOffset","scrollTop","clientTop","getViewSize","innerWidth","clientWidth","innerHeight","clientHeight","RGB_HSV","min","v","max","h","HSV_RGB","s","u","floor","parseColorString","ret","rgba","format","parseInt","charAt","mR","mG","mB","mA","par","re","parseFloat","parsePaletteValue","mixed","vals","isArray","colors","color","containsTranparentColor","isAlphaFormat","scaleCanvasForHighDPR","canvas","dpr","devicePixelRatio","width","height","getContext","scale","genColorPreviewCanvas","separatorPos","specWidth","scaleForHighDPR","sepW","previewSeparator","sqSize","chessboardSize","sqColor1","chessboardColor1","sqColor2","chessboardColor2","cWidth","cHeight","ctx","fillStyle","fillRect","start","clearRect","lineWidth","beginPath","strokeStyle","moveTo","lineTo","stroke","genColorPreviewGradient","position","params","right","apply","redrawPosition","picker","owner","tp","vp","thisObj","fixed","c","ts","vs","pd","getPickerDims","ps","borderW","borderH","l","smartPosition","pp","positionValue","contractShadow","_drawPosition","vShadow","shadowBlur","wrap","boxS","shadow","shadowColor","w","controlBorderWidth","sliderSpace","getControlPadding","sliderSize","getSliderChannel","hasAlphaChannel","pal","getPaletteDims","padding","closeButton","buttonHeight","pW","pH","contentW","contentH","paddedW","paddedH","borderWidth","palette","cols","rows","cellW","cellH","sampleCount","_palette","paletteCols","ceil","paletteSpacing","paletteHeight","pointerBorderWidth","pointerThickness","getPadYChannel","mode","triggerCallback","callback","error","triggerGlobal","eventNames","trigger","_pointerMoveEvent","mouse","touch","_pointerEndEvent","_pointerOrigin","onDocumentKeyUp","tryHide","onWindowResize","onWindowScroll","onParentScroll","onDocumentMouseDown","showOnClick","disabled","show","onControlPointerStart","onPickerTouchStart","controlName","pointerType","registerDragEvents","offset","onDocumentPointerMove","onDocumentPointerEnd","parent","frameElement","ofs","abs","rel","channels","fromHSVA","setPad","setSld","setASld","onPaletteSampleClick","currentTarget","_setFormat","getFormat","paletteSetsAlpha","_paletteHasTransparency","fromRGBA","hideOnPaletteClick","hide","ofsX","ofsY","pointerAbs","xVal","yVal","fmt","createPadCanvas","draw","hGrad","createLinearGradient","addColorStop","vGrad","createSliderGradient","color1","color2","grad","createASliderGradient","hShadow","blur","spread","inset","flags","leaveValue","leaveAlpha","leavePreview","enumOpts","previewPosition","alphaChannel","deprecatedOpts","styleElement","onFineChange","overwriteImportant","closable","insetWidth","insetColor","refine","THIS","setOption","option","oldOpt","newOpt","setter","getOption","getter","drawPicker","_processParentElementsInDOM","box","boxB","pad","padB","padM","padCanvas","cross","crossBY","crossBX","crossLY","crossLX","sld","sldB","sldM","sldGrad","sldPtrS","sldPtrIB","sldPtrMB","sldPtrOB","asld","asldB","asldM","asldGrad","asldPtrS","asldPtrIB","asldPtrMB","asldPtrOB","btn","btnT","appendChild","passive","insetColors","outsetColor","p","displaySlider","displayAlphaSlider","pickerDims","crossOuterSize","crossSize","controlPadding","borderRadius","PI","clear","zIndex","border","borderColor","backgroundColor","opacity","controlBorderColor","cursor","instance","control","pointerBorderColor","pointerColor","overflow","display","sliderInnerSpace","innerHTML","chessboard","si","sampleColor","sampleCssColor","sc","sw","backgroundImage","toDataURL","backgroundRepeat","backgroundPosition","bottom","maxWidth","whiteSpace","buttonColor","font","textAlign","onmousedown","lineHeight","createTextNode","closeText","redrawPad","redrawSld","redrawASld","activeClassName","container","body","parentNode","yChannel","rgb1","rgb2","rgb","toHEXString","sldChannel","isPickerOwner","alpha","onChange","onInput","valueElement","alphaElement","previewElement","previewSize","previewPadding","required","hash","uppercase","forceStyle","hideOnLeave","minS","maxS","minV","maxV","minA","maxA","redraw","exposeColor","success","opt","channel","res","evs","callbackProp","isNaN","hsv","fromHSV","fromRGB","fromString","setPreviewElementBg","setValueElementValue","toHEXAString","toRGBString","toRGBAString","toGrayscale","toCanvas","toBackground","isLight","_currentFormat","processValueInput","processAlphaInput","colorStr","alphaVal","setAlphaElementValue","backgrounds","image","size","repeat","origin","preview","bg","sty","background-image","background-position","background-size","background-repeat","background-origin","padding-left","padding-right","_parentElementsProcessed","compStyle","set__palette","options","presetsArr","preset","slice","pres","presets","nonProperties","test","min-width","valueElementOrigEvents","oninput","oldVal","initValue","initAlpha","install","shift","ready","triggerNow","installByClassName","JSColor","__webpack_module_cache__","__webpack_require__","moduleId","__esModule","d","definition","key","o","enumerable","CMOptions","metric","shortScale","shortScaleAbbreviated","LastModCount","TooltipLumpBackup","BackupGrimoireLaunch","BackupGrimoireLaunchMod","BackupGrimoireDraw","HasReplaceNativeGrimoireLaunch","HasReplaceNativeGrimoireDraw","LoadMinigames","LastSeasonPopupState","LastTickerFortuneState","LastGardenNextStep","LastGoldenCookieState","LastSpawnedGoldenCookieState","LastMagicBarFull","CurrSpawnedGoldenCookieState","LastWrinklerCount","DispCSS","TooltipBuildBackup","TooltipGrimoireBackup","TooltipUpgradeBackup","BackupFunctions","ColorTextPre","ColorBackPre","ColorBlue","ColorGreen","ColorYellow","ColorOrange","ColorRed","ColorPurple","ColorGray","ColorPink","ColorBrown","Colors","TooltipText","CMLastAscendState","CMSayTime","TooltipWrinklerArea","TooltipWrinkler","TooltipWrinklerBeingShown","LastTargetBotBar","LastTargetBuildings","LastTargetTooltipBuilding","CookieTimes","ClickTimes","BuffColors","Frenzy","Dragon Harvest","Elder frenzy","Clot","Click frenzy","Dragonflight","TooltipPrice","TooltipBonusIncome","TooltipType","TooltipName","TooltipBonusMouse","LastAscendState","LastNumberOfTimers","GCTimers","Title","BeautifyFormatting_Beautify","num","floats","forced","decimals","ScaleDecimals","Infinity","Scale","Beautify","Number","isFinite","answer","ScaleCutoff","ScaleSeparator","toLocaleString","toExponential","exponential","AmountOfTenPowerThree","toFixed","log","FormatTime","time","longFormat","TimeFormat","GetTimeColor","text","CookiesDiff","WrinkDiff","WrinkFattestDiff","ChoEggDiff","ClicksDiff","HeavenlyChipsDiff","CacheLastCPSCheck","CacheLastCookies","CacheLastWrinkCookies","CacheLastWrinkFattestCookies","CacheLastClicks","CacheAverageGainBank","CacheAverageGainWrink","CacheAverageGainWrinkFattest","CacheAverageGainChoEgg","CacheAverageCPS","CacheLastHeavenlyCheck","CacheLastHeavenlyChips","CacheDoRemakeBuildPrices","CacheHadBuildAura","SimBuildingsOwned","SimUpgradesOwned","SimPledges","SimAchievementsOwned","SimHeavenlyPower","SimPrestige","SimDragonAura","SimDragonAura2","SimDoSims","SimEffs","SimCookiesPs","SimCookiesPsRaw","CacheDragonAura","CacheDragonAura2","CacheLastDragonLevel","CacheCostDragonUpgrade","CacheLucky","CacheLuckyReward","CacheLuckyWrathReward","CacheLuckyFrenzy","CacheLuckyRewardFrenzy","CacheLuckyWrathRewardFrenzy","CacheConjure","CacheConjureReward","CacheEdifice","CacheEdificeBuilding","CacheNoGoldSwitchCookiesPS","CacheDragonsFortuneMultAdjustment","CacheGoldenCookiesMult","CacheWrathCookiesMult","CacheHCPerSecond","CacheCentEgg","CacheSeaSpec","CacheLastChoEgg","CacheObjects1","CacheObjects10","CacheObjects100","CacheWrinklersTotal","CacheWrinklersNormal","CacheWrinklersFattest","CacheCurrWrinklerCPSMult","CacheCurrWrinklerCount","CacheUpgrades","CacheAverageClicks","CacheMissingUpgrades","CacheMissingUpgradesPrestige","CacheMissingUpgradesCookies","CacheChainRequired","CacheChainRequiredNext","CacheChainMaxReward","CacheChainWrathRequired","CacheChainWrathRequiredNext","CacheChainWrathMaxReward","CacheChainFrenzyRequired","CacheChainFrenzyRequiredNext","CacheChainFrenzyMaxReward","CacheChainFrenzyWrathRequired","CacheChainFrenzyWrathRequiredNext","CacheChainFrenzyWrathMaxReward","CacheRealCookiesEarned","CacheAvgCPSWithChoEgg","CacheSpawnedGoldenShimmer","CacheSeasonPopShimmer","CacheTimeTillNextPrestige","CacheMinPP","CacheMidPP","CacheMaxPP","CacheArrayOfPPs","CacheGoldenShimmersByID","CacheSellForChoEgg","SimObjects","SimUpgrades","SimAchievements","SimDateCentury","Game","startDate","SimDateAges","SimAuraMult","what","dragonAuras","SimGetSellMultiplier","giveBack","SimEff","def","SimHas","it","ascensionMode","pool","tier","bought","SimHasGod","hasGod","Temple","minigame","Objects","god","gods","slot","id","SimModifyBuildingPrice","building","price","hasBuff","fortune","minigameLoaded","godLvl","BuildingSell","build","basePrice","free","amount","noSim","moni","buyBulk","priceIncrease","modifyBuildingPrice","getSellMultiplier","UpdateBuildings","buyMode","BuildColor","removeProperty","SortBuildings","arr","k","sort","gridRow","UpdateUpgrades","UpBarColor","blue","green","yellow","orange","red","purple","gray","UpgradesInStore","me","addedColor","j","childNodes","div","SortUpgrades","nameChecker","arr2","upgrade","findIndex","order","GetCPS","CPSMode","CalcWrink","cookiesPs","cpsSucked","wrinklers","GetWrinkConfigBank","CreateTimer","bars","timerBar","margin","fontSize","marginRight","verticalAlign","colorBar","borderTopRightRadius","borderBottomRightRadius","timer","marginLeft","CreateBotBarBuildingColumn","buildingName","bonus","header","substring","UpdateBotBar","BotBar","count","timeColor","bulkPrice","cookies","UpdateBackground","Background","LeftBackground","UpdateBotTimerBarPosition","TimerBar","TimerBarPos","ToggleTimerBar","GetCPSBuffMult","mult","buffs","multCpS","ToggleToolWarnPos","ToolWarnPos","CalculateGrimoireRefillTime","currentMagic","maxMagic","targetMagic","fps","TooltipCreateHeader","fontWeight","TooltipCreateCalculationSection","tooltip","income","marginBottom","lastChild","click","production","CacheDragonAuras","dragonAura","dragonAura2","InitAchievement","achievementName","Achievements","you","SimGetTieredCpsMult","tieredUpgrades","Tiers","special","synergies","syn","buildingTie1","buildingTie2","grandma","Grandma","misfortune","vanilla","elderWrath","InitialBuildingData","cps","magicCpS","ComputeCps","GrandmaSynergies","UpgradesByPool","kitten","Portal","baseCps","baseCPS","InitUpgrade","upgradeName","Upgrades","power","level","pow","CopyData","UpgradesOwned","pledges","AchievementsOwned","heavenlyPower","prestige","totalCookies","won","BuildingGetPrice","increase","CreateSimpleTooltip","placeholder","minWidth","Tooltip","desc","UpdateTooltips","tooltipBox","paddingBottom","TooltipCreateTooltipBox","TooltipBuildUpgrade","productionAchievs","HasAchiev","achiev","nextProductionAchiev","Building","getPrice","bonusMouse","previousSibling","chocolate","Upgrade","TooltipLump","lumpType","lumpColor","lumpCurrentType","SugarLump","spellCost","getSpellCost","spellsById","TooltipGrim","magicM","magic","recover","recoverColor","conjure","reward","seperator","loss","Grimoire","Farm","TooltipPlots","plot","mature","plantsById","matureBase","plantName","GardenPlots","totalGain","mortal","tile","immortal","HarvestAll","getElementById","TooltipWarn","create","boxId","labelTextFront","labelTextBack","deficitId","transition","labelDiv","labelSpan","deficitDiv","deficitSpan","ToolWarnUser","TooltipCreateWarningSection","bonusIncomeUsed","ToolWarnBon","limitLucky","bonusNoFren","ToolWarnLucky","ToolWarnLuckyFrenzy","limitLuckyFrenzy","ToolWarnConjure","limitConjure","ToolWarnConjureFrenzy","limitConjureFrenzy","ToolWarnEdifice","children","Warnings","CreateTooltip","TooltipAmor","buildPrice","amortizeAmount","storedTotalCps","globalCpsMult","crateTooltip","lumpTooltip","spellTooltip","ObjectsById","tileTooltip","toolTooltip","area","Draw","prefs","autosave","drawT","onMenu","Stats","innerText","sayTime","T","maxWidthTwoBar","maxWidthOneBar","numberOfTimers","shimmerTypes","golden","spawned","Has","minTime","maxTime","TimerBarOverlay","season","reindeer","BuffTimerBars","classColor","UpdateTimerBar","TooltipWrink","showingTooltip","phase","selected","wrinkler","escape","CheckWrinklerTooltip","sucked","toSuck","UpdateWrinklerTooltip","UpStats","UpdateMenu","monospace","CMAvgQueue","[object Object]","maxLength","queue","newValue","timePeriod","CacheAvgCPS","currDate","Date","now","choEggTotal","cookiesEarned","timeDiff","bankDiffAvg","wrinkDiffAvg","wrinkFattestDiffAvg","choEggDiffAvg","clicksDiffAvg","cookieClicks","addLatest","cpsLength","AvgCPSHist","calcAverage","choEgg","HasUnlocked","AvgClicksHist","ColourOfPP","PPSecondsLowerLimit","PPOnlyConsiderBuyable","CacheBuildingsBulkPP","CachePP","PPExcludeTop","ColorPPBulkMode","CacheBuildingsPP","CacheUpgradePP","SimWin","CalculateGains","effs","myEffs","ii","heavenlyMult","SimGetHeavenlyMultiplier","heralds","cookieUpgrades","buildMult","sin","santaLevel","milkProgress","milkMult","catMult","storedCps","eggMult","day","lumps","rawCookiesPs","CpsAchievements","threshold","auraMult","bakeryName","goldenSwitchMult","upgrades","goldenCookieUpgrades","veilMult","runModHookOnValue","Fortunes","HalloCookies","ChristCookies","ValCookies","PlantDrops","SimHasAchiev","CheckOtherAchiev","grandmas","buildingsOwned","mathematician","base10","minAmount","Cursor","hasAllHalloCook","hasAllChristCook","list","fortunes","BuyBuildingsBonusIncome","tieredAchievs","achievUnlock","lastAchievementsOwned","BuyUpgradesBonusIncome","unlocked","CountsAsUpgradeOwned","diffMouseCPS","multClick","out","MouseCps","computedMouseCps","CacheBuildingIncome","result","CacheBuildingsPrices","CacheIncome","bonusIncome","CacheUpgradeIncome","MaxChainCookieReward","digit","maxPayout","totalFromChain","nextMoni","nextRequired","chain","LN10","CacheChain","cpsBuffMult","CacheHeavenlyChipsPS","chipsOwned","HowMuchPrestige","cookiesReset","ascendNowToGet","heavenlyChipsDiffAvg","crateMissing","classes","noFrame","crates","icon","iconFunction","getDynamicTooltip","CacheAllMissingUpgrades","CacheSeasonSpec","CacheStatsCookies","CacheGoldenAndWrathCookiesMults","goldenMult","wrathMult","eff","CacheWrinklers","InitCache","SettingsDefault","BulkBuildColor","UpgradeBarFixedPos","GeneralSound","GCNotification","GCFlash","GCSound","GCVolume","GCSoundURL","FortuneNotification","FortuneFlash","FortuneSound","FortuneVolume","FortuneSoundURL","SeaNotification","SeaFlash","SeaSound","SeaVolume","SeaSoundURL","GardFlash","GardSound","GardVolume","GardSoundURL","MagicNotification","MagicFlash","MagicSound","MagicVolume","MagicSoundURL","WrinklerNotification","WrinklerFlash","WrinklerSound","WrinklerVolume","WrinklerSoundURL","WrinklerMaxNotification","WrinklerMaxFlash","WrinklerMaxSound","WrinklerMaxVolume","WrinklerMaxSoundURL","DragonAuraInfo","TooltipAscendButton","MissingUpgrades","DetailedTime","GrimoireBar","HeavenlyChipsTarget","ShowMissedGC","Blue","Green","Yellow","Orange","Red","Purple","Gray","Pink","Brown","GCTimer","Favicon","WrinklerButtons","BulkBuyBlock","Header","BarsColors","Calculation","Notification","NotificationGeneral","NotificationGC","NotificationFC","NotificationSea","NotificationGard","NotificationMagi","NotificationWrink","NotificationWrinkMax","Statistics","Notation","Miscellaneous","Lucky","Chain","Spells","Garden","Prestige","Wrink","Sea","Misc","InfoTab","Config_CheckNotificationPermissions","ToggleOnOff","checkNotificationPromise","requestPermission","then","ToggleBotBar","RefreshScale","BeautifyAll","RefreshStore","RebuildUpgrades","UpdateColors","UpdateFavicon","wrath","href","Setting","group","SettingStandard","label","toggle","super","SettingVolume","SettingInputNumber","SettingsData","insertBefore","ToggleGCTimer","save","stringify","settings","version","CacheDragonCost","dragonLevel","dragonLevels","buy","includes","replaceAll","cost","InitData","isInitializing","Flash","config","setTimeout","PlaySound","url","sndConfig","volConfig","sound","realAudio","volume","play","CreateGCTimer","cookie","fontFamily","onclick","pop","onmouseover","filter","webkitFilter","onmouseout","Notification_Notification","notifyConfig","title","message","visibilityState","badge","CMLoop","OnAscend","AscendTimer","mods","sellTotal","Bank","marketGoods","goods","goodsVal","marketGood","stock","cookiesPsRawHighest","buildingsToSacrifice","highestBuilding","SellBuildingsForChoEgg","CacheSellAllForChoEgg","hasBuildAura","godMult","CacheCurrWrinklerCPS","cookiesToNext","HowManyCookiesReset","LoopCache","shimmers","spawnLead","FindShimmer","transform","life","CheckGoldenCookie","TickerEffect","CheckSeasonPopup","nextStep","CheckMagicMeter","CurrentWrinklers","getWrinklersMax","CheckWrinklerCount","SaveConfig","saveString","b64_to_utf8","unescape","localStorage","getItem","CookieMonsterSave","newSaveString","setItem","utf8_to_b64","LoadConfig","CMConfig","mod","PopAllNormalWrinklers","hp","ReplaceTooltipGrimoire","dynamic","wobble","ReplaceNativeGrimoireDraw","magicBarTextL","ReplaceNativeGrimoire","launch","ReplaceNativeGrimoireLaunch","jscolor_default","ToggleSetting_ConfigPrefix","ToggleConfigVolume","ToggleHeader","StatsHeader","span","StatsListing","listingName","StatsMissDisp","theMissDisp","frag","createDocumentFragment","missing","AddMenuStats","stats","goldCookTooltip","section","luckyColor","luckyTime","luckyReqFrag","luckyReqSpan","luckyReqSmall","luckyColorFrenzy","luckyTimeFrenzy","luckyReqFrenFrag","luckyReqFrenSpan","luckyReqFrenSmall","luckySplit","luckyRewardMaxSpan","luckyRewardFrenzyMaxSpan","luckyCurBase","luckyCurSpan","LuckySection","chainColor","chainTime","chainReqFrag","chainReqSpan","chainReqSmall","chainWrathColor","chainWrathTime","chainWrathReqFrag","chainWrathReqSpan","chainWrathReqSmall","chainColorFrenzy","chainTimeFrenzy","chainReqFrenFrag","chainReqFrenSpan","chainReqFrenSmall","chainWrathColorFrenzy","chainWrathTimeFrenzy","chainWrathReqFrenFrag","chainWrathReqFrenSpan","chainWrathReqFrenSmall","chainCurMax","chainCur","chainCurWrath","ChainSection","conjureColor","conjureTime","conjureReqFrag","conjureReqSpan","conjureReqSmall","conjureFrenzyColor","conjureFrenzyCur","conjureFrenzyTime","conjureFrenzyReqFrag","conjureFrenzyReqSpan","conjureFrenzyReqSmall","SpellsSection","bakeberryColor","bakeberryFrag","chocorootColor","chocorootFrag","queenbeetColor","queenbeetFrag","duketaterColor","duketaterFrag","GardenSection","possiblePresMax","neededCook","cookiesNextFrag","cookiesNextSmall","heavenlyChips","HCTarget","CookiesTillTarget","resetBonus","newHeavenlyChips","curCPS","ResetCPS","ResetBonus","resetFrag","resetSmall","currentPrestige","willHave","willGet","delta7","next7Reset","next7Total","frag7","delta777","next777Reset","next777Total","frag777","delta777777","next777777Reset","next777777Total","frag777777","PrestigeSection","popAllFrag","popAllA","popFattestFrag","popFattestA","specDisp","missingHalloweenCookies","missingChristmasCookies","missingValentineCookies","missingNormalEggs","eggDrops","missingRareEggs","rareEggDrops","missingPlantDrops","centEgg","missedGoldenClicks","menuSection","prestigeUpgradesMissing","titlefrag","PrestigeUpgrades","normalUpgradesMissing","tech","nextSibling","cookieUpgradesMissing","AddMissingUpgrades","ConfigGroups","ConfigGroupsNotification","CreatePrefHeader","CreatePrefOption","ToggleConfig","float","percent","slider","step","onchange","input","readOnly","inputPrompt","Prompt","outerHTML","ClosePrompt","innerDiv","FixMouseY","timerBarHeight","mouseY","ReplaceNative","drawMod","from","update","updateMod","warnOffset","tta","tt","UpdateTooltipLocation","UpdateWrinklers","UpdateSpecial","ClickCookie","mouseDown","setOnCrate","ReplaceTooltipUpgrade","ClickProduct","DescribeDragonAura","aura","bonusCPS","priceOfChange","CalculateChangeAura","timeToRecover","bonusCPSPercentage","minHeight","div2","AddAuraInfo","ToggleSpecialMenu","on","shouldHide","AddDragonLevelUpTooltip","groupObject","subGroup","subGroupObject","resDef","resDefBut","AddMenuPref","info","description","notes","menu","AddMenuInfo","AddMenu","detail","Logic","titleGC","titleFC","titleSP","addFC","addSP","lastIndexOf","spawn","UpdateTitle","ReplaceAscendTooltip","InitializeCookieMonster","head","borderTop","textShadow","table","tbody","firstCol","td","CreateBotBar","CMTimerBarGC","CMTimerBarRen","TimerBarBuffTimers","CreateTimerBar","UpgradeBar","legend","legendLine","CreateUpgradeBarLegend","upgradeNumber","CreateUpgradeBar","WhiteScreen","CreateWhiteScreen","getElementsByTagName","CreateFavicon","append","CreateWrinklerButtons","ReplaceTooltipBuild","canLumps","forEach","child","coords","popups","Popup","Notify","Win","CM","proceed","confirm","registerHook","load","registerMod"],"mappings":"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IAAK,IAAK,KAGhDC,EAAa,CACjB,GACA,GACA,IACA,IACA,KACA,QACA,QACA,OACA,OACA,MACA,MACA,MACA,QACA,SACA,SACA,cACA,UACA,SACA,YACA,UACA,WACA,SACA,WACA,YACA,YACA,kBAIIC,EAAwB,CAC5B,GACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,OAMF,IAAIC,EAEAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOAC,EA1BAC,EAAqB,GAErBC,EAAwB,GACxBC,EAAuB,GAOvBC,EAAkB,GAqBtB,MAAMC,EAAe,SACfC,EAAe,SAMfC,EAAY,OACZC,EAAa,QACbC,EAAc,SACdC,EAAc,SACdC,EAAW,MACXC,EAAc,SACdC,EAAY,OACZC,EAAY,OACZC,EAAa,QACbC,EAAS,CACbH,EACAN,EACAC,EACAC,EACAC,EACAC,EACAC,EACAE,EACAC,GAUIE,EAAc,CAClB,CAAC,6BAA8B,oCAAqC,SACpE,CACE,2CACA,6EACA,SAEF,CACE,6BACA,qPACA,SAEF,CACE,8BACA,kEACA,SAEF,CACE,kCACA,2PACA,SAEF,CACE,0BACA,gLACA,SAEF,CACE,2BACA,uOA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","file":"./CookieMonster.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://cookiemonster-mod/CookieMonster.js"],"names":["__webpack_modules__","877","module","global","factory","exports","document","win","Error","window","this","BoxShadow","funcName","elm","jsc","jscolor","initialized","instances","readyQueue","register","addEventListener","pub","init","installBySelector","selector","rootNode","node","elms","querySelectorAll","matchClass","RegExp","lookupClass","i","length","dataOpts","m","undefined","type","toLowerCase","isColorAttrSupported","getDataAttr","className","match","targetElm","optsStr","console","warn","docsRef","opts","trim","parseOptionsStr","e","str","JSON","parse","eParse","looseJSON","Function","eEval","getInstances","inst","targetElement","push","createEl","tagName","el","createElement","setData","nodeOrSelector","sel","querySelector","isNode","val","Node","nodeType","nodeName","removeChildren","firstChild","removeChild","isTextInput","isButton","n","indexOf","isButtonEmpty","value","textContent","isPassiveEventSupported","supported","Object","defineProperty","get","removeEventListener","setAttribute","dataProp","obj","arguments","data","hasOwnProperty","prop","map","removeData","getData","setDefault","name","attrName","getAttribute","setDataAttr","_attachedGroupEvents","attachGroupEvent","groupName","evnt","func","detachGroupEvents","evt","preventDefault","returnValue","captureTarget","target","setCapture","_capturedTarget","releaseTarget","releaseCapture","triggerEvent","eventName","bubbles","cancelable","ev","Event","createEvent","initEvent","dispatchEvent","triggerInputEvent","eventKey","keys","9","13","27","code","keyCode","strList","replace","split","hasClass","classList","contains","addClass","classNames","add","removeClass","repl","remove","getCompStyle","getComputedStyle","currentStyle","setStyle","styles","important","reversible","priority","origStyle","setVal","style","setProperty","hexColor","r","g","b","Math","round","toString","substr","toUpperCase","hexaColor","a","rgbColor","rgbaColor","linearGradient","stdName","prefixes","helper","tryFunc","tryVal","background","getFuncName","Array","prototype","join","call","setBorderRadius","border-radius","setBoxShadow","box-shadow","getElementPos","relativeToViewport","x","y","rect","getBoundingClientRect","left","top","viewPos","getViewPos","getElementSize","offsetWidth","offsetHeight","getAbsPointerPos","changedTouches","clientX","clientY","getRelPointerPos","targetRect","srcElement","doc","documentElement","pageXOffset","scrollLeft","clientLeft","pageYOffset","scrollTop","clientTop","getViewSize","innerWidth","clientWidth","innerHeight","clientHeight","RGB_HSV","min","v","max","h","HSV_RGB","s","u","floor","parseColorString","ret","rgba","format","parseInt","charAt","mR","mG","mB","mA","par","re","parseFloat","parsePaletteValue","mixed","vals","isArray","colors","color","containsTranparentColor","isAlphaFormat","scaleCanvasForHighDPR","canvas","dpr","devicePixelRatio","width","height","getContext","scale","genColorPreviewCanvas","separatorPos","specWidth","scaleForHighDPR","sepW","previewSeparator","sqSize","chessboardSize","sqColor1","chessboardColor1","sqColor2","chessboardColor2","cWidth","cHeight","ctx","fillStyle","fillRect","start","clearRect","lineWidth","beginPath","strokeStyle","moveTo","lineTo","stroke","genColorPreviewGradient","position","params","right","apply","redrawPosition","picker","owner","tp","vp","thisObj","fixed","c","ts","vs","pd","getPickerDims","ps","borderW","borderH","l","smartPosition","pp","positionValue","contractShadow","_drawPosition","vShadow","shadowBlur","wrap","boxS","shadow","shadowColor","w","controlBorderWidth","sliderSpace","getControlPadding","sliderSize","getSliderChannel","hasAlphaChannel","pal","getPaletteDims","padding","closeButton","buttonHeight","pW","pH","contentW","contentH","paddedW","paddedH","borderWidth","palette","cols","rows","cellW","cellH","sampleCount","_palette","paletteCols","ceil","paletteSpacing","paletteHeight","pointerBorderWidth","pointerThickness","getPadYChannel","mode","triggerCallback","callback","error","triggerGlobal","eventNames","trigger","_pointerMoveEvent","mouse","touch","_pointerEndEvent","_pointerOrigin","onDocumentKeyUp","tryHide","onWindowResize","onWindowScroll","onParentScroll","onDocumentMouseDown","showOnClick","disabled","show","onControlPointerStart","onPickerTouchStart","controlName","pointerType","registerDragEvents","offset","onDocumentPointerMove","onDocumentPointerEnd","parent","frameElement","ofs","abs","rel","channels","fromHSVA","setPad","setSld","setASld","onPaletteSampleClick","currentTarget","_setFormat","getFormat","paletteSetsAlpha","_paletteHasTransparency","fromRGBA","hideOnPaletteClick","hide","ofsX","ofsY","pointerAbs","xVal","yVal","fmt","createPadCanvas","draw","hGrad","createLinearGradient","addColorStop","vGrad","createSliderGradient","color1","color2","grad","createASliderGradient","hShadow","blur","spread","inset","flags","leaveValue","leaveAlpha","leavePreview","enumOpts","previewPosition","alphaChannel","deprecatedOpts","styleElement","onFineChange","overwriteImportant","closable","insetWidth","insetColor","refine","THIS","setOption","option","oldOpt","newOpt","setter","getOption","getter","drawPicker","_processParentElementsInDOM","box","boxB","pad","padB","padM","padCanvas","cross","crossBY","crossBX","crossLY","crossLX","sld","sldB","sldM","sldGrad","sldPtrS","sldPtrIB","sldPtrMB","sldPtrOB","asld","asldB","asldM","asldGrad","asldPtrS","asldPtrIB","asldPtrMB","asldPtrOB","btn","btnT","appendChild","passive","insetColors","outsetColor","p","displaySlider","displayAlphaSlider","pickerDims","crossOuterSize","crossSize","controlPadding","borderRadius","PI","clear","zIndex","border","borderColor","backgroundColor","opacity","controlBorderColor","cursor","instance","control","pointerBorderColor","pointerColor","overflow","display","sliderInnerSpace","innerHTML","chessboard","si","sampleColor","sampleCssColor","sc","sw","backgroundImage","toDataURL","backgroundRepeat","backgroundPosition","bottom","maxWidth","whiteSpace","buttonColor","font","textAlign","onmousedown","lineHeight","createTextNode","closeText","redrawPad","redrawSld","redrawASld","activeClassName","container","body","parentNode","yChannel","rgb1","rgb2","rgb","toHEXString","sldChannel","isPickerOwner","alpha","onChange","onInput","valueElement","alphaElement","previewElement","previewSize","previewPadding","required","hash","uppercase","forceStyle","hideOnLeave","minS","maxS","minV","maxV","minA","maxA","redraw","exposeColor","success","opt","channel","res","evs","callbackProp","isNaN","hsv","fromHSV","fromRGB","fromString","setPreviewElementBg","setValueElementValue","toHEXAString","toRGBString","toRGBAString","toGrayscale","toCanvas","toBackground","isLight","_currentFormat","processValueInput","processAlphaInput","colorStr","alphaVal","setAlphaElementValue","backgrounds","image","size","repeat","origin","preview","bg","sty","background-image","background-position","background-size","background-repeat","background-origin","padding-left","padding-right","_parentElementsProcessed","compStyle","set__palette","options","presetsArr","preset","slice","pres","presets","nonProperties","test","min-width","valueElementOrigEvents","oninput","oldVal","initValue","initAlpha","install","shift","ready","triggerNow","installByClassName","JSColor","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__esModule","d","definition","key","o","enumerable","CMOptions","metric","shortScale","shortScaleAbbreviated","LastModCount","TooltipLumpBackup","BackupGrimoireLaunch","BackupGrimoireLaunchMod","BackupGrimoireDraw","HasReplaceNativeGrimoireLaunch","HasReplaceNativeGrimoireDraw","LoadMinigames","LastSeasonPopupState","LastTickerFortuneState","LastGardenNextStep","LastGoldenCookieState","LastSpawnedGoldenCookieState","LastMagicBarFull","CurrSpawnedGoldenCookieState","LastWrinklerCount","DispCSS","TooltipBuildBackup","TooltipGrimoireBackup","TooltipUpgradeBackup","BackupFunctions","ColorTextPre","ColorBackPre","ColorBlue","ColorGreen","ColorYellow","ColorOrange","ColorRed","ColorPurple","ColorGray","ColorPink","ColorBrown","Colors","TooltipText","SimpleTooltipElements","CMLastAscendState","CMSayTime","TooltipWrinklerArea","TooltipWrinkler","TooltipWrinklerBeingShown","LastTargetBotBar","LastTargetBuildings","LastTargetTooltipBuilding","CookieTimes","ClickTimes","BuffColors","Frenzy","Dragon Harvest","Elder frenzy","Clot","Click frenzy","Dragonflight","TooltipPrice","TooltipBonusIncome","TooltipType","TooltipName","TooltipBonusMouse","LastAscendState","LastNumberOfTimers","GCTimers","Title","BeautifyFormatting_Beautify","num","floats","forced","decimals","ScaleDecimals","Infinity","Scale","Beautify","Number","isFinite","answer","ScaleCutoff","ScaleSeparator","toLocaleString","toExponential","exponential","AmountOfTenPowerThree","toFixed","log","FormatTime","time","longFormat","formattedTime","TimeFormat","GetTimeColor","text","CookiesDiff","WrinkDiff","WrinkFattestDiff","ChoEggDiff","ClicksDiff","HeavenlyChipsDiff","CacheLastCPSCheck","CacheLastCookies","CacheLastWrinkCookies","CacheLastWrinkFattestCookies","CacheLastClicks","CacheAverageGainBank","CacheAverageGainWrink","CacheAverageGainWrinkFattest","CacheAverageGainChoEgg","CacheAverageCPS","CacheLastHeavenlyCheck","CacheLastHeavenlyChips","CacheDoRemakeBuildPrices","CacheHadBuildAura","SimBuildingsOwned","SimUpgradesOwned","SimPledges","SimAchievementsOwned","SimHeavenlyPower","SimPrestige","SimDragonAura","SimDragonAura2","SimGod1","SimGod2","SimGod3","SimDoSims","SimEffs","SimCookiesPs","SimCookiesPsRaw","CacheDragonAura","CacheDragonAura2","CacheLastDragonLevel","CacheCostDragonUpgrade","CacheLucky","CacheLuckyReward","CacheLuckyWrathReward","CacheLuckyFrenzy","CacheLuckyRewardFrenzy","CacheLuckyWrathRewardFrenzy","CacheConjure","CacheConjureReward","CacheEdifice","CacheEdificeBuilding","CacheNoGoldSwitchCookiesPS","CacheDragonsFortuneMultAdjustment","CacheGoldenCookiesMult","CacheWrathCookiesMult","CacheHCPerSecond","CacheCentEgg","CacheSeaSpec","CacheLastChoEgg","CacheObjects1","CacheObjects10","CacheObjects100","CacheWrinklersTotal","CacheWrinklersNormal","CacheWrinklersFattest","CacheCurrWrinklerCPSMult","CacheCurrWrinklerCount","CacheUpgrades","CacheAverageClicks","CacheMissingUpgrades","CacheMissingUpgradesPrestige","CacheMissingUpgradesCookies","CacheChainRequired","CacheChainRequiredNext","CacheChainMaxReward","CacheChainWrathRequired","CacheChainWrathRequiredNext","CacheChainWrathMaxReward","CacheChainFrenzyRequired","CacheChainFrenzyRequiredNext","CacheChainFrenzyMaxReward","CacheChainFrenzyWrathRequired","CacheChainFrenzyWrathRequiredNext","CacheChainFrenzyWrathMaxReward","CacheRealCookiesEarned","CacheAvgCPSWithChoEgg","CacheSpawnedGoldenShimmer","CacheSeasonPopShimmer","CacheTimeTillNextPrestige","CacheMinPP","CachePPArray","CacheGoldenShimmersByID","CacheSellForChoEgg","CacheGods","0","1","2","3","4","5","6","7","8","10","SimObjects","SimUpgrades","SimAchievements","SimDateCentury","Game","startDate","SimDateAges","SimAuraMult","what","dragonAuras","SimGetSellMultiplier","giveBack","SimEff","def","SimHas","it","ascensionMode","pool","tier","bought","SimHasGod","hasGod","Temple","minigame","Objects","god","gods","id","SimModifyBuildingPrice","building","price","ModifiedPrice","hasBuff","fortune","minigameLoaded","godLvl","BuildingSell","build","basePrice","free","amount","noSim","noSimRes","toChange","startingAmount","moni","buyBulk","priceIncrease","modifyBuildingPrice","getSellMultiplier","UpdateBuildings","buyMode","BuildColor","forEach","removeProperty","SortBuildings","arr","k","sort","gridRow","UpdateUpgrades","UpBarColor","blue","green","yellow","orange","red","purple","gray","UpgradesInStore","me","addedColor","j","childNodes","div","SortUpgrades","nameChecker","arr2","upgrade","findIndex","order","GetCPS","CPSMode","CalcWrink","cookiesPs","cpsSucked","wrinklers","GetWrinkConfigBank","CreateTimer","bars","timerBar","margin","fontSize","marginRight","verticalAlign","colorBar","borderTopRightRadius","borderBottomRightRadius","timer","marginLeft","CreateBotBarBuildingColumn","buildingName","bonus","header","substring","lastChild","paddingLeft","UpdateBotBar","BotBar","count","PPString","PPDisplayTime","timeColor","bulkPrice","cookies","UpdateBackground","Background","LeftBackground","UpdateBotTimerBarPosition","TimerBar","TimerBarPos","ToggleTimerBar","CacheDragonAuras","dragonAura","dragonAura2","InitAchievement","achievementName","Achievements","you","SimGetTieredCpsMult","mult","tieredUpgrades","Tiers","special","synergies","syn","buildingTie1","buildingTie2","grandma","Grandma","misfortune","vanilla","elderWrath","InitialBuildingData","cps","magicCpS","ComputeCps","GrandmaSynergies","UpgradesByPool","kitten","Portal","baseCps","baseCPS","InitUpgrade","upgradeName","Upgrades","power","level","pow","CopyData","UpgradesOwned","pledges","AchievementsOwned","heavenlyPower","prestige","totalCookies","slot","won","TooltipCreateHeader","fontWeight","TooltipCreateCalculationSection","tooltip","income","marginBottom","click","production","CalculateGrimoireRefillTime","currentMagic","maxMagic","targetMagic","magic","fps","GetCPSBuffMult","buffs","multCpS","ToggleToolWarnPos","ToolWarnPos","UpdateTooltips","tooltipBox","paddingBottom","TooltipCreateTooltipBox","TooltipBuildUpgrade","increase","productionAchievs","HasAchiev","achiev","nextProductionAchiev","Building","getPrice","bonusMouse","previousSibling","chocolate","Upgrade","TooltipLump","lumpType","lumpColor","lumpCurrentType","SugarLump","spellCost","getSpellCost","spellsById","TooltipGrim","magicM","recover","recoverColor","conjure","reward","seperator","loss","Grimoire","Farm","TooltipPlots","plot","mature","plantsById","matureBase","plantName","GardenPlots","totalGain","mortal","tile","immortal","HarvestAll","WrinklerReward","WrinklerButton","TooltipPantheon","GodID","cps1","cps2","cps3","PantheonGods","getElementById","TooltipWarn","create","boxId","labelTextFront","labelTextBack","deficitId","transition","labelDiv","labelSpan","deficitDiv","deficitSpan","ToolWarnUser","TooltipCreateWarningSection","bonusIncomeUsed","ToolWarnBon","limitLucky","bonusNoFren","ToolWarnLucky","ToolWarnLuckyFrenzy","limitLuckyFrenzy","ToolWarnConjure","limitConjure","ToolWarnConjureFrenzy","limitConjureFrenzy","ToolWarnEdifice","children","Warnings","Draw","prefs","autosave","drawT","onMenu","Stats","innerText","sayTime","T","maxWidthTwoBar","maxWidthOneBar","numberOfTimers","shimmerTypes","golden","spawned","Has","minTime","maxTime","TimerBarOverlay","season","reindeer","BuffTimerBars","classColor","UpdateTimerBar","TooltipWrink","showingTooltip","phase","selected","placeholder","wrinkler","minWidth","escape","CheckWrinklerTooltip","sucked","toSuck","UpdateWrinklerTooltip","UpStats","UpdateMenu","monospace","CMAvgQueue","[object Object]","maxLength","queue","newValue","timePeriod","CacheAvgCPS","currDate","Date","now","choEggTotal","cookiesEarned","timeDiff","bankDiffAvg","wrinkDiffAvg","wrinkFattestDiffAvg","choEggDiffAvg","clicksDiffAvg","cookieClicks","addLatest","cpsLength","AvgCPSHist","calcAverage","choEgg","HasUnlocked","AvgClicksHist","ColourOfPP","PPSecondsLowerLimit","PPOnlyConsiderBuyable","CacheColor","getSumPrice","PPExcludeTop","CachePP","PP_CachePP","indexOfMin","CacheBuildingsPP","BuildingGetPrice","SimWin","CalculateGains","effs","myEffs","ii","heavenlyMult","SimGetHeavenlyMultiplier","heralds","cookieUpgrades","buildMult","sin","santaLevel","milkProgress","milkMult","catMult","storedCps","eggMult","day","lumps","rawCookiesPs","CpsAchievements","threshold","auraMult","bakeryName","goldenSwitchMult","upgrades","goldenCookieUpgrades","veilMult","runModHookOnValue","Fortunes","HalloCookies","ChristCookies","ValCookies","PlantDrops","SimHasAchiev","CheckOtherAchiev","grandmas","buildingsOwned","mathematician","base10","minAmount","ObjectsById","Cursor","hasAllHalloCook","hasAllChristCook","list","fortunes","CacheBuildingIncome","result","tieredAchievs","achievUnlock","lastAchievementsOwned","BuyBuildingsBonusIncome","CacheBuildingsPrices","CacheIncome","bonusIncome","unlocked","CountsAsUpgradeOwned","diffMouseCPS","multClick","out","MouseCps","computedMouseCps","BuyUpgradesBonusIncome","MaxChainCookieReward","digit","maxPayout","totalFromChain","nextMoni","nextRequired","chain","LN10","CacheChain","cpsBuffMult","CacheHeavenlyChipsPS","chipsOwned","HowMuchPrestige","cookiesReset","ascendNowToGet","heavenlyChipsDiffAvg","CacheAllMissingUpgrades","classes","noFrame","crates","icon","iconFunction","getDynamicTooltip","crateMissing","CacheSeasonSpec","CacheStatsCookies","CacheGoldenAndWrathCookiesMults","goldenMult","wrathMult","eff","CacheWrinklers","InitCache","SettingsDefault","UpgradeBarFixedPos","GeneralSound","GCNotification","GCFlash","GCSound","GCVolume","GCSoundURL","FortuneNotification","FortuneFlash","FortuneSound","FortuneVolume","FortuneSoundURL","SeaNotification","SeaFlash","SeaSound","SeaVolume","SeaSoundURL","GardFlash","GardSound","GardVolume","GardSoundURL","MagicNotification","MagicFlash","MagicSound","MagicVolume","MagicSoundURL","WrinklerNotification","WrinklerFlash","WrinklerSound","WrinklerVolume","WrinklerSoundURL","WrinklerMaxNotification","WrinklerMaxFlash","WrinklerMaxSound","WrinklerMaxVolume","WrinklerMaxSoundURL","TooltipAmor","DragonAuraInfo","TooltipAscendButton","MissingUpgrades","DetailedTime","GrimoireBar","HeavenlyChipsTarget","ShowMissedGC","Blue","Green","Yellow","Orange","Red","Purple","Gray","Pink","Brown","GCTimer","Favicon","WrinklerButtons","HideSectionsButtons","BulkBuyBlock","Header","BarsColors","Calculation","Notification","NotificationGeneral","NotificationGC","NotificationFC","NotificationSea","NotificationGard","NotificationMagi","NotificationWrink","NotificationWrinkMax","Tooltip","Statistics","Notation","Miscellaneous","Lucky","Chain","Spells","Garden","Prestige","Wrink","Sea","Misc","InfoTab","Config_CheckNotificationPermissions","ToggleOnOff","checkNotificationPromise","requestPermission","then","ToggleBotBar","RefreshScale","BeautifyAll","RefreshStore","RebuildUpgrades","UpdateColors","UpdateFavicon","wrath","href","Setting","group","SettingStandard","label","desc","toggle","super","SettingVolume","SettingInputNumber","SettingsData","insertBefore","save","stringify","settings","version","CacheDragonCost","dragonLevel","dragonLevels","buy","includes","replaceAll","cost","CalculateChangeGod","InitData","isInitializing","Flash","config","setTimeout","PlaySound","url","sndConfig","volConfig","sound","Audio","volume","play","CreateNotification","notifyConfig","title","message","visibilityState","badge","CMLoop","OnAscend","AscendTimer","mods","CachePantheonGods","sellTotal","Bank","marketGoods","goods","goodsVal","marketGood","stock","cookiesPsRawHighest","buildingsToSacrifice","highestBuilding","SellBuildingsForChoEgg","CacheSellAllForChoEgg","hasBuildAura","godMult","CacheCurrWrinklerCPS","cookiesToNext","HowManyCookiesReset","LoopCache","shimmers","spawnLead","cookie","fontFamily","onclick","pop","onmouseover","filter","webkitFilter","onmouseout","CreateGCTimer","transform","life","TickerEffect","nextStep","CheckMagicMeter","CurrentWrinklers","getWrinklersMax","CheckWrinklerCount","SaveConfig","saveString","b64_to_utf8","unescape","localStorage","getItem","CookieMonsterSave","newSaveString","setItem","utf8_to_b64","LoadConfig","CMConfig","mod","PopAllNormalWrinklers","hp","CreateTooltip","buildPrice","amortizeAmount","storedTotalCps","globalCpsMult","crateTooltip","lumpTooltip","spellTooltip","tileTooltip","toolTooltip","godTooltip","slotTooltip","area","ReplaceTooltipGrimoire","dynamic","wobble","ReplaceNativeGrimoireDraw","magicBarTextL","ReplaceNativeGrimoire","launch","ReplaceNativeGrimoireLaunch","jscolor_default","ToggleSetting_ConfigPrefix","ToggleConfigVolume","ToggleHeader","StatsHeader","span","StatsListing","listingName","StatsMissDisp","theMissDisp","frag","createDocumentFragment","missing","AddMenuStats","stats","goldCookTooltip","section","luckyColor","luckyTime","luckyReqFrag","luckyReqSpan","luckyReqSmall","luckyColorFrenzy","luckyTimeFrenzy","luckyReqFrenFrag","luckyReqFrenSpan","luckyReqFrenSmall","luckySplit","luckyRewardMaxSpan","luckyRewardFrenzyMaxSpan","luckyCurBase","luckyCurSpan","LuckySection","chainColor","chainTime","chainReqFrag","chainReqSpan","chainReqSmall","chainWrathColor","chainWrathTime","chainWrathReqFrag","chainWrathReqSpan","chainWrathReqSmall","chainColorFrenzy","chainTimeFrenzy","chainReqFrenFrag","chainReqFrenSpan","chainReqFrenSmall","chainWrathColorFrenzy","chainWrathTimeFrenzy","chainWrathReqFrenFrag","chainWrathReqFrenSpan","chainWrathReqFrenSmall","chainCurMax","chainCur","chainCurWrath","ChainSection","conjureColor","conjureTime","conjureReqFrag","conjureReqSpan","conjureReqSmall","conjureFrenzyColor","conjureFrenzyCur","conjureFrenzyTime","conjureFrenzyReqFrag","conjureFrenzyReqSpan","conjureFrenzyReqSmall","SpellsSection","bakeberryColor","bakeberryFrag","chocorootColor","chocorootFrag","queenbeetColor","queenbeetFrag","duketaterColor","duketaterFrag","GardenSection","possiblePresMax","neededCook","cookiesNextFrag","cookiesNextSmall","heavenlyChips","HCTarget","CookiesTillTarget","resetBonus","newHeavenlyChips","curCPS","ResetCPS","ResetBonus","resetFrag","resetSmall","currentPrestige","willHave","willGet","delta7","next7Reset","next7Total","frag7","delta777","next777Reset","next777Total","frag777","delta777777","next777777Reset","next777777Total","frag777777","PrestigeSection","popAllFrag","popAllA","popFattestFrag","popFattestA","specDisp","missingHalloweenCookies","missingChristmasCookies","missingValentineCookies","missingNormalEggs","eggDrops","missingRareEggs","rareEggDrops","missingPlantDrops","centEgg","failRateHalloween","dropRateMult","failRateChristmas","dropRateEgg","StartingFailRate","failRateEgg","succesRateEgg","obtainedEggs","obtainedRareEggs","pNormal1","pRare1","pRedrop","SeasonSection","missedGoldenClicks","menuSection","prestigeUpgradesMissing","titlefrag","PrestigeUpgrades","normalUpgradesMissing","tech","nextSibling","cookieUpgradesMissing","ConfigGroups","ConfigGroupsNotification","CreatePrefHeader","CreatePrefOption","ToggleConfig","float","percent","slider","step","onchange","input","readOnly","inputPrompt","Prompt","outerHTML","ClosePrompt","innerDiv","FixMouseY","timerBarHeight","mouseY","ReplaceNative","drawMod","from","update","updateMod","warnOffset","tta","tt","UpdateTooltipLocation","UpdateWrinklers","UpdateSpecial","ClickCookie","mouseDown","setOnCrate","ClickProduct","DescribeDragonAura","aura","bonusCPS","priceOfChange","CalculateChangeAura","timeToRecover","bonusCPSPercentage","minHeight","div2","AddAuraInfo","ToggleSpecialMenu","on","shouldHide","AddDragonLevelUpTooltip","groupObject","subGroup","subGroupObject","resDef","resDefBut","AddMenuPref","info","description","notes","menu","AddMenuInfo","AddMenu","detail","Logic","titleGC","titleFC","titleSP","addFC","addSP","lastIndexOf","spawn","UpdateTitle","ReplaceAscendTooltip","InitializeCookieMonster","head","borderTop","textShadow","table","tbody","firstCol","td","CreateBotBar","CMTimerBarGC","CMTimerBarRen","TimerBarBuffTimers","CreateTimerBar","UpgradeBar","legend","legendLine","CreateUpgradeBarLegend","upgradeNumber","CreateUpgradeBar","WhiteScreen","CreateWhiteScreen","CreateSectionHideButtons","getElementsByTagName","CreateFavicon","CreateSimpleTooltip","append","CreateWrinklerButtons","canLumps","child","coords","ReplaceTooltipPantheon","popups","Popup","Notify","Win","CM","proceed","confirm","registerHook","load","registerMod"],"mappings":"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I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGhDC,EAAa,CACjB,GACA,GACA,IACA,IACA,KACA,QACA,QACA,OACA,OACA,MACA,MACA,MACA,QACA,SACA,SACA,cACA,UACA,SACA,YACA,UACA,WACA,SACA,WACA,YACA,YACA,kBAIIC,EAAwB,CAC5B,GACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,MACA,KACA,OAMF,IAAIC,EAEAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAOAC,EA1BAC,EAAqB,GAErBC,EAAwB,GACxBC,EAAuB,GAOvBC,EAAkB,GAqBtB,MAAMC,EAAe,SACfC,EAAe,SAMfC,EAAY,OACZC,EAAa,QACbC,EAAc,SACdC,EAAc,SACdC,EAAW,MACXC,EAAc,SACdC,EAAY,OACZC,EAAY,OACZC,EAAa,QACbC,EAAS,CACbH,EACAN,EACAC,EACAC,EACAC,EACAC,EACAC,EACAE,EACAC,GAUIE,EAAc,CAClB,CAAC,6BAA8B,oCAAqC,SACpE,CACE,2CACA,6EACA,SAEF,CACE,6BACA,qPACA,SAEF,CACE,8BACA,kEACA,SAEF,CACE,kCACA,2PACA,SAEF,CACE,0BACA,gLA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","file":"./CookieMonster.js","sourceRoot":""} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6834be4e..c4cea10b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "cookiemonster-mod", - "version": "2.031.6", + "version": "2.031.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "cookiemonster-mod", - "version": "2.031.6", + "version": "2.031.5", "license": "MIT", "dependencies": { "@eastdesire/jscolor": "^2.4.5" @@ -24,22 +24,25 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.12.13", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.10.4" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.12.11", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true }, "node_modules/@babel/highlight": { - "version": "7.12.13", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.12.11", "chalk": "^2.0.0", @@ -48,8 +51,9 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -59,8 +63,9 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -72,29 +77,33 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -104,8 +113,9 @@ }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -116,9 +126,10 @@ "integrity": "sha512-LDCEGN7qKKO3tq6yYtx6cbz/tQlr9LqKNSFaG2GIIn03y67ot3doucpDGoQjCwXG2xUB4pDXRuH2lobjjxhtJA==" }, "node_modules/@eslint/eslintrc": { - "version": "0.3.0", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -127,7 +138,6 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, @@ -135,10 +145,35 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/@types/eslint": { "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", + "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -146,8 +181,9 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -155,28 +191,33 @@ }, "node_modules/@types/estree": { "version": "0.0.46", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true }, "node_modules/@types/node": { - "version": "14.14.33", - "dev": true, - "license": "MIT" + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", + "dev": true }, "node_modules/@webassemblyjs/ast": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.0", "@webassemblyjs/helper-wasm-bytecode": "1.11.0" @@ -184,23 +225,27 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.0", "@webassemblyjs/helper-api-error": "1.11.0", @@ -209,13 +254,15 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-buffer": "1.11.0", @@ -225,29 +272,33 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", "dev": true, - "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-buffer": "1.11.0", @@ -261,8 +312,9 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-wasm-bytecode": "1.11.0", @@ -273,8 +325,9 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-buffer": "1.11.0", @@ -284,8 +337,9 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@webassemblyjs/helper-api-error": "1.11.0", @@ -297,8 +351,9 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", "dev": true, - "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.11.0", "@xtuc/long": "4.2.2" @@ -306,8 +361,9 @@ }, "node_modules/@webpack-cli/configtest": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack": "4.x.x || 5.x.x", "webpack-cli": "4.x.x" @@ -315,8 +371,9 @@ }, "node_modules/@webpack-cli/info": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", "dev": true, - "license": "MIT", "dependencies": { "envinfo": "^7.7.3" }, @@ -326,8 +383,9 @@ }, "node_modules/@webpack-cli/serve": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", "dev": true, - "license": "MIT", "peerDependencies": { "webpack-cli": "4.x.x" }, @@ -339,18 +397,21 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true }, "node_modules/@xtuc/long": { "version": "4.2.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true }, "node_modules/acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -360,16 +421,18 @@ }, "node_modules/acorn-jsx": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -383,32 +446,36 @@ }, "node_modules/ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-regex": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -421,16 +488,18 @@ }, "node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/array-includes": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -447,8 +516,9 @@ }, "node_modules/array.prototype.flat": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -463,21 +533,24 @@ }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/balanced-match": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -485,8 +558,9 @@ }, "node_modules/browserslist": { "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, - "license": "MIT", "dependencies": { "caniuse-lite": "^1.0.30001181", "colorette": "^1.2.1", @@ -507,13 +581,15 @@ }, "node_modules/buffer-from": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, "node_modules/call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -524,21 +600,24 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001197", - "dev": true, - "license": "CC-BY-4.0" + "version": "1.0.30001202", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz", + "integrity": "sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ==", + "dev": true }, "node_modules/chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -552,8 +631,9 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^1.9.0" }, @@ -563,8 +643,9 @@ }, "node_modules/clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -576,8 +657,9 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -587,41 +669,48 @@ }, "node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colorette": { "version": "1.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true }, "node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/confusing-browser-globals": { "version": "1.0.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", + "dev": true }, "node_modules/contains-path": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -633,8 +722,9 @@ }, "node_modules/debug": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -649,13 +739,15 @@ }, "node_modules/deep-is": { "version": "0.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true }, "node_modules/define-properties": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, - "license": "MIT", "dependencies": { "object-keys": "^1.0.12" }, @@ -665,8 +757,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -675,19 +768,22 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.3.684", - "dev": true, - "license": "ISC" + "version": "1.3.690", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.690.tgz", + "integrity": "sha512-zPbaSv1c8LUKqQ+scNxJKv01RYFkVVF1xli+b+3Ty8ONujHjAMg+t/COmdZqrtnS1gT+g4hbSodHillymt1Lww==", + "dev": true }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/enhanced-resolve": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -698,8 +794,9 @@ }, "node_modules/enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1" }, @@ -709,8 +806,9 @@ }, "node_modules/envinfo": { "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true, - "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -720,31 +818,35 @@ }, "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.18.0-next.2", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", "object-inspect": "^1.9.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -755,13 +857,15 @@ }, "node_modules/es-module-lexer": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "dev": true }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -776,27 +880,30 @@ }, "node_modules/escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/eslint": { - "version": "7.19.0", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.3.0", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -807,12 +914,12 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -820,7 +927,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -845,8 +952,9 @@ }, "node_modules/eslint-config-airbnb-base": { "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, - "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -874,8 +982,9 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^2.6.9", "resolve": "^1.13.1" @@ -883,21 +992,24 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-import-resolver-node/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "node_modules/eslint-module-utils": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^2.6.9", "pkg-dir": "^2.0.0" @@ -908,21 +1020,24 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-module-utils/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "node_modules/eslint-plugin-import": { "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.1", "array.prototype.flat": "^1.2.3", @@ -947,14 +1062,17 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "dependencies": { "esutils": "^2.0.2", @@ -966,8 +1084,9 @@ }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "node_modules/eslint-plugin-prettier": { "version": "3.3.1", @@ -992,8 +1111,9 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1004,8 +1124,9 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -1018,24 +1139,27 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-visitor-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -1047,16 +1171,18 @@ }, "node_modules/espree/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1067,8 +1193,9 @@ }, "node_modules/esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -1078,16 +1205,18 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1097,40 +1226,45 @@ }, "node_modules/esrecurse/node_modules/estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, - "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -1151,8 +1285,9 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-diff": { "version": "1.2.0", @@ -1162,23 +1297,27 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, "node_modules/fastest-levenshtein": { "version": "1.0.12", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true }, "node_modules/file-entry-cache": { - "version": "6.0.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -1188,8 +1327,9 @@ }, "node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -1199,8 +1339,9 @@ }, "node_modules/flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -1211,28 +1352,33 @@ }, "node_modules/flatted": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true }, "node_modules/get-intrinsic": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -1244,8 +1390,9 @@ }, "node_modules/get-stream": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -1255,8 +1402,9 @@ }, "node_modules/glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -1273,9 +1421,10 @@ } }, "node_modules/glob-parent": { - "version": "5.1.1", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1285,15 +1434,17 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true }, "node_modules/globals": { - "version": "12.4.0", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", "dev": true, - "license": "MIT", "dependencies": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" }, "engines": { "node": ">=8" @@ -1304,13 +1455,15 @@ }, "node_modules/graceful-fs": { "version": "4.2.6", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true }, "node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -1318,18 +1471,29 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-symbols": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1339,29 +1503,33 @@ }, "node_modules/hosted-git-info": { "version": "2.8.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true }, "node_modules/human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -1375,8 +1543,9 @@ }, "node_modules/import-local": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -1390,8 +1559,9 @@ }, "node_modules/import-local/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -1402,8 +1572,9 @@ }, "node_modules/import-local/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -1413,8 +1584,9 @@ }, "node_modules/import-local/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -1427,8 +1599,9 @@ }, "node_modules/import-local/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -1438,24 +1611,27 @@ }, "node_modules/import-local/node_modules/p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/import-local/node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/import-local/node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -1465,16 +1641,18 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -1482,26 +1660,54 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", "dev": true, - "license": "MIT" + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-callable": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1511,8 +1717,9 @@ }, "node_modules/is-core-module": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, - "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -1522,8 +1729,9 @@ }, "node_modules/is-date-object": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1533,24 +1741,27 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1560,8 +1771,21 @@ }, "node_modules/is-negative-zero": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1571,8 +1795,9 @@ }, "node_modules/is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, - "license": "MIT", "dependencies": { "isobject": "^3.0.1" }, @@ -1582,8 +1807,9 @@ }, "node_modules/is-regex": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-symbols": "^1.0.1" @@ -1597,16 +1823,18 @@ }, "node_modules/is-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-string": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -1616,8 +1844,9 @@ }, "node_modules/is-symbol": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.1" }, @@ -1630,26 +1859,30 @@ }, "node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, "node_modules/isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/jest-worker": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -1661,13 +1894,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1678,23 +1913,27 @@ }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true }, "node_modules/json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -1704,16 +1943,18 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -1723,13 +1964,14 @@ } }, "node_modules/load-json-file": { - "version": "2.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" }, "engines": { @@ -1738,16 +1980,18 @@ }, "node_modules/loader-runner": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.11.5" } }, "node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -1757,14 +2001,16 @@ } }, "node_modules/lodash": { - "version": "4.17.20", - "dev": true, - "license": "MIT" + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -1774,6 +2020,8 @@ }, "node_modules/memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true, "engines": { "node": ">= 0.10.0" @@ -1781,21 +2029,24 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true }, "node_modules/mime-db": { "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, - "license": "MIT", "dependencies": { "mime-db": "1.46.0" }, @@ -1805,16 +2056,18 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1824,38 +2077,45 @@ }, "node_modules/minimist": { "version": "1.2.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "node_modules/ms": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true }, "node_modules/neo-async": { "version": "2.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "node_modules/nice-try": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node_modules/node-releases": { "version": "1.1.71", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true }, "node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -1865,16 +2125,18 @@ }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/npm-run-all": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "chalk": "^2.4.1", @@ -1897,8 +2159,9 @@ }, "node_modules/npm-run-all/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -1908,8 +2171,9 @@ }, "node_modules/npm-run-all/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1921,21 +2185,24 @@ }, "node_modules/npm-run-all/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/npm-run-all/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "node_modules/npm-run-all/node_modules/cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, - "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -1949,90 +2216,36 @@ }, "node_modules/npm-run-all/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/load-json-file": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, "engines": { "node": ">=4" } }, "node_modules/npm-run-all/node_modules/path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/path-type": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/pify": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/read-pkg": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, "engines": { "node": ">=4" } }, "node_modules/npm-run-all/node_modules/semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/npm-run-all/node_modules/shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -2042,16 +2255,18 @@ }, "node_modules/npm-run-all/node_modules/shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-all/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -2061,8 +2276,9 @@ }, "node_modules/npm-run-all/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2072,8 +2288,9 @@ }, "node_modules/npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -2083,24 +2300,27 @@ }, "node_modules/object-inspect": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -2116,8 +2336,9 @@ }, "node_modules/object.entries": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -2130,8 +2351,9 @@ }, "node_modules/object.values": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2147,16 +2369,18 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -2169,8 +2393,9 @@ }, "node_modules/optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -2185,8 +2410,9 @@ }, "node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -2196,8 +2422,9 @@ }, "node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -2207,16 +2434,18 @@ }, "node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -2225,51 +2454,58 @@ } }, "node_modules/parse-json": { - "version": "2.2.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, - "license": "MIT", "dependencies": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true }, "node_modules/path-type": { - "version": "2.0.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "license": "MIT", "dependencies": { - "pify": "^2.0.0" + "pify": "^3.0.0" }, "engines": { "node": ">=4" @@ -2277,8 +2513,9 @@ }, "node_modules/pidtree": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true, - "license": "MIT", "bin": { "pidtree": "bin/pidtree.js" }, @@ -2287,17 +2524,19 @@ } }, "node_modules/pify": { - "version": "2.3.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, "node_modules/pkg-dir": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^2.1.0" }, @@ -2307,8 +2546,9 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -2339,36 +2579,40 @@ }, "node_modules/progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/read-pkg": { - "version": "2.0.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, - "license": "MIT", "dependencies": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" }, "engines": { "node": ">=4" @@ -2376,8 +2620,9 @@ }, "node_modules/read-pkg-up": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" @@ -2386,10 +2631,73 @@ "node": ">=4" } }, + "node_modules/read-pkg-up/node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/rechoir": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dev": true, - "license": "MIT", "dependencies": { "resolve": "^1.9.0" }, @@ -2399,8 +2707,9 @@ }, "node_modules/regexpp": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -2410,16 +2719,18 @@ }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -2430,8 +2741,9 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -2441,24 +2753,27 @@ }, "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2471,6 +2786,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, "funding": [ { @@ -2485,13 +2802,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/schema-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.6", "ajv": "^6.12.5", @@ -2507,8 +2824,9 @@ }, "node_modules/semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -2521,16 +2839,18 @@ }, "node_modules/serialize-javascript": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, - "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -2540,8 +2860,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -2551,26 +2872,30 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { "version": "1.7.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true }, "node_modules/signal-exit": { "version": "3.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -2585,38 +2910,34 @@ }, "node_modules/source-list-map": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true }, "node_modules/source-map": { - "version": "0.7.3", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -2624,13 +2945,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -2638,18 +2961,21 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.7", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", + "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "node_modules/string-width": { - "version": "4.2.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2661,8 +2987,9 @@ }, "node_modules/string.prototype.padend": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", + "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -2676,11 +3003,12 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" }, "funding": { @@ -2688,11 +3016,12 @@ } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" }, "funding": { @@ -2701,8 +3030,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.0" }, @@ -2712,24 +3042,27 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -2739,8 +3072,9 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2750,8 +3084,9 @@ }, "node_modules/table": { "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "ajv": "^7.0.2", "lodash": "^4.17.20", @@ -2763,9 +3098,10 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "7.0.4", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -2779,21 +3115,24 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/tapable": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/terser": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "commander": "^2.20.0", "source-map": "~0.7.2", @@ -2808,8 +3147,9 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", "dev": true, - "license": "MIT", "dependencies": { "jest-worker": "^26.6.2", "p-limit": "^3.1.0", @@ -2831,8 +3171,9 @@ }, "node_modules/terser-webpack-plugin/node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -2843,23 +3184,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terser-webpack-plugin/node_modules/source-map": { - "version": "0.6.1", + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, "node_modules/tsconfig-paths": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.1", @@ -2869,13 +3213,15 @@ }, "node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -2884,30 +3230,49 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" } }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/v8-compile-cache": { - "version": "2.2.0", - "dev": true, - "license": "MIT" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -2915,8 +3280,9 @@ }, "node_modules/watchpack": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -2926,9 +3292,10 @@ } }, "node_modules/webpack": { - "version": "5.24.4", + "version": "5.26.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.26.2.tgz", + "integrity": "sha512-h07tAPeQceEO3Idrevqv4ECcpMH8Zp0aUUJ+IytujWTVf6TF5PI3rKVw0Z+7rNjU4qJuEx18BykFxgRvR9VgEQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.0", "@types/estree": "^0.0.46", @@ -2972,8 +3339,9 @@ }, "node_modules/webpack-cli": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", "dev": true, - "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.0.1", @@ -3019,16 +3387,18 @@ }, "node_modules/webpack-cli/node_modules/commander": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-merge": { "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -3039,8 +3409,9 @@ }, "node_modules/webpack-sources": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, - "license": "MIT", "dependencies": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" @@ -3049,18 +3420,11 @@ "node": ">=10.13.0" } }, - "node_modules/webpack-sources/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/webpack/node_modules/acorn": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3070,8 +3434,9 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -3082,33 +3447,54 @@ "node": ">= 8" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wildcard": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true }, "node_modules/word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3119,18 +3505,24 @@ }, "dependencies": { "@babel/code-frame": { - "version": "7.12.13", + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, "requires": { - "@babel/highlight": "^7.12.13" + "@babel/highlight": "^7.10.4" } }, "@babel/helper-validator-identifier": { "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", "dev": true }, "@babel/highlight": { - "version": "7.12.13", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -3140,6 +3532,8 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -3147,6 +3541,8 @@ }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -3156,6 +3552,8 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -3163,14 +3561,20 @@ }, "color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -3180,6 +3584,8 @@ }, "@discoveryjs/json-ext": { "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", "dev": true }, "@eastdesire/jscolor": { @@ -3188,7 +3594,9 @@ "integrity": "sha512-LDCEGN7qKKO3tq6yYtx6cbz/tQlr9LqKNSFaG2GIIn03y67ot3doucpDGoQjCwXG2xUB4pDXRuH2lobjjxhtJA==" }, "@eslint/eslintrc": { - "version": "0.3.0", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -3198,13 +3606,31 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } } }, "@types/eslint": { "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", + "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", "dev": true, "requires": { "@types/estree": "*", @@ -3213,6 +3639,8 @@ }, "@types/eslint-scope": { "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", "dev": true, "requires": { "@types/eslint": "*", @@ -3221,22 +3649,32 @@ }, "@types/estree": { "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", "dev": true }, "@types/json-schema": { "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, "@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", "dev": true }, "@types/node": { - "version": "14.14.33", + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", "dev": true }, "@webassemblyjs/ast": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", "dev": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.0", @@ -3245,18 +3683,26 @@ }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", "dev": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", "dev": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", "dev": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", "dev": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.0", @@ -3266,10 +3712,14 @@ }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", "dev": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3280,6 +3730,8 @@ }, "@webassemblyjs/ieee754": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" @@ -3287,6 +3739,8 @@ }, "@webassemblyjs/leb128": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", "dev": true, "requires": { "@xtuc/long": "4.2.2" @@ -3294,10 +3748,14 @@ }, "@webassemblyjs/utf8": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", "dev": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3312,6 +3770,8 @@ }, "@webassemblyjs/wasm-gen": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3323,6 +3783,8 @@ }, "@webassemblyjs/wasm-opt": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3333,6 +3795,8 @@ }, "@webassemblyjs/wasm-parser": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3345,6 +3809,8 @@ }, "@webassemblyjs/wast-printer": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.11.0", @@ -3353,11 +3819,15 @@ }, "@webpack-cli/configtest": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", "dev": true, "requires": {} }, "@webpack-cli/info": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", "dev": true, "requires": { "envinfo": "^7.7.3" @@ -3365,28 +3835,40 @@ }, "@webpack-cli/serve": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", "dev": true, "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", "dev": true }, "@xtuc/long": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, "acorn": { "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true }, "acorn-jsx": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true, "requires": {} }, "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -3397,19 +3879,27 @@ }, "ajv-keywords": { "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "requires": {} }, "ansi-colors": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-regex": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, "ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { "color-convert": "^2.0.1" @@ -3417,6 +3907,8 @@ }, "argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -3424,6 +3916,8 @@ }, "array-includes": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", + "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -3435,6 +3929,8 @@ }, "array.prototype.flat": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", + "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -3444,14 +3940,20 @@ }, "astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "balanced-match": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -3460,6 +3962,8 @@ }, "browserslist": { "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", "dev": true, "requires": { "caniuse-lite": "^1.0.30001181", @@ -3471,10 +3975,14 @@ }, "buffer-from": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "call-bind": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -3483,14 +3991,20 @@ }, "callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "caniuse-lite": { - "version": "1.0.30001197", + "version": "1.0.30001202", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz", + "integrity": "sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ==", "dev": true }, "chalk": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -3499,6 +4013,8 @@ }, "chrome-trace-event": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -3506,6 +4022,8 @@ }, "clone-deep": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "requires": { "is-plain-object": "^2.0.4", @@ -3515,6 +4033,8 @@ }, "color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { "color-name": "~1.1.4" @@ -3522,30 +4042,44 @@ }, "color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, "colorette": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, "commander": { "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "confusing-browser-globals": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==", "dev": true }, "contains-path": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", "dev": true }, "cross-spawn": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -3555,6 +4089,8 @@ }, "debug": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -3562,10 +4098,14 @@ }, "deep-is": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, "define-properties": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" @@ -3573,21 +4113,29 @@ }, "doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" } }, "electron-to-chromium": { - "version": "1.3.684", + "version": "1.3.690", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.690.tgz", + "integrity": "sha512-zPbaSv1c8LUKqQ+scNxJKv01RYFkVVF1xli+b+3Ty8ONujHjAMg+t/COmdZqrtnS1gT+g4hbSodHillymt1Lww==", "dev": true }, "emoji-regex": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "enhanced-resolve": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -3596,6 +4144,8 @@ }, "enquirer": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "requires": { "ansi-colors": "^4.1.1" @@ -3603,41 +4153,53 @@ }, "envinfo": { "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", "dev": true }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.18.0-next.2", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", "object-inspect": "^1.9.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" } }, "es-module-lexer": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", "dev": true }, "es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -3647,18 +4209,24 @@ }, "escalade": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "eslint": { - "version": "7.19.0", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@eslint/eslintrc": "^0.3.0", + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -3669,12 +4237,12 @@ "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", - "esquery": "^1.2.0", + "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -3682,7 +4250,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -3698,6 +4266,8 @@ }, "eslint-config-airbnb-base": { "version": "14.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", + "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", "dev": true, "requires": { "confusing-browser-globals": "^1.0.10", @@ -3714,6 +4284,8 @@ }, "eslint-import-resolver-node": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", + "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -3722,6 +4294,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -3729,12 +4303,16 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "eslint-module-utils": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", "dev": true, "requires": { "debug": "^2.6.9", @@ -3743,6 +4321,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -3750,12 +4330,16 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } }, "eslint-plugin-import": { "version": "2.22.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", + "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", "dev": true, "requires": { "array-includes": "^3.1.1", @@ -3775,6 +4359,8 @@ "dependencies": { "debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" @@ -3782,6 +4368,8 @@ }, "doctrine": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { "esutils": "^2.0.2", @@ -3790,6 +4378,8 @@ }, "ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true } } @@ -3805,6 +4395,8 @@ }, "eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -3813,6 +4405,8 @@ }, "eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -3820,16 +4414,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, "eslint-visitor-keys": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", "dev": true }, "espree": { "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { "acorn": "^7.4.0", @@ -3839,16 +4439,22 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true } } }, "esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "esquery": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -3856,12 +4462,16 @@ "dependencies": { "estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } }, "esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { "estraverse": "^5.2.0" @@ -3869,24 +4479,34 @@ "dependencies": { "estraverse": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true } } }, "estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "events": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, "execa": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", "dev": true, "requires": { "cross-spawn": "^7.0.3", @@ -3902,6 +4522,8 @@ }, "fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "fast-diff": { @@ -3912,18 +4534,26 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "fastest-levenshtein": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", "dev": true }, "file-entry-cache": { - "version": "6.0.0", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "requires": { "flat-cache": "^3.0.4" @@ -3931,6 +4561,8 @@ }, "find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { "locate-path": "^2.0.0" @@ -3938,6 +4570,8 @@ }, "flat-cache": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { "flatted": "^3.1.0", @@ -3946,22 +4580,32 @@ }, "flatted": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "functional-red-black-tree": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, "get-intrinsic": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -3971,10 +4615,14 @@ }, "get-stream": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", "dev": true }, "glob": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3986,7 +4634,9 @@ } }, "glob-parent": { - "version": "5.1.1", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -3994,48 +4644,74 @@ }, "glob-to-regexp": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, "globals": { - "version": "12.4.0", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" } }, "graceful-fs": { "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, "has-symbols": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "hosted-git-info": { "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", "dev": true }, "human-signals": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, "ignore": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, "import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -4044,6 +4720,8 @@ }, "import-local": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "requires": { "pkg-dir": "^4.2.0", @@ -4052,6 +4730,8 @@ "dependencies": { "find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { "locate-path": "^5.0.0", @@ -4060,6 +4740,8 @@ }, "locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { "p-locate": "^4.1.0" @@ -4067,6 +4749,8 @@ }, "p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -4074,6 +4758,8 @@ }, "p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { "p-limit": "^2.2.0" @@ -4081,14 +4767,20 @@ }, "p-try": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { "find-up": "^4.0.0" @@ -4098,10 +4790,14 @@ }, "imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -4110,22 +4806,47 @@ }, "inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "interpret": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, "is-arrayish": { "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", "dev": true }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-callable": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", "dev": true }, "is-core-module": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -4133,18 +4854,26 @@ }, "is-date-object": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", "dev": true }, "is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-glob": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -4152,10 +4881,20 @@ }, "is-negative-zero": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", "dev": true }, "is-plain-object": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" @@ -4163,6 +4902,8 @@ }, "is-regex": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", + "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4171,14 +4912,20 @@ }, "is-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-string": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", "dev": true }, "is-symbol": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "dev": true, "requires": { "has-symbols": "^1.0.1" @@ -4186,18 +4933,26 @@ }, "isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "jest-worker": { "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, "requires": { "@types/node": "*", @@ -4207,10 +4962,14 @@ }, "js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -4219,18 +4978,26 @@ }, "json-parse-better-errors": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, "json5": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -4238,10 +5005,14 @@ }, "kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { "prelude-ls": "^1.2.1", @@ -4249,21 +5020,27 @@ } }, "load-json-file": { - "version": "2.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", + "parse-json": "^4.0.0", + "pify": "^3.0.0", "strip-bom": "^3.0.0" } }, "loader-runner": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true }, "locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "dev": true, "requires": { "p-locate": "^2.0.0", @@ -4271,11 +5048,15 @@ } }, "lodash": { - "version": "4.17.20", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, "lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -4283,18 +5064,26 @@ }, "memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", "dev": true }, "merge-stream": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "mime-db": { "version": "1.46.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", + "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", "dev": true }, "mime-types": { "version": "2.1.29", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", + "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", "dev": true, "requires": { "mime-db": "1.46.0" @@ -4302,10 +5091,14 @@ }, "mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -4313,30 +5106,44 @@ }, "minimist": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, "neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, "nice-try": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, "node-releases": { "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", "dev": true }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -4347,12 +5154,16 @@ "dependencies": { "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "npm-run-all": { "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -4368,6 +5179,8 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -4375,6 +5188,8 @@ }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -4384,6 +5199,8 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -4391,10 +5208,14 @@ }, "color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "cross-spawn": { "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -4406,56 +5227,26 @@ }, "has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "load-json-file": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, "path-key": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "path-type": { - "version": "3.0.0", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, "semver": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "shebang-command": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -4463,10 +5254,14 @@ }, "shebang-regex": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -4474,6 +5269,8 @@ }, "which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -4483,6 +5280,8 @@ }, "npm-run-path": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { "path-key": "^3.0.0" @@ -4490,14 +5289,20 @@ }, "object-inspect": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", "dev": true }, "object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object.assign": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -4508,6 +5313,8 @@ }, "object.entries": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.3.tgz", + "integrity": "sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg==", "dev": true, "requires": { "call-bind": "^1.0.0", @@ -4518,6 +5325,8 @@ }, "object.values": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz", + "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4528,6 +5337,8 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -4535,6 +5346,8 @@ }, "onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -4542,6 +5355,8 @@ }, "optionator": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -4554,6 +5369,8 @@ }, "p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "requires": { "p-try": "^1.0.0" @@ -4561,6 +5378,8 @@ }, "p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { "p-limit": "^1.1.0" @@ -4568,55 +5387,78 @@ }, "p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, "parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "requires": { "callsites": "^3.0.0" } }, "parse-json": { - "version": "2.2.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "error-ex": "^1.2.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } }, "path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "path-parse": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-type": { - "version": "2.0.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { - "pify": "^2.0.0" + "pify": "^3.0.0" } }, "pidtree": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true }, "pify": { - "version": "2.3.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pkg-dir": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { "find-up": "^2.1.0" @@ -4624,6 +5466,8 @@ }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { @@ -4643,38 +5487,99 @@ }, "progress": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "punycode": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "randombytes": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "requires": { "safe-buffer": "^5.1.0" } }, "read-pkg": { - "version": "2.0.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^3.0.0" } }, "read-pkg-up": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { "find-up": "^2.0.0", "read-pkg": "^2.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + } } }, "rechoir": { "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dev": true, "requires": { "resolve": "^1.9.0" @@ -4682,14 +5587,20 @@ }, "regexpp": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, "resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { "is-core-module": "^2.2.0", @@ -4698,6 +5609,8 @@ }, "resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "requires": { "resolve-from": "^5.0.0" @@ -4705,16 +5618,22 @@ "dependencies": { "resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } }, "resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, "rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" @@ -4722,10 +5641,14 @@ }, "safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "schema-utils": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", "dev": true, "requires": { "@types/json-schema": "^7.0.6", @@ -4735,6 +5658,8 @@ }, "semver": { "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -4742,6 +5667,8 @@ }, "serialize-javascript": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -4749,6 +5676,8 @@ }, "shallow-clone": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "requires": { "kind-of": "^6.0.2" @@ -4756,6 +5685,8 @@ }, "shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { "shebang-regex": "^3.0.0" @@ -4763,18 +5694,26 @@ }, "shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, "shell-quote": { "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, "signal-exit": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { "ansi-styles": "^4.0.0", @@ -4784,28 +5723,30 @@ }, "source-list-map": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", "dev": true }, "source-map": { - "version": "0.7.3", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-support": { "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } } }, "spdx-correct": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -4814,10 +5755,14 @@ }, "spdx-exceptions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", "dev": true }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -4826,14 +5771,20 @@ }, "spdx-license-ids": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", + "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", "dev": true }, "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "string-width": { - "version": "4.2.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -4843,6 +5794,8 @@ }, "string.prototype.padend": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.2.tgz", + "integrity": "sha512-/AQFLdYvePENU3W5rgurfWSMU6n+Ww8n/3cUt7E+vPBB/D7YDG8x+qjoFs4M/alR2bW7Qg6xMjVwWUOvuQ0XpQ==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -4851,23 +5804,29 @@ } }, "string.prototype.trimend": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.3", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, "strip-ansi": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { "ansi-regex": "^5.0.0" @@ -4875,18 +5834,26 @@ }, "strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, "strip-final-newline": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, "supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -4894,6 +5861,8 @@ }, "table": { "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", "dev": true, "requires": { "ajv": "^7.0.2", @@ -4903,7 +5872,9 @@ }, "dependencies": { "ajv": { - "version": "7.0.4", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -4914,25 +5885,41 @@ }, "json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true } } }, "tapable": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true }, "terser": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", "dev": true, "requires": { "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.19" + }, + "dependencies": { + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } } }, "terser-webpack-plugin": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", "dev": true, "requires": { "jest-worker": "^26.6.2", @@ -4945,23 +5932,25 @@ "dependencies": { "p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "requires": { "yocto-queue": "^0.1.0" } - }, - "source-map": { - "version": "0.6.1", - "dev": true } } }, "text-table": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, "tsconfig-paths": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", "dev": true, "requires": { "@types/json5": "^0.0.29", @@ -4972,32 +5961,56 @@ }, "tslib": { "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { "prelude-ls": "^1.2.1" } }, "type-fest": { - "version": "0.8.1", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, "uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "requires": { "punycode": "^2.1.0" } }, "v8-compile-cache": { - "version": "2.2.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -5006,6 +6019,8 @@ }, "watchpack": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", "dev": true, "requires": { "glob-to-regexp": "^0.4.1", @@ -5013,7 +6028,9 @@ } }, "webpack": { - "version": "5.24.4", + "version": "5.26.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.26.2.tgz", + "integrity": "sha512-h07tAPeQceEO3Idrevqv4ECcpMH8Zp0aUUJ+IytujWTVf6TF5PI3rKVw0Z+7rNjU4qJuEx18BykFxgRvR9VgEQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -5043,12 +6060,16 @@ "dependencies": { "acorn": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", "dev": true } } }, "webpack-cli": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", "dev": true, "requires": { "@discoveryjs/json-ext": "^0.5.0", @@ -5069,12 +6090,16 @@ "dependencies": { "commander": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true } } }, "webpack-merge": { "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", "dev": true, "requires": { "clone-deep": "^4.0.1", @@ -5083,43 +6108,64 @@ }, "webpack-sources": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", "dev": true, "requires": { "source-list-map": "^2.0.1", "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true - } } }, "which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "wildcard": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, "word-wrap": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, "yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true } } diff --git a/package.json b/package.json index 27c324c8..f9095fd6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cookiemonster-mod", - "version": "2.031.5", + "version": "2.031.6", "description": "Cookie Monster is an add-on that you can load into Cookie Clicker which offers a wide range of tools and statistics to enhance the game. It is not a cheat interface – although it does offer helpers for golden cookies and such, everything can be toggled off at will to only leave how much information you want. This is a helper and everything is an option.", "main": "CookieMonster.js", "keywords": [ @@ -12,12 +12,12 @@ ], "scripts": { "copy-file": "cp dist/CookieMonster.js CookieMonster.js", - "eslint_src": "eslint src", - "build": "run-s eslint_src pack_prod remove_comment copy-file", - "build_test": "run-s pack_dev", - "pack_prod": "webpack --env production", - "pack_dev": "webpack", - "remove_comment": "sed -i '' -e '/\\/\\/# sourceMappingURL.*/d' dist/CookieMonster.js" + "eslint-src": "eslint src", + "build": "run-s eslint-src pack-prod remove-comment copy-file", + "build-test": "run-s pack-dev", + "pack-prod": "webpack --env production", + "pack-dev": "webpack", + "remove-comment": "sed -i '' -e '/\\/\\/# sourceMappingURL.*/d' dist/CookieMonster.js" }, "repository": { "type": "git", diff --git a/src/Cache/CPS/AverageQueue.js b/src/Cache/CPS/AverageQueue.js index b7932a2f..ec0ae71e 100644 --- a/src/Cache/CPS/AverageQueue.js +++ b/src/Cache/CPS/AverageQueue.js @@ -34,12 +34,13 @@ export class CMAvgQueue { * @returns {number} ret The average */ calcAverage(timePeriod) { - if (timePeriod > this.maxLength) timePeriod = this.maxLength; - if (timePeriod > this.queue.length) timePeriod = this.queue.length; + let time = timePeriod; + if (time > this.maxLength) time = this.maxLength; + if (time > this.queue.length) time = this.queue.length; let ret = 0; for ( let i = this.queue.length - 1; - i >= 0 && i > this.queue.length - 1 - timePeriod; + i >= 0 && i > this.queue.length - 1 - time; i-- ) { ret += this.queue[i]; @@ -47,7 +48,7 @@ export class CMAvgQueue { if (ret === 0) { return 0; } - return ret / timePeriod; + return ret / time; } } diff --git a/src/Cache/CPS/CurrWrinklerCPS.js b/src/Cache/CPS/CurrWrinklerCPS.js index e508c0b9..b42a53d2 100644 --- a/src/Cache/CPS/CurrWrinklerCPS.js +++ b/src/Cache/CPS/CurrWrinklerCPS.js @@ -13,9 +13,9 @@ import { export default function CacheCurrWrinklerCPS() { CacheCurrWrinklerCPSMult = 0; let count = 0; - for (const i in Game.wrinklers) { - if (Game.wrinklers[i].phase === 2) count++; - } + Object.keys(Game.wrinklers).forEach((i) => { + if (Game.wrinklers[i].phase === 2) count += 1; + }); let godMult = 1; if (SimObjects.Temple.minigameLoaded) { const godLvl = Game.hasGod('scorn'); diff --git a/src/Cache/CPS/GetCPSBuffMult.js b/src/Cache/CPS/GetCPSBuffMult.js index 4a458d87..88db924f 100644 --- a/src/Cache/CPS/GetCPSBuffMult.js +++ b/src/Cache/CPS/GetCPSBuffMult.js @@ -4,9 +4,9 @@ */ export default function GetCPSBuffMult() { let mult = 1; - for (const i of Object.keys(Game.buffs)) { + Object.keys(Game.buffs).forEach((i) => { if (typeof Game.buffs[i].multCpS !== 'undefined') mult *= Game.buffs[i].multCpS; - } + }); return mult; } diff --git a/src/Cache/CPS/SellChoEgg.js b/src/Cache/CPS/SellChoEgg.js index 4dfaaf52..3825ce45 100644 --- a/src/Cache/CPS/SellChoEgg.js +++ b/src/Cache/CPS/SellChoEgg.js @@ -13,10 +13,10 @@ export default function CacheSellAllForChoEgg() { if (Game.Objects.Bank.minigameLoaded) { const marketGoods = Game.Objects.Bank.minigame.goods; let goodsVal = 0; - for (const i of Object.keys(marketGoods)) { + Object.keys(marketGoods).forEach((i) => { const marketGood = marketGoods[i]; goodsVal += marketGood.stock * marketGood.val; - } + }); sellTotal += goodsVal * Game.cookiesPsRawHighest; } // Compute cookies earned by selling all buildings with optimal auras (ES + RB) diff --git a/src/Cache/Dragon/Dragon.js b/src/Cache/Dragon/Dragon.js index 25e80025..405dcf91 100644 --- a/src/Cache/Dragon/Dragon.js +++ b/src/Cache/Dragon/Dragon.js @@ -1,3 +1,4 @@ +/* eslint-disable no-restricted-syntax */ /* eslint-disable no-unused-vars */ /** Functions related to the Dragon */ @@ -44,7 +45,7 @@ export default function CacheDragonCost() { price = Game.modifyBuildingPrice(SimObjects[target], price); price = Math.ceil(price); cost += price; - SimObjects[target].amount--; + SimObjects[target].amount -= 1; } CacheCostDragonUpgrade = `Cost to rebuy: ${cost}`; } @@ -68,7 +69,7 @@ export default function CacheDragonCost() { price = Game.modifyBuildingPrice(SimObjects[target], price); price = Math.ceil(price); cost += price; - SimObjects[target].amount--; + SimObjects[target].amount -= 1; } } CacheCostDragonUpgrade = `Cost to rebuy: ${Beautify(cost)}`; diff --git a/src/Cache/PP/Building.js b/src/Cache/PP/Building.js index 20495754..172424d7 100644 --- a/src/Cache/PP/Building.js +++ b/src/Cache/PP/Building.js @@ -1,15 +1,14 @@ +/* eslint-disable no-param-reassign */ /* eslint-disable no-unused-vars */ import { CMOptions } from '../../Config/VariablesAndData'; import GetWrinkConfigBank from '../../Disp/HelperFunctions/GetWrinkConfigBank'; import { ColorGray } from '../../Disp/VariablesAndData'; import { - CacheArrayOfPPs, - CacheMaxPP, - CacheMidPP, CacheMinPP, CacheObjects1, CacheObjects10, CacheObjects100, + CachePPArray, } from '../VariablesAndData'; import ColourOfPP from './ColourOfPP'; @@ -18,17 +17,30 @@ import ColourOfPP from './ColourOfPP'; * It saves all date in CM.Cache.Objects... * It is called by CM.Cache.CacheBuildingsPP() */ -function CacheBuildingsBulkPP(target) { - for (const i of Object.keys(target)) { +function CacheColor(target, amount) { + Object.keys(target).forEach((i) => { + target[i].color = ColourOfPP( + target[i], + Game.Objects[i].getSumPrice(amount), + ); + // Colour based on excluding certain top-buildings + for (let j = 0; j < CMOptions.PPExcludeTop; j++) { + if (target[i].pp === CachePPArray[j][0]) target[i].color = ColorGray; + } + }); +} + +function CachePP(target, amount) { + Object.keys(target).forEach((i) => { + const price = Game.Objects[i].getSumPrice(amount); if (Game.cookiesPs) { target[i].pp = - Math.max(target[i].price - (Game.cookies + GetWrinkConfigBank()), 0) / + Math.max(price - (Game.cookies + GetWrinkConfigBank()), 0) / Game.cookiesPs + - target[i].price / target[i].bonus; - } else target[i].pp = target[i].price / target[i].bonus; - - target[i].color = ColourOfPP(target[i], target[i].price); - } + price / target[i].bonus; + } else target[i].pp = price / target[i].bonus; + CachePPArray.push([target[i].pp, amount]); + }); } /** @@ -37,91 +49,28 @@ function CacheBuildingsBulkPP(target) { */ export default function CacheBuildingsPP() { CacheMinPP = Infinity; - CacheMaxPP = 1; - CacheArrayOfPPs = []; + CachePPArray = []; if (typeof CMOptions.PPExcludeTop === 'undefined') CMOptions.PPExcludeTop = 0; // Otherwise breaks during initialization - // Calculate PP and colors when compared to purchase of optimal building in single-purchase mode - if (CMOptions.ColorPPBulkMode === 0 && Game.buyMode > 0) { - for (const i of Object.keys(CacheObjects1)) { - if (Game.cookiesPs) { - CacheObjects1[i].pp = - Math.max( - Game.Objects[i].getPrice() - (Game.cookies + GetWrinkConfigBank()), - 0, - ) / - Game.cookiesPs + - Game.Objects[i].getPrice() / CacheObjects1[i].bonus; - } else - CacheObjects1[i].pp = - Game.Objects[i].getPrice() / CacheObjects1[i].bonus; - CacheArrayOfPPs.push([CacheObjects1[i].pp, Game.Objects[i].getPrice()]); - } - // Set CM.Cache.min to best non-excluded buidliung - CacheArrayOfPPs.sort((a, b) => a[0] - b[0]); - if (CMOptions.PPOnlyConsiderBuyable) { - while (CacheArrayOfPPs[0][1] > Game.cookies) { - if (CacheArrayOfPPs.length === 1) { - break; - } - CacheArrayOfPPs.shift(); - } - } - CacheMinPP = CacheArrayOfPPs[CMOptions.PPExcludeTop][0]; - CacheMaxPP = CacheArrayOfPPs[CacheArrayOfPPs.length - 1][0]; - CacheMidPP = (CacheMaxPP - CacheMinPP) / 2 + CacheMinPP; - for (const i of Object.keys(CacheObjects1)) { - CacheObjects1[i].color = ColourOfPP( - CacheObjects1[i], - Game.Objects[i].getPrice(), - ); - // Colour based on excluding certain top-buildings - for (let j = 0; j < CMOptions.PPExcludeTop; j++) { - if (CacheObjects1[i].pp === CacheArrayOfPPs[j][0]) - CacheObjects1[i].color = ColorGray; - } - } - // Calculate PP of bulk-buy modes - CacheBuildingsBulkPP(CacheObjects10); - CacheBuildingsBulkPP(CacheObjects100); - } else if (Game.buyMode > 0) { - // Calculate PP and colors when compared to purchase of selected bulk mode - let target; - if (Game.buyBulk === 1) target = CacheObjects1; - else if (Game.buyBulk === 10) target = CacheObjects10; - else if (Game.buyBulk === 100) target = CacheObjects100; - for (const i of Object.keys(target)) { - if (Game.cookiesPs) { - target[i].pp = - Math.max( - Game.Objects[i].bulkPrice - (Game.cookies + GetWrinkConfigBank()), - 0, - ) / - Game.cookiesPs + - Game.Objects[i].bulkPrice / target[i].bonus; - } else target[i].pp = Game.Objects[i].bulkPrice / target[i].bonus; - CacheArrayOfPPs.push([target[i].pp, Game.Objects[i].bulkPrice]); - } - // Set CM.Cache.min to best non-excluded buidliung - CacheArrayOfPPs.sort((a, b) => a[0] - b[0]); - if (CMOptions.PPOnlyConsiderBuyable) { - while (CacheArrayOfPPs[0][1] > Game.cookies) { - if (CacheArrayOfPPs.length === 1) { - break; - } - CacheArrayOfPPs.shift(); - } - } - CacheMinPP = CacheArrayOfPPs[CMOptions.PPExcludeTop][0]; - CacheMaxPP = CacheArrayOfPPs[CacheArrayOfPPs.length - 1][0]; - CacheMidPP = (CacheMaxPP - CacheMinPP) / 2 + CacheMinPP; + // Calculate PP and colors + CachePP(CacheObjects1, 1); + CachePP(CacheObjects10, 10); + CachePP(CacheObjects100, 100); - for (const i of Object.keys(CacheObjects1)) { - target[i].color = ColourOfPP(target[i], Game.Objects[i].bulkPrice); - // Colour based on excluding certain top-buildings - for (let j = 0; j < CMOptions.PPExcludeTop; j++) { - if (target[i].pp === CacheArrayOfPPs[j][0]) target[i].color = ColorGray; + // Set CM.Cache.min to best non-excluded buidliung + CachePPArray.sort((a, b) => a[0] - b[0]); + let indexOfMin = 0; + if (CMOptions.PPOnlyConsiderBuyable) { + while (CachePPArray[indexOfMin][1] > Game.cookies) { + indexOfMin += 1; + if (CachePPArray.length === indexOfMin + 1) { + break; } } } + CacheMinPP = CachePPArray[CMOptions.PPExcludeTop][indexOfMin]; + + CacheColor(CacheObjects1, 1); + CacheColor(CacheObjects10, 10); + CacheColor(CacheObjects100, 100); } diff --git a/src/Cache/PP/ColourOfPP.js b/src/Cache/PP/ColourOfPP.js index 2c0c722f..6940ca45 100644 --- a/src/Cache/PP/ColourOfPP.js +++ b/src/Cache/PP/ColourOfPP.js @@ -9,7 +9,7 @@ import { ColorRed, ColorYellow, } from '../../Disp/VariablesAndData'; -import { CacheMaxPP, CacheMidPP, CacheMinPP } from '../VariablesAndData'; +import { CacheMinPP, CachePPArray } from '../VariablesAndData'; /** * This functions return the colour assosciated with the given pp value @@ -24,10 +24,10 @@ export default function ColourOfPP(me, price) { if (me.pp <= 0 || me.pp === Infinity) color = ColorGray; else if (me.pp < CacheMinPP) color = ColorBlue; else if (me.pp === CacheMinPP) color = ColorGreen; - else if (me.pp === CacheMaxPP) color = ColorRed; - else if (me.pp > CacheMaxPP) color = ColorPurple; - else if (me.pp > CacheMidPP) color = ColorOrange; - else color = ColorYellow; + else if (me.pp < CachePPArray[10][0]) color = ColorYellow; + else if (me.pp < CachePPArray[20][0]) color = ColorOrange; + else if (me.pp > CachePPArray[30][0]) color = ColorRed; + else color = ColorPurple; // Colour based on price in terms of CPS if (Number(CMOptions.PPSecondsLowerLimit) !== 0) { diff --git a/src/Cache/PP/Upgrade.js b/src/Cache/PP/Upgrade.js index 17d39546..9a3260fb 100644 --- a/src/Cache/PP/Upgrade.js +++ b/src/Cache/PP/Upgrade.js @@ -7,7 +7,7 @@ import ColourOfPP from './ColourOfPP'; * It is called by CM.Cache.CachePP() */ export default function CacheUpgradePP() { - for (const i of Object.keys(CacheUpgrades)) { + Object.keys(CacheUpgrades).forEach((i) => { if (Game.cookiesPs) { CacheUpgrades[i].pp = Math.max( @@ -25,5 +25,5 @@ export default function CacheUpgradePP() { CacheUpgrades[i], Game.Upgrades[i].getPrice(), ); - } + }); } diff --git a/src/Cache/PantheonGods/CacheGods.js b/src/Cache/PantheonGods/CacheGods.js new file mode 100644 index 00000000..afe87669 --- /dev/null +++ b/src/Cache/PantheonGods/CacheGods.js @@ -0,0 +1,13 @@ +import CalculateChangeGod from '../../Sim/SimulationEvents/GodChange'; +import { CacheGods } from '../VariablesAndData'; + +/** + * This functions caches the cps effect of each God in slot 1, 2 or 3 + */ +export default function CachePantheonGods() { + for (let god = 0; god < 11; god += 1) { + for (let slot = 0; slot < 3; slot += 1) { + CacheGods[god][slot] = CalculateChangeGod(god, slot); + } + } +} diff --git a/src/Cache/PriceAndIncome/PriceAndIncome.js b/src/Cache/PriceAndIncome/PriceAndIncome.js index cefff600..36467ebd 100644 --- a/src/Cache/PriceAndIncome/PriceAndIncome.js +++ b/src/Cache/PriceAndIncome/PriceAndIncome.js @@ -1,10 +1,16 @@ /* eslint-disable no-unused-vars */ /** Section: Functions related to caching income */ +import { CMOptions } from '../../Config/VariablesAndData'; +import GetCPS from '../../Disp/HelperFunctions/GetCPS'; import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding'; import BuyBuildingsBonusIncome from '../../Sim/SimulationEvents/BuyBuildingBonusIncome'; import BuyUpgradesBonusIncome from '../../Sim/SimulationEvents/BuyUpgrades'; import { + CacheAverageCPS, + CacheAverageGainBank, + CacheAverageGainWrink, + CacheAverageGainWrinkFattest, CacheDoRemakeBuildPrices, CacheObjects1, CacheObjects10, @@ -20,13 +26,13 @@ import { */ function CacheBuildingIncome(amount, target) { const result = []; - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { result[i] = {}; result[i].bonus = BuyBuildingsBonusIncome(i, amount); if (amount !== 1) { CacheDoRemakeBuildPrices = 1; } - } + }); return result; } @@ -36,19 +42,28 @@ function CacheBuildingIncome(amount, target) { */ function CacheUpgradeIncome() { CacheUpgrades = []; - for (const i of Object.keys(Game.Upgrades)) { + Object.keys(Game.Upgrades).forEach((i) => { const bonusIncome = BuyUpgradesBonusIncome(i); - CacheUpgrades[i] = {}; - if (bonusIncome[0]) CacheUpgrades[i].bonus = bonusIncome[0]; - if (bonusIncome[1]) CacheUpgrades[i].bonusMouse = bonusIncome[1]; - } + if (i === 'Elder Pledge') { + CacheUpgrades[i] = { bonus: Game.cookiesPs - CacheAverageGainBank }; + if (CMOptions.CalcWrink === 1) + CacheUpgrades[i].bonus -= CacheAverageGainWrink; + else if (CMOptions.CalcWrink === 2) + CacheUpgrades[i].bonus -= CacheAverageGainWrinkFattest; + if (!Number.isFinite(CacheUpgrades[i].bonus)) CacheUpgrades[i].bonus = 0; + } else { + CacheUpgrades[i] = {}; + if (bonusIncome[0]) CacheUpgrades[i].bonus = bonusIncome[0]; + if (bonusIncome[1]) CacheUpgrades[i].bonusMouse = bonusIncome[1]; + } + }); } /** * This functions caches the price of each building and stores it in the cache */ export function CacheBuildingsPrices() { - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { CacheObjects1[i].price = BuildingGetPrice( Game.Objects[i], Game.Objects[i].basePrice, @@ -70,7 +85,7 @@ export function CacheBuildingsPrices() { Game.Objects[i].free, 100, ); - } + }); } /** diff --git a/src/Cache/Stats/ChainCookies.js b/src/Cache/Stats/ChainCookies.js index 0af5d5d8..71011e1d 100644 --- a/src/Cache/Stats/ChainCookies.js +++ b/src/Cache/Stats/ChainCookies.js @@ -51,7 +51,7 @@ export function MaxChainCookieReward(digit, maxPayout, mult) { ); nextRequired = Math.floor((1 / 9) * 10 ** (chain + 1) * digit * mult); totalFromChain += moni; - chain++; + chain += 1; } return [totalFromChain, moni, nextRequired]; } diff --git a/src/Cache/Stats/MissingUpgrades.js b/src/Cache/Stats/MissingUpgrades.js index c7bd6727..6cf42359 100644 --- a/src/Cache/Stats/MissingUpgrades.js +++ b/src/Cache/Stats/MissingUpgrades.js @@ -19,9 +19,9 @@ export default function CacheAllMissingUpgrades() { CacheMissingUpgradesPrestige = ''; const list = []; // sort the upgrades - for (const i of Object.keys(Game.Upgrades)) { + Object.keys(Game.Upgrades).forEach((i) => { list.push(Game.Upgrades[i]); - } + }); const sortMap = function (a, b) { if (a.order > b.order) return 1; if (a.order < b.order) return -1; @@ -29,7 +29,7 @@ export default function CacheAllMissingUpgrades() { }; list.sort(sortMap); - for (const i of Object.keys(list)) { + Object.keys(list).forEach((i) => { const me = list[i]; if (me.bought === 0) { @@ -45,5 +45,5 @@ export default function CacheAllMissingUpgrades() { ) CacheMissingUpgrades += str; } - } + }); } diff --git a/src/Cache/Stats/Stats.js b/src/Cache/Stats/Stats.js index 9ba480a2..decbe0c8 100644 --- a/src/Cache/Stats/Stats.js +++ b/src/Cache/Stats/Stats.js @@ -42,11 +42,11 @@ export function CacheStatsCookies() { CacheEdifice = 0; let max = 0; let n = 0; - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { if (Game.Objects[i].amount > max) max = Game.Objects[i].amount; - if (Game.Objects[i].amount > 0) n++; - } - for (const i of Object.keys(Game.Objects)) { + if (Game.Objects[i].amount > 0) n += 1; + }); + Object.keys(Game.Objects).forEach((i) => { if ( (Game.Objects[i].amount < max || n === 1) && Game.Objects[i].amount < 400 && @@ -55,7 +55,7 @@ export function CacheStatsCookies() { CacheEdifice = Game.Objects[i].price * 2; CacheEdificeBuilding = i; } - } + }); } /** diff --git a/src/Cache/VariablesAndData.js b/src/Cache/VariablesAndData.js index 4bbf1796..25df5f6e 100644 --- a/src/Cache/VariablesAndData.js +++ b/src/Cache/VariablesAndData.js @@ -65,10 +65,10 @@ export let CacheSeasonPopShimmer = {}; export let CacheTimeTillNextPrestige = 0; +/** Stores lowest PP value */ export let CacheMinPP = 0; -export let CacheMidPP = 0; -export let CacheMaxPP = 0; -export let CacheArrayOfPPs = []; +/** Stores all PP values of all buildings for all buy settings (1, 10, 100) */ +export let CachePPArray = []; export let CacheGoldenShimmersByID = {}; @@ -99,3 +99,18 @@ export let CacheLastHeavenlyChips; export let CacheDoRemakeBuildPrices; export let CacheHadBuildAura; + +/** Store the CPS effect of each god if it was put into each slot */ +export let CacheGods = { + 0: [0, 0, 0], + 1: [0, 0, 0], + 2: [0, 0, 0], + 3: [0, 0, 0], + 4: [0, 0, 0], + 5: [0, 0, 0], + 6: [0, 0, 0], + 7: [0, 0, 0], + 8: [0, 0, 0], + 9: [0, 0, 0], + 10: [0, 0, 0], +}; diff --git a/src/Cache/Wrinklers/Wrinklers.js b/src/Cache/Wrinklers/Wrinklers.js index 7e688772..5f593ee9 100644 --- a/src/Cache/Wrinklers/Wrinklers.js +++ b/src/Cache/Wrinklers/Wrinklers.js @@ -20,7 +20,7 @@ export default function CacheWrinklers() { CacheWrinklersNormal = 0; CacheWrinklersFattest = [0, null]; for (let i = 0; i < Game.wrinklers.length; i++) { - let sucked = Game.wrinklers[i].sucked; + let { sucked } = Game.wrinklers[i]; let toSuck = 1.1; if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05; if (Game.wrinklers[i].type === 1) toSuck *= 3; // Shiny wrinklers diff --git a/src/Config/SaveLoadReload/SaveLoadReloadSettings.js b/src/Config/SaveLoadReload/SaveLoadReloadSettings.js index 1a708973..bf99c9ea 100644 --- a/src/Config/SaveLoadReload/SaveLoadReloadSettings.js +++ b/src/Config/SaveLoadReload/SaveLoadReloadSettings.js @@ -1,5 +1,5 @@ -import { default as ConfigDefault } from '../../Data/SettingsDefault'; -import { default as ConfigData } from '../../Data/SettingsData'; +import ConfigDefault from '../../Data/SettingsDefault'; +import ConfigData from '../../Data/SettingsData'; import { CMOptions } from '../VariablesAndData'; import save from '../../InitSaveLoad/save'; import CMLoop from '../../Main/Loop'; @@ -43,7 +43,7 @@ export function LoadConfig(settings) { // Check values let mod = false; - for (const i in ConfigDefault) { + Object.keys(ConfigDefault).forEach((i) => { if (typeof CMOptions[i] === 'undefined') { mod = true; CMOptions[i] = ConfigDefault[i]; @@ -61,7 +61,7 @@ export function LoadConfig(settings) { CMOptions[i] = ConfigDefault[i]; } } else if (i === 'Header') { - for (const j in ConfigDefault.Header) { + Object.keys(ConfigDefault.Header).forEach((j) => { if ( typeof CMOptions[i][j] === 'undefined' || !(CMOptions[i][j] > -1 && CMOptions[i][j] < 2) @@ -69,10 +69,10 @@ export function LoadConfig(settings) { mod = true; CMOptions[i][j] = ConfigDefault[i][j]; } - } + }); } else { // Colors - for (const j in ConfigDefault.Colors) { + Object.keys(ConfigDefault.Colors).forEach((j) => { if ( typeof CMOptions[i][j] === 'undefined' || typeof CMOptions[i][j] !== 'string' @@ -80,16 +80,16 @@ export function LoadConfig(settings) { mod = true; CMOptions[i][j] = ConfigDefault[i][j]; } - } + }); } - } + }); if (mod) SaveConfig(); CMLoop(); // Do loop once - for (const i in ConfigDefault) { + Object.keys(ConfigDefault).forEach((i) => { if (i !== 'Header' && typeof ConfigData[i].func !== 'undefined') { ConfigData[i].func(); } - } + }); } else { // Default values LoadConfig(ConfigDefault); diff --git a/src/Config/ToggleSetting.js b/src/Config/ToggleSetting.js index 3cd48b92..a98dfb7e 100644 --- a/src/Config/ToggleSetting.js +++ b/src/Config/ToggleSetting.js @@ -1,4 +1,4 @@ -import { default as ConfigData } from '../Data/SettingsData'; +import ConfigData from '../Data/SettingsData'; import { SaveConfig } from './SaveLoadReload/SaveLoadReloadSettings'; import { CMOptions } from './VariablesAndData'; @@ -13,7 +13,7 @@ export const ConfigPrefix = 'CMConfig'; * @param {string} config The name of the option */ export function ToggleConfig(config) { - CMOptions[config]++; + CMOptions[config] += 1; if (CMOptions[config] === ConfigData[config].label.length) { CMOptions[config] = 0; @@ -49,7 +49,7 @@ export function ToggleConfigVolume(config) { * @param {string} config The name of the header */ export function ToggleHeader(config) { - CMOptions.Header[config]++; + CMOptions.Header[config] += 1; if (CMOptions.Header[config] > 1) CMOptions.Header[config] = 0; SaveConfig(); } diff --git a/src/Config/Toggles/ToggleGCTimer.js b/src/Config/Toggles/ToggleGCTimer.js index 3f0f9835..044207f9 100644 --- a/src/Config/Toggles/ToggleGCTimer.js +++ b/src/Config/Toggles/ToggleGCTimer.js @@ -1,3 +1,4 @@ +/* eslint-disable no-return-assign */ import { CacheGoldenShimmersByID } from '../../Cache/VariablesAndData'; import { GCTimers } from '../../Disp/VariablesAndData'; import { CMOptions } from '../VariablesAndData'; @@ -8,12 +9,12 @@ import { CMOptions } from '../VariablesAndData'; */ export default function ToggleGCTimer() { if (CMOptions.GCTimer === 1) { - for (const i of Object.keys(GCTimers)) { + Object.keys(GCTimers).forEach((i) => { GCTimers[i].style.display = 'block'; GCTimers[i].style.left = CacheGoldenShimmersByID[i].l.style.left; GCTimers[i].style.top = CacheGoldenShimmersByID[i].l.style.top; - } + }); } else { - for (const i of Object.keys(GCTimers)) GCTimers[i].style.display = 'none'; + Object.keys(GCTimers).forEach((i) => (GCTimers[i].style.display = 'none')); } } diff --git a/src/Config/Toggles/ToggleSectionHideButtons.js b/src/Config/Toggles/ToggleSectionHideButtons.js new file mode 100644 index 00000000..73f92b13 --- /dev/null +++ b/src/Config/Toggles/ToggleSectionHideButtons.js @@ -0,0 +1,13 @@ +import { CMOptions } from '../VariablesAndData'; + +/** + * This function updates the display setting of the two objects created by CM.Disp.CreateWrinklerButtons() + * It is called by changes in CM.Options.WrinklerButtons + */ +export default function ToggleSectionHideButtons() { + if (CMOptions.HideSectionsButtons) { + l('CMSectionHidButtons').style.display = ''; + } else { + l('CMSectionHidButtons').style.display = 'none'; + } +} diff --git a/src/Data/Moddata.js b/src/Data/Moddata.js index f03a734c..1badb86a 100644 --- a/src/Data/Moddata.js +++ b/src/Data/Moddata.js @@ -1,7 +1,7 @@ /** Data related directly to Cookie Monster */ export const VersionMajor = '2.031'; -export const VersionMinor = '5'; +export const VersionMinor = '6'; /** Information about Cookie Monster to be displayed in the info section */ export const ModDescription = `
@@ -15,15 +15,27 @@ export const ModDescription = `
/** Latest releasenotes of Cookie Monster to be displayed in the info section */ export const LatestReleaseNotes = `
-The latest update (v 2.031.5) sees a total rehaul of the backend of the mod. It does not introduce any new functions, this is planned for the next release.
-We believe we have fixed all bugs related to this new code, but if you find any bugs, please report them on the GitHub!
+The latest update (v 2.031.6) has revamped the way PP is colourcoded. In the previous versions this was not always correct and we had some settings that made it even more incorrect. With this update Cookie Monster compares the PP of a building to all other possibilities (also buying 10 or 100) of a building and colors the PP accordingly.
+This means that if it is better to buy 10 of a building immediately rather than to buy in increments of 1 Cookie Monster will now show this! In this case the buy 1 option will be yellow, while the buy 10 option will be green.
+This also means that you will see some more diverse colors. Rather than coloring according to arbitrary "middle values" Cookie Monster now uses a top 10, 20 and 30. While this might take some getting used to we believe the new system is much better in conveying useful information to the user while also being more correct!

-Besides, this update fixes the following bugs:
-- Fixed some upgrade tooltips which did not display the full effect of buying the upgrades
-- Fixed not always being able to sell when "blocking bulk buy"
-- Fixed heavenly chips per second display
-- Fixed small display bug when pressing shift and hovering over garden plots
-- Fixed some bugs with the display of numbers and formatting of them
+This update also implements the following functions:
+- Added a tooltip displaying the reward to the extra pop wrinkler buttons
+- Added tooltips to the Gods in the Pantheon
+- The tooltip for Elder Pledge now displays correctly, although it takes some time to load after Cookie Monster has been loaded
+- You can now test the volume and sound of notifications in the settings screen
+- The bottom bar will now flicker less and each column has received a bit of padding
+- Introduced new colour scheme for PP, see the explanation of colors in the Readme or the settings
+- Added option to show buttons that can hide the upgrade and building section
+- Added option to display PP as a time unit, note that these are only approximations. PP does not translate directly into time (the name is deceptive, we know...)
+- Statistics page now shows chance for random drops when they have not been achieved
+
+This update fixes the following bugs:
+- Incorrect amount for "required for max plant reward" in statistics page
+- Fixed the tooltips of the '?' buttons in the statistics page not showing
+- Fixed some unclear settings descriptions
+
+Please submit any bug reports or feature requests to the GitHub page!
`; diff --git a/src/Data/SettingsData.js b/src/Data/SettingsData.js index aafe5bbc..e3704398 100644 --- a/src/Data/SettingsData.js +++ b/src/Data/SettingsData.js @@ -1,9 +1,10 @@ -import CachePP from '../Cache/PP/PP'; +/* eslint-disable no-unused-vars */ import CheckNotificationPermissions from '../Config/CheckNotificationPermissions'; import { ToggleTimerBar, ToggleTimerBarPos } from '../Config/SpecificToggles'; import ToggleBotBar from '../Config/Toggles/ToggleBotBar'; import ToggleDetailedTime from '../Config/Toggles/ToggleDetailedTime'; import ToggleGCTimer from '../Config/Toggles/ToggleGCTimer'; +import ToggleSectionHideButtons from '../Config/Toggles/ToggleSectionHideButtons'; import ToggleToolWarnPos from '../Config/Toggles/ToggleToolWarnPos'; import ToggleUpgradeBarAndColor from '../Config/Toggles/ToggleUpgradeBarAndColor'; import ToggleUpgradeBarFixedPos from '../Config/Toggles/ToggleUpgradeBarFixedPos'; @@ -14,6 +15,7 @@ import UpdateUpgrades from '../Disp/BuildingsUpgrades/Upgrades'; import RefreshScale from '../Disp/HelperFunctions/RefreshScale'; import UpdateColors from '../Disp/HelperFunctions/UpdateColors'; import { UpdateFavicon } from '../Disp/TabTitle/FavIcon'; +import { SimDoSims } from '../Sim/VariablesAndData'; import { SettingStandard, SettingColours, @@ -68,7 +70,11 @@ const Config = { SortBuildings: new SettingStandard( 'bool', 'BarsColors', - ['Sort Buildings: Default', 'Sort Buildings: PP'], + [ + 'Sort Buildings: Default', + 'Sort Buildings: PP of x1 purchase', + 'Sort Buildings: PP of selected bulk mode', + ], 'Sort the display of buildings in either default order or by PP', false, function () { @@ -95,18 +101,12 @@ const Config = { UpdateBuildings(); }, ), - BulkBuildColor: new SettingStandard( + PPDisplayTime: new SettingStandard( 'bool', 'BarsColors', - [ - 'Bulk Building Colors (Single Building Color)', - 'Bulk Building Colors (Calculated Bulk Color)', - ], - 'Color code bulk buildings based on single buildings color or calculated bulk value color', + ['PP As Value (Standard)', 'PP As Time Unit'], + 'Display PP as calculated value or as approximate time unit. Note that PP does not translate directly into a time unit and this is therefore only an approximation.', false, - function () { - UpdateBuildings(); - }, ), UpBarColor: new SettingStandard( 'bool', @@ -127,17 +127,17 @@ const Config = { 'BarsColors', { Blue: - 'Color Blue. Used to show better than best PP building, for Click Frenzy bar, and for various labels', + 'Color Blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels', Green: 'Color Green. Used to show best PP building, for Blood Frenzy bar, and for various labels', Yellow: - 'Color Yellow. Used to show between best and worst PP buildings closer to best, for Frenzy bar, and for various labels', + 'Color Yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels', Orange: - 'Color Orange. Used to show between best and worst PP buildings closer to worst, for Next Reindeer bar, and for various labels', + 'Color Orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels', Red: - 'Color Red. Used to show worst PP building, for Clot bar, and for various labels', + 'Color Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels', Purple: - 'Color Purple. Used to show worse than worst PP building, for Next Cookie bar, and for various labels', + 'Color Purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels', Gray: 'Color Gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar', Pink: 'Color Pink. Used for Dragonflight bar', @@ -169,6 +169,9 @@ const Config = { ], 'Calculate times and average Cookies Per Second with (only the single non-shiny fattest) Wrinklers', true, + function () { + SimDoSims = true; + }, ), CPSMode: new SettingStandard( 'bool', @@ -206,16 +209,6 @@ const Config = { 'How much time average Cookie Clicks should consider', false, ), - ColorPPBulkMode: new SettingStandard( - 'bool', - 'Calculation', - ['Color of PP (Compared to Single)', 'Color of PP (Compared to Bulk)'], - 'Color PP-values based on comparison with single purchase or with selected bulk-buy mode', - false, - function () { - CachePP(); - }, - ), PPExcludeTop: new SettingStandard( 'bool', 'Calculation', @@ -585,6 +578,16 @@ const Config = { 'Shows a tooltip for plants that have a cookie reward.', true, ), + TooltipPantheon: new SettingStandard( + 'bool', + 'Tooltip', + [ + 'Show Extra Info Pantheon Tooltip OFF', + 'Show Extra Info Pantheon Tooltip ON', + ], + 'Shows additional info in the pantheon tooltip', + true, + ), DragonAuraInfo: new SettingStandard( 'bool', 'Tooltip', @@ -684,7 +687,7 @@ const Config = { 'bool', 'Notation', ['1 decimals', '2 decimals', '3 decimals'], - 'Set the number of decimals used when applicable', + `Set the number of decimals used when applicable. This only works with Cookie Monster scales and not with "Game's Setting Scale"`, false, function () { RefreshScale(); @@ -733,13 +736,23 @@ const Config = { WrinklerButtons: new SettingStandard( 'bool', 'Miscellaneous', - ['Extra Buttons OFF', 'Extra Buttons ON'], + ['Extra Wrinkler Buttons OFF', 'Extra Wrinkler Buttons ON'], 'Show buttons for popping wrinklers at bottom of cookie section', true, function () { ToggleWrinklerButtons(); }, ), + HideSectionsButtons: new SettingStandard( + 'bool', + 'Miscellaneous', + ['Hide Upgrades/Buildings Button OFF', 'Hide Upgrades/Buildings Button ON'], + 'Show buttons for hiding and showing the upgrades and buildings section in the right column', + true, + function () { + ToggleSectionHideButtons(); + }, + ), BulkBuyBlock: new SettingStandard( 'bool', 'Miscellaneous', diff --git a/src/Data/SettingsDefault.js b/src/Data/SettingsDefault.js index 65da2d4c..2d28d439 100644 --- a/src/Data/SettingsDefault.js +++ b/src/Data/SettingsDefault.js @@ -5,18 +5,17 @@ const ConfigDefault = { TimerBarPos: 0, TimerBarOverlay: 2, BuildColor: 1, - BulkBuildColor: 0, + PPDisplayTime: 0, UpBarColor: 1, UpgradeBarFixedPos: 1, CalcWrink: 0, CPSMode: 1, AvgCPSHist: 3, AvgClicksHist: 0, - ColorPPBulkMode: 1, PPExcludeTop: 0, PPSecondsLowerLimit: 0, PPOnlyConsiderBuyable: 0, - ToolWarnBon: 0, + ToolWarnBon: 1, Title: 1, GeneralSound: 1, GCNotification: 0, @@ -71,6 +70,7 @@ const ConfigDefault = { TooltipWrink: 1, TooltipLump: 1, TooltipPlots: 1, + TooltipPantheon: 1, DragonAuraInfo: 1, TooltipAscendButton: 1, Stats: 1, @@ -101,6 +101,7 @@ const ConfigDefault = { GCTimer: 1, Favicon: 1, WrinklerButtons: 1, + HideSectionsButtons: 0, BulkBuyBlock: 0, Header: { BarsColors: 1, diff --git a/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js b/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js index 0a7a31d6..a3764f9c 100644 --- a/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js +++ b/src/Disp/BeautifyAndFormatting/BeautifyFormatting.js @@ -1,3 +1,4 @@ +/* eslint-disable no-nested-ternary */ /** General functions to format or beautify strings */ import { CMOptions } from '../../Config/VariablesAndData'; @@ -93,23 +94,26 @@ export function Beautify(num, floats, forced) { * @returns {string} Formatted time */ export function FormatTime(time, longFormat) { + let formattedTime = time; if (time === Infinity) return time; - time = Math.ceil(time); - const y = Math.floor(time / 31557600); - const d = Math.floor((time % 31557600) / 86400); - const h = Math.floor((time % 86400) / 3600); - const m = Math.floor((time % 3600) / 60); - const s = Math.floor(time % 60); + if (time < 0) return 'Negative time period'; + formattedTime = Math.ceil(time); + const y = Math.floor(formattedTime / 31557600); + const d = Math.floor((formattedTime % 31557600) / 86400); + const h = Math.floor((formattedTime % 86400) / 3600); + const m = Math.floor((formattedTime % 3600) / 60); + const s = Math.floor(formattedTime % 60); let str = ''; if (CMOptions.TimeFormat) { - if (time > 3155760000) return 'XX:XX:XX:XX:XX'; + if (formattedTime > 3155760000) return 'XX:XX:XX:XX:XX'; str += `${(y < 10 ? '0' : '') + y}:`; str += `${(d < 10 ? '0' : '') + d}:`; str += `${(h < 10 ? '0' : '') + h}:`; str += `${(m < 10 ? '0' : '') + m}:`; str += (s < 10 ? '0' : '') + s; } else { - if (time > 777600000) return longFormat ? 'Over 9000 days!' : '>9000d'; + if (formattedTime > 777600000) + return longFormat ? 'Over 9000 days!' : '>9000d'; str += y > 0 ? `${y + (longFormat ? (y === 1 ? ' year' : ' years') : 'y')}, ` diff --git a/src/Disp/BuildingsUpgrades/Buildings.js b/src/Disp/BuildingsUpgrades/Buildings.js index 2fef533f..e6c6452d 100644 --- a/src/Disp/BuildingsUpgrades/Buildings.js +++ b/src/Disp/BuildingsUpgrades/Buildings.js @@ -1,3 +1,4 @@ +/* eslint-disable no-nested-ternary */ import { CacheObjects1, CacheObjects10, @@ -30,17 +31,17 @@ export default function UpdateBuildings() { if (Game.buyMode === 1) { if (CMOptions.BuildColor === 1) { - for (const i of Object.keys(target)) { + Object.keys(target).forEach((i) => { l(`productPrice${Game.Objects[i].id}`).style.color = CMOptions.Colors[target[i].color]; - } + }); } else { - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { l(`productPrice${Game.Objects[i].id}`).style.removeProperty('color'); - } + }); } } else if (Game.buyMode === -1) { - for (const i of Object.keys(CacheObjects1)) { + Object.keys(CacheObjects1).forEach((i) => { const o = Game.Objects[i]; l(`productPrice${o.id}`).style.color = ''; /* @@ -54,29 +55,49 @@ export default function UpdateBuildings() { l(`productPrice${o.id}`).innerHTML = Beautify( BuildingSell(o, o.basePrice, o.amount, o.free, Game.buyBulk, 1), ); - } + }); } // Build array of pointers, sort by pp, use array index (+2) as the grid row number // (grid rows are 1-based indexing, and row 1 is the bulk buy/sell options) // This regulates sorting of buildings if (Game.buyMode === 1 && CMOptions.SortBuildings) { - const arr = Object.keys(target).map((k) => { - const o = target[k]; - o.name = k; - o.id = Game.Objects[k].id; - return o; - }); + let arr; + if (CMOptions.SortBuildings === 1) { + arr = Object.keys(CacheObjects1).map((k) => { + const o = CacheObjects1[k]; + o.name = k; + o.id = Game.Objects[k].id; + return o; + }); - arr.sort(function (a, b) { - return Colors.indexOf(a.color) > Colors.indexOf(b.color) - ? 1 - : Colors.indexOf(a.color) < Colors.indexOf(b.color) - ? -1 - : a.pp < b.pp - ? -1 - : 0; - }); + arr.sort(function (a, b) { + return Colors.indexOf(a.color) > Colors.indexOf(b.color) + ? 1 + : Colors.indexOf(a.color) < Colors.indexOf(b.color) + ? -1 + : a.pp < b.pp + ? -1 + : 0; + }); + } else if (CMOptions.SortBuildings === 2) { + arr = Object.keys(target).map((k) => { + const o = target[k]; + o.name = k; + o.id = Game.Objects[k].id; + return o; + }); + + arr.sort(function (a, b) { + return Colors.indexOf(a.color) > Colors.indexOf(b.color) + ? 1 + : Colors.indexOf(a.color) < Colors.indexOf(b.color) + ? -1 + : a.pp < b.pp + ? -1 + : 0; + }); + } for (let x = 0; x < arr.length; x++) { Game.Objects[arr[x].name].l.style.gridRow = `${x + 2}/${x + 2}`; diff --git a/src/Disp/BuildingsUpgrades/Upgrades.js b/src/Disp/BuildingsUpgrades/Upgrades.js index 37792bb0..35c14227 100644 --- a/src/Disp/BuildingsUpgrades/Upgrades.js +++ b/src/Disp/BuildingsUpgrades/Upgrades.js @@ -1,3 +1,4 @@ +/* eslint-disable no-nested-ternary */ import { CacheUpgrades } from '../../Cache/VariablesAndData'; import { CMOptions } from '../../Config/VariablesAndData'; import { @@ -29,10 +30,10 @@ export default function UpdateUpgrades() { let purple = 0; let gray = 0; - for (const i of Object.keys(Game.UpgradesInStore)) { + Object.keys(Game.UpgradesInStore).forEach((i) => { const me = Game.UpgradesInStore[i]; let addedColor = false; - for (let j = 0; j < l(`upgrade${i}`).childNodes.length; j++) { + for (let j = 0; j < l(`upgrade${i}`).childNodes.length; j += 1) { if ( l(`upgrade${i}`).childNodes[j].className.indexOf(ColorBackPre) !== -1 ) { @@ -49,14 +50,14 @@ export default function UpdateUpgrades() { div.className = ColorBackPre + CacheUpgrades[me.name].color; l(`upgrade${i}`).appendChild(div); } - if (CacheUpgrades[me.name].color === ColorBlue) blue++; - else if (CacheUpgrades[me.name].color === ColorGreen) green++; - else if (CacheUpgrades[me.name].color === ColorYellow) yellow++; - else if (CacheUpgrades[me.name].color === ColorOrange) orange++; - else if (CacheUpgrades[me.name].color === ColorRed) red++; - else if (CacheUpgrades[me.name].color === ColorPurple) purple++; - else if (CacheUpgrades[me.name].color === ColorGray) gray++; - } + if (CacheUpgrades[me.name].color === ColorBlue) blue += 1; + else if (CacheUpgrades[me.name].color === ColorGreen) green += 1; + else if (CacheUpgrades[me.name].color === ColorYellow) yellow += 1; + else if (CacheUpgrades[me.name].color === ColorOrange) orange += 1; + else if (CacheUpgrades[me.name].color === ColorRed) red += 1; + else if (CacheUpgrades[me.name].color === ColorPurple) purple += 1; + else if (CacheUpgrades[me.name].color === ColorGray) gray += 1; + }); l('CMUpgradeBarBlue').textContent = blue; l('CMUpgradeBarGreen').textContent = green; @@ -70,7 +71,7 @@ export default function UpdateUpgrades() { const arr = []; // Build array of pointers, sort by pp, set flex positions // This regulates sorting of upgrades - for (let x = 0; x < Game.UpgradesInStore.length; x++) { + for (let x = 0; x < Game.UpgradesInStore.length; x += 1) { const o = {}; o.name = Game.UpgradesInStore[x].name; o.price = Game.UpgradesInStore[x].basePrice; @@ -95,7 +96,7 @@ export default function UpdateUpgrades() { const nameChecker = function (arr2, upgrade) { return arr2.findIndex((e) => e.name === upgrade.name); }; - for (let x = 0; x < Game.UpgradesInStore.length; x++) { + for (let x = 0; x < Game.UpgradesInStore.length; x += 1) { l(`upgrade${x}`).style.order = nameChecker(arr, Game.UpgradesInStore[x]) + 1; } diff --git a/src/Disp/Draw.js b/src/Disp/Draw.js index 6ae6bfad..83ef524b 100644 --- a/src/Disp/Draw.js +++ b/src/Disp/Draw.js @@ -5,7 +5,7 @@ import UpdateUpgrades from './BuildingsUpgrades/Upgrades'; import { UpdateBotBar } from './InfoBars/BottomBar'; import { UpdateTimerBar } from './InfoBars/TimerBar'; import RefreshMenu from './MenuSections/Refreshmenu'; -import { UpdateTooltips } from './Tooltips/Tooltip'; +import UpdateTooltips from './Tooltips/UpdateTooltips'; import { CheckWrinklerTooltip, UpdateWrinklerTooltip, diff --git a/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js b/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js index dc34f2c9..a15a2747 100644 --- a/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js +++ b/src/Disp/GoldenCookieTimers/GoldenCookieTimers.js @@ -1,3 +1,4 @@ +/* eslint-disable no-param-reassign */ /** Section: Functions related to the Golden Cookie Timers */ import { CMOptions } from '../../Config/VariablesAndData'; diff --git a/src/Disp/HelperFunctions/CalculateGrimoireRefillTime.js b/src/Disp/HelperFunctions/CalculateGrimoireRefillTime.js index f7598aef..ccdffd66 100644 --- a/src/Disp/HelperFunctions/CalculateGrimoireRefillTime.js +++ b/src/Disp/HelperFunctions/CalculateGrimoireRefillTime.js @@ -10,11 +10,11 @@ export default function CalculateGrimoireRefillTime( maxMagic, targetMagic, ) { + let magic = currentMagic; let count = 0; - while (currentMagic < targetMagic) { - currentMagic += - Math.max(0.002, (currentMagic / Math.max(maxMagic, 100)) ** 0.5) * 0.002; - count++; + while (magic < targetMagic) { + magic += Math.max(0.002, (magic / Math.max(maxMagic, 100)) ** 0.5) * 0.002; + count += 1; } return count / Game.fps; } diff --git a/src/Disp/HelperFunctions/PopWrinklers.js b/src/Disp/HelperFunctions/PopWrinklers.js index fb97fcf1..7fd531c6 100644 --- a/src/Disp/HelperFunctions/PopWrinklers.js +++ b/src/Disp/HelperFunctions/PopWrinklers.js @@ -3,9 +3,9 @@ * It is called by a click of the 'pop all' button created by CM.Disp.AddMenuStats() */ export default function PopAllNormalWrinklers() { - for (const i of Object.keys(Game.wrinklers)) { + Object.keys(Game.wrinklers).forEach((i) => { if (Game.wrinklers[i].sucked > 0 && Game.wrinklers[i].type === 0) { Game.wrinklers[i].hp = 0; } - } + }); } diff --git a/src/Disp/InfoBars/BottomBar.js b/src/Disp/InfoBars/BottomBar.js index 2aee5878..33ecf842 100644 --- a/src/Disp/InfoBars/BottomBar.js +++ b/src/Disp/InfoBars/BottomBar.js @@ -9,6 +9,7 @@ import { CMOptions } from '../../Config/VariablesAndData'; import { VersionMajor, VersionMinor } from '../../Data/Moddata'; import { Beautify, + FormatTime, GetTimeColor, } from '../BeautifyAndFormatting/BeautifyFormatting'; import GetCPS from '../HelperFunctions/GetCPS'; @@ -63,9 +64,9 @@ export function CreateBotBar() { l('wrapper').appendChild(BotBar); - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { CreateBotBarBuildingColumn(i); - } + }); } /** @@ -74,7 +75,7 @@ export function CreateBotBar() { export function UpdateBotBar() { if (CMOptions.BotBar === 1 && CacheObjects1 && Game.buyMode === 1) { let count = 0; - for (const i of Object.keys(CacheObjects1)) { + Object.keys(CacheObjects1).forEach((i) => { let target = Game.buyBulk; if (Game.buyMode === 1) { LastTargetBotBar = target; @@ -84,7 +85,7 @@ export function UpdateBotBar() { if (target === 1) target = CacheObjects1; if (target === 10) target = CacheObjects10; if (target === 100) target = CacheObjects100; - count++; + count += 1; l('CMBotBar').firstChild.firstChild.childNodes[0].childNodes[ count ].childNodes[1].textContent = Game.Objects[i].amount; @@ -94,9 +95,13 @@ export function UpdateBotBar() { l('CMBotBar').firstChild.firstChild.childNodes[2].childNodes[ count ].className = ColorTextPre + target[i].color; + let PPString; + if (CMOptions.PPDisplayTime) + PPString = FormatTime(Math.round(target[i].pp)); + else PPString = Beautify(Math.round(target[i].pp), 2); l('CMBotBar').firstChild.firstChild.childNodes[2].childNodes[ count - ].textContent = Beautify(target[i].pp, 2); + ].textContent = PPString; const timeColor = GetTimeColor( (Game.Objects[i].bulkPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), @@ -115,6 +120,6 @@ export function UpdateBotBar() { l('CMBotBar').firstChild.firstChild.childNodes[3].childNodes[ count ].textContent = timeColor.text; - } + }); } } diff --git a/src/Disp/InfoBars/CreateDOMElements.js b/src/Disp/InfoBars/CreateDOMElements.js index 15ced101..01fb3715 100644 --- a/src/Disp/InfoBars/CreateDOMElements.js +++ b/src/Disp/InfoBars/CreateDOMElements.js @@ -86,8 +86,12 @@ export function CreateBotBarBuildingColumn(buildingName) { span.className = ColorTextPre + ColorBlue; header.appendChild(document.createTextNode(')')); + type.lastChild.style.paddingLeft = '8px'; bonus.appendChild(document.createElement('td')); + bonus.lastChild.style.paddingLeft = '8px'; pp.appendChild(document.createElement('td')); + pp.lastChild.style.paddingLeft = '8px'; time.appendChild(document.createElement('td')); + time.lastChild.style.paddingLeft = '2px'; } } diff --git a/src/Disp/InfoBars/TimerBar.js b/src/Disp/InfoBars/TimerBar.js index fb0677c5..3c2bbb18 100644 --- a/src/Disp/InfoBars/TimerBar.js +++ b/src/Disp/InfoBars/TimerBar.js @@ -105,7 +105,7 @@ export function UpdateTimerBar() { (Game.shimmerTypes.golden.maxTime - Game.shimmerTypes.golden.time) / Game.fps, ); - numberOfTimers++; + numberOfTimers += 1; } else l('CMTimerBarGC').style.display = 'none'; // Regulates visibility of Reindeer timer @@ -152,7 +152,7 @@ export function UpdateTimerBar() { (Game.shimmerTypes.reindeer.maxTime - Game.shimmerTypes.reindeer.time) / Game.fps, ); - numberOfTimers++; + numberOfTimers += 1; } else { l('CMTimerBarRen').style.display = 'none'; } @@ -160,7 +160,7 @@ export function UpdateTimerBar() { // On every frame all buff-timers are deleted and re-created const BuffTimerBars = {}; l('CMTimerBarBuffTimers').innerHTML = ''; - for (const i of Object.keys(Game.buffs)) { + Object.keys(Game.buffs).forEach((i) => { if (Game.buffs[i]) { const timer = CreateTimer(Game.buffs[i].name, Game.buffs[i].name, [ { id: `${Game.buffs[i].name}Bar` }, @@ -187,13 +187,13 @@ export function UpdateTimerBar() { timer.lastChild.children[2].textContent = Math.ceil( Game.buffs[i].time / Game.fps, ); - numberOfTimers++; + numberOfTimers += 1; BuffTimerBars[Game.buffs[i].name] = timer; } - } - for (const i of Object.keys(BuffTimerBars)) { + }); + Object.keys(BuffTimerBars).forEach((i) => { l('CMTimerBarBuffTimers').appendChild(BuffTimerBars[i]); - } + }); if (numberOfTimers !== 0) { l('CMTimerBar').style.height = `${numberOfTimers * 12 + 2}px`; diff --git a/src/Disp/Initialization/CreateSectionHideButtons.js b/src/Disp/Initialization/CreateSectionHideButtons.js new file mode 100644 index 00000000..c4b001ec --- /dev/null +++ b/src/Disp/Initialization/CreateSectionHideButtons.js @@ -0,0 +1,38 @@ +/** + * This function creates two objects at the top of the right column that allowing hiding the upgrade and building section + */ +export default function CreateSectionHideButtons() { + const div = document.createElement('div'); + div.id = 'CMSectionHidButtons'; + div.style.textAlign = 'center'; + const a = document.createElement('a'); + a.className = 'option'; + a.onclick = function () { + if (l('upgrades').style.display === 'flex') { + l('upgrades').style.display = 'none'; + l('toggleUpgrades').style.display = 'none'; + l('techUpgrades').style.display = 'none'; + l('vaultUpgrades').style.display = 'none'; + } else { + l('upgrades').style.display = 'flex'; + if (l('toggleUpgrades').children.length !== 0) + l('toggleUpgrades').style.display = 'block'; + if (l('techUpgrades').children.length !== 0) + l('techUpgrades').style.display = 'block'; + if (l('vaultUpgrades').children.length !== 0) + l('vaultUpgrades').style.display = 'block'; + } + }; + a.textContent = 'Hide/Show Upgrades'; + div.appendChild(a); + const b = document.createElement('a'); + b.className = 'option'; + b.onclick = function () { + if (l('products').style.display === 'grid') + l('products').style.display = 'none'; + else l('products').style.display = 'grid'; + }; + b.textContent = 'Hide/Show Buildings'; + div.appendChild(b); + l('store').insertBefore(div, l('store').childNodes[2]); +} diff --git a/src/Disp/Initialization/CreateWrinklerButton.js b/src/Disp/Initialization/CreateWrinklerButton.js index 3b783b71..f4b2beb4 100644 --- a/src/Disp/Initialization/CreateWrinklerButton.js +++ b/src/Disp/Initialization/CreateWrinklerButton.js @@ -1,5 +1,6 @@ import { CacheWrinklersFattest } from '../../Cache/VariablesAndData'; import PopAllNormalWrinklers from '../HelperFunctions/PopWrinklers'; +import { CreateTooltip } from '../Tooltips/Tooltip'; /** * This function creates two objects at the bottom of the left column that allowing popping of wrinklers @@ -12,6 +13,20 @@ export default function CreateWrinklerButtons() { popAllA.onclick = function () { PopAllNormalWrinklers(); }; + popAllA.onmouseout = function () { + Game.tooltip.shouldHide = 1; + }; + popAllA.onmouseover = function () { + Game.tooltip.dynamic = 1; + Game.tooltip.draw( + this, + function () { + return CreateTooltip('wb', 'PopAll'); + }, + 'this', + ); + Game.tooltip.wobble(); + }; l('sectionLeftExtra').children[0].append(popAllA); const popFattestA = document.createElement('a'); popFattestA.id = 'PopFattestWrinklerButton'; @@ -21,5 +36,19 @@ export default function CreateWrinklerButtons() { if (CacheWrinklersFattest[1] !== null) Game.wrinklers[CacheWrinklersFattest[1]].hp = 0; }; + popFattestA.onmouseout = function () { + Game.tooltip.shouldHide = 1; + }; + popFattestA.onmouseover = function () { + Game.tooltip.dynamic = 1; + Game.tooltip.draw( + this, + function () { + return CreateTooltip('wb', 'PopFattest'); + }, + 'this', + ); + Game.tooltip.wobble(); + }; l('sectionLeftExtra').children[0].append(popFattestA); } diff --git a/src/Disp/MenuSections/AddStatsPage.js b/src/Disp/MenuSections/AddStatsPage.js index 0c7c5188..ddede578 100644 --- a/src/Disp/MenuSections/AddStatsPage.js +++ b/src/Disp/MenuSections/AddStatsPage.js @@ -8,9 +8,6 @@ import { CMOptions } from '../../Config/VariablesAndData'; import { CacheAverageClicks, - CacheCentEgg, - CacheLastChoEgg, - CacheSeaSpec, CacheWrinklersFattest, CacheWrinklersNormal, CacheWrinklersTotal, @@ -110,136 +107,7 @@ export default function AddMenuStats(title) { } } - let specDisp = false; - const missingHalloweenCookies = []; - for (const i of Object.keys(GameData.HalloCookies)) { - if (!Game.Has(GameData.HalloCookies[i])) { - missingHalloweenCookies.push(GameData.HalloCookies[i]); - specDisp = true; - } - } - const missingChristmasCookies = []; - for (const i of Object.keys(GameData.ChristCookies)) { - if (!Game.Has(GameData.ChristCookies[i])) { - missingChristmasCookies.push(GameData.ChristCookies[i]); - specDisp = true; - } - } - const missingValentineCookies = []; - for (const i of Object.keys(GameData.ValCookies)) { - if (!Game.Has(GameData.ValCookies[i])) { - missingValentineCookies.push(GameData.ValCookies[i]); - specDisp = true; - } - } - const missingNormalEggs = []; - for (const i of Object.keys(Game.eggDrops)) { - if (!Game.HasUnlocked(Game.eggDrops[i])) { - missingNormalEggs.push(Game.eggDrops[i]); - specDisp = true; - } - } - const missingRareEggs = []; - for (const i of Object.keys(Game.rareEggDrops)) { - if (!Game.HasUnlocked(Game.rareEggDrops[i])) { - missingRareEggs.push(Game.rareEggDrops[i]); - specDisp = true; - } - } - const missingPlantDrops = []; - for (const i of Object.keys(GameData.PlantDrops)) { - if (!Game.HasUnlocked(GameData.PlantDrops[i])) { - missingPlantDrops.push(GameData.PlantDrops[i]); - specDisp = true; - } - } - const choEgg = - Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg'); - const centEgg = Game.Has('Century egg'); - - if (Game.season === 'christmas' || specDisp || choEgg || centEgg) { - stats.appendChild(CreateElements.StatsHeader('Season Specials', 'Sea')); - if (CMOptions.Header.Sea) { - if (missingHalloweenCookies.length !== 0) - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Halloween Cookies Left to Buy', - CreateElements.StatsMissDisp(missingHalloweenCookies), - ), - ); - if (missingChristmasCookies.length !== 0) - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Christmas Cookies Left to Buy', - CreateElements.StatsMissDisp(missingChristmasCookies), - ), - ); - if (missingValentineCookies.length !== 0) - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Valentine Cookies Left to Buy', - CreateElements.StatsMissDisp(missingValentineCookies), - ), - ); - if (missingNormalEggs.length !== 0) - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Normal Easter Eggs Left to Unlock', - CreateElements.StatsMissDisp(missingNormalEggs), - ), - ); - if (missingRareEggs.length !== 0) - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Rare Easter Eggs Left to Unlock', - CreateElements.StatsMissDisp(missingRareEggs), - ), - ); - if (missingPlantDrops.length !== 0) - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Rare Plant Drops Left to Unlock', - CreateElements.StatsMissDisp(missingPlantDrops), - ), - ); - - if (Game.season === 'christmas') - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Reindeer Reward', - document.createTextNode(Beautify(CacheSeaSpec)), - ), - ); - if (choEgg) { - stats.appendChild( - CreateElements.StatsListing( - 'withTooltip', - 'Chocolate Egg Cookies', - document.createTextNode(Beautify(CacheLastChoEgg)), - 'ChoEggTooltipPlaceholder', - ), - ); - } - if (centEgg) { - stats.appendChild( - CreateElements.StatsListing( - 'basic', - 'Century Egg Multiplier', - document.createTextNode( - `${Math.round((CacheCentEgg - 1) * 10000) / 100}%`, - ), - ), - ); - } - } - } + stats.appendChild(CreateSections.SeasonSection()); stats.appendChild(CreateElements.StatsHeader('Miscellaneous', 'Misc')); if (CMOptions.Header.Misc) { @@ -266,11 +134,11 @@ export default function AddMenuStats(title) { ); if (Game.Has('Fortune cookies')) { const fortunes = []; - for (const i of Object.keys(GameData.Fortunes)) { + Object.keys(GameData.Fortunes).forEach((i) => { if (!Game.Has(GameData.Fortunes[i])) { fortunes.push(GameData.Fortunes[i]); } - } + }); if (fortunes.length !== 0) stats.appendChild( CreateElements.StatsListing( diff --git a/src/Disp/MenuSections/CreateDOMElements.js b/src/Disp/MenuSections/CreateDOMElements.js index 84ded84d..bafd0da9 100644 --- a/src/Disp/MenuSections/CreateDOMElements.js +++ b/src/Disp/MenuSections/CreateDOMElements.js @@ -2,7 +2,7 @@ import { ToggleHeader } from '../../Config/ToggleSetting'; import { CMOptions } from '../../Config/VariablesAndData'; -import { TooltipText } from '../VariablesAndData'; +import { SimpleTooltipElements } from '../VariablesAndData'; /** * This function creates a header-object for the stats page @@ -64,7 +64,10 @@ export function StatsListing(type, name, text, placeholder) { Game.tooltip.hide(); }; tooltip.onmouseover = function () { - Game.tooltip.draw(this, escape(TooltipText[placeholder].innerHTML)); + Game.tooltip.draw( + this, + escape(SimpleTooltipElements[placeholder].innerHTML), + ); }; tooltip.style.cursor = 'default'; tooltip.style.display = 'inline-block'; @@ -106,12 +109,12 @@ export function StatsMissDisp(theMissDisp) { title.style.textAlign = 'center'; title.textContent = 'Missing'; missing.appendChild(title); - for (const i of Object.keys(theMissDisp)) { + Object.keys(theMissDisp).forEach((i) => { const div = document.createElement('div'); div.style.textAlign = 'center'; div.appendChild(document.createTextNode(theMissDisp[i])); missing.appendChild(div); - } + }); placeholder.appendChild(missing); span.onmouseover = function () { Game.tooltip.draw(this, escape(placeholder.innerHTML)); diff --git a/src/Disp/MenuSections/CreateMissingUpgrades.js b/src/Disp/MenuSections/CreateMissingUpgrades.js index bdd0d453..ad8785c6 100644 --- a/src/Disp/MenuSections/CreateMissingUpgrades.js +++ b/src/Disp/MenuSections/CreateMissingUpgrades.js @@ -10,7 +10,7 @@ import { * This function creates the missing upgrades sections for prestige, normal and cookie upgrades */ export function AddMissingUpgrades() { - for (const menuSection of l('menu').children) { + l('menu').childNodes.forEach((menuSection) => { if (menuSection.children[0]) { if ( menuSection.children[0].innerHTML === 'Prestige' && @@ -82,7 +82,7 @@ export function AddMissingUpgrades() { } } } - } + }); } /** @@ -99,7 +99,7 @@ export function crateMissing(me) { if (!Game.prefs.crates) noFrame = 1; if (noFrame) classes += ' noFrame'; - let icon = me.icon; + let { icon } = me; if (me.iconFunction) icon = me.iconFunction(); const tooltip = `function() {return Game.crateTooltip(Game.UpgradesById[${me.id}], 'stats');}`; return `
{ + if (!Game.Has(GameData.HalloCookies[i])) { + missingHalloweenCookies.push(GameData.HalloCookies[i]); + specDisp = true; + } + }); + const missingChristmasCookies = []; + Object.keys(GameData.ChristCookies).forEach((i) => { + if (!Game.Has(GameData.ChristCookies[i])) { + missingChristmasCookies.push(GameData.ChristCookies[i]); + specDisp = true; + } + }); + const missingValentineCookies = []; + Object.keys(GameData.ValCookies).forEach((i) => { + if (!Game.Has(GameData.ValCookies[i])) { + missingValentineCookies.push(GameData.ValCookies[i]); + specDisp = true; + } + }); + const missingNormalEggs = []; + Object.keys(Game.eggDrops).forEach((i) => { + if (!Game.HasUnlocked(Game.eggDrops[i])) { + missingNormalEggs.push(Game.eggDrops[i]); + specDisp = true; + } + }); + const missingRareEggs = []; + Object.keys(Game.rareEggDrops).forEach((i) => { + if (!Game.HasUnlocked(Game.rareEggDrops[i])) { + missingRareEggs.push(Game.rareEggDrops[i]); + specDisp = true; + } + }); + const missingPlantDrops = []; + Object.keys(GameData.PlantDrops).forEach((i) => { + if (!Game.HasUnlocked(GameData.PlantDrops[i])) { + missingPlantDrops.push(GameData.PlantDrops[i]); + specDisp = true; + } + }); + const choEgg = + Game.HasUnlocked('Chocolate egg') && !Game.Has('Chocolate egg'); + const centEgg = Game.Has('Century egg'); + + if (Game.season === 'christmas' || specDisp || choEgg || centEgg) { + section.appendChild(StatsHeader('Season Specials', 'Sea')); + if (CMOptions.Header.Sea) { + if (missingHalloweenCookies.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Halloween cookies left to buy', + StatsMissDisp(missingHalloweenCookies), + ), + ); + let failRateHalloween = 0.95; + if (Game.HasAchiev('Spooky cookies')) failRateHalloween = 0.8; + if (Game.Has('Starterror')) failRateHalloween *= 0.9; + failRateHalloween *= 1 / Game.dropRateMult(); + if (Game.hasGod) { + const godLvl = Game.hasGod('seasons'); + if (godLvl === 1) failRateHalloween *= 0.9; + else if (godLvl === 2) failRateHalloween *= 0.95; + else if (godLvl === 3) failRateHalloween *= 0.97; + } + section.appendChild( + StatsListing( + 'basic', + 'Chance of receiving a cookie from wrinkler/shiny wrinkler', + document.createTextNode( + `${Beautify((1 - failRateHalloween) * 100)}% / ${Beautify( + (1 - failRateHalloween * 0.9) * 100, + )}%`, + ), + ), + ); + } + if (missingChristmasCookies.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Christmas cookies left to buy', + StatsMissDisp(missingChristmasCookies), + ), + ); + let failRateChristmas = 0.8; + if (Game.HasAchiev('Let it snow')) failRateChristmas = 0.6; + failRateChristmas *= 1 / Game.dropRateMult(); + if (Game.Has('Starsnow')) failRateChristmas *= 0.95; + if (Game.hasGod) { + const godLvl = Game.hasGod('seasons'); + if (godLvl === 1) failRateChristmas *= 0.9; + else if (godLvl === 2) failRateChristmas *= 0.95; + else if (godLvl === 3) failRateChristmas *= 0.97; + } + section.appendChild( + StatsListing( + 'basic', + 'Chance of receiving a cookie from reindeer', + document.createTextNode( + `${Beautify((1 - failRateChristmas) * 100)}%`, + ), + ), + ); + } + if (missingValentineCookies.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Valentine cookies left to buy', + StatsMissDisp(missingValentineCookies), + ), + ); + } + const dropRateEgg = function (StartingFailRate) { + let failRateEgg = StartingFailRate * (1 / Game.dropRateMult()); + if (Game.HasAchiev('Hide & seek champion')) failRateEgg *= 0.7; + if (Game.Has('Omelette')) failRateEgg *= 0.9; + if (Game.Has('Starspawn')) failRateEgg *= 0.9; + if (Game.hasGod) { + const godLvl = Game.hasGod('seasons'); + if (godLvl === 1) failRateEgg *= 0.9; + else if (godLvl === 2) failRateEgg *= 0.95; + else if (godLvl === 3) failRateEgg *= 0.97; + } + // Calculations courtesy of @svschouw, at https://github.com/Aktanusa/CookieMonster/issues/25 + const succesRateEgg = 1 - failRateEgg; + const obtainedEggs = Game.eggDrops.length - missingNormalEggs.length; + const obtainedRareEggs = + Game.rareEggDrops.length - missingRareEggs.length; + const pNormal1 = + succesRateEgg * 0.9 * (1 - obtainedEggs / Game.eggDrops.length); + const pRare1 = + succesRateEgg * + 0.1 * + (1 - obtainedRareEggs / Game.rareEggDrops.length); + const pRedropNormal = + succesRateEgg * 0.9 * (obtainedEggs / Game.eggDrops.length); + const pRedropRare = + succesRateEgg * 0.1 * (obtainedRareEggs / Game.rareEggDrops.length); + const pRedrop = pRedropNormal + pRedropRare; + const pNormal2 = + pRedrop * 0.9 * (1 - obtainedEggs / Game.eggDrops.length); + const pRare2 = + pRedrop * 0.1 * (1 - obtainedRareEggs / Game.rareEggDrops.length); + return [pNormal1 + pNormal2, pRare1 + pRare2]; + }; + if (missingNormalEggs.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Normal easter eggs left to unlock', + StatsMissDisp(missingNormalEggs), + ), + ); + section.appendChild( + StatsListing( + 'basic', + 'Chance of receiving an egg from wrinkler/golden cookie', + document.createTextNode( + `${Beautify(dropRateEgg(0.98)[0] * 100)}% / ${Beautify( + dropRateEgg(0.9)[0] * 100, + )}%`, + ), + ), + ); + } + if (missingRareEggs.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Rare easter eggs left to unlock', + StatsMissDisp(missingRareEggs), + ), + ); + section.appendChild( + StatsListing( + 'basic', + 'Chance of receiving a rare egg from wrinkler/golden cookie', + document.createTextNode( + `${Beautify(dropRateEgg(0.98)[1] * 100)}% / ${Beautify( + dropRateEgg(0.9)[1] * 100, + )}%`, + ), + ), + ); + } + if (missingPlantDrops.length !== 0) { + section.appendChild( + StatsListing( + 'basic', + 'Rare plant drops left to unlock', + StatsMissDisp(missingPlantDrops), + ), + ); + } + + if (Game.season === 'christmas') + section.appendChild( + StatsListing( + 'basic', + 'Reindeer reward', + document.createTextNode(Beautify(CacheSeaSpec)), + ), + ); + if (choEgg) { + section.appendChild( + StatsListing( + 'withTooltip', + 'Chocolate egg cookies', + document.createTextNode(Beautify(CacheLastChoEgg)), + 'ChoEggTooltipPlaceholder', + ), + ); + } + if (centEgg) { + section.appendChild( + StatsListing( + 'basic', + 'Century egg multiplier', + document.createTextNode( + `${Math.round((CacheCentEgg - 1) * 10000) / 100}%`, + ), + ), + ); + } + } + } + return section; +} diff --git a/src/Disp/MenuSections/SettingsPage.js b/src/Disp/MenuSections/SettingsPage.js index 669b0c99..4807ae6b 100644 --- a/src/Disp/MenuSections/SettingsPage.js +++ b/src/Disp/MenuSections/SettingsPage.js @@ -20,6 +20,7 @@ import Config from '../../Data/SettingsData'; import ConfigDefault from '../../Data/SettingsDefault'; import RefreshScale from '../HelperFunctions/RefreshScale'; import UpdateColors from '../HelperFunctions/UpdateColors'; +import PlaySound from '../Notifications/Sound'; import { Colors } from '../VariablesAndData'; /** @@ -110,6 +111,18 @@ function CreatePrefOption(config) { }; volume.appendChild(slider); div.appendChild(volume); + const a = document.createElement('a'); + a.className = 'option'; + a.onclick = function () { + PlaySound( + CMOptions[config.replace('Volume', 'SoundURL')], + config.replace('Volume', 'Sound'), + config, + true, + ); + }; + a.textContent = 'Test sound'; + div.appendChild(a); return div; } if (Config[config].type === 'url') { @@ -170,6 +183,7 @@ function CreatePrefOption(config) { SaveConfig(); Game.UpdateMenu(); }; + // eslint-disable-next-line no-new new JsColor(input, { hash: true, position: 'right', onInput: change }); const label = document.createElement('label'); label.textContent = Config.Colors.desc[Colors[i]]; @@ -216,14 +230,14 @@ export default function AddMenuPref(title) { const frag = document.createDocumentFragment(); frag.appendChild(title); - for (const group of Object.keys(ConfigGroups)) { + Object.keys(ConfigGroups).forEach((group) => { const groupObject = CreatePrefHeader(group, ConfigGroups[group]); // (group, display-name of group) frag.appendChild(groupObject); if (CMOptions.Header[group]) { // 0 is show, 1 is collapsed // Make sub-sections of Notification section if (group === 'Notification') { - for (const subGroup of Object.keys(ConfigGroupsNotification)) { + Object.keys(ConfigGroupsNotification).forEach((subGroup) => { const subGroupObject = CreatePrefHeader( subGroup, ConfigGroupsNotification[subGroup], @@ -232,20 +246,20 @@ export default function AddMenuPref(title) { subGroupObject.style.opacity = '0.5'; frag.appendChild(subGroupObject); if (CMOptions.Header[subGroup]) { - for (const option in Config) { + Object.keys(Config).forEach((option) => { if (Config[option].group === subGroup) frag.appendChild(CreatePrefOption(option)); - } + }); } - } + }); } else { - for (const option of Object.keys(Config)) { + Object.keys(Config).forEach((option) => { if (Config[option].group === group) frag.appendChild(CreatePrefOption(option)); - } + }); } } - } + }); const resDef = document.createElement('div'); resDef.className = 'listing'; diff --git a/src/Disp/Notifications/Notification.js b/src/Disp/Notifications/Notification.js index 7f64697b..006889bc 100644 --- a/src/Disp/Notifications/Notification.js +++ b/src/Disp/Notifications/Notification.js @@ -10,7 +10,7 @@ import { isInitializing } from '../../InitSaveLoad/Variables'; * @param {string} title The title of the to-be created notifications * @param {string} message The text of the to-be created notifications */ -export default function Notification(notifyConfig, title, message) { +export default function CreateNotification(notifyConfig, title, message) { // The arguments check makes the sound not play upon initialization of the mod if ( CMOptions[notifyConfig] === 1 && @@ -18,6 +18,7 @@ export default function Notification(notifyConfig, title, message) { isInitializing === false ) { const CookieIcon = 'https://orteil.dashnet.org/cookieclicker/favicon.ico'; + // eslint-disable-next-line no-new new Notification(title, { body: message, badge: CookieIcon }); } } diff --git a/src/Disp/Notifications/Sound.js b/src/Disp/Notifications/Sound.js index e4063925..c76df66e 100644 --- a/src/Disp/Notifications/Sound.js +++ b/src/Disp/Notifications/Sound.js @@ -7,12 +7,13 @@ import { isInitializing } from '../../InitSaveLoad/Variables'; * @param {variable} url A variable that gives the url for the sound (e.g., CM.Options.GCSoundURL) * @param {string} sndConfig The setting in CM.Options that is checked before creating the sound * @param {string} volConfig The setting in CM.Options that is checked to determine volume + * @param {bool} forced Whether the sound should play regardless of settings, used to test the sound */ -export default function PlaySound(url, sndConfig, volConfig) { +export default function PlaySound(url, sndConfig, volConfig, forced) { // The arguments check makes the sound not play upon initialization of the mod - if (CMOptions[sndConfig] === 1 && isInitializing === false) { + if ((CMOptions[sndConfig] === 1 || forced) && isInitializing === false) { // eslint-disable-next-line new-cap - const sound = new realAudio(url); + const sound = new Audio(url); if (CMOptions.GeneralSound) sound.volume = (CMOptions[volConfig] / 100) * (Game.volume / 100); else sound.volume = CMOptions[volConfig] / 100; diff --git a/src/Disp/Tooltips/CreateTooltip.js b/src/Disp/Tooltips/CreateTooltip.js index cb18d6a4..609913d7 100644 --- a/src/Disp/Tooltips/CreateTooltip.js +++ b/src/Disp/Tooltips/CreateTooltip.js @@ -1,3 +1,4 @@ +/* eslint-disable no-param-reassign */ import { CMOptions } from '../../Config/VariablesAndData'; import { ColorTextPre, diff --git a/src/Disp/Tooltips/Tooltip.js b/src/Disp/Tooltips/Tooltip.js index cd044da0..a7edcaa9 100644 --- a/src/Disp/Tooltips/Tooltip.js +++ b/src/Disp/Tooltips/Tooltip.js @@ -1,12 +1,16 @@ /* eslint-disable no-unused-vars */ -import * as UpdateTooltip from './UpdateTooltips'; +import UpdateTooltips, * as UpdateTooltip from './UpdateTooltips'; import { TooltipCreateTooltipBox } from './CreateTooltip'; import { Beautify, GetTimeColor, } from '../BeautifyAndFormatting/BeautifyFormatting'; import CopyData from '../../Sim/SimulationData/CopyData'; -import { TooltipName, TooltipType } from '../VariablesAndData'; +import { + SimpleTooltipElements, + TooltipName, + TooltipType, +} from '../VariablesAndData'; import { CMOptions } from '../../Config/VariablesAndData'; import BuildingGetPrice from '../../Sim/SimulationEvents/BuyBuilding'; @@ -30,38 +34,7 @@ export function CreateSimpleTooltip(placeholder, text, minWidth) { div.textContent = text; desc.appendChild(div); Tooltip.appendChild(desc); -} - -/** - * This function updates the sections of the tooltips created by CookieMonster - */ -export function UpdateTooltips() { - CopyData(); - if (l('tooltipAnchor').style.display !== 'none' && l('CMTooltipArea')) { - l('CMTooltipArea').innerHTML = ''; - const tooltipBox = TooltipCreateTooltipBox(); - l('CMTooltipArea').appendChild(tooltipBox); - - if (TooltipType === 'b') { - UpdateTooltip.Building(); - } else if (TooltipType === 'u') { - UpdateTooltip.Upgrade(); - } else if (TooltipType === 's') { - UpdateTooltip.SugarLump(); - } else if (TooltipType === 'g') { - UpdateTooltip.Grimoire(); - } else if (TooltipType === 'p') { - UpdateTooltip.GardenPlots(); - } else if (TooltipType === 'ha') { - UpdateTooltip.HarvestAll(); - } - UpdateTooltip.Warnings(); - } else if (l('CMTooltipArea') === null) { - // Remove warnings if its a basic tooltip - if (l('CMDispTooltipWarningParent') !== null) { - l('CMDispTooltipWarningParent').remove(); - } - } + SimpleTooltipElements[placeholder] = Tooltip; } /** @@ -141,9 +114,16 @@ export function CreateTooltip(type, name) { name[0], name[1], )(); - // Garden plots + // Harvest all button in garden else if (type === 'ha') - l('tooltip').innerHTML = Game.ObjectsById[2].minigame.toolTooltip(1)(); // Harvest all button in garden + l('tooltip').innerHTML = Game.ObjectsById[2].minigame.toolTooltip(1)(); + else if (type === 'wb') l('tooltip').innerHTML = ''; + else if (type === 'pag') + l('tooltip').innerHTML = Game.Objects.Temple.minigame.godTooltip(name)(); + else if (type === 'pas') + l('tooltip').innerHTML = Game.Objects.Temple.minigame.slotTooltip( + name[0], + )(); // Adds area for extra tooltip-sections if ( @@ -152,7 +132,10 @@ export function CreateTooltip(type, name) { type === 's' || type === 'g' || (type === 'p' && !Game.keys[16]) || - type === 'ha' + type === 'ha' || + type === 'wb' || + type === 'pag' || + (type === 'pas' && name[1] !== -1) ) { const area = document.createElement('div'); area.id = 'CMTooltipArea'; diff --git a/src/Disp/Tooltips/TypesOfTooltips/Building.js b/src/Disp/Tooltips/TypesOfTooltips/Building.js new file mode 100644 index 00000000..48e626b7 --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/Building.js @@ -0,0 +1,99 @@ +/* eslint-disable no-restricted-syntax */ +import { + CacheObjects1, + CacheObjects10, + CacheObjects100, +} from '../../../Cache/VariablesAndData'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { SimObjects } from '../../../Sim/VariablesAndData'; +import { + Beautify, + FormatTime, + GetTimeColor, +} from '../../BeautifyAndFormatting/BeautifyFormatting'; +import GetCPS from '../../HelperFunctions/GetCPS'; +import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; +import { + ColorTextPre, + LastTargetTooltipBuilding, + TooltipBonusIncome, + TooltipName, + TooltipPrice, +} from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the Building tooltips + */ +export default function Building() { + if (CMOptions.TooltipBuildUpgrade === 1 && Game.buyMode === 1) { + const tooltipBox = l('CMTooltipBorder'); + Create.TooltipCreateCalculationSection(tooltipBox); + + let target; + if (Game.buyMode === 1) { + LastTargetTooltipBuilding = target; + } else { + target = LastTargetTooltipBuilding; + } + if (Game.buyBulk === 1) target = CacheObjects1; + else if (Game.buyBulk === 10) target = CacheObjects10; + else if (Game.buyBulk === 100) target = CacheObjects100; + + TooltipPrice = Game.Objects[TooltipName].bulkPrice; + TooltipBonusIncome = target[TooltipName].bonus; + + if (CMOptions.TooltipBuildUpgrade === 1 && Game.buyMode === 1) { + l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2); + const increase = Math.round( + (TooltipBonusIncome / Game.cookiesPs) * 10000, + ); + if (Number.isFinite(increase) && increase !== 0) { + l('CMTooltipIncome').textContent += ` (${increase / 100}% of income)`; + } else { + l('CMTooltipIncome').textContent += ` (<0${ + CMOptions.ScaleSeparator ? ',' : '.' + }01% of income)`; + } + l('CMTooltipBorder').className = ColorTextPre + target[TooltipName].color; + if (CMOptions.PPDisplayTime) + l('CMTooltipPP').textContent = FormatTime(target[TooltipName].pp); + else l('CMTooltipPP').textContent = Beautify(target[TooltipName].pp, 2); + l('CMTooltipPP').className = ColorTextPre + target[TooltipName].color; + const timeColor = GetTimeColor( + (TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), + ); + l('CMTooltipTime').textContent = timeColor.text; + if ( + timeColor.text === 'Done!' && + Game.cookies < target[TooltipName].price + ) { + l('CMTooltipTime').textContent = `${timeColor.text} (with Wrink)`; + } else l('CMTooltipTime').textContent = timeColor.text; + l('CMTooltipTime').className = ColorTextPre + timeColor.color; + } + + // Add "production left till next achievement"-bar + l('CMTooltipProductionHeader').style.display = 'none'; + l('CMTooltipTime').style.marginBottom = '0px'; + for (const i of Object.keys(Game.Objects[TooltipName].productionAchievs)) { + if ( + !Game.HasAchiev( + Game.Objects[TooltipName].productionAchievs[i].achiev.name, + ) + ) { + const nextProductionAchiev = + Game.Objects[TooltipName].productionAchievs[i]; + l('CMTooltipTime').style.marginBottom = '4px'; + l('CMTooltipProductionHeader').style.display = ''; + l('CMTooltipProduction').className = `ProdAchievement${TooltipName}`; + l('CMTooltipProduction').textContent = Beautify( + nextProductionAchiev.pow - SimObjects[TooltipName].totalCookies, + 15, + ); + l('CMTooltipProduction').style.color = 'white'; + break; + } + } + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js b/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js new file mode 100644 index 00000000..c262ded8 --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js @@ -0,0 +1,55 @@ +import { CMOptions } from '../../../Config/VariablesAndData'; +import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting'; +import { TooltipName } from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the Garden plots tooltips + * It adds to the additional information to l('CMTooltipArea') + */ +export default function GardenPlots() { + const { minigame } = Game.Objects.Farm; + if ( + CMOptions.TooltipPlots && + minigame.plot[TooltipName[1]][TooltipName[0]][0] !== 0 + ) { + const mature = + minigame.plot[TooltipName[1]][TooltipName[0]][1] > + minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1] + .matureBase; + const plantName = + minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1] + .name; + l('CMTooltipBorder').appendChild( + Create.TooltipCreateHeader('Reward (Current / Maximum)'), + ); + const reward = document.createElement('div'); + reward.id = 'CMTooltipPlantReward'; + l('CMTooltipBorder').appendChild(reward); + if (plantName === 'Bakeberry') { + l('CMTooltipPlantReward').textContent = `${ + mature + ? Beautify(Math.min(Game.cookies * 0.03, Game.cookiesPs * 60 * 30)) + : '0' + } / ${Beautify(Game.cookiesPs * 60 * 30)}`; + } else if (plantName === 'Chocoroot' || plantName === 'White chocoroot') { + l('CMTooltipPlantReward').textContent = `${ + mature + ? Beautify(Math.min(Game.cookies * 0.03, Game.cookiesPs * 60 * 3)) + : '0' + } / ${Beautify(Game.cookiesPs * 60 * 3)}`; + } else if (plantName === 'Queenbeet') { + l('CMTooltipPlantReward').textContent = `${ + mature + ? Beautify(Math.min(Game.cookies * 0.04, Game.cookiesPs * 60 * 60)) + : '0' + } / ${Beautify(Game.cookiesPs * 60 * 60)}`; + } else if (plantName === 'Duketater') { + l('CMTooltipPlantReward').textContent = `${ + mature + ? Beautify(Math.min(Game.cookies * 0.08, Game.cookiesPs * 60 * 120)) + : '0' + } / ${Beautify(Game.cookiesPs * 60 * 120)}`; + } else l('CMTooltipArea').style.display = 'none'; + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js b/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js new file mode 100644 index 00000000..f2718520 --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/Grimoire.js @@ -0,0 +1,80 @@ +import { CacheNoGoldSwitchCookiesPS } from '../../../Cache/VariablesAndData'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { + Beautify, + GetTimeColor, +} from '../../BeautifyAndFormatting/BeautifyFormatting'; +import CalculateGrimoireRefillTime from '../../HelperFunctions/CalculateGrimoireRefillTime'; +import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; +import { ColorTextPre, TooltipName } from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the Grimoire tooltips + * It adds to the additional information to l('CMTooltipArea') + */ +export default function Grimoire() { + const { minigame } = Game.Objects['Wizard tower']; + const spellCost = minigame.getSpellCost(minigame.spellsById[TooltipName]); + + if (CMOptions.TooltipGrim === 1 && spellCost <= minigame.magicM) { + const tooltipBox = l('CMTooltipBorder'); + + // Time left till enough magic for spell + tooltipBox.appendChild(Create.TooltipCreateHeader('Time Left')); + const time = document.createElement('div'); + time.id = 'CMTooltipTime'; + tooltipBox.appendChild(time); + const timeColor = GetTimeColor( + CalculateGrimoireRefillTime(minigame.magic, minigame.magicM, spellCost), + ); + time.textContent = timeColor.text; + time.className = ColorTextPre + timeColor.color; + + // Time left untill magic spent is recovered + if (spellCost <= minigame.magic) { + tooltipBox.appendChild(Create.TooltipCreateHeader('Recover Time')); + const recover = document.createElement('div'); + recover.id = 'CMTooltipRecover'; + tooltipBox.appendChild(recover); + const recoverColor = GetTimeColor( + CalculateGrimoireRefillTime( + Math.max(0, minigame.magic - spellCost), + minigame.magicM, + minigame.magic, + ), + ); + recover.textContent = recoverColor.text; + recover.className = ColorTextPre + recoverColor.color; + } + + // Extra information on cookies gained when spell is Conjure Baked Goods (Name === 0) + if (TooltipName === '0') { + tooltipBox.appendChild( + Create.TooltipCreateHeader('Cookies to be gained/lost'), + ); + const conjure = document.createElement('div'); + conjure.id = 'x'; + tooltipBox.appendChild(conjure); + const reward = document.createElement('span'); + reward.style.color = '#33FF00'; + reward.textContent = Beautify( + Math.min( + (Game.cookies + GetWrinkConfigBank()) * 0.15, + CacheNoGoldSwitchCookiesPS * 60 * 30, + ), + 2, + ); + conjure.appendChild(reward); + const seperator = document.createElement('span'); + seperator.textContent = ' / '; + conjure.appendChild(seperator); + const loss = document.createElement('span'); + loss.style.color = 'red'; + loss.textContent = Beautify(CacheNoGoldSwitchCookiesPS * 60 * 15, 2); + conjure.appendChild(loss); + } + + l('CMTooltipArea').appendChild(tooltipBox); + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/HarvestAll.js b/src/Disp/Tooltips/TypesOfTooltips/HarvestAll.js new file mode 100644 index 00000000..b116ddb0 --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/HarvestAll.js @@ -0,0 +1,57 @@ +import { CMOptions } from '../../../Config/VariablesAndData'; +import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the Garden Harvest All tooltip + * It is called when the Harvest All tooltip is created or refreshed by CM.Disp.UpdateTooltip() + * It adds to the additional information to l('CMTooltipArea') + */ +export default function HarvestAll() { + const { minigame } = Game.Objects.Farm; + if (CMOptions.TooltipLump) { + l('CMTooltipBorder').appendChild( + Create.TooltipCreateHeader('Cookies gained from harvesting:'), + ); + let totalGain = 0; + let mortal = 0; + if (Game.keys[16] && Game.keys[17]) mortal = 1; + for (let y = 0; y < 6; y++) { + for (let x = 0; x < 6; x++) { + if (minigame.plot[y][x][0] >= 1) { + const tile = minigame.plot[y][x]; + const me = minigame.plantsById[tile[0] - 1]; + const plantName = me.name; + + let count = true; + if (mortal && me.immortal) count = false; + if (tile[1] < me.matureBase) count = false; + if (count && plantName === 'Bakeberry') { + totalGain += Math.min( + Game.cookies * 0.03, + Game.cookiesPs * 60 * 30, + ); + } else if ( + (count && plantName === 'Chocoroot') || + plantName === 'White chocoroot' + ) { + totalGain += Math.min(Game.cookies * 0.03, Game.cookiesPs * 60 * 3); + } else if (count && plantName === 'Queenbeet') { + totalGain += Math.min( + Game.cookies * 0.04, + Game.cookiesPs * 60 * 60, + ); + } else if (count && plantName === 'Duketater') { + totalGain += Math.min( + Game.cookies * 0.08, + Game.cookiesPs * 60 * 120, + ); + } + } + } + } + l('CMTooltipBorder').appendChild( + document.createTextNode(Beautify(totalGain)), + ); + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/PantheonGods.js b/src/Disp/Tooltips/TypesOfTooltips/PantheonGods.js new file mode 100644 index 00000000..aace50a1 --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/PantheonGods.js @@ -0,0 +1,76 @@ +import { CacheGods } from '../../../Cache/VariablesAndData'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { Beautify } from '../../BeautifyAndFormatting/BeautifyFormatting'; +import { TooltipName, TooltipType } from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the Pantheon Gods tooltip + * It is called when the Harvest All tooltip is created or refreshed by CM.Disp.UpdateTooltip() + * It adds to the additional information to l('CMTooltipArea') + */ +export default function PantheonGods() { + if (CMOptions.TooltipPantheon === 1) { + const tooltipBox = l('CMTooltipBorder'); + let GodID; + if (TooltipType === 'pas') GodID = TooltipName[1]; + else GodID = TooltipName; + + // Time left till enough magic for spell + tooltipBox.appendChild(Create.TooltipCreateHeader('Effect in position 1:')); + const cps1 = document.createElement('div'); + cps1.id = 'CMPantheonTooltipPosition1'; + if (CacheGods[GodID][0] !== 0) { + cps1.textContent = Beautify(CacheGods[GodID][0]); + const increase = Math.round( + (CacheGods[GodID][0] / Game.cookiesPs) * 10000, + ); + if (Number.isFinite(increase) && increase !== 0) { + cps1.textContent += ` (${increase / 100}% of income)`; + } else { + cps1.textContent += ` (<0${ + CMOptions.ScaleSeparator ? ',' : '.' + }01% of income)`; + } + } else cps1.textContent = 'No effect to CPS'; + tooltipBox.appendChild(cps1); + + tooltipBox.appendChild(Create.TooltipCreateHeader('Effect in position 2:')); + const cps2 = document.createElement('div'); + cps2.id = 'CMPantheonTooltipPosition2'; + if (CacheGods[GodID][1] !== 0) { + cps2.textContent = Beautify(CacheGods[GodID][1]); + const increase = Math.round( + (CacheGods[GodID][1] / Game.cookiesPs) * 10000, + ); + if (Number.isFinite(increase) && increase !== 0) { + cps2.textContent += ` (${increase / 100}% of income)`; + } else { + cps2.textContent += ` (<0${ + CMOptions.ScaleSeparator ? ',' : '.' + }01% of income)`; + } + } else cps2.textContent = 'No effect to CPS'; + tooltipBox.appendChild(cps2); + + tooltipBox.appendChild(Create.TooltipCreateHeader('Effect in position 3:')); + const cps3 = document.createElement('div'); + cps3.id = 'CMPantheonTooltipPosition2'; + if (CacheGods[GodID][2] !== 0) { + cps3.textContent = Beautify(CacheGods[GodID][2]); + const increase = Math.round( + (CacheGods[GodID][2] / Game.cookiesPs) * 10000, + ); + if (Number.isFinite(increase) && increase !== 0) { + cps3.textContent += ` (${increase / 100}% of income)`; + } else { + cps3.textContent += ` (<0${ + CMOptions.ScaleSeparator ? ',' : '.' + }01% of income)`; + } + } else cps3.textContent = 'No effect to CPS'; + tooltipBox.appendChild(cps3); + + l('CMTooltipArea').appendChild(tooltipBox); + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js b/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js new file mode 100644 index 00000000..405bb394 --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/SugarLump.js @@ -0,0 +1,22 @@ +import { CMOptions } from '../../../Config/VariablesAndData'; +import GetLumpColor from '../../HelperFunctions/GetLumpColor'; +import { ColorTextPre } from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; +/** + * This function adds extra info to the Sugar Lump tooltip + * It adds to the additional information to l('CMTooltipArea') + */ +export default function SugarLump() { + if (CMOptions.TooltipLump === 1) { + const tooltipBox = l('CMTooltipBorder'); + + tooltipBox.appendChild(Create.TooltipCreateHeader('Current Sugar Lump')); + + const lumpType = document.createElement('div'); + lumpType.id = 'CMTooltipTime'; + tooltipBox.appendChild(lumpType); + const lumpColor = GetLumpColor(Game.lumpCurrentType); + lumpType.textContent = lumpColor.text; + lumpType.className = ColorTextPre + lumpColor.color; + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js b/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js new file mode 100644 index 00000000..e33feeaa --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/Upgrade.js @@ -0,0 +1,114 @@ +import { + CacheLastChoEgg, + CacheUpgrades, +} from '../../../Cache/VariablesAndData'; +import { CMOptions } from '../../../Config/VariablesAndData'; +import { + Beautify, + FormatTime, + GetTimeColor, +} from '../../BeautifyAndFormatting/BeautifyFormatting'; +import GetCPS from '../../HelperFunctions/GetCPS'; +import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; +import { + ColorTextPre, + TooltipBonusIncome, + TooltipBonusMouse, + TooltipName, + TooltipPrice, + TooltipType, +} from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the Upgrade tooltips + */ +export default function Upgrade() { + const tooltipBox = l('CMTooltipBorder'); + Create.TooltipCreateCalculationSection(tooltipBox); + + TooltipBonusIncome = + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].bonus; + TooltipPrice = Game.Upgrades[ + Game.UpgradesInStore[TooltipName].name + ].getPrice(); + TooltipBonusMouse = + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].bonusMouse; + + if (CMOptions.TooltipBuildUpgrade === 1) { + l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2); + const increase = Math.round((TooltipBonusIncome / Game.cookiesPs) * 10000); + // Don't display certain parts of tooltip if not applicable + if ( + l('CMTooltipIncome').textContent === '0' && + (TooltipType === 'b' || TooltipType === 'u') + ) { + l('Bonus IncomeTitle').style.display = 'none'; + l('CMTooltipIncome').style.display = 'none'; + l('Payback PeriodTitle').style.display = 'none'; + l('CMTooltipPP').style.display = 'none'; + } else { + if (Number.isFinite(increase) && increase !== 0) { + l('CMTooltipIncome').textContent += ` (${increase / 100}% of income)`; + } else { + l('CMTooltipIncome').textContent += ` (<0${ + CMOptions.ScaleSeparator ? ',' : '.' + }01% of income)`; + } + l('CMTooltipBorder').className = + ColorTextPre + + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color; + // If clicking power upgrade + if (TooltipBonusMouse) { + l('CMTooltipCookiePerClick').textContent = Beautify(TooltipBonusMouse); + l('CMTooltipCookiePerClick').style.display = 'block'; + l('CMTooltipCookiePerClick').previousSibling.style.display = 'block'; + } + // If only a clicking power upgrade change PP to click-based period + if (TooltipBonusIncome === 0 && TooltipBonusMouse) { + l('CMTooltipPP').textContent = `${Beautify( + TooltipPrice / TooltipBonusMouse, + )} Clicks`; + l('CMTooltipPP').style.color = 'white'; + } else { + if (CMOptions.PPDisplayTime) + l('CMTooltipPP').textContent = FormatTime( + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].pp, + ); + else + l('CMTooltipPP').textContent = Beautify( + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].pp, + 2, + ); + l('CMTooltipPP').className = + ColorTextPre + + CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color; + } + } + const timeColor = GetTimeColor( + (TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), + ); + l('CMTooltipTime').textContent = timeColor.text; + if ( + timeColor.text === 'Done!' && + Game.cookies < Game.UpgradesInStore[TooltipName].getPrice() + ) { + l('CMTooltipTime').textContent = `${timeColor.text} (with Wrink)`; + } else l('CMTooltipTime').textContent = timeColor.text; + l('CMTooltipTime').className = ColorTextPre + timeColor.color; + + // Add extra info to Chocolate egg tooltip + if (Game.UpgradesInStore[TooltipName].name === 'Chocolate egg') { + l('CMTooltipBorder').lastChild.style.marginBottom = '4px'; + l('CMTooltipBorder').appendChild( + Create.TooltipCreateHeader('Cookies to be gained (Currently/Max)'), + ); + const chocolate = document.createElement('div'); + chocolate.style.color = 'white'; + chocolate.textContent = `${Beautify(Game.cookies * 0.05)} / ${Beautify( + CacheLastChoEgg, + )}`; + l('CMTooltipBorder').appendChild(chocolate); + } + } else l('CMTooltipArea').style.display = 'none'; +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/Warnings.js b/src/Disp/Tooltips/TypesOfTooltips/Warnings.js new file mode 100644 index 00000000..3a3d11cb --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/Warnings.js @@ -0,0 +1,144 @@ +import GetCPSBuffMult from '../../../Cache/CPS/GetCPSBuffMult'; +import { CacheEdifice, CacheLucky } from '../../../Cache/VariablesAndData'; +import ToggleToolWarnPos from '../../../Config/Toggles/ToggleToolWarnPos'; +import { CMOptions } from '../../../Config/VariablesAndData'; + +import { + Beautify, + FormatTime, +} from '../../BeautifyAndFormatting/BeautifyFormatting'; +import GetCPS from '../../HelperFunctions/GetCPS'; +import GetWrinkConfigBank from '../../HelperFunctions/GetWrinkConfigBank'; +import { + TooltipBonusIncome, + TooltipPrice, + TooltipType, +} from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function updates the warnings section of the building and upgrade tooltips + */ +export default function Warnings() { + if (TooltipType === 'b' || TooltipType === 'u') { + if (document.getElementById('CMDispTooltipWarningParent') === null) { + l('tooltipAnchor').appendChild(Create.TooltipCreateWarningSection()); + ToggleToolWarnPos(); + } + + if (CMOptions.ToolWarnPos === 0) + l('CMDispTooltipWarningParent').style.right = '0px'; + else + l('CMDispTooltipWarningParent').style.top = `${ + l('tooltip').offsetHeight + }px`; + + l('CMDispTooltipWarningParent').style.width = `${ + l('tooltip').offsetWidth - 6 + }px`; + + const amount = Game.cookies + GetWrinkConfigBank() - TooltipPrice; + const bonusIncomeUsed = CMOptions.ToolWarnBon ? TooltipBonusIncome : 0; + let limitLucky = CacheLucky; + if (CMOptions.ToolWarnBon === 1) { + let bonusNoFren = TooltipBonusIncome; + bonusNoFren /= GetCPSBuffMult(); + limitLucky += (bonusNoFren * 60 * 15) / 0.15; + } + + if (CMOptions.ToolWarnLucky === 1) { + if (amount < limitLucky && (TooltipType !== 'b' || Game.buyMode === 1)) { + l('CMDispTooltipWarnLucky').style.display = ''; + l('CMDispTooltipWarnLuckyText').textContent = `${Beautify( + limitLucky - amount, + )} (${FormatTime( + (limitLucky - amount) / (GetCPS() + bonusIncomeUsed), + )})`; + } else l('CMDispTooltipWarnLucky').style.display = 'none'; + } else l('CMDispTooltipWarnLucky').style.display = 'none'; + + if (CMOptions.ToolWarnLuckyFrenzy === 1) { + const limitLuckyFrenzy = limitLucky * 7; + if ( + amount < limitLuckyFrenzy && + (TooltipType !== 'b' || Game.buyMode === 1) + ) { + l('CMDispTooltipWarnLuckyFrenzy').style.display = ''; + l('CMDispTooltipWarnLuckyFrenzyText').textContent = `${Beautify( + limitLuckyFrenzy - amount, + )} (${FormatTime( + (limitLuckyFrenzy - amount) / (GetCPS() + bonusIncomeUsed), + )})`; + } else l('CMDispTooltipWarnLuckyFrenzy').style.display = 'none'; + } else l('CMDispTooltipWarnLuckyFrenzy').style.display = 'none'; + + if (CMOptions.ToolWarnConjure === 1) { + const limitConjure = limitLucky * 2; + if ( + amount < limitConjure && + (TooltipType !== 'b' || Game.buyMode === 1) + ) { + l('CMDispTooltipWarnConjure').style.display = ''; + l('CMDispTooltipWarnConjureText').textContent = `${Beautify( + limitConjure - amount, + )} (${FormatTime( + (limitConjure - amount) / (GetCPS() + bonusIncomeUsed), + )})`; + } else l('CMDispTooltipWarnConjure').style.display = 'none'; + } else l('CMDispTooltipWarnConjure').style.display = 'none'; + + if (CMOptions.ToolWarnConjureFrenzy === 1) { + const limitConjureFrenzy = limitLucky * 2 * 7; + if ( + amount < limitConjureFrenzy && + (TooltipType !== 'b' || Game.buyMode === 1) + ) { + l('CMDispTooltipWarnConjureFrenzy').style.display = ''; + l('CMDispTooltipWarnConjureFrenzyText').textContent = `${Beautify( + limitConjureFrenzy - amount, + )} (${FormatTime( + (limitConjureFrenzy - amount) / (GetCPS() + bonusIncomeUsed), + )})`; + } else l('CMDispTooltipWarnConjureFrenzy').style.display = 'none'; + } else l('CMDispTooltipWarnConjureFrenzy').style.display = 'none'; + + if ( + CMOptions.ToolWarnEdifice === 1 && + Game.Objects['Wizard tower'].minigameLoaded + ) { + if ( + CacheEdifice && + amount < CacheEdifice && + (TooltipType !== 'b' || Game.buyMode === 1) + ) { + l('CMDispTooltipWarnEdifice').style.display = ''; + l('CMDispTooltipWarnEdificeText').textContent = `${Beautify( + CacheEdifice - amount, + )} (${FormatTime( + (CacheEdifice - amount) / (GetCPS() + bonusIncomeUsed), + )})`; + } else l('CMDispTooltipWarnEdifice').style.display = 'none'; + } else l('CMDispTooltipWarnEdifice').style.display = 'none'; + + if (CMOptions.ToolWarnUser > 0) { + if ( + amount < CMOptions.ToolWarnUser * GetCPS() && + (TooltipType !== 'b' || Game.buyMode === 1) + ) { + l('CMDispTooltipWarnUser').style.display = ''; + // Need to update tooltip text dynamically + l( + 'CMDispTooltipWarnUser', + ).children[0].textContent = `Purchase of this item will put you under the number of Cookies equal to ${CMOptions.ToolWarnUser} seconds of CPS`; + l('CMDispTooltipWarnUserText').textContent = `${Beautify( + CMOptions.ToolWarnUser * GetCPS() - amount, + )} (${FormatTime( + (CMOptions.ToolWarnUser * GetCPS() - amount) / + (GetCPS() + bonusIncomeUsed), + )})`; + } else l('CMDispTooltipWarnUser').style.display = 'none'; + } else l('CMDispTooltipWarnUser').style.display = 'none'; + } else if (l('CMDispTooltipWarningParent') !== null) { + l('CMDispTooltipWarningParent').remove(); + } +} diff --git a/src/Disp/Tooltips/TypesOfTooltips/WrinklerButton.js b/src/Disp/Tooltips/TypesOfTooltips/WrinklerButton.js new file mode 100644 index 00000000..4d248cdf --- /dev/null +++ b/src/Disp/Tooltips/TypesOfTooltips/WrinklerButton.js @@ -0,0 +1,25 @@ +import { + CacheWrinklersFattest, + CacheWrinklersTotal, +} from '../../../Cache/VariablesAndData'; +import { TooltipName } from '../../VariablesAndData'; +import * as Create from '../CreateTooltip'; + +/** + * This function adds extra info to the wrinkler button tooltip + * It adds to the additional information to l('CMTooltipArea') + */ +export default function WrinklerButton() { + l('tooltip').innerHTML = ''; + l('tooltip').appendChild(Create.TooltipCreateHeader('Reward:')); + + const WrinklerReward = document.createElement('div'); + WrinklerReward.id = 'CMWrinklerReward'; + if (TooltipName === 'PopAll') { + WrinklerReward.textContent = CacheWrinklersTotal; + } else if (TooltipName === 'PopFattest') { + WrinklerReward.textContent = CacheWrinklersFattest[0]; + } + + l('tooltip').appendChild(WrinklerReward); +} diff --git a/src/Disp/Tooltips/UpdateTooltips.js b/src/Disp/Tooltips/UpdateTooltips.js index 82042793..9088f805 100644 --- a/src/Disp/Tooltips/UpdateTooltips.js +++ b/src/Disp/Tooltips/UpdateTooltips.js @@ -1,519 +1,51 @@ -import GetCPSBuffMult from '../../Cache/CPS/GetCPSBuffMult'; -import { - CacheEdifice, - CacheLastChoEgg, - CacheLucky, - CacheNoGoldSwitchCookiesPS, - CacheObjects1, - CacheObjects10, - CacheObjects100, - CacheUpgrades, -} from '../../Cache/VariablesAndData'; -import ToggleToolWarnPos from '../../Config/Toggles/ToggleToolWarnPos'; -import { CMOptions } from '../../Config/VariablesAndData'; -import { SimObjects } from '../../Sim/VariablesAndData'; -import { - Beautify, - FormatTime, - GetTimeColor, -} from '../BeautifyAndFormatting/BeautifyFormatting'; -import CalculateGrimoireRefillTime from '../HelperFunctions/CalculateGrimoireRefillTime'; -import GetCPS from '../HelperFunctions/GetCPS'; -import GetLumpColor from '../HelperFunctions/GetLumpColor'; -import GetWrinkConfigBank from '../HelperFunctions/GetWrinkConfigBank'; -import { - ColorTextPre, - LastTargetTooltipBuilding, - TooltipBonusIncome, - TooltipBonusMouse, - TooltipName, - TooltipPrice, - TooltipType, -} from '../VariablesAndData'; +import CopyData from '../../Sim/SimulationData/CopyData'; +import { TooltipName, TooltipType } from '../VariablesAndData'; import * as Create from './CreateTooltip'; - -/** Functions that update specific types of tooltips */ - -/** - * This function adds extra info to the Building tooltips - */ -export function Building() { - if (CMOptions.TooltipBuildUpgrade === 1 && Game.buyMode === 1) { - const tooltipBox = l('CMTooltipBorder'); - Create.TooltipCreateCalculationSection(tooltipBox); - - let target; - if (Game.buyMode === 1) { - LastTargetTooltipBuilding = target; - } else { - target = LastTargetTooltipBuilding; - } - if (Game.buyBulk === 1) target = CacheObjects1; - else if (Game.buyBulk === 10) target = CacheObjects10; - else if (Game.buyBulk === 100) target = CacheObjects100; - - TooltipPrice = Game.Objects[TooltipName].bulkPrice; - TooltipBonusIncome = target[TooltipName].bonus; - - if (CMOptions.TooltipBuildUpgrade === 1 && Game.buyMode === 1) { - l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2); - const increase = Math.round( - (TooltipBonusIncome / Game.cookiesPs) * 10000, - ); - if (Number.isFinite(increase) && increase !== 0) { - l('CMTooltipIncome').textContent += ` (${increase / 100}% of income)`; - } else { - l('CMTooltipIncome').textContent += ` (<0${ - CMOptions.ScaleSeparator ? ',' : '.' - }01% of income)`; - } - l('CMTooltipBorder').className = ColorTextPre + target[TooltipName].color; - l('CMTooltipPP').textContent = Beautify(target[TooltipName].pp, 2); - l('CMTooltipPP').className = ColorTextPre + target[TooltipName].color; - const timeColor = GetTimeColor( - (TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), - ); - l('CMTooltipTime').textContent = timeColor.text; - if ( - timeColor.text === 'Done!' && - Game.cookies < target[TooltipName].price - ) { - l('CMTooltipTime').textContent = `${timeColor.text} (with Wrink)`; - } else l('CMTooltipTime').textContent = timeColor.text; - l('CMTooltipTime').className = ColorTextPre + timeColor.color; - } - - // Add "production left till next achievement"-bar - l('CMTooltipProductionHeader').style.display = 'none'; - l('CMTooltipTime').style.marginBottom = '0px'; - for (const i of Object.keys(Game.Objects[TooltipName].productionAchievs)) { - if ( - !Game.HasAchiev( - Game.Objects[TooltipName].productionAchievs[i].achiev.name, - ) - ) { - const nextProductionAchiev = - Game.Objects[TooltipName].productionAchievs[i]; - l('CMTooltipTime').style.marginBottom = '4px'; - l('CMTooltipProductionHeader').style.display = ''; - l('CMTooltipProduction').className = `ProdAchievement${TooltipName}`; - l('CMTooltipProduction').textContent = Beautify( - nextProductionAchiev.pow - SimObjects[TooltipName].totalCookies, - 15, - ); - l('CMTooltipProduction').style.color = 'white'; - break; - } - } - } else l('CMTooltipArea').style.display = 'none'; -} - -/** - * This function adds extra info to the Upgrade tooltips - */ -export function Upgrade() { - const tooltipBox = l('CMTooltipBorder'); - Create.TooltipCreateCalculationSection(tooltipBox); - - TooltipBonusIncome = - CacheUpgrades[Game.UpgradesInStore[TooltipName].name].bonus; - TooltipPrice = Game.Upgrades[ - Game.UpgradesInStore[TooltipName].name - ].getPrice(); - TooltipBonusMouse = - CacheUpgrades[Game.UpgradesInStore[TooltipName].name].bonusMouse; - - if (CMOptions.TooltipBuildUpgrade === 1) { - l('CMTooltipIncome').textContent = Beautify(TooltipBonusIncome, 2); - const increase = Math.round((TooltipBonusIncome / Game.cookiesPs) * 10000); - // Don't display certain parts of tooltip if not applicable - if ( - l('CMTooltipIncome').textContent === '0' && - (TooltipType === 'b' || TooltipType === 'u') - ) { - l('Bonus IncomeTitle').style.display = 'none'; - l('CMTooltipIncome').style.display = 'none'; - l('Payback PeriodTitle').style.display = 'none'; - l('CMTooltipPP').style.display = 'none'; - } else { - if (Number.isFinite(increase) && increase !== 0) { - l('CMTooltipIncome').textContent += ` (${increase / 100}% of income)`; - } else { - l('CMTooltipIncome').textContent += ` (<0${ - CMOptions.ScaleSeparator ? ',' : '.' - }01% of income)`; - } - l('CMTooltipBorder').className = - ColorTextPre + - CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color; - // If clicking power upgrade - if (TooltipBonusMouse) { - l('CMTooltipCookiePerClick').textContent = Beautify(TooltipBonusMouse); - l('CMTooltipCookiePerClick').style.display = 'block'; - l('CMTooltipCookiePerClick').previousSibling.style.display = 'block'; - } - // If only a clicking power upgrade change PP to click-based period - if (TooltipBonusIncome === 0 && TooltipBonusMouse) { - l('CMTooltipPP').textContent = `${Beautify( - TooltipPrice / TooltipBonusMouse, - )} Clicks`; - l('CMTooltipPP').style.color = 'white'; - } else { - l('CMTooltipPP').textContent = Beautify( - CacheUpgrades[Game.UpgradesInStore[TooltipName].name].pp, - 2, - ); - l('CMTooltipPP').className = - ColorTextPre + - CacheUpgrades[Game.UpgradesInStore[TooltipName].name].color; - } - } - const timeColor = GetTimeColor( - (TooltipPrice - (Game.cookies + GetWrinkConfigBank())) / GetCPS(), - ); - l('CMTooltipTime').textContent = timeColor.text; - if ( - timeColor.text === 'Done!' && - Game.cookies < Game.UpgradesInStore[TooltipName].getPrice() - ) { - l('CMTooltipTime').textContent = `${timeColor.text} (with Wrink)`; - } else l('CMTooltipTime').textContent = timeColor.text; - l('CMTooltipTime').className = ColorTextPre + timeColor.color; - - // Add extra info to Chocolate egg tooltip - if (Game.UpgradesInStore[TooltipName].name === 'Chocolate egg') { - l('CMTooltipBorder').lastChild.style.marginBottom = '4px'; - l('CMTooltipBorder').appendChild( - Create.TooltipCreateHeader('Cookies to be gained (Currently/Max)'), - ); - const chocolate = document.createElement('div'); - chocolate.style.color = 'white'; - chocolate.textContent = `${Beautify(Game.cookies * 0.05)} / ${Beautify( - CacheLastChoEgg, - )}`; - l('CMTooltipBorder').appendChild(chocolate); - } - } else l('CMTooltipArea').style.display = 'none'; -} +import Building from './TypesOfTooltips/Building'; +import GardenPlots from './TypesOfTooltips/GardenPlots'; +import Grimoire from './TypesOfTooltips/Grimoire'; +import HarvestAll from './TypesOfTooltips/HarvestAll'; +import PantheonGods from './TypesOfTooltips/PantheonGods'; +import SugarLump from './TypesOfTooltips/SugarLump'; +import Upgrade from './TypesOfTooltips/Upgrade'; +import Warnings from './TypesOfTooltips/Warnings'; +import WrinklerButton from './TypesOfTooltips/WrinklerButton'; /** - * This function adds extra info to the Sugar Lump tooltip - * It adds to the additional information to l('CMTooltipArea') + * This function updates the sections of the tooltips created by CookieMonster */ -export function SugarLump() { - if (CMOptions.TooltipLump === 1) { - const tooltipBox = l('CMTooltipBorder'); - - tooltipBox.appendChild(Create.TooltipCreateHeader('Current Sugar Lump')); - - const lumpType = document.createElement('div'); - lumpType.id = 'CMTooltipTime'; - tooltipBox.appendChild(lumpType); - const lumpColor = GetLumpColor(Game.lumpCurrentType); - lumpType.textContent = lumpColor.text; - lumpType.className = ColorTextPre + lumpColor.color; - } else l('CMTooltipArea').style.display = 'none'; -} - -/** - * This function adds extra info to the Grimoire tooltips - * It adds to the additional information to l('CMTooltipArea') - */ -export function Grimoire() { - const minigame = Game.Objects['Wizard tower'].minigame; - const spellCost = minigame.getSpellCost(minigame.spellsById[TooltipName]); - - if (CMOptions.TooltipGrim === 1 && spellCost <= minigame.magicM) { - const tooltipBox = l('CMTooltipBorder'); - - // Time left till enough magic for spell - tooltipBox.appendChild(Create.TooltipCreateHeader('Time Left')); - const time = document.createElement('div'); - time.id = 'CMTooltipTime'; - tooltipBox.appendChild(time); - const timeColor = GetTimeColor( - CalculateGrimoireRefillTime(minigame.magic, minigame.magicM, spellCost), - ); - time.textContent = timeColor.text; - time.className = ColorTextPre + timeColor.color; - - // Time left untill magic spent is recovered - if (spellCost <= minigame.magic) { - tooltipBox.appendChild(Create.TooltipCreateHeader('Recover Time')); - const recover = document.createElement('div'); - recover.id = 'CMTooltipRecover'; - tooltipBox.appendChild(recover); - const recoverColor = GetTimeColor( - CalculateGrimoireRefillTime( - Math.max(0, minigame.magic - spellCost), - minigame.magicM, - minigame.magic, - ), - ); - recover.textContent = recoverColor.text; - recover.className = ColorTextPre + recoverColor.color; - } - - // Extra information on cookies gained when spell is Conjure Baked Goods (Name === 0) - if (TooltipName === '0') { - tooltipBox.appendChild( - Create.TooltipCreateHeader('Cookies to be gained/lost'), - ); - const conjure = document.createElement('div'); - conjure.id = 'x'; - tooltipBox.appendChild(conjure); - const reward = document.createElement('span'); - reward.style.color = '#33FF00'; - reward.textContent = Beautify( - Math.min( - (Game.cookies + GetWrinkConfigBank()) * 0.15, - CacheNoGoldSwitchCookiesPS * 60 * 30, - ), - 2, - ); - conjure.appendChild(reward); - const seperator = document.createElement('span'); - seperator.textContent = ' / '; - conjure.appendChild(seperator); - const loss = document.createElement('span'); - loss.style.color = 'red'; - loss.textContent = Beautify(CacheNoGoldSwitchCookiesPS * 60 * 15, 2); - conjure.appendChild(loss); - } - +export default function UpdateTooltips() { + CopyData(); + if (l('tooltipAnchor').style.display !== 'none' && l('CMTooltipArea')) { + l('CMTooltipArea').innerHTML = ''; + const tooltipBox = Create.TooltipCreateTooltipBox(); l('CMTooltipArea').appendChild(tooltipBox); - } else l('CMTooltipArea').style.display = 'none'; -} - -/** - * This function adds extra info to the Garden plots tooltips - * It adds to the additional information to l('CMTooltipArea') - */ -export function GardenPlots() { - const minigame = Game.Objects.Farm.minigame; - if ( - CMOptions.TooltipPlots && - minigame.plot[TooltipName[1]][TooltipName[0]][0] !== 0 - ) { - const mature = - minigame.plot[TooltipName[1]][TooltipName[0]][1] > - minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1] - .matureBase; - const plantName = - minigame.plantsById[minigame.plot[TooltipName[1]][TooltipName[0]][0] - 1] - .name; - l('CMTooltipBorder').appendChild( - Create.TooltipCreateHeader('Reward (Current / Maximum)'), - ); - const reward = document.createElement('div'); - reward.id = 'CMTooltipPlantReward'; - l('CMTooltipBorder').appendChild(reward); - if (plantName === 'Bakeberry') { - l('CMTooltipPlantReward').textContent = `${ - mature - ? Beautify(Math.min(Game.cookies * 0.03, Game.cookiesPs * 60 * 30)) - : '0' - } / ${Beautify(Game.cookiesPs * 60 * 30)}`; - } else if (plantName === 'Chocoroot' || plantName === 'White chocoroot') { - l('CMTooltipPlantReward').textContent = `${ - mature - ? Beautify(Math.min(Game.cookies * 0.03, Game.cookiesPs * 60 * 3)) - : '0' - } / ${Beautify(Game.cookiesPs * 60 * 3)}`; - } else if (plantName === 'Queenbeet') { - l('CMTooltipPlantReward').textContent = `${ - mature - ? Beautify(Math.min(Game.cookies * 0.04, Game.cookiesPs * 60 * 60)) - : '0' - } / ${Beautify(Game.cookiesPs * 60 * 60)}`; - } else if (plantName === 'Duketater') { - l('CMTooltipPlantReward').textContent = `${ - mature - ? Beautify(Math.min(Game.cookies * 0.08, Game.cookiesPs * 60 * 120)) - : '0' - } / ${Beautify(Game.cookiesPs * 60 * 120)}`; - } else l('CMTooltipArea').style.display = 'none'; - } else l('CMTooltipArea').style.display = 'none'; -} - -/** - * This function adds extra info to the Garden Harvest All tooltip - * It is called when the Harvest All tooltip is created or refreshed by CM.Disp.UpdateTooltip() - * It adds to the additional information to l('CMTooltipArea') - */ -export function HarvestAll() { - const minigame = Game.Objects.Farm.minigame; - if (CMOptions.TooltipLump) { - l('CMTooltipBorder').appendChild( - Create.TooltipCreateHeader('Cookies gained from harvesting:'), - ); - let totalGain = 0; - let mortal = 0; - if (Game.keys[16] && Game.keys[17]) mortal = 1; - for (let y = 0; y < 6; y++) { - for (let x = 0; x < 6; x++) { - if (minigame.plot[y][x][0] >= 1) { - const tile = minigame.plot[y][x]; - const me = minigame.plantsById[tile[0] - 1]; - const plantName = me.name; - - let count = true; - if (mortal && me.immortal) count = false; - if (tile[1] < me.matureBase) count = false; - if (count && plantName === 'Bakeberry') { - totalGain += Math.min( - Game.cookies * 0.03, - Game.cookiesPs * 60 * 30, - ); - } else if ( - (count && plantName === 'Chocoroot') || - plantName === 'White chocoroot' - ) { - totalGain += Math.min(Game.cookies * 0.03, Game.cookiesPs * 60 * 3); - } else if (count && plantName === 'Queenbeet') { - totalGain += Math.min( - Game.cookies * 0.04, - Game.cookiesPs * 60 * 60, - ); - } else if (count && plantName === 'Duketater') { - totalGain += Math.min( - Game.cookies * 0.08, - Game.cookiesPs * 60 * 120, - ); - } - } - } - } - l('CMTooltipBorder').appendChild( - document.createTextNode(Beautify(totalGain)), - ); - } else l('CMTooltipArea').style.display = 'none'; -} -/** - * This function updates the warnings section of the building and upgrade tooltips - * It is called by CM.Disp.UpdateTooltip() - */ -export function Warnings() { - if (TooltipType === 'b' || TooltipType === 'u') { - if (document.getElementById('CMDispTooltipWarningParent') === null) { - l('tooltipAnchor').appendChild(Create.TooltipCreateWarningSection()); - ToggleToolWarnPos(); + if (TooltipType === 'b') { + Building(); + } else if (TooltipType === 'u') { + Upgrade(); + } else if (TooltipType === 's') { + SugarLump(); + } else if (TooltipType === 'g') { + Grimoire(); + } else if (TooltipType === 'p') { + GardenPlots(); + } else if (TooltipType === 'ha') { + HarvestAll(); + } else if (TooltipType === 'wb') { + WrinklerButton(); + } else if ( + TooltipType === 'pag' || + (TooltipType === 'pas' && TooltipName[1] !== -1) + ) { + PantheonGods(); } - - if (CMOptions.ToolWarnPos === 0) - l('CMDispTooltipWarningParent').style.right = '0px'; - else - l('CMDispTooltipWarningParent').style.top = `${ - l('tooltip').offsetHeight - }px`; - - l('CMDispTooltipWarningParent').style.width = `${ - l('tooltip').offsetWidth - 6 - }px`; - - const amount = Game.cookies + GetWrinkConfigBank() - TooltipPrice; - const bonusIncomeUsed = CMOptions.ToolWarnBon ? TooltipBonusIncome : 0; - let limitLucky = CacheLucky; - if (CMOptions.ToolWarnBon === 1) { - let bonusNoFren = TooltipBonusIncome; - bonusNoFren /= GetCPSBuffMult(); - limitLucky += (bonusNoFren * 60 * 15) / 0.15; + Warnings(); + } else if (l('CMTooltipArea') === null) { + // Remove warnings if its a basic tooltip + if (l('CMDispTooltipWarningParent') !== null) { + l('CMDispTooltipWarningParent').remove(); } - - if (CMOptions.ToolWarnLucky === 1) { - if (amount < limitLucky && (TooltipType !== 'b' || Game.buyMode === 1)) { - l('CMDispTooltipWarnLucky').style.display = ''; - l('CMDispTooltipWarnLuckyText').textContent = `${Beautify( - limitLucky - amount, - )} (${FormatTime( - (limitLucky - amount) / (GetCPS() + bonusIncomeUsed), - )})`; - } else l('CMDispTooltipWarnLucky').style.display = 'none'; - } else l('CMDispTooltipWarnLucky').style.display = 'none'; - - if (CMOptions.ToolWarnLuckyFrenzy === 1) { - const limitLuckyFrenzy = limitLucky * 7; - if ( - amount < limitLuckyFrenzy && - (TooltipType !== 'b' || Game.buyMode === 1) - ) { - l('CMDispTooltipWarnLuckyFrenzy').style.display = ''; - l('CMDispTooltipWarnLuckyFrenzyText').textContent = `${Beautify( - limitLuckyFrenzy - amount, - )} (${FormatTime( - (limitLuckyFrenzy - amount) / (GetCPS() + bonusIncomeUsed), - )})`; - } else l('CMDispTooltipWarnLuckyFrenzy').style.display = 'none'; - } else l('CMDispTooltipWarnLuckyFrenzy').style.display = 'none'; - - if (CMOptions.ToolWarnConjure === 1) { - const limitConjure = limitLucky * 2; - if ( - amount < limitConjure && - (TooltipType !== 'b' || Game.buyMode === 1) - ) { - l('CMDispTooltipWarnConjure').style.display = ''; - l('CMDispTooltipWarnConjureText').textContent = `${Beautify( - limitConjure - amount, - )} (${FormatTime( - (limitConjure - amount) / (GetCPS() + bonusIncomeUsed), - )})`; - } else l('CMDispTooltipWarnConjure').style.display = 'none'; - } else l('CMDispTooltipWarnConjure').style.display = 'none'; - - if (CMOptions.ToolWarnConjureFrenzy === 1) { - const limitConjureFrenzy = limitLucky * 2 * 7; - if ( - amount < limitConjureFrenzy && - (TooltipType !== 'b' || Game.buyMode === 1) - ) { - l('CMDispTooltipWarnConjureFrenzy').style.display = ''; - l('CMDispTooltipWarnConjureFrenzyText').textContent = `${Beautify( - limitConjureFrenzy - amount, - )} (${FormatTime( - (limitConjureFrenzy - amount) / (GetCPS() + bonusIncomeUsed), - )})`; - } else l('CMDispTooltipWarnConjureFrenzy').style.display = 'none'; - } else l('CMDispTooltipWarnConjureFrenzy').style.display = 'none'; - - if ( - CMOptions.ToolWarnEdifice === 1 && - Game.Objects['Wizard tower'].minigameLoaded - ) { - if ( - CacheEdifice && - amount < CacheEdifice && - (TooltipType !== 'b' || Game.buyMode === 1) - ) { - l('CMDispTooltipWarnEdifice').style.display = ''; - l('CMDispTooltipWarnEdificeText').textContent = `${Beautify( - CacheEdifice - amount, - )} (${FormatTime( - (CacheEdifice - amount) / (GetCPS() + bonusIncomeUsed), - )})`; - } else l('CMDispTooltipWarnEdifice').style.display = 'none'; - } else l('CMDispTooltipWarnEdifice').style.display = 'none'; - - if (CMOptions.ToolWarnUser > 0) { - if ( - amount < CMOptions.ToolWarnUser * GetCPS() && - (TooltipType !== 'b' || Game.buyMode === 1) - ) { - l('CMDispTooltipWarnUser').style.display = ''; - // Need to update tooltip text dynamically - l( - 'CMDispTooltipWarnUser', - ).children[0].textContent = `Purchase of this item will put you under the number of Cookies equal to ${CMOptions.ToolWarnUser} seconds of CPS`; - l('CMDispTooltipWarnUserText').textContent = `${Beautify( - CMOptions.ToolWarnUser * GetCPS() - amount, - )} (${FormatTime( - (CMOptions.ToolWarnUser * GetCPS() - amount) / - (GetCPS() + bonusIncomeUsed), - )})`; - } else l('CMDispTooltipWarnUser').style.display = 'none'; - } else l('CMDispTooltipWarnUser').style.display = 'none'; - } else if (l('CMDispTooltipWarningParent') !== null) { - l('CMDispTooltipWarningParent').remove(); } } diff --git a/src/Disp/Tooltips/WrinklerTooltips.js b/src/Disp/Tooltips/WrinklerTooltips.js index cb48499c..79ed63ae 100644 --- a/src/Disp/Tooltips/WrinklerTooltips.js +++ b/src/Disp/Tooltips/WrinklerTooltips.js @@ -16,7 +16,7 @@ export function CheckWrinklerTooltip() { if (CMOptions.TooltipWrink === 1 && TooltipWrinklerArea === 1) { // Latter is set by CM.Main.AddWrinklerAreaDetect let showingTooltip = false; - for (const i of Object.keys(Game.wrinklers)) { + Object.keys(Game.wrinklers).forEach((i) => { const me = Game.wrinklers[i]; if (me.phase > 0 && me.selected) { showingTooltip = true; @@ -36,11 +36,11 @@ export function CheckWrinklerTooltip() { Game.tooltip.draw(this, escape(placeholder.innerHTML)); TooltipWrinkler = i; TooltipWrinklerBeingShown[i] = 1; - } else break; + } } else { TooltipWrinklerBeingShown[i] = 0; } - } + }); if (!showingTooltip) { Game.tooltip.hide(); } @@ -54,7 +54,7 @@ export function CheckWrinklerTooltip() { */ export function UpdateWrinklerTooltip() { if (CMOptions.TooltipWrink === 1 && l('CMTooltipWrinkler') !== null) { - let sucked = Game.wrinklers[TooltipWrinkler].sucked; + let { sucked } = Game.wrinklers[TooltipWrinkler]; let toSuck = 1.1; if (Game.Has('Sacrilegious corruption')) toSuck *= 1.05; if (Game.wrinklers[TooltipWrinkler].type === 1) toSuck *= 3; // Shiny wrinklers diff --git a/src/Disp/VariablesAndData.js b/src/Disp/VariablesAndData.js index 1423ff94..e58b7af1 100644 --- a/src/Disp/VariablesAndData.js +++ b/src/Disp/VariablesAndData.js @@ -80,6 +80,7 @@ export const TooltipText = [ '250px', ], ]; +export const SimpleTooltipElements = {}; /** * These are variables used by the functions that create tooltips for wrinklers diff --git a/src/Main/CheckStates/Garden.js b/src/Main/CheckStates/Garden.js index 808f8064..4e12a93b 100644 --- a/src/Main/CheckStates/Garden.js +++ b/src/Main/CheckStates/Garden.js @@ -13,7 +13,7 @@ export default function CheckGardenTick() { ) { if (LastGardenNextStep !== 0 && LastGardenNextStep < Date.now()) { Flash(3, 'GardFlash'); - PlaySound(CMOptions.GardSoundURL, 'GardSound', 'GardVolume'); + PlaySound(CMOptions.GardSoundURL, 'GardSound', 'GardVolume', false); } LastGardenNextStep = Game.Objects.Farm.minigame.nextStep; } diff --git a/src/Main/CheckStates/GoldenCookie.js b/src/Main/CheckStates/GoldenCookie.js index 18d1727d..b8953ef8 100644 --- a/src/Main/CheckStates/GoldenCookie.js +++ b/src/Main/CheckStates/GoldenCookie.js @@ -6,7 +6,7 @@ import { import { CMOptions } from '../../Config/VariablesAndData'; import CreateGCTimer from '../../Disp/GoldenCookieTimers/GoldenCookieTimers'; import Flash from '../../Disp/Notifications/Flash'; -import Notification from '../../Disp/Notifications/Notification'; +import CreateNotification from '../../Disp/Notifications/Notification'; import PlaySound from '../../Disp/Notifications/Sound'; import { UpdateFavicon } from '../../Disp/TabTitle/FavIcon'; import { GCTimers } from '../../Disp/VariablesAndData'; @@ -24,13 +24,13 @@ import { function FindShimmer() { CurrSpawnedGoldenCookieState = 0; CacheGoldenShimmersByID = {}; - for (const i of Object.keys(Game.shimmers)) { + Object.keys(Game.shimmers).forEach((i) => { CacheGoldenShimmersByID[Game.shimmers[i].id] = Game.shimmers[i]; if (Game.shimmers[i].spawnLead && Game.shimmers[i].type === 'golden') { CacheSpawnedGoldenShimmer = Game.shimmers[i]; CurrSpawnedGoldenCookieState += 1; } - } + }); } /** @@ -39,42 +39,42 @@ function FindShimmer() { */ export default function CheckGoldenCookie() { FindShimmer(); - for (const i of Object.keys(GCTimers)) { + Object.keys(GCTimers).forEach((i) => { if (typeof CacheGoldenShimmersByID[i] === 'undefined') { GCTimers[i].parentNode.removeChild(GCTimers[i]); delete GCTimers[i]; } - } + }); if (LastGoldenCookieState !== Game.shimmerTypes.golden.n) { LastGoldenCookieState = Game.shimmerTypes.golden.n; if (LastGoldenCookieState) { if (LastSpawnedGoldenCookieState < CurrSpawnedGoldenCookieState) { Flash(3, 'GCFlash'); - PlaySound(CMOptions.GCSoundURL, 'GCSound', 'GCVolume'); - Notification( + PlaySound(CMOptions.GCSoundURL, 'GCSound', 'GCVolume', false); + CreateNotification( 'GCNotification', 'Golden Cookie Spawned', 'A Golden Cookie has spawned. Click it now!', ); } - for (const i of Object.keys(Game.shimmers)) { + Object.keys(Game.shimmers).forEach((i) => { if (typeof GCTimers[Game.shimmers[i].id] === 'undefined') { CreateGCTimer(Game.shimmers[i]); } - } + }); } UpdateFavicon(); LastSpawnedGoldenCookieState = CurrSpawnedGoldenCookieState; if (CurrSpawnedGoldenCookieState === 0) CacheSpawnedGoldenShimmer = 0; } else if (CMOptions.GCTimer === 1 && LastGoldenCookieState) { - for (const i of Object.keys(GCTimers)) { + Object.keys(GCTimers).forEach((i) => { GCTimers[i].style.opacity = CacheGoldenShimmersByID[i].l.style.opacity; GCTimers[i].style.transform = CacheGoldenShimmersByID[i].l.style.transform; GCTimers[i].textContent = Math.ceil( CacheGoldenShimmersByID[i].life / Game.fps, ); - } + }); } } diff --git a/src/Main/CheckStates/Grimoire.js b/src/Main/CheckStates/Grimoire.js index 3835b726..7be6748e 100644 --- a/src/Main/CheckStates/Grimoire.js +++ b/src/Main/CheckStates/Grimoire.js @@ -1,6 +1,6 @@ import { CMOptions } from '../../Config/VariablesAndData'; import Flash from '../../Disp/Notifications/Flash'; -import Notification from '../../Disp/Notifications/Notification'; +import CreateNotification from '../../Disp/Notifications/Notification'; import PlaySound from '../../Disp/Notifications/Sound'; import { LastMagicBarFull } from '../VariablesAndData'; @@ -13,13 +13,13 @@ export default function CheckMagicMeter() { Game.Objects['Wizard tower'].minigameLoaded && CMOptions.GrimoireBar === 1 ) { - const minigame = Game.Objects['Wizard tower'].minigame; + const { minigame } = Game.Objects['Wizard tower']; if (minigame.magic < minigame.magicM) LastMagicBarFull = false; else if (!LastMagicBarFull) { LastMagicBarFull = true; Flash(3, 'MagicFlash'); - PlaySound(CMOptions.MagicSoundURL, 'MagicSound', 'MagicVolume'); - Notification( + PlaySound(CMOptions.MagicSoundURL, 'MagicSound', 'MagicVolume', false); + CreateNotification( 'MagicNotification', 'Magic Meter full', 'Your Magic Meter is full. Cast a spell!', diff --git a/src/Main/CheckStates/Season.js b/src/Main/CheckStates/Season.js index 958a0b4f..5fec2ccc 100644 --- a/src/Main/CheckStates/Season.js +++ b/src/Main/CheckStates/Season.js @@ -2,7 +2,7 @@ import { CacheSeasonPopShimmer } from '../../Cache/VariablesAndData'; import { CMOptions } from '../../Config/VariablesAndData'; import Flash from '../../Disp/Notifications/Flash'; -import Notification from '../../Disp/Notifications/Notification'; +import CreateNotification from '../../Disp/Notifications/Notification'; import PlaySound from '../../Disp/Notifications/Sound'; import { LastSeasonPopupState } from '../VariablesAndData'; @@ -13,15 +13,14 @@ import { LastSeasonPopupState } from '../VariablesAndData'; export default function CheckSeasonPopup() { if (LastSeasonPopupState !== Game.shimmerTypes.reindeer.spawned) { LastSeasonPopupState = Game.shimmerTypes.reindeer.spawned; - for (const i of Object.keys(Game.shimmers)) { + Object.keys(Game.shimmers).forEach((i) => { if (Game.shimmers[i].spawnLead && Game.shimmers[i].type === 'reindeer') { CacheSeasonPopShimmer = Game.shimmers[i]; - break; } - } + }); Flash(3, 'SeaFlash'); - PlaySound(CMOptions.SeaSoundURL, 'SeaSound', 'SeaVolume'); - Notification( + PlaySound(CMOptions.SeaSoundURL, 'SeaSound', 'SeaVolume', false); + CreateNotification( 'SeaNotification', 'Reindeer sighted!', 'A Reindeer has spawned. Click it now!', diff --git a/src/Main/CheckStates/Ticker.js b/src/Main/CheckStates/Ticker.js index e26c9a5c..27016f97 100644 --- a/src/Main/CheckStates/Ticker.js +++ b/src/Main/CheckStates/Ticker.js @@ -1,6 +1,6 @@ import { CMOptions } from '../../Config/VariablesAndData'; import Flash from '../../Disp/Notifications/Flash'; -import Notification from '../../Disp/Notifications/Notification'; +import CreateNotification from '../../Disp/Notifications/Notification'; import PlaySound from '../../Disp/Notifications/Sound'; import { LastTickerFortuneState } from '../VariablesAndData'; @@ -17,8 +17,13 @@ export default function CheckTickerFortune() { Game.TickerEffect && Game.TickerEffect.type === 'fortune'; if (LastTickerFortuneState) { Flash(3, 'FortuneFlash'); - PlaySound(CMOptions.FortuneSoundURL, 'FortuneSound', 'FortuneVolume'); - Notification( + PlaySound( + CMOptions.FortuneSoundURL, + 'FortuneSound', + 'FortuneVolume', + false, + ); + CreateNotification( 'FortuneNotification', 'Fortune Cookie found', 'A Fortune Cookie has appeared on the Ticker.', diff --git a/src/Main/CheckStates/Wrinkler.js b/src/Main/CheckStates/Wrinkler.js index 6c1cf1b7..7b9e10df 100644 --- a/src/Main/CheckStates/Wrinkler.js +++ b/src/Main/CheckStates/Wrinkler.js @@ -1,6 +1,6 @@ import { CMOptions } from '../../Config/VariablesAndData'; import Flash from '../../Disp/Notifications/Flash'; -import Notification from '../../Disp/Notifications/Notification'; +import CreateNotification from '../../Disp/Notifications/Notification'; import PlaySound from '../../Disp/Notifications/Sound'; import { LastWrinklerCount } from '../VariablesAndData'; @@ -11,9 +11,9 @@ import { LastWrinklerCount } from '../VariablesAndData'; export default function CheckWrinklerCount() { if (Game.elderWrath > 0) { let CurrentWrinklers = 0; - for (const i in Game.wrinklers) { - if (Game.wrinklers[i].phase === 2) CurrentWrinklers++; - } + Object.keys(Game.wrinklers).forEach((i) => { + if (Game.wrinklers[i].phase === 2) CurrentWrinklers += 1; + }); if (CurrentWrinklers > LastWrinklerCount) { LastWrinklerCount = CurrentWrinklers; if ( @@ -32,25 +32,27 @@ export default function CheckWrinklerCount() { CMOptions.WrinklerMaxSoundURL, 'WrinklerMaxSound', 'WrinklerMaxVolume', + false, ); } else { PlaySound( CMOptions.WrinklerSoundURL, 'WrinklerSound', 'WrinklerVolume', + false, ); } if ( CurrentWrinklers === Game.getWrinklersMax() && CMOptions.WrinklerMaxNotification ) { - Notification( + CreateNotification( 'WrinklerMaxNotification', 'Maximum Wrinklers Reached', 'You have reached your maximum ammount of wrinklers', ); } else { - Notification( + CreateNotification( 'WrinklerNotification', 'A Wrinkler appeared', 'A new wrinkler has appeared', diff --git a/src/Main/Initialization.js b/src/Main/Initialization.js index 71227fdf..080a0bbc 100644 --- a/src/Main/Initialization.js +++ b/src/Main/Initialization.js @@ -6,6 +6,7 @@ import { VersionMajor, VersionMinor } from '../Data/Moddata'; import CreateUpgradeBar from '../Disp/BuildingsUpgrades/UpgradeBar'; import { CreateBotBar } from '../Disp/InfoBars/BottomBar'; import { CreateTimerBar } from '../Disp/InfoBars/TimerBar'; +import CreateSectionHideButtons from '../Disp/Initialization/CreateSectionHideButtons'; import CreateWrinklerButtons from '../Disp/Initialization/CreateWrinklerButton'; import CreateCssArea from '../Disp/Initialization/CssArea'; import UpdateBuildingUpgradeStyle from '../Disp/Initialization/UpdateBuildingUpgradeStyle'; @@ -37,14 +38,15 @@ export default function InitializeCookieMonster() { CreateTimerBar(); CreateUpgradeBar(); CreateWhiteScreen(); + CreateSectionHideButtons(); CreateFavicon(); - for (const i of Object.keys(TooltipText)) { + Object.keys(TooltipText).forEach((i) => { CreateSimpleTooltip( TooltipText[i][0], TooltipText[i][1], TooltipText[i][2], ); - } + }); CreateWrinklerButtons(); UpdateBuildingUpgradeStyle(); diff --git a/src/Main/Loop.js b/src/Main/Loop.js index 1718873d..b16e1c8a 100644 --- a/src/Main/Loop.js +++ b/src/Main/Loop.js @@ -3,6 +3,7 @@ import LoopCache from '../Cache/CacheLoop'; import CacheNoGoldSwitchCPS from '../Cache/CPS/NoGoldSwitchCPS'; import CacheSellAllForChoEgg from '../Cache/CPS/SellChoEgg'; import CacheDragonCost from '../Cache/Dragon/Dragon'; +import CachePantheonGods from '../Cache/PantheonGods/CacheGods'; import { CacheBuildingsPrices, CacheIncome, @@ -57,6 +58,7 @@ export default function CMLoop() { CacheAllMissingUpgrades(); CacheChain(); CacheDragonCost(); + CachePantheonGods(); CacheSeasonSpec(); CacheSellAllForChoEgg(); diff --git a/src/Main/ReplaceGameElements/NativeGrimoire.js b/src/Main/ReplaceGameElements/NativeGrimoire.js index 1f5a9f43..c21f150f 100644 --- a/src/Main/ReplaceGameElements/NativeGrimoire.js +++ b/src/Main/ReplaceGameElements/NativeGrimoire.js @@ -20,7 +20,7 @@ function ReplaceNativeGrimoireDraw() { !HasReplaceNativeGrimoireDraw && Game.Objects['Wizard tower'].minigameLoaded ) { - const minigame = Game.Objects['Wizard tower'].minigame; + const { minigame } = Game.Objects['Wizard tower']; BackupGrimoireDraw = minigame.draw; Game.Objects['Wizard tower'].minigame.draw = function () { BackupGrimoireDraw(); @@ -46,7 +46,7 @@ function ReplaceNativeGrimoireLaunch() { !HasReplaceNativeGrimoireLaunch && Game.Objects['Wizard tower'].minigameLoaded ) { - const minigame = Game.Objects['Wizard tower'].minigame; + const { minigame } = Game.Objects['Wizard tower']; BackupGrimoireLaunch = minigame.launch; BackupGrimoireLaunchMod = new Function( `return ${minigame.launch diff --git a/src/Main/ReplaceGameElements/TooltipGrimoire.js b/src/Main/ReplaceGameElements/TooltipGrimoire.js index ac45ece2..37f76174 100644 --- a/src/Main/ReplaceGameElements/TooltipGrimoire.js +++ b/src/Main/ReplaceGameElements/TooltipGrimoire.js @@ -6,21 +6,23 @@ import { TooltipGrimoireBackup } from '../VariablesAndData'; */ export default function ReplaceTooltipGrimoire() { if (Game.Objects['Wizard tower'].minigameLoaded) { - for (const i in Game.Objects['Wizard tower'].minigame.spellsById) { - if (l(`grimoireSpell${i}`).onmouseover !== null) { - TooltipGrimoireBackup[i] = l(`grimoireSpell${i}`).onmouseover; - l(`grimoireSpell${i}`).onmouseover = function () { - Game.tooltip.dynamic = 1; - Game.tooltip.draw( - this, - function () { - return CreateTooltip('g', `${i}`); - }, - 'this', - ); - Game.tooltip.wobble(); - }; - } - } + Object.keys(Game.Objects['Wizard tower'].minigame.spellsById).forEach( + (i) => { + if (l(`grimoireSpell${i}`).onmouseover !== null) { + TooltipGrimoireBackup[i] = l(`grimoireSpell${i}`).onmouseover; + l(`grimoireSpell${i}`).onmouseover = function () { + Game.tooltip.dynamic = 1; + Game.tooltip.draw( + this, + function () { + return CreateTooltip('g', `${i}`); + }, + 'this', + ); + Game.tooltip.wobble(); + }; + } + }, + ); } } diff --git a/src/Main/ReplaceGameElements/TooltipUpgrades.js b/src/Main/ReplaceGameElements/TooltipUpgrades.js index c349dae1..5f01554c 100644 --- a/src/Main/ReplaceGameElements/TooltipUpgrades.js +++ b/src/Main/ReplaceGameElements/TooltipUpgrades.js @@ -8,7 +8,7 @@ import { TooltipUpgradeBackup } from '../VariablesAndData'; */ export default function ReplaceTooltipUpgrade() { TooltipUpgradeBackup = []; - for (const i of Object.keys(Game.UpgradesInStore)) { + Object.keys(Game.UpgradesInStore).forEach((i) => { if (l(`upgrade${i}`).onmouseover !== null) { TooltipUpgradeBackup[i] = l(`upgrade${i}`).onmouseover; l(`upgrade${i}`).onmouseover = function () { @@ -26,5 +26,5 @@ export default function ReplaceTooltipUpgrade() { } }; } - } + }); } diff --git a/src/Main/ReplaceGameElements/Tooltips.js b/src/Main/ReplaceGameElements/Tooltips.js index d9f764d7..69262882 100644 --- a/src/Main/ReplaceGameElements/Tooltips.js +++ b/src/Main/ReplaceGameElements/Tooltips.js @@ -1,3 +1,4 @@ +/* eslint-disable no-param-reassign */ /* eslint-disable no-unused-vars */ /** Functions related to replacing tooltips */ @@ -14,7 +15,7 @@ import ReplaceTooltipGrimoire from './TooltipGrimoire'; * This function replaces the original .onmouseover functions of buildings */ function ReplaceTooltipBuild() { - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { const me = Game.Objects[i]; if (l(`product${me.id}`).onmouseover !== null) { TooltipBuildBackup[i] = l(`product${me.id}`).onmouseover; @@ -30,7 +31,7 @@ function ReplaceTooltipBuild() { Game.tooltip.wobble(); }; } - } + }); } /** @@ -86,6 +87,40 @@ function ReplaceTooltipGarden() { } } +function ReplaceTooltipPantheon() { + if (Game.Objects.Temple.minigameLoaded) { + for (let i = 0; i < 11; i += 1) { + l(`templeGod${i}`).onmouseover = function () { + Game.tooltip.dynamic = 1; + Game.tooltip.draw( + this, + function () { + return CreateTooltip('pag', i); + }, + 'this', + ); + Game.tooltip.wobble(); + }; + } + for (let i = 0; i < 3; i += 1) { + l(`templeSlot${i}`).onmouseover = function () { + Game.tooltip.dynamic = 1; + Game.tooltip.draw( + this, + function () { + return CreateTooltip('pas', [ + i, + Game.Objects.Temple.minigame.slot[i], + ]); + }, + 'this', + ); + Game.tooltip.wobble(); + }; + } + } +} + /** * This function call all functions that replace Game-tooltips with Cookie Monster enhanced tooltips */ @@ -95,11 +130,13 @@ export default function ReplaceTooltips() { // Replace Tooltips of Minigames. Nesting it in LoadMinigames makes sure to replace them even if // they were not loaded initially + // eslint-disable-next-line prefer-destructuring LoadMinigames = Game.LoadMinigames; Game.LoadMinigames = function () { LoadMinigames(); ReplaceTooltipGarden(); ReplaceTooltipGrimoire(); + ReplaceTooltipPantheon(); ReplaceNativeGrimoire(); }; Game.LoadMinigames(); diff --git a/src/Main/WrinklerArea/AddDetectArea.js b/src/Main/WrinklerArea/AddDetectArea.js index c44f2ed4..79f54b84 100644 --- a/src/Main/WrinklerArea/AddDetectArea.js +++ b/src/Main/WrinklerArea/AddDetectArea.js @@ -15,8 +15,8 @@ export default function AddWrinklerAreaDetect() { l('backgroundLeftCanvas').onmouseout = function () { TooltipWrinklerArea = 0; Game.tooltip.hide(); - for (const i of Object.keys(Game.wrinklers)) { + Object.keys(Game.wrinklers).forEach((i) => { TooltipWrinklerBeingShown[i] = 0; - } + }); }; } diff --git a/src/Sim/Calculations/CalculateGains.js b/src/Sim/Calculations/CalculateGains.js index 70ed3fe7..35592a7b 100644 --- a/src/Sim/Calculations/CalculateGains.js +++ b/src/Sim/Calculations/CalculateGains.js @@ -31,15 +31,15 @@ export default function CalculateGains() { let mult = 1; // Include minigame effects const effs = {}; - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { if (Game.Objects[i].minigameLoaded && Game.Objects[i].minigame.effs) { const myEffs = Game.Objects[i].minigame.effs; - for (const ii in myEffs) { + Object.keys(myEffs).forEach((ii) => { if (effs[ii]) effs[ii] *= myEffs[ii]; else effs[ii] = myEffs[ii]; - } + }); } - } + }); SimEffs = effs; if (Game.ascensionMode !== 1) @@ -54,7 +54,7 @@ export default function CalculateGains() { if (SimHas('Heralds') && Game.ascensionMode !== 1) mult *= 1 + 0.01 * Game.heralds; - for (const i of Object.keys(Game.cookieUpgrades)) { + Object.keys(Game.cookieUpgrades).forEach((i) => { const me = Game.cookieUpgrades[i]; if (SimHas(me.name)) { // Some upgrades have a functio as .power (notably the valentine cookies) @@ -64,7 +64,7 @@ export default function CalculateGains() { mult *= 1 + SimUpgrades[me.name].power(SimUpgrades[me.name]) * 0.01; } else mult *= 1 + me.power * 0.01; } - } + }); if (SimHas('Specialized chocolate chips')) mult *= 1.01; if (SimHas('Designer cocoa beans')) mult *= 1.02; @@ -160,7 +160,7 @@ export default function CalculateGains() { if (SimHas('Kitten angels')) catMult *= 1 + milkProgress * 0.1 * milkMult; if (SimHas('Fortune #103')) catMult *= 1 + milkProgress * 0.05 * milkMult; - for (const i of Object.keys(SimObjects)) { + Object.keys(SimObjects).forEach((i) => { const me = SimObjects[i]; let storedCps = me.cps(me); if (Game.ascensionMode !== 1) @@ -171,7 +171,7 @@ export default function CalculateGains() { ) storedCps *= 1 + 0.05 * milkProgress * milkMult; SimCookiesPs += me.amount * storedCps; - } + }); if (SimHas('"egg"')) SimCookiesPs += 9; // "egg" @@ -210,14 +210,14 @@ export default function CalculateGains() { mult *= 1 + SimAuraMult('Radiant Appetite'); const rawCookiesPs = SimCookiesPs * mult; - for (const i of Object.keys(Game.CpsAchievements)) { + Object.keys(Game.CpsAchievements).forEach((i) => { if (rawCookiesPs >= Game.CpsAchievements[i].threshold) SimWin(Game.CpsAchievements[i].name); - } + }); SimCookiesPsRaw = rawCookiesPs; - const n = Game.shimmerTypes.golden.n; + const { n } = Game.shimmerTypes.golden; const auraMult = SimAuraMult("Dragon's Fortune"); for (let i = 0; i < n; i++) { mult *= 1 + auraMult * 1.23; @@ -233,9 +233,9 @@ export default function CalculateGains() { let goldenSwitchMult = 1.5; if (SimHas('Residual luck')) { const upgrades = Game.goldenCookieUpgrades; - for (const i of Object.keys(upgrades)) { + Object.keys(upgrades).forEach((i) => { if (SimHas(upgrades[i])) goldenSwitchMult += 0.1; - } + }); } mult *= goldenSwitchMult; } diff --git a/src/Sim/Calculations/CheckOtherAchiev.js b/src/Sim/Calculations/CheckOtherAchiev.js index 300ae6d4..58b17249 100644 --- a/src/Sim/Calculations/CheckOtherAchiev.js +++ b/src/Sim/Calculations/CheckOtherAchiev.js @@ -11,9 +11,9 @@ import { SimObjects, SimUpgradesOwned } from '../VariablesAndData'; */ export default function CheckOtherAchiev() { let grandmas = 0; - for (const i of Object.keys(Game.GrandmaSynergies)) { - if (SimHas(Game.GrandmaSynergies[i])) grandmas++; - } + Object.keys(Game.GrandmaSynergies).forEach((i) => { + if (SimHas(Game.GrandmaSynergies[i])) grandmas += 1; + }); if (!SimHasAchiev('Elder') && grandmas >= 7) SimWin('Elder'); if (!SimHasAchiev('Veteran') && grandmas >= 14) SimWin('Veteran'); @@ -21,7 +21,7 @@ export default function CheckOtherAchiev() { let mathematician = 1; let base10 = 1; let minAmount = 100000; - for (const i of Object.keys(SimObjects)) { + Object.keys(SimObjects).forEach((i) => { buildingsOwned += SimObjects[i].amount; minAmount = Math.min(SimObjects[i].amount, minAmount); if (!SimHasAchiev('Mathematician')) { @@ -38,7 +38,7 @@ export default function CheckOtherAchiev() { ) base10 = 0; } - } + }); if (minAmount >= 1) SimWin('One with everything'); if (mathematician === 1) SimWin('Mathematician'); if (base10 === 1) SimWin('Base 10'); @@ -76,23 +76,23 @@ export default function CheckOtherAchiev() { SimWin('The elder scrolls'); let hasAllHalloCook = true; - for (const i of Object.keys(HalloCookies)) { + Object.keys(HalloCookies).forEach((i) => { if (!SimHas(HalloCookies[i])) hasAllHalloCook = false; - } + }); if (hasAllHalloCook) SimWin('Spooky cookies'); let hasAllChristCook = true; - for (const i of Object.keys(ChristCookies)) { + Object.keys(ChristCookies).forEach((i) => { if (!SimHas(ChristCookies[i])) hasAllChristCook = false; - } + }); if (hasAllChristCook) SimWin('Let it snow'); if (SimHas('Fortune cookies')) { const list = Game.Tiers.fortune.upgrades; let fortunes = 0; - for (const i of Object.keys(list)) { - if (SimHas(list[i].name)) fortunes++; - } + Object.keys(list).forEach((i) => { + if (SimHas(list[i].name)) fortunes += 1; + }); if (fortunes >= list.length) SimWin('O Fortuna'); } } diff --git a/src/Sim/InitializeData/InitData.js b/src/Sim/InitializeData/InitData.js index 6a1f1ec0..af8232d0 100644 --- a/src/Sim/InitializeData/InitData.js +++ b/src/Sim/InitializeData/InitData.js @@ -12,20 +12,20 @@ import InitUpgrade from './InitUpgrade'; export default function InitData() { // Buildings SimObjects = []; - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { SimObjects[i] = InitialBuildingData(i); - } + }); // Upgrades SimUpgrades = []; - for (const i of Object.keys(Game.Upgrades)) { + Object.keys(Game.Upgrades).forEach((i) => { SimUpgrades[i] = InitUpgrade(i); - } + }); // Achievements SimAchievements = []; - for (const i of Object.keys(Game.Achievements)) { + Object.keys(Game.Achievements).forEach((i) => { SimAchievements[i] = InitAchievement(i); - } + }); CopyData(); } diff --git a/src/Sim/InitializeData/InitUpgrade.js b/src/Sim/InitializeData/InitUpgrade.js index 12503e2b..19704fdb 100644 --- a/src/Sim/InitializeData/InitUpgrade.js +++ b/src/Sim/InitializeData/InitUpgrade.js @@ -16,9 +16,9 @@ export default function InitUpgrade(upgradeName) { if (me.name === 'Sugar crystal cookies') { you.power = function () { let n = 5; - for (const i in SimObjects) { + Object.keys(SimObjects).forEach((i) => { if (SimObjects[i].level >= 10) n += 1; - } + }); return n; }; } else { diff --git a/src/Sim/InitializeData/InitialBuildingData.js b/src/Sim/InitializeData/InitialBuildingData.js index aee003e6..07f799d2 100644 --- a/src/Sim/InitializeData/InitialBuildingData.js +++ b/src/Sim/InitializeData/InitialBuildingData.js @@ -29,9 +29,9 @@ export default function InitialBuildingData(buildingName) { if (SimHas('Nonillion fingers')) add *= 20; let mult = 1; let num = 0; - for (const i in SimObjects) { + Object.keys(SimObjects).forEach((i) => { if (SimObjects[i].name !== 'Cursor') num += SimObjects[i].amount; - } + }); add *= num; mult *= SimGetTieredCpsMult(it); mult *= Game.magicCpS('Cursor'); @@ -49,9 +49,9 @@ export default function InitialBuildingData(buildingName) { } else if (me.name === 'Grandma') { you.cps = function (it) { let mult = 1; - for (const i in Game.GrandmaSynergies) { + Object.keys(Game.GrandmaSynergies).forEach((i) => { if (SimHas(Game.GrandmaSynergies[i])) mult *= 2; - } + }); if (SimHas('Bingo center/Research facility')) mult *= 4; if (SimHas('Ritual rolling pins')) mult *= 2; if (SimHas('Naughty list')) mult *= 2; @@ -75,9 +75,9 @@ export default function InitialBuildingData(buildingName) { if (SimHas('Elder Pact')) add += SimObjects.Portal.amount * 0.05; let num = 0; - for (const i in SimObjects) { + Object.keys(SimObjects).forEach((i) => { if (SimObjects[i].name !== 'Grandma') num += SimObjects[i].amount; - } + }); // if (Game.hasAura('Elder Battalion')) mult*=1+0.01*num; mult *= 1 + SimAuraMult('Elder Battalion') * 0.01 * num; diff --git a/src/Sim/ReplacedGameFunctions/SimGetTieredCpsMult.js b/src/Sim/ReplacedGameFunctions/SimGetTieredCpsMult.js index bc5009d2..6634972f 100644 --- a/src/Sim/ReplacedGameFunctions/SimGetTieredCpsMult.js +++ b/src/Sim/ReplacedGameFunctions/SimGetTieredCpsMult.js @@ -6,14 +6,14 @@ import SimHas from './SimHas'; */ export default function SimGetTieredCpsMult(me) { let mult = 1; - for (const i in me.tieredUpgrades) { + Object.keys(me.tieredUpgrades).forEach((i) => { if ( !Game.Tiers[me.tieredUpgrades[i].tier].special && SimHas(me.tieredUpgrades[i].name) ) mult *= 2; - } - for (const i in me.synergies) { + }); + Object.keys(me.synergies).forEach((i) => { if (SimHas(me.synergies[i].name)) { const syn = me.synergies[i]; if (syn.buildingTie1.name === me.name) @@ -21,7 +21,7 @@ export default function SimGetTieredCpsMult(me) { else if (syn.buildingTie2.name === me.name) mult *= 1 + 0.001 * syn.buildingTie1.amount; } - } + }); if (me.fortune && SimHas(me.fortune.name)) mult *= 1.07; if (me.grandma && SimHas(me.grandma.name)) mult *= 1 + SimObjects.Grandma.amount * 0.01 * (1 / (me.id - 1)); diff --git a/src/Sim/ReplacedGameFunctions/SimHasGod.js b/src/Sim/ReplacedGameFunctions/SimHasGod.js index c863875a..ffcd8600 100644 --- a/src/Sim/ReplacedGameFunctions/SimHasGod.js +++ b/src/Sim/ReplacedGameFunctions/SimHasGod.js @@ -1,4 +1,4 @@ -import { SimObjects } from '../VariablesAndData'; +import { SimGod1, SimGod2, SimGod3, SimObjects } from '../VariablesAndData'; /** * This function checks for the current God level in the sim data @@ -11,10 +11,14 @@ export default function SimHasGod(what) { SimObjects.Temple.minigame = Game.Objects.Temple.minigame; } const god = SimObjects.Temple.minigame.gods[what]; - for (let i = 0; i < 3; i++) { - if (SimObjects.Temple.minigame.slot[i] === god.id) { - return i + 1; - } + if (SimGod1 === god.id) { + return 1; + } + if (SimGod2 === god.id) { + return 2; + } + if (SimGod3 === god.id) { + return 3; } } return false; diff --git a/src/Sim/ReplacedGameFunctions/SimModifyBuidlingPrice.js b/src/Sim/ReplacedGameFunctions/SimModifyBuidlingPrice.js index bda3b83e..0bd7d5f6 100644 --- a/src/Sim/ReplacedGameFunctions/SimModifyBuidlingPrice.js +++ b/src/Sim/ReplacedGameFunctions/SimModifyBuidlingPrice.js @@ -8,26 +8,27 @@ import SimHasGod from './SimHasGod'; * This function calculates the sell price of a building based on current "sim data" * @param {string} building Name of the building * @param {number} price Current price of building - * @returns {number} price The modified building price + * @returns {number} ModifiedPrice The modified building price */ export default function SimModifyBuildingPrice(building, price) { - if (SimHas('Season savings')) price *= 0.99; - if (SimHas("Santa's dominion")) price *= 0.99; - if (SimHas('Faberge egg')) price *= 0.99; - if (SimHas('Divine discount')) price *= 0.99; - if (SimHas('Fortune #100')) price *= 0.99; - // if (SimHasAura('Fierce Hoarder')) price *= 0.98; - price *= 1 - SimAuraMult('Fierce Hoarder') * 0.02; - if (Game.hasBuff('Everything must go')) price *= 0.95; - if (Game.hasBuff('Crafty pixies')) price *= 0.98; - if (Game.hasBuff('Nasty goblins')) price *= 1.02; - if (building.fortune && SimHas(building.fortune.name)) price *= 0.93; - price *= SimEff('buildingCost'); + let ModifiedPrice = price; + if (SimHas('Season savings')) ModifiedPrice *= 0.99; + if (SimHas("Santa's dominion")) ModifiedPrice *= 0.99; + if (SimHas('Faberge egg')) ModifiedPrice *= 0.99; + if (SimHas('Divine discount')) ModifiedPrice *= 0.99; + if (SimHas('Fortune #100')) ModifiedPrice *= 0.99; + // if (SimHasAura('Fierce Hoarder')) ModifiedPrice *= 0.98; + ModifiedPrice *= 1 - SimAuraMult('Fierce Hoarder') * 0.02; + if (Game.hasBuff('Everything must go')) ModifiedPrice *= 0.95; + if (Game.hasBuff('Crafty pixies')) ModifiedPrice *= 0.98; + if (Game.hasBuff('Nasty goblins')) ModifiedPrice *= 1.02; + if (building.fortune && SimHas(building.fortune.name)) ModifiedPrice *= 0.93; + ModifiedPrice *= SimEff('buildingCost'); if (SimObjects.Temple.minigameLoaded) { const godLvl = SimHasGod('creation'); - if (godLvl === 1) price *= 0.93; - else if (godLvl === 2) price *= 0.95; - else if (godLvl === 3) price *= 0.98; + if (godLvl === 1) ModifiedPrice *= 0.93; + else if (godLvl === 2) ModifiedPrice *= 0.95; + else if (godLvl === 3) ModifiedPrice *= 0.98; } - return price; + return ModifiedPrice; } diff --git a/src/Sim/SimulationData/CopyData.js b/src/Sim/SimulationData/CopyData.js index 3af0ea49..74b74c50 100644 --- a/src/Sim/SimulationData/CopyData.js +++ b/src/Sim/SimulationData/CopyData.js @@ -13,6 +13,9 @@ import { SimAchievementsOwned, SimDragonAura, SimDragonAura2, + SimGod1, + SimGod2, + SimGod3, SimHeavenlyPower, SimObjects, SimPledges, @@ -34,7 +37,7 @@ export default function CopyData() { SimPrestige = Game.prestige; // Buildings - for (const i of Object.keys(Game.Objects)) { + Object.keys(Game.Objects).forEach((i) => { const me = Game.Objects[i]; let you = SimObjects[i]; if (you === undefined) { @@ -49,14 +52,19 @@ export default function CopyData() { you.basePrice = me.basePrice; you.free = me.free; if (me.minigameLoaded) { + if (me.name === 'Temple') { + SimGod1 = me.minigame.slot[0]; + SimGod2 = me.minigame.slot[1]; + SimGod3 = me.minigame.slot[2]; + } you.minigameLoaded = me.minigameLoaded; you.minigame = me.minigame; } SimObjects[i] = you; - } + }); // Upgrades - for (const i of Object.keys(Game.Upgrades)) { + Object.keys(Game.Upgrades).forEach((i) => { const me = Game.Upgrades[i]; let you = SimUpgrades[i]; if (you === undefined) { @@ -65,10 +73,10 @@ export default function CopyData() { } you.bought = me.bought; SimUpgrades[i] = you; - } + }); // Achievements - for (const i of Object.keys(Game.Achievements)) { + Object.keys(Game.Achievements).forEach((i) => { const me = Game.Achievements[i]; let you = SimAchievements[i]; if (you === undefined) { @@ -77,7 +85,7 @@ export default function CopyData() { } you.won = me.won; SimAchievements[i] = you; - } + }); // Auras CacheDragonAuras(); diff --git a/src/Sim/SimulationData/SimWin.js b/src/Sim/SimulationData/SimWin.js index fa1b61b8..42218119 100644 --- a/src/Sim/SimulationData/SimWin.js +++ b/src/Sim/SimulationData/SimWin.js @@ -11,7 +11,7 @@ export default function SimWin(what) { if (SimAchievements[what]) { if (SimAchievements[what].won === 0) { SimAchievements[what].won = 1; - if (Game.Achievements[what].pool !== 'shadow') SimAchievementsOwned++; + if (Game.Achievements[what].pool !== 'shadow') SimAchievementsOwned += 1; } } } diff --git a/src/Sim/SimulationEvents/BuyBuilding.js b/src/Sim/SimulationEvents/BuyBuilding.js index 9609eaec..5142b37c 100644 --- a/src/Sim/SimulationEvents/BuyBuilding.js +++ b/src/Sim/SimulationEvents/BuyBuilding.js @@ -16,13 +16,15 @@ export default function BuildingGetPrice( free, increase, ) { + let startingAmount = start; let moni = 0; - for (let i = 0; i < increase; i++) { - let price = basePrice * Game.priceIncrease ** Math.max(0, start - free); + for (let i = 0; i < increase; i += 1) { + let price = + basePrice * Game.priceIncrease ** Math.max(0, startingAmount - free); price = Game.modifyBuildingPrice(build, price); price = Math.ceil(price); moni += price; - start++; + startingAmount += 1; } return moni; } diff --git a/src/Sim/SimulationEvents/BuyBuildingBonusIncome.js b/src/Sim/SimulationEvents/BuyBuildingBonusIncome.js index 0e8539e7..ceb745c3 100644 --- a/src/Sim/SimulationEvents/BuyBuildingBonusIncome.js +++ b/src/Sim/SimulationEvents/BuyBuildingBonusIncome.js @@ -33,14 +33,14 @@ export default function BuyBuildingsBonusIncome(building, amount) { if (me.amount >= 700) SimWin('Gotta hand it to you'); if (me.amount >= 800) SimWin("The devil's workshop"); } else { - for (const j in Game.Objects[me.name].tieredAchievs) { + Object.keys(Game.Objects[me.name].tieredAchievs).forEach((j) => { if ( me.amount >= Game.Tiers[Game.Objects[me.name].tieredAchievs[j].tier].achievUnlock ) { SimWin(Game.Objects[me.name].tieredAchievs[j].name); } - } + }); } const lastAchievementsOwned = SimAchievementsOwned; diff --git a/src/Sim/SimulationEvents/BuyUpgrades.js b/src/Sim/SimulationEvents/BuyUpgrades.js index e5448bde..9e03266d 100644 --- a/src/Sim/SimulationEvents/BuyUpgrades.js +++ b/src/Sim/SimulationEvents/BuyUpgrades.js @@ -34,9 +34,9 @@ function MouseCps() { if (SimHas('Octillion fingers')) add *= 20; if (SimHas('Nonillion fingers')) add *= 20; let num = 0; - for (const i of Object.keys(SimObjects)) { + Object.keys(SimObjects).forEach((i) => { num += SimObjects[i].amount; - } + }); num -= SimObjects.Cursor.amount; add *= num; @@ -83,10 +83,10 @@ function MouseCps() { } } - for (const i of Object.keys(Game.buffs)) { + Object.keys(Game.buffs).forEach((i) => { if (typeof Game.buffs[i].multClick !== 'undefined') mult *= Game.buffs[i].multClick; - } + }); // if (CM.Sim.auraMult('Dragon Cursor')) mult*=1.05; mult *= 1 + SimAuraMult('Dragon Cursor') * 0.05; @@ -132,10 +132,10 @@ export default function BuyUpgradesBonusIncome(upgrade) { } const me = SimUpgrades[upgrade]; if (Game.CountsAsUpgradeOwned(Game.Upgrades[upgrade].pool)) - SimUpgradesOwned++; + SimUpgradesOwned += 1; if (upgrade === 'Elder Pledge') { - SimPledges++; + SimPledges += 1; if (SimPledges > 0) SimWin('Elder nap'); if (SimPledges >= 5) SimWin('Elder slumber'); } else if (upgrade === 'Elder Covenant') { diff --git a/src/Sim/SimulationEvents/GodChange.js b/src/Sim/SimulationEvents/GodChange.js new file mode 100644 index 00000000..b86e7800 --- /dev/null +++ b/src/Sim/SimulationEvents/GodChange.js @@ -0,0 +1,34 @@ +/* eslint-disable no-unused-vars */ +import CalculateGains from '../Calculations/CalculateGains'; +import CheckOtherAchiev from '../Calculations/CheckOtherAchiev'; +import CopyData from '../SimulationData/CopyData'; +import { + SimAchievementsOwned, + SimCookiesPs, + SimGod1, + SimGod2, + SimGod3, +} from '../VariablesAndData'; + +/** + * This functions calculates the cps and cost of changing a Dragon Aura + * It is called by CM.Disp.AddAuraInfo() + * @param {number} god The number of the slot to be swapped in + * * @param {number slot The slot the god will go to + * @returns {number} CM.Sim.cookiesPs - Game.cookiesPs The bonus cps and the price of the change + */ +export default function CalculateChangeGod(god, slot) { + CopyData(); + if (slot === 0) SimGod1 = god; + else if (slot === 1) SimGod2 = god; + else if (slot === 2) SimGod3 = god; + + const lastAchievementsOwned = SimAchievementsOwned; + CalculateGains(); + + CheckOtherAchiev(); + if (lastAchievementsOwned !== SimAchievementsOwned) { + CalculateGains(); + } + return SimCookiesPs - Game.cookiesPs; +} diff --git a/src/Sim/SimulationEvents/SellBuilding.js b/src/Sim/SimulationEvents/SellBuilding.js index 81e01e7b..c1386f19 100644 --- a/src/Sim/SimulationEvents/SellBuilding.js +++ b/src/Sim/SimulationEvents/SellBuilding.js @@ -22,21 +22,26 @@ export default function BuildingSell( ) { // Calculate money gains from selling buildings // If noSim is set, use Game methods to compute price instead of Sim ones. - noSim = typeof noSim === 'undefined' ? 0 : noSim; + const noSimRes = typeof noSim === 'undefined' ? 0 : noSim; + let toChange = amount; + let startingAmount = start; let moni = 0; - if (amount === -1) amount = start; - if (!amount) amount = Game.buyBulk; - for (let i = 0; i < amount; i++) { - let price = basePrice * Game.priceIncrease ** Math.max(0, start - free); - price = noSim + if (amount === -1) toChange = startingAmount; + if (!amount) toChange = Game.buyBulk; + for (let i = 0; i < toChange; i++) { + let price = + basePrice * Game.priceIncrease ** Math.max(0, startingAmount - free); + price = noSimRes ? Game.modifyBuildingPrice(build, price) : SimModifyBuildingPrice(build, price); price = Math.ceil(price); - const giveBack = noSim ? build.getSellMultiplier() : SimGetSellMultiplier(); + const giveBack = noSimRes + ? build.getSellMultiplier() + : SimGetSellMultiplier(); price = Math.floor(price * giveBack); - if (start > 0) { + if (startingAmount > 0) { moni += price; - start--; + startingAmount -= 1; } } return moni; diff --git a/src/Sim/SimulationEvents/SellBuildingForChoEgg.js b/src/Sim/SimulationEvents/SellBuildingForChoEgg.js index 8f0e5b30..49c19efb 100644 --- a/src/Sim/SimulationEvents/SellBuildingForChoEgg.js +++ b/src/Sim/SimulationEvents/SellBuildingForChoEgg.js @@ -21,10 +21,10 @@ export default function SellBuildingsForChoEgg() { // Change auras to Earth Shatterer + Reality bending to optimize money made by selling let buildingsToSacrifice = 2; if (SimDragonAura === 5 || SimDragonAura === 18) { - --buildingsToSacrifice; + buildingsToSacrifice -= 1; } if (SimDragonAura2 === 5 || SimDragonAura2 === 18) { - --buildingsToSacrifice; + buildingsToSacrifice -= 1; } SimDragonAura = 5; SimDragonAura2 = 18; @@ -32,17 +32,17 @@ export default function SellBuildingsForChoEgg() { // Sacrifice highest buildings for the aura switch for (let i = 0; i < buildingsToSacrifice; ++i) { let highestBuilding = 'Cursor'; - for (const j in SimObjects) { + Object.keys(SimObjects).forEach((j) => { if (SimObjects[j].amount > 0) { highestBuilding = j; } - } - SimObjects[highestBuilding].amount--; - SimBuildingsOwned--; + }); + SimObjects[highestBuilding].amount -= 1; + SimBuildingsOwned -= 1; } // Get money made by selling all remaining buildings - for (const i of Object.keys(SimObjects)) { + Object.keys(SimObjects).forEach((i) => { const me = SimObjects[i]; sellTotal += BuildingSell( Game.Objects[me.name], @@ -51,7 +51,7 @@ export default function SellBuildingsForChoEgg() { Game.Objects[i].free, me.amount, ); - } + }); return sellTotal; } diff --git a/src/Sim/VariablesAndData.js b/src/Sim/VariablesAndData.js index 44f19ab3..0fafbeca 100644 --- a/src/Sim/VariablesAndData.js +++ b/src/Sim/VariablesAndData.js @@ -12,6 +12,9 @@ export let SimHeavenlyPower; export let SimPrestige; export let SimDragonAura; export let SimDragonAura2; +export let SimGod1; +export let SimGod2; +export let SimGod3; export let SimDoSims; export let SimEffs; export let SimDateCentury = Game.startDate; diff --git a/webpack.config.js b/webpack.config.js index 41e981f5..7142da38 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,19 +1,22 @@ /** We know this is not how Webpack should be used, but we are slowly transferring our code. * For now this is how at least start to create a structure that allows us to transfer towards * more modular code. Any help is highly appreciated. -*/ + */ const path = require('path'); module.exports = function (env) { - return { - mode: 'production', - devtool: env.production ? 'source-map' : 'eval-source-map', - entry: { - CookieMonster: { import: './src/CookieMonster.js', filename: './CookieMonster.js' }, - }, - output: { - filename: 'CookieMonster.js', - path: path.resolve(__dirname, 'dist'), - }, - }; + return { + mode: 'production', + devtool: env.production ? 'source-map' : 'eval-source-map', + entry: { + CookieMonster: { + import: './src/CookieMonster.js', + filename: './CookieMonster.js', + }, + }, + output: { + filename: 'CookieMonster.js', + path: path.resolve(__dirname, 'dist'), + }, + }; };