diff --git a/dist/CookieMonster.js b/dist/CookieMonster.js index 493fe15..35ecd77 100644 --- a/dist/CookieMonster.js +++ b/dist/CookieMonster.js @@ -1,3 +1,3 @@ /*! For license information please see CookieMonster.js.LICENSE.txt */ -(()=>{var e={75: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,a,n,i=(n={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&("loading"!==e.document.readyState?n.pub.init():e.document.addEventListener("DOMContentLoaded",n.pub.init,!1))},installBySelector:function(t,o){if(!(o=o?n.node(o):e.document))throw new Error("Missing root node");for(var a=o.querySelectorAll(t),i=new RegExp("(^|\\s)("+n.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(n.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:(a=e.document.createElement("input"),!(!a.setAttribute||(a.setAttribute("type","color"),"color"!=a.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={},o=arguments[2];return t[i=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={};var a=arguments[1];for(var i in a)a.hasOwnProperty(i)&&(t[i]=a[i]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(n.dataProp))return!0;for(var t=1;t=3&&(a=s[0].match(l))&&(n=s[1].match(l))&&(i=s[2].match(l)))return o.format="rgb",o.rgba=[parseFloat(a[1])||0,parseFloat(n[1])||0,parseFloat(i[1])||0,null],s.length>=4&&(r=s[3].match(l))&&(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}\b|#[0-9A-F]{6}([0-9A-F]{2})?\b|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],a=0;ac[i]&&-a[i]+o[i]+l[i]/2>c[i]/2&&o[i]+l[i]-m[i]>=0?o[i]+l[i]-m[i]:o[i],-a[r]+o[r]+l[r]+m[r]-p+p*s>c[r]?-a[r]+o[r]+l[r]/2>c[r]/2&&o[r]+l[r]-p-p*s>=0?o[r]+l[r]-p-p*s:o[r]+l[r]-p+p*s:o[r]+l[r]-p+p*s>=0?o[r]+l[r]-p+p*s:o[r]+l[r]-p-p*s];else var u=[o[i],o[r]+l[r]-p+p*s];var h=u[i],g=u[r],f=t.fixed?"fixed":"absolute",k=(u[0]+m[0]>o[0]||u[0]0?Math.ceil(s/o):0,n=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),i=e.paletteHeight?Math.min(e.paletteHeight,n):n),a&&(r=a*i+(a-1)*e.paletteSpacing),{cols:o,rows:a,cellW:n,cellH:i,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){return"v"===e.mode.charAt(1).toLowerCase()?"v":"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=n.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!i(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{i(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=n.strList(e),o=0;o127.5},this.hide=function(){d()&&(n.removeClass(a.targetElement,n.pub.activeClassName),n.picker.wrap.parentNode.removeChild(n.picker.wrap),delete n.picker.owner)},this.show=function(){r()},this.redraw=function(){d()&&r()},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()||n.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(n.setDataAttr(this.targetElement,"current-color",t),e&n.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&n.flags.leaveAlpha)&&this.alphaElement){var a=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(a)}e&n.flags.leavePreview||!this.previewElement||((n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),d()&&(s(),l(),c())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var a=[];if(e){a.push({image:n.genColorPreviewGradient(e,t,o?o-n.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var i=n.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);a.push({image:"url('"+i.canvas.toDataURL()+"')",position:(t||"left")+" top",size:i.width+"px "+i.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else a.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},s=0;s=0;u-=1){var h=p[u];if(h)if(n.pub.presets.hasOwnProperty(h)){for(var m in n.pub.presets[h])if(n.pub.presets[h].hasOwnProperty(m))try{i(m,n.pub.presets[h][m])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",h)}var g=["preset"];for(var m in o)if(o.hasOwnProperty(m)&&-1===g.indexOf(m))try{i(m,o[m])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=n.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=n.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 n.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,n.addClass(this.targetElement,n.pub.className),n.instances.push(this),n.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),n.isButtonEmpty(this.targetElement))){n.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var f=n.getCompStyle(this.targetElement);(parseFloat(f["min-width"])||0)-1){var y=n.parseColorString(C);this._currentFormat=y?y.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(C),void 0!==M&&this.processAlphaInput(M),this.random&&this.randomize.apply(this,Array.isArray(this.random)?this.random:[])}},n.pub.className="jscolor",n.pub.activeClassName="jscolor-active",n.pub.looseJSON=!0,n.pub.presets={},n.pub.presets.default={},n.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},n.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},n.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},n.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},n.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},n.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},n.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},n.pub.sliderInnerSpace=3,n.pub.chessboardSize=8,n.pub.chessboardColor1="#666666",n.pub.chessboardColor2="#999999",n.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],n.pub.init=function(){if(!n.initialized)for(e.document.addEventListener("mousedown",n.onDocumentMouseDown,!1),e.document.addEventListener("keyup",n.onDocumentKeyUp,!1),e.addEventListener("resize",n.onWindowResize,!1),e.addEventListener("scroll",n.onWindowScroll,!1),n.appendDefaultCss(),n.pub.install(),n.initialized=!0;n.readyQueue.length;)n.readyQueue.shift()()},n.pub.install=function(e){var t=!0;try{n.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(n.pub.lookupClass)try{n.installBySelector("input."+n.pub.lookupClass+", button."+n.pub.lookupClass,e)}catch(e){}return t},n.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(n.initialized?e():n.readyQueue.push(e),!0)},n.pub.trigger=function(e){var t=function(){n.triggerGlobal(e)};n.initialized?t():n.pub.ready(t)},n.pub.hide=function(){n.picker&&n.picker.owner&&n.picker.owner.hide()},n.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),n.genColorPreviewCanvas(e).canvas.toDataURL()},n.pub.background=function(e){var t=[];t.push(n.genColorPreviewGradient(e));var o=n.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},n.pub.options={},n.pub.lookupClass="jscolor",n.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+n.docsRef),!1},n.register(),n.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=i),i}))}},t={};function o(a){var n=t[a];if(void 0!==n)return n.exports;var i=t[a]={exports:{}};return e[a].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 a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";class e{constructor(e,t,o){this.defaultValue=e,this.type=t,this.group=o}}function t(e,t){Game.promptWrapL.className="framed",Game.promptL.innerHTML=`${e}
`,Object.keys(t).forEach((e=>{const o=document.createElement("a");o.id=`promptOption${e}`,o.className="option",o.onclick=function(){PlaySound("snd/tick.mp3"),t[e][1]()},o.textContent=t[e][0],Game.promptL.children[1].appendChild(o)})),Game.promptAnchorL.style.display="block",Game.darkenL.style.display="block",Game.promptL.focus(),Game.promptOn=1,Game.UpdatePrompt()}function a(e,t,o,n){(1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&3===t&&!1===window.cookieMonsterFrameworkData.isInitializing||1===t?(l("CMFlashScreen").style.backgroundColor=Game.mods.cookieMonsterFramework.saveData[e].settings[`Colour${o}`],l("CMFlashScreen").style.opacity="0.5",3===t?(l("CMFlashScreen").style.display="inline",setTimeout((()=>{a(e,2,o,!0)}),1e3/Game.fps)):setTimeout((()=>{a(e,0,o,!0)}),1e3/Game.fps)):2===t?(l("CMFlashScreen").style.opacity="1",setTimeout((()=>{a(e,1,o,!0)}),1e3/Game.fps)):0===t&&(l("CMFlashScreen").style.display="none")}function n(){Object.keys(Game.mods.cookieMonsterFramework.saveData).forEach((e=>{const t=JSON.stringify(Game.mods.cookieMonsterFramework.saveData[e]),o=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),a=new RegExp(`${e}.*(;|$)`),n=o.match(a);if(null!==n){const a=o.replace(n[0],`${e}:${t}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(a)}!END!`))}}))}function i(e,t){void 0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]&&(Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1),0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]?Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1:Game.mods.cookieMonsterFramework.saveData[e].headers[t]=0,n()}var r=o(75),s=o.n(r);function c(e,t,o,a,n){if((1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&!1===window.cookieMonsterFrameworkData.isInitializing){const o=new Audio(t);Game.mods.cookieMonsterFramework.saveData[e].settings.GeneralSound?o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100*(Game.volume/100):o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100,o.play()}}function d(e,t){null!==l(`slider${e}${t}`)&&(l(`slider${e}${t}right`).innerHTML=`${l(`slider${e}${t}`).value}%`,Game.mods.cookieMonsterFramework.saveData[e].settings[t]=Math.round(l(`slider${e}${t}`).value)),n()}function m(e,t){t.disconnect(),"log"===Game.onMenu?function(){const e=l("menu").children[1];if(e.insertBefore(function(){const e=document.createElement("div");e.className="subsection",e.id="cookieMonsterFrameworkMenuSection";const t=document.createElement("div");t.className="title",t.innerHTML="Cookie Monster Mod Family";const o=document.createElement("span");if(o.style.cursor="pointer",o.style.display="inline-block",o.style.height="14px",o.style.width="14px",o.style.borderRadius="7px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="13px",o.style.verticalAlign="middle",o.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu?"-":"+",o.onclick=function(){i("cookieMonsterFramework","infoMenu"),Game.UpdateMenu()},t.appendChild(o),e.appendChild(t),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const t=document.createElement("div");t.className="listing",t.innerHTML='Cookie Monster Team\noffers a suite of tools to enhance your game experience.
\nOriginally known from our work on the Cookie Monster add-on we are now expanding and working on new tools within the Cookie Monster Mod Family.
\nKeep an eye on our GitHub to see future work or use it to report bugs or feature requests!
\n',e.appendChild(t)}return e}(),e.children[1]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const e=Game.mods.cookieMonsterFramework.listeners.infoMenu;for(let t=0;t{void 0===e.settings||void 0===e.settings[o]?n[o]=t[o].defaultValue:n[o]=e.settings[o]})),a.settings=n;const i={};return Object.keys(o).forEach((t=>{void 0===e.headers||void 0===e.headers[t]?i[t]=o[t]:i[t]=e.headers[t]})),a.headers=i,Object.keys(e).forEach((t=>{"settings"!==t&&"headers"!==t&&(a[t]=e[t])})),void 0===a.favouriteSettings&&(a.favouriteSettings=[]),a}(r,o,a),n(),i(),Object.keys(Game.mods.cookieMonsterFramework.saveData[e].settings).forEach((e=>{void 0!==o[e].func&&o[e].func()})),Game.UpdateMenu()}function g(){}const f={};function k(e){h("cookieMonsterFramework",e,f,u,g)}const C={init:function(){window.cookieMonsterFrameworkData={isInitializing:!0},new MutationObserver(m).observe(document.getElementById("menu"),{attributes:!0,childList:!0,subtree:!0}),function(){const e=document.createElement("div");e.id="CMFlashScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",e.style.pointerEvents="none",l("wrapper").appendChild(e)}(),Game.registerHook("draw",p),void 0===Game.modSaveData.cookieMonsterFramework&&k("{}"),window.cookieMonsterFrameworkData.isInitializing=!1},load:k,save:function(){return JSON.stringify(Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework)},listeners:{infoMenu:[],optionsMenu:[]},saveData:{cookieMonsterFramework:{headers:{},settings:{}}}},M=function(){"undefined"==typeof cookieMonsterFrameworkData&&Game.registerMod("cookieMonsterFramework",C)},y=function(e){Game.mods.cookieMonsterFramework.saveData[e]={favouriteSettings:[],headers:{},settings:{}}},b={createInfoListing:function(e){const t=document.createElement("div");return t.className="listing",t.innerHTML=e,t},createOptionsListing:function(e,o,i,m,p){const u=document.createElement("div");if(u.className="listing",1===Game.mods.cookieMonsterFramework.saveData[e].settings.FavouriteSettings&&u.appendChild(function(e,t,o){const a=document.createElement("a");return o.includes(t)?(a.innerText="★",a.style.color="yellow"):a.innerText="☆",a.className="option",a.onclick=function(){!function(e,t){Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.includes(t)?Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings=Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.filter((e=>e!==t)):Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.push(t),n()}(e,t),n(),Game.UpdateMenu()},a.onmouseover=function(){Game.tooltip.draw(this,escape('
Click to set this setting as favourite and show it in \'favourite\' settings at the top of the Cookie Monster Settings
'))},a.onmouseout=function(){Game.tooltip.hide()},a.appendChild(document.createTextNode(" ")),a}(e,o,Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings)),"bool"===i[o].type){const t=document.createElement("a");i[o].toggle&&0===Game.mods.cookieMonsterFramework.saveData[e].settings[o]?t.className="option off":t.className="option",t.id=`${e}Options${o}`,t.onclick=function(){!function(e,t,o){Game.mods.cookieMonsterFramework.saveData[e].settings[t]+=1,Game.mods.cookieMonsterFramework.saveData[e].settings[t]===o[t].label.length?(Game.mods.cookieMonsterFramework.saveData[e].settings[t]=0,o[t].toggle&&(l(`${e}Options${t}`).className="option off")):l(`${e}Options${t}`).className="option",void 0!==o[t].func&&o[t].func(),n()}(e,o,i),Game.UpdateMenu()},t.textContent=i[o].label[Game.mods.cookieMonsterFramework.saveData[e].settings[o]],u.appendChild(t);const a=document.createElement("label");return a.textContent=i[o].desc,a.style.lineHeight="1.6",u.appendChild(a),u}if("vol"===i[o].type){const t=document.createElement("div");t.className="sliderBox";const a=document.createElement("div");a.style.float="left",a.innerHTML=i[o].desc,t.appendChild(a);const n=document.createElement("div");n.id=`slider${e}${o}right`,n.style.float="right",n.innerHTML=`${Game.mods.cookieMonsterFramework.saveData[e].settings[o]}%`,t.appendChild(n);const r=document.createElement("input");r.className="slider",r.id=`slider${e}${o}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.oninput=function(){d(e,o),Game.UpdateMenu()},r.onchange=function(){d(e,o),Game.UpdateMenu()},t.appendChild(r),u.appendChild(t);const s=document.createElement("a");return s.className="option",s.onclick=function(){c(e,Game.mods.cookieMonsterFramework.saveData[e].settings[o.replace("Volume","SoundURL")],o.replace("Volume","Sound"),o,!0)},s.textContent="Test sound",u.appendChild(s),u}if("url"===i[o].type){const a=document.createElement("span");a.className="option",a.textContent=`${i[o].label} `,a.style.lineHeight="1.6",u.appendChild(a);const r=document.createElement("input");r.id=`${e}Options${o}`,r.className="option",r.type="text",r.readOnly=!0,r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.style.width="300px",u.appendChild(r),u.appendChild(document.createTextNode(" "));const s=document.createElement("input");s.id=`${e}Options${o}Prompt`,s.className="option",s.type="text",s.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o];const c=document.createElement("a");c.className="option",c.onclick=function(){t(s.outerHTML,[["Save",function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=l(`${e}Options${o}Prompt`).value,n(),Game.ClosePrompt(),Game.UpdateMenu()}],["Cancel",function(){Game.ClosePrompt()}]])},c.textContent="Edit",u.appendChild(c);const d=document.createElement("label");return d.textContent=i[o].desc,d.style.lineHeight="1.6",u.appendChild(d),u}if("colour"===i[o].type){const t=document.createElement("span");t.className="option";const l=document.createElement("input");l.id=o,l.style.width="65px",l.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],t.appendChild(l),new r(l,{hash:!0,position:"right",onInput:function(){Game.mods.cookieMonsterFramework.saveData[e].settings[this.targetElement.id]=this.toHEXString(),m(),n(),Game.UpdateMenu()}});const c=document.createElement("label");if(c.textContent=i[o].desc,c.style.lineHeight="1.6",t.appendChild(c),o.includes("Flash")){const n=document.createElement("a");n.className="option",n.onclick=function(){a(e,3,o.replace("Colour",""),!0)},n.textContent="Test flash",t.appendChild(n)}return u.appendChild(t),s().init(),u}if("numscale"===i[o].type){const t=document.createElement("span");t.className="option",t.textContent=`${i[o].label} `,t.style.lineHeight="1.6",u.appendChild(t);const a=document.createElement("input");a.id=`${e}Options${o}`,a.className="option",a.type="number",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],a.min=i[o].min,a.max=i[o].max,a.oninput=function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=this.value,n(),p(),Game.UpdateMenu()},u.appendChild(a),u.appendChild(document.createTextNode(" "));const r=document.createElement("label");return r.textContent=i[o].desc,r.style.lineHeight="1.6",u.appendChild(r),u}if("keycode"===i[o].type){const a=document.createElement("input");a.id=`${e}Options${o}Prompt`,a.className="option",a.type="text",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName;const r=document.createElement("a");r.className="option",r.id=`${e}Options${o}`,r.onclick=function(){t(a.outerHTML,[]),l(`${e}Options${o}Prompt`).addEventListener("keyup",(t=>{!function(e,t,o){const a={key:o.key,altKey:o.altKey,ctrlKey:o.ctrlKey,shiftKey:o.shiftKey,displayName:`${o.shiftKey?"Shift + ":""}${o.altKey?"Alt + ":""}${o.ctrlKey?"Ctrl + ":""}${o.key}`};Game.mods.cookieMonsterFramework.saveData[e].settings[t]=a,n()}(e,o,t),Game.ClosePrompt(),Game.UpdateMenu()}))},r.textContent=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName,u.appendChild(r);const s=document.createElement("label");return s.textContent=i[o].desc,s.style.lineHeight="1.6",u.appendChild(s),u}return u},createOptionsSubHeader:function(e,t,o){const a=document.createElement("div");a.className="title",a.style.opacity="0.7",a.style.fontSize="17px",a.appendChild(document.createTextNode(`${o} `));const n=document.createElement("span");return 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=Game.mods.cookieMonsterFramework.saveData[e].headers[t]?"-":"+",n.onclick=function(){i(e,t),Game.UpdateMenu()},a.appendChild(n),a}},G=function(e,t,o){const a=document.createElement("div");a.className="subsection",a.id=`${e}MenuSection`;const n=document.createElement("div");n.className="title",n.style.fontSize="18px",n.innerHTML=t;const r=document.createElement("span");return r.style.cursor="pointer",r.style.display="inline-block",r.style.height="14px",r.style.width="14px",r.style.borderRadius="7px",r.style.textAlign="center",r.style.backgroundColor="#C0C0C0",r.style.color="black",r.style.fontSize="13px",r.style.verticalAlign="middle",r.textContent=Game.mods.cookieMonsterFramework.saveData[e].headers[o]?"-":"+",r.onclick=function(){i(e,o),Game.UpdateMenu()},n.appendChild(r),a.appendChild(n),a},v={createFlash:a,createNotification:function(e,t,o,a){1===Game.mods.cookieMonsterFramework.saveData[e].settings[t]&&"hidden"===document.visibilityState&&!1===window.cookieMonsterFrameworkData.isInitializing&&new Notification(o,{body:a,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})},cookieMonsterPrompt:t,playCMSound:c},w={loadMod:h,saveFramework:n},x=class extends e{constructor(e,t,o,a){super(e,t,o),this.desc=a}},T=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.min=i,this.max=r}},S=class extends e{constructor(e,t,o,a,n,i){super(e,t,o),this.label=a,this.desc=n,this.toggle=i}},F=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.toggle=i,void 0!==r&&(this.func=r)}},E=class extends e{constructor(e,t,o,a,n){super(e,t,o),this.label=a,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}};function B(){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons&&Game.elderWrath?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")}let P,N,O,D,L,A,j,W,$,U,H,R,I,z,V,_,X,Q,q,Y,K,J,Z,ee,te,oe,ae,ne,ie,re,se,le,ce,de,me,pe,ue=0,he=0,ge=0,fe=0,ke=0,Ce=0,Me=0,ye=0,be=0,Ge=0,ve=0,we=0,xe=0,Te=0,Se=0,Fe=1,Ee=1,Be=1,Pe=0,Ne=0,Oe=0,De=0,Le={},Ae={},je={},We={},$e=0,Ue=0,He=[0,null],Re=0,Ie=0,ze={},Ve={},_e={},Xe={},Qe={},qe=0,Ye=0,Ke=[],Je=0,Ze=0,et=[],tt=0,ot=0,at=[],nt=0,it=0,rt=[],st=0,lt=0,ct={},dt={},mt=0,pt=0,ut=0,ht=[],gt={},ft=0,kt={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]},Ct=[],Mt=[],yt=[];function bt(e){let t=0;return Game.dragonAuras[ne].name!==e&&Game.dragonAuras[ie].name!==e||(t=1),("Reality Bending"===Game.dragonAuras[ne].name||"Reality Bending"===Game.dragonAuras[ie].name&&Game.dragonLevel>=Game.dragonAurasBN[e].id+4)&&(t+=.1),t}function Gt(){let e=.25;return e*=1+bt("Earth Shatterer"),e}function vt(e,t){return void 0===de[e]?void 0===t?1:t:de[e]}function wt(e){const t=Mt[e];return(!t||1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function xt(e){return Game.dragonAuras[ne].name===e||Game.dragonAuras[ie].name===e}function Tt(e){if(Game.hasGod){void 0===Ct.Temple.minigame&&(Ct.Temple.minigame=Game.Objects.Temple.minigame);const t=Ct.Temple.minigame.gods[e];if(re===t.id)return 1;if(se===t.id)return xt("Supreme Intellect")?1:2;if(le===t.id)return xt("Supreme Intellect")?2:3}return!1}function St(e,t){let o=t;if(wt("Season savings")&&(o*=.99),wt("Santa's dominion")&&(o*=.99),wt("Faberge egg")&&(o*=.99),wt("Divine discount")&&(o*=.99),wt("Fortune #100")&&(o*=.99),o*=1-.02*bt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&wt(e.fortune.name)&&(o*=.93),o*=vt("buildingCost"),Ct.Temple.minigameLoaded){const e=Tt("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function Ft(e,t,o,a,n,i){const r=void 0===i?0:i;let s=n,l=o,c=0;-1===n&&(s=l),n||(s=Game.buyBulk);for(let o=0;o0&&(c+=o,l-=1)}return c}const Et=["","","M","G","T","P","E","Z","Y"],Bt=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],Pt=["","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 Nt,Ot,Dt,Lt,At,jt,Wt,$t,Ut,Ht,Rt,It,zt,Vt,_t,Xt,Qt,qt=[],Yt=[],Kt=[],Jt={},Zt=Date.now(),eo=Date.now();function to(e,t,o){const a=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleDecimals+1;if(e===1/0)return"Infinity";if(void 0===e)return"0";if(0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale)return Jt.Beautify(e,t);if(Number.isFinite(e)){if(e<0)return`-${to(Math.abs(e))}`;let n="";if(0===e)return e.toString();if(e>.001&&e=.01&&e=.01&&e=.01&&e{l(`productPrice${Game.Objects[e].id}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[`Colour${t[e].colour}`]})),l(`storeBulk${ut}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(Le).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=to(Ft(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(Le).map((e=>{const t={};return t.name=e,t.pp=Le[e].pp,t.colour=Le[e].colour,t})),e.sort(((e,t)=>go.indexOf(e.colour)===go.indexOf(t.colour)?e.pp-t.pp:go.indexOf(e.colour)-go.indexOf(t.colour)))):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(t).map((e=>{const o={};return o.name=e,o.pp=t[e].pp,o.colour=t[e].colour,o})),e.sort(((e,t)=>go.indexOf(e.colour)===go.indexOf(t.colour)?e.pp-t.pp:go.indexOf(e.colour)-go.indexOf(t.colour)))):3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings&&(e=Object.keys(We).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t.amountUntilNext=We[e].AmountNeeded,t.priceUntilNext=We[e].price,t})),e.sort(((e,t)=>e.id-t.id)),e.sort(((e,t)=>(101!==e.amountUntilNext?e.priceUntilNext:1/0)-(101!==t.amountUntilNext?t.priceUntilNext:1/0)))):(e=Object.keys(Le).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t})),e.sort(((e,t)=>e.id-t.id)));for(let t=0;t{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradesNeverCollapse||"products"===e.id?e.style.height="auto":"vaultUpgrades"===e.id?(e.style.height="",e.style.minHeight="0px"):"upgrades"===e.id?(e.style.height="",e.className.includes("hasMenu")?e.style.minHeight="82px":e.style.minHeight="60px"):(e.style.height="",e.style.minHeight="60px")}))}function Uo(){if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour>0){let e=0,t=0,o=0,a=0,n=0,i=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;ego.indexOf(e.colour)===go.indexOf(t.colour)?e.pp-t.pp:go.indexOf(e.colour)-go.indexOf(t.colour))):e.sort(((e,t)=>e.price-t.price));const t=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let o=0;o7776e5)return t?"Over 9000 days!":">9000d";l+=a>0?a+(t?1===a?" year":" years":"y")+", ":"",(l.length>0||n>0)&&(l+=n+(t?1===n?" day":" days":"d")+", "),(l.length>0||i>0)&&(l+=i+(t?1===i?" hour":" hours":"h")+", "),(l.length>0||r>0)&&(l+=r+(t?1===r?" minute":" minutes":"m")+", "),l+=s+(t?1===s?" second":" seconds":"s")}else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat){if(o>315576e4)return"XX:XX:XX:XX:XX";l+=(a<10?"0":"")+a+":",l+=(n<10?"0":"")+n+":",l+=(i<10?"0":"")+i+":",l+=(r<10?"0":"")+r+":",l+=(s<10?"0":"")+s}else{if(o>7776e5)return t?"Over 9000 days!":">9000d";a>0?(l+=a+(t?1===a?" year":" years":"y")+", ",l+=n+(t?1===n?" day":" days":"d")):n>0?(l+=n+(t?1===n?" day":" days":"d")+", ",l+=i+(t?1===i?" hour":" hours":"h")):i>0?(l+=i+(t?1===i?" hour":" hours":"h")+", ",l+=r+(t?1===r?" minute":" minutes":"m")):r>0?(l+=r+(t?1===r?" minute":" minutes":"m")+", ",l+=s+(t?1===s?" second":" seconds":"s")):l+=s+(t?1===s?" second":" seconds":"s")}return l}function zo(e){let t,o;return e<=0?(o=1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat?"00:00:00:00:00":"Done!",t=ro):(o=Io(e),t=e>300?co:e>60?lo:so),{text:o,colour:t}}function Vo(){return Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CPSMode?X:0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(1-Game.cpsSucked):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(Re+(1-.05*Ie)):null!==He[1]&&2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink&&1===Game.wrinklers[He[1]].type?Game.cookiesPs*(3*Re/Ie+(1-.05*Ie)):Game.cookiesPs*(Re/Ie+(1-.05*Ie))}function _o(){return 1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?$e:2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?He[0]:0}function Xo(e,t,o){const a=document.createElement("div");a.id=e,a.style.height="12px",a.style.margin="0px 10px",a.style.position="relative";const n=document.createElement("div");n.style.width="100%",n.style.height="10px",n.style.margin="auto",n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.right="0px",n.style.bottom="0px";const i=document.createElement("span");i.style.display="inline-block",i.style.textAlign="right",i.style.fontSize="10px",i.style.width="108px",i.style.marginRight="5px",i.style.verticalAlign="text-top",i.textContent=t,n.appendChild(i);for(let e=0;e{let o,a=Game.buyBulk;1===Game.buyMode?vo=a:a=vo,1===a&&(a=Le),10===a&&(a=Ae),100===a&&(a=je),e+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[e].childNodes[1].textContent=Game.Objects[t].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[e].textContent=to(a[t].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].className=oo+a[t].colour,o=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime?Io(Math.round(a[t].pp)):to(Math.round(a[t].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].textContent=o;const n=zo((Game.Objects[t].bulkPrice-(Game.cookies+_o()))/Vo());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[e].className=oo+n.colour,"Done!"===n.text&&Game.cookies{if(!Game.Tiers[e.tieredUpgrades[o].tier].special&&wt(e.tieredUpgrades[o].name)){let a=2;1!==Game.ascensionMode&&wt(e.unshackleUpgrade)&&wt(Game.Tiers[e.tieredUpgrades[o].tier].unshackleUpgrade)&&(a+=1===e.id?.5:.1*(20-e.id)),t*=a}})),Object.keys(e.synergies).forEach((o=>{if(wt(e.synergies[o].name)){const a=e.synergies[o];a.buildingTie1.name===e.name?t*=1+.05*a.buildingTie2.amount:a.buildingTie2.name===e.name&&(t*=1+.001*a.buildingTie1.amount)}})),e.fortune&&wt(e.fortune.name)&&(t*=1.07),e.grandma&&wt(e.grandma.name)&&(t*=1+.01*Ct.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&wt(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06;break;default:t*=1}return t}function na(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;wt("Thousand fingers")&&(t+=.1),wt("Million fingers")&&(t*=5),wt("Billion fingers")&&(t*=10),wt("Trillion fingers")&&(t*=20),wt("Quadrillion fingers")&&(t*=20),wt("Quintillion fingers")&&(t*=20),wt("Sextillion fingers")&&(t*=20),wt("Septillion fingers")&&(t*=20),wt("Octillion fingers")&&(t*=20),wt("Nonillion fingers")&&(t*=20),wt("Decillion fingers")&&(t*=20),wt("Undecillion fingers")&&(t*=20),wt("Unshackled cursors")&&(t*=25);let o=1,a=0;return Object.keys(Ct).forEach((e=>{"Cursor"!==Ct[e].name&&(a+=Ct[e].amount)})),t*=a,o*=aa(e),o*=Game.magicCpS("Cursor"),o*=vt("cursorCps"),Game.ComputeCps(.1,wt("Reinforced index finger")+wt("Carpal tunnel prevention cream")+wt("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{wt(Game.GrandmaSynergies[e])&&(o*=2)})),wt("Bingo center/Research facility")&&(o*=4),wt("Ritual rolling pins")&&(o*=2),wt("Naughty list")&&(o*=2),wt("Elderwort biscuits")&&(o*=1.02),o*=vt("grandmaCps"),wt("Cat ladies"))for(let e=0;e{"Grandma"!==Ct[e].name&&(n+=Ct[e].amount)})),o*=1+.01*bt("Elder Battalion")*n,o*=Game.magicCpS(t.name),(t.baseCps+a)*o}:o.cps=function(e){let t=1;return t*=aa(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.unshackleUpgrade=t.unshackleUpgrade,o}function ia(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(Ct).forEach((t=>{Ct[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(wt("Starlove")&&(e=3),Game.hasGod){const t=Tt("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 ra(){Z=Game.UpgradesOwned,ee=Game.pledges,te=Game.AchievementsOwned,oe=Game.heavenlyPower,ae=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Ct[e];void 0===o&&(Ct[e]=na(e),o=Ct[e],Qo(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&&(re=t.minigame.slot[0],se=t.minigame.slot[1],le=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Ct[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=Mt[e];void 0===o&&(Mt[e]=ia(e),o=Mt[e]),o.bought=t.bought,Mt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=yt[e];void 0===o&&(yt[e]=oa(e),o=yt[e]),o.won=t.won,yt[e]=o})),ta(),ne=ue,ie=he}function sa(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className=oo+io,t.textContent=e,t}function la(e){e.appendChild(sa("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(sa("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(sa("Payback Period"));const a=document.createElement("div");a.style.marginBottom="4px",a.id="CMTooltipPP",e.appendChild(a),e.appendChild(sa("Time Left"));const n=document.createElement("div");if(n.id="CMTooltipTime",e.appendChild(n),"b"===Po){e.appendChild(sa("Production left till next achievement")),e.lastChild.id="CMTooltipProductionLeftHeader";const t=document.createElement("div");t.id="CMTooltipProductionLeft",e.appendChild(t)}if("b"===Po){e.appendChild(sa("Buildings (price / PP) left till next achievement")),e.lastChild.id="CMTooltipNextAchievementHeader";const t=document.createElement("div");t.id="CMTooltipNextAchievement",e.appendChild(t)}}function ca(e,t){let o="";return o=e.pp<=0||e.pp===1/0?po:e.pp0&&(o=co),o}function da(){let e=1;return Object.keys(Game.buffs).forEach((t=>{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function ma(e){yt[e]&&0===yt[e].won&&(yt[e].won=1,"shadow"!==Game.Achievements[e].pool&&(te+=1))}function pa(){me=0;let e=1;const t={};Object.keys(Game.Objects).forEach((e=>{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]}))}})),de=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(ae)*oe*function(){let e=0;if(wt("Heavenly chip secret")&&(e+=.05),wt("Heavenly cookie stand")&&(e+=.2),wt("Heavenly bakery")&&(e+=.25),wt("Heavenly confectionery")&&(e+=.25),wt("Heavenly key")&&(e+=.25),e*=1+.05*bt("Dragon God"),wt("Lucky digit")&&(e*=1.01),wt("Lucky number")&&(e*=1.01),wt("Lucky payout")&&(e*=1.01),Game.hasGod){const t=Tt("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=vt("cps"),wt("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];wt(o.name)&&("function"==typeof o.power?e*=1+.01*Mt[o.name].power(Mt[o.name]):e*=1+.01*o.power)})),wt("Specialized chocolate chips")&&(e*=1.01),wt("Designer cocoa beans")&&(e*=1.02),wt("Underworld ovens")&&(e*=1.03),wt("Exotic nuts")&&(e*=1.04),wt("Arcane sugar")&&(e*=1.05),wt("Increased merriness")&&(e*=1.15),wt("Improved jolliness")&&(e*=1.15),wt("A lump of coal")&&(e*=1.01),wt("An itchy sweater")&&(e*=1.01),wt("Santa's dominion")&&(e*=1.2),wt("Fortune #100")&&(e*=1.01),wt("Fortune #101")&&(e*=1.07),wt("Dragon scale")&&(e*=1.03);let o=1;if(Tt){let t=Tt("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=Tt("ages"),1===t?e*=1+.15*Math.sin(Zt/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Zt/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Zt/1e3/86400*Math.PI*2)),t=Tt("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=Tt("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=Tt("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}wt("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const a=te/25;let n=1;if(wt("Santa's milk and cookies")&&(n*=1.05),n*=1+.05*bt("Breath of Milk"),Tt){const e=Tt("mother");1===e?n*=1.1:2===e?n*=1.05:3===e&&(n*=1.03)}n*=vt("milk");let i=1;wt("Kitten helpers")&&(i*=1+.1*a*n),wt("Kitten workers")&&(i*=1+.125*a*n),wt("Kitten engineers")&&(i*=1+.15*a*n),wt("Kitten overseers")&&(i*=1+.175*a*n),wt("Kitten managers")&&(i*=1+.2*a*n),wt("Kitten accountants")&&(i*=1+.2*a*n),wt("Kitten specialists")&&(i*=1+.2*a*n),wt("Kitten experts")&&(i*=1+.2*a*n),wt("Kitten consultants")&&(i*=1+.2*a*n),wt("Kitten assistants to the regional manager")&&(i*=1+.175*a*n),wt("Kitten marketeers")&&(i*=1+.15*a*n),wt("Kitten analysts")&&(i*=1+.125*a*n),wt("Kitten executives")&&(i*=1+.115*a*n),wt("Kitten admins")&&(i*=1+.11*a*n),wt("Kitten strategists")&&(i*=1+.105*a*n),wt("Kitten angels")&&(i*=1+.1*a*n),wt("Fortune #103")&&(i*=1+.05*a*n),Object.keys(Ct).forEach((e=>{const t=Ct[e];let i=t.cps(t);1!==Game.ascensionMode&&(i*=(1+.01*t.level)*o),"Grandma"===t.name&&wt("Milkhelp® lactose intolerance relief tablets")&&(i*=1+.05*a*n),me+=t.amount*i})),wt('"egg"')&&(me+=9),e*=i;let r=1;if(wt("Chicken egg")&&(r*=1.01),wt("Duck egg")&&(r*=1.01),wt("Turkey egg")&&(r*=1.01),wt("Quail egg")&&(r*=1.01),wt("Robin egg")&&(r*=1.01),wt("Ostrich egg")&&(r*=1.01),wt("Cassowary egg")&&(r*=1.01),wt("Salmon roe")&&(r*=1.01),wt("Frogspawn")&&(r*=1.01),wt("Shark egg")&&(r*=1.01),wt("Turtle egg")&&(r*=1.01),wt("Ant larva")&&(r*=1.01),wt("Century egg")){let e=10*Math.floor((eo-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),Ne=1+.1*(1-(1-e/100)**3),r*=Ne}e*=r,wt("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+bt("Radiant Appetite");const s=me*e;Object.keys(Game.CpsAchievements).forEach((e=>{s>=Game.CpsAchievements[e].threshold&&ma(Game.CpsAchievements[e].name)})),pe=s;const{n:l}=Game.shimmerTypes.golden,c=bt("Dragon's Fortune");for(let t=0;t{wt(e[o])&&(t+=.1)}))}e*=t}if(wt("Shimmering veil [off]")){let t=.5;wt("Reinforced membrane")&&(t+=.1),wt("Delicate touch")&&(t+=.05),wt("Steadfast murmur")&&(t+=.05),wt("Glittering edge")&&(t+=.05),e*=1+t}wt("Magic shenanigans")&&(e*=1e3),wt("Occult obstruction")&&(e*=0),me=Game.runModHookOnValue("cps",me),e*=da(),me*=e}const ua=["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 #019","Fortune #020","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],ha=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],ga=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],fa=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],ka=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function Ca(e){return yt[e]?yt[e].won:0}function Ma(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{wt(Game.GrandmaSynergies[t])&&(e+=1)})),!Ca("Elder")&&e>=7&&ma("Elder"),!Ca("Veteran")&&e>=14&&ma("Veteran");let t=0,o=1,a=1,n=1e5;Object.keys(Ct).forEach((e=>{t+=Ct[e].amount,n=Math.min(Ct[e].amount,n),Ca("Mathematician")||Ct[e].amount=1&&ma("One with everything"),1===o&&ma("Mathematician"),1===a&&ma("Base 10"),n>=100&&ma("Centennial"),n>=150&&ma("Centennial and a half"),n>=200&&ma("Bicentennial"),n>=250&&ma("Bicentennial and a half"),n>=300&&ma("Tricentennial"),n>=350&&ma("Tricentennial and a half"),n>=400&&ma("Quadricentennial"),n>=450&&ma("Quadricentennial and a half"),n>=500&&ma("Quincentennial"),n>=550&&ma("Quincentennial and a half"),n>=600&&ma("Sexcentennial"),n>=650&&ma("Sexcentennial and a half"),n>=700&&ma("Septcentennial"),t>=100&&ma("Builder"),t>=500&&ma("Architect"),t>=1e3&&ma("Engineer"),t>=2500&&ma("Lord of Constructs"),t>=5e3&&ma("Grand design"),t>=7500&&ma("Ecumenopolis"),t>=1e4&&ma("Myriad"),Z>=20&&ma("Enhancer"),Z>=50&&ma("Augmenter"),Z>=100&&ma("Upgrader"),Z>=200&&ma("Lord of Progress"),Z>=300&&ma("The full picture"),Z>=400&&ma("When there's nothing left to add"),Z>=500&&ma("Kaizen"),Z>=600&&ma("Beyond quality"),Z>=700&&ma("Oft we mar what's well"),t>=4e3&&Z>=300&&ma("Polymath"),t>=8e3&&Z>=400&&ma("Renaissance baker"),Ct.Cursor.amount+Ct.Grandma.amount>=777&&ma("The elder scrolls");let i=!0;Object.keys(ha).forEach((e=>{wt(ha[e])||(i=!1)})),i&&ma("Spooky cookies");let r=!0;if(Object.keys(ga).forEach((e=>{wt(ga[e])||(r=!1)})),r&&ma("Let it snow"),wt("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{wt(e[o].name)&&(t+=1)})),t>=e.length&&ma("O Fortuna")}}function ya(e,t){ra(),Ct[e].amount+=t;const o=Ct[e];"Cursor"===e?(o.amount>=1&&ma("Click"),o.amount>=2&&ma("Double-click"),o.amount>=50&&ma("Mouse wheel"),o.amount>=100&&ma("Of Mice and Men"),o.amount>=200&&ma("The Digital"),o.amount>=300&&ma("Extreme polydactyly"),o.amount>=400&&ma("Dr. T"),o.amount>=500&&ma("Thumbs, phalanges, metacarpals"),o.amount>=600&&ma("With her finger and her thumb"),o.amount>=700&&ma("Gotta hand it to you"),o.amount>=800&&ma("The devil's workshop"),o.amount>=900&&ma("All on deck"),o.amount>=1e3&&ma("A round of applause")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&ma(Game.Objects[o.name].tieredAchievs[e].name)}));const a=te;return pa(),Ma(),a!==te&&pa(),me-Game.cookiesPs}function ba(e,t,o){let a=e,n=0;for(;ae.plantsById[e.plot[No[1]][No[0]][0]-1].mature,o=e.plantsById[e.plot[No[1]][No[0]][0]-1].name;l("CMTooltipBorder").appendChild(sa("Reward (Current / Maximum)"));const a=document.createElement("div");a.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(a),"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${to(60*Game.cookiesPs*3)}`:"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${to(60*Game.cookiesPs*30)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${to(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${to(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===Po?function(){const{minigame:e}=Game.Objects.Farm;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipLump){l("CMTooltipBorder").appendChild(sa("Cookies gained from harvesting:"));let t=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let a=0;a<6;a++)for(let n=0;n<6;n++)if(e.plot[a][n][0]>=1){const i=e.plot[a][n],r=e.plantsById[i[0]-1],s=r.name;let l=!0;o&&r.immortal&&(l=!1),i[1]100+3*(n-1)&&r>0&&(r*=.9),i<5&&(i+=.5*(5-i)),i<5&&r<0&&(r*=.95),Math.max(i+r,1)}(o.val,o.d,e.getRestingVal(o.id),o.mode,Game.Objects.Bank.level);m.textContent="$"+to(p)+(p0&&e=1?l("CMTimerBarAutosaveBar").textContent=Math.ceil(e):l("CMTimerBarAutosaveBar").textContent="",l("CMTimerBarAutosaveTime").textContent=Math.ceil(e),a+=1}else l("CMTimerBarAutosave").style.display="none";if(0!==Game.shimmerTypes.golden.spawned||Game.Has("Golden switch [off]"))l("CMTimerBarGC").style.display="none";else{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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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="";const o=(e=Math.max(0,(Game.shimmerTypes.golden.time-Game.shimmerTypes.golden.minTime)/(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime))**5,Zo*=1-e,1-Zo);l("CMTimerBarGCTime").textContent=`${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)} `,l("CMTimerBarGCTime").textContent+=o<.01?`<${.01.toLocaleString("en",{style:"percent"})}`:o.toLocaleString("en",{style:"percent"}),a+=1}if("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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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="";const e=function(e){return ea*=1-e,1-ea}(Math.max(0,(Game.shimmerTypes.reindeer.time-Game.shimmerTypes.reindeer.minTime)/(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime))**5);l("CMTimerBarRenTime").textContent=`${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)} `,l("CMTimerBarRenTime").textContent+=e<.01?`<${.01.toLocaleString("en",{style:"percent"})}`:e.toLocaleString("en",{style:"percent"}),a+=1}else l("CMTimerBarRen").style.display="none";const n={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((e=>{if(Game.buffs[e]){const t=Xo(Game.buffs[e].name,Game.buffs[e].name,[{id:`${Game.buffs[e].name}Bar`}]);t.style.display="";let i="";i=void 0!==Fo[Game.buffs[e].name]?Fo[Game.buffs[e].name]:mo,t.lastChild.children[1].className=ao+i,t.lastChild.children[1].style.color="black",2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay?t.lastChild.children[1].textContent=`${Math.round(Game.buffs[e].time/Game.buffs[e].maxTime*100)}%`:t.lastChild.children[1].textContent="",t.lastChild.children[1].style.width=`${Math.round(Game.buffs[e].time*(o-8*Math.ceil(Game.buffs[e].time/Game.fps).toString().length)/Game.buffs[e].maxTime)}px`,t.lastChild.children[2].textContent=Math.ceil(Game.buffs[e].time/Game.fps),a+=1,n[Game.buffs[e].name]=t}})),Object.keys(n).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(n[e])})),0!==a&&(l("CMTimerBar").style.height=12*a+2+"px"),Lo!==a&&(Lo=a,Ko())}var e}(),qo(),va(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&1===Mo){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===bo[t]||void 0===bo[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="center",a.id="CMTooltipWrinkler",o.appendChild(a),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),yo=t,bo[t]=1}}else bo[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[yo],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[yo].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Ct.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=to(e)}}(),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),B()}function xa(){P.addLatest(Game.computedMouseCps)}class Ta{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}calcSum(e){let t=e;return t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length),0===t?0:this.queue.slice(-t).reduce(((e,t)=>e+t),0)}}function Sa(e){"Cache"in window.CookieMonsterData||(window.CookieMonsterData.Cache={}),Object.keys(e).forEach((t=>{const o=t.replace(/^Cache/,"");void 0===e[t]?window.CookieMonsterData.Cache[o]=void 0:window.CookieMonsterData.Cache[o]=JSON.parse(JSON.stringify(e[t]))}))}function Fa(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let t=Game.cookies+ft;Game.cpsSucked>0&&(t+=$e),st=Math.max(Game.cookiesEarned,t),t*=.05;const o=e-W,a=Math.max(0,Game.cookies-$)/o,n=Math.max(0,$e-U)/o,i=Math.max(0,He[0]-H)/o,r=Math.max(0,t-De)/o,s=(Game.cookieClicks-R)/o;for(let e=0;e{if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t)e[o].colour=po;else{e[o].colour=ca(e[o],Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t));for(let t=0;t{const a=Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t);Game.cookiesPs?e[o].pp=Math.max(a-(Game.cookies+_o()),0)/Game.cookiesPs+a/e[o].bonus:e[o].pp=a/e[o].bonus,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t||ht.push([e[o].pp,t,a])}))}function Na(){!function(){pt=1/0,ht=[],void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop=0),Pa(Le,1),Pa(Ae,10),Pa(je,100),ht.sort(((e,t)=>e[0]-t[0]));let e=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPOnlyConsiderBuyable)for(;ht[e][2]>Game.cookies&&(e+=1,ht.length!==e+1););pt=ht[e][0],ut=ht[e][1],Ba(Le,1),Ba(Ae,10),Ba(je,100),Sa({CacheMinPP:pt,CacheMinPPBulk:ut,CachePPArray:ht})}(),Object.keys(ze).forEach((e=>{Game.cookiesPs?ze[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+_o()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/ze[e].bonus:ze[e].pp=Game.Upgrades[e].getPrice()/ze[e].bonus,Number.isNaN(ze[e].pp)&&(ze[e].pp=1/0),ze[e].colour=ca(ze[e],Game.Upgrades[e].getPrice())})),window.CookieMonsterData.Objects1=JSON.parse(JSON.stringify(Le)),window.CookieMonsterData.Objects10=JSON.parse(JSON.stringify(Ae)),window.CookieMonsterData.Objects100=JSON.parse(JSON.stringify(je)),window.CookieMonsterData.Upgrades=[],Object.entries(ze).forEach((e=>{window.CookieMonsterData.Upgrades[e[0]]=JSON.parse(JSON.stringify(e[1]))}))}function Oa(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){ra(),"Shimmering veil [on]"===Mt[e].name?Mt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===Mt[e].name?Mt["Golden switch [off]"].bought=0:Mt[e].bought=(Mt[e].bought+1)%2,Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Z+=1),"Elder Pledge"===e?(ee+=1,ee>0&&ma("Elder nap"),ee>=5&&ma("Elder slumber")):"Elder Covenant"===e?ma("Elder calm"):"Prism heart biscuits"===e?ma("Lovely cookies"):"Heavenly key"===e&&ma("Wholesome");const t=te;pa(),Ma(),t!==te&&pa();const o=function(){let e=0;wt("Thousand fingers")&&(e+=.1),wt("Million fingers")&&(e*=5),wt("Billion fingers")&&(e*=10),wt("Trillion fingers")&&(e*=20),wt("Quadrillion fingers")&&(e*=20),wt("Quintillion fingers")&&(e*=20),wt("Sextillion fingers")&&(e*=20),wt("Septillion fingers")&&(e*=20),wt("Octillion fingers")&&(e*=20),wt("Nonillion fingers")&&(e*=20),wt("Decillion fingers")&&(e*=20),wt("Undecillion fingers")&&(e*=20),wt("Unshackled cursors")&&(e*=25);let t=0;Object.keys(Ct).forEach((e=>{t+=Ct[e].amount})),t-=Ct.Cursor.amount,e*=t,wt("Plastic mouse")&&(e+=.01*me),wt("Iron mouse")&&(e+=.01*me),wt("Titanium mouse")&&(e+=.01*me),wt("Adamantium mouse")&&(e+=.01*me),wt("Unobtainium mouse")&&(e+=.01*me),wt("Eludium mouse")&&(e+=.01*me),wt("Wishalloy mouse")&&(e+=.01*me),wt("Fantasteel mouse")&&(e+=.01*me),wt("Nevercrack mouse")&&(e+=.01*me),wt("Armythril mouse")&&(e+=.01*me),wt("Technobsidian mouse")&&(e+=.01*me),wt("Plasmarble mouse")&&(e+=.01*me),wt("Miraculite mouse")&&(e+=.01*me),wt("Aetherice mouse")&&(e+=.01*me),wt("Omniplast mouse")&&(e+=.01*me),wt("Fortune #104")&&(e+=.01*me);let o=1;if(wt("Santa's helpers")&&(o*=1.1),wt("Cookie egg")&&(o*=1.1),wt("Halo gloves")&&(o*=1.1),wt("Dragon claw")&&(o*=1.03),wt("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,wt("Luminous gloves")?20:10)),o*=vt("click"),Ct.Temple.minigameLoaded&&Tt){const e=Tt("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*bt("Dragon Cursor");let a=o*Game.ComputeCps(1,wt("Reinforced index finger")+wt("Carpal tunnel prevention cream")+wt("Ambidextrous"),e);return a=Game.runModHookOnValue("cookiesPerClick",a),Game.hasBuff("Cursed finger")&&(a=Game.buffs["Cursed finger"].power),a}()-Game.computedMouseCps;return o?[me-Game.cookiesPs,o]:[me-Game.cookiesPs]}return[]}function Da(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=ya(o,e),1!==e&&(Y=1)})),t}function La(){Object.keys(Game.Objects).forEach((e=>{Le[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),Ae[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),je[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100),We[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,We[e].AmountNeeded)})),Sa({CacheObjectsNextAchievement:We})}function Aa(){Le=Da(1),Ae=Da(10),je=Da(100),function(){ze={};for(let e=0;e0?e/=t:e=0,Ke=ja(7,e,Ee),qe=2*Ke[1]/Ee,Ye=Ke[2]/60/60/6/Fe,et=ja(6,e,Be),Je=2*et[1]/Be,Ze=et[2]/60/60/6/Fe,at=ja(7,7*e,Ee),tt=2*at[1]/Ee,ot=at[2]/60/60/6/Fe,rt=ja(6,7*e,Be),nt=2*rt[1]/Be,it=rt[2]/60/60/6/Fe,Sa({CacheChainMaxReward:Ke,CacheChainRequired:qe,CacheChainRequiredNext:Ye,CacheChainWrathMaxReward:et,CacheChainWrathRequired:Je,CacheChainWrathRequiredNext:Ze,CacheChainFrenzyMaxReward:at,CacheChainFrenzyRequired:tt,CacheChainFrenzyRequiredNext:ot,CacheChainFrenzyWrathMaxReward:rt,CacheChainFrenzyWrathRequired:nt,CacheChainFrenzyWrathRequiredNext:it})}function $a(){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),a=e-Q,n=Math.max(0,o-q)/a;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:a}=e;e.iconFunction&&(a=e.iconFunction());const n=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?Xe+=e:"cookie"===o.pool?Qe+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(_e+=e)}}))}function Ha(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),Oe=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(Oe*=2)}Sa({CacheSeaSpec:Oe})}function Ra(){ke=900*Se/.15,ke*=Fe;const e=da();e>0?ke/=e:ke=0,Ce=Ee*(.15*ke)+13,Me=Be*(.15*ke)+13,ye=7*ke,be=Ee*(.15*ye)+13,Ge=Be*(.15*ye)+13,ve=2*ke,we=.15*ve,xe=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].amountxe&&(xe=2*Game.Objects[e].price,Te=e)})),Sa({CacheLucky:ke,CacheLuckyReward:Ce,CacheLuckyWrathReward:Me,CacheLuckyFrenzy:ye,CacheLuckyRewardFrenzy:be,CacheLuckyWrathRewardFrenzy:Ge,CacheConjure:ve,CacheConjureReward:we,CacheEdifice:xe,CacheEdificeBuilding:Te})}function Ia(){let e=1,t=1,o=1;wt("Green yeast digestives")&&(o*=1.01),wt("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"),Ee=o*e,Be=o*t,Fe=1,0===Game.shimmerTypes.golden.n&&(Fe*=1+1.23*Game.auraMult("Dragon's Fortune")),Sa({CacheGoldenCookiesMult:Ee,CacheWrathCookiesMult:Be,CacheDragonsFortuneMultAdjustment:Fe})}function za(e){const t={};Object.keys(Game.Objects).forEach((o=>{if(0!==Object.keys(We).length&&We[o].TotalNeeded>Game.Objects[o].amount&&!e)t[o]={AmountNeeded:We[o].TotalNeeded-Game.Objects[o].amount,TotalNeeded:We[o].TotalNeeded,price:Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,We[o].TotalNeeded-Game.Objects[o].amount)};else{const e=function(e){const t=Game.AchievementsOwned;let o=100,a=100;for(;o>-1;)if(ya(e,o),te>t)a=o,o-=10;else{if(100===o)return 101;for(o+=1;o<=a;){if(ya(e,o),te>t)return o;o+=1}}return 101}(o);t[o]={AmountNeeded:e,TotalNeeded:Game.Objects[o].amount+e,price:Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,e)}}})),We=t,Sa({CacheObjectsNextAchievement:We})}function Va(){$e=0,Ue=0,He=[0,null];for(let e=0;eHe[0]&&(He=[t,e]))}Sa({CacheWrinklersTotal:$e,CacheWrinklersNormal:Ue,CacheWrinklersFattest:He})}function _a(){ta(),Va(),Ra(),Ia(),Wa(),Ua(),Ha(),N=new Ta(To[To.length-1]),O=new Ta(To[To.length-1]),D=new Ta(To[To.length-1]),L=new Ta(To[To.length-1]),A=new Ta(So[So.length-1]),j=new Ta(5),P=new Ta(20*So[So.length-1]),$a(),za(),Fa(),Aa(),La(),Na()}function Xa(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Qa(e,t){if("b"===e){if(l("tooltip").innerHTML=Game.Objects[t].tooltip(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAmor){const e=Ea(t,Game.Objects[t].basePrice,0,Game.Objects[t].free,Game.Objects[t].amount),o=e-Game.Objects[t].totalCookies;o>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${to(o)} ${1===Math.floor(o)?"cookie":"cookies"} left to amortize (${zo((e-Game.Objects[t].totalCookies)/(Game.Objects[t].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(to(Game.Objects[t].bulkPrice)).join(to((Game.Objects[t],Game.Objects[t].basePrice,Game.Objects[t].amount,Game.Objects[t].free,Game.buyBulk,1))))}else if("u"===e){if(!Game.UpgradesInStore[t])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[t],"store")}else"s"===e?l("tooltip").innerHTML=Game.lumpTooltip():"g"===e?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(t)():"p"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(t[0],t[1])():"ha"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"sm"===e?l("tooltip").innerHTML=Game.Objects.Bank.minigame.goodTooltip(t)():"wb"===e?l("tooltip").innerHTML="":"pag"===e?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(t)():"pas"===e&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(t[0])());if("b"===e&&1===Game.buyMode||"u"===e||"s"===e||"g"===e||"p"===e&&!Game.keys[16]||"ha"===e||"sm"===e||"wb"===e||"pag"===e||"pas"===e&&-1!==t[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return Po=e,No=t,va(),l("tooltip").innerHTML}function qa(){1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Favicon&&It>0?ct.wrath?l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}function Ya(){Ct=[],Object.keys(Game.Objects).forEach((e=>{Ct[e]=na(e)})),Mt=[],Object.keys(Game.Upgrades).forEach((e=>{Mt[e]=ia(e)})),yt=[],Object.keys(Game.Achievements).forEach((e=>{yt[e]=oa(e)})),ra()}function Ka(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(Yt[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("g",`${e}`)),"this"),Game.tooltip.wobble()})}))}function Ja(){if(!Wt&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:e}=Game.Objects["Wizard tower"];At=e.draw,Game.Objects["Wizard tower"].minigame.draw=function(){At(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GrimoireBar&&e.magic{if(t=a,Game.Objects[t].amount{ce=!0})),Scale:new F(2,"bool","Notation",["Game's setting scale","Metric","Short scale","Short scale (Abbreviated)","Scientific notation","Engineering notation"],"Change how long numbers are formatted",!1,(()=>{nn()})),ScaleDecimals:new F(2,"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,(()=>{nn()})),ScaleSeparator:new F(0,"bool","Notation",[". for decimals (standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(()=>{nn()})),ScaleCutoff:new T(999999,"numscale","Notation","Notation cut-off point: ","The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),TimeFormat:new S(0,"bool","Notation",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX","Time XXx, XXx"],"Change the time format",!1),DetailedTime:new F(1,"bool","Notation",["Detailed time OFF","Detailed time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime?Game.sayTime=Go:Game.sayTime=Jt.sayTime})),PPDisplayTime:new S(0,"bool","Notation",["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),BuildColour:new F(1,"bool","Colours",["Building colours OFF","Building colours ON"],"Colour code buildings",!0,(()=>{Wo()})),PPOnlyConsiderBuyable:new S(0,"bool","Colours",["Don't ignore non-buyable","Ignore non-buyable"],"Makes Cookie Monster 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),PPExcludeTop:new S(0,"bool","Colours",["Don't ignore any","Ignore 1st best","Ignore 1st and 2nd best","Ignore 1st, 2nd and 3rd best"],"Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new S(0,"bool","Colours",["Rigidel mode OFF","Rigidel mode ON"],'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new T(0,"numscale","Colours","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),ColourBlue:new x("#4bb8f0","colour","Colours","Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels"),ColourGreen:new x("#00ff00","colour","Colours","Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels"),ColourYellow:new x("#ffff00","colour","Colours","Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels"),ColourOrange:new x("#ff7f00","colour","Colours","Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels"),ColourRed:new x("#ff0000","colour","Colours","Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels"),ColourPurple:new x("#ff00ff","colour","Colours","Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels"),ColourGray:new x("#b3b3b3","colour","Colours","Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar"),ColourPink:new x("#ff1493","colour","Colours","Standard colour is pink. Used for Dragonflight bar"),ColourBrown:new x("#8b4513","colour","Colours","Standard colour is brown. Used for Dragon Harvest bar"),BotBar:new F(1,"bool","BarsDisplay",["Bottom bar OFF","Bottom bar ON"],"Building information",!0,(()=>{rn()})),TimerBar:new F(1,"bool","BarsDisplay",["Timer bar OFF","Timer bar ON"],"Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(()=>{Jo()})),TimerBarPos:new F(0,"bool","BarsDisplay",["Timer bar position (top left)","Timer bar position (bottom)"],"Placement of the timer bar",!1,(()=>{0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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"))),Ko()})),TimerBarOverlay:new S(2,"bool","BarsDisplay",["Timer bar overlay OFF","Timer bar overlay only seconds","Timer bar overlay full"],"Overlay on timers displaying seconds and/or percentage left",!0),AutosaveTimerBar:new S(0,"bool","BarsDisplay",["Autosave timer bar OFF","Autosave timer bar ON"],"Show a timer counting down till next autosave in the timer bar",!0),UpBarColour:new F(1,"bool","BarsDisplay",["Upgrade colours/bar OFF","Upgrade colours with bar ON","Upgrade colours without bar ON"],"Colour code upgrades and optionally add a counter bar",!1,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="",Uo()):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="none",Uo()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),UpgradeBarFixedPos:new F(1,"bool","BarsDisplay",["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,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),SortBuildings:new F(0,"bool","BarsDisplay",["Sort buildings: default","Sort buildings: PP of x1 purchase","Sort buildings: PP of selected bulk mode","Sort buildings: price until next achievement"],"Sort the display of buildings in default order, by PP, or until next achievement",!1,(()=>{Wo()})),SortUpgrades:new F(0,"bool","BarsDisplay",["Sort upgrades: default","Sort upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(()=>{Uo()})),UpgradesNeverCollapse:new F(0,"bool","BarsDisplay",["Upgrades always expanded OFF","Upgrades always expanded ON"],"Toggle to make the upgrades sections always expanded to the size needed to display all upgrades",!0,(()=>{$o()})),DragonAuraInfo:new S(1,"bool","BarsDisplay",["Extra dragon aura info OFF","Extra dragon aura info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),GrimoireBar:new S(1,"bool","BarsDisplay",["Grimoire magic meter timer OFF","Grimoire magic meter timer ON"],"A timer overlay showing how long till the Grimoire magic meter is full",!0),GCTimer:new F(1,"bool","BarsDisplay",["Golden cookie timer OFF","Golden cookie timer ON"],"A timer on the golden cookie when it has been spawned",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer?Object.keys(Ao).forEach((e=>{Ao[e].style.display="block",Ao[e].style.left=gt[e].l.style.left,Ao[e].style.top=gt[e].l.style.top})):Object.keys(Ao).forEach((e=>Ao[e].style.display="none"))})),Favicon:new F(1,"bool","BarsDisplay",["Favicon OFF","Favicon ON"],"Update favicon with golden/wrath cookie",!0,(()=>{qa()})),WrinklerButtons:new F(1,"bool","BarsDisplay",["Extra wrinkler buttons OFF","Extra wrinkler buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(()=>{B()})),HideSectionsButtons:new F(0,"bool","BarsDisplay",["Hide buildings/upgrades button OFF","Hide buildings/upgrades button ON"],"Show buttons for hiding and showing the buildings and upgrades sections in the right column",!0,(()=>{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),TooltipBuildUpgrade:new S(1,"bool","Tooltip",["Building/upgrade tooltip information OFF","Building/upgrade tooltip information ON"],"Extra information in building/upgrade tooltips",!0),TooltipAmor:new S(0,"bool","Tooltip",["Buildings tooltip amortization information OFF","Buildings tooltip amortization information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new S(1,"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 S(1,"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 S(1,"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 S(1,"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 S(1,"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 T(0,"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),ToolWarnBon:new S(1,"bool","Tooltip",["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),ToolWarnPos:new F(1,"bool","Tooltip",["Tooltip warning position (left)","Tooltip warning position (bottom)"],"Placement of the warning boxes",!1,(()=>{Ga()})),TooltipGrim:new S(1,"bool","Tooltip",["Grimoire tooltip information OFF","Grimoire tooltip information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new S(1,"bool","Tooltip",["Wrinkler tooltip OFF","Wrinkler tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new S(1,"bool","Tooltip",["Sugar lump tooltip OFF","Sugar lump tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new S(1,"bool","Tooltip",["Garden plots tooltip OFF","Garden plots tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipStocks:new S(1,"bool","Tooltip",["Stock market tooltips OFF","Stock market tooltips ON"],"Shows additional info in the stock market tooltips.",!0),TooltipPantheon:new S(1,"bool","Tooltip",["Pantheon tooltip OFF","Pantheon tooltip ON"],"Shows additional info in the pantheon tooltip",!0),TooltipAscendButton:new S(1,"bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new S(1,"bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new S(1,"bool","Statistics",["Missing upgrades OFF","Missing upgrades ON"],"Shows missing upgrades in statistics menu",!0),MissingAchievements:new S(0,"bool","Statistics",["Missing Achievements OFF","Missing Normal Achievements ON"],"Shows missing normal achievements in statistics menu.",!0),UpStats:new S(1,"bool","Statistics",["Statistics update rate (default)","Statistics update rate (1s)"],"Default rate is once every 5 seconds",!1),HeavenlyChipsTarget:new T(1,"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 S(1,"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),Title:new S(1,"bool","NotificationGeneral",["Title OFF","Title ON","Title pinned tab highlight"],'Update title with colden 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 S(1,"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 F(0,"bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when golden cookie spawns",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCNotification)})),GCFlash:new S(1,"bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on golden cookie",!0),ColourGCFlash:new x("#ffffff","colour","NotificationGC","The colour of the GC flash, standard colour is white"),GCSound:new S(1,"bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on golden cookie",!0),GCVolume:new E(100,"vol","NotificationGC",[],"Volume"),GCSoundURL:new S("https://freesound.org/data/previews/66/66717_931655-lq.mp3","url","NotificationGC","Sound URL:","URL of the sound to be played when a golden cookie spawns"),FortuneNotification:new F(0,"bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when fortune cookie is on the ticker",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneNotification)})),FortuneFlash:new S(1,"bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on fortune cookie spawn",!0),ColourFortuneFlash:new x("#ffffff","colour","NotificationFC","The colour of the fortune flash, standard colour is white"),FortuneSound:new S(1,"bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on fortune cookie spawn",!0),FortuneVolume:new E(100,"vol","NotificationFC",[],"Volume"),FortuneSoundURL:new S("https://freesound.org/data/previews/174/174027_3242494-lq.mp3","url","NotificationFC","Sound URL:","URL of the sound to be played when the ticker has a fortune cookie"),SeaNotification:new F(0,"bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on season popup",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaNotification)})),SeaFlash:new S(1,"bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on season popup",!0),ColourSeaFlash:new x("#ffffff","colour","NotificationSea","The colour of the season popup flash, standard colour is white"),SeaSound:new S(1,"bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on season popup",!0),SeaVolume:new E(100,"vol","NotificationSea",[],"Volume"),SeaSoundURL:new S("https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3","url","NotificationSea","Sound URL:","URL of the sound to be played when on season popup spawns"),GardFlash:new S(1,"bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on garden tick",!0),ColourGardFlash:new x("#ffffff","colour","NotificationGard","The colour of the garden flash, standard colour is white"),GardSound:new S(1,"bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on garden tick",!0),GardVolume:new E(100,"vol","NotificationGard",[],"Volume"),GardSoundURL:new S("https://freesound.org/data/previews/103/103046_861714-lq.mp3","url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new F(0,"bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MagicNotification)})),MagicFlash:new S(1,"bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),ColourMagicFlash:new x("#ffffff","colour","NotificationMagi","The colour of the magic flash, standard colour is white"),MagicSound:new S(1,"bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new E(100,"vol","NotificationMagi",[],"Volume"),MagicSoundURL:new S("https://freesound.org/data/previews/221/221683_1015240-lq.mp3","url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new F(0,"bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a wrinkler appears",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerNotification)})),WrinklerFlash:new S(1,"bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a wrinkler appears",!0),ColourWrinklerFlash:new x("#ffffff","colour","NotificationWrink","The colour of the wrinkler flash, standard colour is white"),WrinklerSound:new S(1,"bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a wrinkler appears",!0),WrinklerVolume:new E(100,"vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new S("https://freesound.org/data/previews/124/124186_8043-lq.mp3","url","NotificationWrink","Sound URL:","URL of the sound to be played when a wrinkler appears"),WrinklerMaxNotification:new F(0,"bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of wrinklers has appeared",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification)})),WrinklerMaxFlash:new S(1,"bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),ColourWrinklerMaxFlash:new x("#ffffff","colour","NotificationWrinkMax","The colour of the maximum wrinkler flash, standard colour is white"),WrinklerMaxSound:new S(1,"bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of wrinklers has appeared",!0),WrinklerMaxVolume:new E(100,"vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new S("https://freesound.org/data/previews/152/152743_15663-lq.mp3","url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of wrinklers has appeared"),BulkBuyBlock:new S(1,"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),FavouriteSettings:new F(1,"bool","Miscellaneous",["Favourite settings section OFF","Favourite settings section ON","Favourite settings section ON (Locked)"],"Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section",!0,(()=>{Game.UpdateMenu()}))};function ln(){let e="";for(let t=0;t{if("Favourite"===t){if(0!==Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings.length&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings>0&&(e.appendChild(b.createOptionsSubHeader("cookieMonsterMod",t,tn[t])),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]))for(let t=0;t{const o=b.createOptionsSubHeader("cookieMonsterMod",t,on[t]);o.style.fontSize="15px",o.style.opacity="0.5",e.appendChild(o),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]&&Object.keys(sn).forEach((o=>{sn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,sn,ln,nn))}))})):Object.keys(sn).forEach((o=>{sn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,sn,ln,nn))})))})),e}function dn(e){return String(e).split(String(7)).length-1}function mn(e,t){const o=10*t;let a=7*t-e%o+e%t;return a<0&&(a+=o),a}function pn(e,t){const o=document.createElement("div");o.className="title",o.style.padding="0px 16px",o.style.opacity="0.7",o.style.fontSize="17px",o.style.fontFamily='"Kavoon", Georgia, serif',o.appendChild(document.createTextNode(`${e} `));const a=document.createElement("span");return a.style.cursor="pointer",a.style.display="inline-block",a.style.height="14px",a.style.width="14px",a.style.borderRadius="7px",a.style.textAlign="center",a.style.backgroundColor="#C0C0C0",a.style.color="black",a.style.fontSize="13px",a.style.verticalAlign="middle",a.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]?"-":"+",a.onclick=function(){!function(e){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]+=1,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]>1&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]=0),w.saveFramework()}(t),Game.UpdateMenu()},o.appendChild(a),o}function un(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");if(i.textContent=t,n.appendChild(i),"withTooltip"===e){n.className="listing",n.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(ko[a].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="?",n.appendChild(e)}return n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function hn(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");return i.textContent=t,!0===a&&(i.style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen),n.appendChild(i),n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function gn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const a=document.createElement("div"),n=document.createElement("div");n.style.minWidth="140px",n.style.marginBottom="4px";const i=document.createElement("div");return i.className="name",i.style.marginBottom="4px",i.style.textAlign="center",i.textContent="Missing",n.appendChild(i),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),n.appendChild(o)})),a.appendChild(n),o.onmouseover=function(){Game.tooltip.draw(this,escape(a.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 fn(e){const t=document.createElement("div");if(t.className="subsection",t.appendChild(e),t.appendChild(pn("Lucky Cookies","Lucky")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Lucky&&t.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+_o(){Game.HasUnlocked(ka[e])||c.push(ka[e])})),0!==c.length&&e.appendChild(un("basic","Rare plant drops left to unlock",gn(c))),e}())),t.appendChild(pn("Prestige","Prestige")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Prestige&&t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsPrestigeSection";const t=Math.floor(Game.HowMuchPrestige(st+Game.cookiesReset+$e+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")?De:0)));e.appendChild(un("withTooltip","Prestige level (cur / max)",document.createTextNode(`${to(Game.prestige)} / ${to(t)}`),"PrestMaxTooltipPlaceholder"));const o=Math.max(0,Game.HowManyCookiesReset(t+1)-(st+Game.cookiesReset+$e+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")&&De?De:0))),a=document.createDocumentFragment();a.appendChild(document.createTextNode(to(o)));const n=document.createElement("small");n.textContent=` (${Io(o/lt,1)})`,a.appendChild(n),e.appendChild(un("withTooltip","Cookies to next level",a,"NextPrestTooltipPlaceholder")),e.appendChild(un("withTooltip","Heavenly chips (cur / max)",document.createTextNode(`${to(Game.heavenlyChips)} / ${to(t-Game.prestige+Game.heavenlyChips)}`),"HeavenChipMaxTooltipPlaceholder")),e.appendChild(un("basic","Heavenly chips per second (last 5 seconds)",document.createTextNode(to(Pe,2))));const i=Number(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HeavenlyChipsTarget);if(!Number.isNaN(i)){const t=i-Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned));t>0&&(e.appendChild(un("basic","Heavenly chips to target set in settings (cur)",document.createTextNode(to(t)))),e.appendChild(un("basic","Time till target (cur, current 5 second average)",document.createTextNode(Io(t/Pe)))))}const r=function(e){let t=Game.cookiesPs;ra(),0===Mt["Heavenly key"].bought&&(Mt["Heavenly chip secret"].bought=1,Mt["Heavenly cookie stand"].bought=1,Mt["Heavenly bakery"].bought=1,Mt["Heavenly confectionery"].bought=1,Mt["Heavenly key"].bought=1,pa(),t=me,ra()),st>=1e6&&ma("Sacrifice"),st>=1e9&&ma("Oblivion"),st>=1e12&&ma("From scratch"),st>=1e15&&ma("Nihilism"),st>=1e18&&ma("Dematerialize"),st>=1e21&&ma("Nil zero zilch"),st>=1e24&&ma("Transcendence"),st>=1e27&&ma("Obliterate"),st>=1e30&&ma("Negative void"),st>=1e33&&ma("To crumbs, you say?"),st>=1e36&&ma("You get nothing"),st>=1e39&&ma("Humble rebeginnings"),st>=1e42&&ma("The end of the world"),st>=1e45&&ma("Oh, you're back"),st>=1e48&&ma("Lazarus"),st>=1e51&&ma("Smurf account"),st>=1e54&&ma("If at first you don't succeed"),Mt["Heavenly chip secret"].bought=1,Mt["Heavenly cookie stand"].bought=1,Mt["Heavenly bakery"].bought=1,Mt["Heavenly confectionery"].bought=1,Mt["Heavenly key"].bought=1,ae=e;const o=te;pa(),Ma(),o!==te&&pa();const a=me-t;return ae=Game.prestige,a}(t),s=document.createDocumentFragment();s.appendChild(document.createTextNode(to(r)));const l=Math.round(r/Game.cookiesPs*1e4);if(Number.isFinite(l)&&0!==l){const e=document.createElement("small");e.textContent=` (${l/100}% of income)`,s.appendChild(e)}e.appendChild(un("withTooltip","Reset bonus income",s,"ResetTooltipPlaceholder"));const c=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),m=d-c,{luckyDigit:p,luckyNumber:u,luckyPayout:h}=function(e){const t={};let o=dn(e);const a=String(e).length;if(o>=1&&(t.luckyDigit=e,o>=2&&(t.luckyNumber=e,o>=4)))return t.luckyPayout=e,t;let n;if(n=a>=16?Math.ceil(e/10**(a-15)):e,o=dn(n),void 0===t.luckyDigit&&(o<1&&(n+=mn(n,1),o=dn(n)),t.luckyDigit=n,a>=16&&(t.luckyDigit*=10**Number(a-15))),void 0===t.luckyNumber){for(;o<2;){let e=mn(n,1);0===e&&(e=mn(n,10)),n+=e,o=dn(n)}t.luckyNumber=n,a>=16&&(t.luckyNumber*=10**Number(a-15))}let i=1;for(;o<4;){const e=mn(n,i);0===e?i*=10:(n+=e,o=dn(n))}return t.luckyPayout=n,a>=16&&(t.luckyPayout*=10**Number(a-15)),t}(d);if(!Game.Has("Lucky digit")){const t=p-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${p.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(un("basic",'Next "Lucky Digit" (total / reset)',a))}if(!Game.Has("Lucky number")){const t=u-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${u.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(un("basic",'Next "Lucky Number" (total / reset)',a))}if(!Game.Has("Lucky payout")){const t=h-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${h.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(un("basic",'Next "Lucky Payout" (total / reset)',a))}return e}()),Game.cpsSucked>0&&(t.appendChild(pn("Wrinklers","Wrink")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${to($e)} / ${to(Ue)} `));const o=document.createElement("a");o.textContent="Pop All Normal",o.className="option",o.onclick=function(){Xa()},e.appendChild(o),t.appendChild(un("basic","Rewards of Popping (All/Normal)",e));const a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${to(He[0])} `));const n=document.createElement("a");n.textContent="Pop Single Fattest",n.className="option",n.onclick=function(){null!==He[1]&&(Game.wrinklers[He[1]].hp=0)},a.appendChild(n),t.appendChild(un("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==He[1]?He[1]:"None"})`,a))}if(t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsSeasonSection";let t=!1;const o=[];Object.keys(ha).forEach((e=>{Game.Has(ha[e])||(o.push(ha[e]),t=!0)}));const a=[];Object.keys(ga).forEach((e=>{Game.Has(ga[e])||(a.push(ga[e]),t=!0)}));const n=[];Object.keys(fa).forEach((e=>{Game.Has(fa[e])||(n.push(fa[e]),t=!0)}));const i=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(i.push(Game.eggDrops[e]),t=!0)}));const r=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(r.push(Game.rareEggDrops[e]),t=!0)}));const s=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),l=Game.Has("Century egg");if(("christmas"===Game.season||t||s||l)&&(e.appendChild(pn("Season Specials","Sea")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Sea)){if(0!==o.length){e.appendChild(hn(0,"Halloween cookies left to buy",gn(o),"halloween"===Game.season));let t=.95;if(Game.HasAchiev("Spooky cookies")&&(t=.8),Game.Has("Starterror")&&(t*=.9),t*=1/Game.dropRateMult(),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const a=o.length/7;e.appendChild(hn(0,"Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${to((1-t)*a*100)}% / ${to((1-.9*t)*a*100)}%`),"halloween"===Game.season))}if(0!==a.length){e.appendChild(hn(0,"Christmas cookies left to buy",gn(a),"christmas"===Game.season));let t=.8;if(Game.HasAchiev("Let it snow")&&(t=.6),t*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(t*=.95),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=a.length/7;e.appendChild(hn(0,"Chance of receiving a cookie from reindeer",document.createTextNode(`${to((1-t)*o*100)}%`),"christmas"===Game.season))}0!==n.length&&e.appendChild(hn(0,"Valentine cookies left to buy",gn(n),"valentines"===Game.season));const t=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,a=Game.eggDrops.length-i.length,n=Game.rareEggDrops.length-r.length,s=.9*o*(1-a/Game.eggDrops.length),l=.1*o*(1-n/Game.rareEggDrops.length),c=.9*o*(a/Game.eggDrops.length)+.1*o*(n/Game.rareEggDrops.length);return[s+.9*c*(1-a/Game.eggDrops.length),l+.1*c*(1-n/Game.rareEggDrops.length)]};0!==i.length&&(e.appendChild(hn(0,"Normal easter eggs left to unlock",gn(i),"easter"===Game.season)),e.appendChild(hn(0,"Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${to(100*t(.98)[0])}% / ${to(100*t(.9)[0])}%`),"easter"===Game.season))),0!==r.length&&(e.appendChild(hn(0,"Rare easter eggs left to unlock",gn(r),"easter"===Game.season)),e.appendChild(hn(0,"Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${to(100*t(.98)[1])}% / ${to(100*t(.9)[1])}%`),"easter"===Game.season))),"christmas"===Game.season&&e.appendChild(hn(0,"Reindeer reward",document.createTextNode(to(Oe)),!0)),s&&e.appendChild(un("withTooltip","Chocolate egg cookies",document.createTextNode(to(De)),"ChoEggTooltipPlaceholder")),l&&e.appendChild(un("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(Ne-1))/100+"%")))}return e}()),t.appendChild(pn("Achievements","Achievs")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Achievs&&Object.keys(Game.Objects).forEach((e=>{const o=We[e];t.appendChild(un("basic",e,o.AmountNeeded<101?document.createTextNode(`Next achievement in ${o.AmountNeeded}, price: ${to(o.price)}`):document.createTextNode("No new achievement for next 100 buildings")))})),t.appendChild(pn("Miscellaneous","Misc")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Misc){if(t.appendChild(un("basic",`Average cookies per second (past ${To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]<60?`${To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]} seconds`:To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]/60+(3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(to(Vo(),3)))),t.appendChild(un("basic",`Average cookie clicks per second (past ${So[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(to(Ve,1)))),t.appendChild(un("basic",`Cookies from clicking (past ${So[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(to(P.calcSum(Ve*So[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]))))),Game.Has("Fortune cookies")){const e=[];Object.keys(ua).forEach((t=>{Game.Has(ua[t])||e.push(ua[t])})),0!==e.length&&t.appendChild(un("basic","Fortune Upgrades Left to Buy",gn(e)))}if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ShowMissedGC&&t.appendChild(un("basic","Missed golden cookies",document.createTextNode(to(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),t.appendChild(un("basic","Time till autosave",e))}}l("menu").insertBefore(t,l("menu").childNodes[2]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&Xe){const t=Xe.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Xe,e.appendChild(n)}else if("Upgrades"===e.children[0].innerHTML){if(_e){const t=_e.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const a=document.createElement("div");a.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(a),e.insertBefore(o,e.childNodes[3]);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=_e,e.insertBefore(n,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Qe){const t=Qe.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Qe,e.appendChild(n)}}})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&function(){let e;Object.values(document.querySelectorAll("div.title")).forEach((t=>{t.textContent.includes("Achievements")&&(e=t.parentElement.querySelectorAll("div.listing.crateBox")[0])})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&Object.values(e.children).forEach((e=>{if(!e.className.includes("enabled")){const t=e.onclick.toString().split(/\[(.*)\]/gi)[1],{icon:o}=Game.AchievementsById[t];e.style.backgroundPosition=`${48*-o[0]}px ${48*-o[1]}px`,e.onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>function(e){const t=[];"shadow"===e.pool?t.push("Shadow Achievement","#9700cf"):t.push("Achievement",0),t.push("Locked",0);let o=0;(Game.Has("Neuromancy")||Game.sesame&&"debug"===e.pool)&&(o=1),o&&0===e.won?t.push("Click to win!","#00c462"):o&&e.won>0&&t.push("Click to lose!","#00c462");let{icon:a}=e;e.iconFunction&&(a=e.iconFunction());let{desc:n}=e;e.descFunc&&(n=e.descFunc("stats"));let i="";for(let e=0;e[${t[e]}]`);return i=i.substring(1),`
\n
\n
${e.name}
\n ${i}
${n}
\n ${Game.sesame?`
Id : ${e.id} | Order : ${Math.floor(e.order)}${e.tier?` | Tier : ${e.tier}`:""}
`:""}`}(Game.AchievementsById[t])),"top"),Game.tooltip.wobble())}}}))}()}function kn(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos){const t=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=t,e(),Game.mouseY+=t}else e()}function Cn(){Jt.Beautify=Beautify,Beautify=to,Jt.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){Jt.CalculateGains(),ce=1,Zt=Date.now(),eo=Date.now()},Jt.tooltip={},Jt.tooltip.draw=Game.tooltip.draw,Jt.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){Jt.tooltip.drawMod(e,t,o)},Jt.tooltip.update=Game.tooltip.update,Jt.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){Jt.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let e=0;1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLucky&&1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(e=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-e-46)}px`}}()},Jt.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){kn(Jt.UpdateWrinklers)},Jt.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){kn(Jt.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(e=>{kn((()=>Game.ClickCookie(e,0)))}),!1),Jt.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){Jt.RebuildUpgrades(),Kt=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(Kt[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("u",`${e}`)),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},Jt.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(e){(!Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BulkBuyBlock||Game.ObjectsById[e].bulkPrice<=Game.cookies||-1===Game.buyMode)&&Jt.ClickProduct(e)},Jt.DescribeDragonAura=Game.DescribeDragonAura,Game.DescribeDragonAura=function(e){Jt.DescribeDragonAura(e),function(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DragonAuraInfo){const[t,o]=function(e){ra(),l("promptContent").children[0].innerHTML.includes("secondary")?ie=e:ne=e;let t=0;if(ne!==ue||ie!==he)for(let e=Game.ObjectsById.length-1;e>-1;--e)if(Game.ObjectsById[e].amount>0){const o=Ct[Game.ObjectsById[e].name].name;Ct[o].amount-=1,J-=1,t=Ct[o].basePrice*Game.priceIncrease**Math.max(0,Ct[o].amount-1-Ct[o].free),t=Game.modifyBuildingPrice(Ct[o],t),t=Math.ceil(t);break}const o=te;return pa(),Ma(),o!==te&&pa(),[me-Game.cookiesPs,t]}(e),a=Io(o/(t+Game.cookiesPs));let n;n=0===Game.cookiesPs?to(1/0):to(t/Game.cookiesPs*100),l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const i=document.createElement("div");i.style.minWidth="200px",i.style.textAlign="center",i.textContent=`Picking this aura will change CPS by ${to(t)} (${n}% of current CPS).`,l("dragonAuraInfo").appendChild(i);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${a} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(e)},Jt.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){Jt.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${fe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},Jt.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==r.picker&&void 0!==r.picker.owner||(Jt.UpdateMenu(),function(){const e=document.createElement("div");e.className="title","stats"===Game.onMenu?Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats&&(e.textContent="Cookie Monster Statistics",fn(e)):"prefs"===Game.onMenu&&l("menu").childNodes[2].insertBefore(cn(),l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}())},Jt.sayTime=Game.sayTime,Go=function(e,t){return Number.isNaN(e)||e<=0?Jt.sayTime(e,t):Io(e/Game.fps,1)},Jt.Logic=Game.Logic,Game.Logic=function(){Jt.Logic();let e="Cookie Clicker";"fools"===Game.season&&(e="Cookie Baker"),jo=`${Game.OnAscend?"Ascending! ":""}${to(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${e}`,function(){if(Game.OnAscend||0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title)document.title=jo;else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e,t,o,a=!1,n=!1;e=ct?ct.wrath?`[W${Math.ceil(ct.life/Game.fps)}]`:`[G${Math.ceil(ct.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)}]`,Ht&&(a=!0,t="[F]"),"christmas"===Game.season&&(n=!0,o=Ut?`[R${Math.ceil(dt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let i=jo;"["===i.charAt(0)&&(i=i.substring(i.lastIndexOf("]")+1)),document.title=`${e+(a?t:"")+(n?o:"")} ${i}`}else if(2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e="",t=!1;ct&&(t=!0,ct.wrath?e+=`[W${Math.ceil(ct.life/Game.fps)}]`:e+=`[G${Math.ceil(ct.life/Game.fps)}]`),Ht&&(t=!0,e+="[F]"),"christmas"===Game.season&&Ut&&(e+=`[R${Math.ceil(dt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const e=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),t=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let o=`You've been on this run for ${""===t?"not very long":t}.
\n
`;Game.prestige>0&&(o+=`Your prestige level is currently ${to(Game.prestige)}.
(CpS +${to(Game.prestige)}%)\n
`),o+=q<1?"Ascending now would grant you no prestige.":q<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${to(q)} prestige levels (+${to(q)}% CpS)
and ${to(q)} heavenly chips to spend.`,o+=`
\n You need ${to(e)} more cookies for the next level.
\n ${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAscendButton?`
It takes ${mt} to reach the next level and you were making ${to(Pe,2)} chips on average in the last 5 seconds.
`:""}`,l("ascendTooltip").innerHTML=o}()}}function Mn(){window.CookieMonsterData={},Game.mods.cookieMonsterFramework.listeners.optionsMenu.push(cn),Ya(),Ra(),_a(),Nt=Object.keys(Game.mods).length,Qt=document.createElement("style"),Qt.type="text/css",Qt.id="CMCSS",document.head.appendChild(Qt),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")),a=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=oo+t,o.textContent=e,o},n=o.appendChild(document.createElement("tr"));n.style.fontWeight="bold",n.appendChild(a(`CM ${Ho}.${Ro}`,so)),o.appendChild(document.createElement("tr")).appendChild(a("Bonus Income",io)),o.appendChild(document.createElement("tr")).appendChild(a("Payback Period",io)),o.appendChild(document.createElement("tr")).appendChild(a("Time Left",io)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{Qo(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=Xo("CMTimerBarAutosave","Autosave",[{id:"CMTimerBarAutosaveBar",colour:mo}]);e.appendChild(t);const o=Xo("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",colour:po},{id:"CMTimerBarGCBar",colour:mo}]);e.appendChild(o);const a=Xo("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",colour:po},{id:"CMTimerBarRenBar",colour:lo}]);e.appendChild(a);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 a=document.createElement("span");return a.className=ao+e,a.style.display="inline-block",a.style.height="10px",a.style.width="10px",a.style.marginRight="4px",o.appendChild(a),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(io,"Better than the best PP of a building option")),e.appendChild(o(ro,"Same as the best PP building option")),e.appendChild(o(so,"Within the top 10 of PP for buildings")),e.appendChild(o(lo,"Within the top 20 of PP for buildings")),e.appendChild(o(co,"Within the top 30 of PP for buildings")),e.appendChild(o(mo,"Outside of the top 30 of PP for buildings")),e.appendChild(o(po,"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=oo+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",io)),e.appendChild(o("CMUpgradeBarGreen",ro)),e.appendChild(o("CMUpgradeBarYellow",so)),e.appendChild(o("CMUpgradeBarOrange",lo)),e.appendChild(o("CMUpgradeBarRed",co)),e.appendChild(o("CMUpgradeBarPurple",mo)),e.appendChild(o("CMUpgradeBarGray",po)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),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(fo).forEach((e=>{!function(e,t,o){const a=document.createElement("div");a.id=e;const n=document.createElement("div");n.style.minWidth=o,n.style.marginBottom="4px";const i=document.createElement("div");i.style.textAlign="left",i.textContent=t,n.appendChild(i),a.appendChild(n),ko[e]=a}(fo[e][0],fo[e][1],fo[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Xa()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("wb","PopAllNormal")),"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!==He[1]&&(Game.wrinklers[He[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("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(l("rows").children).forEach((e=>{const t=l("rows").children[e].children[1],o=document.createElement("div");o.id=`productLock${Number(e)+1}`,o.className="productButton",o.innerHTML="Lock",o.onclick=function(){!function(e){"Lock"===l(`productLock${e}`).innerHTML?(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.push(e.toString()),l(`row${e}`).style.pointerEvents="none",l(`row${e}`).style.opacity="0.4",l(`productLock${e}`).innerHTML="Unlock",l(`productLock${e}`).style.pointerEvents="auto"):(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.includes(e.toString())&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.filter((t=>t!==e.toString()))),l(`productLock${e}`).innerHTML="Lock",l(`row${e}`).style.pointerEvents="auto",l(`row${e}`).style.opacity="1")}(Number(e)+1)},t.appendChild(o)})),Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(qt[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("b",`${e}`)),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(Ot=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("s","Lump")),"this"),Game.tooltip.wobble()}),$t=Game.LoadMinigames,Game.LoadMinigames=function(){$t(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("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,(()=>Qa("p",[`${t[0]}`,`${t[2]}`])),"this"),Game.tooltip.wobble()}}))),Ka(),function(){if(Game.Objects.Bank.minigameLoaded)for(let e=0;eQa("sm",e)),"this"),Game.tooltip.wobble()}}(),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,(()=>Qa("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,(()=>Qa("pas",[e,Game.Objects.Temple.minigame.slot[e]])),"this"),Game.tooltip.wobble()}}}(),Za()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){Mo=1},l("backgroundLeftCanvas").onmouseout=function(){Mo=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{bo[e]=0}))},Cn(),Za(),Game.CalculateGains(),Co=Game.OnAscend,Game.prefs.popups?Game.Popup(`Cookie Monster version ${Ho}.${Ro} loaded!`):Game.Notify(`Cookie Monster version ${Ho}.${Ro} loaded!`,"","",1,1),Game.Win("Third-party")}function yn(e,t){if(!Game.Objects.Temple.minigameLoaded)return 0;ra();const{minigame:o}=Game.Objects.Temple,a=o.godsById[e].slot;"0"===a?re=o.slot[t]:"1"===a?se=o.slot[t]:"2"===a&&(le=o.slot[t]),0===t?re=e:1===t?se=e:2===t&&(le=e);const n=te;return pa(),Ma(),n!==te&&pa(),me-Game.cookiesPs}function bn(){if(Do!==Game.OnAscend&&(Do=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar&&(l("CMBotBar").style.display="none"),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&(l("CMTimerBar").style.display="none")):(rn(),Jo()),Yo()),!Game.OnAscend&&0===Game.AscendTimer){Nt!==Object.keys(Game.mods).length&&(Ya(),_a(),Nt=Object.keys(Game.mods).length),ce&&(za(!0),Aa(),Game.Has("Golden switch [off]")?(ra(),Mt["Golden switch [off]"].bought=0,pa(),Se=me):Se=Game.cookiesPs,Sa({CacheNoGoldSwitchCookiesPS:Se}),Ia(),Ra(),Ua(),Wa(),en(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)kt[e][t]=yn(e,t);Sa({CacheGods:kt})}(),Ha(),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 a=t[e];o+=a.stock*a.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;ra();let t=2;5!==ne&&18!==ne||(t-=1),5!==ie&&18!==ie||(t-=1),ne=5,ie=18;for(let e=0;e{Ct[t].amount>0&&(e=t)})),Ct[e].amount-=1,J-=1}return Object.keys(Ct).forEach((t=>{const o=Ct[t];e+=Ft(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),ft=e,Sa({CacheSellForChoEgg:ft})}(),ce=0);const e=Game.auraMult("Fierce Hoarder")>0;!K&&e?(K=!0,Y=1):K&&!e&&(K=!1,Y=1),Y&&(La(),Y=0),function(){Va(),Na(),za(!1),function(){Re=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Ct.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}Ie=e,Re=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t,Sa({CacheCurrWrinklerCount:Ie,CacheCurrWrinklerCPSMult:Re})}(),Fa(),$a();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);mt=Io(e/Vo())}(),Ht!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(Ht=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,Ht&&(v.createFlash("cookieMonsterMod",3,"FortuneFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),v.createNotification("cookieMonsterMod","FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),Ut!==Game.shimmerTypes.reindeer.spawned&&(Ut=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(dt=Game.shimmers[e])})),v.createFlash("cookieMonsterMod",3,"SeaFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaSoundURL,"SeaSound","SeaVolume",!1),v.createNotification("cookieMonsterMod","SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!"),ea=1),Game.Objects.Farm.minigameLoaded&&Rt!==Game.Objects.Farm.minigame.nextStep&&(0!==Rt&&Rt0){let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)})),e>Xt?(Xt=e,e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxFlash?v.createFlash("cookieMonsterMod",3,"WrinklerMaxFlash",!1):v.createFlash("cookieMonsterMod",3,"WrinklerFlash",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSound?v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification?v.createNotification("cookieMonsterMod","WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):v.createNotification("cookieMonsterMod","WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):Xt=e}}()}_t=0,gt={},Object.keys(Game.shimmers).forEach((e=>{gt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(ct=Game.shimmers[e],_t+=1)})),Object.keys(Ao).forEach((e=>{void 0===gt[e]&&(Ao[e].parentNode.removeChild(Ao[e]),delete Ao[e])})),It!==Game.shimmerTypes.golden.n?(It=Game.shimmerTypes.golden.n,It&&(zt<_t&&(v.createFlash("cookieMonsterMod",3,"GCFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCSoundURL,"GCSound","GCVolume",!1),v.createNotification("cookieMonsterMod","GCNotification","Golden Cookie Spawned","A Golden Cookie has spawned. Click it now!"),Zo=1),Object.keys(Game.shimmers).forEach((e=>{void 0===Ao[Game.shimmers[e].id]&&function(e){const t=document.createElement("div");t.id=`GCTimer${e.id}`,t.style.width="96px",t.style.height="96px",t.style.position="absolute",t.style.zIndex="10000000001",t.style.textAlign="center",t.style.lineHeight="96px",t.style.fontFamily='"Kavoon", Georgia, serif',t.style.fontSize="35px",t.style.cursor="pointer",t.style.display="block",t.style.pointerEvents="none",0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&(t.style.display="none"),t.style.left=e.l.style.left,t.style.top=e.l.style.top,t.onclick=function(){e.pop()},t.onmouseover=function(){e.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",e.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},t.onmouseout=function(){e.l.style.filter="",e.l.style.webkitFilter=""},Ao[e.id]=t,l("shimmers").appendChild(t)}(Game.shimmers[e])}))),qa(),zt=_t,0===_t&&(ct=0)):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&It&&Object.keys(Ao).forEach((e=>{Ao[e].style.opacity=gt[e].l.style.opacity,Ao[e].style.transform=gt[e].l.style.transform,Ao[e].textContent=Math.ceil(gt[e].life/Game.fps)}))}const Gn={Favourite:1,Calculation:1,Notation:1,Colours:1,BarsDisplay:1,Tooltip:1,Statistics:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Achievs:1,Misc:1,infoMenu:1,optionsMenu:1};function vn(e){Ya(),w.loadMod("cookieMonsterMod",e,sn,Gn,bn),void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=[]),ln();for(let e=0;e{Game.registerMod("CookieMonster",wn),window.cookieMonsterFrameworkData.isInitializing=!1}),2e3):(Game.registerMod("CookieMonster",wn),window.cookieMonsterFrameworkData.isInitializing=!1)})()})(); +(()=>{var e={75: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,a,n,i=(n={initialized:!1,instances:[],readyQueue:[],register:function(){void 0!==e&&e.document&&("loading"!==e.document.readyState?n.pub.init():e.document.addEventListener("DOMContentLoaded",n.pub.init,!1))},installBySelector:function(t,o){if(!(o=o?n.node(o):e.document))throw new Error("Missing root node");for(var a=o.querySelectorAll(t),i=new RegExp("(^|\\s)("+n.pub.lookupClass+")(\\s*(\\{[^}]*\\})|\\s|$)","i"),r=0;r-1},isButtonEmpty:function(e){switch(n.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:(a=e.document.createElement("input"),!(!a.setAttribute||(a.setAttribute("type","color"),"color"!=a.type.toLowerCase()))),dataProp:"_data_jscolor",setData:function(){var e=arguments[0];if(3===arguments.length){var t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={},o=arguments[2];return t[i=arguments[1]]=o,!0}if(2===arguments.length&&"object"==typeof arguments[1]){t=e.hasOwnProperty(n.dataProp)?e[n.dataProp]:e[n.dataProp]={};var a=arguments[1];for(var i in a)a.hasOwnProperty(i)&&(t[i]=a[i]);return!0}throw new Error("Invalid arguments")},removeData:function(){var e=arguments[0];if(!e.hasOwnProperty(n.dataProp))return!0;for(var t=1;t=3&&(a=s[0].match(l))&&(n=s[1].match(l))&&(i=s[2].match(l)))return o.format="rgb",o.rgba=[parseFloat(a[1])||0,parseFloat(n[1])||0,parseFloat(i[1])||0,null],s.length>=4&&(r=s[3].match(l))&&(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}\b|#[0-9A-F]{6}([0-9A-F]{2})?\b|rgba?\(([^)]*)\)/gi,(function(e){t.push(e)})):Array.isArray(e)&&(t=e);for(var o=[],a=0;ac[i]&&-a[i]+o[i]+l[i]/2>c[i]/2&&o[i]+l[i]-m[i]>=0?o[i]+l[i]-m[i]:o[i],-a[r]+o[r]+l[r]+m[r]-p+p*s>c[r]?-a[r]+o[r]+l[r]/2>c[r]/2&&o[r]+l[r]-p-p*s>=0?o[r]+l[r]-p-p*s:o[r]+l[r]-p+p*s:o[r]+l[r]-p+p*s>=0?o[r]+l[r]-p+p*s:o[r]+l[r]-p-p*s];else var u=[o[i],o[r]+l[r]-p+p*s];var h=u[i],g=u[r],f=t.fixed?"fixed":"absolute",k=(u[0]+m[0]>o[0]||u[0]0?Math.ceil(s/o):0,n=Math.max(1,Math.floor((t-(o-1)*e.paletteSpacing)/o)),i=e.paletteHeight?Math.min(e.paletteHeight,n):n),a&&(r=a*i+(a-1)*e.paletteSpacing),{cols:o,rows:a,cellW:n,cellH:i,width:t,height:r}},getControlPadding:function(e){return Math.max(e.padding/2,2*e.pointerBorderWidth+e.pointerThickness-e.controlBorderWidth)},getPadYChannel:function(e){return"v"===e.mode.charAt(1).toLowerCase()?"v":"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=n.getInstances(),o=0;o0)for(var c=0;c=2&&"string"==typeof arguments[0]){try{if(!i(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{i(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=n.strList(e),o=0;o127.5},this.hide=function(){d()&&(n.removeClass(a.targetElement,n.pub.activeClassName),n.picker.wrap.parentNode.removeChild(n.picker.wrap),delete n.picker.owner)},this.show=function(){r()},this.redraw=function(){d()&&r()},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()||n.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(n.setDataAttr(this.targetElement,"current-color",t),e&n.flags.leaveValue||!this.valueElement||("hex"!==o&&"hexa"!==o||(this.uppercase||(t=t.toLowerCase()),this.hash||(t=t.replace(/^#/,""))),this.setValueElementValue(t)),!(e&n.flags.leaveAlpha)&&this.alphaElement){var a=Math.round(100*this.channels.a)/100;this.setAlphaElementValue(a)}e&n.flags.leavePreview||!this.previewElement||((n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&this.previewPosition,this.setPreviewElementBg(this.toRGBAString())),d()&&(s(),l(),c())},this.setPreviewElementBg=function(e){if(this.previewElement){var t=null,o=null;(n.isTextInput(this.previewElement)||n.isButton(this.previewElement)&&!n.isButtonEmpty(this.previewElement))&&(t=this.previewPosition,o=this.previewSize);var a=[];if(e){a.push({image:n.genColorPreviewGradient(e,t,o?o-n.pub.previewSeparator.length:null),position:"left top",size:"auto",repeat:t?"repeat-y":"repeat",origin:"padding-box"});var i=n.genColorPreviewCanvas("rgba(0,0,0,0)",t?{left:"right",right:"left"}[t]:null,o,!0);a.push({image:"url('"+i.canvas.toDataURL()+"')",position:(t||"left")+" top",size:i.width+"px "+i.height+"px",repeat:t?"repeat-y":"repeat",origin:"padding-box"})}else a.push({image:"none",position:"left top",size:"auto",repeat:"no-repeat",origin:"padding-box"});for(var r={image:[],position:[],size:[],repeat:[],origin:[]},s=0;s=0;u-=1){var h=p[u];if(h)if(n.pub.presets.hasOwnProperty(h)){for(var m in n.pub.presets[h])if(n.pub.presets[h].hasOwnProperty(m))try{i(m,n.pub.presets[h][m])}catch(e){console.warn(e)}}else console.warn("Unknown preset: %s",h)}var g=["preset"];for(var m in o)if(o.hasOwnProperty(m)&&-1===g.indexOf(m))try{i(m,o[m])}catch(e){console.warn(e)}if(void 0===this.container?this.container=e.document.body:this.container=n.node(this.container),!this.container)throw new Error("Cannot instantiate color picker without a container element");if(this.targetElement=n.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 n.pub)throw new Error("Color picker already installed on this element");if(this.targetElement.jscolor=this,n.addClass(this.targetElement,n.pub.className),n.instances.push(this),n.isButton(this.targetElement)&&("button"!==this.targetElement.type.toLowerCase()&&(this.targetElement.type="button"),n.isButtonEmpty(this.targetElement))){n.removeChildren(this.targetElement),this.targetElement.appendChild(e.document.createTextNode(" "));var f=n.getCompStyle(this.targetElement);(parseFloat(f["min-width"])||0)-1){var y=n.parseColorString(C);this._currentFormat=y?y.format:"hex"}else this._currentFormat=this.format.toLowerCase();this.processValueInput(C),void 0!==M&&this.processAlphaInput(M),this.random&&this.randomize.apply(this,Array.isArray(this.random)?this.random:[])}},n.pub.className="jscolor",n.pub.activeClassName="jscolor-active",n.pub.looseJSON=!0,n.pub.presets={},n.pub.presets.default={},n.pub.presets.light={backgroundColor:"rgba(255,255,255,1)",controlBorderColor:"rgba(187,187,187,1)",buttonColor:"rgba(0,0,0,1)"},n.pub.presets.dark={backgroundColor:"rgba(51,51,51,1)",controlBorderColor:"rgba(153,153,153,1)",buttonColor:"rgba(240,240,240,1)"},n.pub.presets.small={width:101,height:101,padding:10,sliderSize:14,paletteCols:8},n.pub.presets.medium={width:181,height:101,padding:12,sliderSize:16,paletteCols:10},n.pub.presets.large={width:271,height:151,padding:12,sliderSize:24,paletteCols:15},n.pub.presets.thin={borderWidth:1,controlBorderWidth:1,pointerBorderWidth:1},n.pub.presets.thick={borderWidth:2,controlBorderWidth:2,pointerBorderWidth:2},n.pub.sliderInnerSpace=3,n.pub.chessboardSize=8,n.pub.chessboardColor1="#666666",n.pub.chessboardColor2="#999999",n.pub.previewSeparator=["rgba(255,255,255,.65)","rgba(128,128,128,.65)"],n.pub.init=function(){if(!n.initialized)for(e.document.addEventListener("mousedown",n.onDocumentMouseDown,!1),e.document.addEventListener("keyup",n.onDocumentKeyUp,!1),e.addEventListener("resize",n.onWindowResize,!1),e.addEventListener("scroll",n.onWindowScroll,!1),n.appendDefaultCss(),n.pub.install(),n.initialized=!0;n.readyQueue.length;)n.readyQueue.shift()()},n.pub.install=function(e){var t=!0;try{n.installBySelector("[data-jscolor]",e)}catch(e){t=!1,console.warn(e)}if(n.pub.lookupClass)try{n.installBySelector("input."+n.pub.lookupClass+", button."+n.pub.lookupClass,e)}catch(e){}return t},n.pub.ready=function(e){return"function"!=typeof e?(console.warn("Passed value is not a function"),!1):(n.initialized?e():n.readyQueue.push(e),!0)},n.pub.trigger=function(e){var t=function(){n.triggerGlobal(e)};n.initialized?t():n.pub.ready(t)},n.pub.hide=function(){n.picker&&n.picker.owner&&n.picker.owner.hide()},n.pub.chessboard=function(e){return e||(e="rgba(0,0,0,0)"),n.genColorPreviewCanvas(e).canvas.toDataURL()},n.pub.background=function(e){var t=[];t.push(n.genColorPreviewGradient(e));var o=n.genColorPreviewCanvas();return t.push(["url('"+o.canvas.toDataURL()+"')","left top","repeat"].join(" ")),t.join(", ")},n.pub.options={},n.pub.lookupClass="jscolor",n.pub.installByClassName=function(){return console.error('jscolor.installByClassName() is DEPRECATED. Use data-jscolor="" attribute instead of a class name.'+n.docsRef),!1},n.register(),n.pub);return void 0===e.jscolor&&(e.jscolor=e.JSColor=i),i}))}},t={};function o(a){var n=t[a];if(void 0!==n)return n.exports;var i=t[a]={exports:{}};return e[a].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 a in t)o.o(t,a)&&!o.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";class e{constructor(e,t,o){this.defaultValue=e,this.type=t,this.group=o}}function t(e,t){Game.promptWrapL.className="framed",Game.promptL.innerHTML=`${e}
`,Object.keys(t).forEach((e=>{const o=document.createElement("a");o.id=`promptOption${e}`,o.className="option",o.onclick=function(){PlaySound("snd/tick.mp3"),t[e][1]()},o.textContent=t[e][0],Game.promptL.children[1].appendChild(o)})),Game.promptAnchorL.style.display="block",Game.darkenL.style.display="block",Game.promptL.focus(),Game.promptOn=1,Game.UpdatePrompt()}function a(e,t,o,n){(1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&3===t&&!1===window.cookieMonsterFrameworkData.isInitializing||1===t?(l("CMFlashScreen").style.backgroundColor=Game.mods.cookieMonsterFramework.saveData[e].settings[`Colour${o}`],l("CMFlashScreen").style.opacity="0.5",3===t?(l("CMFlashScreen").style.display="inline",setTimeout((()=>{a(e,2,o,!0)}),1e3/Game.fps)):setTimeout((()=>{a(e,0,o,!0)}),1e3/Game.fps)):2===t?(l("CMFlashScreen").style.opacity="1",setTimeout((()=>{a(e,1,o,!0)}),1e3/Game.fps)):0===t&&(l("CMFlashScreen").style.display="none")}function n(){Object.keys(Game.mods.cookieMonsterFramework.saveData).forEach((e=>{const t=JSON.stringify(Game.mods.cookieMonsterFramework.saveData[e]),o=b64_to_utf8(unescape(localStorage.getItem("CookieClickerGame")).split("!END!")[0]),a=new RegExp(`${e}.*(;|$)`),n=o.match(a);if(null!==n){const a=o.replace(n[0],`${e}:${t}`);localStorage.setItem("CookieClickerGame",escape(`${utf8_to_b64(a)}!END!`))}}))}function i(e,t){void 0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]&&(Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1),0===Game.mods.cookieMonsterFramework.saveData[e].headers[t]?Game.mods.cookieMonsterFramework.saveData[e].headers[t]=1:Game.mods.cookieMonsterFramework.saveData[e].headers[t]=0,n()}var r=o(75),s=o.n(r);function c(e,t,o,a,n){if((1===Game.mods.cookieMonsterFramework.saveData[e].settings[o]||n)&&!1===window.cookieMonsterFrameworkData.isInitializing){const o=new Audio(t);Game.mods.cookieMonsterFramework.saveData[e].settings.GeneralSound?o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100*(Game.volume/100):o.volume=Game.mods.cookieMonsterFramework.saveData[e].settings[a]/100,o.play()}}function d(e,t){null!==l(`slider${e}${t}`)&&(l(`slider${e}${t}right`).innerHTML=`${l(`slider${e}${t}`).value}%`,Game.mods.cookieMonsterFramework.saveData[e].settings[t]=Math.round(l(`slider${e}${t}`).value)),n()}function m(e,t){t.disconnect(),"log"===Game.onMenu?function(){const e=l("menu").children[1];if(e.insertBefore(function(){const e=document.createElement("div");e.className="subsection",e.id="cookieMonsterFrameworkMenuSection";const t=document.createElement("div");t.className="title",t.innerHTML="Cookie Monster Mod Family";const o=document.createElement("span");if(o.style.cursor="pointer",o.style.display="inline-block",o.style.height="14px",o.style.width="14px",o.style.borderRadius="7px",o.style.textAlign="center",o.style.backgroundColor="#C0C0C0",o.style.color="black",o.style.fontSize="13px",o.style.verticalAlign="middle",o.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu?"-":"+",o.onclick=function(){i("cookieMonsterFramework","infoMenu"),Game.UpdateMenu()},t.appendChild(o),e.appendChild(t),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const t=document.createElement("div");t.className="listing",t.innerHTML='Cookie Monster Team\noffers a suite of tools to enhance your game experience.
\nOriginally known from our work on the Cookie Monster add-on we are now expanding and working on new tools within the Cookie Monster Mod Family.
\nKeep an eye on our GitHub to see future work or use it to report bugs or feature requests!
\n',e.appendChild(t)}return e}(),e.children[1]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework.headers.infoMenu){const e=Game.mods.cookieMonsterFramework.listeners.infoMenu;for(let t=0;t{void 0===e.settings||void 0===e.settings[o]?n[o]=t[o].defaultValue:n[o]=e.settings[o]})),a.settings=n;const i={};return Object.keys(o).forEach((t=>{void 0===e.headers||void 0===e.headers[t]?i[t]=o[t]:i[t]=e.headers[t]})),a.headers=i,Object.keys(e).forEach((t=>{"settings"!==t&&"headers"!==t&&(a[t]=e[t])})),void 0===a.favouriteSettings&&(a.favouriteSettings=[]),a}(r,o,a),n(),i(),Object.keys(Game.mods.cookieMonsterFramework.saveData[e].settings).forEach((e=>{void 0!==o[e].func&&o[e].func()})),Game.UpdateMenu()}function g(){}const f={};function k(e){h("cookieMonsterFramework",e,f,u,g)}const C={init:function(){window.cookieMonsterFrameworkData={isInitializing:!0},new MutationObserver(m).observe(document.getElementById("menu"),{attributes:!0,childList:!0,subtree:!0}),function(){const e=document.createElement("div");e.id="CMFlashScreen",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="white",e.style.display="none",e.style.zIndex="9999999999",e.style.position="absolute",e.style.pointerEvents="none",l("wrapper").appendChild(e)}(),Game.registerHook("draw",p),void 0===Game.modSaveData.cookieMonsterFramework&&k("{}"),window.cookieMonsterFrameworkData.isInitializing=!1},load:k,save:function(){return JSON.stringify(Game.mods.cookieMonsterFramework.saveData.cookieMonsterFramework)},listeners:{infoMenu:[],optionsMenu:[]},saveData:{cookieMonsterFramework:{headers:{},settings:{}}}},M=function(){"undefined"==typeof cookieMonsterFrameworkData&&Game.registerMod("cookieMonsterFramework",C)},y=function(e){Game.mods.cookieMonsterFramework.saveData[e]={favouriteSettings:[],headers:{},settings:{}}},b={createInfoListing:function(e){const t=document.createElement("div");return t.className="listing",t.innerHTML=e,t},createOptionsListing:function(e,o,i,m,p){const u=document.createElement("div");if(u.className="listing",1===Game.mods.cookieMonsterFramework.saveData[e].settings.FavouriteSettings&&u.appendChild(function(e,t,o){const a=document.createElement("a");return o.includes(t)?(a.innerText="★",a.style.color="yellow"):a.innerText="☆",a.className="option",a.onclick=function(){!function(e,t){Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.includes(t)?Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings=Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.filter((e=>e!==t)):Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings.push(t),n()}(e,t),n(),Game.UpdateMenu()},a.onmouseover=function(){Game.tooltip.draw(this,escape('
Click to set this setting as favourite and show it in \'favourite\' settings at the top of the Cookie Monster Settings
'))},a.onmouseout=function(){Game.tooltip.hide()},a.appendChild(document.createTextNode(" ")),a}(e,o,Game.mods.cookieMonsterFramework.saveData[e].favouriteSettings)),"bool"===i[o].type){const t=document.createElement("a");i[o].toggle&&0===Game.mods.cookieMonsterFramework.saveData[e].settings[o]?t.className="option off":t.className="option",t.id=`${e}Options${o}`,t.onclick=function(){!function(e,t,o){Game.mods.cookieMonsterFramework.saveData[e].settings[t]+=1,Game.mods.cookieMonsterFramework.saveData[e].settings[t]===o[t].label.length?(Game.mods.cookieMonsterFramework.saveData[e].settings[t]=0,o[t].toggle&&(l(`${e}Options${t}`).className="option off")):l(`${e}Options${t}`).className="option",void 0!==o[t].func&&o[t].func(),n()}(e,o,i),Game.UpdateMenu()},t.textContent=i[o].label[Game.mods.cookieMonsterFramework.saveData[e].settings[o]],u.appendChild(t);const a=document.createElement("label");return a.textContent=i[o].desc,a.style.lineHeight="1.6",u.appendChild(a),u}if("vol"===i[o].type){const t=document.createElement("div");t.className="sliderBox";const a=document.createElement("div");a.style.float="left",a.innerHTML=i[o].desc,t.appendChild(a);const n=document.createElement("div");n.id=`slider${e}${o}right`,n.style.float="right",n.innerHTML=`${Game.mods.cookieMonsterFramework.saveData[e].settings[o]}%`,t.appendChild(n);const r=document.createElement("input");r.className="slider",r.id=`slider${e}${o}`,r.style.clear="both",r.type="range",r.min="0",r.max="100",r.step="1",r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.oninput=function(){d(e,o),Game.UpdateMenu()},r.onchange=function(){d(e,o),Game.UpdateMenu()},t.appendChild(r),u.appendChild(t);const s=document.createElement("a");return s.className="option",s.onclick=function(){c(e,Game.mods.cookieMonsterFramework.saveData[e].settings[o.replace("Volume","SoundURL")],o.replace("Volume","Sound"),o,!0)},s.textContent="Test sound",u.appendChild(s),u}if("url"===i[o].type){const a=document.createElement("span");a.className="option",a.textContent=`${i[o].label} `,a.style.lineHeight="1.6",u.appendChild(a);const r=document.createElement("input");r.id=`${e}Options${o}`,r.className="option",r.type="text",r.readOnly=!0,r.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],r.style.width="300px",u.appendChild(r),u.appendChild(document.createTextNode(" "));const s=document.createElement("input");s.id=`${e}Options${o}Prompt`,s.className="option",s.type="text",s.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o];const c=document.createElement("a");c.className="option",c.onclick=function(){t(s.outerHTML,[["Save",function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=l(`${e}Options${o}Prompt`).value,n(),Game.ClosePrompt(),Game.UpdateMenu()}],["Cancel",function(){Game.ClosePrompt()}]])},c.textContent="Edit",u.appendChild(c);const d=document.createElement("label");return d.textContent=i[o].desc,d.style.lineHeight="1.6",u.appendChild(d),u}if("colour"===i[o].type){const t=document.createElement("span");t.className="option";const l=document.createElement("input");l.id=o,l.style.width="65px",l.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],t.appendChild(l),new r(l,{hash:!0,position:"right",onInput:function(){Game.mods.cookieMonsterFramework.saveData[e].settings[this.targetElement.id]=this.toHEXString(),m(),n(),Game.UpdateMenu()}});const c=document.createElement("label");if(c.textContent=i[o].desc,c.style.lineHeight="1.6",t.appendChild(c),o.includes("Flash")){const n=document.createElement("a");n.className="option",n.onclick=function(){a(e,3,o.replace("Colour",""),!0)},n.textContent="Test flash",t.appendChild(n)}return u.appendChild(t),s().init(),u}if("numscale"===i[o].type){const t=document.createElement("span");t.className="option",t.textContent=`${i[o].label} `,t.style.lineHeight="1.6",u.appendChild(t);const a=document.createElement("input");a.id=`${e}Options${o}`,a.className="option",a.type="number",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o],a.min=i[o].min,a.max=i[o].max,a.oninput=function(){Game.mods.cookieMonsterFramework.saveData[e].settings[o]=this.value,n(),p(),Game.UpdateMenu()},u.appendChild(a),u.appendChild(document.createTextNode(" "));const r=document.createElement("label");return r.textContent=i[o].desc,r.style.lineHeight="1.6",u.appendChild(r),u}if("keycode"===i[o].type){const a=document.createElement("input");a.id=`${e}Options${o}Prompt`,a.className="option",a.type="text",a.value=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName;const r=document.createElement("a");r.className="option",r.id=`${e}Options${o}`,r.onclick=function(){t(a.outerHTML,[]),l(`${e}Options${o}Prompt`).addEventListener("keyup",(t=>{!function(e,t,o){const a={key:o.key,altKey:o.altKey,ctrlKey:o.ctrlKey,shiftKey:o.shiftKey,displayName:`${o.shiftKey?"Shift + ":""}${o.altKey?"Alt + ":""}${o.ctrlKey?"Ctrl + ":""}${o.key}`};Game.mods.cookieMonsterFramework.saveData[e].settings[t]=a,n()}(e,o,t),Game.ClosePrompt(),Game.UpdateMenu()}))},r.textContent=Game.mods.cookieMonsterFramework.saveData[e].settings[o].displayName,u.appendChild(r);const s=document.createElement("label");return s.textContent=i[o].desc,s.style.lineHeight="1.6",u.appendChild(s),u}return u},createOptionsSubHeader:function(e,t,o){const a=document.createElement("div");a.className="title",a.style.opacity="0.7",a.style.fontSize="17px",a.appendChild(document.createTextNode(`${o} `));const n=document.createElement("span");return 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=Game.mods.cookieMonsterFramework.saveData[e].headers[t]?"-":"+",n.onclick=function(){i(e,t),Game.UpdateMenu()},a.appendChild(n),a}},G=function(e,t,o){const a=document.createElement("div");a.className="subsection",a.id=`${e}MenuSection`;const n=document.createElement("div");n.className="title",n.style.fontSize="18px",n.innerHTML=t;const r=document.createElement("span");return r.style.cursor="pointer",r.style.display="inline-block",r.style.height="14px",r.style.width="14px",r.style.borderRadius="7px",r.style.textAlign="center",r.style.backgroundColor="#C0C0C0",r.style.color="black",r.style.fontSize="13px",r.style.verticalAlign="middle",r.textContent=Game.mods.cookieMonsterFramework.saveData[e].headers[o]?"-":"+",r.onclick=function(){i(e,o),Game.UpdateMenu()},n.appendChild(r),a.appendChild(n),a},v={createFlash:a,createNotification:function(e,t,o,a){1===Game.mods.cookieMonsterFramework.saveData[e].settings[t]&&"hidden"===document.visibilityState&&!1===window.cookieMonsterFrameworkData.isInitializing&&new Notification(o,{body:a,badge:"https://orteil.dashnet.org/cookieclicker/favicon.ico"})},cookieMonsterPrompt:t,playCMSound:c},w={loadMod:h,saveFramework:n},x=class extends e{constructor(e,t,o,a){super(e,t,o),this.desc=a}},T=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.min=i,this.max=r}},S=class extends e{constructor(e,t,o,a,n,i){super(e,t,o),this.label=a,this.desc=n,this.toggle=i}},F=class extends e{constructor(e,t,o,a,n,i,r){super(e,t,o),this.label=a,this.desc=n,this.toggle=i,void 0!==r&&(this.func=r)}},E=class extends e{constructor(e,t,o,a,n){super(e,t,o),this.label=a,this.desc=n;for(let e=0;e<101;e++)this.label[e]=`${e}%`}};function B(){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerButtons&&Game.elderWrath?(l("PopAllNormalWrinklerButton").style.display="",l("PopFattestWrinklerButton").style.display=""):(l("PopAllNormalWrinklerButton").style.display="none",l("PopFattestWrinklerButton").style.display="none")}let P,N,O,D,L,A,j,W,$,U,H,R,I,z,V,_,X,Q,q,Y,K,J,Z,ee,te,oe,ae,ne,ie,re,se,le,ce,de,me,pe,ue=0,he=0,ge=0,fe=0,ke=0,Ce=0,Me=0,ye=0,be=0,Ge=0,ve=0,we=0,xe=0,Te=0,Se=0,Fe=1,Ee=1,Be=1,Pe=0,Ne=0,Oe=0,De=0,Le={},Ae={},je={},We={},$e=0,Ue=0,He=[0,null],Re=0,Ie=0,ze={},Ve={},_e={},Xe={},Qe={},qe=0,Ye=0,Ke=[],Je=0,Ze=0,et=[],tt=0,ot=0,at=[],nt=0,it=0,rt=[],st=0,lt=0,ct={},dt={},mt=0,pt=0,ut=0,ht=[],gt={},ft=0,kt={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]},Ct=[],Mt=[],yt=[];function bt(e){let t=0;return Game.dragonAuras[ne].name!==e&&Game.dragonAuras[ie].name!==e||(t=1),("Reality Bending"===Game.dragonAuras[ne].name||"Reality Bending"===Game.dragonAuras[ie].name&&Game.dragonLevel>=Game.dragonAurasBN[e].id+4)&&(t+=.1),t}function Gt(){let e=.25;return e*=1+bt("Earth Shatterer"),e}function vt(e,t){return void 0===de[e]?void 0===t?1:t:de[e]}function wt(e){const t=Mt[e];return(!t||1!==Game.ascensionMode||"prestige"!==t.pool&&"fortune"!==t.tier)&&t?t.bought:0}function xt(e){return Game.dragonAuras[ne].name===e||Game.dragonAuras[ie].name===e}function Tt(e){if(Game.hasGod){void 0===Ct.Temple.minigame&&(Ct.Temple.minigame=Game.Objects.Temple.minigame);const t=Ct.Temple.minigame.gods[e];if(re===t.id)return 1;if(se===t.id)return xt("Supreme Intellect")?1:2;if(le===t.id)return xt("Supreme Intellect")?2:3}return!1}function St(e,t){let o=t;if(wt("Season savings")&&(o*=.99),wt("Santa's dominion")&&(o*=.99),wt("Faberge egg")&&(o*=.99),wt("Divine discount")&&(o*=.99),wt("Fortune #100")&&(o*=.99),o*=1-.02*bt("Fierce Hoarder"),Game.hasBuff("Everything must go")&&(o*=.95),Game.hasBuff("Crafty pixies")&&(o*=.98),Game.hasBuff("Nasty goblins")&&(o*=1.02),e.fortune&&wt(e.fortune.name)&&(o*=.93),o*=vt("buildingCost"),Ct.Temple.minigameLoaded){const e=Tt("creation");1===e?o*=.93:2===e?o*=.95:3===e&&(o*=.98)}return o}function Ft(e,t,o,a,n,i){const r=void 0===i?0:i;let s=n,l=o,c=0;-1===n&&(s=l),n||(s=Game.buyBulk);for(let o=0;o0&&(c+=o,l-=1)}return c}const Et=["","","M","G","T","P","E","Z","Y"],Bt=["","","M","B","Tr","Quadr","Quint","Sext","Sept","Oct","Non","Dec","Undec","Duodec","Tredec","Quattuordec","Quindec","Sexdec","Septendec","Octodec","Novemdec","Vigint","Unvigint","Duovigint","Trevigint","Quattuorvigint"],Pt=["","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 Nt,Ot,Dt,Lt,At,jt,Wt,$t,Ut,Ht,Rt,It,zt,Vt,_t,Xt,Qt,qt=[],Yt=[],Kt=[],Jt={},Zt=Date.now(),eo=Date.now();function to(e,t,o){const a=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ScaleDecimals+1;if(e===1/0)return"Infinity";if(void 0===e)return"0";if(0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Scale)return Jt.Beautify(e,t);if(Number.isFinite(e)){if(e<0)return`-${to(Math.abs(e))}`;let n="";if(0===e)return e.toString();if(e>.001&&e=.01&&e=.01&&e=.01&&e{l(`productPrice${Game.Objects[e].id}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings[`Colour${t[e].colour}`]})),l(`storeBulk${ut}`).style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen):Object.keys(Game.Objects).forEach((e=>{l(`productPrice${Game.Objects[e].id}`).style.removeProperty("color")})):-1===Game.buyMode&&Object.keys(Le).forEach((e=>{const t=Game.Objects[e];l(`productPrice${t.id}`).style.color="",l(`productPrice${t.id}`).innerHTML=to(Ft(t,t.basePrice,t.amount,t.free,Game.buyBulk,1))})),1===Game.buyMode&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(Le).map((e=>{const t={};return t.name=e,t.pp=Le[e].pp,t.colour=Le[e].colour,t})),e.sort(((e,t)=>go.indexOf(e.colour)===go.indexOf(t.colour)?e.pp-t.pp:go.indexOf(e.colour)-go.indexOf(t.colour)))):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings?(e=Object.keys(t).map((e=>{const o={};return o.name=e,o.pp=t[e].pp,o.colour=t[e].colour,o})),e.sort(((e,t)=>go.indexOf(e.colour)===go.indexOf(t.colour)?e.pp-t.pp:go.indexOf(e.colour)-go.indexOf(t.colour)))):3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SortBuildings&&(e=Object.keys(We).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t.amountUntilNext=We[e].AmountNeeded,t.priceUntilNext=We[e].price,t})),e.sort(((e,t)=>e.id-t.id)),e.sort(((e,t)=>(101!==e.amountUntilNext?e.priceUntilNext:1/0)-(101!==t.amountUntilNext?t.priceUntilNext:1/0)))):(e=Object.keys(Le).map((e=>{const t={};return t.name=e,t.id=Game.Objects[e].id,t})),e.sort(((e,t)=>e.id-t.id)));for(let t=0;t{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradesNeverCollapse||"products"===e.id?e.style.height="auto":"vaultUpgrades"===e.id?(e.style.height="",e.style.minHeight="0px"):"upgrades"===e.id?(e.style.height="",e.className.includes("hasMenu")?e.style.minHeight="82px":e.style.minHeight="60px"):(e.style.height="",e.style.minHeight="60px")}))}function Uo(){if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour>0){let e=0,t=0,o=0,a=0,n=0,i=0,r=0;Object.keys(Game.UpgradesInStore).forEach((s=>{const c=Game.UpgradesInStore[s];let d=!1;for(let e=0;ego.indexOf(e.colour)===go.indexOf(t.colour)?e.pp-t.pp:go.indexOf(e.colour)-go.indexOf(t.colour))):e.sort(((e,t)=>e.price-t.price));const t=function(e,t){return e.findIndex((e=>e.name===t.name))};for(let o=0;o7776e5)return t?"Over 9000 days!":">9000d";l+=a>0?a+(t?1===a?" year":" years":"y")+", ":"",(l.length>0||n>0)&&(l+=n+(t?1===n?" day":" days":"d")+", "),(l.length>0||i>0)&&(l+=i+(t?1===i?" hour":" hours":"h")+", "),(l.length>0||r>0)&&(l+=r+(t?1===r?" minute":" minutes":"m")+", "),l+=s+(t?1===s?" second":" seconds":"s")}else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat){if(o>315576e4)return"XX:XX:XX:XX:XX";l+=(a<10?"0":"")+a+":",l+=(n<10?"0":"")+n+":",l+=(i<10?"0":"")+i+":",l+=(r<10?"0":"")+r+":",l+=(s<10?"0":"")+s}else{if(o>7776e5)return t?"Over 9000 days!":">9000d";a>0?(l+=a+(t?1===a?" year":" years":"y")+", ",l+=n+(t?1===n?" day":" days":"d")):n>0?(l+=n+(t?1===n?" day":" days":"d")+", ",l+=i+(t?1===i?" hour":" hours":"h")):i>0?(l+=i+(t?1===i?" hour":" hours":"h")+", ",l+=r+(t?1===r?" minute":" minutes":"m")):r>0?(l+=r+(t?1===r?" minute":" minutes":"m")+", ",l+=s+(t?1===s?" second":" seconds":"s")):l+=s+(t?1===s?" second":" seconds":"s")}return l}function zo(e){let t,o;return e<=0?(o=1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimeFormat?"00:00:00:00:00":"Done!",t=ro):(o=Io(e),t=e>300?co:e>60?lo:so),{text:o,colour:t}}function Vo(){return Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CPSMode?X:0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(1-Game.cpsSucked):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?Game.cookiesPs*(Re+(1-.05*Ie)):null!==He[1]&&2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink&&1===Game.wrinklers[He[1]].type?Game.cookiesPs*(3*Re/Ie+(1-.05*Ie)):Game.cookiesPs*(Re/Ie+(1-.05*Ie))}function _o(){return 1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?$e:2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.CalcWrink?He[0]:0}function Xo(e,t,o){const a=document.createElement("div");a.id=e,a.style.height="12px",a.style.margin="0px 10px",a.style.position="relative";const n=document.createElement("div");n.style.width="100%",n.style.height="10px",n.style.margin="auto",n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.right="0px",n.style.bottom="0px";const i=document.createElement("span");i.style.display="inline-block",i.style.textAlign="right",i.style.fontSize="10px",i.style.width="108px",i.style.marginRight="5px",i.style.verticalAlign="text-top",i.textContent=t,n.appendChild(i);for(let e=0;e{let o,a=Game.buyBulk;1===Game.buyMode?vo=a:a=vo,1===a&&(a=Le),10===a&&(a=Ae),100===a&&(a=je),e+=1,l("CMBotBar").firstChild.firstChild.childNodes[0].childNodes[e].childNodes[1].textContent=Game.Objects[t].amount,l("CMBotBar").firstChild.firstChild.childNodes[1].childNodes[e].textContent=to(a[t].bonus,2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].className=oo+a[t].colour,o=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPDisplayTime?Io(Math.round(a[t].pp)):to(Math.round(a[t].pp),2),l("CMBotBar").firstChild.firstChild.childNodes[2].childNodes[e].textContent=o;const n=zo((Game.Objects[t].bulkPrice-(Game.cookies+_o()))/Vo());l("CMBotBar").firstChild.firstChild.childNodes[3].childNodes[e].className=oo+n.colour,"Done!"===n.text&&Game.cookies{if(!Game.Tiers[e.tieredUpgrades[o].tier].special&&wt(e.tieredUpgrades[o].name)){let a=2;1!==Game.ascensionMode&&wt(e.unshackleUpgrade)&&wt(Game.Tiers[e.tieredUpgrades[o].tier].unshackleUpgrade)&&(a+=1===e.id?.5:.1*(20-e.id)),t*=a}})),Object.keys(e.synergies).forEach((o=>{if(wt(e.synergies[o].name)){const a=e.synergies[o];a.buildingTie1.name===e.name?t*=1+.05*a.buildingTie2.amount:a.buildingTie2.name===e.name&&(t*=1+.001*a.buildingTie1.amount)}})),e.fortune&&wt(e.fortune.name)&&(t*=1.07),e.grandma&&wt(e.grandma.name)&&(t*=1+.01*Ct.Grandma.amount*(1/(e.id-1))),"object"==typeof e.tieredUpgrades.misfortune&&1===e.vanilla&&wt(e.tieredUpgrades.misfortune.name))switch(Game.elderWrath){case 1:t*=1.02;break;case 2:t*=1.04;break;case 3:t*=1.06;break;default:t*=1}return t}function na(e){const t=Game.Objects[e],o={};return"Cursor"===t.name?o.cps=function(e){let t=0;wt("Thousand fingers")&&(t+=.1),wt("Million fingers")&&(t*=5),wt("Billion fingers")&&(t*=10),wt("Trillion fingers")&&(t*=20),wt("Quadrillion fingers")&&(t*=20),wt("Quintillion fingers")&&(t*=20),wt("Sextillion fingers")&&(t*=20),wt("Septillion fingers")&&(t*=20),wt("Octillion fingers")&&(t*=20),wt("Nonillion fingers")&&(t*=20),wt("Decillion fingers")&&(t*=20),wt("Undecillion fingers")&&(t*=20),wt("Unshackled cursors")&&(t*=25);let o=1,a=0;return Object.keys(Ct).forEach((e=>{"Cursor"!==Ct[e].name&&(a+=Ct[e].amount)})),t*=a,o*=aa(e),o*=Game.magicCpS("Cursor"),o*=vt("cursorCps"),Game.ComputeCps(.1,wt("Reinforced index finger")+wt("Carpal tunnel prevention cream")+wt("Ambidextrous"),t)*o}:"Grandma"===t.name?o.cps=function(e){let o=1;if(Object.keys(Game.GrandmaSynergies).forEach((e=>{wt(Game.GrandmaSynergies[e])&&(o*=2)})),wt("Bingo center/Research facility")&&(o*=4),wt("Ritual rolling pins")&&(o*=2),wt("Naughty list")&&(o*=2),wt("Elderwort biscuits")&&(o*=1.02),o*=vt("grandmaCps"),wt("Cat ladies"))for(let e=0;e{"Grandma"!==Ct[e].name&&(n+=Ct[e].amount)})),o*=1+.01*bt("Elder Battalion")*n,o*=Game.magicCpS(t.name),(t.baseCps+a)*o}:o.cps=function(e){let t=1;return t*=aa(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.unshackleUpgrade=t.unshackleUpgrade,o}function ia(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(Ct).forEach((t=>{Ct[t].level>=10&&(e+=1)})),e}:o.power=function(){let e=2;if(wt("Starlove")&&(e=3),Game.hasGod){const t=Tt("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 ra(){Z=Game.UpgradesOwned,ee=Game.pledges,te=Game.AchievementsOwned,oe=Game.heavenlyPower,ae=Game.prestige,Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];let o=Ct[e];void 0===o&&(Ct[e]=na(e),o=Ct[e],Qo(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&&(re=t.minigame.slot[0],se=t.minigame.slot[1],le=t.minigame.slot[2]),o.minigameLoaded=t.minigameLoaded,o.minigame=t.minigame),Ct[e]=o})),Object.keys(Game.Upgrades).forEach((e=>{const t=Game.Upgrades[e];let o=Mt[e];void 0===o&&(Mt[e]=ia(e),o=Mt[e]),o.bought=t.bought,Mt[e]=o})),Object.keys(Game.Achievements).forEach((e=>{const t=Game.Achievements[e];let o=yt[e];void 0===o&&(yt[e]=oa(e),o=yt[e]),o.won=t.won,yt[e]=o})),ta(),ne=ue,ie=he}function sa(e){const t=document.createElement("div");return t.style.fontWeight="bold",t.id=`${e}Title`,t.className=oo+io,t.textContent=e,t}function la(e){e.appendChild(sa("Bonus Income"));const t=document.createElement("div");t.style.marginBottom="4px",t.style.color="white",t.id="CMTooltipIncome",e.appendChild(t),e.appendChild(sa("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(sa("Payback Period"));const a=document.createElement("div");a.style.marginBottom="4px",a.id="CMTooltipPP",e.appendChild(a),e.appendChild(sa("Time Left"));const n=document.createElement("div");if(n.id="CMTooltipTime",e.appendChild(n),"b"===Po){e.appendChild(sa("Production left till next achievement")),e.lastChild.id="CMTooltipProductionLeftHeader";const t=document.createElement("div");t.id="CMTooltipProductionLeft",e.appendChild(t)}if("b"===Po){e.appendChild(sa("Buildings (price / PP) left till next achievement")),e.lastChild.id="CMTooltipNextAchievementHeader";const t=document.createElement("div");t.id="CMTooltipNextAchievement",e.appendChild(t)}}function ca(e,t){let o="";return o=e.pp<=0||e.pp===1/0?po:e.pp0&&(o=co),o}function da(){let e=1;return Object.keys(Game.buffs).forEach((t=>{void 0!==Game.buffs[t].multCpS&&(e*=Game.buffs[t].multCpS)})),e}function ma(e){yt[e]&&0===yt[e].won&&(yt[e].won=1,"shadow"!==Game.Achievements[e].pool&&(te+=1))}function pa(){me=0;let e=1;const t={};Object.keys(Game.Objects).forEach((e=>{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]}))}})),de=t,1!==Game.ascensionMode&&(e+=.01*parseFloat(ae)*oe*function(){let e=0;if(wt("Heavenly chip secret")&&(e+=.05),wt("Heavenly cookie stand")&&(e+=.2),wt("Heavenly bakery")&&(e+=.25),wt("Heavenly confectionery")&&(e+=.25),wt("Heavenly key")&&(e+=.25),e*=1+.05*bt("Dragon God"),wt("Lucky digit")&&(e*=1.01),wt("Lucky number")&&(e*=1.01),wt("Lucky payout")&&(e*=1.01),Game.hasGod){const t=Tt("creation");1===t?e*=.7:2===t?e*=.8:3===t&&(e*=.9)}return e}()),e*=vt("cps"),wt("Heralds")&&1!==Game.ascensionMode&&(e*=1+.01*Game.heralds),Object.keys(Game.cookieUpgrades).forEach((t=>{const o=Game.cookieUpgrades[t];wt(o.name)&&("function"==typeof o.power?e*=1+.01*Mt[o.name].power(Mt[o.name]):e*=1+.01*o.power)})),wt("Specialized chocolate chips")&&(e*=1.01),wt("Designer cocoa beans")&&(e*=1.02),wt("Underworld ovens")&&(e*=1.03),wt("Exotic nuts")&&(e*=1.04),wt("Arcane sugar")&&(e*=1.05),wt("Increased merriness")&&(e*=1.15),wt("Improved jolliness")&&(e*=1.15),wt("A lump of coal")&&(e*=1.01),wt("An itchy sweater")&&(e*=1.01),wt("Santa's dominion")&&(e*=1.2),wt("Fortune #100")&&(e*=1.01),wt("Fortune #101")&&(e*=1.07),wt("Dragon scale")&&(e*=1.03);let o=1;if(Tt){let t=Tt("asceticism");1===t?e*=1.15:2===t?e*=1.1:3===t&&(e*=1.05),t=Tt("ages"),1===t?e*=1+.15*Math.sin(Zt/1e3/10800*Math.PI*2):2===t?e*=1+.15*Math.sin(Zt/1e3/43200*Math.PI*2):3===t&&(e*=1+.15*Math.sin(Zt/1e3/86400*Math.PI*2)),t=Tt("decadence"),1===t?o*=.93:2===t?o*=.95:3===t&&(o*=.98),t=Tt("industry"),1===t?o*=1.1:2===t?o*=1.06:3===t&&(o*=1.03),t=Tt("labor"),1===t?o*=.97:2===t?o*=.98:3===t&&(o*=.99)}wt("Santa's legacy")&&(e*=1+.03*(Game.santaLevel+1));const a=te/25;let n=1;if(wt("Santa's milk and cookies")&&(n*=1.05),n*=1+.05*bt("Breath of Milk"),Tt){const e=Tt("mother");1===e?n*=1.1:2===e?n*=1.05:3===e&&(n*=1.03)}n*=vt("milk");let i=1;wt("Kitten helpers")&&(i*=1+.1*a*n),wt("Kitten workers")&&(i*=1+.125*a*n),wt("Kitten engineers")&&(i*=1+.15*a*n),wt("Kitten overseers")&&(i*=1+.175*a*n),wt("Kitten managers")&&(i*=1+.2*a*n),wt("Kitten accountants")&&(i*=1+.2*a*n),wt("Kitten specialists")&&(i*=1+.2*a*n),wt("Kitten experts")&&(i*=1+.2*a*n),wt("Kitten consultants")&&(i*=1+.2*a*n),wt("Kitten assistants to the regional manager")&&(i*=1+.175*a*n),wt("Kitten marketeers")&&(i*=1+.15*a*n),wt("Kitten analysts")&&(i*=1+.125*a*n),wt("Kitten executives")&&(i*=1+.115*a*n),wt("Kitten admins")&&(i*=1+.11*a*n),wt("Kitten strategists")&&(i*=1+.105*a*n),wt("Kitten angels")&&(i*=1+.1*a*n),wt("Fortune #103")&&(i*=1+.05*a*n),Object.keys(Ct).forEach((e=>{const t=Ct[e];let i=t.cps(t);1!==Game.ascensionMode&&(i*=(1+.01*t.level)*o),"Grandma"===t.name&&wt("Milkhelp® lactose intolerance relief tablets")&&(i*=1+.05*a*n),me+=t.amount*i})),wt('"egg"')&&(me+=9),e*=i;let r=1;if(wt("Chicken egg")&&(r*=1.01),wt("Duck egg")&&(r*=1.01),wt("Turkey egg")&&(r*=1.01),wt("Quail egg")&&(r*=1.01),wt("Robin egg")&&(r*=1.01),wt("Ostrich egg")&&(r*=1.01),wt("Cassowary egg")&&(r*=1.01),wt("Salmon roe")&&(r*=1.01),wt("Frogspawn")&&(r*=1.01),wt("Shark egg")&&(r*=1.01),wt("Turtle egg")&&(r*=1.01),wt("Ant larva")&&(r*=1.01),wt("Century egg")){let e=10*Math.floor((eo-Game.startDate)/1e3/10)/60/60/24;e=Math.min(e,100),Ne=1+.1*(1-(1-e/100)**3),r*=Ne}e*=r,wt("Sugar baking")&&(e*=1+.01*Math.min(100,Game.lumps)),e*=1+bt("Radiant Appetite");const s=me*e;Object.keys(Game.CpsAchievements).forEach((e=>{s>=Game.CpsAchievements[e].threshold&&ma(Game.CpsAchievements[e].name)})),pe=s;const{n:l}=Game.shimmerTypes.golden,c=bt("Dragon's Fortune");for(let t=0;t{wt(e[o])&&(t+=.1)}))}e*=t}if(wt("Shimmering veil [off]")){let t=.5;wt("Reinforced membrane")&&(t+=.1),wt("Delicate touch")&&(t+=.05),wt("Steadfast murmur")&&(t+=.05),wt("Glittering edge")&&(t+=.05),e*=1+t}wt("Magic shenanigans")&&(e*=1e3),wt("Occult obstruction")&&(e*=0),me=Game.runModHookOnValue("cps",me),e*=da(),me*=e}const ua=["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 #019","Fortune #020","Fortune #100","Fortune #101","Fortune #102","Fortune #103","Fortune #104"],ha=["Skull cookies","Ghost cookies","Bat cookies","Slime cookies","Pumpkin cookies","Eyeball cookies","Spider cookies"],ga=["Christmas tree biscuits","Snowflake biscuits","Snowman biscuits","Holly biscuits","Candy cane biscuits","Bell biscuits","Present biscuits"],fa=["Pure heart biscuits","Ardent heart biscuits","Sour heart biscuits","Weeping heart biscuits","Golden heart biscuits","Eternal heart biscuits","Prism heart biscuits"],ka=["Elderwort biscuits","Bakeberry cookies","Duketater cookies","Green yeast digestives","Wheat slims","Fern tea","Ichor syrup"];function Ca(e){return yt[e]?yt[e].won:0}function Ma(){let e=0;Object.keys(Game.GrandmaSynergies).forEach((t=>{wt(Game.GrandmaSynergies[t])&&(e+=1)})),!Ca("Elder")&&e>=7&&ma("Elder"),!Ca("Veteran")&&e>=14&&ma("Veteran");let t=0,o=1,a=1,n=1e5;Object.keys(Ct).forEach((e=>{t+=Ct[e].amount,n=Math.min(Ct[e].amount,n),Ca("Mathematician")||Ct[e].amount=1&&ma("One with everything"),1===o&&ma("Mathematician"),1===a&&ma("Base 10"),n>=100&&ma("Centennial"),n>=150&&ma("Centennial and a half"),n>=200&&ma("Bicentennial"),n>=250&&ma("Bicentennial and a half"),n>=300&&ma("Tricentennial"),n>=350&&ma("Tricentennial and a half"),n>=400&&ma("Quadricentennial"),n>=450&&ma("Quadricentennial and a half"),n>=500&&ma("Quincentennial"),n>=550&&ma("Quincentennial and a half"),n>=600&&ma("Sexcentennial"),n>=650&&ma("Sexcentennial and a half"),n>=700&&ma("Septcentennial"),t>=100&&ma("Builder"),t>=500&&ma("Architect"),t>=1e3&&ma("Engineer"),t>=2500&&ma("Lord of Constructs"),t>=5e3&&ma("Grand design"),t>=7500&&ma("Ecumenopolis"),t>=1e4&&ma("Myriad"),Z>=20&&ma("Enhancer"),Z>=50&&ma("Augmenter"),Z>=100&&ma("Upgrader"),Z>=200&&ma("Lord of Progress"),Z>=300&&ma("The full picture"),Z>=400&&ma("When there's nothing left to add"),Z>=500&&ma("Kaizen"),Z>=600&&ma("Beyond quality"),Z>=700&&ma("Oft we mar what's well"),t>=4e3&&Z>=300&&ma("Polymath"),t>=8e3&&Z>=400&&ma("Renaissance baker"),Ct.Cursor.amount+Ct.Grandma.amount>=777&&ma("The elder scrolls");let i=!0;Object.keys(ha).forEach((e=>{wt(ha[e])||(i=!1)})),i&&ma("Spooky cookies");let r=!0;if(Object.keys(ga).forEach((e=>{wt(ga[e])||(r=!1)})),r&&ma("Let it snow"),wt("Fortune cookies")){const e=Game.Tiers.fortune.upgrades;let t=0;Object.keys(e).forEach((o=>{wt(e[o].name)&&(t+=1)})),t>=e.length&&ma("O Fortuna")}}function ya(e,t){ra(),Ct[e].amount+=t;const o=Ct[e];"Cursor"===e?(o.amount>=1&&ma("Click"),o.amount>=2&&ma("Double-click"),o.amount>=50&&ma("Mouse wheel"),o.amount>=100&&ma("Of Mice and Men"),o.amount>=200&&ma("The Digital"),o.amount>=300&&ma("Extreme polydactyly"),o.amount>=400&&ma("Dr. T"),o.amount>=500&&ma("Thumbs, phalanges, metacarpals"),o.amount>=600&&ma("With her finger and her thumb"),o.amount>=700&&ma("Gotta hand it to you"),o.amount>=800&&ma("The devil's workshop"),o.amount>=900&&ma("All on deck"),o.amount>=1e3&&ma("A round of applause")):Object.keys(Game.Objects[o.name].tieredAchievs).forEach((e=>{o.amount>=Game.Tiers[Game.Objects[o.name].tieredAchievs[e].tier].achievUnlock&&ma(Game.Objects[o.name].tieredAchievs[e].name)}));const a=te;return pa(),Ma(),a!==te&&pa(),me-Game.cookiesPs}function ba(e,t,o){let a=e,n=0;for(;ae.plantsById[e.plot[No[1]][No[0]][0]-1].mature,o=e.plantsById[e.plot[No[1]][No[0]][0]-1].name;l("CMTooltipBorder").appendChild(sa("Reward (Current / Maximum)"));const a=document.createElement("div");a.id="CMTooltipPlantReward",l("CMTooltipBorder").appendChild(a),"Chocoroot"===o||"White chocoroot"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.03*Game.cookies,60*Game.cookiesPs*3)):"0"} / ${to(60*Game.cookiesPs*3)}`:"Bakeberry"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.03*Game.cookies,60*Game.cookiesPs*30)):"0"} / ${to(60*Game.cookiesPs*30)}`:"Queenbeet"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.04*Game.cookies,60*Game.cookiesPs*60)):"0"} / ${to(60*Game.cookiesPs*60)}`:"Duketater"===o?l("CMTooltipPlantReward").textContent=`${t?to(Math.min(.08*Game.cookies,60*Game.cookiesPs*120)):"0"} / ${to(60*Game.cookiesPs*120)}`:l("CMTooltipArea").style.display="none"}else l("CMTooltipArea").style.display="none"}():"ha"===Po?function(){const{minigame:e}=Game.Objects.Farm;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipLump){l("CMTooltipBorder").appendChild(sa("Cookies gained from harvesting:"));let t=0,o=0;Game.keys[16]&&Game.keys[17]&&(o=1);for(let a=0;a<6;a++)for(let n=0;n<6;n++)if(e.plot[a][n][0]>=1){const i=e.plot[a][n],r=e.plantsById[i[0]-1],s=r.name;let l=!0;o&&r.immortal&&(l=!1),i[1]100+3*(n-1)&&r>0&&(r*=.9),i<5&&(i+=.5*(5-i)),i<5&&r<0&&(r*=.95),Math.max(i+r,1)}(o.val,o.d,e.getRestingVal(o.id),o.mode,Game.Objects.Bank.level);m.textContent="$"+to(p)+(p0&&e=1?l("CMTimerBarAutosaveBar").textContent=Math.ceil(e):l("CMTimerBarAutosaveBar").textContent="",l("CMTimerBarAutosaveTime").textContent=Math.ceil(e),a+=1}else l("CMTimerBarAutosave").style.display="none";if(0!==Game.shimmerTypes.golden.spawned||Game.Has("Golden switch [off]"))l("CMTimerBarGC").style.display="none";else{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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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="";const o=(e=Math.max(0,(Game.shimmerTypes.golden.time-Game.shimmerTypes.golden.minTime)/(Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.minTime))**5,Zo*=1-e,1-Zo);l("CMTimerBarGCTime").textContent=`${Math.ceil((Game.shimmerTypes.golden.maxTime-Game.shimmerTypes.golden.time)/Game.fps)} `,l("CMTimerBarGCTime").textContent+=o<.01?`<${.01.toLocaleString("en",{style:"percent"})}`:o.toLocaleString("en",{style:"percent"}),a+=1}if("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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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`,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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="";const e=function(e){return ea*=1-e,1-ea}(Math.max(0,(Game.shimmerTypes.reindeer.time-Game.shimmerTypes.reindeer.minTime)/(Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.minTime))**5);l("CMTimerBarRenTime").textContent=`${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)} `,l("CMTimerBarRenTime").textContent+=e<.01?`<${.01.toLocaleString("en",{style:"percent"})}`:e.toLocaleString("en",{style:"percent"}),a+=1}else l("CMTimerBarRen").style.display="none";const n={};l("CMTimerBarBuffTimers").innerHTML="",Object.keys(Game.buffs).forEach((e=>{if(Game.buffs[e]){const t=Xo(Game.buffs[e].name,Game.buffs[e].name,[{id:`${Game.buffs[e].name}Bar`}]);t.style.display="";let i="";i=void 0!==Fo[Game.buffs[e].name]?Fo[Game.buffs[e].name]:mo,t.lastChild.children[1].className=ao+i,t.lastChild.children[1].style.color="black",2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarOverlay?t.lastChild.children[1].textContent=`${Math.round(Game.buffs[e].time/Game.buffs[e].maxTime*100)}%`:t.lastChild.children[1].textContent="",t.lastChild.children[1].style.width=`${Math.round(Game.buffs[e].time*(o-8*Math.ceil(Game.buffs[e].time/Game.fps).toString().length)/Game.buffs[e].maxTime)}px`,t.lastChild.children[2].textContent=Math.ceil(Game.buffs[e].time/Game.fps),a+=1,n[Game.buffs[e].name]=t}})),Object.keys(n).forEach((e=>{l("CMTimerBarBuffTimers").appendChild(n[e])})),0!==a&&(l("CMTimerBar").style.height=12*a+2+"px"),Lo!==a&&(Lo=a,Ko())}var e}(),qo(),va(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&1===Mo){let e=!1;Object.keys(Game.wrinklers).forEach((t=>{const o=Game.wrinklers[t];if(o.phase>0&&o.selected){if(e=!0,0===bo[t]||void 0===bo[t]){const e=document.createElement("div"),o=document.createElement("div");o.style.minWidth="120px",o.style.marginBottom="4px";const a=document.createElement("div");a.style.textAlign="center",a.id="CMTooltipWrinkler",o.appendChild(a),e.appendChild(o),Game.tooltip.draw(this,escape(e.innerHTML)),yo=t,bo[t]=1}}else bo[t]=0})),e||Game.tooltip.hide()}}(),function(){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipWrink&&null!==l("CMTooltipWrinkler")){let{sucked:e}=Game.wrinklers[yo],t=1.1;if(Game.Has("Sacrilegious corruption")&&(t*=1.05),1===Game.wrinklers[yo].type&&(t*=3),e*=t,Game.Has("Wrinklerspawn")&&(e*=1.05),Ct.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=to(e)}}(),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpStats&&"stats"===Game.onMenu&&(Game.drawT-1)%(5*Game.fps)!=0&&(Game.drawT-1)%Game.fps==0&&Game.UpdateMenu(),B()}function xa(){P.addLatest(Game.computedMouseCps)}class Ta{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}calcSum(e){let t=e;return t>this.maxLength&&(t=this.maxLength),t>this.queue.length&&(t=this.queue.length),0===t?0:this.queue.slice(-t).reduce(((e,t)=>e+t),0)}}function Sa(e){"Cache"in window.CookieMonsterData||(window.CookieMonsterData.Cache={}),Object.keys(e).forEach((t=>{const o=t.replace(/^Cache/,"");void 0===e[t]?window.CookieMonsterData.Cache[o]=void 0:window.CookieMonsterData.Cache[o]=JSON.parse(JSON.stringify(e[t]))}))}function Fa(){const e=Math.floor(Date.now()/1e3);if(Game.T/Game.fps%1==0){let t=Game.cookies+ft;Game.cpsSucked>0&&(t+=$e),st=Math.max(Game.cookiesEarned,t),t*=.05;const o=e-W,a=Math.max(0,Game.cookies-$)/o,n=Math.max(0,$e-U)/o,i=Math.max(0,He[0]-H)/o,r=Math.max(0,t-De)/o,s=(Game.cookieClicks-R)/o;for(let e=0;e{if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t)e[o].colour=po;else{e[o].colour=ca(e[o],Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t));for(let t=0;t{const a=Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,t);Game.cookiesPs?e[o].pp=Math.max(a-(Game.cookies+_o()),0)/Game.cookiesPs+a/e[o].bonus:e[o].pp=a/e[o].bonus,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPRigidelMode&&1===t||ht.push([e[o].pp,t,a])}))}function Na(){!function(){pt=1/0,ht=[],void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop=0),Pa(Le,1),Pa(Ae,10),Pa(je,100),ht.sort(((e,t)=>e[0]-t[0]));let e=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPExcludeTop;if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.PPOnlyConsiderBuyable)for(;ht[e][2]>Game.cookies&&(e+=1,ht.length!==e+1););pt=ht[e][0],ut=ht[e][1],Ba(Le,1),Ba(Ae,10),Ba(je,100),Sa({CacheMinPP:pt,CacheMinPPBulk:ut,CachePPArray:ht})}(),Object.keys(ze).forEach((e=>{Game.cookiesPs?ze[e].pp=Math.max(Game.Upgrades[e].getPrice()-(Game.cookies+_o()),0)/Game.cookiesPs+Game.Upgrades[e].getPrice()/ze[e].bonus:ze[e].pp=Game.Upgrades[e].getPrice()/ze[e].bonus,Number.isNaN(ze[e].pp)&&(ze[e].pp=1/0),ze[e].colour=ca(ze[e],Game.Upgrades[e].getPrice())})),window.CookieMonsterData.Objects1=JSON.parse(JSON.stringify(Le)),window.CookieMonsterData.Objects10=JSON.parse(JSON.stringify(Ae)),window.CookieMonsterData.Objects100=JSON.parse(JSON.stringify(je)),window.CookieMonsterData.Upgrades=[],Object.entries(ze).forEach((e=>{window.CookieMonsterData.Upgrades[e[0]]=JSON.parse(JSON.stringify(e[1]))}))}function Oa(e){if("toggle"===Game.Upgrades[e].pool||0===Game.Upgrades[e].bought&&Game.Upgrades[e].unlocked&&"prestige"!==Game.Upgrades[e].pool){ra(),"Shimmering veil [on]"===Mt[e].name?Mt["Shimmering veil [off]"].bought=0:"Golden switch [on]"===Mt[e].name?Mt["Golden switch [off]"].bought=0:Mt[e].bought=(Mt[e].bought+1)%2,Game.CountsAsUpgradeOwned(Game.Upgrades[e].pool)&&(Z+=1),"Elder Pledge"===e?(ee+=1,ee>0&&ma("Elder nap"),ee>=5&&ma("Elder slumber")):"Elder Covenant"===e?ma("Elder calm"):"Prism heart biscuits"===e?ma("Lovely cookies"):"Heavenly key"===e&&ma("Wholesome");const t=te;pa(),Ma(),t!==te&&pa();const o=function(){let e=0;wt("Thousand fingers")&&(e+=.1),wt("Million fingers")&&(e*=5),wt("Billion fingers")&&(e*=10),wt("Trillion fingers")&&(e*=20),wt("Quadrillion fingers")&&(e*=20),wt("Quintillion fingers")&&(e*=20),wt("Sextillion fingers")&&(e*=20),wt("Septillion fingers")&&(e*=20),wt("Octillion fingers")&&(e*=20),wt("Nonillion fingers")&&(e*=20),wt("Decillion fingers")&&(e*=20),wt("Undecillion fingers")&&(e*=20),wt("Unshackled cursors")&&(e*=25);let t=0;Object.keys(Ct).forEach((e=>{t+=Ct[e].amount})),t-=Ct.Cursor.amount,e*=t,wt("Plastic mouse")&&(e+=.01*me),wt("Iron mouse")&&(e+=.01*me),wt("Titanium mouse")&&(e+=.01*me),wt("Adamantium mouse")&&(e+=.01*me),wt("Unobtainium mouse")&&(e+=.01*me),wt("Eludium mouse")&&(e+=.01*me),wt("Wishalloy mouse")&&(e+=.01*me),wt("Fantasteel mouse")&&(e+=.01*me),wt("Nevercrack mouse")&&(e+=.01*me),wt("Armythril mouse")&&(e+=.01*me),wt("Technobsidian mouse")&&(e+=.01*me),wt("Plasmarble mouse")&&(e+=.01*me),wt("Miraculite mouse")&&(e+=.01*me),wt("Aetherice mouse")&&(e+=.01*me),wt("Omniplast mouse")&&(e+=.01*me),wt("Fortune #104")&&(e+=.01*me);let o=1;if(wt("Santa's helpers")&&(o*=1.1),wt("Cookie egg")&&(o*=1.1),wt("Halo gloves")&&(o*=1.1),wt("Dragon claw")&&(o*=1.03),wt("Aura gloves")&&(o*=1+.05*Math.min(Game.Objects.Cursor.level,wt("Luminous gloves")?20:10)),o*=vt("click"),Ct.Temple.minigameLoaded&&Tt){const e=Tt("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*bt("Dragon Cursor");let a=o*Game.ComputeCps(1,wt("Reinforced index finger")+wt("Carpal tunnel prevention cream")+wt("Ambidextrous"),e);return a=Game.runModHookOnValue("cookiesPerClick",a),Game.hasBuff("Cursed finger")&&(a=Game.buffs["Cursed finger"].power),a}()-Game.computedMouseCps;return o?[me-Game.cookiesPs,o]:[me-Game.cookiesPs]}return[]}function Da(e){const t={};return Object.keys(Game.Objects).forEach((o=>{t[o]={},t[o].bonus=ya(o,e),1!==e&&(Y=1)})),t}function La(){Object.keys(Game.Objects).forEach((e=>{Le[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,1),Ae[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,10),je[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,100),We[e].price=Ea(e,Game.Objects[e].basePrice,Game.Objects[e].amount,Game.Objects[e].free,We[e].AmountNeeded)})),Sa({CacheObjectsNextAchievement:We})}function Aa(){Le=Da(1),Ae=Da(10),je=Da(100),function(){ze={};for(let e=0;e0?e/=t:e=0,Ke=ja(7,e,Ee),qe=2*Ke[1]/Ee,Ye=Ke[2]/60/60/6/Fe,et=ja(6,e,Be),Je=2*et[1]/Be,Ze=et[2]/60/60/6/Fe,at=ja(7,7*e,Ee),tt=2*at[1]/Ee,ot=at[2]/60/60/6/Fe,rt=ja(6,7*e,Be),nt=2*rt[1]/Be,it=rt[2]/60/60/6/Fe,Sa({CacheChainMaxReward:Ke,CacheChainRequired:qe,CacheChainRequiredNext:Ye,CacheChainWrathMaxReward:et,CacheChainWrathRequired:Je,CacheChainWrathRequiredNext:Ze,CacheChainFrenzyMaxReward:at,CacheChainFrenzyRequired:tt,CacheChainFrenzyRequiredNext:ot,CacheChainFrenzyWrathMaxReward:rt,CacheChainFrenzyWrathRequired:nt,CacheChainFrenzyWrathRequiredNext:it})}function $a(){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),a=e-Q,n=Math.max(0,o-q)/a;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:a}=e;e.iconFunction&&(a=e.iconFunction());const n=`function() {return Game.crateTooltip(Game.UpgradesById[${e.id}], 'stats');}`;return`
\n\t
`}(o),"prestige"===o.pool?Xe+=e:"cookie"===o.pool?Qe+=e:"toggle"!==o.pool&&"unused"!==o.pool&&"debug"!==o.pool&&(_e+=e)}}))}function Ha(){if("christmas"===Game.season){let e=60*Game.cookiesPs;Game.hasBuff("Elder frenzy")&&(e*=.5),Game.hasBuff("Frenzy")&&(e*=.75),Oe=Math.max(25,e),Game.Has("Ho ho ho-flavored frosting")&&(Oe*=2)}Sa({CacheSeaSpec:Oe})}function Ra(){ke=900*Se/.15,ke*=Fe;const e=da();e>0?ke/=e:ke=0,Ce=Ee*(.15*ke)+13,Me=Be*(.15*ke)+13,ye=7*ke,be=Ee*(.15*ye)+13,Ge=Be*(.15*ye)+13,ve=2*ke,we=.15*ve,xe=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].amountxe&&(xe=2*Game.Objects[e].price,Te=e)})),Sa({CacheLucky:ke,CacheLuckyReward:Ce,CacheLuckyWrathReward:Me,CacheLuckyFrenzy:ye,CacheLuckyRewardFrenzy:be,CacheLuckyWrathRewardFrenzy:Ge,CacheConjure:ve,CacheConjureReward:we,CacheEdifice:xe,CacheEdificeBuilding:Te})}function Ia(){let e=1,t=1,o=1;wt("Green yeast digestives")&&(o*=1.01),wt("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"),Ee=o*e,Be=o*t,Fe=1,0===Game.shimmerTypes.golden.n&&(Fe*=1+1.23*Game.auraMult("Dragon's Fortune")),Sa({CacheGoldenCookiesMult:Ee,CacheWrathCookiesMult:Be,CacheDragonsFortuneMultAdjustment:Fe})}function za(e){const t={};Object.keys(Game.Objects).forEach((o=>{if(0!==Object.keys(We).length&&We[o].TotalNeeded>Game.Objects[o].amount&&!e)t[o]={AmountNeeded:We[o].TotalNeeded-Game.Objects[o].amount,TotalNeeded:We[o].TotalNeeded,price:Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,We[o].TotalNeeded-Game.Objects[o].amount)};else{const e=function(e){const t=Game.AchievementsOwned;let o=100,a=100;for(;o>-1;)if(ya(e,o),te>t)a=o,o-=10;else{if(100===o)return 101;for(o+=1;o<=a;){if(ya(e,o),te>t)return o;o+=1}}return 101}(o);t[o]={AmountNeeded:e,TotalNeeded:Game.Objects[o].amount+e,price:Ea(o,Game.Objects[o].basePrice,Game.Objects[o].amount,Game.Objects[o].free,e)}}})),We=t,Sa({CacheObjectsNextAchievement:We})}function Va(){$e=0,Ue=0,He=[0,null];for(let e=0;eHe[0]&&(He=[t,e]))}Sa({CacheWrinklersTotal:$e,CacheWrinklersNormal:Ue,CacheWrinklersFattest:He})}function _a(){ta(),Va(),Ra(),Ia(),Wa(),Ua(),Ha(),N=new Ta(To[To.length-1]),O=new Ta(To[To.length-1]),D=new Ta(To[To.length-1]),L=new Ta(To[To.length-1]),A=new Ta(So[So.length-1]),j=new Ta(5),P=new Ta(20*So[So.length-1]),$a(),za(),Fa(),Aa(),La(),Na()}function Xa(){Object.keys(Game.wrinklers).forEach((e=>{Game.wrinklers[e].sucked>0&&0===Game.wrinklers[e].type&&(Game.wrinklers[e].hp=0)}))}function Qa(e,t){if("b"===e){if(l("tooltip").innerHTML=Game.Objects[t].tooltip(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAmor){const e=Ea(t,Game.Objects[t].basePrice,0,Game.Objects[t].free,Game.Objects[t].amount),o=e-Game.Objects[t].totalCookies;o>0&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split("so far").join(`so far
${to(o)} ${1===Math.floor(o)?"cookie":"cookies"} left to amortize (${zo((e-Game.Objects[t].totalCookies)/(Game.Objects[t].storedTotalCps*Game.globalCpsMult)).text})`))}-1===Game.buyMode&&(l("tooltip").innerHTML=l("tooltip").innerHTML.split(to(Game.Objects[t].bulkPrice)).join(to((Game.Objects[t],Game.Objects[t].basePrice,Game.Objects[t].amount,Game.Objects[t].free,Game.buyBulk,1))))}else if("u"===e){if(!Game.UpgradesInStore[t])return"";l("tooltip").innerHTML=Game.crateTooltip(Game.UpgradesInStore[t],"store")}else"s"===e?l("tooltip").innerHTML=Game.lumpTooltip():"g"===e?l("tooltip").innerHTML=Game.Objects["Wizard tower"].minigame.spellTooltip(t)():"p"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.tileTooltip(t[0],t[1])():"ha"===e?l("tooltip").innerHTML=Game.ObjectsById[2].minigame.toolTooltip(1)():"sm"===e?l("tooltip").innerHTML=Game.Objects.Bank.minigame.goodTooltip(t)():"wb"===e?l("tooltip").innerHTML="":"pag"===e?l("tooltip").innerHTML=Game.Objects.Temple.minigame.godTooltip(t)():"pas"===e&&(l("tooltip").innerHTML=Game.Objects.Temple.minigame.slotTooltip(t[0])());if("b"===e&&1===Game.buyMode||"u"===e||"s"===e||"g"===e||"p"===e&&!Game.keys[16]||"ha"===e||"sm"===e||"wb"===e||"pag"===e||"pas"===e&&-1!==t[1]){const e=document.createElement("div");e.id="CMTooltipArea",l("tooltip").appendChild(e)}return Po=e,No=t,va(),l("tooltip").innerHTML}function qa(){1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Favicon&&It>0?ct.wrath?l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/wrathCookie.ico":l("CMFavicon").href="https://CookieMonsterTeam.github.io/CookieMonster/favicon/goldenCookie.ico":l("CMFavicon").href="https://orteil.dashnet.org/cookieclicker/favicon.ico"}function Ya(){Ct=[],Object.keys(Game.Objects).forEach((e=>{Ct[e]=na(e)})),Mt=[],Object.keys(Game.Upgrades).forEach((e=>{Mt[e]=ia(e)})),yt=[],Object.keys(Game.Achievements).forEach((e=>{yt[e]=oa(e)})),ra()}function Ka(){Game.Objects["Wizard tower"].minigameLoaded&&Object.keys(Game.Objects["Wizard tower"].minigame.spellsById).forEach((e=>{null!==l(`grimoireSpell${e}`).onmouseover&&(Yt[e]=l(`grimoireSpell${e}`).onmouseover,l(`grimoireSpell${e}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("g",`${e}`)),"this"),Game.tooltip.wobble()})}))}function Ja(){if(!Wt&&Game.Objects["Wizard tower"].minigameLoaded){const{minigame:e}=Game.Objects["Wizard tower"];At=e.draw,Game.Objects["Wizard tower"].minigame.draw=function(){At(),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GrimoireBar&&e.magic{if(t=a,Game.Objects[t].amount{ce=!0})),Scale:new F(2,"bool","Notation",["Game's setting scale","Metric","Short scale","Short scale (Abbreviated)","Scientific notation","Engineering notation"],"Change how long numbers are formatted",!1,(()=>{nn()})),ScaleDecimals:new F(2,"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,(()=>{nn()})),ScaleSeparator:new F(0,"bool","Notation",[". for decimals (standard)",". for thousands"],"Set the separator used for decimals and thousands",!1,(()=>{nn()})),ScaleCutoff:new T(999999,"numscale","Notation","Notation cut-off point: ","The number from which Cookie Monster will start formatting numbers based on chosen scale. Standard is 999,999. Setting this above 999,999,999 might break certain notations",1,999999999),TimeFormat:new S(0,"bool","Notation",["Time XXd, XXh, XXm, XXs","Time XX:XX:XX:XX:XX","Time XXx, XXx"],"Change the time format",!1),DetailedTime:new F(1,"bool","Notation",["Detailed time OFF","Detailed time ON"],"Change how time is displayed in certain statistics and tooltips",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DetailedTime?Game.sayTime=Go:Game.sayTime=Jt.sayTime})),PPDisplayTime:new S(0,"bool","Notation",["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),BuildColour:new F(1,"bool","Colours",["Building colours OFF","Building colours ON"],"Colour code buildings",!0,(()=>{Wo()})),PPOnlyConsiderBuyable:new S(0,"bool","Colours",["Don't ignore non-buyable","Ignore non-buyable"],"Makes Cookie Monster 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),PPExcludeTop:new S(0,"bool","Colours",["Don't ignore any","Ignore 1st best","Ignore 1st and 2nd best","Ignore 1st, 2nd and 3rd best"],"Makes Cookie Monster ignore the 1st, 2nd or 3rd best buildings in labeling and colouring PP values",!0),PPRigidelMode:new S(0,"bool","Colours",["Rigidel mode OFF","Rigidel mode ON"],'Makes Cookie Monster ignore all "buy 1" options when colouring PP in order to stay at a total building count ending in 10 for pantheon god Rigidel',!0),PPSecondsLowerLimit:new T(0,"numscale","Colours","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),ColourBlue:new x("#4bb8f0","colour","Colours","Standard colour is blue. Used to show upgrades better than best PP building, for Click Frenzy bar, and for various labels"),ColourGreen:new x("#00ff00","colour","Colours","Standard colour is green. Used to show best PP building, for Blood Frenzy bar, and for various labels"),ColourYellow:new x("#ffff00","colour","Colours","Standard colour is yellow. Used to show buildings within the top 10 of PP, for Frenzy bar, and for various labels"),ColourOrange:new x("#ff7f00","colour","Colours","Standard colour is orange. Used to show buildings within the top 20 of PP, for Next Reindeer bar, and for various labels"),ColourRed:new x("#ff0000","colour","Colours","Standard colour is Red. Used to show buildings within the top 30 of PP, for Clot bar, and for various labels"),ColourPurple:new x("#ff00ff","colour","Colours","Standard colour is purple. Used to show buildings outside of the top 30 of PP, for Next Cookie bar, and for various labels"),ColourGray:new x("#b3b3b3","colour","Colours","Standard colour is gray. Used to show negative or infinity PP, and for Next Cookie/Next Reindeer bar"),ColourPink:new x("#ff1493","colour","Colours","Standard colour is pink. Used for Dragonflight bar"),ColourBrown:new x("#8b4513","colour","Colours","Standard colour is brown. Used for Dragon Harvest bar"),BotBar:new F(1,"bool","BarsDisplay",["Bottom bar OFF","Bottom bar ON"],"Building information",!0,(()=>{rn()})),TimerBar:new F(1,"bool","BarsDisplay",["Timer bar OFF","Timer bar ON"],"Bar with timers for golden cookie, season popup, Frenzy (Normal, Clot, Elder), Click Frenzy",!0,(()=>{Jo()})),TimerBarPos:new F(0,"bool","BarsDisplay",["Timer bar position (top left)","Timer bar position (bottom)"],"Placement of the timer bar",!1,(()=>{0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.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"))),Ko()})),TimerBarOverlay:new S(2,"bool","BarsDisplay",["Timer bar overlay OFF","Timer bar overlay only seconds","Timer bar overlay full"],"Overlay on timers displaying seconds and/or percentage left",!0),AutosaveTimerBar:new S(0,"bool","BarsDisplay",["Autosave timer bar OFF","Autosave timer bar ON"],"Show a timer counting down till next autosave in the timer bar",!0),UpBarColour:new F(1,"bool","BarsDisplay",["Upgrade colours/bar OFF","Upgrade colours with bar ON","Upgrade colours without bar ON"],"Colour code upgrades and optionally add a counter bar",!1,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="",Uo()):2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpBarColour?(l("CMUpgradeBar").style.display="none",Uo()):(l("CMUpgradeBar").style.display="none",Game.RebuildUpgrades())})),UpgradeBarFixedPos:new F(1,"bool","BarsDisplay",["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,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.UpgradeBarFixedPos?(l("CMUpgradeBar").style.position="sticky",l("CMUpgradeBar").style.top="0px"):l("CMUpgradeBar").style.position=""})),SortBuildings:new F(0,"bool","BarsDisplay",["Sort buildings: default","Sort buildings: PP of x1 purchase","Sort buildings: PP of selected bulk mode","Sort buildings: price until next achievement"],"Sort the display of buildings in default order, by PP, or until next achievement",!1,(()=>{Wo()})),SortUpgrades:new F(0,"bool","BarsDisplay",["Sort upgrades: default","Sort upgrades: PP"],"Sort the display of upgrades in either default order or by PP",!1,(()=>{Uo()})),UpgradesNeverCollapse:new F(0,"bool","BarsDisplay",["Upgrades always expanded OFF","Upgrades always expanded ON"],"Toggle to make the upgrades sections always expanded to the size needed to display all upgrades",!0,(()=>{$o()})),DragonAuraInfo:new S(1,"bool","BarsDisplay",["Extra dragon aura info OFF","Extra dragon aura info ON"],"Shows information about changes in CPS and costs in the dragon aura interface.",!0),GrimoireBar:new S(1,"bool","BarsDisplay",["Grimoire magic meter timer OFF","Grimoire magic meter timer ON"],"A timer overlay showing how long till the Grimoire magic meter is full",!0),GCTimer:new F(1,"bool","BarsDisplay",["Golden cookie timer OFF","Golden cookie timer ON"],"A timer on the golden cookie when it has been spawned",!0,(()=>{1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer?Object.keys(Ao).forEach((e=>{Ao[e].style.display="block",Ao[e].style.left=gt[e].l.style.left,Ao[e].style.top=gt[e].l.style.top})):Object.keys(Ao).forEach((e=>Ao[e].style.display="none"))})),Favicon:new F(1,"bool","BarsDisplay",["Favicon OFF","Favicon ON"],"Update favicon with golden/wrath cookie",!0,(()=>{qa()})),WrinklerButtons:new F(1,"bool","BarsDisplay",["Extra wrinkler buttons OFF","Extra wrinkler buttons ON"],"Show buttons for popping wrinklers at bottom of cookie section",!0,(()=>{B()})),HideSectionsButtons:new F(0,"bool","BarsDisplay",["Hide buildings/upgrades button OFF","Hide buildings/upgrades button ON"],"Show buttons for hiding and showing the buildings and upgrades sections in the right column",!0,(()=>{Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HideSectionsButtons?l("CMSectionHidButtons").style.display="":l("CMSectionHidButtons").style.display="none"})),TooltipBuildUpgrade:new S(1,"bool","Tooltip",["Building/upgrade tooltip information OFF","Building/upgrade tooltip information ON"],"Extra information in building/upgrade tooltips",!0),TooltipAmor:new S(0,"bool","Tooltip",["Buildings tooltip amortization information OFF","Buildings tooltip amortization information ON"],"Add amortization information to buildings tooltip",!0),ToolWarnLucky:new S(1,"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 S(1,"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 S(1,"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 S(1,"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 S(1,"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 T(0,"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),ToolWarnBon:new S(1,"bool","Tooltip",["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),ToolWarnPos:new F(1,"bool","Tooltip",["Tooltip warning position (left)","Tooltip warning position (bottom)"],"Placement of the warning boxes",!1,(()=>{Ga()})),TooltipGrim:new S(1,"bool","Tooltip",["Grimoire tooltip information OFF","Grimoire tooltip information ON"],"Extra information in tooltip for grimoire",!0),TooltipWrink:new S(1,"bool","Tooltip",["Wrinkler tooltip OFF","Wrinkler tooltip ON"],"Shows the amount of cookies a wrinkler will give when popping it",!0),TooltipLump:new S(1,"bool","Tooltip",["Sugar lump tooltip OFF","Sugar lump tooltip ON"],"Shows the current Sugar Lump type in Sugar lump tooltip.",!0),TooltipPlots:new S(1,"bool","Tooltip",["Garden plots tooltip OFF","Garden plots tooltip ON"],"Shows a tooltip for plants that have a cookie reward.",!0),TooltipStocks:new S(1,"bool","Tooltip",["Stock market tooltips OFF","Stock market tooltips ON"],"Shows additional info in the stock market tooltips.",!0),TooltipPantheon:new S(1,"bool","Tooltip",["Pantheon tooltip OFF","Pantheon tooltip ON"],"Shows additional info in the pantheon tooltip",!0),TooltipAscendButton:new S(1,"bool","Tooltip",["Show Extra Info Ascend Tooltip OFF","Show Extra Info Ascend Tooltip ON"],"Shows additional info in the ascend tooltip",!0),Stats:new S(1,"bool","Statistics",["Statistics OFF","Statistics ON"],"Extra Cookie Monster statistics!",!0),MissingUpgrades:new S(1,"bool","Statistics",["Missing upgrades OFF","Missing upgrades ON"],"Shows missing upgrades in statistics menu",!0),MissingAchievements:new S(0,"bool","Statistics",["Missing Achievements OFF","Missing Normal Achievements ON"],"Shows missing normal achievements in statistics menu.",!0),UpStats:new S(1,"bool","Statistics",["Statistics update rate (default)","Statistics update rate (1s)"],"Default rate is once every 5 seconds",!1),HeavenlyChipsTarget:new T(1,"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 S(1,"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),Title:new S(1,"bool","NotificationGeneral",["Title OFF","Title ON","Title pinned tab highlight"],'Update title with colden 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 S(1,"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 F(0,"bool","NotificationGC",["Notification OFF","Notification ON"],"Create a notification when golden cookie spawns",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCNotification)})),GCFlash:new S(1,"bool","NotificationGC",["Flash OFF","Flash ON"],"Flash screen on golden cookie",!0),ColourGCFlash:new x("#ffffff","colour","NotificationGC","The colour of the GC flash, standard colour is white"),GCSound:new S(1,"bool","NotificationGC",["Sound OFF","Sound ON"],"Play a sound on golden cookie",!0),GCVolume:new E(100,"vol","NotificationGC",[],"Volume"),GCSoundURL:new S("https://freesound.org/data/previews/66/66717_931655-lq.mp3","url","NotificationGC","Sound URL:","URL of the sound to be played when a golden cookie spawns"),FortuneNotification:new F(0,"bool","NotificationFC",["Notification OFF","Notification ON"],"Create a notification when fortune cookie is on the ticker",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneNotification)})),FortuneFlash:new S(1,"bool","NotificationFC",["Flash OFF","Flash ON"],"Flash screen on fortune cookie spawn",!0),ColourFortuneFlash:new x("#ffffff","colour","NotificationFC","The colour of the fortune flash, standard colour is white"),FortuneSound:new S(1,"bool","NotificationFC",["Sound OFF","Sound ON"],"Play a sound on fortune cookie spawn",!0),FortuneVolume:new E(100,"vol","NotificationFC",[],"Volume"),FortuneSoundURL:new S("https://freesound.org/data/previews/174/174027_3242494-lq.mp3","url","NotificationFC","Sound URL:","URL of the sound to be played when the ticker has a fortune cookie"),SeaNotification:new F(0,"bool","NotificationSea",["Notification OFF","Notification ON"],"Create a notification on season popup",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaNotification)})),SeaFlash:new S(1,"bool","NotificationSea",["Flash OFF","Flash ON"],"Flash screen on season popup",!0),ColourSeaFlash:new x("#ffffff","colour","NotificationSea","The colour of the season popup flash, standard colour is white"),SeaSound:new S(1,"bool","NotificationSea",["Sound OFF","Sound ON"],"Play a sound on season popup",!0),SeaVolume:new E(100,"vol","NotificationSea",[],"Volume"),SeaSoundURL:new S("https://www.freesound.org/data/previews/121/121099_2193266-lq.mp3","url","NotificationSea","Sound URL:","URL of the sound to be played when on season popup spawns"),GardFlash:new S(1,"bool","NotificationGard",["Garden Tick Flash OFF","Flash ON"],"Flash screen on garden tick",!0),ColourGardFlash:new x("#ffffff","colour","NotificationGard","The colour of the garden flash, standard colour is white"),GardSound:new S(1,"bool","NotificationGard",["Sound OFF","Sound ON"],"Play a sound on garden tick",!0),GardVolume:new E(100,"vol","NotificationGard",[],"Volume"),GardSoundURL:new S("https://freesound.org/data/previews/103/103046_861714-lq.mp3","url","NotificationGard","Garden Tick Sound URL:","URL of the sound to be played when the garden ticks"),MagicNotification:new F(0,"bool","NotificationMagi",["Notification OFF","Notification ON"],"Create a notification when magic reaches maximum",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MagicNotification)})),MagicFlash:new S(1,"bool","NotificationMagi",["Flash OFF","Flash ON"],"Flash screen when magic reaches maximum",!0),ColourMagicFlash:new x("#ffffff","colour","NotificationMagi","The colour of the magic flash, standard colour is white"),MagicSound:new S(1,"bool","NotificationMagi",["Sound OFF","Sound ON"],"Play a sound when magic reaches maximum",!0),MagicVolume:new E(100,"vol","NotificationMagi",[],"Volume"),MagicSoundURL:new S("https://freesound.org/data/previews/221/221683_1015240-lq.mp3","url","NotificationMagi","Sound URL:","URL of the sound to be played when magic reaches maxium"),WrinklerNotification:new F(0,"bool","NotificationWrink",["Notification OFF","Notification ON"],"Create a notification when a wrinkler appears",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerNotification)})),WrinklerFlash:new S(1,"bool","NotificationWrink",["Flash OFF","Flash ON"],"Flash screen when a wrinkler appears",!0),ColourWrinklerFlash:new x("#ffffff","colour","NotificationWrink","The colour of the wrinkler flash, standard colour is white"),WrinklerSound:new S(1,"bool","NotificationWrink",["Sound OFF","Sound ON"],"Play a sound when a wrinkler appears",!0),WrinklerVolume:new E(100,"vol","NotificationWrink",[],"Volume"),WrinklerSoundURL:new S("https://freesound.org/data/previews/124/124186_8043-lq.mp3","url","NotificationWrink","Sound URL:","URL of the sound to be played when a wrinkler appears"),WrinklerMaxNotification:new F(0,"bool","NotificationWrinkMax",["Notification OFF","Notification ON"],"Create a notification when the maximum amount of wrinklers has appeared",!0,(()=>{an(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification)})),WrinklerMaxFlash:new S(1,"bool","NotificationWrinkMax",["Flash OFF","Flash ON"],"Flash screen when the maximum amount of Wrinklers has appeared",!0),ColourWrinklerMaxFlash:new x("#ffffff","colour","NotificationWrinkMax","The colour of the maximum wrinkler flash, standard colour is white"),WrinklerMaxSound:new S(1,"bool","NotificationWrinkMax",["Sound OFF","Sound ON"],"Play a sound when the maximum amount of wrinklers has appeared",!0),WrinklerMaxVolume:new E(100,"vol","NotificationWrinkMax",[],"Volume"),WrinklerMaxSoundURL:new S("https://freesound.org/data/previews/152/152743_15663-lq.mp3","url","NotificationWrinkMax","Sound URL:","URL of the sound to be played when the maximum amount of wrinklers has appeared"),BulkBuyBlock:new S(1,"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),FavouriteSettings:new F(1,"bool","Miscellaneous",["Favourite settings section OFF","Favourite settings section ON","Favourite settings section ON (Locked)"],"Show stars before each setting which allows selecting it for a 'favourites' section at the top of the Cookie Monster settings. Setting this to Locked removes the stars but shows the 'favourites' section",!0,(()=>{Game.UpdateMenu()}))};function ln(){let e="";for(let t=0;t{if("Favourite"===t){if(0!==Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.favouriteSettings.length&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FavouriteSettings>0&&(e.appendChild(b.createOptionsSubHeader("cookieMonsterMod",t,tn[t])),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]))for(let t=0;t{const o=b.createOptionsSubHeader("cookieMonsterMod",t,on[t]);o.style.fontSize="15px",o.style.opacity="0.5",e.appendChild(o),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]&&Object.keys(sn).forEach((o=>{sn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,sn,ln,nn))}))})):Object.keys(sn).forEach((o=>{sn[o].group===t&&e.appendChild(b.createOptionsListing("cookieMonsterMod",o,sn,ln,nn))})))})),e}function dn(e){return String(e).split(String(7)).length-1}function mn(e,t){const o=10*t;let a=7*t-e%o+e%t;return a<0&&(a+=o),a}function pn(e,t){const o=document.createElement("div");o.className="title",o.style.padding="0px 16px",o.style.opacity="0.7",o.style.fontSize="17px",o.style.fontFamily='"Kavoon", Georgia, serif',o.appendChild(document.createTextNode(`${e} `));const a=document.createElement("span");return a.style.cursor="pointer",a.style.display="inline-block",a.style.height="14px",a.style.width="14px",a.style.borderRadius="7px",a.style.textAlign="center",a.style.backgroundColor="#C0C0C0",a.style.color="black",a.style.fontSize="13px",a.style.verticalAlign="middle",a.textContent=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[t]?"-":"+",a.onclick=function(){!function(e){Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]+=1,Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]>1&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers[e]=0),w.saveFramework()}(t),Game.UpdateMenu()},o.appendChild(a),o}function un(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");if(i.textContent=t,n.appendChild(i),"withTooltip"===e){n.className="listing",n.appendChild(document.createTextNode(" "));const e=document.createElement("span");e.onmouseout=function(){Game.tooltip.hide()},e.onmouseover=function(){Game.tooltip.draw(this,escape(ko[a].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="?",n.appendChild(e)}return n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function hn(e,t,o,a){const n=document.createElement("div");n.className="listing";const i=document.createElement("b");return i.textContent=t,!0===a&&(i.style.color=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ColourGreen),n.appendChild(i),n.appendChild(document.createTextNode(": ")),n.appendChild(o),n}function gn(e){const t=document.createDocumentFragment();t.appendChild(document.createTextNode(`${e.length} `));const o=document.createElement("span");o.onmouseout=function(){Game.tooltip.hide()};const a=document.createElement("div"),n=document.createElement("div");n.style.minWidth="140px",n.style.marginBottom="4px";const i=document.createElement("div");return i.className="name",i.style.marginBottom="4px",i.style.textAlign="center",i.textContent="Missing",n.appendChild(i),Object.keys(e).forEach((t=>{const o=document.createElement("div");o.style.textAlign="center",o.appendChild(document.createTextNode(e[t])),n.appendChild(o)})),a.appendChild(n),o.onmouseover=function(){Game.tooltip.draw(this,escape(a.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 fn(e){const t=document.createElement("div");if(t.className="subsection",t.appendChild(e),t.appendChild(pn("Lucky Cookies","Lucky")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Lucky&&t.appendChild(function(){const e=Game.auraMult("Dragon's Fortune")?"GoldCookDragonsFortuneTooltipPlaceholder":"GoldCookTooltipPlaceholder",t=document.createElement("div");t.className="CMStatsLuckySection";const o=Game.cookies+_o(){Game.HasUnlocked(ka[e])||c.push(ka[e])})),0!==c.length&&e.appendChild(un("basic","Rare plant drops left to unlock",gn(c))),e}())),t.appendChild(pn("Prestige","Prestige")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Prestige&&t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsPrestigeSection";const t=Math.floor(Game.HowMuchPrestige(st+Game.cookiesReset+$e+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")?De:0)));e.appendChild(un("withTooltip","Prestige level (cur / max)",document.createTextNode(`${to(Game.prestige)} / ${to(t)}`),"PrestMaxTooltipPlaceholder"));const o=Math.max(0,Game.HowManyCookiesReset(t+1)-(st+Game.cookiesReset+$e+(Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg")&&De?De:0))),a=document.createDocumentFragment();a.appendChild(document.createTextNode(to(o)));const n=document.createElement("small");n.textContent=` (${Io(o/lt,1)})`,a.appendChild(n),e.appendChild(un("withTooltip","Cookies to next level",a,"NextPrestTooltipPlaceholder")),e.appendChild(un("withTooltip","Heavenly chips (cur / max)",document.createTextNode(`${to(Game.heavenlyChips)} / ${to(t-Game.prestige+Game.heavenlyChips)}`),"HeavenChipMaxTooltipPlaceholder")),e.appendChild(un("basic","Heavenly chips per second (last 5 seconds)",document.createTextNode(to(Pe,2))));const i=Number(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.HeavenlyChipsTarget);if(!Number.isNaN(i)){const t=i-Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned));t>0&&(e.appendChild(un("basic","Heavenly chips to target set in settings (cur)",document.createTextNode(to(t)))),e.appendChild(un("basic","Time till target (cur, current 5 second average)",document.createTextNode(Io(t/Pe)))))}const r=function(e){let t=Game.cookiesPs;ra(),0===Mt["Heavenly key"].bought&&(Mt["Heavenly chip secret"].bought=1,Mt["Heavenly cookie stand"].bought=1,Mt["Heavenly bakery"].bought=1,Mt["Heavenly confectionery"].bought=1,Mt["Heavenly key"].bought=1,pa(),t=me,ra()),st>=1e6&&ma("Sacrifice"),st>=1e9&&ma("Oblivion"),st>=1e12&&ma("From scratch"),st>=1e15&&ma("Nihilism"),st>=1e18&&ma("Dematerialize"),st>=1e21&&ma("Nil zero zilch"),st>=1e24&&ma("Transcendence"),st>=1e27&&ma("Obliterate"),st>=1e30&&ma("Negative void"),st>=1e33&&ma("To crumbs, you say?"),st>=1e36&&ma("You get nothing"),st>=1e39&&ma("Humble rebeginnings"),st>=1e42&&ma("The end of the world"),st>=1e45&&ma("Oh, you're back"),st>=1e48&&ma("Lazarus"),st>=1e51&&ma("Smurf account"),st>=1e54&&ma("If at first you don't succeed"),Mt["Heavenly chip secret"].bought=1,Mt["Heavenly cookie stand"].bought=1,Mt["Heavenly bakery"].bought=1,Mt["Heavenly confectionery"].bought=1,Mt["Heavenly key"].bought=1,ae=e;const o=te;pa(),Ma(),o!==te&&pa();const a=me-t;return ae=Game.prestige,a}(t),s=document.createDocumentFragment();s.appendChild(document.createTextNode(to(r)));const l=Math.round(r/Game.cookiesPs*1e4);if(Number.isFinite(l)&&0!==l){const e=document.createElement("small");e.textContent=` (${l/100}% of income)`,s.appendChild(e)}e.appendChild(un("withTooltip","Reset bonus income",s,"ResetTooltipPlaceholder"));const c=Math.floor(Game.HowMuchPrestige(Game.cookiesReset)),d=Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned)),m=d-c,{luckyDigit:p,luckyNumber:u,luckyPayout:h}=function(e){const t={};let o=dn(e);const a=String(e).length;if(o>=1&&(t.luckyDigit=e,o>=2&&(t.luckyNumber=e,o>=4)))return t.luckyPayout=e,t;let n;if(n=a>=16?Math.ceil(e/10**(a-15)):e,o=dn(n),void 0===t.luckyDigit&&(o<1&&(n+=mn(n,1),o=dn(n)),t.luckyDigit=n,a>=16&&(t.luckyDigit*=10**Number(a-15))),void 0===t.luckyNumber){for(;o<2;){let e=mn(n,1);0===e&&(e=mn(n,10)),n+=e,o=dn(n)}t.luckyNumber=n,a>=16&&(t.luckyNumber*=10**Number(a-15))}let i=1;for(;o<4;){const e=mn(n,i);0===e?i*=10:(n+=e,o=dn(n))}return t.luckyPayout=n,a>=16&&(t.luckyPayout*=10**Number(a-15)),t}(d);if(!Game.Has("Lucky digit")){const t=p-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${p.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(un("basic",'Next "Lucky Digit" (total / reset)',a))}if(!Game.Has("Lucky number")){const t=u-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${u.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(un("basic",'Next "Lucky Number" (total / reset)',a))}if(!Game.Has("Lucky payout")){const t=h-d,o=m+t,a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${h.toLocaleString()} / ${o.toLocaleString()} (+${t})`)),e.appendChild(un("basic",'Next "Lucky Payout" (total / reset)',a))}return e}()),Game.cpsSucked>0&&(t.appendChild(pn("Wrinklers","Wrink")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Wrink)){const e=document.createDocumentFragment();e.appendChild(document.createTextNode(`${to($e)} / ${to(Ue)} `));const o=document.createElement("a");o.textContent="Pop All Normal",o.className="option",o.onclick=function(){Xa()},e.appendChild(o),t.appendChild(un("basic","Rewards of Popping (All/Normal)",e));const a=document.createDocumentFragment();a.appendChild(document.createTextNode(`${to(He[0])} `));const n=document.createElement("a");n.textContent="Pop Single Fattest",n.className="option",n.onclick=function(){null!==He[1]&&(Game.wrinklers[He[1]].hp=0)},a.appendChild(n),t.appendChild(un("basic",`Rewards of Popping Single Fattest Non-Shiny Wrinkler (id: ${null!==He[1]?He[1]:"None"})`,a))}if(t.appendChild(function(){const e=document.createElement("div");e.className="CMStatsSeasonSection";let t=!1;const o=[];Object.keys(ha).forEach((e=>{Game.Has(ha[e])||(o.push(ha[e]),t=!0)}));const a=[];Object.keys(ga).forEach((e=>{Game.Has(ga[e])||(a.push(ga[e]),t=!0)}));const n=[];Object.keys(fa).forEach((e=>{Game.Has(fa[e])||(n.push(fa[e]),t=!0)}));const i=[];Object.keys(Game.eggDrops).forEach((e=>{Game.HasUnlocked(Game.eggDrops[e])||(i.push(Game.eggDrops[e]),t=!0)}));const r=[];Object.keys(Game.rareEggDrops).forEach((e=>{Game.HasUnlocked(Game.rareEggDrops[e])||(r.push(Game.rareEggDrops[e]),t=!0)}));const s=Game.HasUnlocked("Chocolate egg")&&!Game.Has("Chocolate egg"),l=Game.Has("Century egg");if(("christmas"===Game.season||t||s||l)&&(e.appendChild(pn("Season Specials","Sea")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Sea)){if(0!==o.length){e.appendChild(hn(0,"Halloween cookies left to buy",gn(o),"halloween"===Game.season));let t=.95;if(Game.HasAchiev("Spooky cookies")&&(t=.8),Game.Has("Starterror")&&(t*=.9),t*=1/Game.dropRateMult(),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const a=o.length/7;e.appendChild(hn(0,"Chance of receiving a cookie from wrinkler/shiny wrinkler",document.createTextNode(`${to((1-t)*a*100)}% / ${to((1-.9*t)*a*100)}%`),"halloween"===Game.season))}if(0!==a.length){e.appendChild(hn(0,"Christmas cookies left to buy",gn(a),"christmas"===Game.season));let t=.8;if(Game.HasAchiev("Let it snow")&&(t=.6),t*=1/Game.dropRateMult(),Game.Has("Starsnow")&&(t*=.95),Game.hasGod){const e=Game.hasGod("seasons");1===e?t*=.9:2===e?t*=.95:3===e&&(t*=.97)}const o=a.length/7;e.appendChild(hn(0,"Chance of receiving a cookie from reindeer",document.createTextNode(`${to((1-t)*o*100)}%`),"christmas"===Game.season))}0!==n.length&&e.appendChild(hn(0,"Valentine cookies left to buy",gn(n),"valentines"===Game.season));const t=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,a=Game.eggDrops.length-i.length,n=Game.rareEggDrops.length-r.length,s=.9*o*(1-a/Game.eggDrops.length),l=.1*o*(1-n/Game.rareEggDrops.length),c=.9*o*(a/Game.eggDrops.length)+.1*o*(n/Game.rareEggDrops.length);return[s+.9*c*(1-a/Game.eggDrops.length),l+.1*c*(1-n/Game.rareEggDrops.length)]};0!==i.length&&(e.appendChild(hn(0,"Normal easter eggs left to unlock",gn(i),"easter"===Game.season)),e.appendChild(hn(0,"Chance of receiving an egg from wrinkler/golden cookie",document.createTextNode(`${to(100*t(.98)[0])}% / ${to(100*t(.9)[0])}%`),"easter"===Game.season))),0!==r.length&&(e.appendChild(hn(0,"Rare easter eggs left to unlock",gn(r),"easter"===Game.season)),e.appendChild(hn(0,"Chance of receiving a rare egg from wrinkler/golden cookie",document.createTextNode(`${to(100*t(.98)[1])}% / ${to(100*t(.9)[1])}%`),"easter"===Game.season))),"christmas"===Game.season&&e.appendChild(hn(0,"Reindeer reward",document.createTextNode(to(Oe)),!0)),s&&e.appendChild(un("withTooltip","Chocolate egg cookies",document.createTextNode(to(De)),"ChoEggTooltipPlaceholder")),l&&e.appendChild(un("basic","Century egg multiplier",document.createTextNode(Math.round(1e4*(Ne-1))/100+"%")))}return e}()),t.appendChild(pn("Achievements","Achievs")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Achievs&&Object.keys(Game.Objects).forEach((e=>{const o=We[e];t.appendChild(un("basic",e,o.AmountNeeded<101?document.createTextNode(`Next achievement in ${o.AmountNeeded}, price: ${to(o.price)}`):document.createTextNode("No new achievement for next 100 buildings")))})),t.appendChild(pn("Miscellaneous","Misc")),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.headers.Misc){if(t.appendChild(un("basic",`Average cookies per second (past ${To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]<60?`${To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]} seconds`:To[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist]/60+(3===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgCPSHist?" minute":" minutes")})`,document.createTextNode(to(Vo(),3)))),t.appendChild(un("basic",`Average cookie clicks per second (past ${So[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(to(Ve,1)))),t.appendChild(un("basic",`Cookies from clicking (past ${So[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]}${0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist?" second":" seconds"})`,document.createTextNode(to(P.calcSum(Ve*So[Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.AvgClicksHist]))))),Game.Has("Fortune cookies")){const e=[];Object.keys(ua).forEach((t=>{Game.Has(ua[t])||e.push(ua[t])})),0!==e.length&&t.appendChild(un("basic","Fortune Upgrades Left to Buy",gn(e)))}if(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ShowMissedGC&&t.appendChild(un("basic","Missed golden cookies",document.createTextNode(to(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),t.appendChild(un("basic","Time till autosave",e))}}l("menu").insertBefore(t,l("menu").childNodes[2]),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingUpgrades&&l("menu").childNodes.forEach((e=>{if(e.children[0])if("Prestige"===e.children[0].innerHTML&&Xe){const t=Xe.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesPrestigeTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Prestige upgrades: ${t}/${Game.PrestigeUpgrades.length} (${Math.floor(t/Game.PrestigeUpgrades.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Xe,e.appendChild(n)}else if("Upgrades"===e.children[0].innerHTML){if(_e){const t=_e.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesTitle",o.className="listing";const a=document.createElement("div");a.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(a),e.insertBefore(o,e.childNodes[3]);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=_e,e.insertBefore(n,document.getElementById("CMMissingUpgradesTitle").nextSibling)}if(Qe){const t=Qe.match(/div/g).length/2,o=document.createElement("div");o.id="CMMissingUpgradesCookiesTitle",o.className="listing";const a=document.createElement("div");a.innerHTML=`Missing Cookie upgrades: ${t}/${Game.UpgradesByPool.cookie.length} (${Math.floor(t/Game.UpgradesByPool.cookie.length*100)}%)`,o.appendChild(a),e.appendChild(o);const n=document.createElement("div");n.className="listing crateBox",n.innerHTML=Qe,e.appendChild(n)}}})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&function(){let e;Object.values(document.querySelectorAll("div.title")).forEach((t=>{t.textContent.includes("Achievements")&&(e=t.parentElement.querySelectorAll("div.listing.crateBox")[0])})),Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.MissingAchievements&&Object.values(e.children).forEach((e=>{if(!e.className.includes("enabled")){const t=e.onclick.toString().split(/\[(.*)\]/gi)[1],{icon:o}=Game.AchievementsById[t];e.style.backgroundPosition=`${48*-o[0]}px ${48*-o[1]}px`,e.onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>function(e){const t=[];"shadow"===e.pool?t.push("Shadow Achievement","#9700cf"):t.push("Achievement",0),t.push("Locked",0);let o=0;(Game.Has("Neuromancy")||Game.sesame&&"debug"===e.pool)&&(o=1),o&&0===e.won?t.push("Click to win!","#00c462"):o&&e.won>0&&t.push("Click to lose!","#00c462");let{icon:a}=e;e.iconFunction&&(a=e.iconFunction());let{desc:n}=e;e.descFunc&&(n=e.descFunc("stats"));let i="";for(let e=0;e[${t[e]}]`);return i=i.substring(1),`
\n
\n
${e.name}
\n ${i}
${n}
\n ${Game.sesame?`
Id : ${e.id} | Order : ${Math.floor(e.order)}${e.tier?` | Tier : ${e.tier}`:""}
`:""}`}(Game.AchievementsById[t])),"top"),Game.tooltip.wobble())}}}))}()}function kn(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBarPos){const t=parseInt(l("CMTimerBar").style.height,10);Game.mouseY-=t,e(),Game.mouseY+=t}else e()}function Cn(){Jt.Beautify=Beautify,Beautify=to,Jt.CalculateGains=Game.CalculateGains,Game.CalculateGains=function(){Jt.CalculateGains(),ce=1,Zt=Date.now(),eo=Date.now()},Jt.tooltip={},Jt.tooltip.draw=Game.tooltip.draw,Jt.tooltip.drawMod=new Function(`return ${Game.tooltip.draw.toString().split("this").join("Game.tooltip")}`)(),Game.tooltip.draw=function(e,t,o){Jt.tooltip.drawMod(e,t,o)},Jt.tooltip.update=Game.tooltip.update,Jt.tooltip.updateMod=new Function(`return ${Game.tooltip.update.toString().split("this.").join("Game.tooltip.")}`)(),Game.tooltip.update=function(){Jt.tooltip.updateMod(),function(){if("store"===Game.tooltip.origin){let e=0;1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnLucky&&1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.ToolWarnPos&&null!==l("CMDispTooltipWarningParent")&&(e=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-e-46)}px`}}()},Jt.UpdateWrinklers=Game.UpdateWrinklers,Game.UpdateWrinklers=function(){kn(Jt.UpdateWrinklers)},Jt.UpdateSpecial=Game.UpdateSpecial,Game.UpdateSpecial=function(){kn(Jt.UpdateSpecial)},l("bigCookie").removeEventListener("click",Game.ClickCookie,!1),l("bigCookie").addEventListener("click",(e=>{kn((()=>Game.ClickCookie(e,0)))}),!1),Jt.RebuildUpgrades=Game.RebuildUpgrades,Game.RebuildUpgrades=function(){Jt.RebuildUpgrades(),Kt=[],Object.keys(Game.UpgradesInStore).forEach((e=>{null!==l(`upgrade${e}`).onmouseover&&(Kt[e]=l(`upgrade${e}`).onmouseover,l(`upgrade${e}`).onmouseover=function(){Game.mouseDown||(Game.setOnCrate(this),Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("u",`${e}`)),"store"),Game.tooltip.wobble())})})),Game.CalculateGains()},Jt.ClickProduct=Game.ClickProduct,Game.ClickProduct=function(e){(!Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BulkBuyBlock||Game.ObjectsById[e].bulkPrice<=Game.cookies||-1===Game.buyMode)&&Jt.ClickProduct(e)},Jt.DescribeDragonAura=Game.DescribeDragonAura,Game.DescribeDragonAura=function(e){Jt.DescribeDragonAura(e),function(e){if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.DragonAuraInfo){const[t,o]=function(e){ra(),l("promptContent").children[0].innerHTML.includes("secondary")?ie=e:ne=e;let t=0;if(ne!==ue||ie!==he)for(let e=Game.ObjectsById.length-1;e>-1;--e)if(Game.ObjectsById[e].amount>0){const o=Ct[Game.ObjectsById[e].name].name;Ct[o].amount-=1,J-=1,t=Ct[o].basePrice*Game.priceIncrease**Math.max(0,Ct[o].amount-1-Ct[o].free),t=Game.modifyBuildingPrice(Ct[o],t),t=Math.ceil(t);break}const o=te;return pa(),Ma(),o!==te&&pa(),[me-Game.cookiesPs,t]}(e),a=Io(o/(t+Game.cookiesPs));let n;n=0===Game.cookiesPs?to(1/0):to(t/Game.cookiesPs*100),l("dragonAuraInfo").style.minHeight="60px",l("dragonAuraInfo").style.margin="8px",l("dragonAuraInfo").appendChild(document.createElement("div")).className="line";const i=document.createElement("div");i.style.minWidth="200px",i.style.textAlign="center",i.textContent=`Picking this aura will change CPS by ${to(t)} (${n}% of current CPS).`,l("dragonAuraInfo").appendChild(i);const r=document.createElement("div");r.style.minWidth="200px",r.style.textAlign="center",r.textContent=`It will take ${a} to recover the cost.`,l("dragonAuraInfo").appendChild(r)}}(e)},Jt.ToggleSpecialMenu=Game.ToggleSpecialMenu,Game.ToggleSpecialMenu=function(e){Jt.ToggleSpecialMenu(e),function(){if(null!==(l("specialPopup").className.match(/onScreen/)&&l("specialPopup").children[0].style.background.match(/dragon/)))for(let e=0;e${fe}`,"this"),Game.tooltip.wobble()},l("specialPopup").children[e].onmouseout=function(){Game.tooltip.shouldHide=1})}()},Jt.UpdateMenu=Game.UpdateMenu,Game.UpdateMenu=function(){void 0!==r.picker&&void 0!==r.picker.owner||(Jt.UpdateMenu(),function(){const e=document.createElement("div");e.className="title","stats"===Game.onMenu?Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Stats&&(e.textContent="Cookie Monster Statistics",fn(e)):"prefs"===Game.onMenu&&l("menu").childNodes[2].insertBefore(cn(),l("menu").childNodes[2].childNodes[l("menu").childNodes[2].childNodes.length-1])}())},Jt.sayTime=Game.sayTime,Go=function(e,t){return Number.isNaN(e)||e<=0?Jt.sayTime(e,t):Io(e/Game.fps,1)},Jt.Logic=Game.Logic,Game.Logic=function(){Jt.Logic();let e="Cookie Clicker";"fools"===Game.season&&(e="Cookie Baker"),jo=`${Game.OnAscend?"Ascending! ":""}${to(Game.cookies)} ${1===Game.cookies?"cookie":"cookies"} - ${e}`,function(){if(Game.OnAscend||0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title)document.title=jo;else if(1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e,t,o,a=!1,n=!1;e=ct?ct.wrath?`[W${Math.ceil(ct.life/Game.fps)}]`:`[G${Math.ceil(ct.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)}]`,Ht&&(a=!0,t="[F]"),"christmas"===Game.season&&(n=!0,o=Ut?`[R${Math.ceil(dt.life/Game.fps)}]`:`[${Number(l("CMTimerBarRenMinBar").textContent)<0?"!":""}${Math.ceil((Game.shimmerTypes.reindeer.maxTime-Game.shimmerTypes.reindeer.time)/Game.fps)}]`);let i=jo;"["===i.charAt(0)&&(i=i.substring(i.lastIndexOf("]")+1)),document.title=`${e+(a?t:"")+(n?o:"")} ${i}`}else if(2===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.Title){let e="",t=!1;ct&&(t=!0,ct.wrath?e+=`[W${Math.ceil(ct.life/Game.fps)}]`:e+=`[G${Math.ceil(ct.life/Game.fps)}]`),Ht&&(t=!0,e+="[F]"),"christmas"===Game.season&&Ut&&(e+=`[R${Math.ceil(dt.life/Game.fps)}]`,t=!0),t&&(e+=" - ");let o="Cookie Clicker";"fools"===Game.season&&(o="Cookie Baker"),e+=o,document.title=e}}(),function(){const e=Math.max(0,Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset)),t=Game.sayTime((Date.now()-Game.startDate)/1e3*Game.fps,-1);let o=`You've been on this run for ${""===t?"not very long":t}.
\n
`;Game.prestige>0&&(o+=`Your prestige level is currently ${to(Game.prestige)}.
(CpS +${to(Game.prestige)}%)\n
`),o+=q<1?"Ascending now would grant you no prestige.":q<2?"Ascending now would grant you
1 prestige level (+1% CpS)
and 1 heavenly chip to spend.":`Ascending now would grant you
${to(q)} prestige levels (+${to(q)}% CpS)
and ${to(q)} heavenly chips to spend.`,o+=`
\n You need ${to(e)} more cookies for the next level.
\n ${Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TooltipAscendButton?`
It takes ${mt} to reach the next level and you were making ${to(Pe,2)} chips on average in the last 5 seconds.
`:""}`,l("ascendTooltip").innerHTML=o}()}}function Mn(){window.CookieMonsterData={},Game.mods.cookieMonsterFramework.listeners.optionsMenu.push(cn),Ya(),Ra(),_a(),Nt=Object.keys(Game.mods).length,Qt=document.createElement("style"),Qt.type="text/css",Qt.id="CMCSS",document.head.appendChild(Qt),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")),a=function(e,t){const o=document.createElement("td");return o.style.textAlign="right",o.className=oo+t,o.textContent=e,o},n=o.appendChild(document.createElement("tr"));n.style.fontWeight="bold",n.appendChild(a(`CM ${Ho}.${Ro}`,so)),o.appendChild(document.createElement("tr")).appendChild(a("Bonus Income",io)),o.appendChild(document.createElement("tr")).appendChild(a("Payback Period",io)),o.appendChild(document.createElement("tr")).appendChild(a("Time Left",io)),l("wrapper").appendChild(e),Object.keys(Game.Objects).forEach((e=>{Qo(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=Xo("CMTimerBarAutosave","Autosave",[{id:"CMTimerBarAutosaveBar",colour:mo}]);e.appendChild(t);const o=Xo("CMTimerBarGC","Next Cookie",[{id:"CMTimerBarGCMinBar",colour:po},{id:"CMTimerBarGCBar",colour:mo}]);e.appendChild(o);const a=Xo("CMTimerBarRen","Next Reindeer",[{id:"CMTimerBarRenMinBar",colour:po},{id:"CMTimerBarRenBar",colour:lo}]);e.appendChild(a);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 a=document.createElement("span");return a.className=ao+e,a.style.display="inline-block",a.style.height="10px",a.style.width="10px",a.style.marginRight="4px",o.appendChild(a),o.appendChild(document.createTextNode(t)),o};return e.appendChild(o(io,"Better than the best PP of a building option")),e.appendChild(o(ro,"Same as the best PP building option")),e.appendChild(o(so,"Within the top 10 of PP for buildings")),e.appendChild(o(lo,"Within the top 20 of PP for buildings")),e.appendChild(o(co,"Within the top 30 of PP for buildings")),e.appendChild(o(mo,"Outside of the top 30 of PP for buildings")),e.appendChild(o(po,"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=oo+t,o.style.width="14.28571428571429%",o.style.display="inline-block",o.textContent="0",o};e.appendChild(o("CMUpgradeBarBlue",io)),e.appendChild(o("CMUpgradeBarGreen",ro)),e.appendChild(o("CMUpgradeBarYellow",so)),e.appendChild(o("CMUpgradeBarOrange",lo)),e.appendChild(o("CMUpgradeBarRed",co)),e.appendChild(o("CMUpgradeBarPurple",mo)),e.appendChild(o("CMUpgradeBarGray",po)),l("upgrades").parentNode.insertBefore(e,l("upgrades").parentNode.childNodes[3])}(),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(fo).forEach((e=>{!function(e,t,o){const a=document.createElement("div");a.id=e;const n=document.createElement("div");n.style.minWidth=o,n.style.marginBottom="4px";const i=document.createElement("div");i.style.textAlign="left",i.textContent=t,n.appendChild(i),a.appendChild(n),ko[e]=a}(fo[e][0],fo[e][1],fo[e][2])})),function(){const e=document.createElement("a");e.id="PopAllNormalWrinklerButton",e.textContent="Pop All Normal",e.className="option",e.onclick=function(){Xa()},e.onmouseout=function(){Game.tooltip.shouldHide=1},e.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("wb","PopAllNormal")),"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!==He[1]&&(Game.wrinklers[He[1]].hp=0)},t.onmouseout=function(){Game.tooltip.shouldHide=1},t.onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("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(l("rows").children).forEach((e=>{const t=l("rows").children[e].children[1],o=document.createElement("div");o.id=`productLock${Number(e)+1}`,o.className="productButton",o.innerHTML="Lock",o.onclick=function(){!function(e){"Lock"===l(`productLock${e}`).innerHTML?(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.push(e.toString()),l(`row${e}`).style.pointerEvents="none",l(`row${e}`).style.opacity="0.4",l(`productLock${e}`).innerHTML="Unlock",l(`productLock${e}`).style.pointerEvents="auto"):(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.includes(e.toString())&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames.filter((t=>t!==e.toString()))),l(`productLock${e}`).innerHTML="Lock",l(`row${e}`).style.pointerEvents="auto",l(`row${e}`).style.opacity="1")}(Number(e)+1)},t.appendChild(o)})),Object.keys(Game.Objects).forEach((e=>{const t=Game.Objects[e];null!==l(`product${t.id}`).onmouseover&&(qt[e]=l(`product${t.id}`).onmouseover,l(`product${t.id}`).onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("b",`${e}`)),"store"),Game.tooltip.wobble()})})),Game.canLumps()&&(Ot=l("lumps").onmouseover,l("lumps").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("s","Lump")),"this"),Game.tooltip.wobble()}),$t=Game.LoadMinigames,Game.LoadMinigames=function(){$t(),Game.Objects.Farm.minigameLoaded&&(l("gardenTool-1").onmouseover=function(){Game.tooltip.dynamic=1,Game.tooltip.draw(this,(()=>Qa("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,(()=>Qa("p",[`${t[0]}`,`${t[2]}`])),"this"),Game.tooltip.wobble()}}))),Ka(),function(){if(Game.Objects.Bank.minigameLoaded)for(let e=0;eQa("sm",e)),"this"),Game.tooltip.wobble()}}(),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,(()=>Qa("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,(()=>Qa("pas",[e,Game.Objects.Temple.minigame.slot[e]])),"this"),Game.tooltip.wobble()}}}(),Za()},Game.LoadMinigames(),l("backgroundLeftCanvas").onmouseover=function(){Mo=1},l("backgroundLeftCanvas").onmouseout=function(){Mo=0,Game.tooltip.hide(),Object.keys(Game.wrinklers).forEach((e=>{bo[e]=0}))},Cn(),Za(),Game.CalculateGains(),Co=Game.OnAscend,Game.prefs.popups?Game.Popup(`Cookie Monster version ${Ho}.${Ro} loaded!`):Game.Notify(`Cookie Monster version ${Ho}.${Ro} loaded!`,"","",1,1),Game.Win("Third-party")}function yn(e,t){if(!Game.Objects.Temple.minigameLoaded)return 0;ra();const{minigame:o}=Game.Objects.Temple,a=o.godsById[e].slot;"0"===a?re=o.slot[t]:"1"===a?se=o.slot[t]:"2"===a&&(le=o.slot[t]),0===t?re=e:1===t?se=e:2===t&&(le=e);const n=te;return pa(),Ma(),n!==te&&pa(),me-Game.cookiesPs}function bn(){if(Do!==Game.OnAscend&&(Do=Game.OnAscend,Game.OnAscend?(l("game").style.bottom="0px",1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.BotBar&&(l("CMBotBar").style.display="none"),1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.TimerBar&&(l("CMTimerBar").style.display="none")):(rn(),Jo()),Yo()),!Game.OnAscend&&0===Game.AscendTimer){Nt!==Object.keys(Game.mods).length&&(Ya(),_a(),Nt=Object.keys(Game.mods).length),ce&&(za(!0),Aa(),Game.Has("Golden switch [off]")?(ra(),Mt["Golden switch [off]"].bought=0,pa(),Se=me):Se=Game.cookiesPs,Sa({CacheNoGoldSwitchCookiesPS:Se}),Ia(),Ra(),Ua(),Wa(),en(),function(){for(let e=0;e<11;e+=1)for(let t=0;t<3;t+=1)kt[e][t]=yn(e,t);Sa({CacheGods:kt})}(),Ha(),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 a=t[e];o+=a.stock*a.val})),e+=o*Game.cookiesPsRawHighest}e+=function(){let e=0;ra();let t=2;5!==ne&&18!==ne||(t-=1),5!==ie&&18!==ie||(t-=1),ne=5,ie=18;for(let e=0;e{Ct[t].amount>0&&(e=t)})),Ct[e].amount-=1,J-=1}return Object.keys(Ct).forEach((t=>{const o=Ct[t];e+=Ft(Game.Objects[o.name],Game.Objects[t].basePrice,o.amount,Game.Objects[t].free,o.amount)})),e}(),ft=e,Sa({CacheSellForChoEgg:ft})}(),ce=0);const e=Game.auraMult("Fierce Hoarder")>0;!K&&e?(K=!0,Y=1):K&&!e&&(K=!1,Y=1),Y&&(La(),Y=0),function(){Va(),Na(),za(!1),function(){Re=0;let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)}));let t=1;if(Ct.Temple.minigameLoaded){const e=Game.hasGod("scorn");1===e?t*=1.15:2===e?t*=1.1:3===e&&(t*=1.05)}Ie=e,Re=e*(.05*e*1.1)*(.05*Game.Has("Sacrilegious corruption")+1)*(.05*Game.Has("Wrinklerspawn")+1)*t,Sa({CacheCurrWrinklerCount:Ie,CacheCurrWrinklerCPSMult:Re})}(),Fa(),$a();const e=Game.HowManyCookiesReset(Math.floor(Game.HowMuchPrestige(Game.cookiesReset+Game.cookiesEarned))+1)-(Game.cookiesEarned+Game.cookiesReset);mt=Io(e/Vo())}(),Ht!==(Game.TickerEffect&&"fortune"===Game.TickerEffect.type)&&(Ht=Game.TickerEffect&&"fortune"===Game.TickerEffect.type,Ht&&(v.createFlash("cookieMonsterMod",3,"FortuneFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.FortuneSoundURL,"FortuneSound","FortuneVolume",!1),v.createNotification("cookieMonsterMod","FortuneNotification","Fortune Cookie found","A Fortune Cookie has appeared on the Ticker."))),Ut!==Game.shimmerTypes.reindeer.spawned&&(Ut=Game.shimmerTypes.reindeer.spawned,Object.keys(Game.shimmers).forEach((e=>{Game.shimmers[e].spawnLead&&"reindeer"===Game.shimmers[e].type&&(dt=Game.shimmers[e])})),v.createFlash("cookieMonsterMod",3,"SeaFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.SeaSoundURL,"SeaSound","SeaVolume",!1),v.createNotification("cookieMonsterMod","SeaNotification","Reindeer sighted!","A Reindeer has spawned. Click it now!"),ea=1),Game.Objects.Farm.minigameLoaded&&Rt!==Game.Objects.Farm.minigame.nextStep&&(0!==Rt&&Rt0){let e=0;Object.keys(Game.wrinklers).forEach((t=>{2===Game.wrinklers[t].phase&&(e+=1)})),e>Xt?(Xt=e,e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxFlash?v.createFlash("cookieMonsterMod",3,"WrinklerMaxFlash",!1):v.createFlash("cookieMonsterMod",3,"WrinklerFlash",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSound?v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxSoundURL,"WrinklerMaxSound","WrinklerMaxVolume",!1):v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerSoundURL,"WrinklerSound","WrinklerVolume",!1),e===Game.getWrinklersMax()&&Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.WrinklerMaxNotification?v.createNotification("cookieMonsterMod","WrinklerMaxNotification","Maximum Wrinklers Reached","You have reached your maximum ammount of wrinklers"):v.createNotification("cookieMonsterMod","WrinklerNotification","A Wrinkler appeared","A new wrinkler has appeared")):Xt=e}}()}_t=0,gt={},Object.keys(Game.shimmers).forEach((e=>{gt[Game.shimmers[e].id]=Game.shimmers[e],Game.shimmers[e].spawnLead&&"golden"===Game.shimmers[e].type&&(ct=Game.shimmers[e],_t+=1)})),Object.keys(Ao).forEach((e=>{void 0===gt[e]&&(Ao[e].parentNode.removeChild(Ao[e]),delete Ao[e])})),It!==Game.shimmerTypes.golden.n?(It=Game.shimmerTypes.golden.n,It&&(zt<_t&&(v.createFlash("cookieMonsterMod",3,"GCFlash",!1),v.playCMSound("cookieMonsterMod",Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCSoundURL,"GCSound","GCVolume",!1),v.createNotification("cookieMonsterMod","GCNotification","Golden Cookie Spawned","A Golden Cookie has spawned. Click it now!"),Zo=1),Object.keys(Game.shimmers).forEach((e=>{void 0===Ao[Game.shimmers[e].id]&&function(e){const t=document.createElement("div");t.id=`GCTimer${e.id}`,t.style.width="96px",t.style.height="96px",t.style.position="absolute",t.style.zIndex="10000000001",t.style.textAlign="center",t.style.lineHeight="96px",t.style.fontFamily='"Kavoon", Georgia, serif',t.style.fontSize="35px",t.style.cursor="pointer",t.style.display="block",t.style.pointerEvents="none",0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&(t.style.display="none"),t.style.left=e.l.style.left,t.style.top=e.l.style.top,t.onclick=function(){e.pop()},t.onmouseover=function(){e.l.style.filter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))",e.l.style.webkitFilter="brightness(125%) drop-shadow(0px 0px 3px rgba(255,255,255,1))"},t.onmouseout=function(){e.l.style.filter="",e.l.style.webkitFilter=""},Ao[e.id]=t,l("shimmers").appendChild(t)}(Game.shimmers[e])}))),qa(),zt=_t,0===_t&&(ct=0)):1===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.settings.GCTimer&&It&&Object.keys(Ao).forEach((e=>{Ao[e].style.opacity=gt[e].l.style.opacity,Ao[e].style.transform=gt[e].l.style.transform,Ao[e].textContent=Math.ceil(gt[e].life/Game.fps)}))}const Gn={Favourite:1,Calculation:1,Notation:1,Colours:1,BarsDisplay:1,Tooltip:1,Statistics:1,Notification:1,NotificationGeneral:1,NotificationGC:1,NotificationFC:1,NotificationSea:1,NotificationGard:1,NotificationMagi:1,NotificationWrink:1,NotificationWrinkMax:1,Miscellaneous:1,Lucky:1,Chain:1,Spells:1,Garden:1,Prestige:1,Wrink:1,Sea:1,Achievs:1,Misc:1,infoMenu:1,optionsMenu:1};function vn(e){Ya(),w.loadMod("cookieMonsterMod",e,sn,Gn,bn),void 0===Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames&&(Game.mods.cookieMonsterFramework.saveData.cookieMonsterMod.lockedMinigames=[]),ln();for(let e=0;e{Game.registerMod("CookieMonster",wn),window.cookieMonsterFrameworkData.isInitializing=!1}),2e3):(Game.registerMod("CookieMonster",wn),window.cookieMonsterFrameworkData.isInitializing=!1)})()})(); //# sourceMappingURL=https://cookiemonsterteam.github.io/CookieMonster/dist/CookieMonster.js.map \ No newline at end of file diff --git a/dist/CookieMonster.js.map b/dist/CookieMonster.js.map index 8293988..d0ac8db 100644 --- a/dist/CookieMonster.js.map +++ b/dist/CookieMonster.js.map @@ -1 +1 @@ -{"version":3,"file":"CookieMonster.js","mappings":"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CA,kBAIWC,GAAwB,CACnC,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,OC3IK,IAAIC,GAEAC,GAGAC,GACAC,GACAC,GACAC,GACAC,GACAC,GAGAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GCjBAC,GDFAC,GAAqB,GAErBC,GAAwB,GACxBC,GAAuB,GAOvBC,GAAkB,CAAC,EAanBC,GAAyBC,KAAKC,MAI9BC,GAAyBF,KAAKC,MEhB1B,SAAS,GAASE,EAAKC,EAAQ3T,GAC5C,MAAM4T,EACJ5U,KAAKiB,KAAKC,uBAAuBC,SAASyI,iBAAiBxI,SAASyT,cAAgB,EACtF,GAAIH,IAAQI,IACV,MAAO,WAET,QAAmB,IAARJ,EACT,MAAO,IAET,GAAkF,IAA9E1U,KAAKiB,KAAKC,uBAAuBC,SAASyI,iBAAiBxI,SAAS2T,MACtE,OAAOV,GAAgBW,SAASN,EAAKC,GAEvC,GAAIM,OAAOC,SAASR,GAAM,CACxB,GAAIA,EAAM,EACR,MAAO,IAAI,GAASjxB,KAAKyN,IAAIwjB,MAE/B,IAAIS,EAAS,GACb,GAAY,IAART,EACF,OAAOA,EAAI/wB,WAEb,GACE+wB,EAAM,MACNA,EAAM1U,KAAKiB,KAAKC,uBAAuBC,SAASyI,iBAAiBxI,SAASgU,YA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CA,CACE,uBACA,SACA,cACA,4BACA,sBACA,wBAEF,yCACA,GACA,KACEouB,IAAc,IAGlBhjB,cAAe,IAAIpL,EACjB,EACA,OACA,WACA,CAAC,aAAc,aAAc,cAC7B,oIACA,GACA,KACEouB,IAAc,IAGlBxiB,eAAgB,IAAI5L,EAClB,EACA,OACA,WACA,CAAC,4BAA6B,mBAC9B,qDACA,GACA,KACEouB,IAAc,IAGlBziB,YAAa,IAAI3L,EACf,OACA,WACA,WACA,2BACA,8KACA,EACA,WAEFsR,WAAY,IAAItR,EACd,EACA,OACA,WACA,CAAC,0BAA2B,sBAAuB,iBACnD,0BACA,GAEFyuB,aAAc,IAAIzuB,EAChB,EACA,OACA,WACA,CAAC,oBAAqB,oBACtB,mEACA,GACA,KCtIuF,IAArFzJ,KAAKiB,KAAKC,uBAAuBC,SAASyI,iBAAiBxI,SAAS82B,aACtEl4B,KAAK8rB,QAAU/U,GACZ/W,KAAK8rB,QAAUzX,GAAgByX,ODqIZ,IAGxBjP,cAAe,IAAIpT,EACjB,EACA,OACA,WACA,CAAC,yBAA0B,mBAC3B,sKACA,GAIF6O,YAAa,IAAI7O,EACf,EACA,OACA,UACA,CAAC,uBAAwB,uBACzB,yBACA,GACA,KACEyO,IAAiB,IAGrBiJ,sBAAuB,IAAI1X,EACzB,EACA,OACA,UACA,CAAC,2BAA4B,sBAC7B,0KACA,GAEF2mB,aAAc,IAAI3mB,EAChB,EACA,OACA,UACA,CACE,mBACA,kBACA,0BACA,gCAEF,sGACA,GAEF0mB,cAAe,IAAI1mB,EACjB,EACA,OACA,UACA,CAAC,mBAAoB,mBACrB,sJACA,GAEFyX,oBAAqB,IAAIzX,EACvB,EACA,WACA,UACA,oCACA,wMACA,EACAqL,KAEFiB,WAAY,IAAItM,EACd,UACA,SACA,UACA,6HAEFuM,YAAa,IAAIvM,EACf,UACA,SACA,UACA,yGAEFwM,aAAc,IAAIxM,EAChB,UACA,SACA,UACA,qHAEFyM,aAAc,IAAIzM,EAChB,UACA,SACA,UACA,4HAEF0M,UAAW,IAAI1M,EACb,UACA,SACA,UACA,gHAEF2M,aAAc,IAAI3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","sources":["webpack:///./node_modules/@eastdesire/jscolor/jscolor.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/baseSetting.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/prompt.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/flash.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/savingAndLoading/saveFramework.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/toggles/toggleHeader.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/sound.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/toggleConfigVolume.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/menuSections/addMenu.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/menuSections/info/addInfoMenuSection.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/menuSections/info/createFrameworkInfoMenuSection.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/data/modInfo.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/draw/drawLoop.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/data/headers.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/savingAndLoading/loadMod.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/savingAndLoading/createSaveDataObject.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/logic/logicLoop.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/data/settings.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/load.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/cookieMonsterFramework.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/init.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/init/createFlashScreen.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/frameworkDataObject/save.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/index.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/init/initModFramework.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/init/registerMod.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createInfoListing.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createOptionListing.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createOptionsFavouriteStar.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/toggles/toggleFavourite.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/toggleConfig.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/toggleConfigKeycode.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/listings/createOptionsSubHeader.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/menu/createModMenuSection.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/notifications/notification.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingColours.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingInputNumber.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingStandard.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingStandardWithFunc.js","webpack:///./node_modules/@cookiemonsterteam/cookiemonsterframework/src/options/settingClasses/settingVolume.js","webpack:///./src/Config/Toggles/ToggleWrinklerButtons.js","webpack:///./src/Cache/VariablesAndData.js","webpack:///./src/Sim/VariablesAndData.js","webpack:///./src/Sim/ReplacedGameFunctions/SimAuraMult.js","webpack:///./src/Sim/ReplacedGameFunctions/SimGetSellMultiplier.js","webpack:///./src/Sim/ReplacedGameFunctions/SimEff.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHas.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHasAura.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHasGod.js","webpack:///./src/Sim/ReplacedGameFunctions/SimModifyBuidlingPrice.js","webpack:///./src/Sim/SimulationEvents/SellBuilding.js","webpack:///./src/Data/Scales.js","webpack:///./src/Main/VariablesAndData.js","webpack:///./src/Disp/VariablesAndData.js","webpack:///./src/Disp/BeautifyAndFormatting/Beautify.js","webpack:///./src/Disp/BuildingsUpgrades/Buildings.js","webpack:///./src/Disp/BuildingsUpgrades/UpdateUpgradeSectionsHeight.js","webpack:///./src/Disp/BuildingsUpgrades/Upgrades.js","webpack:///./src/Data/Moddata.js","webpack:///./src/Disp/BeautifyAndFormatting/FormatTime.js","webpack:///./src/Disp/BeautifyAndFormatting/GetTimeColour.js","webpack:///./src/Disp/HelperFunctions/GetCPS.js","webpack:///./src/Disp/HelperFunctions/GetWrinkConfigBank.js","webpack:///./src/Disp/InfoBars/CreateDOMElements.js","webpack:///./src/Disp/InfoBars/BottomBar.js","webpack:///./src/Disp/HelperFunctions/UpdateBackground.js","webpack:///./src/Config/SpecificToggles.js","webpack:///./src/Main/CheckStates/Probability.js","webpack:///./src/Cache/Dragon/CacheDragonAuras.js","webpack:///./src/Sim/InitializeData/InitAchievement.js","webpack:///./src/Sim/ReplacedGameFunctions/SimGetTieredCpsMult.js","webpack:///./src/Sim/InitializeData/InitialBuildingData.js","webpack:///./src/Sim/InitializeData/InitUpgrade.js","webpack:///./src/Sim/SimulationData/CopyData.js","webpack:///./src/Disp/Tooltips/CreateTooltip.js","webpack:///./src/Cache/PP/ColourOfPP.js","webpack:///./src/Cache/CPS/GetCPSBuffMult.js","webpack:///./src/Sim/SimulationData/SimWin.js","webpack:///./src/Sim/Calculations/CalculateGains.js","webpack:///./src/Sim/ReplacedGameFunctions/SimGetHeavenlyMultiplier.js","webpack:///./src/Data/Gamedata.js","webpack:///./src/Sim/ReplacedGameFunctions/SimHasAchiev.js","webpack:///./src/Sim/Calculations/CheckOtherAchiev.js","webpack:///./src/Sim/SimulationEvents/BuyBuildingBonusIncome.js","webpack:///./src/Disp/HelperFunctions/CalculateGrimoireRefillTime.js","webpack:///./src/Config/Toggles/ToggleToolWarnPos.js","webpack:///./src/Disp/Tooltips/UpdateTooltips.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Building.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Upgrade.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/SugarLump.js","webpack:///./src/Disp/HelperFunctions/GetLumpColour.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Grimoire.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/GardenPlots.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/HarvestAll.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/StockMarket.js","webpack:///./src/Disp/HelperFunctions/CalculateStockNextExpectedValue.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/WrinklerButton.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/PantheonGods.js","webpack:///./src/Disp/Tooltips/TypesOfTooltips/Warnings.js","webpack:///./src/Disp/DrawHook.js","webpack:///./src/Disp/InfoBars/TimerBar.js","webpack:///./src/Disp/Tooltips/WrinklerTooltips.js","webpack:///./src/Disp/MenuSections/Refreshmenu.js","webpack:///./src/Main/ClickHook.js","webpack:///./src/Cache/CPS/AverageQueue.js","webpack:///./src/Cache/FillCMDCache.js","webpack:///./src/Cache/CPS/CPS.js","webpack:///./src/Sim/SimulationEvents/BuyBuilding.js","webpack:///./src/Cache/PP/Building.js","webpack:///./src/Cache/PP/PP.js","webpack:///./src/Cache/PP/Upgrade.js","webpack:///./src/Sim/SimulationEvents/BuyUpgrades.js","webpack:///./src/Cache/PriceAndIncome/PriceAndIncome.js","webpack:///./src/Cache/Stats/ChainCookies.js","webpack:///./src/Cache/Stats/HeavenlyChips.js","webpack:///./src/Cache/Stats/MissingUpgrades.js","webpack:///./src/Disp/MenuSections/Statistics/CreateMissingUpgrades.js","webpack:///./src/Cache/Stats/Reindeer.js","webpack:///./src/Cache/Stats/Stats.js","webpack:///./src/Cache/TillNextAchievement/AllAmountTillNextAchievement.js","webpack:///./src/Cache/TillNextAchievement/IndividualAmountTillNextAchievement.js","webpack:///./src/Cache/Wrinklers/Wrinklers.js","webpack:///./src/Cache/CacheInit.js","webpack:///./src/Disp/HelperFunctions/PopWrinklers.js","webpack:///./src/Disp/Tooltips/Tooltip.js","webpack:///./src/Disp/TabTitle/FavIcon.js","webpack:///./src/Sim/InitializeData/InitData.js","webpack:///./src/Main/ReplaceGameElements/TooltipGrimoire.js","webpack:///./src/Main/ReplaceGameElements/NativeGrimoire.js","webpack:///./src/Cache/Dragon/Dragon.js","webpack:///./src/Data/Sectionheaders.js","webpack:///./src/Config/CheckNotificationPermissions.js","webpack:///./src/Disp/HelperFunctions/RefreshScale.js","webpack:///./src/Config/Toggles/ToggleBotBar.js","webpack:///./src/Data/settings.js","webpack:///./src/Config/Toggles/ToggleDetailedTime.js","webpack:///./src/Config/Toggles/ToggleUpgradeBarAndColour.js","webpack:///./src/Config/Toggles/ToggleUpgradeBarFixedPos.js","webpack:///./src/Config/Toggles/ToggleGCTimer.js","webpack:///./src/Config/Toggles/ToggleSectionHideButtons.js","webpack:///./src/Disp/HelperFunctions/UpdateColours.js","webpack:///./src/Disp/MenuSections/createMenuOptions.js","webpack:///./src/Disp/HelperFunctions/CalculateLuckyLevels.js","webpack:///./src/Disp/MenuSections/Statistics/CreateDOMElements.js","webpack:///./src/Config/ToggleSetting.js","webpack:///./src/Disp/MenuSections/Statistics/AddStatsPage.js","webpack:///./src/Disp/MenuSections/Statistics/CreateStatsSections.js","webpack:///./src/Sim/SimulationEvents/ResetAscension.js","webpack:///./src/Disp/MenuSections/Statistics/CreateMissingAchievements.js","webpack:///./src/Main/ReplaceGameFunctions/FixMouse.js","webpack:///./src/Main/ReplaceGameFunctions/ReplaceNative.js","webpack:///./src/Disp/Tooltips/PositionLocation.js","webpack:///./src/Main/ReplaceGameElements/TooltipUpgrades.js","webpack:///./src/Disp/Dragon/Dragon.js","webpack:///./src/Sim/SimulationEvents/AuraChange.js","webpack:///./src/Disp/MenuSections/AddMenus.js","webpack:///./src/Disp/TabTitle/TabTitle.js","webpack:///./src/Disp/Tooltips/AscendButton.js","webpack:///./src/Main/Initialization.js","webpack:///./src/Disp/Initialization/CssArea.js","webpack:///./src/Disp/BuildingsUpgrades/UpgradeBar.js","webpack:///./src/Disp/Initialization/CreateSectionHideButtons.js","webpack:///./src/Disp/Initialization/CreateWrinklerButton.js","webpack:///./src/Disp/Initialization/UpdateBuildingUpgradeStyle.js","webpack:///./src/Disp/buildingTiles/createBuildingLockButtons.js","webpack:///./src/Disp/buildingTiles/toggleBuildingLock.js","webpack:///./src/Main/ReplaceGameElements/Tooltips.js","webpack:///./src/Main/WrinklerArea/AddDetectArea.js","webpack:///./src/Sim/SimulationEvents/GodChange.js","webpack:///./src/Main/LoopHook.js","webpack:///./src/Disp/HelperFunctions/UpdateAscendState.js","webpack:///./src/Cache/CPS/NoGoldSwitchCPS.js","webpack:///./src/Sim/Calculations/NoGoldenSwitchCalc.js","webpack:///./src/Cache/PantheonGods/CacheGods.js","webpack:///./src/Cache/CPS/SellChoEgg.js","webpack:///./src/Sim/SimulationEvents/SellBuildingForChoEgg.js","webpack:///./src/Cache/CacheLoop.js","webpack:///./src/Cache/CPS/CurrWrinklerCPS.js","webpack:///./src/Main/CheckStates/Ticker.js","webpack:///./src/Main/CheckStates/Season.js","webpack:///./src/Main/CheckStates/Garden.js","webpack:///./src/Main/CheckStates/Grimoire.js","webpack:///./src/Main/CheckStates/Wrinkler.js","webpack:///./src/Main/CheckStates/GoldenCookie.js","webpack:///./src/Disp/GoldenCookieTimers/GoldenCookieTimers.js","webpack:///./src/Data/headers.js","webpack:///./src/InitSaveLoad/load.js","webpack:///./src/CookieMonster.js","webpack:///./src/InitSaveLoad/init.js","webpack:///./src/InitSaveLoad/save.js"],"sourcesContent":["/**\r\n * jscolor - JavaScript Color Picker\r\n *\r\n * @link http://jscolor.com\r\n * @license For open source use: GPLv3\r\n * For commercial use: JSColor Commercial License\r\n * @author Jan Odvarko - East Desire\r\n *\r\n * See usage examples at http://jscolor.com/examples/\r\n */\r\n\r\n\r\n(function (global, factory) {\r\n\r\n\t'use strict';\r\n\r\n\tif (typeof module === 'object' && typeof module.exports === 'object') {\r\n\t\t// Export jscolor as a module\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory (global) :\r\n\t\t\tfunction (win) {\r\n\t\t\t\tif (!win.document) {\r\n\t\t\t\t\tthrow new Error('jscolor needs a window with document');\r\n\t\t\t\t}\r\n\t\t\t\treturn factory(win);\r\n\t\t\t}\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Default use (no module export)\r\n\tfactory(global);\r\n\r\n})(typeof window !== 'undefined' ? window : this, function (window) { // BEGIN factory\r\n\r\n// BEGIN jscolor code\r\n\r\n\r\n'use strict';\r\n\r\n\r\nvar jscolor = (function () { // BEGIN jscolor\r\n\r\nvar jsc = {\r\n\r\n\r\n\tinitialized : false,\r\n\r\n\tinstances : [], // created instances of jscolor\r\n\r\n\treadyQueue : [], // functions waiting to be called after init\r\n\r\n\r\n\tregister : function () {\r\n\t\tif (typeof window !== 'undefined' && window.document) {\r\n\t\t\tif (window.document.readyState !== 'loading') {\r\n\t\t\t\tjsc.pub.init();\r\n\t\t\t} else {\r\n\t\t\t\twindow.document.addEventListener('DOMContentLoaded', jsc.pub.init, false);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tinstallBySelector : function (selector, rootNode) {\r\n\t\trootNode = rootNode ? jsc.node(rootNode) : window.document;\r\n\t\tif (!rootNode) {\r\n\t\t\tthrow new Error('Missing root node');\r\n\t\t}\r\n\r\n\t\tvar elms = rootNode.querySelectorAll(selector);\r\n\r\n\t\t// for backward compatibility with DEPRECATED installation/configuration using className\r\n\t\tvar matchClass = new RegExp('(^|\\\\s)(' + jsc.pub.lookupClass + ')(\\\\s*(\\\\{[^}]*\\\\})|\\\\s|$)', 'i');\r\n\r\n\t\tfor (var i = 0; i < elms.length; i += 1) {\r\n\r\n\t\t\tif (elms[i].jscolor && elms[i].jscolor instanceof jsc.pub) {\r\n\t\t\t\tcontinue; // jscolor already installed on this element\r\n\t\t\t}\r\n\r\n\t\t\tif (elms[i].type !== undefined && elms[i].type.toLowerCase() == 'color' && jsc.isColorAttrSupported) {\r\n\t\t\t\tcontinue; // skips inputs of type 'color' if supported by the browser\r\n\t\t\t}\r\n\r\n\t\t\tvar dataOpts, m;\r\n\r\n\t\t\tif (\r\n\t\t\t\t(dataOpts = jsc.getDataAttr(elms[i], 'jscolor')) !== null ||\r\n\t\t\t\t(elms[i].className && (m = elms[i].className.match(matchClass))) // installation using className (DEPRECATED)\r\n\t\t\t) {\r\n\t\t\t\tvar targetElm = elms[i];\r\n\r\n\t\t\t\tvar optsStr = '';\r\n\t\t\t\tif (dataOpts !== null) {\r\n\t\t\t\t\toptsStr = dataOpts;\r\n\r\n\t\t\t\t} else if (m) { // installation using className (DEPRECATED)\r\n\t\t\t\t\tconsole.warn('Installation using class name is DEPRECATED. Use data-jscolor=\"\" attribute instead.' + jsc.docsRef);\r\n\t\t\t\t\tif (m[4]) {\r\n\t\t\t\t\t\toptsStr = m[4];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar opts = null;\r\n\t\t\t\tif (optsStr.trim()) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\topts = jsc.parseOptionsStr(optsStr);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e + '\\n' + optsStr);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tnew jsc.pub(targetElm, opts);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tparseOptionsStr : function (str) {\r\n\t\tvar opts = null;\r\n\r\n\t\ttry {\r\n\t\t\topts = JSON.parse(str);\r\n\r\n\t\t} catch (eParse) {\r\n\t\t\tif (!jsc.pub.looseJSON) {\r\n\t\t\t\tthrow new Error('Could not parse jscolor options as JSON: ' + eParse);\r\n\t\t\t} else {\r\n\t\t\t\t// loose JSON syntax is enabled -> try to evaluate the options string as JavaScript object\r\n\t\t\t\ttry {\r\n\t\t\t\t\topts = (new Function ('var opts = (' + str + '); return typeof opts === \"object\" ? opts : {};'))();\r\n\t\t\t\t} catch (eEval) {\r\n\t\t\t\t\tthrow new Error('Could not evaluate jscolor options: ' + eEval);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn opts;\r\n\t},\r\n\r\n\r\n\tgetInstances : function () {\r\n\t\tvar inst = [];\r\n\t\tfor (var i = 0; i < jsc.instances.length; i += 1) {\r\n\t\t\t// if the targetElement still exists, the instance is considered \"alive\"\r\n\t\t\tif (jsc.instances[i] && jsc.instances[i].targetElement) {\r\n\t\t\t\tinst.push(jsc.instances[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn inst;\r\n\t},\r\n\r\n\r\n\tcreateEl : function (tagName) {\r\n\t\tvar el = window.document.createElement(tagName);\r\n\t\tjsc.setData(el, 'gui', true);\r\n\t\treturn el;\r\n\t},\r\n\r\n\r\n\tnode : function (nodeOrSelector) {\r\n\t\tif (!nodeOrSelector) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (typeof nodeOrSelector === 'string') {\r\n\t\t\t// query selector\r\n\t\t\tvar sel = nodeOrSelector;\r\n\t\t\tvar el = null;\r\n\t\t\ttry {\r\n\t\t\t\tel = window.document.querySelector(sel);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.warn(e);\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tif (!el) {\r\n\t\t\t\tconsole.warn('No element matches the selector: %s', sel);\r\n\t\t\t}\r\n\t\t\treturn el;\r\n\t\t}\r\n\r\n\t\tif (jsc.isNode(nodeOrSelector)) {\r\n\t\t\t// DOM node\r\n\t\t\treturn nodeOrSelector;\r\n\t\t}\r\n\r\n\t\tconsole.warn('Invalid node of type %s: %s', typeof nodeOrSelector, nodeOrSelector);\r\n\t\treturn null;\r\n\t},\r\n\r\n\r\n\t// See https://stackoverflow.com/questions/384286/\r\n\tisNode : function (val) {\r\n\t\tif (typeof Node === 'object') {\r\n\t\t\treturn val instanceof Node;\r\n\t\t}\r\n\t\treturn val && typeof val === 'object' && typeof val.nodeType === 'number' && typeof val.nodeName === 'string';\r\n\t},\r\n\r\n\r\n\tnodeName : function (node) {\r\n\t\tif (node && node.nodeName) {\r\n\t\t\treturn node.nodeName.toLowerCase();\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\tremoveChildren : function (node) {\r\n\t\twhile (node.firstChild) {\r\n\t\t\tnode.removeChild(node.firstChild);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tisTextInput : function (el) {\r\n\t\treturn el && jsc.nodeName(el) === 'input' && el.type.toLowerCase() === 'text';\r\n\t},\r\n\r\n\r\n\tisButton : function (el) {\r\n\t\tif (!el) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tvar n = jsc.nodeName(el);\r\n\t\treturn (\r\n\t\t\t(n === 'button') ||\r\n\t\t\t(n === 'input' && ['button', 'submit', 'reset'].indexOf(el.type.toLowerCase()) > -1)\r\n\t\t);\r\n\t},\r\n\r\n\r\n\tisButtonEmpty : function (el) {\r\n\t\tswitch (jsc.nodeName(el)) {\r\n\t\t\tcase 'input': return (!el.value || el.value.trim() === '');\r\n\t\t\tcase 'button': return (el.textContent.trim() === '');\r\n\t\t}\r\n\t\treturn null; // could not determine element's text\r\n\t},\r\n\r\n\r\n\t// See https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\r\n\tisPassiveEventSupported : (function () {\r\n\t\tvar supported = false;\r\n\r\n\t\ttry {\r\n\t\t\tvar opts = Object.defineProperty({}, 'passive', {\r\n\t\t\t\tget: function () { supported = true; }\r\n\t\t\t});\r\n\t\t\twindow.addEventListener('testPassive', null, opts);\r\n\t\t\twindow.removeEventListener('testPassive', null, opts);\r\n\t\t} catch (e) {}\r\n\r\n\t\treturn supported;\r\n\t})(),\r\n\r\n\r\n\tisColorAttrSupported : (function () {\r\n\t\tvar elm = window.document.createElement('input');\r\n\t\tif (elm.setAttribute) {\r\n\t\t\telm.setAttribute('type', 'color');\r\n\t\t\tif (elm.type.toLowerCase() == 'color') {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t})(),\r\n\r\n\r\n\tdataProp : '_data_jscolor',\r\n\r\n\r\n\t// usage:\r\n\t// setData(obj, prop, value)\r\n\t// setData(obj, {prop:value, ...})\r\n\t//\r\n\tsetData : function () {\r\n\t\tvar obj = arguments[0];\r\n\r\n\t\tif (arguments.length === 3) {\r\n\t\t\t// setting a single property\r\n\t\t\tvar data = obj.hasOwnProperty(jsc.dataProp) ? obj[jsc.dataProp] : (obj[jsc.dataProp] = {});\r\n\t\t\tvar prop = arguments[1];\r\n\t\t\tvar value = arguments[2];\r\n\r\n\t\t\tdata[prop] = value;\r\n\t\t\treturn true;\r\n\r\n\t\t} else if (arguments.length === 2 && typeof arguments[1] === 'object') {\r\n\t\t\t// setting multiple properties\r\n\t\t\tvar data = obj.hasOwnProperty(jsc.dataProp) ? obj[jsc.dataProp] : (obj[jsc.dataProp] = {});\r\n\t\t\tvar map = arguments[1];\r\n\r\n\t\t\tfor (var prop in map) {\r\n\t\t\t\tif (map.hasOwnProperty(prop)) {\r\n\t\t\t\t\tdata[prop] = map[prop];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthrow new Error('Invalid arguments');\r\n\t},\r\n\r\n\r\n\t// usage:\r\n\t// removeData(obj, prop, [prop...])\r\n\t//\r\n\tremoveData : function () {\r\n\t\tvar obj = arguments[0];\r\n\t\tif (!obj.hasOwnProperty(jsc.dataProp)) {\r\n\t\t\treturn true; // data object does not exist\r\n\t\t}\r\n\t\tfor (var i = 1; i < arguments.length; i += 1) {\r\n\t\t\tvar prop = arguments[i];\r\n\t\t\tdelete obj[jsc.dataProp][prop];\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\r\n\tgetData : function (obj, prop, setDefault) {\r\n\t\tif (!obj.hasOwnProperty(jsc.dataProp)) {\r\n\t\t\t// data object does not exist\r\n\t\t\tif (setDefault !== undefined) {\r\n\t\t\t\tobj[jsc.dataProp] = {}; // create data object\r\n\t\t\t} else {\r\n\t\t\t\treturn undefined; // no value to return\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar data = obj[jsc.dataProp];\r\n\r\n\t\tif (!data.hasOwnProperty(prop) && setDefault !== undefined) {\r\n\t\t\tdata[prop] = setDefault;\r\n\t\t}\r\n\t\treturn data[prop];\r\n\t},\r\n\r\n\r\n\tgetDataAttr : function (el, name) {\r\n\t\tvar attrName = 'data-' + name;\r\n\t\tvar attrValue = el.getAttribute(attrName);\r\n\t\treturn attrValue;\r\n\t},\r\n\r\n\r\n\tsetDataAttr : function (el, name, value) {\r\n\t\tvar attrName = 'data-' + name;\r\n\t\tel.setAttribute(attrName, value);\r\n\t},\r\n\r\n\r\n\t_attachedGroupEvents : {},\r\n\r\n\r\n\tattachGroupEvent : function (groupName, el, evnt, func) {\r\n\t\tif (!jsc._attachedGroupEvents.hasOwnProperty(groupName)) {\r\n\t\t\tjsc._attachedGroupEvents[groupName] = [];\r\n\t\t}\r\n\t\tjsc._attachedGroupEvents[groupName].push([el, evnt, func]);\r\n\t\tel.addEventListener(evnt, func, false);\r\n\t},\r\n\r\n\r\n\tdetachGroupEvents : function (groupName) {\r\n\t\tif (jsc._attachedGroupEvents.hasOwnProperty(groupName)) {\r\n\t\t\tfor (var i = 0; i < jsc._attachedGroupEvents[groupName].length; i += 1) {\r\n\t\t\t\tvar evt = jsc._attachedGroupEvents[groupName][i];\r\n\t\t\t\tevt[0].removeEventListener(evt[1], evt[2], false);\r\n\t\t\t}\r\n\t\t\tdelete jsc._attachedGroupEvents[groupName];\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tpreventDefault : function (e) {\r\n\t\tif (e.preventDefault) { e.preventDefault(); }\r\n\t\te.returnValue = false;\r\n\t},\r\n\r\n\r\n\ttriggerEvent : function (el, eventName, bubbles, cancelable) {\r\n\t\tif (!el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar ev = null;\r\n\r\n\t\tif (typeof Event === 'function') {\r\n\t\t\tev = new Event(eventName, {\r\n\t\t\t\tbubbles: bubbles,\r\n\t\t\t\tcancelable: cancelable\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// IE\r\n\t\t\tev = window.document.createEvent('Event');\r\n\t\t\tev.initEvent(eventName, bubbles, cancelable);\r\n\t\t}\r\n\r\n\t\tif (!ev) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// so that we know that the event was triggered internally\r\n\t\tjsc.setData(ev, 'internal', true);\r\n\r\n\t\tel.dispatchEvent(ev);\r\n\t\treturn true;\r\n\t},\r\n\r\n\r\n\ttriggerInputEvent : function (el, eventName, bubbles, cancelable) {\r\n\t\tif (!el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (jsc.isTextInput(el)) {\r\n\t\t\tjsc.triggerEvent(el, eventName, bubbles, cancelable);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\teventKey : function (ev) {\r\n\t\tvar keys = {\r\n\t\t\t9: 'Tab',\r\n\t\t\t13: 'Enter',\r\n\t\t\t27: 'Escape',\r\n\t\t};\r\n\t\tif (typeof ev.code === 'string') {\r\n\t\t\treturn ev.code;\r\n\t\t} else if (ev.keyCode !== undefined && keys.hasOwnProperty(ev.keyCode)) {\r\n\t\t\treturn keys[ev.keyCode];\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\r\n\tstrList : function (str) {\r\n\t\tif (!str) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\treturn str.replace(/^\\s+|\\s+$/g, '').split(/\\s+/);\r\n\t},\r\n\r\n\r\n\t// The className parameter (str) can only contain a single class name\r\n\thasClass : function (elm, className) {\r\n\t\tif (!className) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (elm.classList !== undefined) {\r\n\t\t\treturn elm.classList.contains(className);\r\n\t\t}\r\n\t\t// polyfill\r\n\t\treturn -1 != (' ' + elm.className.replace(/\\s+/g, ' ') + ' ').indexOf(' ' + className + ' ');\r\n\t},\r\n\r\n\r\n\t// The className parameter (str) can contain multiple class names separated by whitespace\r\n\taddClass : function (elm, className) {\r\n\t\tvar classNames = jsc.strList(className);\r\n\r\n\t\tif (elm.classList !== undefined) {\r\n\t\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\t\telm.classList.add(classNames[i]);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// polyfill\r\n\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\tif (!jsc.hasClass(elm, classNames[i])) {\r\n\t\t\t\telm.className += (elm.className ? ' ' : '') + classNames[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// The className parameter (str) can contain multiple class names separated by whitespace\r\n\tremoveClass : function (elm, className) {\r\n\t\tvar classNames = jsc.strList(className);\r\n\r\n\t\tif (elm.classList !== undefined) {\r\n\t\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\t\telm.classList.remove(classNames[i]);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// polyfill\r\n\t\tfor (var i = 0; i < classNames.length; i += 1) {\r\n\t\t\tvar repl = new RegExp(\r\n\t\t\t\t'^\\\\s*' + classNames[i] + '\\\\s*|' +\r\n\t\t\t\t'\\\\s*' + classNames[i] + '\\\\s*$|' +\r\n\t\t\t\t'\\\\s+' + classNames[i] + '(\\\\s+)',\r\n\t\t\t\t'g'\r\n\t\t\t);\r\n\t\t\telm.className = elm.className.replace(repl, '$1');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tgetCompStyle : function (elm) {\r\n\t\tvar compStyle = window.getComputedStyle ? window.getComputedStyle(elm) : elm.currentStyle;\r\n\r\n\t\t// Note: In Firefox, getComputedStyle returns null in a hidden iframe,\r\n\t\t// that's why we need to check if the returned value is non-empty\r\n\t\tif (!compStyle) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\t\treturn compStyle;\r\n\t},\r\n\r\n\r\n\t// Note:\r\n\t// Setting a property to NULL reverts it to the state before it was first set\r\n\t// with the 'reversible' flag enabled\r\n\t//\r\n\tsetStyle : function (elm, styles, important, reversible) {\r\n\t\t// using '' for standard priority (IE10 apparently doesn't like value undefined)\r\n\t\tvar priority = important ? 'important' : '';\r\n\t\tvar origStyle = null;\r\n\r\n\t\tfor (var prop in styles) {\r\n\t\t\tif (styles.hasOwnProperty(prop)) {\r\n\t\t\t\tvar setVal = null;\r\n\r\n\t\t\t\tif (styles[prop] === null) {\r\n\t\t\t\t\t// reverting a property value\r\n\r\n\t\t\t\t\tif (!origStyle) {\r\n\t\t\t\t\t\t// get the original style object, but dont't try to create it if it doesn't exist\r\n\t\t\t\t\t\torigStyle = jsc.getData(elm, 'origStyle');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (origStyle && origStyle.hasOwnProperty(prop)) {\r\n\t\t\t\t\t\t// we have property's original value -> use it\r\n\t\t\t\t\t\tsetVal = origStyle[prop];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// setting a property value\r\n\r\n\t\t\t\t\tif (reversible) {\r\n\t\t\t\t\t\tif (!origStyle) {\r\n\t\t\t\t\t\t\t// get the original style object and if it doesn't exist, create it\r\n\t\t\t\t\t\t\torigStyle = jsc.getData(elm, 'origStyle', {});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (!origStyle.hasOwnProperty(prop)) {\r\n\t\t\t\t\t\t\t// original property value not yet stored -> store it\r\n\t\t\t\t\t\t\torigStyle[prop] = elm.style[prop];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsetVal = styles[prop];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (setVal !== null) {\r\n\t\t\t\t\telm.style.setProperty(prop, setVal, priority);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tappendCss : function (css) {\r\n\t\tvar head = document.querySelector('head');\r\n\t\tvar style = document.createElement('style');\r\n\t\tstyle.innerText = css;\r\n\t\thead.appendChild(style);\r\n\t},\r\n\r\n\r\n\tappendDefaultCss : function (css) {\r\n\t\tjsc.appendCss(\r\n\t\t\t[\r\n\t\t\t\t'.jscolor-wrap, .jscolor-wrap div, .jscolor-wrap canvas { ' +\r\n\t\t\t\t'position:static; display:block; visibility:visible; overflow:visible; margin:0; padding:0; ' +\r\n\t\t\t\t'border:none; border-radius:0; outline:none; z-index:auto; float:none; ' +\r\n\t\t\t\t'width:auto; height:auto; left:auto; right:auto; top:auto; bottom:auto; min-width:0; min-height:0; max-width:none; max-height:none; ' +\r\n\t\t\t\t'background:none; clip:auto; opacity:1; transform:none; box-shadow:none; box-sizing:content-box; ' +\r\n\t\t\t\t'}',\r\n\t\t\t\t'.jscolor-wrap { clear:both; }',\r\n\t\t\t\t'.jscolor-wrap .jscolor-picker { position:relative; }',\r\n\t\t\t\t'.jscolor-wrap .jscolor-shadow { position:absolute; left:0; top:0; width:100%; height:100%; }',\r\n\t\t\t\t'.jscolor-wrap .jscolor-border { position:relative; }',\r\n\t\t\t\t'.jscolor-wrap .jscolor-palette { position:absolute; }',\r\n\t\t\t\t'.jscolor-wrap .jscolor-palette-sw { position:absolute; display:block; cursor:pointer; }',\r\n\t\t\t\t'.jscolor-wrap .jscolor-btn { position:absolute; overflow:hidden; white-space:nowrap; font:13px sans-serif; text-align:center; cursor:pointer; }',\r\n\t\t\t].join('\\n')\r\n\t\t);\r\n\t},\r\n\r\n\r\n\thexColor : function (r, g, b) {\r\n\t\treturn '#' + (\r\n\t\t\t('0' + Math.round(r).toString(16)).slice(-2) +\r\n\t\t\t('0' + Math.round(g).toString(16)).slice(-2) +\r\n\t\t\t('0' + Math.round(b).toString(16)).slice(-2)\r\n\t\t).toUpperCase();\r\n\t},\r\n\r\n\r\n\thexaColor : function (r, g, b, a) {\r\n\t\treturn '#' + (\r\n\t\t\t('0' + Math.round(r).toString(16)).slice(-2) +\r\n\t\t\t('0' + Math.round(g).toString(16)).slice(-2) +\r\n\t\t\t('0' + Math.round(b).toString(16)).slice(-2) +\r\n\t\t\t('0' + Math.round(a * 255).toString(16)).slice(-2)\r\n\t\t).toUpperCase();\r\n\t},\r\n\r\n\r\n\trgbColor : function (r, g, b) {\r\n\t\treturn 'rgb(' +\r\n\t\t\tMath.round(r) + ',' +\r\n\t\t\tMath.round(g) + ',' +\r\n\t\t\tMath.round(b) +\r\n\t\t')';\r\n\t},\r\n\r\n\r\n\trgbaColor : function (r, g, b, a) {\r\n\t\treturn 'rgba(' +\r\n\t\t\tMath.round(r) + ',' +\r\n\t\t\tMath.round(g) + ',' +\r\n\t\t\tMath.round(b) + ',' +\r\n\t\t\t(Math.round((a===undefined || a===null ? 1 : a) * 100) / 100) +\r\n\t\t')';\r\n\t},\r\n\r\n\r\n\tlinearGradient : (function () {\r\n\r\n\t\tfunction getFuncName () {\r\n\t\t\tvar stdName = 'linear-gradient';\r\n\t\t\tvar prefixes = ['', '-webkit-', '-moz-', '-o-', '-ms-'];\r\n\t\t\tvar helper = window.document.createElement('div');\r\n\r\n\t\t\tfor (var i = 0; i < prefixes.length; i += 1) {\r\n\t\t\t\tvar tryFunc = prefixes[i] + stdName;\r\n\t\t\t\tvar tryVal = tryFunc + '(to right, rgba(0,0,0,0), rgba(0,0,0,0))';\r\n\r\n\t\t\t\thelper.style.background = tryVal;\r\n\t\t\t\tif (helper.style.background) { // CSS background successfully set -> function name is supported\r\n\t\t\t\t\treturn tryFunc;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn stdName; // fallback to standard 'linear-gradient' without vendor prefix\r\n\t\t}\r\n\r\n\t\tvar funcName = getFuncName();\r\n\r\n\t\treturn function () {\r\n\t\t\treturn funcName + '(' + Array.prototype.join.call(arguments, ', ') + ')';\r\n\t\t};\r\n\r\n\t})(),\r\n\r\n\r\n\tsetBorderRadius : function (elm, value) {\r\n\t\tjsc.setStyle(elm, {'border-radius' : value || '0'});\r\n\t},\r\n\r\n\r\n\tsetBoxShadow : function (elm, value) {\r\n\t\tjsc.setStyle(elm, {'box-shadow': value || 'none'});\r\n\t},\r\n\r\n\r\n\tgetElementPos : function (e, relativeToViewport) {\r\n\t\tvar x=0, y=0;\r\n\t\tvar rect = e.getBoundingClientRect();\r\n\t\tx = rect.left;\r\n\t\ty = rect.top;\r\n\t\tif (!relativeToViewport) {\r\n\t\t\tvar viewPos = jsc.getViewPos();\r\n\t\t\tx += viewPos[0];\r\n\t\t\ty += viewPos[1];\r\n\t\t}\r\n\t\treturn [x, y];\r\n\t},\r\n\r\n\r\n\tgetElementSize : function (e) {\r\n\t\treturn [e.offsetWidth, e.offsetHeight];\r\n\t},\r\n\r\n\r\n\t// get pointer's X/Y coordinates relative to viewport\r\n\tgetAbsPointerPos : function (e) {\r\n\t\tvar x = 0, y = 0;\r\n\t\tif (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {\r\n\t\t\t// touch devices\r\n\t\t\tx = e.changedTouches[0].clientX;\r\n\t\t\ty = e.changedTouches[0].clientY;\r\n\t\t} else if (typeof e.clientX === 'number') {\r\n\t\t\tx = e.clientX;\r\n\t\t\ty = e.clientY;\r\n\t\t}\r\n\t\treturn { x: x, y: y };\r\n\t},\r\n\r\n\r\n\t// get pointer's X/Y coordinates relative to target element\r\n\tgetRelPointerPos : function (e) {\r\n\t\tvar target = e.target || e.srcElement;\r\n\t\tvar targetRect = target.getBoundingClientRect();\r\n\r\n\t\tvar x = 0, y = 0;\r\n\r\n\t\tvar clientX = 0, clientY = 0;\r\n\t\tif (typeof e.changedTouches !== 'undefined' && e.changedTouches.length) {\r\n\t\t\t// touch devices\r\n\t\t\tclientX = e.changedTouches[0].clientX;\r\n\t\t\tclientY = e.changedTouches[0].clientY;\r\n\t\t} else if (typeof e.clientX === 'number') {\r\n\t\t\tclientX = e.clientX;\r\n\t\t\tclientY = e.clientY;\r\n\t\t}\r\n\r\n\t\tx = clientX - targetRect.left;\r\n\t\ty = clientY - targetRect.top;\r\n\t\treturn { x: x, y: y };\r\n\t},\r\n\r\n\r\n\tgetViewPos : function () {\r\n\t\tvar doc = window.document.documentElement;\r\n\t\treturn [\r\n\t\t\t(window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0),\r\n\t\t\t(window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\r\n\t\t];\r\n\t},\r\n\r\n\r\n\tgetViewSize : function () {\r\n\t\tvar doc = window.document.documentElement;\r\n\t\treturn [\r\n\t\t\t(window.innerWidth || doc.clientWidth),\r\n\t\t\t(window.innerHeight || doc.clientHeight),\r\n\t\t];\r\n\t},\r\n\r\n\r\n\t// r: 0-255\r\n\t// g: 0-255\r\n\t// b: 0-255\r\n\t//\r\n\t// returns: [ 0-360, 0-100, 0-100 ]\r\n\t//\r\n\tRGB_HSV : function (r, g, b) {\r\n\t\tr /= 255;\r\n\t\tg /= 255;\r\n\t\tb /= 255;\r\n\t\tvar n = Math.min(Math.min(r,g),b);\r\n\t\tvar v = Math.max(Math.max(r,g),b);\r\n\t\tvar m = v - n;\r\n\t\tif (m === 0) { return [ null, 0, 100 * v ]; }\r\n\t\tvar h = r===n ? 3+(b-g)/m : (g===n ? 5+(r-b)/m : 1+(g-r)/m);\r\n\t\treturn [\r\n\t\t\t60 * (h===6?0:h),\r\n\t\t\t100 * (m/v),\r\n\t\t\t100 * v\r\n\t\t];\r\n\t},\r\n\r\n\r\n\t// h: 0-360\r\n\t// s: 0-100\r\n\t// v: 0-100\r\n\t//\r\n\t// returns: [ 0-255, 0-255, 0-255 ]\r\n\t//\r\n\tHSV_RGB : function (h, s, v) {\r\n\t\tvar u = 255 * (v / 100);\r\n\r\n\t\tif (h === null) {\r\n\t\t\treturn [ u, u, u ];\r\n\t\t}\r\n\r\n\t\th /= 60;\r\n\t\ts /= 100;\r\n\r\n\t\tvar i = Math.floor(h);\r\n\t\tvar f = i%2 ? h-i : 1-(h-i);\r\n\t\tvar m = u * (1 - s);\r\n\t\tvar n = u * (1 - s * f);\r\n\t\tswitch (i) {\r\n\t\t\tcase 6:\r\n\t\t\tcase 0: return [u,n,m];\r\n\t\t\tcase 1: return [n,u,m];\r\n\t\t\tcase 2: return [m,u,n];\r\n\t\t\tcase 3: return [m,n,u];\r\n\t\t\tcase 4: return [n,m,u];\r\n\t\t\tcase 5: return [u,m,n];\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tparseColorString : function (str) {\r\n\t\tvar ret = {\r\n\t\t\trgba: null,\r\n\t\t\tformat: null // 'hex' | 'hexa' | 'rgb' | 'rgba'\r\n\t\t};\r\n\r\n\t\tvar m;\r\n\r\n\t\tif (m = str.match(/^\\W*([0-9A-F]{3,8})\\W*$/i)) {\r\n\t\t\t// HEX notation\r\n\r\n\t\t\tif (m[1].length === 8) {\r\n\t\t\t\t// 8-char notation (= with alpha)\r\n\t\t\t\tret.format = 'hexa';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseInt(m[1].slice(0,2),16),\r\n\t\t\t\t\tparseInt(m[1].slice(2,4),16),\r\n\t\t\t\t\tparseInt(m[1].slice(4,6),16),\r\n\t\t\t\t\tparseInt(m[1].slice(6,8),16) / 255\r\n\t\t\t\t];\r\n\r\n\t\t\t} else if (m[1].length === 6) {\r\n\t\t\t\t// 6-char notation\r\n\t\t\t\tret.format = 'hex';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseInt(m[1].slice(0,2),16),\r\n\t\t\t\t\tparseInt(m[1].slice(2,4),16),\r\n\t\t\t\t\tparseInt(m[1].slice(4,6),16),\r\n\t\t\t\t\tnull\r\n\t\t\t\t];\r\n\r\n\t\t\t} else if (m[1].length === 3) {\r\n\t\t\t\t// 3-char notation\r\n\t\t\t\tret.format = 'hex';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseInt(m[1].charAt(0) + m[1].charAt(0),16),\r\n\t\t\t\t\tparseInt(m[1].charAt(1) + m[1].charAt(1),16),\r\n\t\t\t\t\tparseInt(m[1].charAt(2) + m[1].charAt(2),16),\r\n\t\t\t\t\tnull\r\n\t\t\t\t];\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tif (m = str.match(/^\\W*rgba?\\(([^)]*)\\)\\W*$/i)) {\r\n\t\t\t// rgb(...) or rgba(...) notation\r\n\r\n\t\t\tvar par = m[1].split(',');\r\n\t\t\tvar re = /^\\s*(\\d+|\\d*\\.\\d+|\\d+\\.\\d*)\\s*$/;\r\n\t\t\tvar mR, mG, mB, mA;\r\n\t\t\tif (\r\n\t\t\t\tpar.length >= 3 &&\r\n\t\t\t\t(mR = par[0].match(re)) &&\r\n\t\t\t\t(mG = par[1].match(re)) &&\r\n\t\t\t\t(mB = par[2].match(re))\r\n\t\t\t) {\r\n\t\t\t\tret.format = 'rgb';\r\n\t\t\t\tret.rgba = [\r\n\t\t\t\t\tparseFloat(mR[1]) || 0,\r\n\t\t\t\t\tparseFloat(mG[1]) || 0,\r\n\t\t\t\t\tparseFloat(mB[1]) || 0,\r\n\t\t\t\t\tnull\r\n\t\t\t\t];\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tpar.length >= 4 &&\r\n\t\t\t\t\t(mA = par[3].match(re))\r\n\t\t\t\t) {\r\n\t\t\t\t\tret.format = 'rgba';\r\n\t\t\t\t\tret.rgba[3] = parseFloat(mA[1]) || 0;\r\n\t\t\t\t}\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\tparsePaletteValue : function (mixed) {\r\n\t\tvar vals = [];\r\n\r\n\t\tif (typeof mixed === 'string') { // input is a string of space separated color values\r\n\t\t\t// rgb() and rgba() may contain spaces too, so let's find all color values by regex\r\n\t\t\tmixed.replace(/#[0-9A-F]{3}\\b|#[0-9A-F]{6}([0-9A-F]{2})?\\b|rgba?\\(([^)]*)\\)/ig, function (val) {\r\n\t\t\t\tvals.push(val);\r\n\t\t\t});\r\n\t\t} else if (Array.isArray(mixed)) { // input is an array of color values\r\n\t\t\tvals = mixed;\r\n\t\t}\r\n\r\n\t\t// convert all values into uniform color format\r\n\r\n\t\tvar colors = [];\r\n\r\n\t\tfor (var i = 0; i < vals.length; i++) {\r\n\t\t\tvar color = jsc.parseColorString(vals[i]);\r\n\t\t\tif (color) {\r\n\t\t\t\tcolors.push(color);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn colors;\r\n\t},\r\n\r\n\r\n\tcontainsTranparentColor : function (colors) {\r\n\t\tfor (var i = 0; i < colors.length; i++) {\r\n\t\t\tvar a = colors[i].rgba[3];\r\n\t\t\tif (a !== null && a < 1.0) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\tisAlphaFormat : function (format) {\r\n\t\tswitch (format.toLowerCase()) {\r\n\t\tcase 'hexa':\r\n\t\tcase 'rgba':\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\r\n\t// Canvas scaling for retina displays\r\n\t//\r\n\t// adapted from https://www.html5rocks.com/en/tutorials/canvas/hidpi/\r\n\t//\r\n\tscaleCanvasForHighDPR : function (canvas) {\r\n\t\tvar dpr = window.devicePixelRatio || 1;\r\n\t\tcanvas.width *= dpr;\r\n\t\tcanvas.height *= dpr;\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\t\tctx.scale(dpr, dpr);\r\n\t},\r\n\r\n\r\n\tgenColorPreviewCanvas : function (color, separatorPos, specWidth, scaleForHighDPR) {\r\n\r\n\t\tvar sepW = Math.round(jsc.pub.previewSeparator.length);\r\n\t\tvar sqSize = jsc.pub.chessboardSize;\r\n\t\tvar sqColor1 = jsc.pub.chessboardColor1;\r\n\t\tvar sqColor2 = jsc.pub.chessboardColor2;\r\n\r\n\t\tvar cWidth = specWidth ? specWidth : sqSize * 2;\r\n\t\tvar cHeight = sqSize * 2;\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tcanvas.width = cWidth;\r\n\t\tcanvas.height = cHeight;\r\n\t\tif (scaleForHighDPR) {\r\n\t\t\tjsc.scaleCanvasForHighDPR(canvas);\r\n\t\t}\r\n\r\n\t\t// transparency chessboard - background\r\n\t\tctx.fillStyle = sqColor1;\r\n\t\tctx.fillRect(0, 0, cWidth, cHeight);\r\n\r\n\t\t// transparency chessboard - squares\r\n\t\tctx.fillStyle = sqColor2;\r\n\t\tfor (var x = 0; x < cWidth; x += sqSize * 2) {\r\n\t\t\tctx.fillRect(x, 0, sqSize, sqSize);\r\n\t\t\tctx.fillRect(x + sqSize, sqSize, sqSize, sqSize);\r\n\t\t}\r\n\r\n\t\tif (color) {\r\n\t\t\t// actual color in foreground\r\n\t\t\tctx.fillStyle = color;\r\n\t\t\tctx.fillRect(0, 0, cWidth, cHeight);\r\n\t\t}\r\n\r\n\t\tvar start = null;\r\n\t\tswitch (separatorPos) {\r\n\t\t\tcase 'left':\r\n\t\t\t\tstart = 0;\r\n\t\t\t\tctx.clearRect(0, 0, sepW/2, cHeight);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'right':\r\n\t\t\t\tstart = cWidth - sepW;\r\n\t\t\t\tctx.clearRect(cWidth - (sepW/2), 0, sepW/2, cHeight);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif (start !== null) {\r\n\t\t\tctx.lineWidth = 1;\r\n\t\t\tfor (var i = 0; i < jsc.pub.previewSeparator.length; i += 1) {\r\n\t\t\t\tctx.beginPath();\r\n\t\t\t\tctx.strokeStyle = jsc.pub.previewSeparator[i];\r\n\t\t\t\tctx.moveTo(0.5 + start + i, 0);\r\n\t\t\t\tctx.lineTo(0.5 + start + i, cHeight);\r\n\t\t\t\tctx.stroke();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tcanvas: canvas,\r\n\t\t\twidth: cWidth,\r\n\t\t\theight: cHeight,\r\n\t\t};\r\n\t},\r\n\r\n\r\n\t// if position or width is not set => fill the entire element (0%-100%)\r\n\tgenColorPreviewGradient : function (color, position, width) {\r\n\t\tvar params = [];\r\n\r\n\t\tif (position && width) {\r\n\t\t\tparams = [\r\n\t\t\t\t'to ' + {'left':'right', 'right':'left'}[position],\r\n\t\t\t\tcolor + ' 0%',\r\n\t\t\t\tcolor + ' ' + width + 'px',\r\n\t\t\t\t'rgba(0,0,0,0) ' + (width + 1) + 'px',\r\n\t\t\t\t'rgba(0,0,0,0) 100%',\r\n\t\t\t];\r\n\t\t} else {\r\n\t\t\tparams = [\r\n\t\t\t\t'to right',\r\n\t\t\t\tcolor + ' 0%',\r\n\t\t\t\tcolor + ' 100%',\r\n\t\t\t];\r\n\t\t}\r\n\r\n\t\treturn jsc.linearGradient.apply(this, params);\r\n\t},\r\n\r\n\r\n\tredrawPosition : function () {\r\n\r\n\t\tif (!jsc.picker || !jsc.picker.owner) {\r\n\t\t\treturn; // picker is not shown\r\n\t\t}\r\n\r\n\t\tvar thisObj = jsc.picker.owner;\r\n\r\n\t\tif (thisObj.container !== window.document.body) {\r\n\r\n\t\t\tjsc._drawPosition(thisObj, 0, 0, 'relative', false);\r\n\r\n\t\t} else {\r\n\r\n\t\t\tvar tp, vp;\r\n\r\n\t\t\tif (thisObj.fixed) {\r\n\t\t\t\t// Fixed elements are positioned relative to viewport,\r\n\t\t\t\t// therefore we can ignore the scroll offset\r\n\t\t\t\ttp = jsc.getElementPos(thisObj.targetElement, true); // target pos\r\n\t\t\t\tvp = [0, 0]; // view pos\r\n\t\t\t} else {\r\n\t\t\t\ttp = jsc.getElementPos(thisObj.targetElement); // target pos\r\n\t\t\t\tvp = jsc.getViewPos(); // view pos\r\n\t\t\t}\r\n\r\n\t\t\tvar ts = jsc.getElementSize(thisObj.targetElement); // target size\r\n\t\t\tvar vs = jsc.getViewSize(); // view size\r\n\t\t\tvar pd = jsc.getPickerDims(thisObj);\r\n\t\t\tvar ps = [pd.borderW, pd.borderH]; // picker outer size\r\n\t\t\tvar a, b, c;\r\n\t\t\tswitch (thisObj.position.toLowerCase()) {\r\n\t\t\t\tcase 'left': a=1; b=0; c=-1; break;\r\n\t\t\t\tcase 'right':a=1; b=0; c=1; break;\r\n\t\t\t\tcase 'top': a=0; b=1; c=-1; break;\r\n\t\t\t\tdefault: a=0; b=1; c=1; break;\r\n\t\t\t}\r\n\t\t\tvar l = (ts[b]+ps[b])/2;\r\n\r\n\t\t\t// compute picker position\r\n\t\t\tif (!thisObj.smartPosition) {\r\n\t\t\t\tvar pp = [\r\n\t\t\t\t\ttp[a],\r\n\t\t\t\t\ttp[b]+ts[b]-l+l*c\r\n\t\t\t\t];\r\n\t\t\t} else {\r\n\t\t\t\tvar pp = [\r\n\t\t\t\t\t-vp[a]+tp[a]+ps[a] > vs[a] ?\r\n\t\t\t\t\t\t(-vp[a]+tp[a]+ts[a]/2 > vs[a]/2 && tp[a]+ts[a]-ps[a] >= 0 ? tp[a]+ts[a]-ps[a] : tp[a]) :\r\n\t\t\t\t\t\ttp[a],\r\n\t\t\t\t\t-vp[b]+tp[b]+ts[b]+ps[b]-l+l*c > vs[b] ?\r\n\t\t\t\t\t\t(-vp[b]+tp[b]+ts[b]/2 > vs[b]/2 && tp[b]+ts[b]-l-l*c >= 0 ? tp[b]+ts[b]-l-l*c : tp[b]+ts[b]-l+l*c) :\r\n\t\t\t\t\t\t(tp[b]+ts[b]-l+l*c >= 0 ? tp[b]+ts[b]-l+l*c : tp[b]+ts[b]-l-l*c)\r\n\t\t\t\t];\r\n\t\t\t}\r\n\r\n\t\t\tvar x = pp[a];\r\n\t\t\tvar y = pp[b];\r\n\t\t\tvar positionValue = thisObj.fixed ? 'fixed' : 'absolute';\r\n\t\t\tvar contractShadow =\r\n\t\t\t\t(pp[0] + ps[0] > tp[0] || pp[0] < tp[0] + ts[0]) &&\r\n\t\t\t\t(pp[1] + ps[1] < tp[1] + ts[1]);\r\n\r\n\t\t\tjsc._drawPosition(thisObj, x, y, positionValue, contractShadow);\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n\t_drawPosition : function (thisObj, x, y, positionValue, contractShadow) {\r\n\t\tvar vShadow = contractShadow ? 0 : thisObj.shadowBlur; // px\r\n\r\n\t\tjsc.picker.wrap.style.position = positionValue;\r\n\r\n\t\tif ( // To avoid unnecessary repositioning during scroll\r\n\t\t\tMath.round(parseFloat(jsc.picker.wrap.style.left)) !== Math.round(x) ||\r\n\t\t\tMath.round(parseFloat(jsc.picker.wrap.style.top)) !== Math.round(y)\r\n\t\t) {\r\n\t\t\tjsc.picker.wrap.style.left = x + 'px';\r\n\t\t\tjsc.picker.wrap.style.top = y + 'px';\r\n\t\t}\r\n\r\n\t\tjsc.setBoxShadow(\r\n\t\t\tjsc.picker.boxS,\r\n\t\t\tthisObj.shadow ?\r\n\t\t\t\tnew jsc.BoxShadow(0, vShadow, thisObj.shadowBlur, 0, thisObj.shadowColor) :\r\n\t\t\t\tnull);\r\n\t},\r\n\r\n\r\n\tgetPickerDims : function (thisObj) {\r\n\t\tvar w = 2 * thisObj.controlBorderWidth + thisObj.width;\r\n\t\tvar h = 2 * thisObj.controlBorderWidth + thisObj.height;\r\n\r\n\t\tvar sliderSpace = 2 * thisObj.controlBorderWidth + 2 * jsc.getControlPadding(thisObj) + thisObj.sliderSize;\r\n\r\n\t\tif (jsc.getSliderChannel(thisObj)) {\r\n\t\t\tw += sliderSpace;\r\n\t\t}\r\n\t\tif (thisObj.hasAlphaChannel()) {\r\n\t\t\tw += sliderSpace;\r\n\t\t}\r\n\r\n\t\tvar pal = jsc.getPaletteDims(thisObj, w);\r\n\r\n\t\tif (pal.height) {\r\n\t\t\th += pal.height + thisObj.padding;\r\n\t\t}\r\n\t\tif (thisObj.closeButton) {\r\n\t\t\th += 2 * thisObj.controlBorderWidth + thisObj.padding + thisObj.buttonHeight;\r\n\t\t}\r\n\r\n\t\tvar pW = w + (2 * thisObj.padding);\r\n\t\tvar pH = h + (2 * thisObj.padding);\r\n\r\n\t\treturn {\r\n\t\t\tcontentW: w,\r\n\t\t\tcontentH: h,\r\n\t\t\tpaddedW: pW,\r\n\t\t\tpaddedH: pH,\r\n\t\t\tborderW: pW + (2 * thisObj.borderWidth),\r\n\t\t\tborderH: pH + (2 * thisObj.borderWidth),\r\n\t\t\tpalette: pal,\r\n\t\t};\r\n\t},\r\n\r\n\r\n\tgetPaletteDims : function (thisObj, width) {\r\n\t\tvar cols = 0, rows = 0, cellW = 0, cellH = 0, height = 0;\r\n\t\tvar sampleCount = thisObj._palette ? thisObj._palette.length : 0;\r\n\r\n\t\tif (sampleCount) {\r\n\t\t\tcols = thisObj.paletteCols;\r\n\t\t\trows = cols > 0 ? Math.ceil(sampleCount / cols) : 0;\r\n\r\n\t\t\t// color sample's dimensions (includes border)\r\n\t\t\tcellW = Math.max(1, Math.floor((width - ((cols - 1) * thisObj.paletteSpacing)) / cols));\r\n\t\t\tcellH = thisObj.paletteHeight ? Math.min(thisObj.paletteHeight, cellW) : cellW;\r\n\t\t}\r\n\r\n\t\tif (rows) {\r\n\t\t\theight =\r\n\t\t\t\trows * cellH +\r\n\t\t\t\t(rows - 1) * thisObj.paletteSpacing;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tcols: cols,\r\n\t\t\trows: rows,\r\n\t\t\tcellW: cellW,\r\n\t\t\tcellH: cellH,\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t};\r\n\t},\r\n\r\n\r\n\tgetControlPadding : function (thisObj) {\r\n\t\treturn Math.max(\r\n\t\t\tthisObj.padding / 2,\r\n\t\t\t(2 * thisObj.pointerBorderWidth + thisObj.pointerThickness) - thisObj.controlBorderWidth\r\n\t\t);\r\n\t},\r\n\r\n\r\n\tgetPadYChannel : function (thisObj) {\r\n\t\tswitch (thisObj.mode.charAt(1).toLowerCase()) {\r\n\t\t\tcase 'v': return 'v'; break;\r\n\t\t}\r\n\t\treturn 's';\r\n\t},\r\n\r\n\r\n\tgetSliderChannel : function (thisObj) {\r\n\t\tif (thisObj.mode.length > 2) {\r\n\t\t\tswitch (thisObj.mode.charAt(2).toLowerCase()) {\r\n\t\t\t\tcase 's': return 's'; break;\r\n\t\t\t\tcase 'v': return 'v'; break;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\r\n\t// calls function specified in picker's property\r\n\ttriggerCallback : function (thisObj, prop) {\r\n\t\tif (!thisObj[prop]) {\r\n\t\t\treturn; // callback func not specified\r\n\t\t}\r\n\t\tvar callback = null;\r\n\r\n\t\tif (typeof thisObj[prop] === 'string') {\r\n\t\t\t// string with code\r\n\t\t\ttry {\r\n\t\t\t\tcallback = new Function (thisObj[prop]);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// function\r\n\t\t\tcallback = thisObj[prop];\r\n\t\t}\r\n\r\n\t\tif (callback) {\r\n\t\t\tcallback.call(thisObj);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t// Triggers a color change related event(s) on all picker instances.\r\n\t// It is possible to specify multiple events separated with a space.\r\n\ttriggerGlobal : function (eventNames) {\r\n\t\tvar inst = jsc.getInstances();\r\n\t\tfor (var i = 0; i < inst.length; i += 1) {\r\n\t\t\tinst[i].trigger(eventNames);\r\n\t\t}\r\n\t},\r\n\r\n\r\n\t_pointerMoveEvent : {\r\n\t\tmouse: 'mousemove',\r\n\t\ttouch: 'touchmove'\r\n\t},\r\n\t_pointerEndEvent : {\r\n\t\tmouse: 'mouseup',\r\n\t\ttouch: 'touchend'\r\n\t},\r\n\r\n\r\n\t_pointerOrigin : null,\r\n\r\n\r\n\tonDocumentKeyUp : function (e) {\r\n\t\tif (['Tab', 'Escape'].indexOf(jsc.eventKey(e)) !== -1) {\r\n\t\t\tif (jsc.picker && jsc.picker.owner) {\r\n\t\t\t\tjsc.picker.owner.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonWindowResize : function (e) {\r\n\t\tjsc.redrawPosition();\r\n\t},\r\n\r\n\r\n\tonWindowScroll : function (e) {\r\n\t\tjsc.redrawPosition();\r\n\t},\r\n\r\n\r\n\tonParentScroll : function (e) {\r\n\t\t// hide the picker when one of the parent elements is scrolled\r\n\t\tif (jsc.picker && jsc.picker.owner) {\r\n\t\t\tjsc.picker.owner.tryHide();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonDocumentMouseDown : function (e) {\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tif (target.jscolor && target.jscolor instanceof jsc.pub) { // clicked targetElement -> show picker\r\n\t\t\tif (target.jscolor.showOnClick && !target.disabled) {\r\n\t\t\t\ttarget.jscolor.show();\r\n\t\t\t}\r\n\t\t} else if (jsc.getData(target, 'gui')) { // clicked jscolor's GUI element\r\n\t\t\tvar control = jsc.getData(target, 'control');\r\n\t\t\tif (control) {\r\n\t\t\t\t// jscolor's control\r\n\t\t\t\tjsc.onControlPointerStart(e, target, jsc.getData(target, 'control'), 'mouse');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// mouse is outside the picker's controls -> hide the color picker!\r\n\t\t\tif (jsc.picker && jsc.picker.owner) {\r\n\t\t\t\tjsc.picker.owner.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonPickerTouchStart : function (e) {\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tif (jsc.getData(target, 'control')) {\r\n\t\t\tjsc.onControlPointerStart(e, target, jsc.getData(target, 'control'), 'touch');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonControlPointerStart : function (e, target, controlName, pointerType) {\r\n\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\r\n\t\tjsc.preventDefault(e);\r\n\r\n\t\tvar registerDragEvents = function (doc, offset) {\r\n\t\t\tjsc.attachGroupEvent('drag', doc, jsc._pointerMoveEvent[pointerType],\r\n\t\t\t\tjsc.onDocumentPointerMove(e, target, controlName, pointerType, offset));\r\n\t\t\tjsc.attachGroupEvent('drag', doc, jsc._pointerEndEvent[pointerType],\r\n\t\t\t\tjsc.onDocumentPointerEnd(e, target, controlName, pointerType));\r\n\t\t};\r\n\r\n\t\tregisterDragEvents(window.document, [0, 0]);\r\n\r\n\t\tif (window.parent && window.frameElement) {\r\n\t\t\tvar rect = window.frameElement.getBoundingClientRect();\r\n\t\t\tvar ofs = [-rect.left, -rect.top];\r\n\t\t\tregisterDragEvents(window.parent.window.document, ofs);\r\n\t\t}\r\n\r\n\t\tvar abs = jsc.getAbsPointerPos(e);\r\n\t\tvar rel = jsc.getRelPointerPos(e);\r\n\t\tjsc._pointerOrigin = {\r\n\t\t\tx: abs.x - rel.x,\r\n\t\t\ty: abs.y - rel.y\r\n\t\t};\r\n\r\n\t\tswitch (controlName) {\r\n\t\tcase 'pad':\r\n\t\t\t// if the value slider is at the bottom, move it up\r\n\t\t\tif (jsc.getSliderChannel(thisObj) === 'v' && thisObj.channels.v === 0) {\r\n\t\t\t\tthisObj.fromHSVA(null, null, 100, null);\r\n\t\t\t}\r\n\t\t\tjsc.setPad(thisObj, e, 0, 0);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'sld':\r\n\t\t\tjsc.setSld(thisObj, e, 0);\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'asld':\r\n\t\t\tjsc.setASld(thisObj, e, 0);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tthisObj.trigger('input');\r\n\t},\r\n\r\n\r\n\tonDocumentPointerMove : function (e, target, controlName, pointerType, offset) {\r\n\t\treturn function (e) {\r\n\t\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\t\t\tswitch (controlName) {\r\n\t\t\tcase 'pad':\r\n\t\t\t\tjsc.setPad(thisObj, e, offset[0], offset[1]);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'sld':\r\n\t\t\t\tjsc.setSld(thisObj, e, offset[1]);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'asld':\r\n\t\t\t\tjsc.setASld(thisObj, e, offset[1]);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tthisObj.trigger('input');\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tonDocumentPointerEnd : function (e, target, controlName, pointerType) {\r\n\t\treturn function (e) {\r\n\t\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\t\t\tjsc.detachGroupEvents('drag');\r\n\r\n\t\t\t// Always trigger changes AFTER detaching outstanding mouse handlers,\r\n\t\t\t// in case some color change that occured in user-defined onChange/onInput handler\r\n\t\t\t// intruded into current mouse events\r\n\t\t\tthisObj.trigger('input');\r\n\t\t\tthisObj.trigger('change');\r\n\t\t};\r\n\t},\r\n\r\n\r\n\tonPaletteSampleClick : function (e) {\r\n\t\tvar target = e.currentTarget;\r\n\t\tvar thisObj = jsc.getData(target, 'instance');\r\n\t\tvar color = jsc.getData(target, 'color');\r\n\r\n\t\t// when format is flexible, use the original format of this color sample\r\n\t\tif (thisObj.format.toLowerCase() === 'any') {\r\n\t\t\tthisObj._setFormat(color.format); // adapt format\r\n\t\t\tif (!jsc.isAlphaFormat(thisObj.getFormat())) {\r\n\t\t\t\tcolor.rgba[3] = 1.0; // when switching to a format that doesn't support alpha, set full opacity\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if this color doesn't specify alpha, use alpha of 1.0 (if applicable)\r\n\t\tif (color.rgba[3] === null) {\r\n\t\t\tif (thisObj.paletteSetsAlpha === true || (thisObj.paletteSetsAlpha === 'auto' && thisObj._paletteHasTransparency)) {\r\n\t\t\t\tcolor.rgba[3] = 1.0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthisObj.fromRGBA.apply(thisObj, color.rgba);\r\n\r\n\t\tthisObj.trigger('input');\r\n\t\tthisObj.trigger('change');\r\n\r\n\t\tif (thisObj.hideOnPaletteClick) {\r\n\t\t\tthisObj.hide();\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tsetPad : function (thisObj, e, ofsX, ofsY) {\r\n\t\tvar pointerAbs = jsc.getAbsPointerPos(e);\r\n\t\tvar x = ofsX + pointerAbs.x - jsc._pointerOrigin.x - thisObj.padding - thisObj.controlBorderWidth;\r\n\t\tvar y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.controlBorderWidth;\r\n\r\n\t\tvar xVal = x * (360 / (thisObj.width - 1));\r\n\t\tvar yVal = 100 - (y * (100 / (thisObj.height - 1)));\r\n\r\n\t\tswitch (jsc.getPadYChannel(thisObj)) {\r\n\t\tcase 's': thisObj.fromHSVA(xVal, yVal, null, null); break;\r\n\t\tcase 'v': thisObj.fromHSVA(xVal, null, yVal, null); break;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tsetSld : function (thisObj, e, ofsY) {\r\n\t\tvar pointerAbs = jsc.getAbsPointerPos(e);\r\n\t\tvar y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.controlBorderWidth;\r\n\t\tvar yVal = 100 - (y * (100 / (thisObj.height - 1)));\r\n\r\n\t\tswitch (jsc.getSliderChannel(thisObj)) {\r\n\t\tcase 's': thisObj.fromHSVA(null, yVal, null, null); break;\r\n\t\tcase 'v': thisObj.fromHSVA(null, null, yVal, null); break;\r\n\t\t}\r\n\t},\r\n\r\n\r\n\tsetASld : function (thisObj, e, ofsY) {\r\n\t\tvar pointerAbs = jsc.getAbsPointerPos(e);\r\n\t\tvar y = ofsY + pointerAbs.y - jsc._pointerOrigin.y - thisObj.padding - thisObj.controlBorderWidth;\r\n\t\tvar yVal = 1.0 - (y * (1.0 / (thisObj.height - 1)));\r\n\r\n\t\tif (yVal < 1.0) {\r\n\t\t\t// if format is flexible and the current format doesn't support alpha, switch to a suitable one\r\n\t\t\tvar fmt = thisObj.getFormat();\r\n\t\t\tif (thisObj.format.toLowerCase() === 'any' && !jsc.isAlphaFormat(fmt)) {\r\n\t\t\t\tthisObj._setFormat(fmt === 'hex' ? 'hexa' : 'rgba');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthisObj.fromHSVA(null, null, null, yVal);\r\n\t},\r\n\r\n\r\n\tcreatePadCanvas : function () {\r\n\r\n\t\tvar ret = {\r\n\t\t\telm: null,\r\n\t\t\tdraw: null\r\n\t\t};\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tvar drawFunc = function (width, height, type) {\r\n\t\t\tcanvas.width = width;\r\n\t\t\tcanvas.height = height;\r\n\r\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar hGrad = ctx.createLinearGradient(0, 0, canvas.width, 0);\r\n\t\t\thGrad.addColorStop(0 / 6, '#F00');\r\n\t\t\thGrad.addColorStop(1 / 6, '#FF0');\r\n\t\t\thGrad.addColorStop(2 / 6, '#0F0');\r\n\t\t\thGrad.addColorStop(3 / 6, '#0FF');\r\n\t\t\thGrad.addColorStop(4 / 6, '#00F');\r\n\t\t\thGrad.addColorStop(5 / 6, '#F0F');\r\n\t\t\thGrad.addColorStop(6 / 6, '#F00');\r\n\r\n\t\t\tctx.fillStyle = hGrad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar vGrad = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n\t\t\tswitch (type.toLowerCase()) {\r\n\t\t\tcase 's':\r\n\t\t\t\tvGrad.addColorStop(0, 'rgba(255,255,255,0)');\r\n\t\t\t\tvGrad.addColorStop(1, 'rgba(255,255,255,1)');\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'v':\r\n\t\t\t\tvGrad.addColorStop(0, 'rgba(0,0,0,0)');\r\n\t\t\t\tvGrad.addColorStop(1, 'rgba(0,0,0,1)');\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tctx.fillStyle = vGrad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t};\r\n\r\n\t\tret.elm = canvas;\r\n\t\tret.draw = drawFunc;\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\r\n\tcreateSliderGradient : function () {\r\n\r\n\t\tvar ret = {\r\n\t\t\telm: null,\r\n\t\t\tdraw: null\r\n\t\t};\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tvar drawFunc = function (width, height, color1, color2) {\r\n\t\t\tcanvas.width = width;\r\n\t\t\tcanvas.height = height;\r\n\r\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar grad = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n\t\t\tgrad.addColorStop(0, color1);\r\n\t\t\tgrad.addColorStop(1, color2);\r\n\r\n\t\t\tctx.fillStyle = grad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t};\r\n\r\n\t\tret.elm = canvas;\r\n\t\tret.draw = drawFunc;\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\r\n\tcreateASliderGradient : function () {\r\n\r\n\t\tvar ret = {\r\n\t\t\telm: null,\r\n\t\t\tdraw: null\r\n\t\t};\r\n\r\n\t\tvar canvas = jsc.createEl('canvas');\r\n\t\tvar ctx = canvas.getContext('2d');\r\n\r\n\t\tvar drawFunc = function (width, height, color) {\r\n\t\t\tcanvas.width = width;\r\n\t\t\tcanvas.height = height;\r\n\r\n\t\t\tctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tvar sqSize = canvas.width / 2;\r\n\t\t\tvar sqColor1 = jsc.pub.chessboardColor1;\r\n\t\t\tvar sqColor2 = jsc.pub.chessboardColor2;\r\n\r\n\t\t\t// dark gray background\r\n\t\t\tctx.fillStyle = sqColor1;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\r\n\t\t\tif (sqSize > 0) { // to avoid infinite loop\r\n\t\t\t\tfor (var y = 0; y < canvas.height; y += sqSize * 2) {\r\n\t\t\t\t\t// light gray squares\r\n\t\t\t\t\tctx.fillStyle = sqColor2;\r\n\t\t\t\t\tctx.fillRect(0, y, sqSize, sqSize);\r\n\t\t\t\t\tctx.fillRect(sqSize, y + sqSize, sqSize, sqSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar grad = ctx.createLinearGradient(0, 0, 0, canvas.height);\r\n\t\t\tgrad.addColorStop(0, color);\r\n\t\t\tgrad.addColorStop(1, 'rgba(0,0,0,0)');\r\n\r\n\t\t\tctx.fillStyle = grad;\r\n\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\r\n\t\t};\r\n\r\n\t\tret.elm = canvas;\r\n\t\tret.draw = drawFunc;\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\r\n\tBoxShadow : (function () {\r\n\t\tvar BoxShadow = function (hShadow, vShadow, blur, spread, color, inset) {\r\n\t\t\tthis.hShadow = hShadow;\r\n\t\t\tthis.vShadow = vShadow;\r\n\t\t\tthis.blur = blur;\r\n\t\t\tthis.spread = spread;\r\n\t\t\tthis.color = color;\r\n\t\t\tthis.inset = !!inset;\r\n\t\t};\r\n\r\n\t\tBoxShadow.prototype.toString = function () {\r\n\t\t\tvar vals = [\r\n\t\t\t\tMath.round(this.hShadow) + 'px',\r\n\t\t\t\tMath.round(this.vShadow) + 'px',\r\n\t\t\t\tMath.round(this.blur) + 'px',\r\n\t\t\t\tMath.round(this.spread) + 'px',\r\n\t\t\t\tthis.color\r\n\t\t\t];\r\n\t\t\tif (this.inset) {\r\n\t\t\t\tvals.push('inset');\r\n\t\t\t}\r\n\t\t\treturn vals.join(' ');\r\n\t\t};\r\n\r\n\t\treturn BoxShadow;\r\n\t})(),\r\n\r\n\r\n\tflags : {\r\n\t\tleaveValue : 1 << 0,\r\n\t\tleaveAlpha : 1 << 1,\r\n\t\tleavePreview : 1 << 2,\r\n\t},\r\n\r\n\r\n\tenumOpts : {\r\n\t\tformat: ['auto', 'any', 'hex', 'hexa', 'rgb', 'rgba'],\r\n\t\tpreviewPosition: ['left', 'right'],\r\n\t\tmode: ['hsv', 'hvs', 'hs', 'hv'],\r\n\t\tposition: ['left', 'right', 'top', 'bottom'],\r\n\t\talphaChannel: ['auto', true, false],\r\n\t\tpaletteSetsAlpha: ['auto', true, false],\r\n\t},\r\n\r\n\r\n\tdeprecatedOpts : {\r\n\t\t// : ( can be null)\r\n\t\t'styleElement': 'previewElement',\r\n\t\t'onFineChange': 'onInput',\r\n\t\t'overwriteImportant': 'forceStyle',\r\n\t\t'closable': 'closeButton',\r\n\t\t'insetWidth': 'controlBorderWidth',\r\n\t\t'insetColor': 'controlBorderColor',\r\n\t\t'refine': null,\r\n\t},\r\n\r\n\r\n\tdocsRef : ' ' + 'See https://jscolor.com/docs/',\r\n\r\n\r\n\t//\r\n\t// Usage:\r\n\t// var myPicker = new JSColor( [, ])\r\n\t//\r\n\t// (constructor is accessible via both 'jscolor' and 'JSColor' name)\r\n\t//\r\n\r\n\tpub : function (targetElement, opts) {\r\n\r\n\t\tvar THIS = this;\r\n\r\n\t\tif (!opts) {\r\n\t\t\topts = {};\r\n\t\t}\r\n\r\n\t\tthis.channels = {\r\n\t\t\tr: 255, // red [0-255]\r\n\t\t\tg: 255, // green [0-255]\r\n\t\t\tb: 255, // blue [0-255]\r\n\t\t\th: 0, // hue [0-360]\r\n\t\t\ts: 0, // saturation [0-100]\r\n\t\t\tv: 100, // value (brightness) [0-100]\r\n\t\t\ta: 1.0, // alpha (opacity) [0.0 - 1.0]\r\n\t\t};\r\n\r\n\t\t// General options\r\n\t\t//\r\n\t\tthis.format = 'auto'; // 'auto' | 'any' | 'hex' | 'hexa' | 'rgb' | 'rgba' - Format of the input/output value\r\n\t\tthis.value = undefined; // INITIAL color value in any supported format. To change it later, use method fromString(), fromHSVA(), fromRGBA() or channel()\r\n\t\tthis.alpha = undefined; // INITIAL alpha value. To change it later, call method channel('A', )\r\n\t\tthis.random = false; // whether to randomize the initial color. Either true | false, or an array of ranges: [minV, maxV, minS, maxS, minH, maxH, minA, maxA]\r\n\t\tthis.onChange = undefined; // called when color changes. Value can be either a function or a string with JS code.\r\n\t\tthis.onInput = undefined; // called repeatedly as the color is being changed, e.g. while dragging a slider. Value can be either a function or a string with JS code.\r\n\t\tthis.valueElement = undefined; // element that will be used to display and input the color value\r\n\t\tthis.alphaElement = undefined; // element that will be used to display and input the alpha (opacity) value\r\n\t\tthis.previewElement = undefined; // element that will preview the picked color using CSS background\r\n\t\tthis.previewPosition = 'left'; // 'left' | 'right' - position of the color preview in previewElement\r\n\t\tthis.previewSize = 32; // (px) width of the color preview displayed in previewElement\r\n\t\tthis.previewPadding = 8; // (px) space between color preview and content of the previewElement\r\n\t\tthis.required = true; // whether the associated text input must always contain a color value. If false, the input can be left empty.\r\n\t\tthis.hash = true; // whether to prefix the HEX color code with # symbol (only applicable for HEX format)\r\n\t\tthis.uppercase = true; // whether to show the HEX color code in upper case (only applicable for HEX format)\r\n\t\tthis.forceStyle = true; // whether to overwrite CSS style of the previewElement using !important flag\r\n\r\n\t\t// Color Picker options\r\n\t\t//\r\n\t\tthis.width = 181; // width of the color spectrum (in px)\r\n\t\tthis.height = 101; // height of the color spectrum (in px)\r\n\t\tthis.mode = 'HSV'; // 'HSV' | 'HVS' | 'HS' | 'HV' - layout of the color picker controls\r\n\t\tthis.alphaChannel = 'auto'; // 'auto' | true | false - if alpha channel is enabled, the alpha slider will be visible. If 'auto', it will be determined according to color format\r\n\t\tthis.position = 'bottom'; // 'left' | 'right' | 'top' | 'bottom' - position relative to the target element\r\n\t\tthis.smartPosition = true; // automatically change picker position when there is not enough space for it\r\n\t\tthis.showOnClick = true; // whether to show the picker when user clicks its target element\r\n\t\tthis.hideOnLeave = true; // whether to automatically hide the picker when user leaves its target element (e.g. upon clicking the document)\r\n\t\tthis.palette = []; // colors to be displayed in the palette, specified as an array or a string of space separated color values (in any supported format)\r\n\t\tthis.paletteCols = 10; // number of columns in the palette\r\n\t\tthis.paletteSetsAlpha = 'auto'; // 'auto' | true | false - if true, palette colors that don't specify alpha will set alpha to 1.0\r\n\t\tthis.paletteHeight = 16; // maximum height (px) of a row in the palette\r\n\t\tthis.paletteSpacing = 4; // distance (px) between color samples in the palette\r\n\t\tthis.hideOnPaletteClick = false; // when set to true, clicking the palette will also hide the color picker\r\n\t\tthis.sliderSize = 16; // px\r\n\t\tthis.crossSize = 8; // px\r\n\t\tthis.closeButton = false; // whether to display the Close button\r\n\t\tthis.closeText = 'Close';\r\n\t\tthis.buttonColor = 'rgba(0,0,0,1)'; // CSS color\r\n\t\tthis.buttonHeight = 18; // px\r\n\t\tthis.padding = 12; // px\r\n\t\tthis.backgroundColor = 'rgba(255,255,255,1)'; // CSS color\r\n\t\tthis.borderWidth = 1; // px\r\n\t\tthis.borderColor = 'rgba(187,187,187,1)'; // CSS color\r\n\t\tthis.borderRadius = 8; // px\r\n\t\tthis.controlBorderWidth = 1; // px\r\n\t\tthis.controlBorderColor = 'rgba(187,187,187,1)'; // CSS color\r\n\t\tthis.shadow = true; // whether to display a shadow\r\n\t\tthis.shadowBlur = 15; // px\r\n\t\tthis.shadowColor = 'rgba(0,0,0,0.2)'; // CSS color\r\n\t\tthis.pointerColor = 'rgba(76,76,76,1)'; // CSS color\r\n\t\tthis.pointerBorderWidth = 1; // px\r\n\t\tthis.pointerBorderColor = 'rgba(255,255,255,1)'; // CSS color\r\n\t\tthis.pointerThickness = 2; // px\r\n\t\tthis.zIndex = 5000;\r\n\t\tthis.container = undefined; // where to append the color picker (BODY element by default)\r\n\r\n\t\t// Experimental\r\n\t\t//\r\n\t\tthis.minS = 0; // min allowed saturation (0 - 100)\r\n\t\tthis.maxS = 100; // max allowed saturation (0 - 100)\r\n\t\tthis.minV = 0; // min allowed value (brightness) (0 - 100)\r\n\t\tthis.maxV = 100; // max allowed value (brightness) (0 - 100)\r\n\t\tthis.minA = 0.0; // min allowed alpha (opacity) (0.0 - 1.0)\r\n\t\tthis.maxA = 1.0; // max allowed alpha (opacity) (0.0 - 1.0)\r\n\r\n\r\n\t\t// Getter: option(name)\r\n\t\t// Setter: option(name, value)\r\n\t\t// option({name:value, ...})\r\n\t\t//\r\n\t\tthis.option = function () {\r\n\t\t\tif (!arguments.length) {\r\n\t\t\t\tthrow new Error('No option specified');\r\n\t\t\t}\r\n\r\n\t\t\tif (arguments.length === 1 && typeof arguments[0] === 'string') {\r\n\t\t\t\t// getting a single option\r\n\t\t\t\ttry {\r\n\t\t\t\t\treturn getOption(arguments[0]);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t} else if (arguments.length >= 2 && typeof arguments[0] === 'string') {\r\n\t\t\t\t// setting a single option\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (!setOption(arguments[0], arguments[1])) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.redraw(); // immediately redraws the picker, if it's displayed\r\n\t\t\t\tthis.exposeColor(); // in case some preview-related or format-related option was changed\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t} else if (arguments.length === 1 && typeof arguments[0] === 'object') {\r\n\t\t\t\t// setting multiple options\r\n\t\t\t\tvar opts = arguments[0];\r\n\t\t\t\tvar success = true;\r\n\t\t\t\tfor (var opt in opts) {\r\n\t\t\t\t\tif (opts.hasOwnProperty(opt)) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tif (!setOption(opt, opts[opt])) {\r\n\t\t\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t\t\tsuccess = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.redraw(); // immediately redraws the picker, if it's displayed\r\n\t\t\t\tthis.exposeColor(); // in case some preview-related or format-related option was changed\r\n\t\t\t\treturn success;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Invalid arguments');\r\n\t\t}\r\n\r\n\r\n\t\t// Getter: channel(name)\r\n\t\t// Setter: channel(name, value)\r\n\t\t//\r\n\t\tthis.channel = function (name, value) {\r\n\t\t\tif (typeof name !== 'string') {\r\n\t\t\t\tthrow new Error('Invalid value for channel name: ' + name);\r\n\t\t\t}\r\n\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\t// getting channel value\r\n\t\t\t\tif (!this.channels.hasOwnProperty(name.toLowerCase())) {\r\n\t\t\t\t\tconsole.warn('Getting unknown channel: ' + name);\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn this.channels[name.toLowerCase()];\r\n\r\n\t\t\t} else {\r\n\t\t\t\t// setting channel value\r\n\t\t\t\tvar res = false;\r\n\t\t\t\tswitch (name.toLowerCase()) {\r\n\t\t\t\t\tcase 'r': res = this.fromRGBA(value, null, null, null); break;\r\n\t\t\t\t\tcase 'g': res = this.fromRGBA(null, value, null, null); break;\r\n\t\t\t\t\tcase 'b': res = this.fromRGBA(null, null, value, null); break;\r\n\t\t\t\t\tcase 'h': res = this.fromHSVA(value, null, null, null); break;\r\n\t\t\t\t\tcase 's': res = this.fromHSVA(null, value, null, null); break;\r\n\t\t\t\t\tcase 'v': res = this.fromHSVA(null, null, value, null); break;\r\n\t\t\t\t\tcase 'a': res = this.fromHSVA(null, null, null, value); break;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tconsole.warn('Setting unknown channel: ' + name);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif (res) {\r\n\t\t\t\t\tthis.redraw(); // immediately redraws the picker, if it's displayed\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\t// Triggers given input event(s) by:\r\n\t\t// - executing on callback specified as picker's option\r\n\t\t// - triggering standard DOM event listeners attached to the value element\r\n\t\t//\r\n\t\t// It is possible to specify multiple events separated with a space.\r\n\t\t//\r\n\t\tthis.trigger = function (eventNames) {\r\n\t\t\tvar evs = jsc.strList(eventNames);\r\n\t\t\tfor (var i = 0; i < evs.length; i += 1) {\r\n\t\t\t\tvar ev = evs[i].toLowerCase();\r\n\r\n\t\t\t\t// trigger a callback\r\n\t\t\t\tvar callbackProp = null;\r\n\t\t\t\tswitch (ev) {\r\n\t\t\t\t\tcase 'input': callbackProp = 'onInput'; break;\r\n\t\t\t\t\tcase 'change': callbackProp = 'onChange'; break;\r\n\t\t\t\t}\r\n\t\t\t\tif (callbackProp) {\r\n\t\t\t\t\tjsc.triggerCallback(this, callbackProp);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// trigger standard DOM event listeners on the value element\r\n\t\t\t\tjsc.triggerInputEvent(this.valueElement, ev, true, true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\t// h: 0-360\r\n\t\t// s: 0-100\r\n\t\t// v: 0-100\r\n\t\t// a: 0.0-1.0\r\n\t\t//\r\n\t\tthis.fromHSVA = function (h, s, v, a, flags) { // null = don't change\r\n\t\t\tif (h === undefined) { h = null; }\r\n\t\t\tif (s === undefined) { s = null; }\r\n\t\t\tif (v === undefined) { v = null; }\r\n\t\t\tif (a === undefined) { a = null; }\r\n\r\n\t\t\tif (h !== null) {\r\n\t\t\t\tif (isNaN(h)) { return false; }\r\n\t\t\t\tthis.channels.h = Math.max(0, Math.min(360, h));\r\n\t\t\t}\r\n\t\t\tif (s !== null) {\r\n\t\t\t\tif (isNaN(s)) { return false; }\r\n\t\t\t\tthis.channels.s = Math.max(0, Math.min(100, this.maxS, s), this.minS);\r\n\t\t\t}\r\n\t\t\tif (v !== null) {\r\n\t\t\t\tif (isNaN(v)) { return false; }\r\n\t\t\t\tthis.channels.v = Math.max(0, Math.min(100, this.maxV, v), this.minV);\r\n\t\t\t}\r\n\t\t\tif (a !== null) {\r\n\t\t\t\tif (isNaN(a)) { return false; }\r\n\t\t\t\tthis.channels.a = this.hasAlphaChannel() ?\r\n\t\t\t\t\tMath.max(0, Math.min(1, this.maxA, a), this.minA) :\r\n\t\t\t\t\t1.0; // if alpha channel is disabled, the color should stay 100% opaque\r\n\t\t\t}\r\n\r\n\t\t\tvar rgb = jsc.HSV_RGB(\r\n\t\t\t\tthis.channels.h,\r\n\t\t\t\tthis.channels.s,\r\n\t\t\t\tthis.channels.v\r\n\t\t\t);\r\n\t\t\tthis.channels.r = rgb[0];\r\n\t\t\tthis.channels.g = rgb[1];\r\n\t\t\tthis.channels.b = rgb[2];\r\n\r\n\t\t\tthis.exposeColor(flags);\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\r\n\t\t// r: 0-255\r\n\t\t// g: 0-255\r\n\t\t// b: 0-255\r\n\t\t// a: 0.0-1.0\r\n\t\t//\r\n\t\tthis.fromRGBA = function (r, g, b, a, flags) { // null = don't change\r\n\t\t\tif (r === undefined) { r = null; }\r\n\t\t\tif (g === undefined) { g = null; }\r\n\t\t\tif (b === undefined) { b = null; }\r\n\t\t\tif (a === undefined) { a = null; }\r\n\r\n\t\t\tif (r !== null) {\r\n\t\t\t\tif (isNaN(r)) { return false; }\r\n\t\t\t\tr = Math.max(0, Math.min(255, r));\r\n\t\t\t}\r\n\t\t\tif (g !== null) {\r\n\t\t\t\tif (isNaN(g)) { return false; }\r\n\t\t\t\tg = Math.max(0, Math.min(255, g));\r\n\t\t\t}\r\n\t\t\tif (b !== null) {\r\n\t\t\t\tif (isNaN(b)) { return false; }\r\n\t\t\t\tb = Math.max(0, Math.min(255, b));\r\n\t\t\t}\r\n\t\t\tif (a !== null) {\r\n\t\t\t\tif (isNaN(a)) { return false; }\r\n\t\t\t\tthis.channels.a = this.hasAlphaChannel() ?\r\n\t\t\t\t\tMath.max(0, Math.min(1, this.maxA, a), this.minA) :\r\n\t\t\t\t\t1.0; // if alpha channel is disabled, the color should stay 100% opaque\r\n\t\t\t}\r\n\r\n\t\t\tvar hsv = jsc.RGB_HSV(\r\n\t\t\t\tr===null ? this.channels.r : r,\r\n\t\t\t\tg===null ? this.channels.g : g,\r\n\t\t\t\tb===null ? this.channels.b : b\r\n\t\t\t);\r\n\t\t\tif (hsv[0] !== null) {\r\n\t\t\t\tthis.channels.h = Math.max(0, Math.min(360, hsv[0]));\r\n\t\t\t}\r\n\t\t\tif (hsv[2] !== 0) { // fully black color stays black through entire saturation range, so let's not change saturation\r\n\t\t\t\tthis.channels.s = Math.max(0, this.minS, Math.min(100, this.maxS, hsv[1]));\r\n\t\t\t}\r\n\t\t\tthis.channels.v = Math.max(0, this.minV, Math.min(100, this.maxV, hsv[2]));\r\n\r\n\t\t\t// update RGB according to final HSV, as some values might be trimmed\r\n\t\t\tvar rgb = jsc.HSV_RGB(this.channels.h, this.channels.s, this.channels.v);\r\n\t\t\tthis.channels.r = rgb[0];\r\n\t\t\tthis.channels.g = rgb[1];\r\n\t\t\tthis.channels.b = rgb[2];\r\n\r\n\t\t\tthis.exposeColor(flags);\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\r\n\t\t// DEPRECATED. Use .fromHSVA() instead\r\n\t\t//\r\n\t\tthis.fromHSV = function (h, s, v, flags) {\r\n\t\t\tconsole.warn('fromHSV() method is DEPRECATED. Using fromHSVA() instead.' + jsc.docsRef);\r\n\t\t\treturn this.fromHSVA(h, s, v, null, flags);\r\n\t\t};\r\n\r\n\r\n\t\t// DEPRECATED. Use .fromRGBA() instead\r\n\t\t//\r\n\t\tthis.fromRGB = function (r, g, b, flags) {\r\n\t\t\tconsole.warn('fromRGB() method is DEPRECATED. Using fromRGBA() instead.' + jsc.docsRef);\r\n\t\t\treturn this.fromRGBA(r, g, b, null, flags);\r\n\t\t};\r\n\r\n\r\n\t\tthis.fromString = function (str, flags) {\r\n\t\t\tif (!this.required && str.trim() === '') {\r\n\t\t\t\t// setting empty string to an optional color input\r\n\t\t\t\tthis.setPreviewElementBg(null);\r\n\t\t\t\tthis.setValueElementValue('');\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tvar color = jsc.parseColorString(str);\r\n\t\t\tif (!color) {\r\n\t\t\t\treturn false; // could not parse\r\n\t\t\t}\r\n\t\t\tif (this.format.toLowerCase() === 'any') {\r\n\t\t\t\tthis._setFormat(color.format); // adapt format\r\n\t\t\t\tif (!jsc.isAlphaFormat(this.getFormat())) {\r\n\t\t\t\t\tcolor.rgba[3] = 1.0; // when switching to a format that doesn't support alpha, set full opacity\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.fromRGBA(\r\n\t\t\t\tcolor.rgba[0],\r\n\t\t\t\tcolor.rgba[1],\r\n\t\t\t\tcolor.rgba[2],\r\n\t\t\t\tcolor.rgba[3],\r\n\t\t\t\tflags\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\r\n\t\tthis.randomize = function (minV, maxV, minS, maxS, minH, maxH, minA, maxA) {\r\n\t\t\tif (minV === undefined) { minV = 0; }\r\n\t\t\tif (maxV === undefined) { maxV = 100; }\r\n\t\t\tif (minS === undefined) { minS = 0; }\r\n\t\t\tif (maxS === undefined) { maxS = 100; }\r\n\t\t\tif (minH === undefined) { minH = 0; }\r\n\t\t\tif (maxH === undefined) { maxH = 359; }\r\n\t\t\tif (minA === undefined) { minA = 1; }\r\n\t\t\tif (maxA === undefined) { maxA = 1; }\r\n\r\n\t\t\tthis.fromHSVA(\r\n\t\t\t\tminH + Math.floor(Math.random() * (maxH - minH + 1)),\r\n\t\t\t\tminS + Math.floor(Math.random() * (maxS - minS + 1)),\r\n\t\t\t\tminV + Math.floor(Math.random() * (maxV - minV + 1)),\r\n\t\t\t\t((100 * minA) + Math.floor(Math.random() * (100 * (maxA - minA) + 1))) / 100\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toString = function (format) {\r\n\t\t\tif (format === undefined) {\r\n\t\t\t\tformat = this.getFormat(); // format not specified -> use the current format\r\n\t\t\t}\r\n\t\t\tswitch (format.toLowerCase()) {\r\n\t\t\t\tcase 'hex': return this.toHEXString(); break;\r\n\t\t\t\tcase 'hexa': return this.toHEXAString(); break;\r\n\t\t\t\tcase 'rgb': return this.toRGBString(); break;\r\n\t\t\t\tcase 'rgba': return this.toRGBAString(); break;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\r\n\t\tthis.toHEXString = function () {\r\n\t\t\treturn jsc.hexColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toHEXAString = function () {\r\n\t\t\treturn jsc.hexaColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b,\r\n\t\t\t\tthis.channels.a\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toRGBString = function () {\r\n\t\t\treturn jsc.rgbColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toRGBAString = function () {\r\n\t\t\treturn jsc.rgbaColor(\r\n\t\t\t\tthis.channels.r,\r\n\t\t\t\tthis.channels.g,\r\n\t\t\t\tthis.channels.b,\r\n\t\t\t\tthis.channels.a\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toGrayscale = function () {\r\n\t\t\treturn (\r\n\t\t\t\t0.213 * this.channels.r +\r\n\t\t\t\t0.715 * this.channels.g +\r\n\t\t\t\t0.072 * this.channels.b\r\n\t\t\t);\r\n\t\t};\r\n\r\n\r\n\t\tthis.toCanvas = function () {\r\n\t\t\treturn jsc.genColorPreviewCanvas(this.toRGBAString()).canvas;\r\n\t\t};\r\n\r\n\r\n\t\tthis.toDataURL = function () {\r\n\t\t\treturn this.toCanvas().toDataURL();\r\n\t\t};\r\n\r\n\r\n\t\tthis.toBackground = function () {\r\n\t\t\treturn jsc.pub.background(this.toRGBAString());\r\n\t\t};\r\n\r\n\r\n\t\tthis.isLight = function () {\r\n\t\t\treturn this.toGrayscale() > 255 / 2;\r\n\t\t};\r\n\r\n\r\n\t\tthis.hide = function () {\r\n\t\t\tif (isPickerOwner()) {\r\n\t\t\t\tdetachPicker();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.show = function () {\r\n\t\t\tdrawPicker();\r\n\t\t};\r\n\r\n\r\n\t\tthis.redraw = function () {\r\n\t\t\tif (isPickerOwner()) {\r\n\t\t\t\tdrawPicker();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.getFormat = function () {\r\n\t\t\treturn this._currentFormat;\r\n\t\t};\r\n\r\n\r\n\t\tthis._setFormat = function (format) {\r\n\t\t\tthis._currentFormat = format.toLowerCase();\r\n\t\t};\r\n\r\n\r\n\t\tthis.hasAlphaChannel = function () {\r\n\t\t\tif (this.alphaChannel === 'auto') {\r\n\t\t\t\treturn (\r\n\t\t\t\t\tthis.format.toLowerCase() === 'any' || // format can change on the fly (e.g. from hex to rgba), so let's consider the alpha channel enabled\r\n\t\t\t\t\tjsc.isAlphaFormat(this.getFormat()) || // the current format supports alpha channel\r\n\t\t\t\t\tthis.alpha !== undefined || // initial alpha value is set, so we're working with alpha channel\r\n\t\t\t\t\tthis.alphaElement !== undefined // the alpha value is redirected, so we're working with alpha channel\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\treturn this.alphaChannel; // the alpha channel is explicitly set\r\n\t\t};\r\n\r\n\r\n\t\tthis.processValueInput = function (str) {\r\n\t\t\tif (!this.fromString(str)) {\r\n\t\t\t\t// could not parse the color value - let's just expose the current color\r\n\t\t\t\tthis.exposeColor();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.processAlphaInput = function (str) {\r\n\t\t\tif (!this.fromHSVA(null, null, null, parseFloat(str))) {\r\n\t\t\t\t// could not parse the alpha value - let's just expose the current color\r\n\t\t\t\tthis.exposeColor();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.exposeColor = function (flags) {\r\n\t\t\tvar colorStr = this.toString();\r\n\t\t\tvar fmt = this.getFormat();\r\n\r\n\t\t\t// reflect current color in data- attribute\r\n\t\t\tjsc.setDataAttr(this.targetElement, 'current-color', colorStr);\r\n\r\n\t\t\tif (!(flags & jsc.flags.leaveValue) && this.valueElement) {\r\n\t\t\t\tif (fmt === 'hex' || fmt === 'hexa') {\r\n\t\t\t\t\tif (!this.uppercase) { colorStr = colorStr.toLowerCase(); }\r\n\t\t\t\t\tif (!this.hash) { colorStr = colorStr.replace(/^#/, ''); }\r\n\t\t\t\t}\r\n\t\t\t\tthis.setValueElementValue(colorStr);\r\n\t\t\t}\r\n\r\n\t\t\tif (!(flags & jsc.flags.leaveAlpha) && this.alphaElement) {\r\n\t\t\t\tvar alphaVal = Math.round(this.channels.a * 100) / 100;\r\n\t\t\t\tthis.setAlphaElementValue(alphaVal);\r\n\t\t\t}\r\n\r\n\t\t\tif (!(flags & jsc.flags.leavePreview) && this.previewElement) {\r\n\t\t\t\tvar previewPos = null; // 'left' | 'right' (null -> fill the entire element)\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\tjsc.isTextInput(this.previewElement) || // text input\r\n\t\t\t\t\t(jsc.isButton(this.previewElement) && !jsc.isButtonEmpty(this.previewElement)) // button with text\r\n\t\t\t\t) {\r\n\t\t\t\t\tpreviewPos = this.previewPosition;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setPreviewElementBg(this.toRGBAString());\r\n\t\t\t}\r\n\r\n\t\t\tif (isPickerOwner()) {\r\n\t\t\t\tredrawPad();\r\n\t\t\t\tredrawSld();\r\n\t\t\t\tredrawASld();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.setPreviewElementBg = function (color) {\r\n\t\t\tif (!this.previewElement) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar position = null; // color preview position: null | 'left' | 'right'\r\n\t\t\tvar width = null; // color preview width: px | null = fill the entire element\r\n\t\t\tif (\r\n\t\t\t\tjsc.isTextInput(this.previewElement) || // text input\r\n\t\t\t\t(jsc.isButton(this.previewElement) && !jsc.isButtonEmpty(this.previewElement)) // button with text\r\n\t\t\t) {\r\n\t\t\t\tposition = this.previewPosition;\r\n\t\t\t\twidth = this.previewSize;\r\n\t\t\t}\r\n\r\n\t\t\tvar backgrounds = [];\r\n\r\n\t\t\tif (!color) {\r\n\t\t\t\t// there is no color preview to display -> let's remove any previous background image\r\n\t\t\t\tbackgrounds.push({\r\n\t\t\t\t\timage: 'none',\r\n\t\t\t\t\tposition: 'left top',\r\n\t\t\t\t\tsize: 'auto',\r\n\t\t\t\t\trepeat: 'no-repeat',\r\n\t\t\t\t\torigin: 'padding-box',\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\t// CSS gradient for background color preview\r\n\t\t\t\tbackgrounds.push({\r\n\t\t\t\t\timage: jsc.genColorPreviewGradient(\r\n\t\t\t\t\t\tcolor,\r\n\t\t\t\t\t\tposition,\r\n\t\t\t\t\t\twidth ? width - jsc.pub.previewSeparator.length : null\r\n\t\t\t\t\t),\r\n\t\t\t\t\tposition: 'left top',\r\n\t\t\t\t\tsize: 'auto',\r\n\t\t\t\t\trepeat: position ? 'repeat-y' : 'repeat',\r\n\t\t\t\t\torigin: 'padding-box',\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// data URL of generated PNG image with a gray transparency chessboard\r\n\t\t\t\tvar preview = jsc.genColorPreviewCanvas(\r\n\t\t\t\t\t'rgba(0,0,0,0)',\r\n\t\t\t\t\tposition ? {'left':'right', 'right':'left'}[position] : null,\r\n\t\t\t\t\twidth,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t\tbackgrounds.push({\r\n\t\t\t\t\timage: 'url(\\'' + preview.canvas.toDataURL() + '\\')',\r\n\t\t\t\t\tposition: (position || 'left') + ' top',\r\n\t\t\t\t\tsize: preview.width + 'px ' + preview.height + 'px',\r\n\t\t\t\t\trepeat: position ? 'repeat-y' : 'repeat',\r\n\t\t\t\t\torigin: 'padding-box',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvar bg = {\r\n\t\t\t\timage: [],\r\n\t\t\t\tposition: [],\r\n\t\t\t\tsize: [],\r\n\t\t\t\trepeat: [],\r\n\t\t\t\torigin: [],\r\n\t\t\t};\r\n\t\t\tfor (var i = 0; i < backgrounds.length; i += 1) {\r\n\t\t\t\tbg.image.push(backgrounds[i].image);\r\n\t\t\t\tbg.position.push(backgrounds[i].position);\r\n\t\t\t\tbg.size.push(backgrounds[i].size);\r\n\t\t\t\tbg.repeat.push(backgrounds[i].repeat);\r\n\t\t\t\tbg.origin.push(backgrounds[i].origin);\r\n\t\t\t}\r\n\r\n\t\t\t// set previewElement's background-images\r\n\t\t\tvar sty = {\r\n\t\t\t\t'background-image': bg.image.join(', '),\r\n\t\t\t\t'background-position': bg.position.join(', '),\r\n\t\t\t\t'background-size': bg.size.join(', '),\r\n\t\t\t\t'background-repeat': bg.repeat.join(', '),\r\n\t\t\t\t'background-origin': bg.origin.join(', '),\r\n\t\t\t};\r\n\t\t\tjsc.setStyle(this.previewElement, sty, this.forceStyle);\r\n\r\n\r\n\t\t\t// set/restore previewElement's padding\r\n\t\t\tvar padding = {\r\n\t\t\t\tleft: null,\r\n\t\t\t\tright: null,\r\n\t\t\t};\r\n\t\t\tif (position) {\r\n\t\t\t\tpadding[position] = (this.previewSize + this.previewPadding) + 'px';\r\n\t\t\t}\r\n\r\n\t\t\tvar sty = {\r\n\t\t\t\t'padding-left': padding.left,\r\n\t\t\t\t'padding-right': padding.right,\r\n\t\t\t};\r\n\t\t\tjsc.setStyle(this.previewElement, sty, this.forceStyle, true);\r\n\t\t};\r\n\r\n\r\n\t\tthis.setValueElementValue = function (str) {\r\n\t\t\tif (this.valueElement) {\r\n\t\t\t\tif (jsc.nodeName(this.valueElement) === 'input') {\r\n\t\t\t\t\tthis.valueElement.value = str;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.valueElement.innerHTML = str;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.setAlphaElementValue = function (str) {\r\n\t\t\tif (this.alphaElement) {\r\n\t\t\t\tif (jsc.nodeName(this.alphaElement) === 'input') {\r\n\t\t\t\t\tthis.alphaElement.value = str;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.alphaElement.innerHTML = str;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis._processParentElementsInDOM = function () {\r\n\t\t\tif (this._parentElementsProcessed) { return; }\r\n\t\t\tthis._parentElementsProcessed = true;\r\n\r\n\t\t\tvar elm = this.targetElement;\r\n\t\t\tdo {\r\n\t\t\t\t// If the target element or one of its parent nodes has fixed position,\r\n\t\t\t\t// then use fixed positioning instead\r\n\t\t\t\tvar compStyle = jsc.getCompStyle(elm);\r\n\t\t\t\tif (compStyle.position && compStyle.position.toLowerCase() === 'fixed') {\r\n\t\t\t\t\tthis.fixed = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elm !== this.targetElement) {\r\n\t\t\t\t\t// Ensure to attach onParentScroll only once to each parent element\r\n\t\t\t\t\t// (multiple targetElements can share the same parent nodes)\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// Note: It's not just offsetParents that can be scrollable,\r\n\t\t\t\t\t// that's why we loop through all parent nodes\r\n\t\t\t\t\tif (!jsc.getData(elm, 'hasScrollListener')) {\r\n\t\t\t\t\t\telm.addEventListener('scroll', jsc.onParentScroll, false);\r\n\t\t\t\t\t\tjsc.setData(elm, 'hasScrollListener', true);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} while ((elm = elm.parentNode) && jsc.nodeName(elm) !== 'body');\r\n\t\t};\r\n\r\n\r\n\t\tthis.tryHide = function () {\r\n\t\t\tif (this.hideOnLeave) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\tthis.set__palette = function (val) {\r\n\t\t\tthis.palette = val;\r\n\t\t\tthis._palette = jsc.parsePaletteValue(val);\r\n\t\t\tthis._paletteHasTransparency = jsc.containsTranparentColor(this._palette);\r\n\t\t};\r\n\r\n\r\n\t\tfunction setOption (option, value) {\r\n\t\t\tif (typeof option !== 'string') {\r\n\t\t\t\tthrow new Error('Invalid value for option name: ' + option);\r\n\t\t\t}\r\n\r\n\t\t\t// enum option\r\n\t\t\tif (jsc.enumOpts.hasOwnProperty(option)) {\r\n\t\t\t\tif (typeof value === 'string') { // enum string values are case insensitive\r\n\t\t\t\t\tvalue = value.toLowerCase();\r\n\t\t\t\t}\r\n\t\t\t\tif (jsc.enumOpts[option].indexOf(value) === -1) {\r\n\t\t\t\t\tthrow new Error('Option \\'' + option + '\\' has invalid value: ' + value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated option\r\n\t\t\tif (jsc.deprecatedOpts.hasOwnProperty(option)) {\r\n\t\t\t\tvar oldOpt = option;\r\n\t\t\t\tvar newOpt = jsc.deprecatedOpts[option];\r\n\t\t\t\tif (newOpt) {\r\n\t\t\t\t\t// if we have a new name for this option, let's log a warning and use the new name\r\n\t\t\t\t\tconsole.warn('Option \\'%s\\' is DEPRECATED, using \\'%s\\' instead.' + jsc.docsRef, oldOpt, newOpt);\r\n\t\t\t\t\toption = newOpt;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// new name not available for the option\r\n\t\t\t\t\tthrow new Error('Option \\'' + option + '\\' is DEPRECATED');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar setter = 'set__' + option;\r\n\r\n\t\t\tif (typeof THIS[setter] === 'function') { // a setter exists for this option\r\n\t\t\t\tTHIS[setter](value);\r\n\t\t\t\treturn true;\r\n\r\n\t\t\t} else if (option in THIS) { // option exists as a property\r\n\t\t\t\tTHIS[option] = value;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Unrecognized configuration option: ' + option);\r\n\t\t}\r\n\r\n\r\n\t\tfunction getOption (option) {\r\n\t\t\tif (typeof option !== 'string') {\r\n\t\t\t\tthrow new Error('Invalid value for option name: ' + option);\r\n\t\t\t}\r\n\r\n\t\t\t// deprecated option\r\n\t\t\tif (jsc.deprecatedOpts.hasOwnProperty(option)) {\r\n\t\t\t\tvar oldOpt = option;\r\n\t\t\t\tvar newOpt = jsc.deprecatedOpts[option];\r\n\t\t\t\tif (newOpt) {\r\n\t\t\t\t\t// if we have a new name for this option, let's log a warning and use the new name\r\n\t\t\t\t\tconsole.warn('Option \\'%s\\' is DEPRECATED, using \\'%s\\' instead.' + jsc.docsRef, oldOpt, newOpt);\r\n\t\t\t\t\toption = newOpt;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// new name not available for the option\r\n\t\t\t\t\tthrow new Error('Option \\'' + option + '\\' is DEPRECATED');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar getter = 'get__' + option;\r\n\r\n\t\t\tif (typeof THIS[getter] === 'function') { // a getter exists for this option\r\n\t\t\t\treturn THIS[getter](value);\r\n\r\n\t\t\t} else if (option in THIS) { // option exists as a property\r\n\t\t\t\treturn THIS[option];\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Unrecognized configuration option: ' + option);\r\n\t\t}\r\n\r\n\r\n\t\tfunction detachPicker () {\r\n\t\t\tjsc.removeClass(THIS.targetElement, jsc.pub.activeClassName);\r\n\t\t\tjsc.picker.wrap.parentNode.removeChild(jsc.picker.wrap);\r\n\t\t\tdelete jsc.picker.owner;\r\n\t\t}\r\n\r\n\r\n\t\tfunction drawPicker () {\r\n\r\n\t\t\t// At this point, when drawing the picker, we know what the parent elements are\r\n\t\t\t// and we can do all related DOM operations, such as registering events on them\r\n\t\t\t// or checking their positioning\r\n\t\t\tTHIS._processParentElementsInDOM();\r\n\r\n\t\t\tif (!jsc.picker) {\r\n\t\t\t\tjsc.picker = {\r\n\t\t\t\t\towner: null, // owner picker instance\r\n\t\t\t\t\twrap : jsc.createEl('div'),\r\n\t\t\t\t\tbox : jsc.createEl('div'),\r\n\t\t\t\t\tboxS : jsc.createEl('div'), // shadow area\r\n\t\t\t\t\tboxB : jsc.createEl('div'), // border\r\n\t\t\t\t\tpad : jsc.createEl('div'),\r\n\t\t\t\t\tpadB : jsc.createEl('div'), // border\r\n\t\t\t\t\tpadM : jsc.createEl('div'), // mouse/touch area\r\n\t\t\t\t\tpadCanvas : jsc.createPadCanvas(),\r\n\t\t\t\t\tcross : jsc.createEl('div'),\r\n\t\t\t\t\tcrossBY : jsc.createEl('div'), // border Y\r\n\t\t\t\t\tcrossBX : jsc.createEl('div'), // border X\r\n\t\t\t\t\tcrossLY : jsc.createEl('div'), // line Y\r\n\t\t\t\t\tcrossLX : jsc.createEl('div'), // line X\r\n\t\t\t\t\tsld : jsc.createEl('div'), // slider\r\n\t\t\t\t\tsldB : jsc.createEl('div'), // border\r\n\t\t\t\t\tsldM : jsc.createEl('div'), // mouse/touch area\r\n\t\t\t\t\tsldGrad : jsc.createSliderGradient(),\r\n\t\t\t\t\tsldPtrS : jsc.createEl('div'), // slider pointer spacer\r\n\t\t\t\t\tsldPtrIB : jsc.createEl('div'), // slider pointer inner border\r\n\t\t\t\t\tsldPtrMB : jsc.createEl('div'), // slider pointer middle border\r\n\t\t\t\t\tsldPtrOB : jsc.createEl('div'), // slider pointer outer border\r\n\t\t\t\t\tasld : jsc.createEl('div'), // alpha slider\r\n\t\t\t\t\tasldB : jsc.createEl('div'), // border\r\n\t\t\t\t\tasldM : jsc.createEl('div'), // mouse/touch area\r\n\t\t\t\t\tasldGrad : jsc.createASliderGradient(),\r\n\t\t\t\t\tasldPtrS : jsc.createEl('div'), // slider pointer spacer\r\n\t\t\t\t\tasldPtrIB : jsc.createEl('div'), // slider pointer inner border\r\n\t\t\t\t\tasldPtrMB : jsc.createEl('div'), // slider pointer middle border\r\n\t\t\t\t\tasldPtrOB : jsc.createEl('div'), // slider pointer outer border\r\n\t\t\t\t\tpal : jsc.createEl('div'), // palette\r\n\t\t\t\t\tbtn : jsc.createEl('div'),\r\n\t\t\t\t\tbtnT : jsc.createEl('div'), // text\r\n\t\t\t\t};\r\n\r\n\t\t\t\tjsc.picker.pad.appendChild(jsc.picker.padCanvas.elm);\r\n\t\t\t\tjsc.picker.padB.appendChild(jsc.picker.pad);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossBY);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossBX);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossLY);\r\n\t\t\t\tjsc.picker.cross.appendChild(jsc.picker.crossLX);\r\n\t\t\t\tjsc.picker.padB.appendChild(jsc.picker.cross);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.padB);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.padM);\r\n\r\n\t\t\t\tjsc.picker.sld.appendChild(jsc.picker.sldGrad.elm);\r\n\t\t\t\tjsc.picker.sldB.appendChild(jsc.picker.sld);\r\n\t\t\t\tjsc.picker.sldB.appendChild(jsc.picker.sldPtrOB);\r\n\t\t\t\tjsc.picker.sldPtrOB.appendChild(jsc.picker.sldPtrMB);\r\n\t\t\t\tjsc.picker.sldPtrMB.appendChild(jsc.picker.sldPtrIB);\r\n\t\t\t\tjsc.picker.sldPtrIB.appendChild(jsc.picker.sldPtrS);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.sldB);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.sldM);\r\n\r\n\t\t\t\tjsc.picker.asld.appendChild(jsc.picker.asldGrad.elm);\r\n\t\t\t\tjsc.picker.asldB.appendChild(jsc.picker.asld);\r\n\t\t\t\tjsc.picker.asldB.appendChild(jsc.picker.asldPtrOB);\r\n\t\t\t\tjsc.picker.asldPtrOB.appendChild(jsc.picker.asldPtrMB);\r\n\t\t\t\tjsc.picker.asldPtrMB.appendChild(jsc.picker.asldPtrIB);\r\n\t\t\t\tjsc.picker.asldPtrIB.appendChild(jsc.picker.asldPtrS);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.asldB);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.asldM);\r\n\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.pal);\r\n\r\n\t\t\t\tjsc.picker.btn.appendChild(jsc.picker.btnT);\r\n\t\t\t\tjsc.picker.box.appendChild(jsc.picker.btn);\r\n\r\n\t\t\t\tjsc.picker.boxB.appendChild(jsc.picker.box);\r\n\t\t\t\tjsc.picker.wrap.appendChild(jsc.picker.boxS);\r\n\t\t\t\tjsc.picker.wrap.appendChild(jsc.picker.boxB);\r\n\r\n\t\t\t\tjsc.picker.wrap.addEventListener('touchstart', jsc.onPickerTouchStart,\r\n\t\t\t\t\tjsc.isPassiveEventSupported ? {passive: false} : false);\r\n\t\t\t}\r\n\r\n\t\t\tvar p = jsc.picker;\r\n\r\n\t\t\tvar displaySlider = !!jsc.getSliderChannel(THIS);\r\n\t\t\tvar displayAlphaSlider = THIS.hasAlphaChannel();\r\n\t\t\tvar pickerDims = jsc.getPickerDims(THIS);\r\n\t\t\tvar crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);\r\n\t\t\tvar controlPadding = jsc.getControlPadding(THIS);\r\n\t\t\tvar borderRadius = Math.min(\r\n\t\t\t\tTHIS.borderRadius,\r\n\t\t\t\tMath.round(THIS.padding * Math.PI)); // px\r\n\t\t\tvar padCursor = 'crosshair';\r\n\r\n\t\t\t// wrap\r\n\t\t\tp.wrap.className = 'jscolor-wrap';\r\n\t\t\tp.wrap.style.width = pickerDims.borderW + 'px';\r\n\t\t\tp.wrap.style.height = pickerDims.borderH + 'px';\r\n\t\t\tp.wrap.style.zIndex = THIS.zIndex;\r\n\r\n\t\t\t// picker\r\n\t\t\tp.box.className = 'jscolor-picker';\r\n\t\t\tp.box.style.width = pickerDims.paddedW + 'px';\r\n\t\t\tp.box.style.height = pickerDims.paddedH + 'px';\r\n\r\n\t\t\t// picker shadow\r\n\t\t\tp.boxS.className = 'jscolor-shadow';\r\n\t\t\tjsc.setBorderRadius(p.boxS, borderRadius + 'px');\r\n\r\n\t\t\t// picker border\r\n\t\t\tp.boxB.className = 'jscolor-border';\r\n\t\t\tp.boxB.style.border = THIS.borderWidth + 'px solid';\r\n\t\t\tp.boxB.style.borderColor = THIS.borderColor;\r\n\t\t\tp.boxB.style.background = THIS.backgroundColor;\r\n\t\t\tjsc.setBorderRadius(p.boxB, borderRadius + 'px');\r\n\r\n\t\t\t// IE hack:\r\n\t\t\t// If the element is transparent, IE will trigger the event on the elements under it,\r\n\t\t\t// e.g. on Canvas or on elements with border\r\n\t\t\tp.padM.style.background = 'rgba(255,0,0,.2)';\r\n\t\t\tp.sldM.style.background = 'rgba(0,255,0,.2)';\r\n\t\t\tp.asldM.style.background = 'rgba(0,0,255,.2)';\r\n\r\n\t\t\tp.padM.style.opacity =\r\n\t\t\tp.sldM.style.opacity =\r\n\t\t\tp.asldM.style.opacity =\r\n\t\t\t\t'0';\r\n\r\n\t\t\t// pad\r\n\t\t\tp.pad.style.position = 'relative';\r\n\t\t\tp.pad.style.width = THIS.width + 'px';\r\n\t\t\tp.pad.style.height = THIS.height + 'px';\r\n\r\n\t\t\t// pad - color spectrum (HSV and HVS)\r\n\t\t\tp.padCanvas.draw(THIS.width, THIS.height, jsc.getPadYChannel(THIS));\r\n\r\n\t\t\t// pad border\r\n\t\t\tp.padB.style.position = 'absolute';\r\n\t\t\tp.padB.style.left = THIS.padding + 'px';\r\n\t\t\tp.padB.style.top = THIS.padding + 'px';\r\n\t\t\tp.padB.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tp.padB.style.borderColor = THIS.controlBorderColor;\r\n\r\n\t\t\t// pad mouse area\r\n\t\t\tp.padM.style.position = 'absolute';\r\n\t\t\tp.padM.style.left = 0 + 'px';\r\n\t\t\tp.padM.style.top = 0 + 'px';\r\n\t\t\tp.padM.style.width = (THIS.padding + 2 * THIS.controlBorderWidth + THIS.width + controlPadding) + 'px';\r\n\t\t\tp.padM.style.height = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\t\t\tp.padM.style.cursor = padCursor;\r\n\t\t\tjsc.setData(p.padM, {\r\n\t\t\t\tinstance: THIS,\r\n\t\t\t\tcontrol: 'pad',\r\n\t\t\t})\r\n\r\n\t\t\t// pad cross\r\n\t\t\tp.cross.style.position = 'absolute';\r\n\t\t\tp.cross.style.left =\r\n\t\t\tp.cross.style.top =\r\n\t\t\t\t'0';\r\n\t\t\tp.cross.style.width =\r\n\t\t\tp.cross.style.height =\r\n\t\t\t\tcrossOuterSize + 'px';\r\n\r\n\t\t\t// pad cross border Y and X\r\n\t\t\tp.crossBY.style.position =\r\n\t\t\tp.crossBX.style.position =\r\n\t\t\t\t'absolute';\r\n\t\t\tp.crossBY.style.background =\r\n\t\t\tp.crossBX.style.background =\r\n\t\t\t\tTHIS.pointerBorderColor;\r\n\t\t\tp.crossBY.style.width =\r\n\t\t\tp.crossBX.style.height =\r\n\t\t\t\t(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';\r\n\t\t\tp.crossBY.style.height =\r\n\t\t\tp.crossBX.style.width =\r\n\t\t\t\tcrossOuterSize + 'px';\r\n\t\t\tp.crossBY.style.left =\r\n\t\t\tp.crossBX.style.top =\r\n\t\t\t\t(Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2) - THIS.pointerBorderWidth) + 'px';\r\n\t\t\tp.crossBY.style.top =\r\n\t\t\tp.crossBX.style.left =\r\n\t\t\t\t'0';\r\n\r\n\t\t\t// pad cross line Y and X\r\n\t\t\tp.crossLY.style.position =\r\n\t\t\tp.crossLX.style.position =\r\n\t\t\t\t'absolute';\r\n\t\t\tp.crossLY.style.background =\r\n\t\t\tp.crossLX.style.background =\r\n\t\t\t\tTHIS.pointerColor;\r\n\t\t\tp.crossLY.style.height =\r\n\t\t\tp.crossLX.style.width =\r\n\t\t\t\t(crossOuterSize - 2 * THIS.pointerBorderWidth) + 'px';\r\n\t\t\tp.crossLY.style.width =\r\n\t\t\tp.crossLX.style.height =\r\n\t\t\t\tTHIS.pointerThickness + 'px';\r\n\t\t\tp.crossLY.style.left =\r\n\t\t\tp.crossLX.style.top =\r\n\t\t\t\t(Math.floor(crossOuterSize / 2) - Math.floor(THIS.pointerThickness / 2)) + 'px';\r\n\t\t\tp.crossLY.style.top =\r\n\t\t\tp.crossLX.style.left =\r\n\t\t\t\tTHIS.pointerBorderWidth + 'px';\r\n\r\n\r\n\t\t\t// slider\r\n\t\t\tp.sld.style.overflow = 'hidden';\r\n\t\t\tp.sld.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.sld.style.height = THIS.height + 'px';\r\n\r\n\t\t\t// slider gradient\r\n\t\t\tp.sldGrad.draw(THIS.sliderSize, THIS.height, '#000', '#000');\r\n\r\n\t\t\t// slider border\r\n\t\t\tp.sldB.style.display = displaySlider ? 'block' : 'none';\r\n\t\t\tp.sldB.style.position = 'absolute';\r\n\t\t\tp.sldB.style.left = (THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + 2 * controlPadding) + 'px';\r\n\t\t\tp.sldB.style.top = THIS.padding + 'px';\r\n\t\t\tp.sldB.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tp.sldB.style.borderColor = THIS.controlBorderColor;\r\n\r\n\t\t\t// slider mouse area\r\n\t\t\tp.sldM.style.display = displaySlider ? 'block' : 'none';\r\n\t\t\tp.sldM.style.position = 'absolute';\r\n\t\t\tp.sldM.style.left = (THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + controlPadding) + 'px';\r\n\t\t\tp.sldM.style.top = 0 + 'px';\r\n\t\t\tp.sldM.style.width = (\r\n\t\t\t\t\t(THIS.sliderSize + 2 * controlPadding + 2 * THIS.controlBorderWidth) +\r\n\t\t\t\t\t(displayAlphaSlider ? 0 : Math.max(0, THIS.padding - controlPadding)) // remaining padding to the right edge\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.sldM.style.height = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\t\t\tp.sldM.style.cursor = 'default';\r\n\t\t\tjsc.setData(p.sldM, {\r\n\t\t\t\tinstance: THIS,\r\n\t\t\t\tcontrol: 'sld',\r\n\t\t\t});\r\n\r\n\t\t\t// slider pointer inner and outer border\r\n\t\t\tp.sldPtrIB.style.border =\r\n\t\t\tp.sldPtrOB.style.border =\r\n\t\t\t\tTHIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;\r\n\r\n\t\t\t// slider pointer outer border\r\n\t\t\tp.sldPtrOB.style.position = 'absolute';\r\n\t\t\tp.sldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';\r\n\t\t\tp.sldPtrOB.style.top = '0';\r\n\r\n\t\t\t// slider pointer middle border\r\n\t\t\tp.sldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;\r\n\r\n\t\t\t// slider pointer spacer\r\n\t\t\tp.sldPtrS.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.sldPtrS.style.height = jsc.pub.sliderInnerSpace + 'px';\r\n\r\n\r\n\t\t\t// alpha slider\r\n\t\t\tp.asld.style.overflow = 'hidden';\r\n\t\t\tp.asld.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.asld.style.height = THIS.height + 'px';\r\n\r\n\t\t\t// alpha slider gradient\r\n\t\t\tp.asldGrad.draw(THIS.sliderSize, THIS.height, '#000');\r\n\r\n\t\t\t// alpha slider border\r\n\t\t\tp.asldB.style.display = displayAlphaSlider ? 'block' : 'none';\r\n\t\t\tp.asldB.style.position = 'absolute';\r\n\t\t\tp.asldB.style.left = (\r\n\t\t\t\t\t(THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + controlPadding) +\r\n\t\t\t\t\t(displaySlider ? (THIS.sliderSize + 3 * controlPadding + 2 * THIS.controlBorderWidth) : 0)\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.asldB.style.top = THIS.padding + 'px';\r\n\t\t\tp.asldB.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tp.asldB.style.borderColor = THIS.controlBorderColor;\r\n\r\n\t\t\t// alpha slider mouse area\r\n\t\t\tp.asldM.style.display = displayAlphaSlider ? 'block' : 'none';\r\n\t\t\tp.asldM.style.position = 'absolute';\r\n\t\t\tp.asldM.style.left = (\r\n\t\t\t\t\t(THIS.padding + THIS.width + 2 * THIS.controlBorderWidth + controlPadding) +\r\n\t\t\t\t\t(displaySlider ? (THIS.sliderSize + 2 * controlPadding + 2 * THIS.controlBorderWidth) : 0)\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.asldM.style.top = 0 + 'px';\r\n\t\t\tp.asldM.style.width = (\r\n\t\t\t\t\t(THIS.sliderSize + 2 * controlPadding + 2 * THIS.controlBorderWidth) +\r\n\t\t\t\t\tMath.max(0, THIS.padding - controlPadding) // remaining padding to the right edge\r\n\t\t\t\t) + 'px';\r\n\t\t\tp.asldM.style.height = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\t\t\tp.asldM.style.cursor = 'default';\r\n\t\t\tjsc.setData(p.asldM, {\r\n\t\t\t\tinstance: THIS,\r\n\t\t\t\tcontrol: 'asld',\r\n\t\t\t})\r\n\r\n\t\t\t// alpha slider pointer inner and outer border\r\n\t\t\tp.asldPtrIB.style.border =\r\n\t\t\tp.asldPtrOB.style.border =\r\n\t\t\t\tTHIS.pointerBorderWidth + 'px solid ' + THIS.pointerBorderColor;\r\n\r\n\t\t\t// alpha slider pointer outer border\r\n\t\t\tp.asldPtrOB.style.position = 'absolute';\r\n\t\t\tp.asldPtrOB.style.left = -(2 * THIS.pointerBorderWidth + THIS.pointerThickness) + 'px';\r\n\t\t\tp.asldPtrOB.style.top = '0';\r\n\r\n\t\t\t// alpha slider pointer middle border\r\n\t\t\tp.asldPtrMB.style.border = THIS.pointerThickness + 'px solid ' + THIS.pointerColor;\r\n\r\n\t\t\t// alpha slider pointer spacer\r\n\t\t\tp.asldPtrS.style.width = THIS.sliderSize + 'px';\r\n\t\t\tp.asldPtrS.style.height = jsc.pub.sliderInnerSpace + 'px';\r\n\r\n\r\n\t\t\t// palette\r\n\t\t\tp.pal.className = 'jscolor-palette';\r\n\t\t\tp.pal.style.display = pickerDims.palette.rows ? 'block' : 'none';\r\n\t\t\tp.pal.style.left = THIS.padding + 'px';\r\n\t\t\tp.pal.style.top = (2 * THIS.controlBorderWidth + 2 * THIS.padding + THIS.height) + 'px';\r\n\r\n\t\t\t// palette's color samples\r\n\r\n\t\t\tp.pal.innerHTML = '';\r\n\r\n\t\t\tvar chessboard = jsc.genColorPreviewCanvas('rgba(0,0,0,0)');\r\n\r\n\t\t\tvar si = 0; // color sample's index\r\n\t\t\tfor (var r = 0; r < pickerDims.palette.rows; r++) {\r\n\t\t\t\tfor (var c = 0; c < pickerDims.palette.cols && si < THIS._palette.length; c++, si++) {\r\n\t\t\t\t\tvar sampleColor = THIS._palette[si];\r\n\t\t\t\t\tvar sampleCssColor = jsc.rgbaColor.apply(null, sampleColor.rgba);\r\n\r\n\t\t\t\t\tvar sc = jsc.createEl('div'); // color sample's color\r\n\t\t\t\t\tsc.style.width = (pickerDims.palette.cellW - 2 * THIS.controlBorderWidth) + 'px';\r\n\t\t\t\t\tsc.style.height = (pickerDims.palette.cellH - 2 * THIS.controlBorderWidth) + 'px';\r\n\t\t\t\t\tsc.style.backgroundColor = sampleCssColor;\r\n\r\n\t\t\t\t\tvar sw = jsc.createEl('div'); // color sample's wrap\r\n\t\t\t\t\tsw.className = 'jscolor-palette-sw';\r\n\t\t\t\t\tsw.style.left =\r\n\t\t\t\t\t\t(\r\n\t\t\t\t\t\t\tpickerDims.palette.cols <= 1 ? 0 :\r\n\t\t\t\t\t\t\tMath.round(10 * (c * ((pickerDims.contentW - pickerDims.palette.cellW) / (pickerDims.palette.cols - 1)))) / 10\r\n\t\t\t\t\t\t) + 'px';\r\n\t\t\t\t\tsw.style.top = (r * (pickerDims.palette.cellH + THIS.paletteSpacing)) + 'px';\r\n\t\t\t\t\tsw.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\t\t\tsw.style.borderColor = THIS.controlBorderColor;\r\n\t\t\t\t\tif (sampleColor.rgba[3] !== null && sampleColor.rgba[3] < 1.0) { // only create chessboard background if the sample has transparency\r\n\t\t\t\t\t\tsw.style.backgroundImage = 'url(\\'' + chessboard.canvas.toDataURL() + '\\')';\r\n\t\t\t\t\t\tsw.style.backgroundRepeat = 'repeat';\r\n\t\t\t\t\t\tsw.style.backgroundPosition = 'center center';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tjsc.setData(sw, {\r\n\t\t\t\t\t\tinstance: THIS,\r\n\t\t\t\t\t\tcontrol: 'palette-sw',\r\n\t\t\t\t\t\tcolor: sampleColor,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tsw.addEventListener('click', jsc.onPaletteSampleClick, false);\r\n\t\t\t\t\tsw.appendChild(sc);\r\n\t\t\t\t\tp.pal.appendChild(sw);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// the Close button\r\n\t\t\tfunction setBtnBorder () {\r\n\t\t\t\tvar insetColors = THIS.controlBorderColor.split(/\\s+/);\r\n\t\t\t\tvar outsetColor = insetColors.length < 2 ? insetColors[0] : insetColors[1] + ' ' + insetColors[0] + ' ' + insetColors[0] + ' ' + insetColors[1];\r\n\t\t\t\tp.btn.style.borderColor = outsetColor;\r\n\t\t\t}\r\n\t\t\tvar btnPadding = 15; // px\r\n\t\t\tp.btn.className = 'jscolor-btn jscolor-btn-close';\r\n\t\t\tp.btn.style.display = THIS.closeButton ? 'block' : 'none';\r\n\t\t\tp.btn.style.left = THIS.padding + 'px';\r\n\t\t\tp.btn.style.bottom = THIS.padding + 'px';\r\n\t\t\tp.btn.style.padding = '0 ' + btnPadding + 'px';\r\n\t\t\tp.btn.style.maxWidth = (pickerDims.contentW - 2 * THIS.controlBorderWidth - 2 * btnPadding) + 'px';\r\n\t\t\tp.btn.style.height = THIS.buttonHeight + 'px';\r\n\t\t\tp.btn.style.border = THIS.controlBorderWidth + 'px solid';\r\n\t\t\tsetBtnBorder();\r\n\t\t\tp.btn.style.color = THIS.buttonColor;\r\n\t\t\tp.btn.onmousedown = function () {\r\n\t\t\t\tTHIS.hide();\r\n\t\t\t};\r\n\t\t\tp.btnT.style.display = 'inline';\r\n\t\t\tp.btnT.style.lineHeight = THIS.buttonHeight + 'px';\r\n\t\t\tp.btnT.innerText = THIS.closeText;\r\n\r\n\t\t\t// reposition the pointers\r\n\t\t\tredrawPad();\r\n\t\t\tredrawSld();\r\n\t\t\tredrawASld();\r\n\r\n\t\t\t// If we are changing the owner without first closing the picker,\r\n\t\t\t// make sure to first deal with the old owner\r\n\t\t\tif (jsc.picker.owner && jsc.picker.owner !== THIS) {\r\n\t\t\t\tjsc.removeClass(jsc.picker.owner.targetElement, jsc.pub.activeClassName);\r\n\t\t\t}\r\n\r\n\t\t\t// Set a new picker owner\r\n\t\t\tjsc.picker.owner = THIS;\r\n\r\n\t\t\t// The redrawPosition() method needs picker.owner to be set, that's why we call it here,\r\n\t\t\t// after setting the owner\r\n\t\t\tjsc.redrawPosition();\r\n\r\n\t\t\tif (p.wrap.parentNode !== THIS.container) {\r\n\t\t\t\tTHIS.container.appendChild(p.wrap);\r\n\t\t\t}\r\n\r\n\t\t\tjsc.addClass(THIS.targetElement, jsc.pub.activeClassName);\r\n\t\t}\r\n\r\n\r\n\t\tfunction redrawPad () {\r\n\t\t\t// redraw the pad pointer\r\n\t\t\tvar yChannel = jsc.getPadYChannel(THIS);\r\n\t\t\tvar x = Math.round((THIS.channels.h / 360) * (THIS.width - 1));\r\n\t\t\tvar y = Math.round((1 - THIS.channels[yChannel] / 100) * (THIS.height - 1));\r\n\t\t\tvar crossOuterSize = (2 * THIS.pointerBorderWidth + THIS.pointerThickness + 2 * THIS.crossSize);\r\n\t\t\tvar ofs = -Math.floor(crossOuterSize / 2);\r\n\t\t\tjsc.picker.cross.style.left = (x + ofs) + 'px';\r\n\t\t\tjsc.picker.cross.style.top = (y + ofs) + 'px';\r\n\r\n\t\t\t// redraw the slider\r\n\t\t\tswitch (jsc.getSliderChannel(THIS)) {\r\n\t\t\tcase 's':\r\n\t\t\t\tvar rgb1 = jsc.HSV_RGB(THIS.channels.h, 100, THIS.channels.v);\r\n\t\t\t\tvar rgb2 = jsc.HSV_RGB(THIS.channels.h, 0, THIS.channels.v);\r\n\t\t\t\tvar color1 = 'rgb(' +\r\n\t\t\t\t\tMath.round(rgb1[0]) + ',' +\r\n\t\t\t\t\tMath.round(rgb1[1]) + ',' +\r\n\t\t\t\t\tMath.round(rgb1[2]) + ')';\r\n\t\t\t\tvar color2 = 'rgb(' +\r\n\t\t\t\t\tMath.round(rgb2[0]) + ',' +\r\n\t\t\t\t\tMath.round(rgb2[1]) + ',' +\r\n\t\t\t\t\tMath.round(rgb2[2]) + ')';\r\n\t\t\t\tjsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'v':\r\n\t\t\t\tvar rgb = jsc.HSV_RGB(THIS.channels.h, THIS.channels.s, 100);\r\n\t\t\t\tvar color1 = 'rgb(' +\r\n\t\t\t\t\tMath.round(rgb[0]) + ',' +\r\n\t\t\t\t\tMath.round(rgb[1]) + ',' +\r\n\t\t\t\t\tMath.round(rgb[2]) + ')';\r\n\t\t\t\tvar color2 = '#000';\r\n\t\t\t\tjsc.picker.sldGrad.draw(THIS.sliderSize, THIS.height, color1, color2);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t// redraw the alpha slider\r\n\t\t\tjsc.picker.asldGrad.draw(THIS.sliderSize, THIS.height, THIS.toHEXString());\r\n\t\t}\r\n\r\n\r\n\t\tfunction redrawSld () {\r\n\t\t\tvar sldChannel = jsc.getSliderChannel(THIS);\r\n\t\t\tif (sldChannel) {\r\n\t\t\t\t// redraw the slider pointer\r\n\t\t\t\tvar y = Math.round((1 - THIS.channels[sldChannel] / 100) * (THIS.height - 1));\r\n\t\t\t\tjsc.picker.sldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(jsc.pub.sliderInnerSpace / 2)) + 'px';\r\n\t\t\t}\r\n\r\n\t\t\t// redraw the alpha slider\r\n\t\t\tjsc.picker.asldGrad.draw(THIS.sliderSize, THIS.height, THIS.toHEXString());\r\n\t\t}\r\n\r\n\r\n\t\tfunction redrawASld () {\r\n\t\t\tvar y = Math.round((1 - THIS.channels.a) * (THIS.height - 1));\r\n\t\t\tjsc.picker.asldPtrOB.style.top = (y - (2 * THIS.pointerBorderWidth + THIS.pointerThickness) - Math.floor(jsc.pub.sliderInnerSpace / 2)) + 'px';\r\n\t\t}\r\n\r\n\r\n\t\tfunction isPickerOwner () {\r\n\t\t\treturn jsc.picker && jsc.picker.owner === THIS;\r\n\t\t}\r\n\r\n\r\n\t\tfunction onValueKeyDown (ev) {\r\n\t\t\tif (jsc.eventKey(ev) === 'Enter') {\r\n\t\t\t\tif (THIS.valueElement) {\r\n\t\t\t\t\tTHIS.processValueInput(THIS.valueElement.value);\r\n\t\t\t\t}\r\n\t\t\t\tTHIS.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onAlphaKeyDown (ev) {\r\n\t\t\tif (jsc.eventKey(ev) === 'Enter') {\r\n\t\t\t\tif (THIS.alphaElement) {\r\n\t\t\t\t\tTHIS.processAlphaInput(THIS.alphaElement.value);\r\n\t\t\t\t}\r\n\t\t\t\tTHIS.tryHide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onValueChange (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tvar oldVal = THIS.valueElement.value;\r\n\r\n\t\t\tTHIS.processValueInput(THIS.valueElement.value); // this might change the value\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onChange');\r\n\r\n\t\t\tif (THIS.valueElement.value !== oldVal) {\r\n\t\t\t\t// value was additionally changed -> let's trigger the change event again, even though it was natively dispatched\r\n\t\t\t\tjsc.triggerInputEvent(THIS.valueElement, 'change', true, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onAlphaChange (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tvar oldVal = THIS.alphaElement.value;\r\n\r\n\t\t\tTHIS.processAlphaInput(THIS.alphaElement.value); // this might change the value\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onChange');\r\n\r\n\t\t\t// triggering valueElement's onChange (because changing alpha changes the entire color, e.g. with rgba format)\r\n\t\t\tjsc.triggerInputEvent(THIS.valueElement, 'change', true, true);\r\n\r\n\t\t\tif (THIS.alphaElement.value !== oldVal) {\r\n\t\t\t\t// value was additionally changed -> let's trigger the change event again, even though it was natively dispatched\r\n\t\t\t\tjsc.triggerInputEvent(THIS.alphaElement, 'change', true, true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfunction onValueInput (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tif (THIS.valueElement) {\r\n\t\t\t\tTHIS.fromString(THIS.valueElement.value, jsc.flags.leaveValue);\r\n\t\t\t}\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onInput');\r\n\r\n\t\t\t// triggering valueElement's onInput\r\n\t\t\t// (not needed, it was dispatched normally by the browser)\r\n\t\t}\r\n\r\n\r\n\t\tfunction onAlphaInput (ev) {\r\n\t\t\tif (jsc.getData(ev, 'internal')) {\r\n\t\t\t\treturn; // skip if the event was internally triggered by jscolor\r\n\t\t\t}\r\n\r\n\t\t\tif (THIS.alphaElement) {\r\n\t\t\t\tTHIS.fromHSVA(null, null, null, parseFloat(THIS.alphaElement.value), jsc.flags.leaveAlpha);\r\n\t\t\t}\r\n\r\n\t\t\tjsc.triggerCallback(THIS, 'onInput');\r\n\r\n\t\t\t// triggering valueElement's onInput (because changing alpha changes the entire color, e.g. with rgba format)\r\n\t\t\tjsc.triggerInputEvent(THIS.valueElement, 'input', true, true);\r\n\t\t}\r\n\r\n\r\n\t\t// let's process the DEPRECATED 'options' property (this will be later removed)\r\n\t\tif (jsc.pub.options) {\r\n\t\t\t// let's set custom default options, if specified\r\n\t\t\tfor (var opt in jsc.pub.options) {\r\n\t\t\t\tif (jsc.pub.options.hasOwnProperty(opt)) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tsetOption(opt, jsc.pub.options[opt]);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// let's apply configuration presets\r\n\t\t//\r\n\t\tvar presetsArr = [];\r\n\r\n\t\tif (opts.preset) {\r\n\t\t\tif (typeof opts.preset === 'string') {\r\n\t\t\t\tpresetsArr = opts.preset.split(/\\s+/);\r\n\t\t\t} else if (Array.isArray(opts.preset)) {\r\n\t\t\t\tpresetsArr = opts.preset.slice(); // slice() to clone\r\n\t\t\t} else {\r\n\t\t\t\tconsole.warn('Unrecognized preset value');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// always use the 'default' preset. If it's not listed, append it to the end.\r\n\t\tif (presetsArr.indexOf('default') === -1) {\r\n\t\t\tpresetsArr.push('default');\r\n\t\t}\r\n\r\n\t\t// let's apply the presets in reverse order, so that should there be any overlapping options,\r\n\t\t// the formerly listed preset will override the latter\r\n\t\tfor (var i = presetsArr.length - 1; i >= 0; i -= 1) {\r\n\t\t\tvar pres = presetsArr[i];\r\n\t\t\tif (!pres) {\r\n\t\t\t\tcontinue; // preset is empty string\r\n\t\t\t}\r\n\t\t\tif (!jsc.pub.presets.hasOwnProperty(pres)) {\r\n\t\t\t\tconsole.warn('Unknown preset: %s', pres);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tfor (var opt in jsc.pub.presets[pres]) {\r\n\t\t\t\tif (jsc.pub.presets[pres].hasOwnProperty(opt)) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tsetOption(opt, jsc.pub.presets[pres][opt]);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// let's set specific options for this color picker\r\n\t\tvar nonProperties = [\r\n\t\t\t// these options won't be set as instance properties\r\n\t\t\t'preset',\r\n\t\t];\r\n\t\tfor (var opt in opts) {\r\n\t\t\tif (opts.hasOwnProperty(opt)) {\r\n\t\t\t\tif (nonProperties.indexOf(opt) === -1) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tsetOption(opt, opts[opt]);\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tconsole.warn(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t//\r\n\t\t// Install the color picker on chosen element(s)\r\n\t\t//\r\n\r\n\r\n\t\t// Determine picker's container element\r\n\t\tif (this.container === undefined) {\r\n\t\t\tthis.container = window.document.body; // default container is BODY element\r\n\r\n\t\t} else { // explicitly set to custom element\r\n\t\t\tthis.container = jsc.node(this.container);\r\n\t\t}\r\n\r\n\t\tif (!this.container) {\r\n\t\t\tthrow new Error('Cannot instantiate color picker without a container element');\r\n\t\t}\r\n\r\n\r\n\t\t// Fetch the target element\r\n\t\tthis.targetElement = jsc.node(targetElement);\r\n\r\n\t\tif (!this.targetElement) {\r\n\t\t\t// temporarily customized error message to help with migrating from versions prior to 2.2\r\n\t\t\tif (typeof targetElement === 'string' && /^[a-zA-Z][\\w:.-]*$/.test(targetElement)) {\r\n\t\t\t\t// targetElement looks like valid ID\r\n\t\t\t\tvar possiblyId = targetElement;\r\n\t\t\t\tthrow new Error('If \\'' + possiblyId + '\\' is supposed to be an ID, please use \\'#' + possiblyId + '\\' or any valid CSS selector.');\r\n\t\t\t}\r\n\r\n\t\t\tthrow new Error('Cannot instantiate color picker without a target element');\r\n\t\t}\r\n\r\n\t\tif (this.targetElement.jscolor && this.targetElement.jscolor instanceof jsc.pub) {\r\n\t\t\tthrow new Error('Color picker already installed on this element');\r\n\t\t}\r\n\r\n\r\n\t\t// link this instance with the target element\r\n\t\tthis.targetElement.jscolor = this;\r\n\t\tjsc.addClass(this.targetElement, jsc.pub.className);\r\n\r\n\t\t// register this instance\r\n\t\tjsc.instances.push(this);\r\n\r\n\r\n\t\t// if target is BUTTON\r\n\t\tif (jsc.isButton(this.targetElement)) {\r\n\r\n\t\t\tif (this.targetElement.type.toLowerCase() !== 'button') {\r\n\t\t\t\t// on buttons, always force type to be 'button', e.g. in situations the target