E[a]&&E[a]>-R&&(E[a]=0);return i&&(t._gsTransform=E),E},Ot=i.set3DTransformRatio=function(t){var e,i,n,r,a,s,o,l,c,d,p,h,u,_,f,m,g,w,v,y,b,k,x=this.data,T=this.t.style,S=x.rotation*N,P=x.scaleX,C=x.scaleY,L=x.scaleZ,A=x.perspective;if(1!==t&&0!==t||"auto"!==x.force3D||x.rotationY||x.rotationX||1!==L||A||x.z){if(W&&(P<1e-4&&-1e-4{var l;_[t]||(l=t.charAt(0).toUpperCase()+t.substr(1)+"Plugin",r(t,{parser:function(t,e,i,n,r,a,s){var o=(window.GreenSockGlobals||window).com.greensock.plugins[l];return o?(o._cssRegister(),_[i].parse(t,e,i,n,r,a,s)):(D("Error: "+l+" js file not loaded."),r)}}))})(t[I]);(t=X.prototype)._firstPT=null,t._onInitTween=function(t,e,i){if(!t.nodeType)return!1;this._target=t,this._tween=i,this._vars=e,U=e.autoRound,u=!1,b=e.suffixMap||X.suffixMap,k=m(t,""),p=this._overwriteProps;var n,r,a,s,o,l,i=t.style;if(c&&""===i.zIndex&&("auto"===(l=z(t,"zIndex",k))||""===l)&&this._addLazySet(i,"zIndex",0),"string"==typeof e&&(a=i.cssText,l=f(t,k),i.cssText=a+";"+e,l=j(t,l,f(t)).difs,!L&&et.test(e)&&(l.opacity=parseFloat(RegExp.$1)),e=l,i.cssText=a),this._firstPT=n=this.parse(t,e,null),this._transformType){for(l=3===this._transformType,H?V&&(c=!0,""===i.zIndex&&("auto"===(e=z(t,"zIndex",k))||""===e)&&this._addLazySet(i,"zIndex",0),Q)&&this._addLazySet(i,"WebkitBackfaceVisibility",this._vars.WebkitBackfaceVisibility||(l?"visible":"hidden")):i.zoom=1,r=n;r&&r._next;)r=r._next;e=new R(t,"transform",0,0,null,2),this._linkCSSP(e,null,r),e.setRatio=l&&Y?Ot:H?Et:bt,e.data=this._transform||M(t,k,!0),p.pop()}if(u){for(;n;){for(o=n._next,r=a;r&&r.pr>n.pr;)r=r._next;(n._prev=r?r._prev:s)?n._prev._next=n:a=n,(n._next=r)?r._prev=n:s=n,n=o}this._firstPT=a}return!0},t.parse=function(t,e,i,n){var r,a,s,o,l,c,d,p,h=t.style;for(r in e)l=e[r],o=_[r],o?i=o.parse(t,l,r,this,i,n,e):(o=z(t,r,k)+"",d="string"==typeof l,"color"===r||"fill"===r||"stroke"===r||-1!==r.indexOf("Color")||d&&nt.test(l)?(d||(l=$(l),l=(3{var n=parseFloat("width"===e?t.offsetWidth:t.offsetHeight),r=_t[e],a=r.length;for(i=i||m(t,null);-1<--a;)n=(n-=parseFloat(z(t,"padding"+r[a],i,!0))||0)-(parseFloat(z(t,"border"+r[a]+"Width",i,!0))||0);return n})(t,r,k),"px"):"left"===r||"top"===r?(a=ut(t,r,k),"px"):(a="opacity"!==r?0:1,"")),p=d&&"="===l.charAt(1),d=p?(s=parseInt(l.charAt(0)+"1",10),l=l.substr(2),s*=parseFloat(l),l.replace(K,"")):(s=parseFloat(l),d&&l.substr((s+"").length)||""),""===d&&(d=r in b?b[r]:c),l=s||0===s?(p?s+a:s)+d:e[r],c!==d&&""!==d&&(s||0===s)&&a&&(a=A(t,r,a,c),"%"===d?(a/=A(t,r,100,"%")/100,!0!==e.strictUnits&&(o=a+"%")):"em"===d?a/=A(t,r,1,"em"):"px"!==d&&(s=A(t,r,s,d),d="px"),p)&&(s||0===s)&&(l=s+a+d),p&&(s+=a),!a&&0!==a||!s&&0!==s?void 0!==h[r]&&(l||"NaN"!=l+""&&null!=l)?(i=new R(h,r,s||a||0,0,i,-1,r,!1,0,o,l),i.xs0="none"!==l||"display"!==r&&-1===r.indexOf("Style")?l:o):D("invalid "+r+" tween value: "+e[r]):(i=new R(h,r,a,s-a,i,0,r,!1!==U&&("px"===d||"zIndex"===r),0,o,l),i.xs0=d)):i=vt(h,r,o,l,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},t.setRatio=function(t){var e,i,n,r=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;r;){if(e=r.c*t+r.s,r.r?e=Math.round(e):e<1e-6&&-1e-6n;n++)i+=r["xn"+n]+r["xs"+(n+1)];r.t[r.p]=i}else-1===r.type?r.t[r.p]=r.xs0:r.setRatio&&r.setRatio(t);else r.t[r.p]=e+r.xs0;r=r._next}else for(;r;)2!==r.type?r.t[r.p]=r.b:r.setRatio(t),r=r._next;else for(;r;)2!==r.type?r.t[r.p]=r.e:r.setRatio(t),r=r._next},t._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2,this._transform=this._transform||M(this._target,k,!0)};function Rt(){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)}function It(t,e,i){var n,r,a,s;if(t.slice)for(r=t.length;-1<--r;)It(t[r],e,i);else for(r=(n=t.childNodes).length;-1<--r;)s=(a=n[r]).type,a.style&&(e.push(f(a)),i)&&i.push(a),1!==s&&9!==s&&11!==s||!a.childNodes.length||It(a,e,i)}t._addLazySet=function(t,e,i){t=this._firstPT=new R(t,e,0,0,this._firstPT,2);t.e=i,t.setRatio=Rt,t.data=this},t._linkCSSP=function(t,e,i,n){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,n=!0),i?i._next=t:n||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},t._kill=function(t){var e,i,n,r=t;if(t.autoAlpha||t.alpha){for(i in r={},t)r[i]=t[i];r.opacity=1,r.autoAlpha&&(r.visibility=1)}return t.className&&(e=this._classNamePT)&&((n=e.xfirst)&&n._prev?this._linkCSSP(n._prev,e._next,n._prev._prev):n===this._firstPT&&(this._firstPT=e._next),e._next&&this._linkCSSP(e._next,e._next._next,n._prev),this._classNamePT=null),a.prototype._kill.call(this,r)};return X.cascadeTo=function(t,e,i){var n,r,a,s=h.to(t,e,i),o=[s],l=[],c=[],d=[],p=h._internals.reservedProps;for(t=s._targets||s.target,It(t,l,d),s.render(e,!0),It(t,c),s.render(0,!0),s._enabled(!0),n=d.length;-1<--n;)if((r=j(d[n],l[n],c[n])).firstMPT){for(a in r=r.difs,i)p[a]&&(r[a]=i[a]);o.push(h.to(d[n],e,r))}return o},a.activate([X]),X},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],18:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){function r(t,e){var i="scroll"+(e="x"===e?"Width":"Height"),n="client"+e,r=document.body;return t===s||t===a||t===r?Math.max(a[i],r[i])-(s["inner"+e]||Math.max(a[n],r[n])):t[i]-t["offset"+e]}var a=document.documentElement,s=window,t=window._gsDefine.plugin({propName:"scrollTo",API:2,version:"1.7.3",init:function(t,e,i){return this._wdw=t===s,this._target=t,this._tween=i,this._autoKill=!1!==(e="object"!=typeof e?{y:e}:e).autoKill,this.x=this.xPrev=this.getX(),this.y=this.yPrev=this.getY(),null!=e.x?(this._addTween(this,"x",this.x,"max"===e.x?r(t,"x"):e.x,"scrollTo_x",!0),this._overwriteProps.push("scrollTo_x")):this.skipX=!0,null!=e.y?(this._addTween(this,"y",this.y,"max"===e.y?r(t,"y"):e.y,"scrollTo_y",!0),this._overwriteProps.push("scrollTo_y")):this.skipY=!0,!0},set:function(t){this._super.setRatio.call(this,t);var t=this._wdw||!this.skipX?this.getX():this.xPrev,e=this._wdw||!this.skipY?this.getY():this.yPrev,i=e-this.yPrev,n=t-this.xPrev;this._autoKill&&(!this.skipX&&(7t&&(this.skipX=!0),!this.skipY&&(7e&&(this.skipY=!0),this.skipX)&&this.skipY&&this._tween.kill(),this._wdw?s.scrollTo(this.skipX?t:this.x,this.skipY?e:this.y):(this.skipY||(this._target.scrollTop=this.y),this.skipX||(this._target.scrollLeft=this.x)),this.xPrev=this.x,this.yPrev=this.y}}),e=t.prototype;t.max=r,e.getX=function(){return this._wdw?null!=s.pageXOffset?s.pageXOffset:(null!=a.scrollLeft?a:document.body).scrollLeft:this._target.scrollLeft},e.getY=function(){return this._wdw?null!=s.pageYOffset?s.pageYOffset:(null!=a.scrollTop?a:document.body).scrollTop:this._target.scrollTop},e._kill=function(t){return t.scrollTo_x&&(this.skipX=!0),t.scrollTo_y&&(this.skipY=!0),this._super._kill.call(this,t)}}),window._gsDefine&&window._gsQueue.pop()()},{}]},{},[3]);
//# sourceMappingURL=wpr-admin.min.js.map
diff --git a/web/app/plugins/wp-rocket/assets/js/wpr-admin.min.js.map b/web/app/plugins/wp-rocket/assets/js/wpr-admin.min.js.map
index 2e0549f13..58f8b97f6 100644
--- a/web/app/plugins/wp-rocket/assets/js/wpr-admin.min.js.map
+++ b/web/app/plugins/wp-rocket/assets/js/wpr-admin.min.js.map
@@ -1 +1 @@
-{"version":3,"names":[],"mappings":"","sources":["wpr-admin.min.js"],"sourcesContent":["!function n(r,s,a){function o(e,t){if(!s[e]){if(!r[e]){var i=\"function\"==typeof require&&require;if(!t&&i)return i(e,!0);if(l)return l(e,!0);throw(t=new Error(\"Cannot find module '\"+e+\"'\")).code=\"MODULE_NOT_FOUND\",t}i=s[e]={exports:{}},r[e][0].call(i.exports,function(t){return o(r[e][1][t]||t)},i,i.exports,n,r,s,a)}return s[e].exports}for(var l=\"function\"==typeof require&&require,t=0;t{let e=i.querySelector(\".select-button\"),n=i.querySelector(\".selected-value\");e.addEventListener(\"click\",()=>{i.classList.toggle(\"active\"),e.setAttribute(\"aria-expanded\",\"true\"===e.getAttribute(\"aria-expanded\")?\"false\":\"true\")}),i.addEventListener(\"click\",function(t){var e;t.target.matches(\"label\")&&(i.querySelectorAll(\"li\").forEach(t=>t.classList.remove(\"active\")),t=t.target.closest(\"li\"))&&(t.classList.add(\"active\"),t=t,e=new CustomEvent(\"custom-select-change\",{detail:{selectedOption:t}}),n.textContent=t.textContent,i.classList.remove(\"active\"),i.dispatchEvent(e))}),document.addEventListener(\"click\",t=>{i.contains(t.target)||(i.classList.remove(\"active\"),e.setAttribute(\"aria-expanded\",\"false\"))})})},{}],2:[function(t,e,i){var v=jQuery;v(document).ready(function(){var r=!1;v(\"#wpr-action-refresh_account\").on(\"click\",function(t){var e,i,n;return r||(e=v(this),i=v(\"#wpr-account-data\"),n=v(\"#wpr-expiration-data\"),t.preventDefault(),r=!0,e.trigger(\"blur\"),n.removeClass(\"wpr-isValid wpr-isInvalid\"),v.post(ajaxurl,{action:\"rocket_refresh_customer_data\",_ajax_nonce:rocket_ajax_data.nonce},function(t){e.removeClass(\"wpr-isLoading\"),e.addClass(\"wpr-isHidden\"),!0===t.success?(i.html(t.data.license_type),n.addClass(t.data.license_class).html(t.data.license_expiration),setTimeout(function(){e.removeClass(\"wpr-icon-refresh wpr-isHidden\"),e.addClass(\"wpr-icon-check\")},250)):setTimeout(function(){e.removeClass(\"wpr-icon-refresh wpr-isHidden\"),e.addClass(\"wpr-icon-close\")},250),setTimeout(function(){new TimelineLite({onComplete:function(){r=!1}}).set(e,{css:{className:\"+=wpr-isHidden\"}}).set(e,{css:{className:\"-=wpr-icon-check\"}},.25).set(e,{css:{className:\"-=wpr-icon-close\"}}).set(e,{css:{className:\"+=wpr-icon-refresh\"}},.25).set(e,{css:{className:\"-=wpr-isHidden\"}})},2e3)})),!1}),v(\".wpr-radio input[type=checkbox]\").on(\"change\",function(t){t.preventDefault();var t=v(this).attr(\"id\"),e=v(this).prop(\"checked\")?1:0;0<=[\"cloudflare_auto_settings\",\"cloudflare_devmode\",\"analytics_enabled\"].indexOf(t)||v.post(ajaxurl,{action:\"rocket_toggle_option\",_ajax_nonce:rocket_ajax_data.nonce,option:{name:t,value:e}},function(t){})}),v(\"#wpr-action-rocket_enable_mobile_cpcss\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr-action-rocket_enable_mobile_cpcss\").addClass(\"wpr-isLoading\"),v.post(ajaxurl,{action:\"rocket_enable_mobile_cpcss\",_ajax_nonce:rocket_ajax_data.nonce},function(t){t.success&&(v(\"#wpr-action-rocket_enable_mobile_cpcss\").hide(),v(\".wpr-hide-on-click\").hide(),v(\".wpr-show-on-click\").show(),v(\"#wpr-action-rocket_enable_mobile_cpcss\").removeClass(\"wpr-isLoading\"))})}),v(\"#wpr-action-rocket_enable_google_fonts\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr-action-rocket_enable_google_fonts\").addClass(\"wpr-isLoading\"),v.post(ajaxurl,{action:\"rocket_enable_google_fonts\",_ajax_nonce:rocket_ajax_data.nonce},function(t){t.success&&(v(\"#wpr-action-rocket_enable_google_fonts\").hide(),v(\".wpr-hide-on-click\").hide(),v(\".wpr-show-on-click\").show(),v(\"#wpr-action-rocket_enable_google_fonts\").removeClass(\"wpr-isLoading\"),v(\"#minify_google_fonts\").val(1))})}),v(\"#rocket-dismiss-promotion\").on(\"click\",function(t){t.preventDefault(),v.post(ajaxurl,{action:\"rocket_dismiss_promo\",nonce:rocket_ajax_data.nonce},function(t){t.success&&v(\"#rocket-promo-banner\").hide(\"slow\")})}),v(\"#rocket-dismiss-renewal\").on(\"click\",function(t){t.preventDefault(),v.post(ajaxurl,{action:\"rocket_dismiss_renewal\",nonce:rocket_ajax_data.nonce},function(t){t.success&&v(\"#rocket-renewal-banner\").hide(\"slow\")})}),v(\"#wpr-update-exclusion-list\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr-update-exclusion-msg\").html(\"\"),v.ajax({url:rocket_ajax_data.rest_url,beforeSend:function(t){t.setRequestHeader(\"X-WP-Nonce\",rocket_ajax_data.rest_nonce),t.setRequestHeader(\"Accept\",\"application/json, */*;q=0.1\"),t.setRequestHeader(\"Content-Type\",\"application/json\")},method:\"PUT\",success:function(e){let i=v(\"#wpr-update-exclusion-msg\");i.html(\"\"),void 0!==e.success?i.append(''+e.message+\"
\"):Object.keys(e).forEach(t=>{i.append(\"\"+t+\": \"),i.append(e[t].message),i.append(\" \")})}})}),v(\"#wpr_enable_mobile_cache\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr_enable_mobile_cache\").addClass(\"wpr-isLoading\"),v.post(ajaxurl,{action:\"rocket_enable_mobile_cache\",_ajax_nonce:rocket_ajax_data.nonce},function(t){t.success&&(v(\"#wpr_enable_mobile_cache\").hide(),v(\"#wpr_mobile_cache_default\").hide(),v(\"#wpr_mobile_cache_response\").show(),v(\"#wpr_enable_mobile_cache\").removeClass(\"wpr-isLoading\"),v(\"#cache_mobile\").val(1),v(\"#do_caching_mobile_files\").val(1))})})}),document.addEventListener(\"DOMContentLoaded\",function(){var t=document.getElementById(\"analytics_enabled\");t&&t.addEventListener(\"change\",function(){var t=this.checked;\"undefined\"!=typeof rocket_mixpanel_data&&(rocket_mixpanel_data.optin_enabled=t?\"1\":\"0\"),fetch(ajaxurl,{method:\"POST\",headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},body:new URLSearchParams({action:\"rocket_toggle_optin\",value:t?1:0,_ajax_nonce:rocket_ajax_data.nonce})})})}),document.addEventListener(\"DOMContentLoaded\",function(){let t=2e3,e=5e3,i=Array.isArray(window.rocket_ajax_data?.rocket_insights_ids)?window.rocket_ajax_data.rocket_insights_ids.slice():[],n=t,r=null,s=!0,a={data:{status:\"\",score:0,pages_num:0},html:\"\",row_html:\"\",disabled_btn_html:{global_score_widget:\"\",rocket_insights:\"\"}},o=(window.rocket_ajax_data?.global_score_data&&(a=window.rocket_ajax_data.global_score_data),v(\"#wpr-speed-radar-url-input\")),l=v(\".wpr-ri-urls-table tbody\"),c=v(\".wpr-ri-urls-table\");function p(t){i.includes(t)||i.push(t)}function d(t){var e=v(\".wpr-ri-summary-info\"),i=\"1\"===window.rocket_ajax_data?.is_free,i=v(i?\"#wpr-ri-quota-banner\":\"#rocket_insights_survey\");!1===t||!s?(e.hide(),i.removeClass(\"hidden\")):(e.show(),i.addClass(\"hidden\"))}function h(t){void 0!==t&&s!==t&&(s=t,document.querySelectorAll(\".wpr-action-speed_radar_refresh\").forEach(t=>{var e=t.closest(\".wpr-ri-item\");e&&(e=parseInt(e.dataset.rocketInsightsId,10),e=i.includes(e),!s||e?(t.classList.add(\"wpr-ri-action--disabled\"),t.setAttribute(\"disabled\",\"true\"),s||(t.classList.add(\"wpr-btn-with-tool-tip\"),t.setAttribute(\"title\",window.rocket_ajax_data?.rocket_insights_no_credit_tooltip||\"Upgrade your plan to get access to re-test performance or run new tests\"))):(t.classList.remove(\"wpr-ri-action--disabled\",\"wpr-btn-with-tool-tip\"),t.removeAttribute(\"disabled\"),t.removeAttribute(\"title\")))}))}function u(){r&&(clearTimeout(r),r=null),n=t}function _(){0{0===i.length?u():window.wp.apiFetch({path:window.wp.url.addQueryArgs(\"/wp-rocket/v1/rocket-insights/pages/progress\",{ids:i})}).then(t=>{t.success&&Array.isArray(t.results)?(h(t.has_credit),d(t.can_add_pages),a.data.status===t.global_score_data.data.status&&a.data.pages_num===t.global_score_data.data.pages_num||(a=t.global_score_data,v(\".wpr-global-score-widget\").html(t.global_score_data.html),f(a),document.dispatchEvent(new CustomEvent(\"wprGlobalScoreUpdated\",{detail:a.data}))),t.results.forEach(t=>{if(v(`.wpr-ri-item[data-rocket-insights-id=\"${t.id}\"]`).replaceWith(t.html),v(document).trigger(\"rocket-insights-page-test-polling\",[t.id]),\"completed\"===t.status&&v(document).trigger(\"rocket-insights-page-test-completed\",[t.id]),\"completed\"===t.status||\"failed\"===t.status){t=t.id;let e=parseInt(t,10);i=i.filter(t=>parseInt(t,10)!==e)}}),n=Math.min(1.3*n,e),_()):(i=[],u(),console.error(\"Polling error:\",t.results||t))})},n))}function f(t){var e=v(\".wpr-ri-urls-table .wpr-global-score\");0{try{var e=new URL(t);return e.hostname.includes(\".\")&&0{var e;t.success?(e=t.id,i.includes(e)||(o.val(\"\"),l.append(t.html),v(document).trigger(\"rocket-insights-page-added\"),c.removeClass(\"hidden\"),p(t.id),(e=v(\"#rocket_rocket_insights_pages_num\")).text(parseInt(e.text())+1),h(t.has_credit),f(a=t.global_score_data),\"disabled_btn_html\"in a&&v(\"#wpr_rocket_insights_add_page_btn_wrapper\").html(a.disabled_btn_html.rocket_insights),d(t.can_add_pages),r&&u(),_())):(o.val(\"\"),t?.message&&t.message.includes(\"Maximum number of URLs reached\")&&(disableAddUrlElements(),d(void 0!==t.can_add_pages&&t.can_add_pages)),console.error(t?.message||t))})):alert(\"Please enter a valid URL\"))}),v(document).on(\"click\",\".wpr-action-speed_radar_refresh\",function(t){t.preventDefault();var e=(t=v(this)).parents(\".wpr-ri-item\").data(\"rocket-insights-id\");e&&(t=t.data(\"source\"),window.wp.apiFetch({path:\"/wp-rocket/v1/rocket-insights/pages/\"+e,method:\"PATCH\",data:{source:t}}).then(t=>{t.success?(p(t.id),v(`#ri_details_${t.id} .details-section-td`).remove(),v(`[data-rocket-insights-id=\"${t.id}\"]`).replaceWith(t.html),v(document).trigger(\"rocket-insights-page-retest\",[t.id]),h(t.has_credit),d(t.can_add_pages),f(a=t.global_score_data),r&&u(),_()):console.error(t?.message||t)}))}),v(document).on(\"keypress\",\"#wpr-speed-radar-url-input\",function(t){\"Enter\"===t.key&&(t.preventDefault(),v(\"#wpr-action-add_page_speed_radar\").click())}),\"wprocket\"===new URLSearchParams(window.location.search).get(\"page\")&&0{f(a)},30)}),v(document).on(\"click\",\".wpr-ri-item-toggle-single\",function(){var t,e,i,n,r=v(this).closest(\".wpr-ri-item\").data(\"rocket-insights-id\");t=\"url_expand\",e=v(\"#ri_details_\"+(r=r)),i=e.hasClass(\"wpr-ri-details--expanded\"),n=v(`[data-rocket-insights-id=\"${r}\"] .wpr-ri-item-toggle-single`).is(v(\".wpr-ri-item-toggle-single\").last()),i?(e.removeClass(\"wpr-ri-details--expanded\"),v(`[data-rocket-insights-id=\"${r}\"]`).removeClass(\"wpr-ri-item--expanded\"),n&&w(!1)):(e.addClass(\"wpr-ri-details--expanded\"),v(`[data-rocket-insights-id=\"${r}\"]`).addClass(\"wpr-ri-item--expanded\"),g(\"expand\",r,t),n&&w())}),v(document).on(\"click\",\".wpr-ri-item-toggle-all\",function(){0{var t,e,i;\"wprocket\"===new URLSearchParams(window.location.search).get(\"page\")&&\"#rocket_insights\"===window.location.hash&&(m(!0),i=(t=new URLSearchParams(window.location.search)).get(\"ri_id\"),e=v(\".wpr-ri-item--expanded\")?.first()?.data(\"rocket-insights-id\"),i&&\"\"!==i?(g(\"expand\",i,\"post type listing\"),v(\"html, body\").animate({scrollTop:v(`[data-rocket-insights-id=\"${i}\"]`).offset().top-100},500),t.delete(\"ri_id\"),i=window.location.pathname+\"?\"+t.toString()+window.location.hash,window.history.replaceState({},\"\",i)):e&&g(\"expand\",e,\"auto_expand_url\"))})})},{}],3:[function(t,e,i){t(\"../lib/greensock/TweenLite.min.js\"),t(\"../lib/greensock/TimelineLite.min.js\"),t(\"../lib/greensock/easing/EasePack.min.js\"),t(\"../lib/greensock/plugins/CSSPlugin.min.js\"),t(\"../lib/greensock/plugins/ScrollToPlugin.min.js\"),t(\"../global/pageManager.js\"),t(\"../global/main.js\"),t(\"../global/fields.js\"),t(\"../global/beacon.js\"),t(\"../global/ajax.js\"),t(\"../global/recommendations-widget.js\"),t(\"../global/rocketcdn.js\"),t(\"../global/countdown.js\"),t(\"../global/mixpanel.js\")},{\"../global/ajax.js\":2,\"../global/beacon.js\":4,\"../global/countdown.js\":5,\"../global/fields.js\":6,\"../global/main.js\":7,\"../global/mixpanel.js\":8,\"../global/pageManager.js\":9,\"../global/recommendations-widget.js\":10,\"../global/rocketcdn.js\":11,\"../lib/greensock/TimelineLite.min.js\":12,\"../lib/greensock/TweenLite.min.js\":13,\"../lib/greensock/easing/EasePack.min.js\":14,\"../lib/greensock/plugins/CSSPlugin.min.js\":15,\"../lib/greensock/plugins/ScrollToPlugin.min.js\":16}],4:[function(t,e,i){var n=jQuery;n(document).ready(function(){function i(t,e){\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&(rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify&&mixpanel.identify(rocket_mixpanel_data.user_id),mixpanel.track(\"Button Clicked\",{button:t,button_context:e,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,context:rocket_mixpanel_data.context,path:rocket_mixpanel_data.path}))}\"Beacon\"in window&&n(\".wpr-infoAction--help\").on(\"click\",function(t){var e=n(this).data(\"beacon-id\");return i(n(this).data(\"wpr_track_button\")||\"Beacon Help\",n(this).data(\"wpr_track_context\")||\"Settings\"),0!==(e=(e=e).split(\",\")).length&&(1{l(t).attr(\"checked\",i?null:\"checked\")}):(e=l(e).closest(\".wpr-list\").find(\".wpr-main-checkbox\"),n=l.map(r,t=>{if(void 0!==l(t).attr(\"checked\"))return t}),e.attr(\"checked\",n.length===r.length?\"checked\":null))}),0{var i=l(e).parents(\".wpr-list\").find(\".wpr-list-body input[type=checkbox]:not(:checked)\").length;l(e).attr(\"checked\",i<=0?\"checked\":null)});let a={checked:{},total:{}};l(\".wpr-field--categorizedmultiselect .wpr-list\").each(function(){var t=l(this).attr(\"id\");t&&(a.checked[t]=l(`#${t} input[type='checkbox']:checked`).length,a.total[t]=l(`#${t} input[type='checkbox']:not(.wpr-main-checkbox)`).length,l(`#${t} .wpr-badge-counter span`).text(a.checked[t]),l(`#${t} .wpr-badge-counter`).toggle(0\"symbol\"==typeof(t=((t,e)=>{if(\"object\"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0===i)return(\"string\"===e?String:Number)(t);if(\"object\"!=typeof(i=i.call(t,e||\"default\")))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")})(t,\"string\"))?t:t+\"\")(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i}(class r{constructor(t){n(this,\"trackedTabs\",[\"dashboard\",\"rocket_insights\"]),this.config=t}init(){\"undefined\"!=typeof mixpanel&&mixpanel.track&&this.config.optin_enabled&&\"0\"!==this.config.optin_enabled&&(mixpanel.identify(this.config.user_id),this._initListeners(this))}_initListeners(t){window.addEventListener(\"hashchange\",t._onHashChange.bind(t)),window.addEventListener(\"load\",t._onPageLoad.bind(t))}_onHashChange(t){var e=this._cleanHash(new URL(t.oldURL).hash),t=this._cleanHash(new URL(t.newURL).hash);this._canTrackTab(t)&&this._sendPageViewedEvent(this._getSource(e),t)}_onPageLoad(){var t=this._cleanHash(window.location.hash);this._canTrackTab(t)&&this._sendPageViewedEvent(this._getSource(),t)}_cleanHash(t){return t&&t.startsWith(\"#\")?t.substring(1):t}_canTrackTab(t){return this.trackedTabs.includes(t)}_getSource(t=\"\"){return t?\"settings_\"+t:this._getSourceFromQueryStringAndRemoveIt()||this._getSourceFromReferrer()}_getSourceFromQueryStringAndRemoveIt(){var t,e=new URL(window.location.href),i=e.searchParams;return i.has(\"rocket_source\")?(t=i.get(\"rocket_source\"),i.delete(\"rocket_source\"),window.history.replaceState(null,\"\",e.search?e.href:e.pathname),t):\"\"}_getSourceFromReferrer(){var t=document.referrer;return t?t.includes(window.location.hostname)?\"internal\":\"external\":\"noreferrer\"}_sendPageViewedEvent(t,e){mixpanel.track(\"Page Viewed\",{path:\"/wp-admin/options-general.php?page=wprocket#\"+e,page_name:e.replace(\"_\",\" \"),source:t,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,context:rocket_mixpanel_data.context})}static run(){\"undefined\"!=typeof rocket_mixpanel_data&&new r(rocket_mixpanel_data).init()}}).run()},{}],9:[function(t,e,i){function n(t){var e,i=this;this.$body=document.querySelector(\".wpr-body\"),this.$menuItems=document.querySelectorAll(\".wpr-menuItem\"),this.$submitButton=document.querySelector(\".wpr-Content > form > #wpr-options-submit\"),this.$pages=document.querySelectorAll(\".wpr-Page\"),this.$sidebar=document.querySelector(\".wpr-Sidebar\"),this.$content=document.querySelector(\".wpr-Content\"),this.$tips=document.querySelector(\".wpr-Content-tips\"),this.$links=document.querySelectorAll(\".wpr-body a\"),this.$menuItem=null,this.$page=null,this.pageId=null,this.bodyTop=0,this.buttonText=this.$submitButton.value,i.getBodyTop(),window.onhashchange=function(){i.detectID()},window.location.hash?(this.bodyTop=0,this.detectID()):(e=localStorage.getItem(\"wpr-hash\"),this.bodyTop=0,e?(window.location.hash=e,this.detectID()):(this.$menuItems[0].classList.add(\"isActive\"),localStorage.setItem(\"wpr-hash\",\"dashboard\"),window.location.hash=\"#dashboard\"));for(var n=0;n{window.wp&&window.wp.apiFetch?window.wp.apiFetch({path:\"/wp-rocket/v1/recommendations\"}).then(function(t){e(t)}).catch(function(t){console.error(\"Failed to fetch recommendations status:\",t)}):fetch(window.wpApiSettings?.root+\"wp-rocket/v1/recommendations\",{headers:{\"X-WP-Nonce\":window.wpApiSettings?.nonce||\"\"}}).then(function(t){if(t.ok)return t.json();throw new Error(\"Network response was not ok\")}).then(function(t){e(t)}).catch(function(t){console.error(\"Failed to fetch recommendations status:\",t)})})})},{}],11:[function(t,e,i){{var c=document,p=window;function d(){return\"#page_cdn\"===p.location.hash}c.addEventListener(\"DOMContentLoaded\",()=>{if(c.querySelectorAll(\".wpr-rocketcdn-open\").forEach(e=>{e.addEventListener(\"click\",t=>{t.preventDefault(),e.classList.contains(\"wpr-rocketcdn-pricing--cta\")&&n(\"RocketCDN Upsell CTA Clicked\"),p.rocketcdnButtonUrl&&\"\"!==p.rocketcdnButtonUrl?setTimeout(function(){p.location.href=p.rocketcdnButtonUrl},100):MicroModal.show(\"wpr-rocketcdn-modal\")})}),MicroModal.init({disableScroll:!0}),!p.rocketcdnButtonUrl||\"\"===p.rocketcdnButtonUrl){{let t=\"\",e=u(t=(t+=\"action=rocketcdn_process_status\")+\"&nonce=\"+rocket_ajax_data.nonce);e.onreadystatechange=()=>{e.readyState===XMLHttpRequest.DONE&&200===e.status&&!0===JSON.parse(e.responseText).success&&MicroModal.show(\"wpr-rocketcdn-modal\")}}(e=new URLSearchParams(p.location.search)).has(\"rocketcdn_open_iframe\")&&\"1\"===e.get(\"rocketcdn_open_iframe\")&&(p.location.hash=\"#page_cdn\",MicroModal.show(\"wpr-rocketcdn-modal\"),e.delete(\"rocketcdn_open_iframe\"),e=e.toString(),e=p.location.pathname+(e?\"?\"+e:\"\")+p.location.hash,p.history.replaceState({},\"\",e));e=c.getElementById(\"rocketcdn-iframe\");let t=c.getElementById(\"wpr-rocketcdn-modal-loader\");e&&t&&e.addEventListener(\"load\",function(){t.style.display=\"none\"})}var e});let l=!1;function h(){var t,e;!l&&d()&&(t=c.querySelector(\"#wpr-rocketcdn-cta-small\"),(e=c.querySelector(\"#wpr-rocketcdn-cta\"))&&!e.classList.contains(\"wpr-isHidden\")||t&&!t.classList.contains(\"wpr-isHidden\"))&&(_(),l=!0)}function u(t){var e=new XMLHttpRequest;return e.open(\"POST\",ajaxurl),e.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),e.send(t),e}function n(t,e){if(\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify){mixpanel.identify(rocket_mixpanel_data.user_id);var i={context:rocket_mixpanel_data.context,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,path:rocket_mixpanel_data.path};if(e&&\"object\"==typeof e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(i[n]=e[n]);mixpanel.track(t,i)}}function _(){n(\"RocketCDN Upsell Banner Viewed\")}p.addEventListener(\"load\",()=>{let t=c.querySelector(\"#wpr-rocketcdn-open-cta\"),e=c.querySelector(\"#wpr-rocketcdn-close-cta\"),i=c.querySelector(\"#wpr-rocketcdn-cta-small\"),n=c.querySelector(\"#wpr-rocketcdn-cta\"),r=c.querySelector(\".wpr-rocketcdn-toggle--input\"),s=(h(),p.addEventListener(\"hashchange\",()=>{h()}),{monthly:{regular:c.querySelectorAll(\".wpr-rocketcdn-pricing-regular-price--monthly\"),current:c.querySelectorAll(\".wpr-rocketcdn-pricing--monthly\"),period:c.querySelectorAll(\".wpr-rocketcdn-pricing--billing-period--monthly\")},yearly:{regular:c.querySelectorAll(\".wpr-rocketcdn-pricing-regular-price--yearly\"),current:c.querySelectorAll(\".wpr-rocketcdn-pricing--annual\"),period:c.querySelectorAll(\".wpr-rocketcdn-pricing--billing-period--yearly\")}});function a(t){var e=\"\";return e+\"action=toggle_rocketcdn_cta\"+(\"&status=\"+t)+(\"&nonce=\"+rocket_ajax_data.nonce)}null!==t&&null!==i&&null!==n&&t.addEventListener(\"click\",t=>{t.preventDefault(),i.classList.add(\"wpr-isHidden\"),n.classList.remove(\"wpr-isHidden\"),d()&&!l&&(_(),l=!0),u(a(\"big\"))}),null!==e&&null!==i&&null!==n&&e.addEventListener(\"click\",t=>{t.preventDefault(),i.classList.remove(\"wpr-isHidden\"),n.classList.add(\"wpr-isHidden\"),u(a(\"small\"))}),r.addEventListener(\"change\",function(){var t=this.checked;t?(Object.values(s.monthly).forEach(t=>t.forEach(t=>t.classList.add(\"wpr-isHidden\"))),Object.values(s.yearly).forEach(t=>t.forEach(t=>t.classList.remove(\"wpr-isHidden\")))):(Object.values(s.monthly).forEach(t=>t.forEach(t=>t.classList.remove(\"wpr-isHidden\"))),Object.values(s.yearly).forEach(t=>t.forEach(t=>t.classList.add(\"wpr-isHidden\")))),t=t,p.rocketcdnButtonUrl&&\"\"!==p.rocketcdnButtonUrl&&(p.rocketcdnButtonUrl=((t,e)=>{let i=t.replace(/([?&])is_monthly=[^&]*/g,\"\"),n=i.includes(\"?\")?\"&\":\"?\";return i+=n+\"is_monthly=\"+(e?\"0\":\"1\")})(p.rocketcdnButtonUrl,t))});var o=c.querySelector(\"#wpr-rocketcdn-activation-cta\");o&&o.addEventListener(\"click\",()=>{\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&(rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify&&mixpanel.identify(rocket_mixpanel_data.user_id),mixpanel.track(\"RocketCDN Activation Failed CTA Clicked\",{context:rocket_mixpanel_data.context,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app}))})}),p.onmessage=t=>{var e=rocket_ajax_data.origin_url;if(t.origin===e){(n=t.data).hasOwnProperty(\"cdnFrameHeight\")&&(c.getElementById(\"rocketcdn-iframe\").style.height=n.cdnFrameHeight+\"px\"),(n=t.data).hasOwnProperty(\"cdnFrameClose\")&&(MicroModal.close(\"wpr-rocketcdn-modal\"),c.body.style.overflow=\"\",n.hasOwnProperty(\"cdn_page_message\"))&&-1!==[\"iframe-payment-success\",\"iframe-unsubscribe-success\"].indexOf(n.cdn_page_message)&&c.location.reload();{var n=t.data;var r=e;let i=c.querySelector(\"#rocketcdn-iframe\").contentWindow;if(n.hasOwnProperty(\"rocketcdn_token\")){var s=\"\";let e=u(s+\"action=save_rocketcdn_token\"+(\"&value=\"+n.rocketcdn_token)+(\"&nonce=\"+rocket_ajax_data.nonce));e.onreadystatechange=()=>{var t;e.readyState===XMLHttpRequest.DONE&&200===e.status&&(t=JSON.parse(e.responseText),i.postMessage({success:t.success,data:t.data,rocketcdn:!0},r))}}else{s={process:\"subscribe\",message:\"token_not_received\"};i.postMessage({success:!1,data:s,rocketcdn:!0},r)}}(n=t.data).hasOwnProperty(\"rocketcdn_process\")&&u(\"\"+\"action=rocketcdn_process_set\"+(\"&status=\"+n.rocketcdn_process)+(\"&nonce=\"+rocket_ajax_data.nonce));{var n=t.data;var a=e;let i=c.querySelector(\"#rocketcdn-iframe\").contentWindow;if(n.hasOwnProperty(\"rocketcdn_url\")){var o=\"\";let e=u(o+\"action=rocketcdn_enable\"+(\"&cdn_url=\"+n.rocketcdn_url)+(\"&nonce=\"+rocket_ajax_data.nonce));e.onreadystatechange=()=>{var t;e.readyState===XMLHttpRequest.DONE&&200===e.status&&(t=JSON.parse(e.responseText),i.postMessage({success:t.success,data:t.data,rocketcdn:!0},a))}}}{o=t.data;var l=e;let i=c.querySelector(\"#rocketcdn-iframe\").contentWindow;if(o.hasOwnProperty(\"rocketcdn_disable\")){o=\"\";let e=u((o+=\"action=rocketcdn_disable\")+(\"&nonce=\"+rocket_ajax_data.nonce));e.onreadystatechange=()=>{var t;e.readyState===XMLHttpRequest.DONE&&200===e.status&&(t=JSON.parse(e.responseText),i.postMessage({success:t.success,data:t.data,rocketcdn:!0},l))}}}(n=t.data).hasOwnProperty(\"rocketcdn_validate_token\")&&n.hasOwnProperty(\"rocketcdn_validate_cname\")&&u(\"\"+\"action=rocketcdn_validate_token_cname\"+(\"&cdn_url=\"+n.rocketcdn_validate_cname)+(\"&cdn_token=\"+n.rocketcdn_validate_token)+(\"&nonce=\"+rocket_ajax_data.nonce))}}}},{}],12:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"TimelineLite\",[\"core.Animation\",\"core.SimpleTimeline\",\"TweenLite\"],function(p,d,h){function u(t){d.call(this,t),this._labels={},this.autoRemoveChildren=!0===this.vars.autoRemoveChildren,this.smoothChildTiming=!0===this.vars.smoothChildTiming,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;var e,i,n=this.vars;for(i in n)e=n[i],g(e)&&-1!==e.join(\"\").indexOf(\"{self}\")&&(n[i]=this._swapSelfInParams(e));g(n.tweens)&&this.add(n.tweens,0,n.align,n.stagger)}function _(t){var e,i={};for(e in t)i[e]=t[e];return i}function r(t,e,i,n){t._timeline.pause(t._startTime),e&&e.apply(n||t._timeline,i||w)}var f=1e-10,m=h._internals.isSelector,g=h._internals.isArray,w=[],a=window._gsDefine.globals,v=w.slice,t=u.prototype=new d;return u.version=\"1.12.1\",t.constructor=u,t.kill()._gc=!1,t.to=function(t,e,i,n){var r=i.repeat&&a.TweenMax||h;return e?this.add(new r(t,e,i),n):this.set(t,i,n)},t.from=function(t,e,i,n){return this.add((i.repeat&&a.TweenMax||h).from(t,e,i),n)},t.fromTo=function(t,e,i,n,r){var s=n.repeat&&a.TweenMax||h;return e?this.add(s.fromTo(t,e,i,n),r):this.set(t,n,r)},t.staggerTo=function(t,e,i,n,r,s,a,o){var l,c=new u({onComplete:s,onCompleteParams:a,onCompleteScope:o,smoothChildTiming:this.smoothChildTiming});for(\"string\"==typeof t&&(t=h.selector(t)||t),m(t)&&(t=v.call(t,0)),n=n||0,l=0;t.length>l;l++)i.startAt&&(i.startAt=_(i.startAt)),c.to(t[l],e,_(i),l*n);return this.add(c,r)},t.staggerFrom=function(t,e,i,n,r,s,a,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,n,r,s,a,o)},t.staggerFromTo=function(t,e,i,n,r,s,a,o,l){return n.startAt=i,n.immediateRender=0!=n.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,n,r,s,a,o,l)},t.call=function(t,e,i,n){return this.add(h.delayedCall(0,t,e,i),n)},t.set=function(t,e,i){return i=this._parseTimeOrLabel(i,0,!0),null==e.immediateRender&&(e.immediateRender=i===this._time&&!this._paused),this.add(new h(t,0,e),i)},u.exportRoot=function(t,e){null==(t=t||{}).smoothChildTiming&&(t.smoothChildTiming=!0);var i,n,r=new u(t),t=r._timeline;for(null==e&&(e=!0),t._remove(r,!0),r._startTime=0,r._rawPrevTime=r._time=r._totalTime=t._time,i=t._first;i;)n=i._next,e&&i instanceof h&&i.target===i.vars.onComplete||r.add(i,i._startTime-i._delay),i=n;return t.add(r,0),r},t.add=function(t,e,i,n){var r,s,a,o,l,c;if(\"number\"!=typeof e&&(e=this._parseTimeOrLabel(e,0,!0,t)),!(t instanceof p)){if(t instanceof Array||t&&t.push&&g(t)){for(i=i||\"normal\",n=n||0,r=e,s=t.length,a=0;at._startTime;l._timeline;)c&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return this},t.remove=function(t){if(t instanceof p)return this._remove(t,!1);if(t instanceof Array||t&&t.push&&g(t)){for(var e=t.length;-1<--e;)this.remove(t[e]);return this}return\"string\"==typeof t?this.removeLabel(t):this.kill(null,t)},t._remove=function(t,e){d.prototype._remove.call(this,t,e);t=this._last;return t?this._time>t._startTime+t._totalDuration/t._timeScale&&(this._time=this.duration(),this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},t.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},t.insert=t.insertMultiple=function(t,e,i,n){return this.add(t,e||0,i,n)},t.appendMultiple=function(t,e,i,n){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,n)},t.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},t.addPause=function(t,e,i,n){return this.call(r,[\"{self}\",e,i,n],this,t)},t.removeLabel=function(t){return delete this._labels[t],this},t.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},t._parseTimeOrLabel=function(t,e,i,n){var r;if(n instanceof p&&n.timeline===this)this.remove(n);else if(n&&(n instanceof Array||n.push&&g(n)))for(r=n.length;-1<--r;)n[r]instanceof p&&n[r].timeline===this&&this.remove(n[r]);if(\"string\"==typeof e)return this._parseTimeOrLabel(e,i&&\"number\"==typeof t&&null==this._labels[e]?t-this.duration():0,i);if(e=e||0,\"string\"!=typeof t||!isNaN(t)&&null==this._labels[t])null==t&&(t=this.duration());else{if(-1===(r=t.indexOf(\"=\")))return null==this._labels[t]?i?this._labels[t]=this.duration()+e:e:this._labels[t]+e;e=parseInt(t.charAt(r-1)+\"1\",10)*Number(t.substr(r+1)),t=1f)&&(a=\"onReverseComplete\")),this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:f,t=l+1e-4):t<1e-7?(((this._totalTime=this._time=0)!==c||0===this._duration&&this._rawPrevTime!==f&&(0=c)for(n=this._first;n&&(s=n._next,!this._paused||h);)(n._active||n._startTime<=this._time&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=s;else for(n=this._last;n&&(s=n._prev,!this._paused||h);)(n._active||c>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=s;this._onUpdate&&!e&&this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||w),!a||this._gc||p!==this._startTime&&d===this._timeScale||!(0===this._time||l>=this.totalDuration())||(r&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),e)||!this.vars[a]||this.vars[a].apply(this.vars[a+\"Scope\"]||this,this.vars[a+\"Params\"]||w)}},t._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof u&&t._hasPausedChild())return!0;t=t._next}return!1},t.getChildren=function(t,e,i,n){n=n||-9999999999;for(var r=[],s=this._first,a=0;s;)n>s._startTime||(s instanceof h?!1!==e&&(r[a++]=s):(!1!==i&&(r[a++]=s),!1!==t&&(a=(r=r.concat(s.getChildren(!0,e,i))).length))),s=s._next;return r},t.getTweensOf=function(t,e){var i,n,r=this._gc,s=[],a=0;for(r&&this._enabled(!0,!0),n=(i=h.getTweensOf(t)).length;-1<--n;)(i[n].timeline===this||e&&this._contains(i[n]))&&(s[a++]=i[n]);return r&&this._enabled(!1,!0),s},t._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},t.shiftChildren=function(t,e,i){i=i||0;for(var n,r=this._first,s=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(n in s)s[n]>=i&&(s[n]+=t);return this._uncache(!0)},t._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),n=i.length,r=!1;-1<--n;)i[n]._kill(t,e)&&(r=!0);return r},t.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;-1<--i;)e[i]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},t.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},t._enabled=function(t,e){if(t===this._gc)for(var i=this._first;i;)i._enabled(t,!0),i=i._next;return d.prototype._enabled.call(this,t,e)},t.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},t.totalDuration=function(t){if(arguments.length)return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this;if(this._dirty){for(var e,i,n=0,r=this._last,s=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>s&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):s=r._startTime,r._startTime<0&&!r._paused&&(n-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),s=0),n<(i=r._startTime+r._totalDuration/r._timeScale)&&(n=i),r=e;this._duration=this._totalDuration=n,this._dirty=!1}return this._totalDuration},t.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===p._rootFramesTimeline},t.rawTime=function(){return this._paused?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},u},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],13:[function(E,h,X){var e,F,_=window,u=_.GreenSockGlobals||_;if(!u.TweenLite){var f,B=function(t){for(var e=t.split(\".\"),i=u,n=0;e.length>n;n++)i[e[n]]=i=i[e[n]]||{};return i},d=B(\"com.greensock\"),m=1e-10,N=[].slice,z=function(){},g=(e=Object.prototype.toString,F=e.call([]),function(t){return null!=t&&(t instanceof Array||\"object\"==typeof t&&!!t.push&&e.call(t)===F)}),w={},q=function(o,l,c,p){this.sc=w[o]?w[o].sc:[],(w[o]=this).gsClass=null,this.func=c;var d=[];this.check=function(t){for(var e,i,n,r,s=l.length,a=s;-1<--s;)(e=w[l[s]]||new q(l[s],[])).gsClass?(d[s]=e.gsClass,a--):t&&e.sc.push(this);if(0===a&&c)for(n=(i=(\"com.greensock.\"+o).split(\".\")).pop(),r=B(i.join(\".\"))[n]=this.gsClass=c.apply(c,d),p&&(u[n]=r,\"function\"==typeof define&&define.amd?define((_.GreenSockAMDPath?_.GreenSockAMDPath+\"/\":\"\")+o.split(\".\").join(\"/\"),[],function(){return r}):void 0!==h&&h.exports&&(h.exports=r)),s=0;this.sc.length>s;s++)this.sc[s].check()},this.check(!0)},n=_._gsDefine=function(t,e,i,n){return new q(t,e,i,n)},v=d._class=function(t,e,i){return e=e||function(){},n(t,[],function(){return e},i),e},Y=(n.globals=u,[0,0,1,1]),y=[],p=v(\"easing.Ease\",function(t,e,i,n){this._func=t,this._type=i||0,this._power=n||0,this._params=e?Y.concat(e):Y},!0),x=p.map={},t=p.register=function(t,e,i,n){for(var r,s,a,o,l=e.split(\",\"),c=l.length,p=(i||\"easeIn,easeOut,easeInOut\").split(\",\");-1<--c;)for(s=l[c],r=n?v(\"easing.\"+s,null,!0):d.easing[s]||{},a=p.length;-1<--a;)o=p[a],x[s+\".\"+o]=x[o+s]=r[o]=t.getRatio?t:t[o]||new t},i=p.prototype;for(i._calcEnd=!1,i.getRatio=function(t){var e,i,n;return this._func?(this._params[0]=t,this._func.apply(null,this._params)):(n=1===(e=this._type)?1-t:2===e?t:t<.5?2*t:2*(1-t),1===(i=this._power)?n*=n:2===i?n*=n*n:3===i?n*=n*n*n:4===i&&(n*=n*n*n*n),1===e?1-n:2===e?n:t<.5?n/2:1-n/2)},s=(r=[\"Linear\",\"Quad\",\"Cubic\",\"Quart\",\"Quint,Strong\"]).length;-1<--s;)i=r[s]+\",Power\"+s,t(new p(null,null,1,s),i,\"easeOut\",!0),t(new p(null,null,2,s),i,\"easeIn\"+(0===s?\",easeNone\":\"\")),t(new p(null,null,3,s),i,\"easeInOut\");x.linear=d.easing.Linear.easeIn,x.swing=d.easing.Quad.easeInOut;for(var r,H=v(\"events.EventDispatcher\",function(t){this._listeners={},this._eventTarget=t||this}),k=((i=H.prototype).addEventListener=function(t,e,i,n,r){r=r||0;var s,a,o=this._listeners[t],l=0;for(null==o&&(this._listeners[t]=o=[]),a=o.length;-1<--a;)(s=o[a]).c===e&&s.s===i?o.splice(a,1):0===l&&r>s.pr&&(l=a+1);o.splice(l,0,{c:e,s:i,up:n,pr:r}),this!==S||f||S.wake()},i.removeEventListener=function(t,e){var i,n=this._listeners[t];if(n)for(i=n.length;-1<--i;)if(n[i].c===e)return void n.splice(i,1)},i.dispatchEvent=function(t){var e,i,n,r=this._listeners[t];if(r)for(e=r.length,i=this._eventTarget;-1<--e;)(n=r[e]).up?n.c.call(n.s||i,{type:t,target:i}):n.c.call(n.s||i)},_.requestAnimationFrame),b=_.cancelAnimationFrame,T=Date.now||function(){return(new Date).getTime()},P=T(),s=(r=[\"ms\",\"moz\",\"webkit\",\"o\"]).length;-1<--s&&!k;)k=_[r[s]+\"RequestAnimationFrame\"],b=_[r[s]+\"CancelAnimationFrame\"]||_[r[s]+\"CancelRequestAnimationFrame\"];v(\"Ticker\",function(t,e){var n,r,s,a,o,l=this,c=T(),i=!1!==e&&k,p=500,d=33,h=function(t){var e,i=T()-P;p=e&&e+this.totalDuration()/this._timeScale>t},i._enabled=function(t,e){return f||S.wake(),this._gc=!t,this._active=this.isActive(),!0!==e&&(t&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!t&&this.timeline&&this._timeline._remove(this,!0)),!1},i._kill=function(){return this._enabled(!1,!1)},i.kill=function(t,e){return this._kill(t,e),this},i._uncache=function(t){for(var e=t?this:this.timeline;e;)e._dirty=!0,e=e.timeline;return this},i._swapSelfInParams=function(t){for(var e=t.length,i=t.concat();-1<--e;)\"{self}\"===t[e]&&(i[e]=this);return i},i.eventCallback=function(t,e,i,n){if(\"on\"===(t||\"\").substr(0,2)){var r=this.vars;if(1===arguments.length)return r[t];null==e?delete r[t]:(r[t]=e,r[t+\"Params\"]=g(i)&&-1!==i.join(\"\").indexOf(\"{self}\")?this._swapSelfInParams(i):i,r[t+\"Scope\"]=n),\"onUpdate\"===t&&(this._onUpdate=e)}return this},i.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},i.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&0this._duration?this._duration:t,e)):this._time},i.totalTime=function(t,e,i){if(f||S.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var n=this._totalDuration,r=this._timeline;if(nn;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},i._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline)&&this._uncache(!0),this},i.render=function(t,e,i){var n,r=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;r;)n=r._next,(r._active||t>=r._startTime&&!r._paused)&&(r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=n},i.rawTime=function(){return f||S.wake(),this._totalTime},v(\"TweenLite\",function(t,e,i){if(o.call(this,e,i),this.render=C.prototype.render,null==t)throw\"Cannot tween a null target.\";this.target=t=\"string\"==typeof t&&C.selector(t)||t;var n,r,s,i=t.jquery||t.length&&t!==_&&t[0]&&(t[0]===_||t[0].nodeType&&t[0].style&&!t.nodeType),a=this.vars.overwrite;if(this._overwrite=a=null==a?Q[C.defaultOverwrite]:\"number\"==typeof a?a>>0:Q[a],(i||t instanceof Array||t.push&&g(t))&&\"number\"!=typeof t[0])for(this._targets=s=N.call(t,0),this._propLookup=[],this._siblings=[],n=0;s.length>n;n++)(r=s[n])?\"string\"!=typeof r?r.length&&r!==_&&r[0]&&(r[0]===_||r[0].nodeType&&r[0].style&&!r.nodeType)?(s.splice(n--,1),this._targets=s=s.concat(N.call(r,0))):(this._siblings[n]=I(r,this,!1),1===a&&1=a._startTime&&a._startTime+a.totalDuration()/a._timeScale>c&&((h||!a._initted)&&c-a._startTime<=2e-10||(p[d++]=a)));for(u=d;-1<--u;)a=p[u],2===n&&a._kill(i,t)&&(s=!0),(2!==n||!a._firstPT&&a._initted)&&a._enabled(!1,!1)&&(s=!0)}return s},Z=function(t,e,i){for(var n=t._timeline,r=n._timeScale,s=t._startTime;n._timeline;){if(s+=n._startTime,r*=n._timeScale,n._paused)return-100;n=n._timeline}return e<(s/=r)?s-e:i&&s===e||!t._initted&&s-e<2*m?m:(s+=t.totalDuration()/t._timeScale/r)>e+m?0:s-e-m},D=(i._init=function(){var t,e,i,n,r,s=this.vars,a=this._overwrittenProps,o=this._duration,l=!!s.immediateRender,c=s.ease;if(s.startAt){for(n in this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),r={},s.startAt)r[n]=s.startAt[n];if(r.overwrite=!1,r.immediateRender=!0,r.lazy=l&&!1!==s.lazy,r.startAt=r.delay=null,this._startAt=C.to(this.target,0,r),l)if(0o.pr;)n=n._next;(o._prev=n?n._prev:s)?o._prev._next=o:r=o,(o._next=n)?n._prev=o:s=o,o=a}o=e._firstPT=r}for(;o;)o.pg&&\"function\"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},D.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===D.API&&(R[(new t[e])._propName]=t[e]);return!0},n.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw\"illegal plugin definition.\";var e,i=t.propName,n=t.priority||0,r=t.overwriteProps,s={init:\"_onInitTween\",set:\"setRatio\",kill:\"_kill\",round:\"_roundProps\",initAll:\"_onInitAllProps\"},a=v(\"plugins.\"+i.charAt(0).toUpperCase()+i.substr(1)+\"Plugin\",function(){D.call(this,i,n),this._overwriteProps=r||[]},!0===t.global),o=a.prototype=new D(i);for(e in(o.constructor=a).API=t.API,s)\"function\"==typeof t[e]&&(o[s[e]]=t[e]);return a.version=t.version,D.activate([a]),a},r=_._gsQueue){for(s=0;r.length>s;s++)r[s]();for(i in w)w[i].func||_.console.log(\"GSAP encountered missing dependency: com.greensock.\"+i)}f=!1}},{}],14:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"easing.Back\",[\"easing.Ease\"],function(m){function t(t,e){var i=(t=c(\"easing.\"+t,function(){},!0)).prototype=new m;return i.constructor=t,i.getRatio=e,t}function e(t,e,i,n){return e=c(\"easing.\"+t,{easeOut:new e,easeIn:new i,easeInOut:new n},!0),p(e,t),e}function g(t,e,i){this.t=t,this.v=e,i&&(((this.next=i).prev=this).c=i.v-e,this.gap=i.t-t)}function i(t,e){var i=c(\"easing.\"+t,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0);return(t=i.prototype=new m).constructor=i,t.getRatio=e,t.config=function(t){return new i(t)},i}var n,r,s=window.GreenSockGlobals||window,a=s.com.greensock,o=2*Math.PI,l=Math.PI/2,c=a._class,p=m.register||function(){},a=e(\"Back\",i(\"BackOut\",function(t){return--t*t*((this._p1+1)*t+this._p1)+1}),i(\"BackIn\",function(t){return t*t*((this._p1+1)*t-this._p1)}),i(\"BackInOut\",function(t){return(t*=2)<1?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),d=c(\"easing.SlowMo\",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:1t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},d.ease=new d(.7,.7),h.config=d.config=function(t,e,i){return new d(t,e,i)},(h=(n=c(\"easing.SteppedEase\",function(t){this._p1=1/(t=t||1),this._p2=t+1},!0)).prototype=new m).constructor=n,h.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),(this._p2*t>>0)*this._p1},h.config=n.config=function(t){return new n(t)},(h=(r=c(\"easing.RoughEase\",function(t){for(var e,i,n,r,s,a,o=(t=t||{}).taper||\"none\",l=[],c=0,p=0|(t.points||20),d=p,h=!1!==t.randomize,u=!0===t.clamp,_=t.template instanceof m?t.template:null,f=\"number\"==typeof t.strength?.4*t.strength:.4;-1<--d;)e=h?Math.random():1/p*d,i=_?_.getRatio(e):e,n=\"none\"===o?f:\"out\"===o?(r=1-e)*r*f:\"in\"===o?e*e*f:.5*(r=e<.5?2*e:2*(1-e))*r*f,h?i+=Math.random()*n-.5*n:d%2?i+=.5*n:i-=.5*n,u&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},h.config=function(t){return new r(t)},r.ease=new r,e(\"Bounce\",t(\"BounceOut\",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),t(\"BounceIn\",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),t(\"BounceInOut\",function(t){var e=t<.5;return t=(t=e?1-2*t:2*t-1)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),e(\"Circ\",t(\"CircOut\",function(t){return Math.sqrt(1- --t*t)}),t(\"CircIn\",function(t){return-(Math.sqrt(1-t*t)-1)}),t(\"CircInOut\",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),e(\"Elastic\",(h=function(t,e,i){var n=c(\"easing.\"+t,function(t,e){this._p1=t||1,this._p2=e||i,this._p3=this._p2/o*(Math.asin(1/this._p1)||0)},!0),t=n.prototype=new m;return t.constructor=n,t.getRatio=e,t.config=function(t,e){return new n(t,e)},n})(\"ElasticOut\",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*o/this._p2)+1},.3),h(\"ElasticIn\",function(t){return-(this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*o/this._p2))},.3),h(\"ElasticInOut\",function(t){return(t*=2)<1?-.5*this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*o/this._p2):.5*this._p1*Math.pow(2,-10*--t)*Math.sin((t-this._p3)*o/this._p2)+1},.45)),e(\"Expo\",t(\"ExpoOut\",function(t){return 1-Math.pow(2,-10*t)}),t(\"ExpoIn\",function(t){return Math.pow(2,10*(t-1))-.001}),t(\"ExpoInOut\",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),e(\"Sine\",t(\"SineOut\",function(t){return Math.sin(t*l)}),t(\"SineIn\",function(t){return 1-Math.cos(t*l)}),t(\"SineInOut\",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),c(\"easing.EaseLookup\",{find:function(t){return m.map[t]}},!0),p(s.SlowMo,\"SlowMo\",\"ease,\"),p(r,\"RoughEase\",\"ease,\"),p(n,\"SteppedEase\",\"ease,\"),a},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],15:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"plugins.CSSPlugin\",[\"plugins.TweenPlugin\",\"TweenLite\"],function(s,h){function B(){s.call(this,\"css\"),this._overwriteProps.length=0,this.setRatio=B.prototype.setRatio}var u,x,k,d,_={},t=B.prototype=new s(\"css\");(t.constructor=B).version=\"1.12.1\",B.API=2,B.defaultTransformPerspective=0,B.defaultSkewType=\"compensated\",B.suffixMap={top:t=\"px\",right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:\"\"};function a(t,e){return e.toUpperCase()}function o(t){return tt.test(\"string\"==typeof t?t:(t.currentStyle||t.style).filter||\"\")?parseFloat(RegExp.$1)/100:1}function D(t){window.console&&console.log(t)}function b(t,e){var i,n,r=(e=e||C).style;if(void 0!==r[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=[\"O\",\"Moz\",\"ms\",\"Ms\",\"Webkit\"],n=5;-1<--n&&void 0===r[i[n]+t];);return 0<=n?(dt=\"-\"+(ht=3===n?\"ms\":i[n]).toLowerCase()+\"-\",ht+t):null}function f(t,e){var i,n={};if(e=e||m(t,null))if(i=e.length)for(;-1<--i;)n[e[i].replace(st,a)]=e.getPropertyValue(e[i]);else for(i in e)n[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)\"string\"==typeof i&&void 0===n[i]&&(n[i.replace(st,a)]=e[i]);return O||(n.opacity=o(t)),t=I(t,e,!1),n.rotation=t.rotation,n.skewX=t.skewX,n.scaleX=t.scaleX,n.scaleY=t.scaleY,n.x=t.x,n.y=t.y,H&&(n.z=t.z,n.rotationX=t.rotationX,n.rotationY=t.rotationY,n.scaleZ=t.scaleZ),n.filters&&delete n.filters,n}function E(t,e,i,n,r){var s,a,o,l={},c=t.style;for(a in i)\"cssText\"!==a&&\"length\"!==a&&isNaN(a)&&(e[a]!==(s=i[a])||r&&r[a])&&-1===a.indexOf(\"Origin\")&&(\"number\"==typeof s||\"string\"==typeof s)&&(l[a]=\"auto\"!==s||\"left\"!==a&&\"top\"!==a?\"\"!==s&&\"auto\"!==s&&\"none\"!==s||\"string\"!=typeof e[a]||\"\"===e[a].replace(p,\"\")?s:0:ut(t,a),void 0!==c[a])&&(o=new wt(c,a,c[a],o));if(n)for(a in n)\"className\"!==a&&(l[a]=n[a]);return{difs:l,firstMPT:o}}function X(t,e){var i=(t=null!=t&&\"\"!==t&&\"auto\"!==t&&\"auto auto\"!==t?t:\"0 0\").split(\" \"),n=-1!==t.indexOf(\"left\")?\"0%\":-1!==t.indexOf(\"right\")?\"100%\":i[0];return null==(t=-1!==t.indexOf(\"top\")?\"0%\":-1!==t.indexOf(\"bottom\")?\"100%\":i[1])?t=\"0\":\"center\"===t&&(t=\"50%\"),(\"center\"===n||isNaN(parseFloat(n))&&-1===(n+\"\").indexOf(\"=\"))&&(n=\"50%\"),e&&(e.oxp=-1!==n.indexOf(\"%\"),e.oyp=-1!==t.indexOf(\"%\"),e.oxr=\"=\"===n.charAt(1),e.oyr=\"=\"===t.charAt(1),e.ox=parseFloat(n.replace(p,\"\")),e.oy=parseFloat(t.replace(p,\"\"))),n+\" \"+t+(2>16,255&t>>8,255&t]:(\",\"===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),L[t]||(\"#\"===t.charAt(0)?(4===t.length&&(t=\"#\"+(e=t.charAt(1))+e+(i=t.charAt(2))+i+(n=t.charAt(3))+n),[(t=parseInt(t.substr(1),16))>>16,255&t>>8,255&t]):(\"hsl\"===t.substr(0,3)?(t=t.match(P),n=Number(t[0])%360/360,r=Number(t[1])/100,e=2*(s=Number(t[2])/100)-(i=s<=.5?s*(1+r):s+r-s*r),3a\",!!(e=G.getElementsByTagName(\"a\")[0])&&/^0.55/.test(e.style.opacity)),dt=\"\",ht=\"\",m=y.defaultView?y.defaultView.getComputedStyle:function(){},q=B.getStyle=function(t,e,i,n,r){var s;return O||\"opacity\"!==e?(!n&&t.style[e]?s=t.style[e]:(i=i||m(t))?s=i[e]||i.getPropertyValue(e)||i.getPropertyValue(e.replace(rt,\"-$1\").toLowerCase()):t.currentStyle&&(s=t.currentStyle[e]),null==r||s&&\"none\"!==s&&\"auto\"!==s&&\"auto auto\"!==s?s:r):o(t)},A=i.convertToPixels=function(t,e,i,n,r){if(\"px\"===n||!n)return i;if(\"auto\"===n||!i)return 0;var s,a,o,l=ot.test(e),c=t,p=C.style,d=i<0;if(d&&(i=-i),\"%\"===n&&-1!==e.indexOf(\"border\"))s=i/100*(l?t.clientWidth:t.clientHeight);else{if(p.cssText=\"border:0 solid red;position:\"+q(t,\"position\")+\";line-height:0;\",\"%\"!==n&&c.appendChild)p[l?\"borderLeftWidth\":\"borderTopWidth\"]=i+n;else{if(a=(c=t.parentNode||y.body)._gsCache,o=h.ticker.frame,a&&l&&a.time===o)return a.width*i/100;p[l?\"width\":\"height\"]=i+n}c.appendChild(C),s=parseFloat(C[l?\"offsetWidth\":\"offsetHeight\"]),c.removeChild(C),l&&\"%\"===n&&!1!==B.cacheWidths&&((a=c._gsCache=c._gsCache||{}).time=o,a.width=s/i*100),0!==s||r||(s=A(t,e,i,n,!0))}return d?-s:s},ut=i.calculateOffset=function(t,e,i){var n;return\"absolute\"!==q(t,\"position\",i)?0:(i=q(t,\"margin\"+(n=\"left\"===e?\"Left\":\"Top\"),i),t[\"offset\"+n]-(A(t,e,parseFloat(i),i.replace(J,\"\"))||0))},_t={width:[\"Left\",\"Right\"],height:[\"Top\",\"Bottom\"]},ft=[\"marginLeft\",\"marginRight\",\"marginTop\",\"marginBottom\"],L={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},R=\"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#.+?\\\\b\";for(t in L)R+=\"|\"+t+\"\\\\b\";function mt(t,e,s,a){var o,l,c,p,d,h,u,_;return null==t?function(t){return t}:(l=e?(t.match(R)||[\"\"])[0]:\"\",c=t.split(l).join(\"\").match(K)||[],p=t.substr(0,t.indexOf(c[0])),d=\")\"===t.charAt(t.length-1)?\")\":\"\",h=-1!==t.indexOf(\" \")?\" \":\",\",u=c.length,_=0n;n++)r[n]=o(r[n]);return r.join(\",\")}if(e=(t.match(R)||[l])[0],n=(i=t.split(e).join(\"\").match(K)||[]).length,u>n--)for(;u>++n;)i[n]=s?i[0|(n-1)/2]:c[n];return p+i.join(h)+h+e+d+(-1!==t.indexOf(\"inset\")?\" inset\":\"\")}:function(t){var e,i,n;if(\"number\"==typeof t)t+=_;else if(a&&S.test(t)){for(i=t.replace(S,\"|\").split(\"|\"),n=0;i.length>n;n++)i[n]=o(i[n]);return i.join(\",\")}if(n=(e=t.match(K)||[]).length,u>n--)for(;u>++n;)e[n]=s?e[0|(n-1)/2]:c[n];return p+e.join(h)+d}:function(t){return t})}function gt(c){return c=c.split(\",\"),function(t,e,i,n,r,s,a){var o,l=(e+\"\").split(\" \");for(a={},o=0;o<4;o++)a[c[o]]=l[o]=l[o]||l[(o-1)/2>>0];return n.parse(t,a,r,s)}}function wt(t,e,i,n,r){this.t=t,this.p=e,this.v=i,this.r=r,n&&((n._prev=this)._next=n)}var R=RegExp(R+\")\",\"gi\"),M=(i._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,n,r,s=this.data,a=s.proxy,o=s.firstMPT;o;)e=a[o.v],o.r?e=Math.round(e):e<1e-6&&-1e-6n;n++)r+=i[\"xn\"+n]+i[\"xs\"+(n+1)];i.e=r}}else i.e=i.s+i.xs0;o=o._next}},i._parseToProxy=function(t,e,i,n,r,s){var a,o,l,c,p=n,d={},h={},u=i._transform,_=v;for(i._transform=null,v=e,n=t=i.parse(t,e,n,r),v=_,s&&(i._transform=u,p)&&(p._prev=null,p._prev)&&(p._prev._next=null);n&&n!==p;){if(n.type<=1&&(h[o=n.p]=n.s+n.c,d[o]=n.s,s||(c=new wt(n,\"s\",o,c,n.r),n.c=0),1===n.type))for(a=n.l;0<--a;)h[o=n.p+\"_\"+(l=\"xn\"+a)]=n.data[l],d[o]=n[l],s||(c=new wt(n,l,o,c,n.rxp[l]));n=n._next}return{proxy:d,end:h,firstMPT:c,pt:t}},i.CSSPropTween=function(t,e,i,n,r,s,a,o,l,c,p){this.t=t,this.p=e,this.s=i,this.c=n,this.n=a||e,t instanceof M||d.push(this.n),this.r=o,this.type=s||0,l&&(this.pr=l,u=!0),this.b=void 0===c?i:c,this.e=void 0===p?i+n:p,r&&((this._next=r)._prev=this)}),vt=B.parseComplex=function(t,e,i,n,r,s,a,o,l,c){a=new M(t,e,0,0,a,c?2:1,null,!1,o,i=i||s||\"\",n),n+=\"\";var p,d,h,u,_,f,m,g,w,v,y,x=i.split(\", \").join(\",\").split(\" \"),k=n.split(\", \").join(\",\").split(\" \"),b=x.length,T=!1!==U;for(-1===n.indexOf(\",\")&&-1===i.indexOf(\",\")||(x=x.join(\" \").replace(S,\", \").split(\" \"),k=k.join(\" \").replace(S,\", \").split(\" \"),b=x.length),b!==k.length&&(b=(x=(s||\"\").split(\" \")).length),a.plugin=l,a.setRatio=c,p=0;pd;d++)v=f[d],w=u.indexOf(v,h),a.appendXtra(u.substr(h,w-h),Number(v),F(m[d],v),\"\",T&&\"px\"===u.substr(w+v.length,2),0===d),h=w+v.length;a[\"xs\"+a.l]+=u.substr(h)}else a[\"xs\"+a.l]+=a.l?\" \"+u:u;if(-1!==n.indexOf(\"=\")&&a.data){for(y=a.xs0+a.data.s,p=1;a.l>p;p++)y+=a[\"xs\"+p]+a.data[\"xn\"+p];a.e=y+a[\"xs\"+p]}return a.l||(a.type=-1,a.xs0=a.e),a.xfirst||a},j=9;for((t=M.prototype).l=t.pr=0;0<--j;)t[\"xn\"+j]=0,t[\"xs\"+j]=\"\";t.xs0=\"\",t._next=t._prev=t.xfirst=t.data=t.plugin=t.setRatio=t.rxp=null,t.appendXtra=function(t,e,i,n,r,s){var a=this,o=a.l;return a[\"xs\"+o]+=s&&o?\" \"+t:t||\"\",i||0===o||a.plugin?(a.l++,a.type=a.setRatio?2:1,a[\"xs\"+a.l]=n||\"\",0n;n++)e.prefix=0===n&&e.prefix,e.defaultValue=i[n]||s,new yt(r[n],e)},St=((t=yt.prototype).parseComplex=function(t,e,i,n,r,s){var a,o,l,c,p,d=this.keyword;if(this.multi&&(S.test(i)||S.test(e)?(o=e.replace(S,\"|\").split(\"|\"),l=i.replace(S,\"|\").split(\"|\")):d&&(o=[e],l=[i])),l){for(c=(l.length>o.length?l:o).length,a=0;aR[s]&&R[s]>-M&&(R[s]=0);return i&&(t._gsTransform=R),R},Lt=i.set3DTransformRatio=function(t){var e,i,n,r,s,a,o,l,c,p,d,h,u,_,f,m,g,w,v,y,x,k,b=this.data,T=this.t.style,P=b.rotation*N,S=b.scaleX,C=b.scaleY,O=b.scaleZ,A=b.perspective;if(1!==t&&0!==t||\"auto\"!==b.force3D||b.rotationY||b.rotationX||1!==O||A||b.z){if(W&&(S<1e-4&&-1e-4{var l;_[t]||(l=t.charAt(0).toUpperCase()+t.substr(1)+\"Plugin\",r(t,{parser:function(t,e,i,n,r,s,a){var o=(window.GreenSockGlobals||window).com.greensock.plugins[l];return o?(o._cssRegister(),_[i].parse(t,e,i,n,r,s,a)):(D(\"Error: \"+l+\" js file not loaded.\"),r)}}))})(t[j]);(t=B.prototype)._firstPT=null,t._onInitTween=function(t,e,i){if(!t.nodeType)return!1;this._target=t,this._tween=i,this._vars=e,U=e.autoRound,u=!1,x=e.suffixMap||B.suffixMap,k=m(t,\"\"),d=this._overwriteProps;var n,r,s,a,o,l,i=t.style;if(c&&\"\"===i.zIndex&&(\"auto\"===(l=q(t,\"zIndex\",k))||\"\"===l)&&this._addLazySet(i,\"zIndex\",0),\"string\"==typeof e&&(s=i.cssText,l=f(t,k),i.cssText=s+\";\"+e,l=E(t,l,f(t)).difs,!O&&et.test(e)&&(l.opacity=parseFloat(RegExp.$1)),e=l,i.cssText=s),this._firstPT=n=this.parse(t,e,null),this._transformType){for(l=3===this._transformType,Y?V&&(c=!0,\"\"===i.zIndex&&(\"auto\"===(e=q(t,\"zIndex\",k))||\"\"===e)&&this._addLazySet(i,\"zIndex\",0),Q)&&this._addLazySet(i,\"WebkitBackfaceVisibility\",this._vars.WebkitBackfaceVisibility||(l?\"visible\":\"hidden\")):i.zoom=1,r=n;r&&r._next;)r=r._next;e=new M(t,\"transform\",0,0,null,2),this._linkCSSP(e,null,r),e.setRatio=l&&H?Lt:Y?Rt:xt,e.data=this._transform||I(t,k,!0),d.pop()}if(u){for(;n;){for(o=n._next,r=s;r&&r.pr>n.pr;)r=r._next;(n._prev=r?r._prev:a)?n._prev._next=n:s=n,(n._next=r)?r._prev=n:a=n,n=o}this._firstPT=s}return!0},t.parse=function(t,e,i,n){var r,s,a,o,l,c,p,d,h=t.style;for(r in e)l=e[r],o=_[r],o?i=o.parse(t,l,r,this,i,n,e):(o=q(t,r,k)+\"\",p=\"string\"==typeof l,\"color\"===r||\"fill\"===r||\"stroke\"===r||-1!==r.indexOf(\"Color\")||p&&nt.test(l)?(p||(l=$(l),l=(3{var n=parseFloat(\"width\"===e?t.offsetWidth:t.offsetHeight),r=_t[e],s=r.length;for(i=i||m(t,null);-1<--s;)n=(n-=parseFloat(q(t,\"padding\"+r[s],i,!0))||0)-(parseFloat(q(t,\"border\"+r[s]+\"Width\",i,!0))||0);return n})(t,r,k),\"px\"):\"left\"===r||\"top\"===r?(s=ut(t,r,k),\"px\"):(s=\"opacity\"!==r?0:1,\"\")),d=p&&\"=\"===l.charAt(1),p=d?(a=parseInt(l.charAt(0)+\"1\",10),l=l.substr(2),a*=parseFloat(l),l.replace(J,\"\")):(a=parseFloat(l),p&&l.substr((a+\"\").length)||\"\"),\"\"===p&&(p=r in x?x[r]:c),l=a||0===a?(d?a+s:a)+p:e[r],c!==p&&\"\"!==p&&(a||0===a)&&s&&(s=A(t,r,s,c),\"%\"===p?(s/=A(t,r,100,\"%\")/100,!0!==e.strictUnits&&(o=s+\"%\")):\"em\"===p?s/=A(t,r,1,\"em\"):\"px\"!==p&&(a=A(t,r,a,p),p=\"px\"),d)&&(a||0===a)&&(l=a+s+p),d&&(a+=s),!s&&0!==s||!a&&0!==a?void 0!==h[r]&&(l||\"NaN\"!=l+\"\"&&null!=l)?(i=new M(h,r,a||s||0,0,i,-1,r,!1,0,o,l),i.xs0=\"none\"!==l||\"display\"!==r&&-1===r.indexOf(\"Style\")?l:o):D(\"invalid \"+r+\" tween value: \"+e[r]):(i=new M(h,r,s,a-s,i,0,r,!1!==U&&(\"px\"===p||\"zIndex\"===r),0,o,l),i.xs0=p)):i=vt(h,r,o,l,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},t.setRatio=function(t){var e,i,n,r=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;r;){if(e=r.c*t+r.s,r.r?e=Math.round(e):e<1e-6&&-1e-6n;n++)i+=r[\"xn\"+n]+r[\"xs\"+(n+1)];r.t[r.p]=i}else-1===r.type?r.t[r.p]=r.xs0:r.setRatio&&r.setRatio(t);else r.t[r.p]=e+r.xs0;r=r._next}else for(;r;)2!==r.type?r.t[r.p]=r.b:r.setRatio(t),r=r._next;else for(;r;)2!==r.type?r.t[r.p]=r.e:r.setRatio(t),r=r._next},t._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2,this._transform=this._transform||I(this._target,k,!0)};function Mt(){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)}function jt(t,e,i){var n,r,s,a;if(t.slice)for(r=t.length;-1<--r;)jt(t[r],e,i);else for(r=(n=t.childNodes).length;-1<--r;)a=(s=n[r]).type,s.style&&(e.push(f(s)),i)&&i.push(s),1!==a&&9!==a&&11!==a||!s.childNodes.length||jt(s,e,i)}t._addLazySet=function(t,e,i){t=this._firstPT=new M(t,e,0,0,this._firstPT,2);t.e=i,t.setRatio=Mt,t.data=this},t._linkCSSP=function(t,e,i,n){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,n=!0),i?i._next=t:n||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},t._kill=function(t){var e,i,n,r=t;if(t.autoAlpha||t.alpha){for(i in r={},t)r[i]=t[i];r.opacity=1,r.autoAlpha&&(r.visibility=1)}return t.className&&(e=this._classNamePT)&&((n=e.xfirst)&&n._prev?this._linkCSSP(n._prev,e._next,n._prev._prev):n===this._firstPT&&(this._firstPT=e._next),e._next&&this._linkCSSP(e._next,e._next._next,n._prev),this._classNamePT=null),s.prototype._kill.call(this,r)};return B.cascadeTo=function(t,e,i){var n,r,s,a=h.to(t,e,i),o=[a],l=[],c=[],p=[],d=h._internals.reservedProps;for(t=a._targets||a.target,jt(t,l,p),a.render(e,!0),jt(t,c),a.render(0,!0),a._enabled(!0),n=p.length;-1<--n;)if((r=E(p[n],l[n],c[n])).firstMPT){for(s in r=r.difs,i)d[s]&&(r[s]=i[s]);o.push(h.to(p[n],e,r))}return o},s.activate([B]),B},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],16:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){function r(t,e){var i=\"scroll\"+(e=\"x\"===e?\"Width\":\"Height\"),n=\"client\"+e,r=document.body;return t===a||t===s||t===r?Math.max(s[i],r[i])-(a[\"inner\"+e]||Math.max(s[n],r[n])):t[i]-t[\"offset\"+e]}var s=document.documentElement,a=window,t=window._gsDefine.plugin({propName:\"scrollTo\",API:2,version:\"1.7.3\",init:function(t,e,i){return this._wdw=t===a,this._target=t,this._tween=i,this._autoKill=!1!==(e=\"object\"!=typeof e?{y:e}:e).autoKill,this.x=this.xPrev=this.getX(),this.y=this.yPrev=this.getY(),null!=e.x?(this._addTween(this,\"x\",this.x,\"max\"===e.x?r(t,\"x\"):e.x,\"scrollTo_x\",!0),this._overwriteProps.push(\"scrollTo_x\")):this.skipX=!0,null!=e.y?(this._addTween(this,\"y\",this.y,\"max\"===e.y?r(t,\"y\"):e.y,\"scrollTo_y\",!0),this._overwriteProps.push(\"scrollTo_y\")):this.skipY=!0,!0},set:function(t){this._super.setRatio.call(this,t);var t=this._wdw||!this.skipX?this.getX():this.xPrev,e=this._wdw||!this.skipY?this.getY():this.yPrev,i=e-this.yPrev,n=t-this.xPrev;this._autoKill&&(!this.skipX&&(7t&&(this.skipX=!0),!this.skipY&&(7e&&(this.skipY=!0),this.skipX)&&this.skipY&&this._tween.kill(),this._wdw?a.scrollTo(this.skipX?t:this.x,this.skipY?e:this.y):(this.skipY||(this._target.scrollTop=this.y),this.skipX||(this._target.scrollLeft=this.x)),this.xPrev=this.x,this.yPrev=this.y}}),e=t.prototype;t.max=r,e.getX=function(){return this._wdw?null!=a.pageXOffset?a.pageXOffset:(null!=s.scrollLeft?s:document.body).scrollLeft:this._target.scrollLeft},e.getY=function(){return this._wdw?null!=a.pageYOffset?a.pageYOffset:(null!=s.scrollTop?s:document.body).scrollTop:this._target.scrollTop},e._kill=function(t){return t.scrollTo_x&&(this.skipX=!0),t.scrollTo_y&&(this.skipY=!0),this._super._kill.call(this,t)}}),window._gsDefine&&window._gsQueue.pop()()},{}]},{},[3]);"],"file":"wpr-admin.min.js"}
\ No newline at end of file
+{"version":3,"names":[],"mappings":"","sources":["wpr-admin.min.js"],"sourcesContent":["!function n(r,a,s){function o(e,t){if(!a[e]){if(!r[e]){var i=\"function\"==typeof require&&require;if(!t&&i)return i(e,!0);if(l)return l(e,!0);throw(t=new Error(\"Cannot find module '\"+e+\"'\")).code=\"MODULE_NOT_FOUND\",t}i=a[e]={exports:{}},r[e][0].call(i.exports,function(t){return o(r[e][1][t]||t)},i,i.exports,n,r,a,s)}return a[e].exports}for(var l=\"function\"==typeof require&&require,t=0;t{let e=i.querySelector(\".select-button\"),n=i.querySelector(\".selected-value\");e.addEventListener(\"click\",()=>{i.classList.toggle(\"active\"),e.setAttribute(\"aria-expanded\",\"true\"===e.getAttribute(\"aria-expanded\")?\"false\":\"true\")}),i.addEventListener(\"click\",function(t){var e;t.target.matches(\"label\")&&(i.querySelectorAll(\"li\").forEach(t=>t.classList.remove(\"active\")),t=t.target.closest(\"li\"))&&(t.classList.add(\"active\"),t=t,e=new CustomEvent(\"custom-select-change\",{detail:{selectedOption:t}}),n.textContent=t.textContent,i.classList.remove(\"active\"),i.dispatchEvent(e))}),document.addEventListener(\"click\",t=>{i.contains(t.target)||(i.classList.remove(\"active\"),e.setAttribute(\"aria-expanded\",\"false\"))})})},{}],2:[function(t,e,i){var v=jQuery;v(document).ready(function(){var r=!1;v(\"#wpr-action-refresh_account\").on(\"click\",function(t){var e,i,n;return r||(e=v(this),i=v(\"#wpr-account-data\"),n=v(\"#wpr-expiration-data\"),t.preventDefault(),r=!0,e.trigger(\"blur\"),n.removeClass(\"wpr-isValid wpr-isInvalid\"),v.post(ajaxurl,{action:\"rocket_refresh_customer_data\",_ajax_nonce:rocket_ajax_data.nonce},function(t){e.removeClass(\"wpr-isLoading\"),e.addClass(\"wpr-isHidden\"),!0===t.success?(i.html(t.data.license_type),n.addClass(t.data.license_class).html(t.data.license_expiration),setTimeout(function(){e.removeClass(\"wpr-icon-refresh wpr-isHidden\"),e.addClass(\"wpr-icon-check\")},250)):setTimeout(function(){e.removeClass(\"wpr-icon-refresh wpr-isHidden\"),e.addClass(\"wpr-icon-close\")},250),setTimeout(function(){new TimelineLite({onComplete:function(){r=!1}}).set(e,{css:{className:\"+=wpr-isHidden\"}}).set(e,{css:{className:\"-=wpr-icon-check\"}},.25).set(e,{css:{className:\"-=wpr-icon-close\"}}).set(e,{css:{className:\"+=wpr-icon-refresh\"}},.25).set(e,{css:{className:\"-=wpr-isHidden\"}})},2e3)})),!1}),v(\".wpr-radio input[type=checkbox]\").on(\"change\",function(t){t.preventDefault();var t=v(this).attr(\"id\"),e=v(this).prop(\"checked\")?1:0;0<=[\"cloudflare_auto_settings\",\"cloudflare_devmode\",\"analytics_enabled\"].indexOf(t)||v.post(ajaxurl,{action:\"rocket_toggle_option\",_ajax_nonce:rocket_ajax_data.nonce,option:{name:t,value:e}},function(t){})}),v(\"#wpr-action-rocket_enable_mobile_cpcss\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr-action-rocket_enable_mobile_cpcss\").addClass(\"wpr-isLoading\"),v.post(ajaxurl,{action:\"rocket_enable_mobile_cpcss\",_ajax_nonce:rocket_ajax_data.nonce},function(t){t.success&&(v(\"#wpr-action-rocket_enable_mobile_cpcss\").hide(),v(\".wpr-hide-on-click\").hide(),v(\".wpr-show-on-click\").show(),v(\"#wpr-action-rocket_enable_mobile_cpcss\").removeClass(\"wpr-isLoading\"))})}),v(\"#wpr-action-rocket_enable_google_fonts\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr-action-rocket_enable_google_fonts\").addClass(\"wpr-isLoading\"),v.post(ajaxurl,{action:\"rocket_enable_google_fonts\",_ajax_nonce:rocket_ajax_data.nonce},function(t){t.success&&(v(\"#wpr-action-rocket_enable_google_fonts\").hide(),v(\".wpr-hide-on-click\").hide(),v(\".wpr-show-on-click\").show(),v(\"#wpr-action-rocket_enable_google_fonts\").removeClass(\"wpr-isLoading\"),v(\"#minify_google_fonts\").val(1))})}),v(\"#rocket-dismiss-promotion\").on(\"click\",function(t){t.preventDefault(),v.post(ajaxurl,{action:\"rocket_dismiss_promo\",nonce:rocket_ajax_data.nonce},function(t){t.success&&v(\"#rocket-promo-banner\").hide(\"slow\")})}),v(\"#rocket-dismiss-renewal\").on(\"click\",function(t){t.preventDefault(),v.post(ajaxurl,{action:\"rocket_dismiss_renewal\",nonce:rocket_ajax_data.nonce},function(t){t.success&&v(\"#rocket-renewal-banner\").hide(\"slow\")})}),v(\"#wpr-update-exclusion-list\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr-update-exclusion-msg\").html(\"\"),v.ajax({url:rocket_ajax_data.rest_url,beforeSend:function(t){t.setRequestHeader(\"X-WP-Nonce\",rocket_ajax_data.rest_nonce),t.setRequestHeader(\"Accept\",\"application/json, */*;q=0.1\"),t.setRequestHeader(\"Content-Type\",\"application/json\")},method:\"PUT\",success:function(e){let i=v(\"#wpr-update-exclusion-msg\");i.html(\"\"),void 0!==e.success?i.append(''+e.message+\"
\"):Object.keys(e).forEach(t=>{i.append(\"\"+t+\": \"),i.append(e[t].message),i.append(\" \")})}})}),v(\"#wpr_enable_mobile_cache\").on(\"click\",function(t){t.preventDefault(),v(\"#wpr_enable_mobile_cache\").addClass(\"wpr-isLoading\"),v.post(ajaxurl,{action:\"rocket_enable_mobile_cache\",_ajax_nonce:rocket_ajax_data.nonce},function(t){t.success&&(v(\"#wpr_enable_mobile_cache\").hide(),v(\"#wpr_mobile_cache_default\").hide(),v(\"#wpr_mobile_cache_response\").show(),v(\"#wpr_enable_mobile_cache\").removeClass(\"wpr-isLoading\"),v(\"#cache_mobile\").val(1),v(\"#do_caching_mobile_files\").val(1))})})}),document.addEventListener(\"DOMContentLoaded\",function(){var t=document.getElementById(\"analytics_enabled\");t&&t.addEventListener(\"change\",function(){var t=this.checked;\"undefined\"!=typeof rocket_mixpanel_data&&(rocket_mixpanel_data.optin_enabled=t?\"1\":\"0\"),fetch(ajaxurl,{method:\"POST\",headers:{\"Content-Type\":\"application/x-www-form-urlencoded\"},body:new URLSearchParams({action:\"rocket_toggle_optin\",value:t?1:0,_ajax_nonce:rocket_ajax_data.nonce})})})}),document.addEventListener(\"DOMContentLoaded\",function(){let t=2e3,e=5e3,i=Array.isArray(window.rocket_ajax_data?.rocket_insights_ids)?window.rocket_ajax_data.rocket_insights_ids.slice():[],n=t,r=null,a=!0,s={data:{status:\"\",score:0,pages_num:0},html:\"\",row_html:\"\",disabled_btn_html:{global_score_widget:\"\",rocket_insights:\"\"}},o=(window.rocket_ajax_data?.global_score_data&&(s=window.rocket_ajax_data.global_score_data),v(\"#wpr-speed-radar-url-input\")),l=v(\".wpr-ri-urls-table tbody\"),c=v(\".wpr-ri-urls-table\");function d(t){i.includes(t)||i.push(t)}function p(t){var e=v(\".wpr-ri-summary-info\"),i=\"1\"===window.rocket_ajax_data?.is_free,i=v(i?\"#wpr-ri-quota-banner\":\"#rocket_insights_survey\");!1===t||!a?(e.hide(),i.removeClass(\"hidden\")):(e.show(),i.addClass(\"hidden\"))}function h(t){void 0!==t&&a!==t&&(a=t,document.querySelectorAll(\".wpr-action-speed_radar_refresh\").forEach(t=>{var e=t.closest(\".wpr-ri-item\");e&&(e=parseInt(e.dataset.rocketInsightsId,10),e=i.includes(e),!a||e?(t.classList.add(\"wpr-ri-action--disabled\"),t.setAttribute(\"disabled\",\"true\"),a||(t.classList.add(\"wpr-btn-with-tool-tip\"),t.setAttribute(\"title\",window.rocket_ajax_data?.rocket_insights_no_credit_tooltip||\"Upgrade your plan to get access to re-test performance or run new tests\"))):(t.classList.remove(\"wpr-ri-action--disabled\",\"wpr-btn-with-tool-tip\"),t.removeAttribute(\"disabled\"),t.removeAttribute(\"title\")))}))}function u(){r&&(clearTimeout(r),r=null),n=t}function _(){0{0===i.length?u():window.wp.apiFetch({path:window.wp.url.addQueryArgs(\"/wp-rocket/v1/rocket-insights/pages/progress\",{ids:i})}).then(t=>{t.success&&Array.isArray(t.results)?(h(t.has_credit),p(t.can_add_pages),s.data.status===t.global_score_data.data.status&&s.data.pages_num===t.global_score_data.data.pages_num||(s=t.global_score_data,v(\".wpr-global-score-widget\").html(t.global_score_data.html),f(s),document.dispatchEvent(new CustomEvent(\"wprGlobalScoreUpdated\",{detail:s.data}))),t.results.forEach(t=>{if(v(`.wpr-ri-item[data-rocket-insights-id=\"${t.id}\"]`).replaceWith(t.html),v(document).trigger(\"rocket-insights-page-test-polling\",[t.id]),\"completed\"===t.status&&v(document).trigger(\"rocket-insights-page-test-completed\",[t.id]),\"completed\"===t.status||\"failed\"===t.status){t=t.id;let e=parseInt(t,10);i=i.filter(t=>parseInt(t,10)!==e)}}),n=Math.min(1.3*n,e),_()):(i=[],u(),console.error(\"Polling error:\",t.results||t))})},n))}function f(t){var e=v(\".wpr-ri-urls-table .wpr-global-score\");0{try{var e=new URL(t);return e.hostname.includes(\".\")&&0{var e;t.success?(e=t.id,i.includes(e)||(o.val(\"\"),l.append(t.html),v(document).trigger(\"rocket-insights-page-added\"),c.removeClass(\"hidden\"),d(t.id),(e=v(\"#rocket_rocket_insights_pages_num\")).text(parseInt(e.text())+1),h(t.has_credit),f(s=t.global_score_data),\"disabled_btn_html\"in s&&v(\"#wpr_rocket_insights_add_page_btn_wrapper\").html(s.disabled_btn_html.rocket_insights),p(t.can_add_pages),r&&u(),_())):(o.val(\"\"),t?.message&&t.message.includes(\"Maximum number of URLs reached\")&&(disableAddUrlElements(),p(void 0!==t.can_add_pages&&t.can_add_pages)),console.error(t?.message||t))})):alert(\"Please enter a valid URL\"))}),v(document).on(\"click\",\".wpr-action-speed_radar_refresh\",function(t){t.preventDefault();var e=(t=v(this)).parents(\".wpr-ri-item\").data(\"rocket-insights-id\");e&&(t=t.data(\"source\"),window.wp.apiFetch({path:\"/wp-rocket/v1/rocket-insights/pages/\"+e,method:\"PATCH\",data:{source:t}}).then(t=>{t.success?(d(t.id),v(`#ri_details_${t.id} .details-section-td`).remove(),v(`[data-rocket-insights-id=\"${t.id}\"]`).replaceWith(t.html),v(document).trigger(\"rocket-insights-page-retest\",[t.id]),h(t.has_credit),p(t.can_add_pages),f(s=t.global_score_data),r&&u(),_()):console.error(t?.message||t)}))}),v(document).on(\"keypress\",\"#wpr-speed-radar-url-input\",function(t){\"Enter\"===t.key&&(t.preventDefault(),v(\"#wpr-action-add_page_speed_radar\").click())}),\"wprocket\"===new URLSearchParams(window.location.search).get(\"page\")&&0{f(s)},30)}),v(document).on(\"click\",\".wpr-ri-item-toggle-single\",function(){var t,e,i,n,r=v(this).closest(\".wpr-ri-item\").data(\"rocket-insights-id\");t=\"url_expand\",e=v(\"#ri_details_\"+(r=r)),i=e.hasClass(\"wpr-ri-details--expanded\"),n=v(`[data-rocket-insights-id=\"${r}\"] .wpr-ri-item-toggle-single`).is(v(\".wpr-ri-item-toggle-single\").last()),i?(e.removeClass(\"wpr-ri-details--expanded\"),v(`[data-rocket-insights-id=\"${r}\"]`).removeClass(\"wpr-ri-item--expanded\"),n&&w(!1)):(e.addClass(\"wpr-ri-details--expanded\"),v(`[data-rocket-insights-id=\"${r}\"]`).addClass(\"wpr-ri-item--expanded\"),g(\"expand\",r,t),n&&w())}),v(document).on(\"click\",\".wpr-ri-item-toggle-all\",function(){0{var t,e,i;\"wprocket\"===new URLSearchParams(window.location.search).get(\"page\")&&\"#rocket_insights\"===window.location.hash&&(m(!0),i=(t=new URLSearchParams(window.location.search)).get(\"ri_id\"),e=v(\".wpr-ri-item--expanded\")?.first()?.data(\"rocket-insights-id\"),i&&\"\"!==i?(g(\"expand\",i,\"post type listing\"),v(\"html, body\").animate({scrollTop:v(`[data-rocket-insights-id=\"${i}\"]`).offset().top-100},500),t.delete(\"ri_id\"),i=window.location.pathname+\"?\"+t.toString()+window.location.hash,window.history.replaceState({},\"\",i)):e&&g(\"expand\",e,\"auto_expand_url\"))})})},{}],3:[function(t,e,i){t(\"../lib/greensock/TweenLite.min.js\"),t(\"../lib/greensock/TimelineLite.min.js\"),t(\"../lib/greensock/easing/EasePack.min.js\"),t(\"../lib/greensock/plugins/CSSPlugin.min.js\"),t(\"../lib/greensock/plugins/ScrollToPlugin.min.js\"),t(\"../global/cdn-driver.js\"),t(\"../global/pageManager.js\"),t(\"../global/main.js\"),t(\"../global/fields.js\"),t(\"../global/beacon.js\"),t(\"../global/ajax.js\"),t(\"../global/recommendations-widget.js\"),t(\"../global/rocketcdn.js\"),t(\"../global/rocketcdn-subscription-polling.js\"),t(\"../global/countdown.js\"),t(\"../global/mixpanel.js\")},{\"../global/ajax.js\":2,\"../global/beacon.js\":4,\"../global/cdn-driver.js\":5,\"../global/countdown.js\":6,\"../global/fields.js\":7,\"../global/main.js\":8,\"../global/mixpanel.js\":9,\"../global/pageManager.js\":10,\"../global/recommendations-widget.js\":11,\"../global/rocketcdn-subscription-polling.js\":12,\"../global/rocketcdn.js\":13,\"../lib/greensock/TimelineLite.min.js\":14,\"../lib/greensock/TweenLite.min.js\":15,\"../lib/greensock/easing/EasePack.min.js\":16,\"../lib/greensock/plugins/CSSPlugin.min.js\":17,\"../lib/greensock/plugins/ScrollToPlugin.min.js\":18}],4:[function(t,e,i){var n=jQuery;n(document).ready(function(){function i(t,e){\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&(rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify&&mixpanel.identify(rocket_mixpanel_data.user_id),mixpanel.track(\"Button Clicked\",{button:t,button_context:e,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,context:rocket_mixpanel_data.context,path:rocket_mixpanel_data.path}))}\"Beacon\"in window&&n(\".wpr-infoAction--help\").on(\"click\",function(t){var e=n(this).attr(\"data-beacon-id\");return i(n(this).data(\"wpr_track_button\")||\"Beacon Help\",n(this).data(\"wpr_track_context\")||\"Settings\"),0!==(e=(e=e).split(\",\")).length&&(1{{let a=d.querySelectorAll(\".wpr-cdn-tabs__tab\"),t=d.querySelectorAll(\".rocketcdn, .your-own-cdn\");function s(e){t.forEach(t=>{t.classList.toggle(\"wpr-isHidden\",!t.classList.contains(e))})}function o(t){let e=t.getAttribute(\"data-title\");e&&d.querySelectorAll(\".rocketcdn-driver-js\").forEach(t=>{t.textContent=e})}function l(t){var e,i=d.querySelector(\".exclude-cdn-help-js\");i&&(e=(t=\"rocketcdn\"===t)?i.dataset.rocketcdnUrl:i.dataset.otherCdnUrl,t=t?i.dataset.rocketcdnId:i.dataset.otherCdnId,e&&(i.href=e),t)&&(i.dataset.beaconId=t)}var e,i;a.length&&(a.forEach(r=>{r.addEventListener(\"click\",()=>{var n=r.getAttribute(\"data-cdn-driver\");if(n){a.forEach(t=>t.classList.remove(\"wpr-cdn-tabs__tab--active\")),r.classList.add(\"wpr-cdn-tabs__tab--active\"),s(n),o(r),l(n),p();let e=d.getElementById(\"cdn_type\"),t=e.value,i=\"your-own-cdn\"===n?\"byocdn\":\"rocketcdn\";window.wp.apiFetch({path:\"/wp-rocket/v1/rocketcdn/driver\",method:\"POST\",data:{driver:i}}).then(t=>{u(e.value=i,t.disable_rocket_cdn_elements)}).catch(()=>{e.value=t})}})}),e=d.querySelector(\".wpr-cdn-tabs__tab--active\"),(i=e?e.getAttribute(\"data-cdn-driver\"):\"rocketcdn\")&&(s(i),p()),e)&&(o(e),l(i))}d.addEventListener(\"click\",t=>{let a=t.target.closest(\".wpr-cdn-pause\");if(a){let n=a.classList.toggle(\"wpr-cdn-pause--paused\"),r=(a.setAttribute(\"aria-pressed\",n?\"true\":\"false\"),a.disabled=!0,d.querySelector(\".rocketcdn .wpr-cdn-indicator__dot\"));r&&(r.className=\"wpr-icon-orange-loader\"),window.wp.apiFetch({path:\"/wp-rocket/v1/rocketcdn/pause\",method:\"POST\",data:{paused:n?0:1}}).then(()=>{r&&(r.className=\"wpr-cdn-indicator__dot\"),a.disabled=!1,d.querySelector('label[for=\"cdn\"]').click(),u(\"rocketcdn\",n);var t,e,i=a.closest(\".wpr-cdn-status\");i&&(i.classList.toggle(\"wpr-cdn-status--paused\",n),i.classList.toggle(\"wpr-cdn-status--long-details\",n&&\"1\"===i.dataset.longDetails),(e=i.closest(\".wpr-cdn-built-in\"))&&e.classList.toggle(\"wpr-cdn-built-in--paused\",n),p(),e=n?\"pausedText\":\"activeText\",(t=i.querySelector(\".wpr-cdn-indicator__text\"))&&i.dataset[e]&&(t.textContent=i.dataset[e]),t=n?\"pausedDetails\":\"activeDetails\",e=i.querySelector(\".wpr-cdn-indicator__details\"))&&i.dataset[t]&&(e.textContent=i.dataset[t])}).catch(()=>{a.classList.toggle(\"wpr-cdn-pause--paused\",!n),a.setAttribute(\"aria-pressed\",n?\"false\":\"true\"),a.disabled=!1,r&&(r.className=\"wpr-cdn-indicator__dot\")})}}),d.addEventListener(\"click\",t=>{let n=t.target.closest(\"#wpr_add_page_component .wpr-cdn-add-page__homepage\");if(n){n.disabled=!0;let i=d.querySelector(\".wpr-cdn-built-in\");i&&i.classList.add(\"wpr-cdn-built-in--disabled\"),window.wp.apiFetch({path:\"/wp-rocket/v1/rocketcdn/pages/homepage\",method:\"POST\"}).then(t=>{var e;n.classList.add(\"wpr-isHidden\"),f(t.count,t.limit),i&&i.classList.remove(\"wpr-cdn-built-in--disabled\"),t.items_html&&((e=d.querySelector(\".wpr-cdn-built-in .wpr-table-list\"))&&e.remove(),e=d.querySelector(\".wpr-cdn-add-page\"))&&e.insertAdjacentHTML(\"beforebegin\",t.items_html),1===t.count&&d.dispatchEvent(new CustomEvent(\"rocketCDNBannerFirstVisible\")),t.is_subscription_creation_loading&&m(),h(t.status_indicator_html)}).catch(()=>{n.disabled=!1,i&&i.classList.remove(\"wpr-cdn-built-in--disabled\")})}});{let n=d.getElementById(\"wpr_cdn_add_page_input\"),r=d.querySelector(\".wpr-cdn-add-page__button\");function a(){var t=n.value.trim();if((t=>{try{var e=new URL(t);return e.hostname.includes(\".\")&&0{var e;n.value=\"\",n.disabled=!1,r.disabled=!1,c.classList.add(\"wpr-isHidden\"),f(t.count,t.limit),i&&i.classList.remove(\"wpr-cdn-built-in--disabled\"),t.items_html&&((e=d.querySelector(\".wpr-cdn-built-in .wpr-table-list\"))&&e.remove(),e=d.querySelector(\".wpr-cdn-add-page\"))&&e.insertAdjacentHTML(\"beforebegin\",t.items_html),1===t.count&&d.dispatchEvent(new CustomEvent(\"rocketCDNBannerFirstVisible\")),t.limit===t.count&&(d.querySelector(\".wpr-cdn-built-in\").classList.add(\"wpr-cdn-built-in--disabled\"),(e=d.querySelector(\".wpr-cdn-add-page__button-wrapper\"))&&e.classList.add(\"wpr-btn-with-tool-tip\"),(e=d.querySelector(\".wpr-cdn-add-page__button\"))&&(e.disabled=!0),_(!0)),t.is_subscription_creation_loading&&m(),h(t.status_indicator_html)}).catch(()=>{n.disabled=!1,r.disabled=!1,i&&i.classList.remove(\"wpr-cdn-built-in--disabled\")})}else alert(\"Please enter a valid URL\")}n&&r&&(r.addEventListener(\"click\",a),n.addEventListener(\"keydown\",t=>{\"Enter\"===t.key&&(t.preventDefault(),a())}))}{let i=d.querySelector(\"#wpr_add_page_component\");i&&i.parentElement.addEventListener(\"click\",t=>{let e=t.target.closest(\".wpr-table-list__delete\");e&&(t=e.dataset.id)&&(e.disabled=!0,window.wp.apiFetch({path:\"/wp-rocket/v1/rocketcdn/pages/\"+t,method:\"DELETE\"}).then(t=>{var e;f(t.count,t.limit),t.items_html&&((e=i.parentElement.querySelector(\".wpr-cdn-built-in .wpr-table-list\"))&&e.remove(),e=i.parentElement.querySelector(\".wpr-cdn-add-page\"))&&e.insertAdjacentHTML(\"beforebegin\",t.items_html),0===t.count&&(d.querySelector(\".wpr-cdn-built-in .wpr-table-list\").remove(),e=i.querySelector(\".wpr-cdn-add-page__homepage\"))&&(e.classList.remove(\"wpr-isHidden\"),e.disabled=!1),t.count{e.disabled=!1}))})}d.addEventListener(\"rocketJsAfterPageNavigation\",t=>{var e;\"none\"!==getComputedStyle(t.detail.submitButton).display&&(e=[\".wpr-icon-orange-loader\",\".wpr-cdn-built-in--disabled\"].every(t=>null!==d.querySelector(t)),\"page_cdn\"!==t.detail.pageId?t.detail.submitButton.classList.contains(\"wpr-cdn-disabled\")&&t.detail.submitButton.classList.remove(\"wpr-cdn-disabled\"):e&&t.detail.submitButton.classList.add(\"wpr-cdn-disabled\"))})});let c=d.querySelector(\"#wpr_add_page_component .wpr-cdn-add-page__homepage\");function h(t){var e=d.querySelector(\".wpr-cdn-built-in .wpr-cdn-status\");e&&t&&(e.outerHTML=t)}function u(t,e){if(\"rocketcdn\"===t)return e?void d.querySelectorAll(\".cdn-shared-section, .rocketcdn-shared-section\").forEach(t=>{t.classList.add(\"wpr-cdn-disabled\")}):void d.querySelectorAll(\".cdn-shared-section, .rocketcdn-shared-section\").forEach(t=>{t.classList.remove(\"wpr-cdn-disabled\")});d.querySelectorAll(\".cdn-shared-section\").forEach(t=>{t.classList.remove(\"wpr-cdn-disabled\")})}function _(t){var e=d.querySelector(\".wpr-cdn-add-page__button-wrapper .wpr-tooltip\");e&&e.classList.toggle(\"wpr-isHidden\",!t)}let r=null;function f(t,e){let i=d.getElementById(\"wpr-rocketcdn-cta\");var n=d.getElementById(\"wpr-rocketcdn-reseller-limit-cta\");(i||n)&&(null!==r&&(clearTimeout(r),r=null),e=e<=t,i&&i.classList.toggle(\"wpr-isHidden\",0===t),n&&n.classList.toggle(\"wpr-isHidden\",!e),i)&&(e?(i.classList.add(\"wpr-rocketcdn-cta---max-limit\"),i.classList.contains(\"wpr-rocketcdn-cta--expanded\")||(i.classList.add(\"wpr-rocketcdn-cta--collapsed\"),i.classList.remove(\"wpr-rocketcdn-cta--expanded\"),r=setTimeout(()=>{r=null,i.classList.remove(\"wpr-rocketcdn-cta--collapsed\"),i.classList.add(\"wpr-rocketcdn-cta--expanded\"),d.dispatchEvent(new CustomEvent(\"rocketCDNBannerAutoExpanded\"))},15e3))):(i.classList.toggle(\"wpr-rocketcdn-cta--collapsed\",0{t.classList.add(\"wpr-cdn-disabled\");t=t.querySelector(\"textarea\");t&&(t.disabled=!0)}),d.querySelector(\"#wpr-options-submit\"));t&&t.classList.add(\"wpr-cdn-disabled\"),d.dispatchEvent(new CustomEvent(\"rocketCDNSubscriptionLoading\",{}))}d.addEventListener(\"rocketJsAfterPageNavigation\",t=>{\"page_cdn\"!==t.detail.pageId&&null!==r&&(clearTimeout(r),r=null)})}},{}],6:[function(t,e,i){function n(t,r){t=document.getElementById(t);if(null===t)return;let a=t.querySelector(\".rocket-countdown-days\"),s=t.querySelector(\".rocket-countdown-hours\"),o=t.querySelector(\".rocket-countdown-minutes\"),l=t.querySelector(\".rocket-countdown-seconds\");function e(){n=1e3*(n=r)-Date.now(),t=Math.floor(n/1e3%60),e=Math.floor(n/1e3/60%60),i=Math.floor(n/36e5%24);var t,e,i,n={total:n,days:Math.floor(n/864e5),hours:i,minutes:e,seconds:t};n.total<0?clearInterval(c):(a.innerHTML=n.days,s.innerHTML=(\"0\"+n.hours).slice(-2),o.innerHTML=(\"0\"+n.minutes).slice(-2),l.innerHTML=(\"0\"+n.seconds).slice(-2))}e();let c=setInterval(e,1e3)}if(Date.now||(Date.now=function(){return(new Date).getTime()}),void 0!==rocket_ajax_data.promo_end&&n(\"rocket-promo-countdown\",rocket_ajax_data.promo_end),void 0!==rocket_ajax_data.license_expiration&&n(\"rocket-renew-countdown\",rocket_ajax_data.license_expiration),void 0!==rocket_ajax_data.notice_end_time){var s=\"rocket-rucss-timer\";var o=rocket_ajax_data.notice_end_time;let i=document.getElementById(s),n=document.getElementById(\"rocket-notice-saas-processing\"),r=document.getElementById(\"rocket-notice-saas-success\");if(null===i)return;function l(){var t,e=Date.now(),e=Math.floor((1e3*o-e)/1e3);if(e<=0)return clearInterval(a),null!==n&&n.classList.add(\"hidden\"),null!==r&&r.classList.remove(\"hidden\"),rocket_ajax_data.cron_disabled?void 0:((t=new FormData).append(\"action\",\"rocket_spawn_cron\"),t.append(\"nonce\",rocket_ajax_data.nonce),void fetch(ajaxurl,{method:\"POST\",credentials:\"same-origin\",body:t}));i.innerHTML=e}l();let a=setInterval(l,1e3)}},{}],7:[function(t,e,i){t(\"../custom/custom-select.js\");var l=jQuery;l(document).ready(function(){function t(t){var e=(t=l(t)).attr(\"id\"),e=l('[data-parent=\"'+e+'\"]');t.is(\":checked\")?(e.addClass(\"wpr-isOpen\"),e.each(function(){var t;l(this).find(\"input[type=checkbox]\").is(\":checked\")&&(t=l(this).find(\"input[type=checkbox]\").attr(\"id\"),l('[data-parent=\"'+t+'\"]').addClass(\"wpr-isOpen\"))})):(e.removeClass(\"wpr-isOpen\"),e.each(function(){var t=l(this).find(\"input[type=checkbox]\").attr(\"id\");l('[data-parent=\"'+t+'\"]').removeClass(\"wpr-isOpen\")}))}function e(e,i){var t,n={val:i.val(),length:i.val().length};4{l(t).attr(\"checked\",i?null:\"checked\")}):(e=l(e).closest(\".wpr-list\").find(\".wpr-main-checkbox\"),n=l.map(r,t=>{if(void 0!==l(t).attr(\"checked\"))return t}),e.attr(\"checked\",n.length===r.length?\"checked\":null))}),0{var i=l(e).parents(\".wpr-list\").find(\".wpr-list-body input[type=checkbox]:not(:checked)\").length;l(e).attr(\"checked\",i<=0?\"checked\":null)});let s={checked:{},total:{}};l(\".wpr-field--categorizedmultiselect .wpr-list\").each(function(){var t=l(this).attr(\"id\");t&&(s.checked[t]=l(`#${t} input[type='checkbox']:checked`).length,s.total[t]=l(`#${t} input[type='checkbox']:not(.wpr-main-checkbox)`).length,l(`#${t} .wpr-badge-counter span`).text(s.checked[t]),l(`#${t} .wpr-badge-counter`).toggle(0\"symbol\"==typeof(t=((t,e)=>{if(\"object\"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0===i)return(\"string\"===e?String:Number)(t);if(\"object\"!=typeof(i=i.call(t,e||\"default\")))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")})(t,\"string\"))?t:t+\"\")(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i}(class r{constructor(t){n(this,\"trackedTabs\",[\"dashboard\",\"rocket_insights\",\"page_cdn\",\"file_optimization\",\"media\",\"preload\",\"advanced_cache\",\"database\",\"heartbeat\",\"addons\",\"imagify\",\"tutorials\",\"plugins\",\"tools\"]),this.config=t}init(){\"undefined\"!=typeof mixpanel&&mixpanel.track&&this.config.optin_enabled&&\"0\"!==this.config.optin_enabled&&(mixpanel.identify(this.config.user_id),this._initListeners(this))}_initListeners(t){window.addEventListener(\"hashchange\",t._onHashChange.bind(t)),window.addEventListener(\"load\",t._onPageLoad.bind(t))}_onHashChange(t){var e=this._cleanHash(new URL(t.oldURL).hash),t=this._cleanHash(new URL(t.newURL).hash);this._canTrackTab(t)&&this._sendPageViewedEvent(this._getSource(e),t)}_onPageLoad(){var t=this._cleanHash(window.location.hash);this._canTrackTab(t)&&this._sendPageViewedEvent(this._getSource(),t)}_cleanHash(t){return t&&t.startsWith(\"#\")?t.substring(1):t}_canTrackTab(t){return this.trackedTabs.includes(t)}_getSource(t=\"\"){return t?\"settings_\"+t:this._getSourceFromQueryStringAndRemoveIt()||this._getSourceFromReferrer()}_getSourceFromQueryStringAndRemoveIt(){var t,e=new URL(window.location.href),i=e.searchParams;return i.has(\"rocket_source\")?(t=i.get(\"rocket_source\"),i.delete(\"rocket_source\"),window.history.replaceState(null,\"\",e.search?e.href:e.pathname),t):\"\"}_getSourceFromReferrer(){var t=document.referrer;return t?t.includes(window.location.hostname)?\"internal\":\"external\":\"noreferrer\"}_sendPageViewedEvent(t,e){mixpanel.track(\"Page Viewed\",{path:\"/wp-admin/options-general.php?page=wprocket#\"+e,page_name:e.replace(\"_\",\" \"),source:t,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,context:rocket_mixpanel_data.context})}static run(){\"undefined\"!=typeof rocket_mixpanel_data&&new r(rocket_mixpanel_data).init()}}).run()},{}],10:[function(t,e,i){function n(t){var e,i=this;this.$body=document.querySelector(\".wpr-body\"),this.$menuItems=document.querySelectorAll(\".wpr-menuItem\"),this.$submitButton=document.querySelector(\".wpr-Content > form > #wpr-options-submit\"),this.$pages=document.querySelectorAll(\".wpr-Page\"),this.$sidebar=document.querySelector(\".wpr-Sidebar\"),this.$content=document.querySelector(\".wpr-Content\"),this.$tips=document.querySelector(\".wpr-Content-tips\"),this.$links=document.querySelectorAll(\".wpr-body a\"),this.$menuItem=null,this.$page=null,this.pageId=null,this.bodyTop=0,this.buttonText=this.$submitButton.value,i.getBodyTop(),window.onhashchange=function(){i.detectID()},window.location.hash?(this.bodyTop=0,this.detectID()):(e=localStorage.getItem(\"wpr-hash\"),this.bodyTop=0,e?(window.location.hash=e,this.detectID()):(this.$menuItems[0].classList.add(\"isActive\"),localStorage.setItem(\"wpr-hash\",\"dashboard\"),window.location.hash=\"#dashboard\"));for(var n=0;n{window.wp&&window.wp.apiFetch?window.wp.apiFetch({path:\"/wp-rocket/v1/recommendations\"}).then(function(t){e(t)}).catch(function(t){console.error(\"Failed to fetch recommendations status:\",t)}):fetch(window.wpApiSettings?.root+\"wp-rocket/v1/recommendations\",{headers:{\"X-WP-Nonce\":window.wpApiSettings?.nonce||\"\"}}).then(function(t){if(t.ok)return t.json();throw new Error(\"Network response was not ok\")}).then(function(t){e(t)}).catch(function(t){console.error(\"Failed to fetch recommendations status:\",t)})})})},{}],12:[function(t,e,i){var n;n=document,new class{constructor(){this.path=\"/wp-rocket/v1/rocketcdn/subscription\",this.pollInterval=1e4,this.maxRetries=60,this.timerId=null,this.retryCount=0,n.addEventListener(\"rocketCDNSubscriptionLoading\",()=>this.start());[\".wpr-icon-orange-loader\",\".wpr-cdn-built-in--disabled\"].every(t=>null!==n.querySelector(t))&&this.start()}start(){this.timerId||(this.retryCount=0,this.poll())}stop(){this.timerId&&(clearTimeout(this.timerId),this.timerId=null)}poll(){this.retryCount>=this.maxRetries?this.stop():(this.retryCount++,window.wp.apiFetch({path:this.path,method:\"GET\"}).then(t=>{t&&t.is_loading?this.timerId=setTimeout(()=>this.poll(),this.pollInterval):(this.stop(),window.location.reload())}).catch(()=>{this.timerId=setTimeout(()=>this.poll(),this.pollInterval)}))}}},{}],13:[function(t,e,i){{var c=document,s=window;let i={OPENED:!1,COLLAPSED:!0};function n(){return\"#page_cdn\"===s.location.hash}function o(){var t=c.querySelector(\"#wpr-rocketcdn-cta-small\"),e=c.querySelector(\"#wpr-rocketcdn-cta\");e&&!e.classList.contains(\"wpr-isHidden\")?p(i.OPENED):t&&!t.classList.contains(\"wpr-isHidden\")&&p(i.COLLAPSED)}function r(){var t=c.getElementById(\"rocketcdn-iframe\");t&&t.dataset&&t.dataset.src&&t.dataset.src!==t.src&&(t.src=t.dataset.src,MicroModal.show(\"wpr-rocketcdn-modal\"))}function d(t){var e=new XMLHttpRequest;return e.open(\"POST\",ajaxurl),e.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),e.send(t),e}function l(){var t;n()&&(t=c.querySelector(\".wpr-cdn-tabs__tab--active\"))&&(t=t.getAttribute(\"data-cdn-mode\"))&&\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&(rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify&&mixpanel.identify(rocket_mixpanel_data.user_id),mixpanel.track(\"RocketCDN Mode\",{context:rocket_mixpanel_data.context,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,cdn_mode:t}))}function a(t,e){if(\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify){mixpanel.identify(rocket_mixpanel_data.user_id);var i={context:rocket_mixpanel_data.context,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app,path:rocket_mixpanel_data.path};if(e&&\"object\"==typeof e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(i[n]=e[n]);mixpanel.track(t,i)}}function p(t=!1){n()&&a(\"RocketCDN Upsell Banner Viewed\",{state:t?\"collapsed\":\"opened\",page_name:t=s.location.hash,path:(\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.path?rocket_mixpanel_data.path:\"\")+t})}function h(t){a(\"RocketCDN Upsell Banner Expanded\",{location:s.location.hash,trigger:t})}function u(t=\"manual\"){a(\"RocketCDN Upsell Banner Collapsed\",{location:s.location.hash,trigger:t})}c.addEventListener(\"wpr-cdn-state-change\",l),c.addEventListener(\"rocketCDNBannerAutoExpanded\",()=>h(\"auto_limit_reached\")),c.addEventListener(\"rocketCDNBannerAutoCollapsed\",()=>u(\"auto_limit_released\")),c.addEventListener(\"rocketCDNBannerFirstVisible\",()=>p(i.COLLAPSED)),c.addEventListener(\"DOMContentLoaded\",()=>{if(c.querySelectorAll(\".wpr-rocketcdn-open\").forEach(n=>{n.addEventListener(\"click\",t=>{t.preventDefault();var e,t=n.classList.contains(\"wpr-rocketcdn-pricing--cta\"),i=!s.rocketcdnButtonUrl;t&&(t=i,e=(e=c.querySelector(\".wpr-cdn-built-in .wpr-table-list\"))?e.querySelectorAll(\"[data-id]\").length:0,a(\"RocketCDN Upsell CTA Clicked\",{destination:t?\"iframe\":\"express-checkout\",pages_count:e})),i?r():setTimeout(function(){s.location.href=s.rocketcdnButtonUrl},100)})}),MicroModal.init({disableScroll:!0}),(e=new URLSearchParams(s.location.search)).has(\"rocketcdn_open_iframe\")&&\"1\"===e.get(\"rocketcdn_open_iframe\")&&(s.location.hash=\"#page_cdn\",r(),e.delete(\"rocketcdn_open_iframe\"),e=e.toString(),e=s.location.pathname+(e?\"?\"+e:\"\")+s.location.hash,s.history.replaceState({},\"\",e)),!s.rocketcdnButtonUrl||\"\"===s.rocketcdnButtonUrl){{let t=\"\",e=d(t=(t+=\"action=rocketcdn_process_status\")+\"&nonce=\"+rocket_ajax_data.nonce);e.onreadystatechange=()=>{e.readyState===XMLHttpRequest.DONE&&200===e.status&&!0===JSON.parse(e.responseText).success&&r()}}var e=c.getElementById(\"rocketcdn-iframe\");let t=c.getElementById(\"wpr-rocketcdn-modal-loader\");e&&t&&e.addEventListener(\"load\",function(){t.style.display=\"none\"})}}),s.addEventListener(\"load\",()=>{c.querySelector(\"#wpr-rocketcdn-open-cta\"),c.querySelector(\"#wpr-rocketcdn-close-cta\"),c.querySelector(\"#wpr-rocketcdn-cta-small\");let t=c.querySelector(\"#wpr-rocketcdn-cta\"),e=c.querySelector(\".wpr-rocketcdn-toggle--input\"),i=c.querySelectorAll(\".wpr-rocketcdn-cta-toggle\");function n(){if(t&&i.length){let e=t.classList.toggle(\"wpr-rocketcdn-cta--collapsed\");t.classList.toggle(\"wpr-rocketcdn-cta--expanded\",!e),i.forEach(t=>{t.setAttribute(\"aria-expanded\",e?\"false\":\"true\")}),e?u():h(\"manual\")}}i.length&&t&&i.forEach(t=>{t.addEventListener(\"click\",n),t.addEventListener(\"keydown\",t=>{\"Enter\"!==t.key&&\" \"!==t.key||(t.preventDefault(),n())})}),o(),s.addEventListener(\"hashchange\",()=>{o(),l()});let r={monthly:{regular:c.querySelectorAll(\".wpr-rocketcdn-pricing-regular-price--monthly\"),current:c.querySelectorAll(\".wpr-rocketcdn-pricing--monthly\"),period:c.querySelectorAll(\".wpr-rocketcdn-pricing--billing-period--monthly\")},yearly:{regular:c.querySelectorAll(\".wpr-rocketcdn-pricing-regular-price--yearly\"),current:c.querySelectorAll(\".wpr-rocketcdn-pricing--annual\"),period:c.querySelectorAll(\".wpr-rocketcdn-pricing--billing-period--yearly\")}};e&&e.addEventListener(\"change\",function(){var t=this.checked;t?(Object.values(r.monthly).forEach(t=>t.forEach(t=>t.classList.add(\"wpr-isHidden\"))),Object.values(r.yearly).forEach(t=>t.forEach(t=>t.classList.remove(\"wpr-isHidden\")))):(Object.values(r.monthly).forEach(t=>t.forEach(t=>t.classList.remove(\"wpr-isHidden\"))),Object.values(r.yearly).forEach(t=>t.forEach(t=>t.classList.add(\"wpr-isHidden\")))),t=t,s.rocketcdnButtonUrl&&\"\"!==s.rocketcdnButtonUrl&&(s.rocketcdnButtonUrl=((t,e)=>{let i=t.replace(/([?&])is_monthly=[^&]*/g,\"\"),n=i.includes(\"?\")?\"&\":\"?\";return i+=n+\"is_monthly=\"+(e?\"0\":\"1\")})(s.rocketcdnButtonUrl,t))});var a=c.querySelector(\"#wpr-rocketcdn-activation-cta\");a&&a.addEventListener(\"click\",()=>{\"undefined\"!=typeof mixpanel&&mixpanel.track&&\"undefined\"!=typeof rocket_mixpanel_data&&rocket_mixpanel_data.optin_enabled&&\"0\"!==rocket_mixpanel_data.optin_enabled&&(rocket_mixpanel_data.user_id&&\"function\"==typeof mixpanel.identify&&mixpanel.identify(rocket_mixpanel_data.user_id),mixpanel.track(\"RocketCDN Activation Failed CTA Clicked\",{context:rocket_mixpanel_data.context,plugin:rocket_mixpanel_data.plugin,brand:rocket_mixpanel_data.brand,application:rocket_mixpanel_data.app}))})}),s.onmessage=t=>{var e=rocket_ajax_data.origin_url;if(t.origin===e){(n=t.data).hasOwnProperty(\"cdnFrameHeight\")&&(c.getElementById(\"rocketcdn-iframe\").style.height=n.cdnFrameHeight+\"px\"),(n=t.data).hasOwnProperty(\"cdnFrameClose\")&&(MicroModal.close(\"wpr-rocketcdn-modal\"),c.body.style.overflow=\"\",n.hasOwnProperty(\"cdn_page_message\"))&&-1!==[\"iframe-payment-success\",\"iframe-unsubscribe-success\"].indexOf(n.cdn_page_message)&&c.location.reload();{var n=t.data;var r=e;let i=c.querySelector(\"#rocketcdn-iframe\").contentWindow;if(n.hasOwnProperty(\"rocketcdn_token\")){var a=\"\";let e=d(a+\"action=save_rocketcdn_token\"+(\"&value=\"+n.rocketcdn_token)+(\"&nonce=\"+rocket_ajax_data.nonce));e.onreadystatechange=()=>{var t;e.readyState===XMLHttpRequest.DONE&&200===e.status&&(t=JSON.parse(e.responseText),i.postMessage({success:t.success,data:t.data,rocketcdn:!0},r))}}else{a={process:\"subscribe\",message:\"token_not_received\"};i.postMessage({success:!1,data:a,rocketcdn:!0},r)}}(n=t.data).hasOwnProperty(\"rocketcdn_process\")&&d(\"\"+\"action=rocketcdn_process_set\"+(\"&status=\"+n.rocketcdn_process)+(\"&nonce=\"+rocket_ajax_data.nonce));{var n=t.data;var s=e;let i=c.querySelector(\"#rocketcdn-iframe\").contentWindow;if(n.hasOwnProperty(\"rocketcdn_url\")){var o=\"\";let e=d(o+\"action=rocketcdn_enable\"+(\"&cdn_url=\"+n.rocketcdn_url)+(\"&nonce=\"+rocket_ajax_data.nonce));e.onreadystatechange=()=>{var t;e.readyState===XMLHttpRequest.DONE&&200===e.status&&(t=JSON.parse(e.responseText),i.postMessage({success:t.success,data:t.data,rocketcdn:!0},s))}}}{o=t.data;var l=e;let i=c.querySelector(\"#rocketcdn-iframe\").contentWindow;if(o.hasOwnProperty(\"rocketcdn_disable\")){o=\"\";let e=d((o+=\"action=rocketcdn_disable\")+(\"&nonce=\"+rocket_ajax_data.nonce));e.onreadystatechange=()=>{var t;e.readyState===XMLHttpRequest.DONE&&200===e.status&&(t=JSON.parse(e.responseText),i.postMessage({success:t.success,data:t.data,rocketcdn:!0},l))}}}(n=t.data).hasOwnProperty(\"rocketcdn_validate_token\")&&n.hasOwnProperty(\"rocketcdn_validate_cname\")&&d(\"\"+\"action=rocketcdn_validate_token_cname\"+(\"&cdn_url=\"+n.rocketcdn_validate_cname)+(\"&cdn_token=\"+n.rocketcdn_validate_token)+(\"&nonce=\"+rocket_ajax_data.nonce))}}}},{}],14:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"TimelineLite\",[\"core.Animation\",\"core.SimpleTimeline\",\"TweenLite\"],function(d,p,h){function u(t){p.call(this,t),this._labels={},this.autoRemoveChildren=!0===this.vars.autoRemoveChildren,this.smoothChildTiming=!0===this.vars.smoothChildTiming,this._sortChildren=!0,this._onUpdate=this.vars.onUpdate;var e,i,n=this.vars;for(i in n)e=n[i],g(e)&&-1!==e.join(\"\").indexOf(\"{self}\")&&(n[i]=this._swapSelfInParams(e));g(n.tweens)&&this.add(n.tweens,0,n.align,n.stagger)}function _(t){var e,i={};for(e in t)i[e]=t[e];return i}function r(t,e,i,n){t._timeline.pause(t._startTime),e&&e.apply(n||t._timeline,i||w)}var f=1e-10,m=h._internals.isSelector,g=h._internals.isArray,w=[],s=window._gsDefine.globals,v=w.slice,t=u.prototype=new p;return u.version=\"1.12.1\",t.constructor=u,t.kill()._gc=!1,t.to=function(t,e,i,n){var r=i.repeat&&s.TweenMax||h;return e?this.add(new r(t,e,i),n):this.set(t,i,n)},t.from=function(t,e,i,n){return this.add((i.repeat&&s.TweenMax||h).from(t,e,i),n)},t.fromTo=function(t,e,i,n,r){var a=n.repeat&&s.TweenMax||h;return e?this.add(a.fromTo(t,e,i,n),r):this.set(t,n,r)},t.staggerTo=function(t,e,i,n,r,a,s,o){var l,c=new u({onComplete:a,onCompleteParams:s,onCompleteScope:o,smoothChildTiming:this.smoothChildTiming});for(\"string\"==typeof t&&(t=h.selector(t)||t),m(t)&&(t=v.call(t,0)),n=n||0,l=0;t.length>l;l++)i.startAt&&(i.startAt=_(i.startAt)),c.to(t[l],e,_(i),l*n);return this.add(c,r)},t.staggerFrom=function(t,e,i,n,r,a,s,o){return i.immediateRender=0!=i.immediateRender,i.runBackwards=!0,this.staggerTo(t,e,i,n,r,a,s,o)},t.staggerFromTo=function(t,e,i,n,r,a,s,o,l){return n.startAt=i,n.immediateRender=0!=n.immediateRender&&0!=i.immediateRender,this.staggerTo(t,e,n,r,a,s,o,l)},t.call=function(t,e,i,n){return this.add(h.delayedCall(0,t,e,i),n)},t.set=function(t,e,i){return i=this._parseTimeOrLabel(i,0,!0),null==e.immediateRender&&(e.immediateRender=i===this._time&&!this._paused),this.add(new h(t,0,e),i)},u.exportRoot=function(t,e){null==(t=t||{}).smoothChildTiming&&(t.smoothChildTiming=!0);var i,n,r=new u(t),t=r._timeline;for(null==e&&(e=!0),t._remove(r,!0),r._startTime=0,r._rawPrevTime=r._time=r._totalTime=t._time,i=t._first;i;)n=i._next,e&&i instanceof h&&i.target===i.vars.onComplete||r.add(i,i._startTime-i._delay),i=n;return t.add(r,0),r},t.add=function(t,e,i,n){var r,a,s,o,l,c;if(\"number\"!=typeof e&&(e=this._parseTimeOrLabel(e,0,!0,t)),!(t instanceof d)){if(t instanceof Array||t&&t.push&&g(t)){for(i=i||\"normal\",n=n||0,r=e,a=t.length,s=0;st._startTime;l._timeline;)c&&l._timeline.smoothChildTiming?l.totalTime(l._totalTime,!0):l._gc&&l._enabled(!0,!1),l=l._timeline;return this},t.remove=function(t){if(t instanceof d)return this._remove(t,!1);if(t instanceof Array||t&&t.push&&g(t)){for(var e=t.length;-1<--e;)this.remove(t[e]);return this}return\"string\"==typeof t?this.removeLabel(t):this.kill(null,t)},t._remove=function(t,e){p.prototype._remove.call(this,t,e);t=this._last;return t?this._time>t._startTime+t._totalDuration/t._timeScale&&(this._time=this.duration(),this._totalTime=this._totalDuration):this._time=this._totalTime=this._duration=this._totalDuration=0,this},t.append=function(t,e){return this.add(t,this._parseTimeOrLabel(null,e,!0,t))},t.insert=t.insertMultiple=function(t,e,i,n){return this.add(t,e||0,i,n)},t.appendMultiple=function(t,e,i,n){return this.add(t,this._parseTimeOrLabel(null,e,!0,t),i,n)},t.addLabel=function(t,e){return this._labels[t]=this._parseTimeOrLabel(e),this},t.addPause=function(t,e,i,n){return this.call(r,[\"{self}\",e,i,n],this,t)},t.removeLabel=function(t){return delete this._labels[t],this},t.getLabelTime=function(t){return null!=this._labels[t]?this._labels[t]:-1},t._parseTimeOrLabel=function(t,e,i,n){var r;if(n instanceof d&&n.timeline===this)this.remove(n);else if(n&&(n instanceof Array||n.push&&g(n)))for(r=n.length;-1<--r;)n[r]instanceof d&&n[r].timeline===this&&this.remove(n[r]);if(\"string\"==typeof e)return this._parseTimeOrLabel(e,i&&\"number\"==typeof t&&null==this._labels[e]?t-this.duration():0,i);if(e=e||0,\"string\"!=typeof t||!isNaN(t)&&null==this._labels[t])null==t&&(t=this.duration());else{if(-1===(r=t.indexOf(\"=\")))return null==this._labels[t]?i?this._labels[t]=this.duration()+e:e:this._labels[t]+e;e=parseInt(t.charAt(r-1)+\"1\",10)*Number(t.substr(r+1)),t=1f)&&(s=\"onReverseComplete\")),this._rawPrevTime=this._duration||!e||t||this._rawPrevTime===t?t:f,t=l+1e-4):t<1e-7?(((this._totalTime=this._time=0)!==c||0===this._duration&&this._rawPrevTime!==f&&(0=c)for(n=this._first;n&&(a=n._next,!this._paused||h);)(n._active||n._startTime<=this._time&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=a;else for(n=this._last;n&&(a=n._prev,!this._paused||h);)(n._active||c>=n._startTime&&!n._paused&&!n._gc)&&(n._reversed?n.render((n._dirty?n.totalDuration():n._totalDuration)-(t-n._startTime)*n._timeScale,e,i):n.render((t-n._startTime)*n._timeScale,e,i)),n=a;this._onUpdate&&!e&&this._onUpdate.apply(this.vars.onUpdateScope||this,this.vars.onUpdateParams||w),!s||this._gc||d!==this._startTime&&p===this._timeScale||!(0===this._time||l>=this.totalDuration())||(r&&(this._timeline.autoRemoveChildren&&this._enabled(!1,!1),this._active=!1),e)||!this.vars[s]||this.vars[s].apply(this.vars[s+\"Scope\"]||this,this.vars[s+\"Params\"]||w)}},t._hasPausedChild=function(){for(var t=this._first;t;){if(t._paused||t instanceof u&&t._hasPausedChild())return!0;t=t._next}return!1},t.getChildren=function(t,e,i,n){n=n||-9999999999;for(var r=[],a=this._first,s=0;a;)n>a._startTime||(a instanceof h?!1!==e&&(r[s++]=a):(!1!==i&&(r[s++]=a),!1!==t&&(s=(r=r.concat(a.getChildren(!0,e,i))).length))),a=a._next;return r},t.getTweensOf=function(t,e){var i,n,r=this._gc,a=[],s=0;for(r&&this._enabled(!0,!0),n=(i=h.getTweensOf(t)).length;-1<--n;)(i[n].timeline===this||e&&this._contains(i[n]))&&(a[s++]=i[n]);return r&&this._enabled(!1,!0),a},t._contains=function(t){for(var e=t.timeline;e;){if(e===this)return!0;e=e.timeline}return!1},t.shiftChildren=function(t,e,i){i=i||0;for(var n,r=this._first,a=this._labels;r;)r._startTime>=i&&(r._startTime+=t),r=r._next;if(e)for(n in a)a[n]>=i&&(a[n]+=t);return this._uncache(!0)},t._kill=function(t,e){if(!t&&!e)return this._enabled(!1,!1);for(var i=e?this.getTweensOf(e):this.getChildren(!0,!0,!1),n=i.length,r=!1;-1<--n;)i[n]._kill(t,e)&&(r=!0);return r},t.clear=function(t){var e=this.getChildren(!1,!0,!0),i=e.length;for(this._time=this._totalTime=0;-1<--i;)e[i]._enabled(!1,!1);return!1!==t&&(this._labels={}),this._uncache(!0)},t.invalidate=function(){for(var t=this._first;t;)t.invalidate(),t=t._next;return this},t._enabled=function(t,e){if(t===this._gc)for(var i=this._first;i;)i._enabled(t,!0),i=i._next;return p.prototype._enabled.call(this,t,e)},t.duration=function(t){return arguments.length?(0!==this.duration()&&0!==t&&this.timeScale(this._duration/t),this):(this._dirty&&this.totalDuration(),this._duration)},t.totalDuration=function(t){if(arguments.length)return 0!==this.totalDuration()&&0!==t&&this.timeScale(this._totalDuration/t),this;if(this._dirty){for(var e,i,n=0,r=this._last,a=999999999999;r;)e=r._prev,r._dirty&&r.totalDuration(),r._startTime>a&&this._sortChildren&&!r._paused?this.add(r,r._startTime-r._delay):a=r._startTime,r._startTime<0&&!r._paused&&(n-=r._startTime,this._timeline.smoothChildTiming&&(this._startTime+=r._startTime/this._timeScale),this.shiftChildren(-r._startTime,!1,-9999999999),a=0),n<(i=r._startTime+r._totalDuration/r._timeScale)&&(n=i),r=e;this._duration=this._totalDuration=n,this._dirty=!1}return this._totalDuration},t.usesFrames=function(){for(var t=this._timeline;t._timeline;)t=t._timeline;return t===d._rootFramesTimeline},t.rawTime=function(){return this._paused?this._totalTime:(this._timeline.rawTime()-this._startTime)*this._timeScale},u},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],15:[function(j,h,q){var e,B,_=window,u=_.GreenSockGlobals||_;if(!u.TweenLite){var f,X=function(t){for(var e=t.split(\".\"),i=u,n=0;e.length>n;n++)i[e[n]]=i=i[e[n]]||{};return i},p=X(\"com.greensock\"),m=1e-10,N=[].slice,F=function(){},g=(e=Object.prototype.toString,B=e.call([]),function(t){return null!=t&&(t instanceof Array||\"object\"==typeof t&&!!t.push&&e.call(t)===B)}),w={},z=function(o,l,c,d){this.sc=w[o]?w[o].sc:[],(w[o]=this).gsClass=null,this.func=c;var p=[];this.check=function(t){for(var e,i,n,r,a=l.length,s=a;-1<--a;)(e=w[l[a]]||new z(l[a],[])).gsClass?(p[a]=e.gsClass,s--):t&&e.sc.push(this);if(0===s&&c)for(n=(i=(\"com.greensock.\"+o).split(\".\")).pop(),r=X(i.join(\".\"))[n]=this.gsClass=c.apply(c,p),d&&(u[n]=r,\"function\"==typeof define&&define.amd?define((_.GreenSockAMDPath?_.GreenSockAMDPath+\"/\":\"\")+o.split(\".\").join(\"/\"),[],function(){return r}):void 0!==h&&h.exports&&(h.exports=r)),a=0;this.sc.length>a;a++)this.sc[a].check()},this.check(!0)},n=_._gsDefine=function(t,e,i,n){return new z(t,e,i,n)},v=p._class=function(t,e,i){return e=e||function(){},n(t,[],function(){return e},i),e},H=(n.globals=u,[0,0,1,1]),y=[],d=v(\"easing.Ease\",function(t,e,i,n){this._func=t,this._type=i||0,this._power=n||0,this._params=e?H.concat(e):H},!0),b=d.map={},t=d.register=function(t,e,i,n){for(var r,a,s,o,l=e.split(\",\"),c=l.length,d=(i||\"easeIn,easeOut,easeInOut\").split(\",\");-1<--c;)for(a=l[c],r=n?v(\"easing.\"+a,null,!0):p.easing[a]||{},s=d.length;-1<--s;)o=d[s],b[a+\".\"+o]=b[o+a]=r[o]=t.getRatio?t:t[o]||new t},i=d.prototype;for(i._calcEnd=!1,i.getRatio=function(t){var e,i,n;return this._func?(this._params[0]=t,this._func.apply(null,this._params)):(n=1===(e=this._type)?1-t:2===e?t:t<.5?2*t:2*(1-t),1===(i=this._power)?n*=n:2===i?n*=n*n:3===i?n*=n*n*n:4===i&&(n*=n*n*n*n),1===e?1-n:2===e?n:t<.5?n/2:1-n/2)},a=(r=[\"Linear\",\"Quad\",\"Cubic\",\"Quart\",\"Quint,Strong\"]).length;-1<--a;)i=r[a]+\",Power\"+a,t(new d(null,null,1,a),i,\"easeOut\",!0),t(new d(null,null,2,a),i,\"easeIn\"+(0===a?\",easeNone\":\"\")),t(new d(null,null,3,a),i,\"easeInOut\");b.linear=p.easing.Linear.easeIn,b.swing=p.easing.Quad.easeInOut;for(var r,Y=v(\"events.EventDispatcher\",function(t){this._listeners={},this._eventTarget=t||this}),k=((i=Y.prototype).addEventListener=function(t,e,i,n,r){r=r||0;var a,s,o=this._listeners[t],l=0;for(null==o&&(this._listeners[t]=o=[]),s=o.length;-1<--s;)(a=o[s]).c===e&&a.s===i?o.splice(s,1):0===l&&r>a.pr&&(l=s+1);o.splice(l,0,{c:e,s:i,up:n,pr:r}),this!==P||f||P.wake()},i.removeEventListener=function(t,e){var i,n=this._listeners[t];if(n)for(i=n.length;-1<--i;)if(n[i].c===e)return void n.splice(i,1)},i.dispatchEvent=function(t){var e,i,n,r=this._listeners[t];if(r)for(e=r.length,i=this._eventTarget;-1<--e;)(n=r[e]).up?n.c.call(n.s||i,{type:t,target:i}):n.c.call(n.s||i)},_.requestAnimationFrame),x=_.cancelAnimationFrame,T=Date.now||function(){return(new Date).getTime()},S=T(),a=(r=[\"ms\",\"moz\",\"webkit\",\"o\"]).length;-1<--a&&!k;)k=_[r[a]+\"RequestAnimationFrame\"],x=_[r[a]+\"CancelAnimationFrame\"]||_[r[a]+\"CancelRequestAnimationFrame\"];v(\"Ticker\",function(t,e){var n,r,a,s,o,l=this,c=T(),i=!1!==e&&k,d=500,p=33,h=function(t){var e,i=T()-S;d=e&&e+this.totalDuration()/this._timeScale>t},i._enabled=function(t,e){return f||P.wake(),this._gc=!t,this._active=this.isActive(),!0!==e&&(t&&!this.timeline?this._timeline.add(this,this._startTime-this._delay):!t&&this.timeline&&this._timeline._remove(this,!0)),!1},i._kill=function(){return this._enabled(!1,!1)},i.kill=function(t,e){return this._kill(t,e),this},i._uncache=function(t){for(var e=t?this:this.timeline;e;)e._dirty=!0,e=e.timeline;return this},i._swapSelfInParams=function(t){for(var e=t.length,i=t.concat();-1<--e;)\"{self}\"===t[e]&&(i[e]=this);return i},i.eventCallback=function(t,e,i,n){if(\"on\"===(t||\"\").substr(0,2)){var r=this.vars;if(1===arguments.length)return r[t];null==e?delete r[t]:(r[t]=e,r[t+\"Params\"]=g(i)&&-1!==i.join(\"\").indexOf(\"{self}\")?this._swapSelfInParams(i):i,r[t+\"Scope\"]=n),\"onUpdate\"===t&&(this._onUpdate=e)}return this},i.delay=function(t){return arguments.length?(this._timeline.smoothChildTiming&&this.startTime(this._startTime+t-this._delay),this._delay=t,this):this._delay},i.duration=function(t){return arguments.length?(this._duration=this._totalDuration=t,this._uncache(!0),this._timeline.smoothChildTiming&&0this._duration?this._duration:t,e)):this._time},i.totalTime=function(t,e,i){if(f||P.wake(),!arguments.length)return this._totalTime;if(this._timeline){if(t<0&&!i&&(t+=this.totalDuration()),this._timeline.smoothChildTiming){this._dirty&&this.totalDuration();var n=this._totalDuration,r=this._timeline;if(nn;)i=i._prev;return i?(t._next=i._next,i._next=t):(t._next=this._first,this._first=t),t._next?t._next._prev=t:this._last=t,t._prev=i,this._timeline&&this._uncache(!0),this},i._remove=function(t,e){return t.timeline===this&&(e||t._enabled(!1,!0),t.timeline=null,t._prev?t._prev._next=t._next:this._first===t&&(this._first=t._next),t._next?t._next._prev=t._prev:this._last===t&&(this._last=t._prev),this._timeline)&&this._uncache(!0),this},i.render=function(t,e,i){var n,r=this._first;for(this._totalTime=this._time=this._rawPrevTime=t;r;)n=r._next,(r._active||t>=r._startTime&&!r._paused)&&(r._reversed?r.render((r._dirty?r.totalDuration():r._totalDuration)-(t-r._startTime)*r._timeScale,e,i):r.render((t-r._startTime)*r._timeScale,e,i)),r=n},i.rawTime=function(){return f||P.wake(),this._totalTime},v(\"TweenLite\",function(t,e,i){if(o.call(this,e,i),this.render=C.prototype.render,null==t)throw\"Cannot tween a null target.\";this.target=t=\"string\"==typeof t&&C.selector(t)||t;var n,r,a,i=t.jquery||t.length&&t!==_&&t[0]&&(t[0]===_||t[0].nodeType&&t[0].style&&!t.nodeType),s=this.vars.overwrite;if(this._overwrite=s=null==s?Q[C.defaultOverwrite]:\"number\"==typeof s?s>>0:Q[s],(i||t instanceof Array||t.push&&g(t))&&\"number\"!=typeof t[0])for(this._targets=a=N.call(t,0),this._propLookup=[],this._siblings=[],n=0;a.length>n;n++)(r=a[n])?\"string\"!=typeof r?r.length&&r!==_&&r[0]&&(r[0]===_||r[0].nodeType&&r[0].style&&!r.nodeType)?(a.splice(n--,1),this._targets=a=a.concat(N.call(r,0))):(this._siblings[n]=M(r,this,!1),1===s&&1=s._startTime&&s._startTime+s.totalDuration()/s._timeScale>c&&((h||!s._initted)&&c-s._startTime<=2e-10||(d[p++]=s)));for(u=p;-1<--u;)s=d[u],2===n&&s._kill(i,t)&&(a=!0),(2!==n||!s._firstPT&&s._initted)&&s._enabled(!1,!1)&&(a=!0)}return a},Z=function(t,e,i){for(var n=t._timeline,r=n._timeScale,a=t._startTime;n._timeline;){if(a+=n._startTime,r*=n._timeScale,n._paused)return-100;n=n._timeline}return e<(a/=r)?a-e:i&&a===e||!t._initted&&a-e<2*m?m:(a+=t.totalDuration()/t._timeScale/r)>e+m?0:a-e-m},D=(i._init=function(){var t,e,i,n,r,a=this.vars,s=this._overwrittenProps,o=this._duration,l=!!a.immediateRender,c=a.ease;if(a.startAt){for(n in this._startAt&&(this._startAt.render(-1,!0),this._startAt.kill()),r={},a.startAt)r[n]=a.startAt[n];if(r.overwrite=!1,r.immediateRender=!0,r.lazy=l&&!1!==a.lazy,r.startAt=r.delay=null,this._startAt=C.to(this.target,0,r),l)if(0o.pr;)n=n._next;(o._prev=n?n._prev:a)?o._prev._next=o:r=o,(o._next=n)?n._prev=o:a=o,o=s}o=e._firstPT=r}for(;o;)o.pg&&\"function\"==typeof o.t[t]&&o.t[t]()&&(i=!0),o=o._next;return i},D.activate=function(t){for(var e=t.length;-1<--e;)t[e].API===D.API&&(E[(new t[e])._propName]=t[e]);return!0},n.plugin=function(t){if(!(t&&t.propName&&t.init&&t.API))throw\"illegal plugin definition.\";var e,i=t.propName,n=t.priority||0,r=t.overwriteProps,a={init:\"_onInitTween\",set:\"setRatio\",kill:\"_kill\",round:\"_roundProps\",initAll:\"_onInitAllProps\"},s=v(\"plugins.\"+i.charAt(0).toUpperCase()+i.substr(1)+\"Plugin\",function(){D.call(this,i,n),this._overwriteProps=r||[]},!0===t.global),o=s.prototype=new D(i);for(e in(o.constructor=s).API=t.API,a)\"function\"==typeof t[e]&&(o[a[e]]=t[e]);return s.version=t.version,D.activate([s]),s},r=_._gsQueue){for(a=0;r.length>a;a++)r[a]();for(i in w)w[i].func||_.console.log(\"GSAP encountered missing dependency: com.greensock.\"+i)}f=!1}},{}],16:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"easing.Back\",[\"easing.Ease\"],function(m){function t(t,e){var i=(t=c(\"easing.\"+t,function(){},!0)).prototype=new m;return i.constructor=t,i.getRatio=e,t}function e(t,e,i,n){return e=c(\"easing.\"+t,{easeOut:new e,easeIn:new i,easeInOut:new n},!0),d(e,t),e}function g(t,e,i){this.t=t,this.v=e,i&&(((this.next=i).prev=this).c=i.v-e,this.gap=i.t-t)}function i(t,e){var i=c(\"easing.\"+t,function(t){this._p1=t||0===t?t:1.70158,this._p2=1.525*this._p1},!0);return(t=i.prototype=new m).constructor=i,t.getRatio=e,t.config=function(t){return new i(t)},i}var n,r,a=window.GreenSockGlobals||window,s=a.com.greensock,o=2*Math.PI,l=Math.PI/2,c=s._class,d=m.register||function(){},s=e(\"Back\",i(\"BackOut\",function(t){return--t*t*((this._p1+1)*t+this._p1)+1}),i(\"BackIn\",function(t){return t*t*((this._p1+1)*t-this._p1)}),i(\"BackInOut\",function(t){return(t*=2)<1?.5*t*t*((this._p2+1)*t-this._p2):.5*((t-=2)*t*((this._p2+1)*t+this._p2)+2)})),p=c(\"easing.SlowMo\",function(t,e,i){e=e||0===e?e:.7,null==t?t=.7:1t?this._calcEnd?1-(t=1-t/this._p1)*t:e-(t=1-t/this._p1)*t*t*t*e:t>this._p3?this._calcEnd?1-(t=(t-this._p3)/this._p1)*t:e+(t-e)*(t=(t-this._p3)/this._p1)*t*t*t:this._calcEnd?1:e},p.ease=new p(.7,.7),h.config=p.config=function(t,e,i){return new p(t,e,i)},(h=(n=c(\"easing.SteppedEase\",function(t){this._p1=1/(t=t||1),this._p2=t+1},!0)).prototype=new m).constructor=n,h.getRatio=function(t){return t<0?t=0:1<=t&&(t=.999999999),(this._p2*t>>0)*this._p1},h.config=n.config=function(t){return new n(t)},(h=(r=c(\"easing.RoughEase\",function(t){for(var e,i,n,r,a,s,o=(t=t||{}).taper||\"none\",l=[],c=0,d=0|(t.points||20),p=d,h=!1!==t.randomize,u=!0===t.clamp,_=t.template instanceof m?t.template:null,f=\"number\"==typeof t.strength?.4*t.strength:.4;-1<--p;)e=h?Math.random():1/d*p,i=_?_.getRatio(e):e,n=\"none\"===o?f:\"out\"===o?(r=1-e)*r*f:\"in\"===o?e*e*f:.5*(r=e<.5?2*e:2*(1-e))*r*f,h?i+=Math.random()*n-.5*n:p%2?i+=.5*n:i-=.5*n,u&&(1e.t){for(;e.next&&t>=e.t;)e=e.next;e=e.prev}else for(;e.prev&&e.t>=t;)e=e.prev;return(this._prev=e).v+(t-e.t)/e.gap*e.c},h.config=function(t){return new r(t)},r.ease=new r,e(\"Bounce\",t(\"BounceOut\",function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}),t(\"BounceIn\",function(t){return 1/2.75>(t=1-t)?1-7.5625*t*t:t<2/2.75?1-(7.5625*(t-=1.5/2.75)*t+.75):t<2.5/2.75?1-(7.5625*(t-=2.25/2.75)*t+.9375):1-(7.5625*(t-=2.625/2.75)*t+.984375)}),t(\"BounceInOut\",function(t){var e=t<.5;return t=(t=e?1-2*t:2*t-1)<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375,e?.5*(1-t):.5*t+.5})),e(\"Circ\",t(\"CircOut\",function(t){return Math.sqrt(1- --t*t)}),t(\"CircIn\",function(t){return-(Math.sqrt(1-t*t)-1)}),t(\"CircInOut\",function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)})),e(\"Elastic\",(h=function(t,e,i){var n=c(\"easing.\"+t,function(t,e){this._p1=t||1,this._p2=e||i,this._p3=this._p2/o*(Math.asin(1/this._p1)||0)},!0),t=n.prototype=new m;return t.constructor=n,t.getRatio=e,t.config=function(t,e){return new n(t,e)},n})(\"ElasticOut\",function(t){return this._p1*Math.pow(2,-10*t)*Math.sin((t-this._p3)*o/this._p2)+1},.3),h(\"ElasticIn\",function(t){return-(this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*o/this._p2))},.3),h(\"ElasticInOut\",function(t){return(t*=2)<1?-.5*this._p1*Math.pow(2,10*--t)*Math.sin((t-this._p3)*o/this._p2):.5*this._p1*Math.pow(2,-10*--t)*Math.sin((t-this._p3)*o/this._p2)+1},.45)),e(\"Expo\",t(\"ExpoOut\",function(t){return 1-Math.pow(2,-10*t)}),t(\"ExpoIn\",function(t){return Math.pow(2,10*(t-1))-.001}),t(\"ExpoInOut\",function(t){return(t*=2)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*(t-1)))})),e(\"Sine\",t(\"SineOut\",function(t){return Math.sin(t*l)}),t(\"SineIn\",function(t){return 1-Math.cos(t*l)}),t(\"SineInOut\",function(t){return-.5*(Math.cos(Math.PI*t)-1)})),c(\"easing.EaseLookup\",{find:function(t){return m.map[t]}},!0),d(a.SlowMo,\"SlowMo\",\"ease,\"),d(r,\"RoughEase\",\"ease,\"),d(n,\"SteppedEase\",\"ease,\"),s},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],17:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){window._gsDefine(\"plugins.CSSPlugin\",[\"plugins.TweenPlugin\",\"TweenLite\"],function(a,h){function X(){a.call(this,\"css\"),this._overwriteProps.length=0,this.setRatio=X.prototype.setRatio}var u,b,k,p,_={},t=X.prototype=new a(\"css\");(t.constructor=X).version=\"1.12.1\",X.API=2,X.defaultTransformPerspective=0,X.defaultSkewType=\"compensated\",X.suffixMap={top:t=\"px\",right:t,bottom:t,left:t,width:t,height:t,fontSize:t,padding:t,margin:t,perspective:t,lineHeight:\"\"};function s(t,e){return e.toUpperCase()}function o(t){return tt.test(\"string\"==typeof t?t:(t.currentStyle||t.style).filter||\"\")?parseFloat(RegExp.$1)/100:1}function D(t){window.console&&console.log(t)}function x(t,e){var i,n,r=(e=e||C).style;if(void 0!==r[t])return t;for(t=t.charAt(0).toUpperCase()+t.substr(1),i=[\"O\",\"Moz\",\"ms\",\"Ms\",\"Webkit\"],n=5;-1<--n&&void 0===r[i[n]+t];);return 0<=n?(pt=\"-\"+(ht=3===n?\"ms\":i[n]).toLowerCase()+\"-\",ht+t):null}function f(t,e){var i,n={};if(e=e||m(t,null))if(i=e.length)for(;-1<--i;)n[e[i].replace(at,s)]=e.getPropertyValue(e[i]);else for(i in e)n[i]=e[i];else if(e=t.currentStyle||t.style)for(i in e)\"string\"==typeof i&&void 0===n[i]&&(n[i.replace(at,s)]=e[i]);return L||(n.opacity=o(t)),t=M(t,e,!1),n.rotation=t.rotation,n.skewX=t.skewX,n.scaleX=t.scaleX,n.scaleY=t.scaleY,n.x=t.x,n.y=t.y,Y&&(n.z=t.z,n.rotationX=t.rotationX,n.rotationY=t.rotationY,n.scaleZ=t.scaleZ),n.filters&&delete n.filters,n}function j(t,e,i,n,r){var a,s,o,l={},c=t.style;for(s in i)\"cssText\"!==s&&\"length\"!==s&&isNaN(s)&&(e[s]!==(a=i[s])||r&&r[s])&&-1===s.indexOf(\"Origin\")&&(\"number\"==typeof a||\"string\"==typeof a)&&(l[s]=\"auto\"!==a||\"left\"!==s&&\"top\"!==s?\"\"!==a&&\"auto\"!==a&&\"none\"!==a||\"string\"!=typeof e[s]||\"\"===e[s].replace(d,\"\")?a:0:ut(t,s),void 0!==c[s])&&(o=new wt(c,s,c[s],o));if(n)for(s in n)\"className\"!==s&&(l[s]=n[s]);return{difs:l,firstMPT:o}}function q(t,e){var i=(t=null!=t&&\"\"!==t&&\"auto\"!==t&&\"auto auto\"!==t?t:\"0 0\").split(\" \"),n=-1!==t.indexOf(\"left\")?\"0%\":-1!==t.indexOf(\"right\")?\"100%\":i[0];return null==(t=-1!==t.indexOf(\"top\")?\"0%\":-1!==t.indexOf(\"bottom\")?\"100%\":i[1])?t=\"0\":\"center\"===t&&(t=\"50%\"),(\"center\"===n||isNaN(parseFloat(n))&&-1===(n+\"\").indexOf(\"=\"))&&(n=\"50%\"),e&&(e.oxp=-1!==n.indexOf(\"%\"),e.oyp=-1!==t.indexOf(\"%\"),e.oxr=\"=\"===n.charAt(1),e.oyr=\"=\"===t.charAt(1),e.ox=parseFloat(n.replace(d,\"\")),e.oy=parseFloat(t.replace(d,\"\"))),n+\" \"+t+(2>16,255&t>>8,255&t]:(\",\"===t.charAt(t.length-1)&&(t=t.substr(0,t.length-1)),O[t]||(\"#\"===t.charAt(0)?(4===t.length&&(t=\"#\"+(e=t.charAt(1))+e+(i=t.charAt(2))+i+(n=t.charAt(3))+n),[(t=parseInt(t.substr(1),16))>>16,255&t>>8,255&t]):(\"hsl\"===t.substr(0,3)?(t=t.match(S),n=Number(t[0])%360/360,r=Number(t[1])/100,e=2*(a=Number(t[2])/100)-(i=a<=.5?a*(1+r):a+r-a*r),3a \",!!(e=G.getElementsByTagName(\"a\")[0])&&/^0.55/.test(e.style.opacity)),pt=\"\",ht=\"\",m=y.defaultView?y.defaultView.getComputedStyle:function(){},z=X.getStyle=function(t,e,i,n,r){var a;return L||\"opacity\"!==e?(!n&&t.style[e]?a=t.style[e]:(i=i||m(t))?a=i[e]||i.getPropertyValue(e)||i.getPropertyValue(e.replace(rt,\"-$1\").toLowerCase()):t.currentStyle&&(a=t.currentStyle[e]),null==r||a&&\"none\"!==a&&\"auto\"!==a&&\"auto auto\"!==a?a:r):o(t)},A=i.convertToPixels=function(t,e,i,n,r){if(\"px\"===n||!n)return i;if(\"auto\"===n||!i)return 0;var a,s,o,l=ot.test(e),c=t,d=C.style,p=i<0;if(p&&(i=-i),\"%\"===n&&-1!==e.indexOf(\"border\"))a=i/100*(l?t.clientWidth:t.clientHeight);else{if(d.cssText=\"border:0 solid red;position:\"+z(t,\"position\")+\";line-height:0;\",\"%\"!==n&&c.appendChild)d[l?\"borderLeftWidth\":\"borderTopWidth\"]=i+n;else{if(s=(c=t.parentNode||y.body)._gsCache,o=h.ticker.frame,s&&l&&s.time===o)return s.width*i/100;d[l?\"width\":\"height\"]=i+n}c.appendChild(C),a=parseFloat(C[l?\"offsetWidth\":\"offsetHeight\"]),c.removeChild(C),l&&\"%\"===n&&!1!==X.cacheWidths&&((s=c._gsCache=c._gsCache||{}).time=o,s.width=a/i*100),0!==a||r||(a=A(t,e,i,n,!0))}return p?-a:a},ut=i.calculateOffset=function(t,e,i){var n;return\"absolute\"!==z(t,\"position\",i)?0:(i=z(t,\"margin\"+(n=\"left\"===e?\"Left\":\"Top\"),i),t[\"offset\"+n]-(A(t,e,parseFloat(i),i.replace(K,\"\"))||0))},_t={width:[\"Left\",\"Right\"],height:[\"Top\",\"Bottom\"]},ft=[\"marginLeft\",\"marginRight\",\"marginTop\",\"marginBottom\"],O={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],fuchsia:[255,0,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},E=\"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#.+?\\\\b\";for(t in O)E+=\"|\"+t+\"\\\\b\";function mt(t,e,a,s){var o,l,c,d,p,h,u,_;return null==t?function(t){return t}:(l=e?(t.match(E)||[\"\"])[0]:\"\",c=t.split(l).join(\"\").match(J)||[],d=t.substr(0,t.indexOf(c[0])),p=\")\"===t.charAt(t.length-1)?\")\":\"\",h=-1!==t.indexOf(\" \")?\" \":\",\",u=c.length,_=0n;n++)r[n]=o(r[n]);return r.join(\",\")}if(e=(t.match(E)||[l])[0],n=(i=t.split(e).join(\"\").match(J)||[]).length,u>n--)for(;u>++n;)i[n]=a?i[0|(n-1)/2]:c[n];return d+i.join(h)+h+e+p+(-1!==t.indexOf(\"inset\")?\" inset\":\"\")}:function(t){var e,i,n;if(\"number\"==typeof t)t+=_;else if(s&&P.test(t)){for(i=t.replace(P,\"|\").split(\"|\"),n=0;i.length>n;n++)i[n]=o(i[n]);return i.join(\",\")}if(n=(e=t.match(J)||[]).length,u>n--)for(;u>++n;)e[n]=a?e[0|(n-1)/2]:c[n];return d+e.join(h)+p}:function(t){return t})}function gt(c){return c=c.split(\",\"),function(t,e,i,n,r,a,s){var o,l=(e+\"\").split(\" \");for(s={},o=0;o<4;o++)s[c[o]]=l[o]=l[o]||l[(o-1)/2>>0];return n.parse(t,s,r,a)}}function wt(t,e,i,n,r){this.t=t,this.p=e,this.v=i,this.r=r,n&&((n._prev=this)._next=n)}var E=RegExp(E+\")\",\"gi\"),R=(i._setPluginRatio=function(t){this.plugin.setRatio(t);for(var e,i,n,r,a=this.data,s=a.proxy,o=a.firstMPT;o;)e=s[o.v],o.r?e=Math.round(e):e<1e-6&&-1e-6n;n++)r+=i[\"xn\"+n]+i[\"xs\"+(n+1)];i.e=r}}else i.e=i.s+i.xs0;o=o._next}},i._parseToProxy=function(t,e,i,n,r,a){var s,o,l,c,d=n,p={},h={},u=i._transform,_=v;for(i._transform=null,v=e,n=t=i.parse(t,e,n,r),v=_,a&&(i._transform=u,d)&&(d._prev=null,d._prev)&&(d._prev._next=null);n&&n!==d;){if(n.type<=1&&(h[o=n.p]=n.s+n.c,p[o]=n.s,a||(c=new wt(n,\"s\",o,c,n.r),n.c=0),1===n.type))for(s=n.l;0<--s;)h[o=n.p+\"_\"+(l=\"xn\"+s)]=n.data[l],p[o]=n[l],a||(c=new wt(n,l,o,c,n.rxp[l]));n=n._next}return{proxy:p,end:h,firstMPT:c,pt:t}},i.CSSPropTween=function(t,e,i,n,r,a,s,o,l,c,d){this.t=t,this.p=e,this.s=i,this.c=n,this.n=s||e,t instanceof R||p.push(this.n),this.r=o,this.type=a||0,l&&(this.pr=l,u=!0),this.b=void 0===c?i:c,this.e=void 0===d?i+n:d,r&&((this._next=r)._prev=this)}),vt=X.parseComplex=function(t,e,i,n,r,a,s,o,l,c){s=new R(t,e,0,0,s,c?2:1,null,!1,o,i=i||a||\"\",n),n+=\"\";var d,p,h,u,_,f,m,g,w,v,y,b=i.split(\", \").join(\",\").split(\" \"),k=n.split(\", \").join(\",\").split(\" \"),x=b.length,T=!1!==U;for(-1===n.indexOf(\",\")&&-1===i.indexOf(\",\")||(b=b.join(\" \").replace(P,\", \").split(\" \"),k=k.join(\" \").replace(P,\", \").split(\" \"),x=b.length),x!==k.length&&(x=(b=(a||\"\").split(\" \")).length),s.plugin=l,s.setRatio=c,d=0;dp;p++)v=f[p],w=u.indexOf(v,h),s.appendXtra(u.substr(h,w-h),Number(v),B(m[p],v),\"\",T&&\"px\"===u.substr(w+v.length,2),0===p),h=w+v.length;s[\"xs\"+s.l]+=u.substr(h)}else s[\"xs\"+s.l]+=s.l?\" \"+u:u;if(-1!==n.indexOf(\"=\")&&s.data){for(y=s.xs0+s.data.s,d=1;s.l>d;d++)y+=s[\"xs\"+d]+s.data[\"xn\"+d];s.e=y+s[\"xs\"+d]}return s.l||(s.type=-1,s.xs0=s.e),s.xfirst||s},I=9;for((t=R.prototype).l=t.pr=0;0<--I;)t[\"xn\"+I]=0,t[\"xs\"+I]=\"\";t.xs0=\"\",t._next=t._prev=t.xfirst=t.data=t.plugin=t.setRatio=t.rxp=null,t.appendXtra=function(t,e,i,n,r,a){var s=this,o=s.l;return s[\"xs\"+o]+=a&&o?\" \"+t:t||\"\",i||0===o||s.plugin?(s.l++,s.type=s.setRatio?2:1,s[\"xs\"+s.l]=n||\"\",0n;n++)e.prefix=0===n&&e.prefix,e.defaultValue=i[n]||a,new yt(r[n],e)},Pt=((t=yt.prototype).parseComplex=function(t,e,i,n,r,a){var s,o,l,c,d,p=this.keyword;if(this.multi&&(P.test(i)||P.test(e)?(o=e.replace(P,\"|\").split(\"|\"),l=i.replace(P,\"|\").split(\"|\")):p&&(o=[e],l=[i])),l){for(c=(l.length>o.length?l:o).length,s=0;sE[a]&&E[a]>-R&&(E[a]=0);return i&&(t._gsTransform=E),E},Ot=i.set3DTransformRatio=function(t){var e,i,n,r,a,s,o,l,c,d,p,h,u,_,f,m,g,w,v,y,b,k,x=this.data,T=this.t.style,S=x.rotation*N,P=x.scaleX,C=x.scaleY,L=x.scaleZ,A=x.perspective;if(1!==t&&0!==t||\"auto\"!==x.force3D||x.rotationY||x.rotationX||1!==L||A||x.z){if(W&&(P<1e-4&&-1e-4{var l;_[t]||(l=t.charAt(0).toUpperCase()+t.substr(1)+\"Plugin\",r(t,{parser:function(t,e,i,n,r,a,s){var o=(window.GreenSockGlobals||window).com.greensock.plugins[l];return o?(o._cssRegister(),_[i].parse(t,e,i,n,r,a,s)):(D(\"Error: \"+l+\" js file not loaded.\"),r)}}))})(t[I]);(t=X.prototype)._firstPT=null,t._onInitTween=function(t,e,i){if(!t.nodeType)return!1;this._target=t,this._tween=i,this._vars=e,U=e.autoRound,u=!1,b=e.suffixMap||X.suffixMap,k=m(t,\"\"),p=this._overwriteProps;var n,r,a,s,o,l,i=t.style;if(c&&\"\"===i.zIndex&&(\"auto\"===(l=z(t,\"zIndex\",k))||\"\"===l)&&this._addLazySet(i,\"zIndex\",0),\"string\"==typeof e&&(a=i.cssText,l=f(t,k),i.cssText=a+\";\"+e,l=j(t,l,f(t)).difs,!L&&et.test(e)&&(l.opacity=parseFloat(RegExp.$1)),e=l,i.cssText=a),this._firstPT=n=this.parse(t,e,null),this._transformType){for(l=3===this._transformType,H?V&&(c=!0,\"\"===i.zIndex&&(\"auto\"===(e=z(t,\"zIndex\",k))||\"\"===e)&&this._addLazySet(i,\"zIndex\",0),Q)&&this._addLazySet(i,\"WebkitBackfaceVisibility\",this._vars.WebkitBackfaceVisibility||(l?\"visible\":\"hidden\")):i.zoom=1,r=n;r&&r._next;)r=r._next;e=new R(t,\"transform\",0,0,null,2),this._linkCSSP(e,null,r),e.setRatio=l&&Y?Ot:H?Et:bt,e.data=this._transform||M(t,k,!0),p.pop()}if(u){for(;n;){for(o=n._next,r=a;r&&r.pr>n.pr;)r=r._next;(n._prev=r?r._prev:s)?n._prev._next=n:a=n,(n._next=r)?r._prev=n:s=n,n=o}this._firstPT=a}return!0},t.parse=function(t,e,i,n){var r,a,s,o,l,c,d,p,h=t.style;for(r in e)l=e[r],o=_[r],o?i=o.parse(t,l,r,this,i,n,e):(o=z(t,r,k)+\"\",d=\"string\"==typeof l,\"color\"===r||\"fill\"===r||\"stroke\"===r||-1!==r.indexOf(\"Color\")||d&&nt.test(l)?(d||(l=$(l),l=(3{var n=parseFloat(\"width\"===e?t.offsetWidth:t.offsetHeight),r=_t[e],a=r.length;for(i=i||m(t,null);-1<--a;)n=(n-=parseFloat(z(t,\"padding\"+r[a],i,!0))||0)-(parseFloat(z(t,\"border\"+r[a]+\"Width\",i,!0))||0);return n})(t,r,k),\"px\"):\"left\"===r||\"top\"===r?(a=ut(t,r,k),\"px\"):(a=\"opacity\"!==r?0:1,\"\")),p=d&&\"=\"===l.charAt(1),d=p?(s=parseInt(l.charAt(0)+\"1\",10),l=l.substr(2),s*=parseFloat(l),l.replace(K,\"\")):(s=parseFloat(l),d&&l.substr((s+\"\").length)||\"\"),\"\"===d&&(d=r in b?b[r]:c),l=s||0===s?(p?s+a:s)+d:e[r],c!==d&&\"\"!==d&&(s||0===s)&&a&&(a=A(t,r,a,c),\"%\"===d?(a/=A(t,r,100,\"%\")/100,!0!==e.strictUnits&&(o=a+\"%\")):\"em\"===d?a/=A(t,r,1,\"em\"):\"px\"!==d&&(s=A(t,r,s,d),d=\"px\"),p)&&(s||0===s)&&(l=s+a+d),p&&(s+=a),!a&&0!==a||!s&&0!==s?void 0!==h[r]&&(l||\"NaN\"!=l+\"\"&&null!=l)?(i=new R(h,r,s||a||0,0,i,-1,r,!1,0,o,l),i.xs0=\"none\"!==l||\"display\"!==r&&-1===r.indexOf(\"Style\")?l:o):D(\"invalid \"+r+\" tween value: \"+e[r]):(i=new R(h,r,a,s-a,i,0,r,!1!==U&&(\"px\"===d||\"zIndex\"===r),0,o,l),i.xs0=d)):i=vt(h,r,o,l,!0,null,i,0,n)),n&&i&&!i.plugin&&(i.plugin=n);return i},t.setRatio=function(t){var e,i,n,r=this._firstPT;if(1!==t||this._tween._time!==this._tween._duration&&0!==this._tween._time)if(t||this._tween._time!==this._tween._duration&&0!==this._tween._time||-1e-6===this._tween._rawPrevTime)for(;r;){if(e=r.c*t+r.s,r.r?e=Math.round(e):e<1e-6&&-1e-6n;n++)i+=r[\"xn\"+n]+r[\"xs\"+(n+1)];r.t[r.p]=i}else-1===r.type?r.t[r.p]=r.xs0:r.setRatio&&r.setRatio(t);else r.t[r.p]=e+r.xs0;r=r._next}else for(;r;)2!==r.type?r.t[r.p]=r.b:r.setRatio(t),r=r._next;else for(;r;)2!==r.type?r.t[r.p]=r.e:r.setRatio(t),r=r._next},t._enableTransforms=function(t){this._transformType=t||3===this._transformType?3:2,this._transform=this._transform||M(this._target,k,!0)};function Rt(){this.t[this.p]=this.e,this.data._linkCSSP(this,this._next,null,!0)}function It(t,e,i){var n,r,a,s;if(t.slice)for(r=t.length;-1<--r;)It(t[r],e,i);else for(r=(n=t.childNodes).length;-1<--r;)s=(a=n[r]).type,a.style&&(e.push(f(a)),i)&&i.push(a),1!==s&&9!==s&&11!==s||!a.childNodes.length||It(a,e,i)}t._addLazySet=function(t,e,i){t=this._firstPT=new R(t,e,0,0,this._firstPT,2);t.e=i,t.setRatio=Rt,t.data=this},t._linkCSSP=function(t,e,i,n){return t&&(e&&(e._prev=t),t._next&&(t._next._prev=t._prev),t._prev?t._prev._next=t._next:this._firstPT===t&&(this._firstPT=t._next,n=!0),i?i._next=t:n||null!==this._firstPT||(this._firstPT=t),t._next=e,t._prev=i),t},t._kill=function(t){var e,i,n,r=t;if(t.autoAlpha||t.alpha){for(i in r={},t)r[i]=t[i];r.opacity=1,r.autoAlpha&&(r.visibility=1)}return t.className&&(e=this._classNamePT)&&((n=e.xfirst)&&n._prev?this._linkCSSP(n._prev,e._next,n._prev._prev):n===this._firstPT&&(this._firstPT=e._next),e._next&&this._linkCSSP(e._next,e._next._next,n._prev),this._classNamePT=null),a.prototype._kill.call(this,r)};return X.cascadeTo=function(t,e,i){var n,r,a,s=h.to(t,e,i),o=[s],l=[],c=[],d=[],p=h._internals.reservedProps;for(t=s._targets||s.target,It(t,l,d),s.render(e,!0),It(t,c),s.render(0,!0),s._enabled(!0),n=d.length;-1<--n;)if((r=j(d[n],l[n],c[n])).firstMPT){for(a in r=r.difs,i)p[a]&&(r[a]=i[a]);o.push(h.to(d[n],e,r))}return o},a.activate([X]),X},!0)}),window._gsDefine&&window._gsQueue.pop()()},{}],18:[function(t,e,i){(window._gsQueue||(window._gsQueue=[])).push(function(){function r(t,e){var i=\"scroll\"+(e=\"x\"===e?\"Width\":\"Height\"),n=\"client\"+e,r=document.body;return t===s||t===a||t===r?Math.max(a[i],r[i])-(s[\"inner\"+e]||Math.max(a[n],r[n])):t[i]-t[\"offset\"+e]}var a=document.documentElement,s=window,t=window._gsDefine.plugin({propName:\"scrollTo\",API:2,version:\"1.7.3\",init:function(t,e,i){return this._wdw=t===s,this._target=t,this._tween=i,this._autoKill=!1!==(e=\"object\"!=typeof e?{y:e}:e).autoKill,this.x=this.xPrev=this.getX(),this.y=this.yPrev=this.getY(),null!=e.x?(this._addTween(this,\"x\",this.x,\"max\"===e.x?r(t,\"x\"):e.x,\"scrollTo_x\",!0),this._overwriteProps.push(\"scrollTo_x\")):this.skipX=!0,null!=e.y?(this._addTween(this,\"y\",this.y,\"max\"===e.y?r(t,\"y\"):e.y,\"scrollTo_y\",!0),this._overwriteProps.push(\"scrollTo_y\")):this.skipY=!0,!0},set:function(t){this._super.setRatio.call(this,t);var t=this._wdw||!this.skipX?this.getX():this.xPrev,e=this._wdw||!this.skipY?this.getY():this.yPrev,i=e-this.yPrev,n=t-this.xPrev;this._autoKill&&(!this.skipX&&(7t&&(this.skipX=!0),!this.skipY&&(7e&&(this.skipY=!0),this.skipX)&&this.skipY&&this._tween.kill(),this._wdw?s.scrollTo(this.skipX?t:this.x,this.skipY?e:this.y):(this.skipY||(this._target.scrollTop=this.y),this.skipX||(this._target.scrollLeft=this.x)),this.xPrev=this.x,this.yPrev=this.y}}),e=t.prototype;t.max=r,e.getX=function(){return this._wdw?null!=s.pageXOffset?s.pageXOffset:(null!=a.scrollLeft?a:document.body).scrollLeft:this._target.scrollLeft},e.getY=function(){return this._wdw?null!=s.pageYOffset?s.pageYOffset:(null!=a.scrollTop?a:document.body).scrollTop:this._target.scrollTop},e._kill=function(t){return t.scrollTo_x&&(this.skipX=!0),t.scrollTo_y&&(this.skipY=!0),this._super._kill.call(this,t)}}),window._gsDefine&&window._gsQueue.pop()()},{}]},{},[3]);"],"file":"wpr-admin.min.js"}
\ No newline at end of file
diff --git a/web/app/plugins/wp-rocket/composer.json b/web/app/plugins/wp-rocket/composer.json
index 0a314d5ec..93298dfe0 100644
--- a/web/app/plugins/wp-rocket/composer.json
+++ b/web/app/plugins/wp-rocket/composer.json
@@ -40,15 +40,16 @@
}
],
"require": {
- "php": ">=7.3",
+ "php": ">=7.4",
"cloudflare/cf-ip-rewrite": "^1.0",
"voku/simple_html_dom": "^4.8",
"wp-media/apply-filters-typed": "^1.0",
+ "wp-media/mcp-oauth": "^1.0.1",
"wp-media/plugin-family": "1.0.8",
- "wp-media/wp-mixpanel": "^1.0"
+ "wp-media/wp-mixpanel": "^1.4.4"
},
"require-dev": {
- "php": "^7 || ^8",
+ "php": "^7.4 || ^8",
"berlindb/core": "2.0.2",
"brain/monkey": "^2.0",
"dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
@@ -57,6 +58,7 @@
"mnsami/composer-custom-directory-installer": "^2.0",
"mobiledetect/mobiledetectlib": "^2.8",
"php-stubs/wordpress-tests-stubs": "^6.8",
+ "php-stubs/wp-cli-stubs": "^2.12",
"phpcompatibility/phpcompatibility-wp": "^2.0",
"phpstan/extension-installer": "^1.3",
"phpstan/phpstan-mockery": "^1.1",
diff --git a/web/app/plugins/wp-rocket/composer.lock b/web/app/plugins/wp-rocket/composer.lock
index f232887bb..3e5842129 100644
--- a/web/app/plugins/wp-rocket/composer.lock
+++ b/web/app/plugins/wp-rocket/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "67a7d630f954ae28e857be6bfc759cab",
+ "content-hash": "b037f786402fcc0bdba73e8a6afa97df",
"packages": [
{
"name": "cloudflare/cf-ip-rewrite",
@@ -123,16 +123,16 @@
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.33.0",
+ "version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
- "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
+ "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
"shasum": ""
},
"require": {
@@ -183,7 +183,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0"
},
"funding": [
{
@@ -203,7 +203,7 @@
"type": "tidelift"
}
],
- "time": "2025-01-02T08:10:11+00:00"
+ "time": "2026-04-10T16:19:22+00:00"
},
{
"name": "voku/simple_html_dom",
@@ -286,6 +286,130 @@
],
"time": "2024-07-03T16:05:14+00:00"
},
+ {
+ "name": "wordpress/mcp-adapter",
+ "version": "v0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WordPress/mcp-adapter.git",
+ "reference": "7bfc49f46b3ea7544dded49d5a606089f825a80b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/WordPress/mcp-adapter/zipball/7bfc49f46b3ea7544dded49d5a606089f825a80b",
+ "reference": "7bfc49f46b3ea7544dded49d5a606089f825a80b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.4 || ^8.0",
+ "wordpress/php-mcp-schema": "^0.1.0"
+ },
+ "require-dev": {
+ "automattic/vipwpcs": "^3.0",
+ "php-stubs/wordpress-stubs": "^6.9",
+ "php-stubs/wp-cli-stubs": "^2.12",
+ "phpcompatibility/php-compatibility": "10.x-dev as 9.99.99",
+ "phpcompatibility/phpcompatibility-wp": "^2.1",
+ "phpstan/extension-installer": "^1.3",
+ "phpstan/php-8-stubs": "^0.4.24",
+ "phpstan/phpstan": "^2.1.22",
+ "phpstan/phpstan-deprecation-rules": "^2.0.3",
+ "phpunit/phpunit": "^9.6",
+ "slevomat/coding-standard": "^8.0",
+ "szepeviktor/phpstan-wordpress": "^2.0",
+ "wp-phpunit/wp-phpunit": "^6.5",
+ "wpackagist-plugin/plugin-check": "^1.6",
+ "yoast/phpunit-polyfills": "^4.0"
+ },
+ "type": "wordpress-plugin",
+ "extra": {
+ "installer-paths": {
+ "vendor/{$vendor}/{$name}/": [
+ "wpackagist-plugin/plugin-check"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "WP\\MCP\\": "includes/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "WordPress AI Team",
+ "homepage": "https://make.wordpress.org/ai/"
+ }
+ ],
+ "description": "Adapter for Abilities API, letting WordPress abilities to be used as MCP tools, resources or prompts",
+ "homepage": "https://github.com/wordpress/mcp-adapter",
+ "keywords": [
+ "abilities-api",
+ "adapter",
+ "ai",
+ "api",
+ "integration",
+ "mcp",
+ "model-context-protocol",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/wordpress/mcp-adapter/issues",
+ "source": "https://github.com/wordpress/mcp-adapter"
+ },
+ "time": "2026-04-14T12:12:58+00:00"
+ },
+ {
+ "name": "wordpress/php-mcp-schema",
+ "version": "v0.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WordPress/php-mcp-schema",
+ "reference": "b2fcf97aa023ce46e9f03493c194a72d5a46bea2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/WordPress/php-mcp-schema/zipball/b2fcf97aa023ce46e9f03493c194a72d5a46bea2",
+ "reference": "b2fcf97aa023ce46e9f03493c194a72d5a46bea2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.10"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "WP\\McpSchema\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0-or-later"
+ ],
+ "authors": [
+ {
+ "name": "WordPress",
+ "homepage": "https://wordpress.org"
+ }
+ ],
+ "description": "PHP DTOs for the Model Context Protocol (MCP) specification",
+ "homepage": "https://github.com/WordPress/php-mcp-schema",
+ "keywords": [
+ "dto",
+ "mcp",
+ "model-context-protocol",
+ "php",
+ "schema"
+ ],
+ "time": "2026-08-10T09:12:14+00:00"
+ },
{
"name": "wp-media/apply-filters-typed",
"version": "v1.2",
@@ -330,6 +454,67 @@
},
"time": "2024-09-16T12:21:47+00:00"
},
+ {
+ "name": "wp-media/mcp-oauth",
+ "version": "v1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wp-media/mcp-oauth.git",
+ "reference": "0d170542ffe5435f8bfaf4852ea1567f043790f2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wp-media/mcp-oauth/zipball/0d170542ffe5435f8bfaf4852ea1567f043790f2",
+ "reference": "0d170542ffe5435f8bfaf4852ea1567f043790f2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4",
+ "wordpress/mcp-adapter": "^0.5",
+ "wp-media/apply-filters-typed": "^1.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^1",
+ "php": ">=7.4",
+ "php-stubs/wordpress-tests-stubs": "^6.8",
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan-mockery": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "roave/security-advisories": "dev-master",
+ "szepeviktor/phpstan-wordpress": "^2.0",
+ "wp-coding-standards/wpcs": "^3",
+ "wp-media/phpunit": "^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "WPMedia\\MCP\\OAuth\\": "inc/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "WP Media",
+ "email": "contact@wp-media.me"
+ }
+ ],
+ "description": "MCP OAuth layer for the WordPress MCP Adapter",
+ "homepage": "https://github.com/wp-media/mcp-oauth",
+ "keywords": [
+ "plugin",
+ "wordpress",
+ "wp"
+ ],
+ "support": {
+ "issues": "https://github.com/wp-media/mcp-oauth/issues",
+ "source": "https://github.com/wp-media/mcp-oauth/tree/v1.1"
+ },
+ "time": "2026-08-13T12:37:37+00:00"
+ },
{
"name": "wp-media/plugin-family",
"version": "v1.0.8",
@@ -381,16 +566,16 @@
},
{
"name": "wp-media/wp-mixpanel",
- "version": "v1.4.0",
+ "version": "v1.4.4",
"source": {
"type": "git",
"url": "https://github.com/wp-media/wp-mixpanel.git",
- "reference": "dfedab2014e816a1040c57d544a6180f1d446624"
+ "reference": "424106dea366f96cb21d9ccb537e388ec1187a57"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wp-media/wp-mixpanel/zipball/dfedab2014e816a1040c57d544a6180f1d446624",
- "reference": "dfedab2014e816a1040c57d544a6180f1d446624",
+ "url": "https://api.github.com/repos/wp-media/wp-mixpanel/zipball/424106dea366f96cb21d9ccb537e388ec1187a57",
+ "reference": "424106dea366f96cb21d9ccb537e388ec1187a57",
"shasum": ""
},
"require": {
@@ -430,9 +615,9 @@
"description": "WordPress Mixpanel Integration",
"support": {
"issues": "https://github.com/wp-media/wp-mixpanel/issues",
- "source": "https://github.com/wp-media/wp-mixpanel/tree/v1.4.0"
+ "source": "https://github.com/wp-media/wp-mixpanel/tree/v1.4.4"
},
- "time": "2025-11-12T09:51:35+00:00"
+ "time": "2026-08-05T15:47:15+00:00"
}
],
"packages-dev": [
@@ -878,20 +1063,22 @@
},
{
"name": "hamcrest/hamcrest-php",
- "version": "v2.0.1",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
+ "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b61cd040da1a4925bc90a51c074f5297e7c0fa52",
+ "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52",
"shasum": ""
},
"require": {
- "php": "^5.3|^7.0|^8.0"
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "php": "^7.4|^8.0"
},
"replace": {
"cordoval/hamcrest-php": "*",
@@ -899,13 +1086,15 @@
"kodova/hamcrest-php": "*"
},
"require-dev": {
- "phpunit/php-file-iterator": "^1.4 || ^2.0",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -923,9 +1112,9 @@
],
"support": {
"issues": "https://github.com/hamcrest/hamcrest-php/issues",
- "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v3.0.0"
},
- "time": "2020-07-09T08:09:16+00:00"
+ "time": "2026-03-17T11:56:53+00:00"
},
{
"name": "league/container",
@@ -1118,16 +1307,16 @@
},
{
"name": "mobiledetect/mobiledetectlib",
- "version": "2.8.45",
+ "version": "2.8.47",
"source": {
"type": "git",
"url": "https://github.com/serbanghita/Mobile-Detect.git",
- "reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266"
+ "reference": "28e9045958dcaf771f9b56564549d5b174e38b0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/96aaebcf4f50d3d2692ab81d2c5132e425bca266",
- "reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266",
+ "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/28e9045958dcaf771f9b56564549d5b174e38b0e",
+ "reference": "28e9045958dcaf771f9b56564549d5b174e38b0e",
"shasum": ""
},
"require": {
@@ -1168,7 +1357,7 @@
],
"support": {
"issues": "https://github.com/serbanghita/Mobile-Detect/issues",
- "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.45"
+ "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.47"
},
"funding": [
{
@@ -1176,33 +1365,32 @@
"type": "github"
}
],
- "time": "2023-11-07T21:57:25+00:00"
+ "time": "2026-04-14T12:32:34+00:00"
},
{
"name": "mockery/mockery",
- "version": "1.6.12",
+ "version": "1.6.15",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
+ "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/967a801bd188989a5669bd280f252d51c0fdc9ee",
+ "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee",
"shasum": ""
},
"require": {
- "hamcrest/hamcrest-php": "^2.0.1",
- "lib-pcre": ">=7.0",
+ "hamcrest/hamcrest-php": "^2.0 || ^3.0",
"php": ">=7.3"
},
"conflict": {
"phpunit/phpunit": "<8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.6.17",
- "symplify/easy-coding-standard": "^12.1.14"
+ "phpunit/phpunit": "^9.6.36",
+ "symplify/easy-coding-standard": "^13.2.17"
},
"type": "library",
"autoload": {
@@ -1259,7 +1447,7 @@
"security": "https://github.com/mockery/mockery/security/advisories",
"source": "https://github.com/mockery/mockery"
},
- "time": "2024-05-16T03:13:13+00:00"
+ "time": "2026-08-19T19:37:52+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -1323,30 +1511,36 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.19.5",
+ "version": "v5.8.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837"
+ "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/51bd93cc741b7fc3d63d20b6bdcd99fdaa359837",
- "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
+ "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
"shasum": ""
},
"require": {
+ "ext-json": "*",
"ext-tokenizer": "*",
- "php": ">=7.1"
+ "php": ">=7.4"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpunit/phpunit": "^9.0"
},
"bin": [
"bin/php-parse"
],
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"PhpParser\\": "lib/PhpParser"
@@ -1368,9 +1562,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.5"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0"
},
- "time": "2025-12-06T11:45:25+00:00"
+ "time": "2026-07-04T14:30:18+00:00"
},
{
"name": "phar-io/manifest",
@@ -1492,16 +1686,16 @@
},
{
"name": "php-stubs/wordpress-stubs",
- "version": "v6.9.1",
+ "version": "v6.9.4",
"source": {
"type": "git",
"url": "https://github.com/php-stubs/wordpress-stubs.git",
- "reference": "f12220f303e0d7c0844c0e5e957b0c3cee48d2f7"
+ "reference": "90a9412826b9944f93b10bf41d795b5fe68abcd5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/f12220f303e0d7c0844c0e5e957b0c3cee48d2f7",
- "reference": "f12220f303e0d7c0844c0e5e957b0c3cee48d2f7",
+ "url": "https://api.github.com/repos/php-stubs/wordpress-stubs/zipball/90a9412826b9944f93b10bf41d795b5fe68abcd5",
+ "reference": "90a9412826b9944f93b10bf41d795b5fe68abcd5",
"shasum": ""
},
"conflict": {
@@ -1511,7 +1705,7 @@
"dealerdirect/phpcodesniffer-composer-installer": "^1.0",
"nikic/php-parser": "^5.5",
"php": "^7.4 || ^8.0",
- "php-stubs/generator": "^0.8.3",
+ "php-stubs/generator": "^0.8.6",
"phpdocumentor/reflection-docblock": "^6.0",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^9.5",
@@ -1538,26 +1732,26 @@
],
"support": {
"issues": "https://github.com/php-stubs/wordpress-stubs/issues",
- "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.9.1"
+ "source": "https://github.com/php-stubs/wordpress-stubs/tree/v6.9.4"
},
- "time": "2026-02-03T19:29:21+00:00"
+ "time": "2026-05-01T20:36:01+00:00"
},
{
"name": "php-stubs/wordpress-tests-stubs",
- "version": "v6.9.0",
+ "version": "v6.9.7",
"source": {
"type": "git",
"url": "https://github.com/php-stubs/wordpress-tests-stubs.git",
- "reference": "1f60fb7b70b7e9e3fe02bf0a3b7d69c10e5e2953"
+ "reference": "c6878d4aee7b6cdd7bdc53c30653c4a8bb0c417f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-stubs/wordpress-tests-stubs/zipball/1f60fb7b70b7e9e3fe02bf0a3b7d69c10e5e2953",
- "reference": "1f60fb7b70b7e9e3fe02bf0a3b7d69c10e5e2953",
+ "url": "https://api.github.com/repos/php-stubs/wordpress-tests-stubs/zipball/c6878d4aee7b6cdd7bdc53c30653c4a8bb0c417f",
+ "reference": "c6878d4aee7b6cdd7bdc53c30653c4a8bb0c417f",
"shasum": ""
},
"require-dev": {
- "php": "^7.3 || ^8.0",
+ "php": "^7.4 || ^8.0",
"php-stubs/generator": "^0.8.0"
},
"suggest": {
@@ -1578,9 +1772,53 @@
],
"support": {
"issues": "https://github.com/php-stubs/wordpress-tests-stubs/issues",
- "source": "https://github.com/php-stubs/wordpress-tests-stubs/tree/v6.9.0"
+ "source": "https://github.com/php-stubs/wordpress-tests-stubs/tree/v6.9.7"
+ },
+ "time": "2026-08-13T08:31:51+00:00"
+ },
+ {
+ "name": "php-stubs/wp-cli-stubs",
+ "version": "v2.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-stubs/wp-cli-stubs.git",
+ "reference": "af16401e299a3fd2229bd0fa9a037638a4174a9d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-stubs/wp-cli-stubs/zipball/af16401e299a3fd2229bd0fa9a037638a4174a9d",
+ "reference": "af16401e299a3fd2229bd0fa9a037638a4174a9d",
+ "shasum": ""
+ },
+ "require": {
+ "php-stubs/wordpress-stubs": "^4.7 || ^5.0 || ^6.0"
+ },
+ "require-dev": {
+ "php": "~7.3 || ~8.0",
+ "php-stubs/generator": "^0.8.0"
+ },
+ "suggest": {
+ "symfony/polyfill-php73": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "szepeviktor/phpstan-wordpress": "WordPress extensions for PHPStan"
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "WP-CLI function and class declaration stubs for static analysis.",
+ "homepage": "https://github.com/php-stubs/wp-cli-stubs",
+ "keywords": [
+ "PHPStan",
+ "static analysis",
+ "wordpress",
+ "wp-cli"
+ ],
+ "support": {
+ "issues": "https://github.com/php-stubs/wp-cli-stubs/issues",
+ "source": "https://github.com/php-stubs/wp-cli-stubs/tree/v2.12.0"
},
- "time": "2025-12-07T09:14:02+00:00"
+ "time": "2025-06-10T09:58:05+00:00"
},
{
"name": "phpcompatibility/php-compatibility",
@@ -1797,21 +2035,21 @@
},
{
"name": "phpcsstandards/phpcsextra",
- "version": "1.5.0",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHPCSExtra.git",
- "reference": "b598aa890815b8df16363271b659d73280129101"
+ "reference": "39467533fdb742446d68c1d10ac33d625ee0311c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/b598aa890815b8df16363271b659d73280129101",
- "reference": "b598aa890815b8df16363271b659d73280129101",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/39467533fdb742446d68c1d10ac33d625ee0311c",
+ "reference": "39467533fdb742446d68c1d10ac33d625ee0311c",
"shasum": ""
},
"require": {
"php": ">=5.4",
- "phpcsstandards/phpcsutils": "^1.2.0",
+ "phpcsstandards/phpcsutils": "^1.2.3",
"squizlabs/php_codesniffer": "^3.13.5 || ^4.0.1"
},
"require-dev": {
@@ -1875,20 +2113,20 @@
"type": "thanks_dev"
}
],
- "time": "2025-11-12T23:06:57+00:00"
+ "time": "2026-07-27T11:13:17+00:00"
},
{
"name": "phpcsstandards/phpcsutils",
- "version": "1.2.2",
+ "version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHPCSUtils.git",
- "reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55"
+ "reference": "5f35d9408c54d7b529501f3c688b6eae562aea1f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/c216317e96c8b3f5932808f9b0f1f7a14e3bbf55",
- "reference": "c216317e96c8b3f5932808f9b0f1f7a14e3bbf55",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/5f35d9408c54d7b529501f3c688b6eae562aea1f",
+ "reference": "5f35d9408c54d7b529501f3c688b6eae562aea1f",
"shasum": ""
},
"require": {
@@ -1968,7 +2206,7 @@
"type": "thanks_dev"
}
],
- "time": "2025-12-08T14:27:58+00:00"
+ "time": "2026-07-27T10:28:41+00:00"
},
{
"name": "phpstan/extension-installer",
@@ -2020,11 +2258,11 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.12.33",
+ "version": "1.12.34",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/37982d6fc7cbb746dda7773530cda557cdf119e1",
- "reference": "37982d6fc7cbb746dda7773530cda557cdf119e1",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/4dd89ca7aa30fdc6760be21550d583bcc32e8476",
+ "reference": "4dd89ca7aa30fdc6760be21550d583bcc32e8476",
"shasum": ""
},
"require": {
@@ -2069,7 +2307,7 @@
"type": "github"
}
],
- "time": "2026-02-28T20:30:03+00:00"
+ "time": "2026-07-28T10:04:39+00:00"
},
{
"name": "phpstan/phpstan-mockery",
@@ -2494,25 +2732,25 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.34",
+ "version": "9.6.36",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "b36f02317466907a230d3aa1d34467041271ef4a"
+ "reference": "abab27ed286d3e1246fbbfe6b56bfd732d945ec9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b36f02317466907a230d3aa1d34467041271ef4a",
- "reference": "b36f02317466907a230d3aa1d34467041271ef4a",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/abab27ed286d3e1246fbbfe6b56bfd732d945ec9",
+ "reference": "abab27ed286d3e1246fbbfe6b56bfd732d945ec9",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.5.0 || ^2",
"ext-dom": "*",
+ "ext-filter": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
- "ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.13.4",
"phar-io/manifest": "^2.0.4",
@@ -2528,7 +2766,7 @@
"sebastian/comparator": "^4.0.10",
"sebastian/diff": "^4.0.6",
"sebastian/environment": "^5.1.5",
- "sebastian/exporter": "^4.0.8",
+ "sebastian/exporter": "^4.0.9",
"sebastian/global-state": "^5.0.8",
"sebastian/object-enumerator": "^4.0.4",
"sebastian/resource-operations": "^3.0.4",
@@ -2577,31 +2815,15 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.34"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.36"
},
"funding": [
{
- "url": "https://phpunit.de/sponsors.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
+ "url": "https://phpunit.de/sponsoring.html",
+ "type": "other"
}
],
- "time": "2026-01-27T05:45:00+00:00"
+ "time": "2026-08-11T06:25:15+00:00"
},
{
"name": "psr/container",
@@ -2707,18 +2929,19 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "1fefaf7d2b314c21903bef8f4fab046539e4e654"
+ "reference": "4a8b10995f6b62488cf92b121cfcc644d060cd94"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1fefaf7d2b314c21903bef8f4fab046539e4e654",
- "reference": "1fefaf7d2b314c21903bef8f4fab046539e4e654",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/4a8b10995f6b62488cf92b121cfcc644d060cd94",
+ "reference": "4a8b10995f6b62488cf92b121cfcc644d060cd94",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
"adaptcms/adaptcms": "<=1.3",
- "admidio/admidio": "<=5.0.6",
+ "adawolfa/isdoc": "<1.4.3|>=1.5,<1.5.1|>=1.6,<1.6.1",
+ "admidio/admidio": "<=5.0.11",
"adodb/adodb-php": "<=5.22.9",
"aheinze/cockpit": "<2.2",
"aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2",
@@ -2729,12 +2952,14 @@
"aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7",
"aimeos/aimeos-laravel": "==2021.10",
"aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5",
+ "aimeos/pagible": "<0.10.4",
"airesvsg/acf-to-rest-api": "<=3.1",
"akaunting/akaunting": "<2.1.13",
"akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
"alextselegidis/easyappointments": "<=1.5.2",
"alexusmai/laravel-file-manager": "<=3.3.1",
"algolia/algoliasearch-magento-2": "<=3.16.1|>=3.17.0.0-beta1,<=3.17.1",
+ "almirhodzic/nova-toggle-5": "<1.3",
"alt-design/alt-redirect": "<1.6.4",
"altcha-org/altcha": "<1.3.1",
"alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
@@ -2750,8 +2975,10 @@
"aoe/restler": "<1.7.1",
"apache-solr-for-typo3/solr": "<2.8.3",
"apereo/phpcas": "<1.6",
- "api-platform/core": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
+ "api-platform/core": "<4.1.30|>=4.2,<4.2.26|>=4.3,<4.3.12",
"api-platform/graphql": "<3.4.17|>=4,<4.0.22|>=4.1,<4.1.5",
+ "api-platform/hal": ">=4,<4.1.29|>=4.2,<4.2.25|>=4.3,<4.3.8",
+ "api-platform/json-api": ">=4,<4.1.29|>=4.2,<4.2.25|>=4.3,<4.3.8",
"appwrite/server-ce": "<=1.2.1",
"arc/web": "<3",
"area17/twill": "<1.2.5|>=2,<2.5.3",
@@ -2762,28 +2989,28 @@
"athlon1600/youtube-downloader": "<=4",
"aureuserp/aureuserp": "<1.3.0.0-beta1",
"austintoddj/canvas": "<=3.4.2",
- "auth0/auth0-php": ">=3.3,<8.18",
- "auth0/login": "<7.20",
- "auth0/symfony": "<=5.5",
- "auth0/wordpress": "<=5.4",
- "automad/automad": "<2.0.0.0-alpha5",
+ "auth0/auth0-php": ">=3.3,<=8.18",
+ "auth0/login": "<=7.20",
+ "auth0/symfony": "<=5.8",
+ "auth0/wordpress": "<=5.5",
+ "automad/automad": "<=2.0.0.0-beta27",
"automattic/jetpack": "<9.8",
"awesome-support/awesome-support": "<=6.0.7",
- "aws/aws-sdk-php": "<3.368",
+ "aws/aws-sdk-php": "<=3.371.3",
"ayacoo/redirect-tab": "<2.1.2|>=3,<3.1.7|>=4,<4.0.5",
- "azuracast/azuracast": "<=0.23.3",
+ "azuracast/azuracast": "<=0.23.5",
"b13/seo_basics": "<0.8.2",
"backdrop/backdrop": "<=1.32",
- "backpack/crud": "<3.4.9",
+ "backpack/crud": "<4.0.63|>=4.1,<4.1.69|>=5,<5.0.13",
"backpack/filemanager": "<2.0.2|>=3,<3.0.9",
"bacula-web/bacula-web": "<9.7.1",
"badaso/core": "<=2.9.11",
- "bagisto/bagisto": "<2.3.10",
+ "bagisto/bagisto": "<=2.3.15",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
"barryvdh/laravel-translation-manager": "<0.6.8",
"barzahlen/barzahlen-php": "<2.0.1",
- "baserproject/basercms": "<=5.1.1",
+ "baserproject/basercms": "<=5.2.2",
"bassjobsen/bootstrap-3-typeahead": ">4.0.2",
"bbpress/bbpress": "<2.6.5",
"bcit-ci/codeigniter": "<3.1.3",
@@ -2791,6 +3018,7 @@
"bedita/bedita": "<4",
"bednee/cooluri": "<1.0.30",
"bigfork/silverstripe-form-capture": ">=3,<3.1.1",
+ "billabear/billabear": "<=2025.01.03",
"billz/raspap-webgui": "<3.3.6",
"binarytorch/larecipe": "<2.8.1",
"bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
@@ -2805,19 +3033,20 @@
"brotkrueml/codehighlight": "<2.7",
"brotkrueml/schema": "<1.13.1|>=2,<2.5.1",
"brotkrueml/typo3-matomo-integration": "<1.3.2",
- "buddypress/buddypress": "<7.2.1",
+ "buddypress/buddypress": "<14.5",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"bvbmedia/multishop": "<2.0.39",
"bytefury/crater": "<6.0.2",
"cachethq/cachet": "<2.5.1",
"cadmium-org/cadmium-cms": "<=0.4.9",
- "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|>=5.2.10,<5.2.12|==5.3",
+ "cakephp/authentication": "<2.11.1|>=3,<3.3.6|>=4,<4.1.1",
+ "cakephp/cakephp": "<4.5.11|>=4.6,<4.6.4|>=5,<5.1.7|>=5.2,<5.2.13|>=5.3,<5.3.6",
"cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
"cardgate/magento2": "<2.0.33",
"cardgate/woocommerce": "<=3.1.15",
- "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+ "cart2quote/module-quotation": ">=4.1.6,<4.4.6|>=5,<5.4.4",
"cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
- "cartalyst/sentry": "<=2.1.6",
+ "cartalyst/sentry": "<2.1.7",
"catfan/medoo": "<1.7.5",
"causal/oidc": "<4",
"cecil/cecil": "<7.47.1",
@@ -2826,41 +3055,42 @@
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"chriskacerguis/codeigniter-restserver": "<=2.7.1",
"chrome-php/chrome": "<1.14",
- "ci4-cms-erp/ci4ms": "<0.28.5",
+ "ci4-cms-erp/ci4ms": "<=0.31.8",
"civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
"ckeditor/ckeditor": "<4.25",
"clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3",
"co-stack/fal_sftp": "<0.2.6",
- "cockpit-hq/cockpit": "<2.13.5",
- "code16/sharp": "<9.11.1",
+ "cockpit-hq/cockpit": "<=2.14",
+ "code16/sharp": "<9.22.3",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<3.1.10",
- "codeigniter4/framework": "<4.6.2",
+ "codeigniter4/framework": "<4.7.4",
"codeigniter4/shield": "<1.0.0.0-beta8",
"codiad/codiad": "<=2.8.4",
"codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9",
"codingms/modules": "<4.3.11|>=5,<5.7.4|>=6,<6.4.2|>=7,<7.5.5",
"commerceteam/commerce": ">=0.9.6,<0.9.9",
"components/jquery": ">=1.0.3,<3.5",
- "composer/composer": "<1.10.27|>=2,<2.2.26|>=2.3,<2.9.3",
- "concrete5/concrete5": "<9.4.8",
+ "composer/composer": "<2.2.29|>=2.3,<2.10.2",
+ "concrete5/concrete5": "<9.5.2",
"concrete5/core": "<8.5.8|>=9,<9.1",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4",
- "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.13.56|>=5,<5.3.38|>=5.4.0.0-RC1-dev,<5.6.1",
+ "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<5.3.48|>=5.4,<5.7.9",
"contao/core": "<3.5.39",
- "contao/core-bundle": "<4.13.57|>=5,<5.3.42|>=5.4,<5.6.5",
+ "contao/core-bundle": "<5.3.48|>=5.4,<5.7.9",
"contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8",
"contao/managed-edition": "<=1.5",
- "coreshop/core-shop": "<4.1.9",
+ "coreshop/core-shop": "<4.1.9|==5",
"corveda/phpsandbox": "<1.3.5",
"cosenary/instagram": "<=2.3",
+ "cotonti/cotonti": "<=1",
"couleurcitron/tarteaucitron-wp": "<0.3",
"cpsit/typo3-mailqueue": "<0.4.5|>=0.5,<0.5.2",
"craftcms/aws-s3": ">=2.0.2,<=2.2.4",
"craftcms/azure-blob": ">=2.0.0.0-beta1,<=2.1",
- "craftcms/cms": "<=4.17.5|>=5,<=5.9.11",
- "craftcms/commerce": ">=4,<4.11|>=5,<5.6",
+ "craftcms/cms": "<4.18.3|>=5,<5.10.8",
+ "craftcms/commerce": ">=4,<=4.11.1|>=5,<=5.6.4",
"craftcms/composer": ">=4.0.0.0-RC1-dev,<=4.10|>=5.0.0.0-RC1-dev,<=5.5.1",
"craftcms/craft": ">=3.5,<=4.16.17|>=5.0.0.0-RC1-dev,<=5.8.21",
"craftcms/google-cloud": ">=2.0.0.0-beta1,<=2.2",
@@ -2878,11 +3108,12 @@
"david-garcia/phpwhois": "<=4.3.1",
"dbrisinajumi/d2files": "<1",
"dcat/laravel-admin": "<=2.1.3|==2.2.0.0-beta|==2.2.2.0-beta",
+ "dedoc/scramble": ">=0.13.2,<0.13.22",
"derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4",
"desperado/xml-bundle": "<=0.1.7",
"dev-lancer/minecraft-motd-parser": "<=1.0.5",
- "devcode-it/openstamanager": "<=2.9.8",
+ "devcode-it/openstamanager": "<=2.10.1",
"devgroup/dotplant": "<2020.09.14-dev",
"digimix/wp-svg-upload": "<=1",
"directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
@@ -2899,9 +3130,10 @@
"doctrine/mongodb-odm": "<1.0.2",
"doctrine/mongodb-odm-bundle": "<3.0.1",
"doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
- "dolibarr/dolibarr": "<21.0.3",
- "dompdf/dompdf": "<2.0.4",
+ "dolibarr/dolibarr": "<=23.0.2",
+ "dompdf/dompdf": "<3.1.6",
"doublethreedigital/guest-entries": "<3.1.2",
+ "dreamfactory/df-core": "<1.0.4",
"drupal-pattern-lab/unified-twig-extensions": "<=0.1",
"drupal/access_code": "<2.0.5",
"drupal/acquia_dam": "<1.1.5",
@@ -2913,7 +3145,7 @@
"drupal/commerce_alphabank_redirect": "<1.0.3",
"drupal/commerce_eurobank_redirect": "<2.1.1",
"drupal/config_split": "<1.10|>=2,<2.0.2",
- "drupal/core": ">=6,<6.38|>=7,<7.103|>=8,<10.4.9|>=10.5,<10.5.6|>=11,<11.1.9|>=11.2,<11.2.8",
+ "drupal/core": ">=6,<6.38|>=7,<7.103|>=8,<10.5.10|>=10.6,<10.6.9|>=11,<11.2.12|>=11.3,<11.3.10",
"drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
"drupal/currency": "<3.5",
"drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
@@ -2940,10 +3172,11 @@
"drupal/umami_analytics": "<1.0.1",
"duncanmcclean/guest-entries": "<3.1.2",
"dweeves/magmi": "<=0.7.24",
+ "easycorp/easyadmin-bundle": ">=4,<4.29.16|>=5,<5.5.1",
"ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.3.1",
"ecodev/newsletter": "<=4",
"ectouch/ectouch": "<=2.7.2",
- "egroupware/egroupware": "<23.1.20260113|>=26.0.20251208,<26.0.20260113",
+ "egroupware/egroupware": "<23.1.20260601|>=26.0.20251208,<26.5.20260507",
"elefant/cms": "<2.0.7",
"elgg/elgg": "<3.3.24|>=4,<4.0.5",
"elijaa/phpmemcacheadmin": "<=1.3",
@@ -2955,6 +3188,7 @@
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
"evolutioncms/evolution": "<=3.2.3",
+ "evoweb/sf-register": "<13.2.4|>=14,<14.0.2",
"exceedone/exment": "<4.4.3|>=5,<5.0.3",
"exceedone/laravel-admin": "<2.2.3|==3",
"ezsystems/demobundle": ">=5.4,<5.4.6.1-dev",
@@ -2977,15 +3211,16 @@
"ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15",
"ezyang/htmlpurifier": "<=4.2",
"facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
- "facturascripts/facturascripts": "<2025.81",
+ "facturascripts/facturascripts": "<=2026.2",
"fastly/magento2": "<1.2.26",
"feehi/cms": "<=2.1.1",
"feehi/feehicms": "<=2.1.1",
"fenom/fenom": "<=2.12.1",
- "filament/actions": ">=3.2,<3.2.123",
- "filament/filament": ">=4,<4.3.1",
- "filament/infolists": ">=3,<3.2.115",
- "filament/tables": ">=3,<3.2.115|>=4,<4.8.5|>=5,<5.3.5",
+ "filament/actions": ">=3.2,<3.2.123|>=4,<=4.11.3|>=5,<=5.6.3",
+ "filament/filament": ">=3,<=3.3.51|>=4,<4.11.5|>=5,<5.6.5",
+ "filament/forms": ">=3,<=3.3.52",
+ "filament/infolists": ">=3,<3.2.115|>=4,<=4.11.4|>=5,<=5.6.4",
+ "filament/tables": ">=3,<=3.3.50|>=4,<=4.11.4|>=5,<=5.6.4",
"filegator/filegator": "<7.8",
"filp/whoops": "<2.1.13",
"fineuploader/php-traditional-server": "<=1.2.2",
@@ -2993,13 +3228,14 @@
"fisharebest/webtrees": "<=2.1.18",
"fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2",
"fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6",
- "flarum/core": "<1.8.10",
+ "flarum/core": "<=1.8.15|>=2.0.0.0-beta1,<=2.0.0.0-beta8",
"flarum/flarum": "<0.1.0.0-beta8",
"flarum/framework": "<1.8.10",
"flarum/mentions": "<1.6.3",
"flarum/nicknames": "<1.8.3",
"flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
"flarum/tags": "<=0.1.0.0-beta13",
+ "flightphp/core": "<3.18.1",
"floriangaerber/magnesium": "<0.3.1",
"fluidtypo3/vhs": "<5.1.1",
"fof/byobu": ">=0.3.0.0-beta2,<1.1.7",
@@ -3018,19 +3254,22 @@
"friendsofsymfony1/symfony1": ">=1.1,<1.5.19",
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
"friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
+ "friendsoftypo3/tt-address": "<8.1.2|>=9,<9.1.1|>=10,<10.0.1",
"froala/wysiwyg-editor": "<=4.3",
"frosh/adminer-platform": "<2.2.1",
- "froxlor/froxlor": "<=2.3.3",
+ "froxlor/froxlor": "<2.3.8",
"frozennode/administrator": "<=5.0.12",
"fuel/core": "<1.8.1",
- "funadmin/funadmin": "<=7.1.0.0-RC4",
+ "funadmin/funadmin": "<=7.1.0.0-RC6",
"gaoming13/wechat-php-sdk": "<=1.10.2",
"genix/cms": "<=1.1.11",
- "georgringer/news": "<1.3.3",
+ "georgringer/news": "<10.0.4|>=11,<11.4.4|>=12,<12.3.2|>=13,<13.0.2|>=14,<14.0.3",
"geshi/geshi": "<=1.0.9.1",
"getformwork/formwork": "<=2.3.3",
- "getgrav/grav": "<1.11.0.0-beta1",
- "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1|>=5,<=5.2.1",
+ "getgrav/grav": "<2.0.4",
+ "getgrav/grav-plugin-api": "<1.0.0.0-beta15",
+ "getgrav/grav-plugin-form": "<9.1",
+ "getkirby/cms": "<=4.9.3|>=5,<=5.4.3",
"getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1",
"getkirby/panel": "<2.5.14",
"getkirby/starterkit": "<=3.7.0.2",
@@ -3039,16 +3278,18 @@
"globalpayments/php-sdk": "<2",
"goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11",
"gogentooss/samlbase": "<1.2.7",
- "google/protobuf": "<3.4",
+ "goodoneuz/pay-uz": "<=2.2.24",
+ "google/protobuf": "<4.33.6",
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
"gp247/core": "<1.1.24",
"gree/jose": "<2.2.1",
"gregwar/rst": "<1.0.3",
- "grumpydictator/firefly-iii": "<6.1.17|>=6.4.23,<=6.5",
+ "grumpydictator/firefly-iii": "<=6.6.2",
"gugoan/economizzer": "<=0.9.0.0-beta1",
- "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
+ "guzzlehttp/guzzle": "<7.15.2|>=8,<8.0.1",
+ "guzzlehttp/guzzle-services": "<1.5.4",
"guzzlehttp/oauth-subscriber": "<0.8.1",
- "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
+ "guzzlehttp/psr7": "<2.12.3",
"haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
"handcraftedinthealps/goodby-csv": "<1.4.3",
"harvesthq/chosen": "<1.8.7",
@@ -3059,6 +3300,7 @@
"hjue/justwriting": "<=1",
"hov/jobfair": "<1.0.13|>=2,<2.0.2",
"httpsoft/http-message": "<1.0.12",
+ "hybridauth/hybridauth": "<=3.12.2",
"hyn/multi-tenant": ">=5.6,<5.7.2",
"ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.25|>=5,<5.0.3",
"ibexa/admin-ui-assets": ">=4.6.0.0-alpha1,<4.6.21",
@@ -3076,6 +3318,7 @@
"illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4",
"illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40",
"illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
+ "illuminate/mail": ">=9,<12.60|>=13,<13.10",
"illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
"imdbphp/imdbphp": "<=5.1.1",
"impresscms/impresscms": "<=1.4.5",
@@ -3087,10 +3330,13 @@
"innologi/typo3-appointments": "<2.0.6",
"intelliants/subrion": "<4.2.2",
"inter-mediator/inter-mediator": "==5.5",
- "ipl/web": "<0.10.1",
+ "intercom/intercom-php": "==5.0.2",
+ "invoiceninja/invoiceninja": "<5.13.4",
+ "ipl/web": "<=0.10.2|>=0.11,<=0.13",
"islandora/crayfish": "<4.1",
"islandora/islandora": ">=2,<2.4.1",
"ivankristianto/phpwhois": "<=4.3",
+ "j0k3r/graby": "<=2.5",
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
"jambagecom/div2007": "<0.10.2",
"james-heinrich/getid3": "<1.9.21",
@@ -3098,7 +3344,10 @@
"jasig/phpcas": "<1.3.3",
"jbartels/wec-map": "<3.0.3",
"jcbrand/converse.js": "<3.3.3",
+ "jleehr/canto-saas-api": "<=2",
+ "joedolson/my-calendar": "<3.7.7",
"joelbutcher/socialstream": "<5.6|>=6,<6.2",
+ "johnbillion/query-monitor": "<3.20.4",
"johnbillion/wp-crontrol": "<1.16.2|>=1.17,<1.19.2",
"joomla/application": "<1.0.13",
"joomla/archive": "<1.1.12|>=2,<2.0.1",
@@ -3116,29 +3365,32 @@
"juzaweb/cms": "<=3.4.2",
"jweiland/events2": "<8.3.8|>=9,<9.0.6",
"jweiland/kk-downloader": "<1.2.2",
+ "kantorge/yaffa": "<=2",
"kazist/phpwhois": "<=4.2.6",
"kelvinmo/simplejwt": "<=1.1",
"kelvinmo/simplexrd": "<3.1.1",
"kevinpapst/kimai2": "<1.16.7",
- "khodakhah/nodcms": "<=3",
- "kimai/kimai": "<=2.50",
+ "khodakhah/nodcms": "<=3.4.1",
+ "kimai/kimai": "<2.59",
"kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
"klaviyo/magento2-extension": ">=1,<3",
- "knplabs/knp-snappy": "<=1.4.2",
+ "knplabs/knp-snappy": "<=1.7",
"kohana/core": "<3.3.3",
"koillection/koillection": "<1.6.12",
- "krayin/laravel-crm": "<=1.3",
+ "krayin/laravel-crm": "<=2.2",
"kreait/firebase-php": ">=3.2,<3.8.1",
"kumbiaphp/kumbiapp": "<=1.1.1",
"la-haute-societe/tcpdf": "<6.2.22",
+ "laktak/hjson": "<2.3",
"laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
"laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
"laminas/laminas-http": "<2.14.2",
"lara-zeus/artemis": ">=1,<=1.0.6",
"lara-zeus/dynamic-dashboard": ">=3,<=3.0.1",
"laravel/fortify": "<1.11.1",
- "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1",
+ "laravel/framework": "<12.61.1|>=13,<13.12",
"laravel/laravel": ">=5.4,<5.4.22",
+ "laravel/passport": ">=13,<13.7.1",
"laravel/pulse": "<1.3.1",
"laravel/reverb": "<1.7",
"laravel/socialite": ">=1,<2.0.10",
@@ -3146,16 +3398,16 @@
"lavalite/cms": "<=10.1",
"lavitto/typo3-form-to-database": "<2.2.5|>=3,<3.2.2|>=4,<4.2.3|>=5,<5.0.2",
"lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
- "league/commonmark": "<=2.8",
+ "league/commonmark": "<2.9",
"league/flysystem": "<1.1.4|>=2,<2.1.1",
"league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
"leantime/leantime": "<3.3",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
"libreform/libreform": ">=2,<=2.0.8",
- "librenms/librenms": "<26.2",
+ "librenms/librenms": "<26.7",
"liftkit/database": "<2.13.2",
"lightsaml/lightsaml": "<1.3.5",
- "limesurvey/limesurvey": "<6.15.4",
+ "limesurvey/limesurvey": "<=7.0.0.0-beta1",
"livehelperchat/livehelperchat": "<=3.91",
"livewire-filemanager/filemanager": "<=1.0.4",
"livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.6.4",
@@ -3178,20 +3430,24 @@
"maikuolan/phpmussel": ">=1,<1.6",
"mainwp/mainwp": "<=4.4.3.3",
"manogi/nova-tiptap": "<=3.2.6",
- "mantisbt/mantisbt": "<2.27.2",
+ "mantisbt/mantisbt": "<=2.28.3",
"marcwillmann/turn": "<0.3.3",
+ "markhuot/craftql": "<=1.3.7",
"marshmallow/nova-tiptap": "<5.7",
"matomo/matomo": "<1.11",
"matyhtf/framework": "<3.0.6",
- "mautic/core": "<5.2.10|>=6,<6.0.8|>=7.0.0.0-alpha,<7.0.1",
+ "mautic/core": "<5.2.11|>=6,<6.0.9|>=7,<7.1.2",
"mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1",
"mautic/grapes-js-builder-bundle": ">=4,<4.4.18|>=5,<5.2.9|>=6,<6.0.7",
"maximebf/debugbar": "<1.19",
+ "mckenziearts/livewire-markdown-editor": "<1.3",
+ "mcp/sdk": ">=0.5,<0.7.1",
"mdanter/ecc": "<2",
"mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2",
"mediawiki/cargo": "<3.8.3",
"mediawiki/core": "<1.39.5|==1.40",
"mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2",
+ "mediawiki/maps": "<12.1.3",
"mediawiki/matomo": "<2.4.3",
"mediawiki/semantic-media-wiki": "<4.0.2",
"mehrwert/phpmyadmin": "<3.2",
@@ -3207,9 +3463,12 @@
"microsoft/microsoft-graph-core": "<2.0.2",
"microweber/microweber": "<2.0.20",
"mikehaertl/php-shellcommand": "<1.6.1",
- "mineadmin/mineadmin": "<=3.0.9",
+ "mineadmin/mineadmin": "<3.2.0.0-alpha2",
"miniorange/miniorange-saml": "<1.4.3",
+ "miraheze/ts-portal": "<=33",
"mittwald/typo3_forum": "<1.2.1",
+ "mix/mix": ">=2,<=2.2.17",
+ "mmc/ceselector": "<3.0.3|>=4,<4.0.2|>=5,<5.0.1|>=6,<6.0.1",
"mobiledetect/mobiledetectlib": "<2.8.32",
"modx/revolution": "<=3.1",
"mojo42/jirafeau": "<4.4",
@@ -3222,6 +3481,7 @@
"movim/moxl": ">=0.8,<=0.10",
"movingbytes/social-network": "<=1.2.1",
"mpdf/mpdf": "<=7.1.7",
+ "mtdowling/jmespath.php": "<2.9.1",
"munkireport/comment": "<4",
"munkireport/managedinstalls": "<2.6",
"munkireport/munki_facts": "<1.5",
@@ -3229,6 +3489,7 @@
"munkireport/softwareupdate": "<1.6",
"mustache/mustache": ">=2,<2.14.1",
"mwdelaney/wp-enable-svg": "<=0.2",
+ "nabeel/phpvms": "<7.0.6",
"namshi/jose": "<2.2",
"nasirkhan/laravel-starter": "<11.11",
"nategood/httpful": "<1",
@@ -3248,20 +3509,20 @@
"nilsteampassnet/teampass": "<3.1.3.1-dev",
"nitsan/ns-backup": "<13.0.1",
"nonfiction/nterchange": "<4.1.1",
- "notrinos/notrinos-erp": "<=0.7",
+ "notrinos/notrinos-erp": "<=1",
"noumo/easyii": "<=0.9",
"novaksolutions/infusionsoft-php-sdk": "<1",
"novosga/novosga": "<=2.2.12",
- "nukeviet/nukeviet": "<4.5.02",
+ "nukeviet/nukeviet": "<4.6.00",
"nyholm/psr7": "<1.6.1",
"nystudio107/craft-seomatic": "<3.4.12",
"nzedb/nzedb": "<0.8",
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
"october/backend": "<1.1.2",
"october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
- "october/october": "<3.7.5",
- "october/rain": "<1.0.472|>=1.1,<1.1.2",
- "october/system": "<=3.7.12|>=4,<=4.0.11",
+ "october/october": "<3.7.14|>=4,<4.1.10",
+ "october/rain": "<=3.7.13|>=4,<=4.1.9",
+ "october/system": "<3.7.16|>=4,<4.1.16",
"oliverklee/phpunit": "<3.5.15",
"omeka/omeka-s": "<4.0.3",
"onelogin/php-saml": "<2.21.1|>=3,<3.8.1|>=4,<4.3.1",
@@ -3269,9 +3530,9 @@
"open-web-analytics/open-web-analytics": "<1.8.1",
"opencart/opencart": ">=0",
"openid/php-openid": "<2.3",
- "openmage/magento-lts": "<20.16.1",
+ "openmage/magento-lts": "<=20.17",
"opensolutions/vimbadmin": "<=3.0.15",
- "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7",
+ "opensource-workshop/connect-cms": "<1.41.1|>=2,<2.41.1",
"orchid/platform": ">=8,<14.43",
"oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
"oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
@@ -3280,16 +3541,19 @@
"oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3",
"oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3",
"oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3",
- "oxid-esales/oxideshop-ce": "<=7.0.5",
+ "oxid-esales/oxideshop-ce": "<4.5|>=6,<6.14.4",
+ "oxid-esales/oxideshop-metapackage-ce": ">=6,<6.5.5",
"oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1",
+ "oxid-esales/smarty-component": "<1.0.1",
"packbackbooks/lti-1-3-php-library": "<5",
"padraic/humbug_get_contents": "<1.1.2",
"pagarme/pagarme-php": "<3",
"pagekit/pagekit": "<=1.0.18",
"paragonie/ecc": "<2.0.1",
"paragonie/random_compat": "<2",
- "paragonie/sodium_compat": "<1.24|>=2,<2.5",
+ "paragonie/sodium_compat": "<1.24.1|>=2,<2.5.1",
"passbolt/passbolt_api": "<4.6.2",
+ "paymenter/paymenter": "<=1.5.4",
"paypal/adaptivepayments-sdk-php": "<=3.9.2",
"paypal/invoice-sdk-php": "<=3.9",
"paypal/merchant-sdk-php": "<3.12",
@@ -3302,70 +3566,78 @@
"pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
"personnummer/personnummer": "<3.0.2",
"ph7software/ph7builder": "<=17.9.1",
- "phanan/koel": "<5.1.4",
+ "phanan/koel": "<=9.7",
+ "pheditor/pheditor": "<2.0.8",
"phenx/php-svg-lib": "<0.5.2",
"php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5",
"php-mod/curl": "<2.3.2",
- "phpbb/phpbb": "<3.3.11",
+ "php-standard-library/h2": ">=6.1,<6.1.2|>=6.2,<6.2.1",
+ "php-standard-library/php-standard-library": ">=6.1,<6.1.2|>=6.2,<6.2.1",
+ "phpbb/phpbb": "<3.3.16|==4.0.0.0-alpha1",
+ "phpcsstandards/phpcsutils": ">=1.0.0.0-alpha1,<1.2.3",
"phpems/phpems": ">=6,<=6.1.3",
"phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
"phpmailer/phpmailer": "<6.5",
"phpmussel/phpmussel": ">=1,<1.6",
"phpmyadmin/phpmyadmin": "<5.2.2",
- "phpmyfaq/phpmyfaq": "<=4.0.16",
+ "phpmyfaq/phpmyfaq": "<4.1.4",
"phpoffice/common": "<0.2.9",
"phpoffice/math": "<=0.2",
"phpoffice/phpexcel": "<=1.8.2",
- "phpoffice/phpspreadsheet": "<1.30|>=2,<2.1.12|>=2.2,<2.4|>=3,<3.10|>=4,<5",
+ "phpoffice/phpspreadsheet": "<=1.30.5|>=2,<=2.1.17|>=2.2,<=2.4.6|>=3,<=3.10.6|>=4,<=5.8",
"phppgadmin/phppgadmin": "<=7.13",
- "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
+ "phpseclib/phpseclib": "<=2.0.54|>=3,<=3.0.53",
"phpservermon/phpservermon": "<3.6",
"phpsysinfo/phpsysinfo": "<3.4.3",
- "phpunit/phpunit": "<8.5.52|>=9,<9.6.33|>=10,<10.5.62|>=11,<11.5.50|>=12,<12.5.8",
+ "phpunit/phpunit": "<8.5.52|>=9,<9.6.33|>=10,<10.5.62|>=11,<11.5.50|>=12,<12.5.8|>=12.5.21,<12.5.22|>=13.1.5,<13.1.6",
"phpwhois/phpwhois": "<=4.2.5",
"phpxmlrpc/extras": "<0.6.1",
"phpxmlrpc/phpxmlrpc": "<4.9.2",
"phraseanet/phraseanet": "==4.0.3",
"pi/pi": "<=2.5",
- "pimcore/admin-ui-classic-bundle": "<=1.7.15|>=2.0.0.0-RC1-dev,<=2.2.2",
+ "pimcore/admin-ui-classic-bundle": "<1.7.18|>=2.0.0.0-RC1-dev,<=2.3.5",
"pimcore/customer-management-framework-bundle": "<4.2.1",
"pimcore/data-hub": "<1.2.4",
"pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3",
"pimcore/demo": "<10.3",
"pimcore/ecommerce-framework-bundle": "<1.0.10",
"pimcore/perspective-editor": "<1.5.1",
- "pimcore/pimcore": "<=11.5.14.1|>=12,<12.3.3",
+ "pimcore/pimcore": "<12.3.9|>=2026.1,<=2026.1.4",
"pimcore/web2print-tools-bundle": "<=5.2.1|>=6.0.0.0-RC1-dev,<=6.1",
"piwik/piwik": "<1.11",
"pixelfed/pixelfed": "<0.12.5",
+ "plank/laravel-mediable": "<7",
"plotly/plotly.js": "<2.25.2",
"pocketmine/bedrock-protocol": "<8.0.2",
- "pocketmine/pocketmine-mp": "<5.32.1",
+ "pocketmine/pocketmine-mp": "<5.42.1",
"pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
+ "pontedilana/php-weasyprint": "<=2.5.1",
+ "poweradmin/poweradmin": "<4.2.5|>=4.3,<4.3.4",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
"prestashop/blockreassurance": "<=5.1.3",
"prestashop/blockwishlist": ">=2,<2.1.1",
"prestashop/contactform": ">=1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
- "prestashop/prestashop": "<8.2.4|>=9.0.0.0-alpha1,<9.0.3",
+ "prestashop/prestashop": "<8.2.6|>=9,<9.1.1",
"prestashop/productcomments": "<5.0.2",
- "prestashop/ps_checkout": "<4.4.1|>=5,<5.0.5",
+ "prestashop/ps_checkout": "<5.3",
"prestashop/ps_contactinfo": "<=3.3.2",
"prestashop/ps_emailsubscription": "<2.6.1",
- "prestashop/ps_facetedsearch": "<3.4.1",
+ "prestashop/ps_facetedsearch": "<4.0.4",
"prestashop/ps_linklist": "<3.1",
"privatebin/privatebin": "<1.4|>=1.5,<1.7.4|>=1.7.7,<2.0.3",
- "processwire/processwire": "<=3.0.246",
- "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
- "propel/propel1": ">=1,<=1.7.1",
+ "processwire/processwire": "<=3.0.255",
+ "propel/propel": ">=2.0.0.0-alpha1,<2.0.0.0-alpha8",
+ "propel/propel1": ">=1,<1.7.2",
"psy/psysh": "<=0.11.22|>=0.12,<=0.12.18",
- "pterodactyl/panel": "<1.12.1",
+ "pterodactyl/panel": "<=1.12.4",
"ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
"ptrofimov/beanstalk_console": "<1.7.14",
"pubnub/pubnub": "<6.1",
"punktde/pt_extbase": "<1.5.1",
"pusher/pusher-php-server": "<2.2.1",
+ "putyourlightson/craft-sprig": ">=2,<2.15.2|>=3,<3.7.2",
"pwweb/laravel-core": "<=0.3.6.0-beta",
"pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3",
"pyrocms/pyrocms": "<=3.9.1",
@@ -3374,48 +3646,54 @@
"rainlab/blog-plugin": "<1.4.1",
"rainlab/debugbar-plugin": "<3.1",
"rainlab/user-plugin": "<=1.4.5",
- "ralffreit/mfa-email": "<=2",
+ "ralffreit/mfa-email": "<1.0.7|==2",
"rankmath/seo-by-rank-math": "<=1.0.95",
"rap2hpoutre/laravel-log-viewer": "<0.13",
"react/http": ">=0.7,<1.9",
"really-simple-plugins/complianz-gdpr": "<6.4.2",
- "redaxo/source": "<=5.20.1",
+ "redaxo/source": "<5.21.1",
"remdex/livehelperchat": "<4.29",
"renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1",
"reportico-web/reportico": "<=8.1",
- "rhukster/dom-sanitizer": "<1.0.7",
+ "rhukster/dom-sanitizer": "<1.0.10",
"rmccue/requests": ">=1.6,<1.8",
+ "roadiz/documents": "<2.3.42|>=2.4,<2.5.44|>=2.6,<2.6.28|>=2.7,<2.7.9",
+ "roadiz/openid": "<2.3.43|>=2.5,<2.5.45|>=2.6,<2.6.31|>=2.7,<2.7.18",
"robrichards/xmlseclibs": "<3.1.5",
"roots/soil": "<4.1",
- "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11",
+ "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11|>=1.7.0.0-beta,<1.7.0.0-RC5-dev",
"rudloff/alltube": "<3.0.3",
"rudloff/rtmpdump-bin": "<=2.3.1",
"s-cart/core": "<=9.0.5",
"s-cart/s-cart": "<6.9",
+ "s9y/serendipity": "<2.6",
"sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
"sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9",
+ "saloonphp/saloon": "<4",
"samwilson/unlinked-wikibase": "<1.42",
"scheb/two-factor-bundle": "<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
- "setasign/fpdi": "<2.6.4",
+ "setasign/fpdi": "<2.6.7",
"sfroemken/url_redirect": "<=1.2.1",
"sheng/yiicms": "<1.2.1",
- "shopware/core": "<6.6.10.15-dev|>=6.7,<6.7.8.1-dev",
- "shopware/platform": "<6.6.10.15-dev|>=6.7,<6.7.8.1-dev",
+ "shopper/cart": "<2.8",
+ "shopper/framework": "<2.8",
+ "shopware/core": "<6.6.10.18-dev|>=6.7,<6.7.10.1-dev",
+ "shopware/platform": "<6.6.10.18-dev|>=6.7,<6.7.10.1-dev",
"shopware/production": "<=6.3.5.2",
- "shopware/shopware": "<=5.7.17|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.6.1-dev",
+ "shopware/shopware": "<=6.3.5.2|>=6.4.6,<6.6.10.10-dev|>=6.7,<6.7.6.1-dev",
"shopware/storefront": "<6.6.10.10-dev|>=6.7,<6.7.5.1-dev",
"shopxo/shopxo": "<=6.4",
- "showdoc/showdoc": "<2.10.4",
+ "showdoc/showdoc": "<3.8.1",
"shuchkin/simplexlsx": ">=1.0.12,<1.1.13",
"silverstripe-australia/advancedreports": ">=1,<=2",
"silverstripe/admin": "<1.13.19|>=2,<2.1.8",
- "silverstripe/assets": ">=1,<1.11.1",
- "silverstripe/cms": "<4.11.3",
+ "silverstripe/assets": "<2.4.5|>=3,<3.1.3",
+ "silverstripe/cms": "<6.2.1",
"silverstripe/comments": ">=1.3,<3.1.1",
- "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
- "silverstripe/framework": "<5.3.23",
+ "silverstripe/forum": "<0.6.2|>=0.7,<0.7.4",
+ "silverstripe/framework": "<6.2.2",
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
"silverstripe/recipe-cms": ">=4.5,<4.5.3",
@@ -3425,13 +3703,15 @@
"silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
"silverstripe/subsites": ">=2,<2.6.1",
"silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
- "silverstripe/userforms": "<3|>=5,<5.4.2",
+ "silverstripe/userforms": "<6.4.9|>=7,<7.0.7|>=7.1,<7.1.1",
+ "silverstripe/versioned": "<3.2.1",
"silverstripe/versioned-admin": ">=1,<1.11.1",
"simogeo/filemanager": "<=2.5",
"simple-updates/phpwhois": "<=1",
- "simplesamlphp/saml2": "<=4.16.15|>=5.0.0.0-alpha1,<=5.0.0.0-alpha19",
- "simplesamlphp/saml2-legacy": "<=4.16.15",
- "simplesamlphp/simplesamlphp": "<1.18.6",
+ "simplesamlphp/saml2": "<4.19.3|>=4.20,<=4.20.2|>=5,<5.0.6|>=6,<6.2.1",
+ "simplesamlphp/saml2-legacy": "<4.19.3|>=4.20,<=4.20.2",
+ "simplesamlphp/simplesamlphp": "<=2.4.6|>=2.5,<=2.5.1",
+ "simplesamlphp/simplesamlphp-module-casserver": "<=7.0.2",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplesamlphp/simplesamlphp-module-openid": "<1",
"simplesamlphp/simplesamlphp-module-openidprovider": "<0.9",
@@ -3443,35 +3723,39 @@
"sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3",
"sjbr/static-info-tables": "<2.3.1",
"slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1",
- "slim/slim": "<2.6",
+ "slim/slim": "<2.6|>=4.4,<=4.15.1",
"slub/slub-events": "<3.0.3",
- "smarty/smarty": "<4.5.3|>=5,<5.1.1",
- "snipe/snipe-it": "<8.3.7",
+ "smarty/smarty": "<4.5.7|>=5,<5.8.4",
+ "snipe/snipe-it": "<8.6.3",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
+ "solidinvoice/solidinvoice": "<=2.3.15",
"solspace/craft-freeform": "<4.1.29|>=5,<=5.14.6",
"soosyze/soosyze": "<=2",
"spatie/browsershot": "<5.0.5",
"spatie/image-optimizer": "<1.7.3",
+ "spatie/laravel-medialibrary": "<11.23",
+ "spatie/schema-org": ">=3.23.1,<3.23.2|>=4,<4.0.2",
"spencer14420/sp-php-email-handler": "<1",
"spipu/html2pdf": "<5.2.8",
"spiral/roadrunner": "<2025.1",
+ "spomky-labs/otphp": "<11.4.3",
"spoon/library": "<1.4.1",
"spoonity/tcpdf": "<6.2.22",
- "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
+ "squizlabs/php_codesniffer": "<3.13.6|>=4,<4.0.2",
"ssddanbrown/bookstack": "<24.05.1",
"starcitizentools/citizen-skin": ">=1.9.4,<3.9",
"starcitizentools/short-description": ">=4,<4.0.1",
"starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1",
"starcitizenwiki/embedvideo": "<=4",
- "statamic/cms": "<5.73.14|>=6,<6.7",
+ "statamic/cms": "<5.74.3|>=6,<6.24.2",
"stormpath/sdk": "<9.9.99",
- "studio-42/elfinder": "<=2.1.64",
+ "studio-42/elfinder": "<=2.1.67",
"studiomitte/friendlycaptcha": "<0.1.4",
"subhh/libconnect": "<7.0.8|>=8,<8.1",
"sukohi/surpass": "<1",
"sulu/form-bundle": ">=2,<2.5.3",
- "sulu/sulu": "<1.6.44|>=2,<2.5.25|>=2.6,<2.6.9|>=3.0.0.0-alpha1,<3.0.0.0-alpha3",
+ "sulu/sulu": "<=2.6.22|>=3,<=3.0.5",
"sumocoders/framework-user-bundle": "<1.4",
"superbig/craft-audit": "<3.0.2",
"svewap/a21glossary": "<=0.4.10",
@@ -3481,50 +3765,65 @@
"sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
"sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
"sylius/grid-bundle": "<1.10.1",
+ "sylius/mollie-plugin": "<2.2.8|>=3,<3.2.4|>=3.3,<3.3.1",
"sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2",
"sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.9.12|>=1.10,<1.10.16|>=1.11,<1.11.17|>=1.12,<=1.12.22|>=1.13,<=1.13.14|>=1.14,<=1.14.17|>=2,<=2.0.15|>=2.1,<=2.1.11|>=2.2,<=2.2.2",
+ "sylius/sylius": "<1.9.12|>=1.10,<1.10.16|>=1.11,<1.11.17|>=1.12,<=1.12.22|>=1.13,<=1.13.14|>=1.14,<=1.14.17|>=2,<2.0.18|>=2.1,<2.1.15|>=2.2,<2.2.6",
+ "symbiote/silverstripe-advancedworkflow": "<6.4.5|>=7,<7.1.3|>=7.2,<7.2.1",
"symbiote/silverstripe-multivaluefield": ">=3,<3.1",
"symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
"symbiote/silverstripe-seed": "<6.0.3",
"symbiote/silverstripe-versionedfiles": "<=2.0.3",
"symfont/process": ">=0",
- "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
+ "symfony/cache": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
"symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/dom-crawler": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
"symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
"symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4",
- "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8",
- "symfony/http-foundation": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7",
- "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
+ "symfony/html-sanitizer": ">=6.1,<6.4.41|>=7,<7.4.13|>=8,<8.0.13",
+ "symfony/http-client": ">=4.3,<5.4.53|>=6,<6.4.15|>=7,<7.1.8",
+ "symfony/http-foundation": "<5.4.50|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13",
+ "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6|>=7.4,<7.4.12|>=8,<8.0.12",
"symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
+ "symfony/json-path": ">=7.3,<7.4.12|>=8,<8.0.12",
+ "symfony/lox24-notifier": ">=7.1,<7.4.12|>=8,<8.0.12",
+ "symfony/mailer": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
+ "symfony/mailjet-mailer": ">=6.4,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
+ "symfony/mailomat-mailer": ">=7.2,<7.4.13|>=8,<8.0.13",
+ "symfony/mailtrap-mailer": ">=7.2,<7.4.12|>=8,<8.0.12",
"symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
- "symfony/mime": ">=4.3,<4.3.8",
+ "symfony/mime": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
+ "symfony/monolog-bridge": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
"symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
- "symfony/polyfill": ">=1,<1.10",
+ "symfony/polyfill": ">=1,<1.10|>=1.17.1,<1.38.1",
+ "symfony/polyfill-intl-idn": ">=1.17.1,<1.38.1",
"symfony/polyfill-php55": ">=1,<1.10",
"symfony/process": "<5.4.51|>=6,<6.4.33|>=7,<7.1.7|>=7.3,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5",
"symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
- "symfony/routing": ">=2,<2.0.19",
- "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7",
+ "symfony/routing": "<5.4.53|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13",
+ "symfony/runtime": ">=5.3,<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
"symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
"symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3",
"symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
"symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
"symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
- "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8",
+ "symfony/security-http": "<5.4.53|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13",
"symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
- "symfony/symfony": "<5.4.51|>=6,<6.4.33|>=7,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5",
+ "symfony/symfony": "<5.4.53|>=6,<6.4.41|>=7,<7.4.13|>=8,<8.0.13",
"symfony/translation": ">=2,<2.0.17",
- "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
- "symfony/ux-autocomplete": "<2.11.2",
- "symfony/ux-live-component": "<2.25.1",
+ "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8|>=6.4.24,<6.4.40",
+ "symfony/twilio-notifier": ">=6.4,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
+ "symfony/ux-autocomplete": "<2.36|>=3,<3.1",
+ "symfony/ux-icons": ">=2.17,<2.36.1|>=3,<3.2",
+ "symfony/ux-live-component": "<2.36|>=3,<3.1",
+ "symfony/ux-toolkit": ">=2.32,<2.36.1|>=3,<3.2",
"symfony/ux-twig-component": "<2.25.1",
"symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4",
"symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
- "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
+ "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4|>=7.2.9,<7.4.12|>=8,<8.0.12",
"symfony/webhook": ">=6.3,<6.3.8",
- "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2",
+ "symfony/yaml": "<5.4.52|>=6,<6.4.40|>=7,<7.4.12|>=8,<8.0.12",
"symphonycms/symphony-2": "<2.6.4",
"t3/dce": "<0.11.5|>=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
@@ -3535,45 +3834,50 @@
"tecnickcom/tcpdf": "<6.8",
"terminal42/contao-tablelookupwizard": "<3.3.5",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
- "thelia/thelia": ">=2.1,<2.1.3",
+ "thelia/thelia": ">=2.0.0.0-beta1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
"thinkcmf/thinkcmf": "<6.0.8",
- "thorsten/phpmyfaq": "<4.0.18|>=4.1.0.0-alpha,<=4.1.0.0-beta2",
+ "thorsten/phpmyfaq": "<4.2.0.0-alpha",
"tikiwiki/tiki-manager": "<=17.1",
"timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1",
- "tinymce/tinymce": "<7.2",
+ "tinymce/tinymce": "<7.9.3|>=8,<8.5.1",
"tinymighty/wiki-seo": "<1.2.2",
"titon/framework": "<9.9.99",
"tltneon/lgsl": "<7",
"tobiasbg/tablepress": "<=2.0.0.0-RC1",
+ "tomasnorre/crawler": "<11.0.13|>=12,<12.0.11",
"topthink/framework": "<6.0.17|>=6.1,<=8.0.4",
"topthink/think": "<=6.1.1",
"topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4",
"torrentpier/torrentpier": "<=2.8.8",
- "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
+ "tpwd/ke_search": "<5.6.2|>=6,<6.6.1|>=7,<7.0.1",
"tribalsystems/zenario": "<=9.7.61188",
"truckersmp/phpwhois": "<=4.3.1",
"ttskch/pagination-service-provider": "<1",
"twbs/bootstrap": "<3.4.1|>=4,<4.3.1",
- "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19",
- "typicms/core": "<16.1.7",
+ "twig/cssinliner-extra": "<3.26",
+ "twig/intl-extra": "<3.26",
+ "twig/markdown-extra": "<3.26",
+ "twig/twig": "<3.27",
+ "typicms/core": "<12.0.5|>=13,<13.0.9|>=14,<14.0.27|>=15,<15.0.29|>=16,<16.1.7",
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
- "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1",
+ "typo3/cms-backend": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3",
"typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-beuser": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
- "typo3/cms-core": "<=8.7.56|>=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1",
+ "typo3/cms-core": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.34|>=14,<14.3.6",
"typo3/cms-dashboard": ">=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
"typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
"typo3/cms-felogin": ">=4.2,<4.2.3",
- "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
- "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
+ "typo3/cms-filelist": ">=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3",
+ "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1|>=8,<8.7.23|>=9,<9.5.4",
+ "typo3/cms-form": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.5",
"typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
- "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2",
+ "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<13.4.31|>=14,<14.3.3",
"typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2",
"typo3/cms-lowlevel": ">=11,<=11.5.41",
"typo3/cms-recordlist": ">=11,<11.5.48",
- "typo3/cms-recycler": ">=9,<9.5.55|>=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1",
+ "typo3/cms-recycler": "<10.4.57|>=11,<11.5.51|>=12,<12.4.46|>=13,<13.4.31|>=14,<14.3.3",
"typo3/cms-redirects": ">=10,<=10.4.54|>=11,<=11.5.48|>=12,<=12.4.40|>=13,<=13.4.22|>=14,<=14.0.1",
"typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
"typo3/cms-scheduler": ">=11,<=11.5.41",
@@ -3581,7 +3885,7 @@
"typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11",
"typo3/cms-workspaces": ">=9,<9.5.55|>=10,<10.4.54|>=11,<11.5.48|>=12,<12.4.37|>=13,<13.4.18",
"typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
- "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
+ "typo3/html-sanitizer": "<2.3.2",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
"typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
"typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
@@ -3597,7 +3901,7 @@
"uvdesk/core-framework": "<=1.1.1",
"vanilla/safecurl": "<0.9.2",
"verbb/comments": "<1.5.5",
- "verbb/formie": "<=2.1.43",
+ "verbb/formie": "<3.1.28",
"verbb/image-resizer": "<2.0.9",
"verbb/knock-knock": "<1.2.8",
"verot/class.upload.php": "<=2.1.6",
@@ -3611,44 +3915,52 @@
"wallabag/wallabag": "<2.6.11",
"wanglelecc/laracms": "<=1.0.3",
"wapplersystems/a21glossary": "<=0.4.10",
- "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9|>=5.2,<5.2.4",
- "web-auth/webauthn-lib": ">=4.5,<4.9|>=5.2,<5.2.4",
- "web-auth/webauthn-symfony-bundle": ">=5.2,<5.2.4",
+ "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9|>=5.2,<5.2.4|>=5.3,<5.3.1",
+ "web-auth/webauthn-lib": ">=4.5,<5.3.5",
+ "web-auth/webauthn-symfony-bundle": "<5.3.4",
"web-feet/coastercms": "==5.5",
+ "web-token/jwt-bundle": "<3.4.10|>=4,<4.0.7|>=4.1,<4.1.7",
+ "web-token/jwt-experimental": "<4.1.7",
+ "web-token/jwt-framework": "<4.1.7",
+ "web-token/jwt-library": "<3.4.10|>=4,<4.0.7|>=4.1,<4.1.7",
"web-tp3/wec_map": "<3.0.3",
"webbuilders-group/silverstripe-kapost-bridge": "<0.4",
"webcoast/deferred-image-processing": "<1.0.2",
"webklex/laravel-imap": "<5.3",
"webklex/php-imap": "<5.3",
+ "webonyx/graphql-php": "<=15.32.2",
"webpa/webpa": "<3.1.2",
"webreinvent/vaahcms": "<=2.3.1",
"wikibase/wikibase": "<=1.39.3",
"wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
- "winter/wn-backend-module": "<1.2.12",
- "winter/wn-cms-module": "<=1.2.9",
+ "winter/wn-backend-module": "<1.2.13",
+ "winter/wn-cms-module": "<=1.2.12",
"winter/wn-dusk-plugin": "<2.1",
"winter/wn-system-module": "<1.2.4",
"wintercms/winter": "<=1.2.3",
"wireui/wireui": "<1.19.3|>=2,<2.1.3",
+ "wnx/laravel-backup-restore": "<=1.9.3",
"woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3",
"wp-cli/wp-cli": ">=0.12,<2.5",
- "wp-graphql/wp-graphql": "<=1.14.5",
+ "wp-coding-standards/wpcs": ">=0.14.1,<3.4.1",
+ "wp-graphql/wp-graphql": "<=2.6",
"wp-premium/gravityforms": "<2.4.21",
"wpanel/wpanel4-cms": "<=4.3.1",
"wpcloud/wp-stateless": "<3.2",
"wpglobus/wpglobus": "<=1.9.6",
"wpmetabox/meta-box": "<5.11.2",
- "wwbn/avideo": "<=25",
+ "wwbn/avideo": "<=29",
"xataface/xataface": "<3",
"xpressengine/xpressengine": "<3.0.15",
"yab/quarx": "<2.4.5",
- "yeswiki/yeswiki": "<=4.5.4",
+ "yansongda/pay": "<=3.7.19",
+ "yeswiki/yeswiki": "<4.6.6",
"yetiforce/yetiforce-crm": "<6.5",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": "<1.1.31",
- "yiisoft/yii2": "<2.0.52",
+ "yiisoft/yii2": "<2.0.55",
"yiisoft/yii2-authclient": "<2.2.15",
"yiisoft/yii2-bootstrap": "<2.0.4",
"yiisoft/yii2-dev": "<=2.0.45",
@@ -3658,6 +3970,7 @@
"yiisoft/yii2-redis": "<2.0.20",
"yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
"yoast-seo-for-typo3/yoast_seo": "<7.2.3",
+ "yoast/duplicate-post": "<=4.5",
"yourls/yourls": "<=1.10.2",
"yuan1994/tpadmin": "<=1.3.12",
"yungifez/skuul": "<=2.6.5",
@@ -3736,7 +4049,7 @@
"type": "tidelift"
}
],
- "time": "2026-03-18T21:14:35+00:00"
+ "time": "2026-08-19T20:26:39+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -4179,16 +4492,16 @@
},
{
"name": "sebastian/exporter",
- "version": "4.0.8",
+ "version": "4.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c"
+ "reference": "4352c1a3df741a7ba9e61af6fed51d1fee41cbf7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/14c6ba52f95a36c3d27c835d65efc7123c446e8c",
- "reference": "14c6ba52f95a36c3d27c835d65efc7123c446e8c",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/4352c1a3df741a7ba9e61af6fed51d1fee41cbf7",
+ "reference": "4352c1a3df741a7ba9e61af6fed51d1fee41cbf7",
"shasum": ""
},
"require": {
@@ -4244,7 +4557,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.8"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.9"
},
"funding": [
{
@@ -4264,7 +4577,7 @@
"type": "tidelift"
}
],
- "time": "2025-09-24T06:03:27+00:00"
+ "time": "2026-08-11T04:55:59+00:00"
},
{
"name": "sebastian/global-state",
@@ -4513,16 +4826,16 @@
},
{
"name": "sebastian/recursion-context",
- "version": "4.0.6",
+ "version": "4.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "539c6691e0623af6dc6f9c20384c120f963465a0"
+ "reference": "c85be6922b7fd365942b986b9a50397d65407611"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0",
- "reference": "539c6691e0623af6dc6f9c20384c120f963465a0",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/c85be6922b7fd365942b986b9a50397d65407611",
+ "reference": "c85be6922b7fd365942b986b9a50397d65407611",
"shasum": ""
},
"require": {
@@ -4564,7 +4877,7 @@
"homepage": "https://github.com/sebastianbergmann/recursion-context",
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.7"
},
"funding": [
{
@@ -4584,7 +4897,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-10T06:57:39+00:00"
+ "time": "2026-08-11T05:25:24+00:00"
},
{
"name": "sebastian/resource-operations",
@@ -4751,16 +5064,16 @@
},
{
"name": "squizlabs/php_codesniffer",
- "version": "3.13.5",
+ "version": "3.13.6",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
- "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4"
+ "reference": "4c378e1a528ea066890fc2397cbdd2f94eb2fc91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4",
- "reference": "0ca86845ce43291e8f5692c7356fccf3bcf02bf4",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/4c378e1a528ea066890fc2397cbdd2f94eb2fc91",
+ "reference": "4c378e1a528ea066890fc2397cbdd2f94eb2fc91",
"shasum": ""
},
"require": {
@@ -4826,11 +5139,11 @@
"type": "thanks_dev"
}
],
- "time": "2025-11-04T16:30:35+00:00"
+ "time": "2026-08-06T00:17:32+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.33.0",
+ "version": "v1.37.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
@@ -4886,7 +5199,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.37.0"
},
"funding": [
{
@@ -5066,16 +5379,16 @@
},
{
"name": "wp-coding-standards/wpcs",
- "version": "3.3.0",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/WordPress/WordPress-Coding-Standards.git",
- "reference": "7795ec6fa05663d716a549d0b44e47ffc8b0d4a6"
+ "reference": "ec2ff942335f33683a5957a85d138753876a05cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/7795ec6fa05663d716a549d0b44e47ffc8b0d4a6",
- "reference": "7795ec6fa05663d716a549d0b44e47ffc8b0d4a6",
+ "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/ec2ff942335f33683a5957a85d138753876a05cf",
+ "reference": "ec2ff942335f33683a5957a85d138753876a05cf",
"shasum": ""
},
"require": {
@@ -5084,9 +5397,9 @@
"ext-tokenizer": "*",
"ext-xmlreader": "*",
"php": ">=7.2",
- "phpcsstandards/phpcsextra": "^1.5.0",
- "phpcsstandards/phpcsutils": "^1.1.0",
- "squizlabs/php_codesniffer": "^3.13.4"
+ "phpcsstandards/phpcsextra": "^1.5.1",
+ "phpcsstandards/phpcsutils": "^1.2.3",
+ "squizlabs/php_codesniffer": "^3.13.5"
},
"require-dev": {
"php-parallel-lint/php-console-highlighter": "^1.0.0",
@@ -5128,7 +5441,7 @@
"type": "custom"
}
],
- "time": "2025-11-25T12:08:04+00:00"
+ "time": "2026-07-27T11:53:23+00:00"
},
{
"name": "wp-media/background-processing",
@@ -5265,30 +5578,41 @@
},
{
"name": "wp-media/phpunit",
- "version": "v3.0.4",
+ "version": "v3.3",
"source": {
"type": "git",
"url": "https://github.com/wp-media/phpunit.git",
- "reference": "8914099b403041725fea9f0239534c414674eeca"
+ "reference": "1aff2adca36bde1191c004557703f6cde01856ae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wp-media/phpunit/zipball/8914099b403041725fea9f0239534c414674eeca",
- "reference": "8914099b403041725fea9f0239534c414674eeca",
+ "url": "https://api.github.com/repos/wp-media/phpunit/zipball/1aff2adca36bde1191c004557703f6cde01856ae",
+ "reference": "1aff2adca36bde1191c004557703f6cde01856ae",
"shasum": ""
},
"require": {
"mikey179/vfsstream": "^1.6",
- "php": "^7 || ^8",
+ "php": ">=7.4",
"yoast/wp-test-utils": "^1.0.0"
},
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^1",
+ "php-stubs/wordpress-tests-stubs": "^6.8",
+ "phpcompatibility/phpcompatibility-wp": "^2.0",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-mockery": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "szepeviktor/phpstan-wordpress": "^2.0",
+ "wp-coding-standards/wpcs": "^3"
+ },
"bin": [
"wpmedia-phpunit"
],
"type": "library",
"autoload": {
"psr-4": {
- "WPMedia\\PHPUnit\\": "."
+ "WPMedia\\PHPUnit\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -5308,7 +5632,7 @@
"issues": "https://github.com/wp-media/phpunit/issues",
"source": "https://github.com/wp-media/phpunit"
},
- "time": "2025-05-09T19:38:19+00:00"
+ "time": "2026-08-19T15:40:08+00:00"
},
{
"name": "wp-media/rocket-lazyload-common",
@@ -5437,15 +5761,15 @@
},
{
"name": "wpackagist-plugin/ewww-image-optimizer",
- "version": "8.4.1",
+ "version": "8.7.5",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/ewww-image-optimizer/",
- "reference": "tags/8.4.1"
+ "reference": "tags/8.7.5"
},
"dist": {
"type": "zip",
- "url": "https://downloads.wordpress.org/plugin/ewww-image-optimizer.8.4.1.zip"
+ "url": "https://downloads.wordpress.org/plugin/ewww-image-optimizer.8.7.5.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@@ -5527,15 +5851,15 @@
},
{
"name": "wpackagist-plugin/spinupwp",
- "version": "1.9.0",
+ "version": "1.9.1",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/spinupwp/",
- "reference": "tags/1.9.0"
+ "reference": "tags/1.9.1"
},
"dist": {
"type": "zip",
- "url": "https://downloads.wordpress.org/plugin/spinupwp.1.9.0.zip"
+ "url": "https://downloads.wordpress.org/plugin/spinupwp.1.9.1.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@@ -5741,10 +6065,10 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": ">=7.3"
+ "php": ">=7.4"
},
"platform-dev": {
- "php": "^7 || ^8"
+ "php": "^7.4 || ^8"
},
"plugin-api-version": "2.9.0"
}
diff --git a/web/app/plugins/wp-rocket/dynamic-lists-delayjs.json b/web/app/plugins/wp-rocket/dynamic-lists-delayjs.json
index 6d916f1a8..7877f832f 100644
--- a/web/app/plugins/wp-rocket/dynamic-lists-delayjs.json
+++ b/web/app/plugins/wp-rocket/dynamic-lists-delayjs.json
@@ -1 +1 @@
-{"plugins":{"ffc21030-519a-4853-8cea-49f959e82731":{"title":"Additional Variation Images Gallery for WooCommerce","condition":"woo-variation-gallery\/woo-variation-gallery.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woo-variation-gallery\/assets\/js\/slick.min.js","\/woo-variation-gallery\/assets\/js\/frontend.min.js","\/wp-includes\/js\/underscore.min.js","variation_custom_fields"],"icon_url":"","summary":"Prevents delay in the loading of product images.","type":"plugin","id":"plugin:def67a2c1ddd6df2353e4772b6fd4e5b","is_default":0,"created_at":1724424735},"0e7dc253-acd0-4421-877f-a7101d848717":{"title":"Advanced Ads","condition":"advanced-ads\/advanced-ads.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/(.*).js","advanced_ads_ready","advadsCfpQueue","adsbygoogle","adservice.google","\/advanced-ads(.*)","advads_items","advads_tracking_ads"],"icon_url":"","summary":"The latest versions of Advanced Ads include automatic compatibility with Delay JS. So please update them first: Advanced Ads 1.27.0, Advanced Ads Pro 2.13.0, and Advanced Ads Tracking 2.1.0","type":"plugin","id":"plugin:4b82cc7379d46c6272f5d556bb264eec","is_default":0,"created_at":1724424826},"a4d5c058-9120-47ee-977c-f30f83fb1a75":{"id":"plugin:a076fbb79772f497349a76ee74a7f708","title":"All-in-one Compliance for GDPR \/ CCPA Cookie Consent","type":"plugin","icon":"","exclusions":["iubenda_cs.js","var _iub"],"is_default":0,"condition":"iubenda-cookie-law-solution\/iubenda_cookie_solution.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"88457e92-0f24-458e-b7b5-bab59074ebef":{"title":"Amelia","condition":"ameliabooking\/ameliabooking.php","exclusions":["\/wp-content\/plugins\/ameliabooking\/(.*).js","var hasAmeliaEvent","var ameliaShortcodeData"],"icon_url":"","summary":"Display booking options without user interaction.","type":"plugin","category":"analytics","id":"plugin:93ea6597c3cbd06e93a46b9f5368732d","is_default":0,"created_at":1758013982},"79a5082f-821a-4a4b-a0e3-caaf22cf3f75":{"title":"AMO Team Showcase","condition":"amo-team-showcase\/amo-team-showcase.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/amo-team-showcase\/public\/js\/wookmark.js","\/amo-team-showcase\/public\/js\/amo-team-showcase-public.js","\/wp-includes\/js\/imagesloaded.min.js","amoTeamVars"],"icon_url":"","summary":"To display team members.","type":"plugin","id":"plugin:9bdceaa1bb89135730a3b2aa4db94c22","is_default":0,"created_at":1724425072},"90c7fd90-3adf-4cb7-8a92-845bdbd95d27":{"title":"Anti-Spam by CleanTalk - Prevent console error","condition":"cleantalk-spam-protect\/cleantalk.php","exclusions":["ctPublicFunctions","ctPublic"],"icon_url":"","summary":"Prevent console error","type":"plugin","id":"plugin:ed2ade77cd44e21b1703b093c002a903","is_default":0,"created_at":1724425107},"e054f840-700a-4549-bbba-485473a53f71":{"title":"AnWP Football Leagues - Calendar Widget","condition":"football-leagues-by-anwppro\/anwp-football-leagues.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/football-leagues-by-anwppro\/(.*)","\/football-leagues-by-anwppro-premium-premium\/(.*)","window.AnWPFLPro","window.AnWPFLTabulator","\/elementor\/assets\/lib\/flatpickr\/flatpickr.min.js"],"icon_url":"","summary":"Display FL Calendar Widget","type":"plugin","id":"plugin:e7581089f33fdf0a970d5c5deb16ff50","is_default":0,"created_at":1724425139},"1d058cae-4460-4354-bab3-a96445650bd8":{"title":"AnyWhere Elementor Pro","condition":"anywhere-elementor-pro\/anywhere-elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/anywhere-elementor-pro\/build\/index.js"],"icon_url":"","summary":"Make links clickable","type":"plugin","id":"plugin:b739df50f3f5bf400075f17dca652517","is_default":0,"created_at":1724425158},"8a1614c7-55b1-4b6d-88e5-6e8ddc630dae":{"id":"plugin:46741e77eaf4d13a0c80be6b86379758","title":"Astra - Pro Addon","type":"plugin","icon":"","exclusions":["\/astra-addon\/astra-addon-(.*).js"],"is_default":0,"condition":"astra-addon\/astra-addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"24bc7cdf-0c51-4d93-a74d-57344689a4f6":{"title":"Beaver Builder - Background Images","condition":"bb-theme-builder\/bb-theme-builder.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/uploads\/bb-plugin\/cache\/(.*)-layout.js"],"summary":"When Delay JavaScript Execution is enabled, background images don't show until user interaction.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:b509b5b21236c81836daf74954b9109e","is_default":0,"created_at":1737120060},"37d96403-f9ea-4481-b2f8-374d7c93e61a":{"title":"Beaver Builder Lite","condition":"beaver-builder-lite-version\/fl-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/bb-plugin\/","\/bb-plugin\/js\/yui3.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/bb-plugin\/js\/fl-slideshow.min.js"],"summary":"To show parallax background, slideshow background and some animations instantly.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:3fab17e6c8338e2dcc7a5c8a06abf093","is_default":0,"created_at":1737118681},"f83dbf3b-783e-4ef9-9b18-8a469ca7102d":{"title":"Bloom","condition":"bloom\/bloom.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bloom\/"],"icon_url":"","type":"plugin","id":"plugin:e57cdfbc09f4e0f7445c279d9f580bdd","is_default":0,"created_at":1685189070},"a95fbc8a-c32d-4a4b-90b4-ab6d203501a6":{"title":"Bold Builder - Load Page Content","condition":"bold-page-builder\/bold-builder.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/plugins\/bold-page-builder\/content_elements_misc\/js\/content_elements.js"],"summary":"When Delay JavaScript Execution is enabled, the Bold Builder page content doesn't load until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:b4e303b649e8a20c016a51f35647cf35","is_default":0,"created_at":1754073080},"135aadd2-cd4a-44ae-8dcf-801f3f2316c0":{"id":"plugin:055ef01accbad6378e3d1a4965600964","title":"Booked","type":"plugin","icon":"","exclusions":["\/booked\/","\/js\/jquery\/ui\/datepicker.min.js"],"is_default":0,"condition":"booked\/booked.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ddfee9b0-e5a9-4d3f-8c21-b999cbb61c33":{"title":"Bookly","condition":"bookly-responsive-appointment-booking-tool\/main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bookly-responsive-appointment-booking-tool\/frontend\/","window.bookly"],"icon_url":"","summary":"To load the booking form on page load.","type":"plugin","id":"plugin:492f9b0d55f3bf07c68e915ea1dfb72a","is_default":0,"created_at":1724427886},"7a013fd6-0881-4dbe-8e93-33edefe7f717":{"title":"Borlabs Cookie","condition":"borlabs-cookie\/borlabs-cookie.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","borlabsCookieConfig","borlabs-cookie.min.js","borlabsCookieContentBlocker","BorlabsCookieBox","allFbWidgets","\/borlabs-cookie\/assets\/javascript\/","borlabs-cookie-config"],"icon_url":"","type":"plugin","id":"plugin:e1ec2daca513de476bd3dae79366e9ab","is_default":0,"created_at":1702497952},"3999e680-4049-4494-945c-768cecc1a2c4":{"title":"Brizy","condition":"brizy\/brizy.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/group-(.*).js","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/preview.js","Brizy.emit","\/brizy\/public\/editor-build\/prod\/editor\/js\/group-(.*).js","\/brizy-pro\/public\/editor-build\/prod\/js\/preview.pro.min.js","Brz.emit"],"icon_url":"","summary":"Prevents partially loading the slider. When Delay JavaScript Execution is enabled, the page content don't load until user interaction.","type":"plugin","category":"analytics","id":"plugin:43019d66af7b41e65bb602c01e10c6a0","is_default":0,"created_at":1744729591},"af4d9357-3def-42a1-86b7-419553444b4d":{"title":"Carousel Upsells and Related Product for WooCommerce","condition":"carousel-upsells-and-related-product-for-woocommerce\/ffxf-woo-glide-related-and-upsells.php","exclusions":["\/carousel-upsells-and-related-product-for-woocommerce\/assets\/js\/glide.min.js","carusel_poduct_related"],"icon_url":"","summary":"To load the carousel products with the correct spacing without interaction.","type":"plugin","id":"plugin:5c317f9f244597d8f236ecb7d8e41752","is_default":0,"created_at":1724428163},"fd98f80b-c23b-410d-9dc3-a8ce3e993ac1":{"title":"Chaty Pro","condition":"chaty-pro\/cht-icons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/chaty-pro\/js\/cht-front-script.min.js","\/chaty-pro\/js\/mailcheck.js"],"summary":"Makes the chat widget load without need for user interaction.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:b96ceb22b2d39fb4efd313c0820815ea","is_default":0,"created_at":1741370727},"a3008eca-48a0-472d-9a07-5dca76f92a44":{"title":"Click to Chat - HoliThemes \u2013 Load Widget","condition":"click-to-chat-for-whatsapp\/click-to-chat.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/click-to-chat-for-whatsapp\/"],"summary":"Allow the Click to Chat widget (free version) from HoliThemes to load without user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:a972e5b5e65713a2ac6902079728cce0","is_default":0,"created_at":1747894280},"a9bfc345-2da1-413e-bbe7-800245df5f1f":{"title":"Click to Chat Pro - HoliThemes \u2013 Load Widget","condition":"click-to-chat-pro\/click-to-chat-pro.php","exclusions":["\/click-to-chat-pro\/"],"summary":"Allow the Click to Chat widget (Pro version) by HoliThemes to load without user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:9bc0ad7f761a99e2bf2c3df3fa43dc5a","is_default":0,"created_at":1747894256},"1d866d90-5451-43ba-a4d1-75b64f9235e1":{"title":"clickskeks.at Cookiebanner","condition":"clickskeks\/index.php","exclusions":["clickskeks"],"icon_url":"","summary":"Load the cookie banner without interaction.","type":"plugin","id":"plugin:0a3a29603ebac8fe0808f64f5c8edbb2","is_default":0,"created_at":1724428285},"866ceb37-0285-4ce6-9f2a-9a99b03ad0c1":{"title":"CMSMasters Elementor Addon - Mobile Menu","condition":"cmsmasters-elementor-addon\/cmsmasters-elementor-addon.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/cmsmasters-elementor-addon\/assets\/lib\/perfect-scrollbar\/perfect-scrollbar.min.js","\/cmsmasters-elementor-addon\/assets\/lib\/basicScroll\/basicScroll.min.js","\/cmsmasters-elementor-addon\/assets\/js\/webpack.runtime.min.js","\/cmsmasters-elementor-addon\/assets\/js\/frontend.min.js","elementorCmsmastersFrontendConfig"],"summary":"Mobile menu won't open without these exclusions.\r\n\r\nUsed the same exclusions as Elementor, as that's a required plugin to use this one.","icon_url":"","type":"plugin","category":null,"id":"plugin:0e953e89f00b7ba303c8cc9c26eae84e","is_default":0,"created_at":1744056425},"bd275cce-a8ba-48a1-aa37-b9106a287075":{"title":"CommerceGurus CommerceKit - Load featured image","condition":"commercegurus-commercekit\/commercegurus-commercekit.php","exclusions":["\/wp-content\/plugins\/commercegurus-commercekit\/","cgkit_attr_gallery","commercekit_ajs"],"summary":"The featured product images don't load until user interaction with page.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:e081beb69f2208167beb93dfbe596591","is_default":0,"created_at":1758734403},"c09695cc-2387-4416-881a-c0b392188a26":{"title":"Complianz","condition":"complianz-gdpr\/complianz-gpdr.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","complianz"],"icon_url":"","type":"plugin","id":"plugin:a766f95208154cd69a3e15150a42f325","is_default":0,"created_at":1685188788},"bfb36984-e2a1-40ba-a8cd-f29b0b6f720f":{"title":"Complianz Premium","condition":"complianz-gdpr-premium\/complianz-gpdr-premium.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","complianz"],"icon_url":"","type":"plugin","id":"plugin:89d54385816dd2d5ae92cfda9d95bbfd","is_default":0,"created_at":1712163685},"b5e146fc-0b7c-4c6c-a631-8da246d3bd89":{"title":"Conerstone Builder - Fix mobile menu","condition":"cornerstone\/cornerstone.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/cornerstone\/assets\/js\/site\/cs-classic.(.*).js"],"icon_url":"","summary":"Fix the issue with the hamburger menu, when Delay JavaScript execution is enabled the menu doesn't open.","type":"plugin","id":"plugin:f8f8c81535b5e0073aa3c56b6dd3df5b","is_default":0,"created_at":1724428497},"368bc394-b74e-4b62-b359-cd967f78c6ea":{"title":"ConsentMagic Pro - Show popup without user interaction","condition":"consent-magic-pro\/consent-magic-pro.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/plugins\/consent-magic-pro\/js\/cs-public.min.js","\/wp-content\/plugins\/pixelyoursite-pro\/(.*)"],"icon_url":"","summary":"Load the consent popup without user interaction.","type":"plugin","id":"plugin:9e0701a214f49a057f17b00e39df2e7e","is_default":0,"created_at":1724428306},"7e551e3b-fbe4-4235-87a9-b476bc9e2020":{"title":"Content Egg","condition":"content-egg\/content-egg.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/content-egg\/res\/js\/morrisjs\/morris.min.js","\/content-egg\/res\/js\/morrisjs\/raphael.min.js","Morris.Area"],"icon_url":"","summary":"Show charts on page load.","type":"plugin","id":"plugin:949b1b923d51d10a2fb67a2a39d166b3","is_default":0,"created_at":1724428456},"7fbca6c5-9239-4550-a755-6f041f867a57":{"title":"Cookie Notice & Compliance for GDPR \/ CCPA","condition":"cookie-notice\/cookie-notice.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/cookie-notice\/","var cnArgs"],"icon_url":"","summary":"Loads the cookie notice on the screen.","type":"plugin","id":"plugin:213d0f883ae27aefb3a7937656bbd11e","is_default":0,"created_at":1724428382},"26722567-fe35-44b5-a5a7-fb0f3a38c3f2":{"title":"Cookiebot CMP","condition":"cookiebot\/cookiebot.php","exclusions":["consent.cookiebot.com"],"icon_url":"","summary":"Resolves issue with links not being clickable.","type":"plugin","id":"plugin:1d10ad30bbcf0fd4b26e9625a07abcfc","is_default":0,"created_at":1724428418},"1547249a-ce0c-40e4-91f6-148a5f9652d7":{"title":"CookieYes Lite - Show on page load","condition":"cookie-law-info\/cookie-law-info.php","exclusions":["\/cookie-law-info\/lite\/frontend\/js\/script.min.js"],"icon_url":"","type":"plugin","id":"plugin:29d4d4ccd077232b111581043bbd8d81","is_default":0,"created_at":1721422981},"74110e36-89e5-440d-bec3-7133da3277c2":{"title":"Coupon Referral Program","condition":"coupon-referral-program\/coupon-referral-program.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/coupon-referral-program\/","\/wp-includes\/js\/jquery\/ui\/draggable.min.js"],"icon_url":"","summary":"Fixes non-breaking dependency error.\r\n\r\nAlso requires excluding the following from JavaScript deferring:\r\n\r\n\/coupon-referral-program\/","type":"plugin","id":"plugin:edcf103293ceab711e999d419d038ca1","is_default":0,"created_at":1724428687},"408fa396-20f2-4b1f-820d-52882af281cc":{"title":"CozyStay Core - Fix background images","condition":"cozystay-core\/cozystay-core.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/cozystay-core\/assets\/scripts\/front\/parallax-bundle.min.js"],"icon_url":"","summary":"Fixes background images loading.","type":"plugin","id":"plugin:872b5eef05c1fc3b00cda07ee966938d","is_default":0,"created_at":1724428721},"919e07d3-df99-4ebd-a119-dca6c7cb4e22":{"title":"CP Live - Show Videos on Page Load","condition":"cp-live\/cp-live.php","exclusions":["\/cp-library\/build\/src\/app.js","\/feather-icons\/(.*)\/feather.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/element.min.js","\/wp-includes\/js\/dist\/escape-html.min.js"],"summary":"When Delay JavaScript Execution is enabled, videos don't show on page until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:a589057eec49aeea28adecba9585059f","is_default":0,"created_at":1744115729},"ed63e02f-d6c5-481a-bcb9-aae15f72aa21":{"title":"Crisp - Live Chat and Chatbot","condition":"crisp\/crisp.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","CRISP_RUNTIME_CONFIG","l.js"],"icon_url":"","summary":"Allow the chat icon to be displayed.","type":"plugin","id":"plugin:c3e26264dcfd25802805b4fd1a2a449c","is_default":0,"created_at":1724428819},"a8eb622b-279c-4f84-86e0-785e9497add7":{"title":"Custom Twitter Feeds pro","condition":"custom-twitter-feeds-pro\/custom-twitter-feed.php","exclusions":["\/custom-twitter-feeds-pro\/js\/ctf-scripts.min.js"],"icon_url":"","summary":"Allow Twitter feed pro to display a Twitter feed","type":"plugin","id":"plugin:6e4bf949e12f0bebfefb48f6c316102a","is_default":0,"created_at":1724428839},"1624ef15-e25b-406d-bdf9-d4b78d7a59e7":{"title":"Customer Reviews for WooCommerce Plugin","condition":"customer-reviews-woocommerce\/ivole.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/customer-reviews-woocommerce\/js\/colcade.js"],"icon_url":"","type":"plugin","id":"plugin:1f893b343e72ce55e6c9013fbda172fa","is_default":0,"created_at":1704734788},"b0614843-afed-4377-9d8d-e869221be331":{"title":"Depicter Slider","condition":"depicter\/depicter.php","exclusions":["\/depicter\/"],"icon_url":"","type":"plugin","id":"plugin:77c42a041f1c40d128f4bb3714a6d20d","is_default":0,"created_at":1713878881},"396cc03a-8946-4ee8-ab15-7e48261df79a":{"title":"Divi - Carousel Module 2.0","condition":"dg-divi-carousel","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/dg-divi-carousel\/"],"icon_url":"","type":"plugin","id":"plugin:fcd789b7d02699f89720aa5ff3627912","is_default":0,"created_at":1709126476},"c15fe3b3-0eaa-48f9-bf04-0e778b1f8c63":{"title":"Divi - Supreme","condition":"supreme-modules-for-divi\/supreme-modules-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/supreme-modules-for-divi\/"],"icon_url":"","type":"plugin","id":"plugin:b5489ae4d8b949f536d6dd2e5b0c1a95","is_default":0,"created_at":1679738701},"dd31451b-989a-4517-b02a-e2c2e2023366":{"title":"Divi Den Pro","condition":"ddpro\/ddpro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ddpro\/build\/freddie\/js\/freddieScriptPageTransition.js","\/ddpro\/build\/freddie\/js\/freddieScriptsHeaders.js","\/ddpro\/build\/freddie\/js\/freddieScriptsContents.js","\/ddpro\/build\/freddie\/js\/gsap\/gsap.min.js"],"icon_url":"","summary":"Fires animations and content created with Divi Den Pro.","type":"plugin","id":"plugin:5caed322df984bbfd3ecb506cf12b688","is_default":0,"created_at":1724429225},"2b006370-cc90-42c1-9656-a30fbfbc91c6":{"title":"Divi Mobile","condition":"divi-mobile\/divi-mobile.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","divi-menu","dm_nav"],"icon_url":"","summary":"Avoid double click when using the mobile menu.","type":"plugin","id":"plugin:402d9b241b04934dd30f32e7ba490e63","is_default":0,"created_at":1724429325},"666bbed9-7ce3-457c-ad6e-b5e056d05010":{"title":"Divi Overlays","condition":"divi-overlays\/divi-overlays.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","var DIVI","\/divi-overlays\/"],"icon_url":"","summary":"Enable modals to be displayed on screen","type":"plugin","id":"plugin:1c828c93d87298d2a27c76e13d0880ba","is_default":0,"created_at":1724429242},"42a404af-7792-44be-9baa-565dc3baf25d":{"title":"Divi Pixel","condition":"divi-pixel\/divi-pixel.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/divi-pixel\/dist\/public\/js\/hamburger.min.js","\/divi-pixel\/dist\/vendor\/js\/easypiechart.js"],"icon_url":"","summary":"Page Preloader","type":"plugin","id":"plugin:dd2494945a487a6cc74d3ab1b2137ccb","is_default":0,"created_at":1724429347},"85f5c099-c481-4c38-bbb9-8b76113bdfd5":{"title":"Divi Supreme Pro","condition":"supreme-modules-pro-for-divi\/supreme-modules-pro-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","elm.style.display","\/supreme-modules-pro-for-divi\/includes\/modules\/ImageCarousel\/frontend.min.js","\/supreme-modules-pro-for-divi\/public\/js\/swiper-bundle.min.js"],"icon_url":"","summary":"Avoid white screen before user interaction","type":"plugin","id":"plugin:3d5f0ae7751702fd1bb490fcf991a334","is_default":0,"created_at":1724429378},"0b78d762-c7be-45de-9aae-0c5078ec0619":{"id":"plugin:b5fc0101608d0b0627268dc49e3e1f8f","title":"Divi Toolbox","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","jQuery('.preloader')","\/divi-toolbox\/assets\/js\/toolbox-scripts.js"],"is_default":0,"condition":"divi-toolbox\/divi-toolbox.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"fe4f05d8-f90a-4547-9717-1b51a2dc8c5f":{"title":"Divi Torque - Carousel Images","condition":"addons-for-divi\/addons-for-divi.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/addons-for-divi\/assets\/libs\/slick\/slick.min.js","\/plugins\/addons-for-divi\/assets\/libs\/magnific-popup\/magnific-popup.js","\/plugins\/addons-for-divi\/assets\/js\/frontend.js","\/plugins\/addons-for-divi\/assets\/libs\/counter-up\/counter-up.min.js","\/themes\/Divi\/js\/scripts.min.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/jquery.mobile.js","cdn.userway.org\/widget.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, carousel images have incorrect dimensions until user interaction with page.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/213","type":"plugin","category":"analytics","id":"plugin:0c5e37ad7075d749ed195f856431d4e7","is_default":0,"created_at":1751983104},"9714d442-1c18-4b5d-a840-9eae2054f047":{"title":"Divi Torque - Gallery Images","condition":"addons-for-divi\/addons-for-divi.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/plugins\/diviflash\/public\/js\/lib\/packery.pkgd.js","\/wp-content\/plugins\/diviflash\/public\/js\/lib\/imagesloaded.pkgd.min.js","\/wp-content\/plugins\/diviflash\/public\/js\/df-packery.js","\/themes\/Divi\/js\/scripts.min.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/jquery.mobile.js","cdn.userway.org\/widget.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the gallery images do not show until user interaction with page.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/214","type":"plugin","category":"analytics","id":"plugin:a6b73cee8978dfce1c881b8301445741","is_default":0,"created_at":1751983856},"aa07b744-a9cc-4de2-8caf-c203da1a8517":{"title":"DiviMenus - Mobile Menu","condition":"divimenus\/divimenus.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/divimenus\/scripts\/frontend-bundle.min.js"],"summary":"When Delay JavaScript Execution is enabled, the mobile menu loads as open until interaction with the page.","icon_url":"","type":"plugin","category":null,"id":"plugin:5041c45e48cd10836174e158078bdce6","is_default":0,"created_at":1745522929},"31a34440-1383-40c4-8920-effcf99f2165":{"title":"Dracula Dark Mode","condition":"dracula-dark-mode-premium\/plugin.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/plugins\/dracula-dark-mode-premium\/assets\/js\/dark-mode.js","\/wp-content\/plugins\/dracula-dark-mode-premium\/assets\/js\/frontend.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","draculaDarkMode"],"icon_url":"","summary":"Show dark mode toggle button and apply styles without need for user interaction with page.","type":"plugin","id":"plugin:5e8a5d8d3830136d84d0f3676f1bf5a5","is_default":0,"created_at":1724429514},"8baba0f8-4449-47d8-a87d-9b6a116e7684":{"title":"Dynamic Pricing & Discounts Lite for WooCommerce","condition":"woo-dynamic-pricing-discounts-lite\/dynamic-pricing-discounts-lite-for-woocommerce.php","exclusions":["\/woo-dynamic-pricing-discounts-lite\/assets\/OwlCarousel\/dist\/owl.carousel.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:185062bf08db42515488e1853d1f4917","is_default":0,"created_at":1677857247},"0fa129f2-5869-4db7-9bf0-69e4b3549ee2":{"id":"plugin:27478327aa44075a86176fad95640d76","title":"Dynamic Product Gallery for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-dynamic-gallery\/","a3revWCDynamicGallery"],"is_default":0,"condition":"woocommerce-dynamic-gallery\/wc_dynamic_gallery_woocommerce.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"9958c6be-2f67-4791-95c3-a7ad96d599c0":{"title":"Dynamic Product Gallery Premium for WooCommerce","condition":"woocommerce-dynamic-gallery-pro\/wc_dynamic_gallery_woocommerce.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/woocommerce-dynamic-gallery-pro\/assets\/js\/mygallery\/jquery.a3-dgallery.js","settings_defaults_","a3revWCDynamicGallery"],"icon_url":"","summary":"Load the gallery content without user interaction.","type":"plugin","id":"plugin:11dc02a76019f00422f4ac85f47f5135","is_default":0,"created_at":1724429541},"ce26ed21-1be5-481f-80d4-31edfac6d890":{"title":"Dynamic.ooo - Dynamic Content for Elementor","condition":"dynamic-content-for-elementor\/dynamic-content-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/dynamic-content-for-elementor\/assets\/","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","summary":"Show dynamic content","type":"plugin","id":"plugin:d2bd5b348abe016bdc722acce7755062","is_default":0,"created_at":1724429557},"6a3161a6-1a6f-457a-a9ee-54b376981927":{"title":"Easy Table of Contents","condition":"easy-table-of-contents\/easy-table-of-contents.php","exclusions":["\/easy-table-of-contents\/assets\/js\/front.min.js"],"icon_url":"","summary":"Avoid the Easy Table of Contents to briefly open when the page loads.","type":"plugin","id":"plugin:ee1dec033c6481a77fe88de5bef1a02d","is_default":0,"created_at":1724429629},"25a534a0-2c1f-4cf4-9e19-7941bc032b3a":{"title":"Ecwid Ecommerce Shopping Cart","condition":"ecwid-shopping-cart\/ecwid-shopping-cart.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","app.ecwid.com\/script.js","\/ecwid-shopping-cart\/js\/frontend.js","\/ecwid-shopping-cart\/js\/static-page.js","ecwidParamswindow.ec","jQuery.mobile","xSearch","xCategoriesV2","xProductBrowser","Ecwid.init"],"icon_url":"","type":"plugin","id":"plugin:41c8f5f0ab00cb39654aedd783d194e0","is_default":0,"created_at":1704734846},"a0d681db-991a-4220-8f05-c54a4857aa42":{"title":"Element Pack Pro","condition":"bdthemes-element-pack\/bdthemes-element-pack.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/bdthemes-element-pack\/assets\/js\/modules\/ep-static-carousel.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-custom-carousel.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-slideshow.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-product-carousel.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-stacker.min.js","\/bdthemes-element-pack\/assets\/js\/bdt-uikit.min.js","\/bdthemes-element-pack\/assets\/js\/common\/helper.min.js","\/bdthemes-element-pack\/assets\/vendor\/js\/ScrollTrigger.min.js","\/bdthemes-element-pack\/assets\/vendor\/js\/gsap.min.js"],"icon_url":"","summary":"Fix issues with gallery and product carousels.","type":"plugin","id":"plugin:ced76c4da718a667537dc6c9d5e0244d","is_default":0,"created_at":1724429901},"40464325-5bae-4a20-bc97-553499e09a73":{"title":"Elementor","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:1d15783218a3137bec4ee8df5353e218","is_default":0,"created_at":1694425872},"ac86b64c-c80a-4053-894d-6caa8b4fdce8":{"title":"Elementor Loop Carrousel","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:0eb8d0bbd1c7ca05ac133ea634f676b7","is_default":0,"created_at":1694442056},"a8fc9fd1-f6d3-41eb-abe9-ef176de6d7e2":{"title":"Elementor - Lazy Load Background Images","condition":"elementor\/elementor.php","exclusions":["lazyloadRunObserver"],"icon_url":"","summary":"Start background images so they load immediately","type":"plugin","id":"plugin:bf248cb2876558452a566c5dd89262b8","is_default":0,"created_at":1724430300},"1948aff5-7850-4979-91fa-0ce181484508":{"title":"Elementor Custom Skin","condition":"ele-custom-skin\/ele-custom-skin.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ele-custom-skin(.*)\/assets\/js\/"],"icon_url":"","summary":"Fixes console error when Elementor scripts are excluded","type":"plugin","id":"plugin:de658ae6c2d05a5a4a947efecf5e0c16","is_default":0,"created_at":1724429916},"25708299-c596-4416-8ad8-740aee0f2752":{"title":"Elementor Pro","condition":"elementor-pro\/elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js"],"icon_url":"","summary":"Show elements, galleries, and start animations. \r\n\r\nWhen User Cache is active the following exclusions will resolve console errors:\r\n\r\n\/wp-includes\/js\/underscore.min.js\r\n\/wp-includes\/js\/jquery\/ui\/core.min.js\r\n\/wp-includes\/js\/backbone.min.js\r\nelementorAdminBarConfig\r\nelementorCommonConfig\r\nelementorWebCliConfig\r\nelementorDevToolsConfig","type":"plugin","id":"plugin:030ad23e3851ed7adfa7b9b6c13cf5a6","is_default":0,"created_at":1724430189},"f34dd874-4b34-41e6-a31c-ece3c1efbffc":{"title":"Elementor Pro - SmartMenus","condition":"elementor-pro\/elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/assets\/lib\/smartmenus\/jquery.smartmenus.min.js","\/elementor-pro\/assets\/js\/preloaded-elements-handlers.min.js"],"icon_url":"","summary":"Fixes the mobile menu","type":"plugin","id":"plugin:305581ad4294a30eeb1247982f626005","is_default":0,"created_at":1724430219},"111cc8b2-0be9-438b-9aa3-7f1e301a5697":{"id":"plugin:5ae9f5d99224d5ebc7d0c0bbf5b99787","title":"Elementor Pro - User Cache","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/backbone.min.js","elementorAdminBarConfig","elementorCommonConfig","elementorWebCliConfig","elementorDevToolsConfig"],"is_default":0,"condition":"elementor-pro\/elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c1713bf8-e0c3-4cb5-8b3f-841b06aa87ed":{"title":"ElementsKit Lite - Megamenu","condition":"elementskit-lite\/elementskit-lite.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/elementskit(.*)\/"],"icon_url":"","type":"plugin","id":"plugin:b91fed2fc4478dbb7067742c1ee4691b","is_default":0,"created_at":1683270249},"236c2a9e-9668-4a80-9b66-d2222d812dd6":{"title":"Elfsight Slider CC","condition":"elfsight-slider-cc\/elfsight-slider-cc.php","exclusions":["\/elfsight-slider-cc\/assets\/elfsight-slider.js"],"icon_url":"","summary":"Load slider on page loading","type":"plugin","id":"plugin:b0e259c84df5e120d6113dd0eef9da4b","is_default":0,"created_at":1724430233},"706ff35d-8e33-4b04-a986-346faff704e9":{"title":"Essential Addons for Elementor","condition":"essential-addons-for-elementor-lite\/essential_adons_elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"icon_url":"","summary":"Start the carousel on page load","type":"plugin","id":"plugin:417192424139d89fb2a5b1ee1f2b9613","is_default":0,"created_at":1724430272},"b38556dc-2bc4-430f-9c55-7191cf7773db":{"title":"Essential Addons for Elementor Pro","condition":"essential-addons-elementor\/essential_adons_elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"icon_url":"","summary":"Start the carousel on page load","type":"plugin","id":"plugin:057757d0593ad9d2dc58124f0077a5df","is_default":0,"created_at":1724430280},"719b988f-0d60-40c2-ba46-88f943119cb1":{"title":"Essential Grid","condition":"essential-grid\/essential-grid.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/essential-grid\/","lightboxOptions"],"icon_url":"","summary":"Load grid without interaction.","type":"plugin","id":"plugin:c8e6c490f6438f566ade600c33531a85","is_default":0,"created_at":1724430960},"47d3d2ab-160d-4b07-ac25-8250b9e6a951":{"title":"EventON Lite","condition":"eventon-lite\/eventon.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/eventon-lite\/assets\/js\/(.*)"],"icon_url":"","summary":"Load the events calendar on page load","type":"plugin","id":"plugin:dafd19fa48a1fef890dc4348052fcb75","is_default":0,"created_at":1724430313},"219968d7-cf1f-4ee0-917a-db35dcc93a3e":{"id":"plugin:49ff465628fc3cb6d7f23ff81d9b8339","title":"FacetWP","type":"plugin","icon":"","exclusions":["\/facetwp\/assets\/js\/dist\/front.min.js","window.FWP_"],"is_default":0,"condition":"facetwp\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"acce5701-5917-48d5-83ab-3e626aa420c5":{"id":"plugin:78a1c88a56fa957c802074b6418c6fac","title":"FacetWP - Flyout menu","type":"plugin","icon":"","exclusions":["\/facetwp-flyout\/assets\/js\/front.js"],"is_default":0,"condition":"facetwp-flyout\/facetwp-flyout.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"081461cf-dbd0-42f3-9557-10cdc16cf145":{"title":"FiboFilters Premium","condition":"fibofilters-pro\/fibofilters.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/fibofilters-pro\/build\/front-pro\/front.js"],"icon_url":"","summary":"Display filter without need for user interaction.","type":"plugin","id":"plugin:d9f62725f1470d35c3f220645bc2e473","is_default":0,"created_at":1724431277},"f2a5b95f-1a22-46d2-8b72-42a53e46ae3f":{"title":"FiboSearch - Ajax Search for WooCommerce","condition":"ajax-search-for-woocommerce\/ajax-search-for-woocommerce.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.js","\/wp-includes\/js\/jquery\/jquery-migrate.js","\/ajax-search-for-woocommerce-premium\/assets\/js\/search.js"],"icon_url":"","summary":"Avoid search modals moving to the top when adding keyword in the input field.","type":"plugin","id":"plugin:5d7555892a3a9968fde3fa3a335fc3d8","is_default":0,"created_at":1724431295},"7d1404e9-be76-449c-87aa-919557abe82d":{"title":"FlexBlock","condition":"flo-flex-builder\/flo-flex-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/flo-flex-builder\/dist\/flex-public.min.js","flexDebug"],"icon_url":"","summary":"Fire animations and show images on pageload.","type":"plugin","id":"plugin:ad46179e8b0584abaf52056b846da227","is_default":0,"created_at":1724431336},"b9c6a2dc-b226-4e2c-b85e-29ee55b8f751":{"title":"Fluent Forms","condition":"fluentform\/fluentform.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/fluentform\/public\/js\/(.*).js","\/fluentformpro\/public\/js\/(.*).js"],"icon_url":"","summary":"Fixes files upload field.\r\n\r\n*Requires exlcuding jQuery from JavaScript deferring as well","type":"plugin","id":"plugin:567a2b15db30ef6bd4904e4317139aac","is_default":0,"created_at":1724431366},"10874f8a-2855-4e80-bc46-e484589b76a8":{"title":"Flying Images","condition":"nazy-load\/flying-images.php","exclusions":["flyingImages"],"icon_url":"","summary":"Fixes images not being loaded until there is user interaction","type":"plugin","id":"plugin:e78c153103f698b2b34892332d6b3b62","is_default":0,"created_at":1724431386},"53958499-dacd-41d6-93bc-1534fe7d9eda":{"title":"FooGallery Premium","condition":"foogallery-premium\/foogallery.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/foobox-image-lightbox\/free\/js\/foobox.free.min.js","\/plugins\/foogallery-premium\/pro\/extensions\/default-templates\/shared\/js\/foogallery.min.js"],"icon_url":"","summary":"Prevents delay in the loading of product images.","type":"plugin","id":"plugin:5a0e40a6c5783856893b803189de1404","is_default":0,"created_at":1724431261},"7870d704-2024-4622-838c-fad37d5c6753":{"title":"Formidable Forms","condition":"formidable\/formidable.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","frmSigs","\/formidable-signature\/js\/frm.signature.min.js"],"icon_url":"","summary":"Prevent the delay of the function and the file that processes the signature.","type":"plugin","id":"plugin:ebb5efb57b19ae60e734e456ca2df3f8","is_default":0,"created_at":1724431311},"3f24f9b3-e59e-400f-a784-999f93f60fab":{"title":"Forminator","condition":"forminator\/forminator.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","forminatorFront","\/forminator\/build\/front\/front.multi.min.js","\/forminator\/assets\/js\/library\/jquery.validate.min.js","\/forminator\/assets\/forminator-ui\/js\/forminator-form.min.js","\/forminator\/assets\/forminator-ui\/js\/select2.full.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js","\/forminator\/assets\/js\/library\/intlTelInput.min.js"],"icon_url":"","summary":"Display form without interaction","type":"plugin","category":"analytics","id":"plugin:0b08523445b8869a67ca40e777704692","is_default":0,"created_at":1769789399},"cef612ad-2a33-4e0c-b2d2-0831bb35e682":{"title":"Funnelforms Free","condition":"funnelforms-free\/Funnelforms-free.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/funnelforms-free\/res\/frontend\/scripts\/frontend.js"],"summary":"When Delay JavaScript Execution is enabled, the Form doesn\u2019t load.","icon_url":"","type":"plugin","category":null,"id":"plugin:2cc4ab9bdadb915b68d466b87f5f2934","is_default":0,"created_at":1750261265},"2e1a34f6-21cd-46d1-af05-8ba575170f44":{"title":"Gallery Slider for WooCommerce - Pro - Fix Product Gallery","condition":"woo-gallery-slider-pro\/woo-gallery-slider-pro.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/woo-gallery-slider-pro\/public\/js\/woo-gallery-slider-public.min.js","\/woo-gallery-slider-pro\/public\/js\/swiper-bundle.min.js","\/woo-gallery-slider-pro\/public\/js\/zoom.min.js","\/woo-gallery-slider-pro\/public\/js\/jquery.fancybox.min.js","\/woo-gallery-slider-pro\/public\/js\/video.min.js"],"icon_url":"","summary":"Makes the gallery to load at page load","type":"plugin","id":"plugin:04761f78cbc0a1ed05c65d7e20ddda5b","is_default":0,"created_at":1732823624},"3a600ded-3454-48fb-9811-46afa2ab3c05":{"title":"GDPR Cookie Compliance","condition":"gdpr-cookie-compliance\/moove-gdpr.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/gdpr-cookie-compliance\/dist\/scripts\/main.js"],"icon_url":"","summary":"Show the consent banner on page load.","type":"plugin","id":"plugin:5759bf0d47ac3457485314b381a9b528","is_default":0,"created_at":1724431440},"e21aaa5e-7354-471d-ab86-85f99f48830c":{"title":"GDPR Cookie Consent","condition":"webtoffee-gdpr-cookie-consent\/cookie-law-info.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/public\/js\/cookie-law-info-public.js","Cli_Data"],"icon_url":"","summary":"Show the consent banner on page load.","type":"plugin","id":"plugin:ffb40036ab0583218561de7c28c6bd9b","is_default":0,"created_at":1724431421},"1f8bdec1-9c4c-4080-8ac0-5f8b49967047":{"title":"GetPaid - Fix console errors","condition":"invoicing\/invoicing.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/invoicing\/vendor\/ayecode\/wp-ayecode-ui\/assets\/js\/select2.min.js","\/invoicing\/vendor\/ayecode\/wp-ayecode-ui\/assets\/js\/bootstrap.bundle.min.js"],"summary":"It fixes some errors with jQuery in the browser's console.","icon_url":"","type":"plugin","id":"plugin:6756935a144cf0a74b252db5f8229ee9","is_default":0,"created_at":1728404861},"c11ca4ea-1a23-49ee-9a6b-1e549de50ea2":{"title":"Getwid - Gutenberg Blocks","condition":"getwid\/getwid.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"icon_url":"","summary":"Fixes tabs when jQuery is excluded from Delay JavaScript Execution.","type":"plugin","id":"plugin:3877953c5ec1e66db92ad844ae8ebafc","is_default":0,"created_at":1724431639},"79b33eb9-bc92-4d8a-afd8-1c61e70bed8f":{"title":"GiveWP","condition":"give\/give.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/give\/assets\/dist\/js\/give.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","summary":"Closes the preloader.","type":"plugin","id":"plugin:0fb3af06fc5c710a670220b054c292c5","is_default":0,"created_at":1724431653},"3773bb33-b168-4f68-9963-512da24ac4da":{"title":"GoodLayers Core","condition":"goodlayers-core\/goodlayers-core.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/goodlayers-core\/plugins\/script.js","\/goodlayers-core\/include\/js\/page-builder.js"],"icon_url":"","type":"plugin","id":"plugin:5f124509a56ca2e0644246919ec70434","is_default":0,"created_at":1704734904},"2adabe9b-6e03-4a67-959f-492813d40f69":{"title":"Google Tag Manager for WooCommerce PRO","condition":"gtm-ecommerce-woo-pro\/gtm-ecommerce-woo-pro.php","exclusions":["\/gtm-ecommerce-woo-pro\/assets\/gtm-ecommerce-woo-pro.js"],"icon_url":"","summary":"Fire tracker on page load.","type":"plugin","id":"plugin:e54fd4313007b6fedf8ab4df0e05277a","is_default":0,"created_at":1724431759},"7bf261ac-89d4-492f-8a3d-1c5809b9579a":{"title":"Gravity Forms","condition":"gravityforms\/gravityforms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/gravityforms\/","gform","recaptcha","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/plupload\/plupload.min.js","\/wp-includes\/js\/plupload\/moxie.min.js"],"icon_url":"","type":"plugin","id":"plugin:7a1c1606d094f6bff83c0ee155908367","is_default":0,"created_at":1694457903},"fbaf4a19-f675-441a-b75c-7fd748a59827":{"title":"Gravity Forms Page Transitions","condition":"gp-page-transitions\/gp-page-transitions.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/gp-page-transitions\/js\/"],"icon_url":"","summary":"To load the form without interaction - Gravity Forms one-click exclusion should also be checked.","type":"plugin","id":"plugin:53ef8d0ee1f9fdf0bbf87676e449eef5","is_default":0,"created_at":1724432081},"12340193-5c35-4b0d-b0bc-bea690cf1cae":{"title":"Green Forms","condition":"green-forms\/green-forms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","leform.min.js","leform_customjs_handlers","leform_ajax_url"],"icon_url":"","summary":"Load forms without any delay","type":"plugin","id":"plugin:2f3112dd98c39aeb6bde618c9026a29f","is_default":0,"created_at":1724432097},"4d20b427-47cf-4cdf-91c7-ff53602d3b2a":{"id":"plugin:0eb769dddc58f998e913345841b1d0b3","title":"GTM4WP","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","dataLayer"],"is_default":0,"condition":"duracelltomi-google-tag-manager\/duracelltomi-google-tag-manager-for-wordpress.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a2b3c237-728c-49d6-882a-e3885444e9b4":{"title":"GTranslate","condition":"gtranslate\/gtranslate.php","exclusions":["translate.google.com","googleTranslateElementInit"],"icon_url":"","summary":"To enable immediate translation on the page without user interaction","type":"plugin","id":"plugin:3b085ccda851ccf129d9506462f0cd65","is_default":0,"created_at":1724432146},"79dfc946-6b96-4b6d-bcaf-8cae6330581a":{"title":"GTranslate - Show language switcher on page load","condition":"gtranslate\/gtranslate.php","exclusions":["window.gtranslateSettings","\/gtranslate\/js\/dwf.js","\/gtranslate\/js\/flags.js"],"icon_url":"","summary":"To show language switcher on page load.","type":"plugin","category":"analytics","id":"plugin:0aedfaa0f543c47c4b0fcf57307c6691","is_default":0,"created_at":1737550549},"40cd9336-e73f-4a61-a7f6-27ec1ca6892c":{"title":"HBook","condition":"hbook\/hbook.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/hbook\/","hb_booking_form_data","hb_max_date"],"icon_url":"","summary":"Render the form on page load.","type":"plugin","id":"plugin:e1f17c1eac230219e6fec3ac07406a0d","is_default":0,"created_at":1724432162},"52cec6ac-f2a4-415f-83f4-ca0db789401d":{"title":"hCaptcha for WP","condition":"hcaptcha-for-forms-and-more\/hcaptcha.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","hcaptcha"],"summary":"Load hcaptcha without error on page load","icon_url":"","type":"plugin","category":null,"id":"plugin:19677c6ace86eadfd1269341071f3481","is_default":0,"created_at":1770201198},"192224c7-df72-4e3d-8f13-3206ac5b2e90":{"title":"Helper - OpenAI Chatbot for WordPress","condition":"\/helper\/index.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/helper\/js\/helper.min.js","mdpHelper"],"icon_url":"","summary":"Allow for chatbot icon load without user interaction.","type":"plugin","id":"plugin:07311d992a8a9d6af91e4766d2cb9ac9","is_default":0,"created_at":1724433592},"99cfbb2e-5678-42c2-928f-5cb09d7e43da":{"title":"HUSKY - Products Filter for WooCommerce","condition":"woocommerce-products-filter\/index.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-products-filter\/(.*)","woof"],"icon_url":"","summary":"Avoid console error (no impact on the functionality of WOOF)","type":"plugin","id":"plugin:269c5766fba124a838ac012a4b5a1a13","is_default":0,"created_at":1724432177},"b98640e1-c483-4032-99fe-4fa96093d261":{"title":"Hustle","condition":"wordpress-popup\/popover.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/underscore.min.js","\/wp-content\/plugins\/wordpress-popup\/"],"summary":"When Delay JavaScript Execution is enabled, the Popup doesn't load.","icon_url":"","type":"plugin","category":null,"id":"plugin:d9fc141690ff6b022b7f15b533daac7f","is_default":0,"created_at":1759750548},"3a964eac-4aeb-49a7-9fd6-4c31b2645dee":{"id":"plugin:d457acfec0f86aac6733f1446f4fc94f","title":"Instagram Feed Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/instagram-feed-pro\/js\/sbi-scripts.min.js","sb_instagram_js_options"],"is_default":0,"condition":"instagram-feed-pro\/instagram-feed.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8f9f4788-1b8d-468b-b291-1fcbd48618b9":{"id":"plugin:513b0c0ec8e12130af9b4bbbb17d7275","title":"Interactive Geo Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/interactive-geo-maps-premium\/assets\/public\/map-service\/app.min.js","\/interactive-geo-maps\/assets\/public\/map-service\/app.js","iMapsData","cdn.amcharts.com\/lib\/"],"is_default":0,"condition":"interactive-geo-maps\/interactive-geo-maps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cf650ca3-afa0-4a13-9e4f-f7cca19abac6":{"title":"Ivory Search","condition":"add-search-to-menu\/add-search-to-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/add-search-to-menu\/public\/js\/ivory-search.min.js"],"icon_url":"","type":"plugin","id":"plugin:7430e9d2c985ae0a3339a7b7e1acc318","is_default":0,"created_at":1677852711},"17a5dd54-1f5e-4d57-a56d-a8a970651954":{"title":"JetBlocks","condition":"jet-blocks\/jet-blocks.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-blocks\/assets\/js\/jet-blocks.min.js"],"icon_url":"","summary":"Enable dropdown on hover on the Cart and enable Mobile Sticky Header","type":"plugin","id":"plugin:1c8a1e1ba89a601f88654f094139b469","is_default":0,"created_at":1724432217},"b6f78c90-9823-459a-8dc1-1257e5f0d4e3":{"title":"JetBlog","condition":"jet-blog\/jet-blog.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/","ElementorProFrontendConfig","elementorFrontendConfig","hasJetBlogPlaylist"],"icon_url":"","summary":"News ticker to work on pageload (in addition to any other Jet exclusions).","type":"plugin","id":"plugin:dac9ec782180f33d0fcc7c4e0e569b9d","is_default":0,"created_at":1724432242},"e17173d8-6ef8-4e27-ba0f-379c9aea7eda":{"title":"JetElements","condition":"jet-elements\/jet-elements.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jet-elements\/","hasJetBlogPlaylist","jetElements","\/wp-includes\/js\/jquery\/ui\/"],"icon_url":"","summary":"Load JetElements on page load.","type":"plugin","id":"plugin:0fe8895d1da5247b73a5d0b482df4ac4","is_default":0,"created_at":1724432253},"cfd77501-9c9e-4f11-b994-0178a592fc08":{"title":"JetEngine","condition":"jet-engine\/jet-engine.php","exclusions":["\/jet-engine\/"],"icon_url":"","type":"plugin","id":"plugin:bc998e71546860c8c7f70c45a6c18972","is_default":0,"created_at":1686208296},"f320c661-4a2b-4299-bada-110f9e931e3c":{"title":"JetFormBuilder - Load without interaction","condition":"jetformbuilder\/jet-form-builder.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jetformbuilder\/","var JetFormBuilderSettings","\/wp-includes\/js\/dist\/i18n.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/jet-plugins\/jet-plugins.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"summary":"The form is loaded without interaction, and styles are applied immediately.","icon_url":"","type":"plugin","id":"plugin:5ad00a39ed79f888daca19429bc59989","is_default":0,"created_at":1730300985},"36fed829-a2d9-41b5-94f6-2c3b9f07a94e":{"title":"JetMenu","condition":"jet-menu\/jet-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/assets\/js\/lib\/slick\/slick.min.js","\/jet-elements\/","\/jet-menu\/","elementorFrontendConfig","ElementorProFrontendConfig","hasJetBlogPlaylist","JetEngineSettings","jetMenuPublicSettings","\/jet-reviews\/assets\/js\/lib\/vue.min.js"],"icon_url":"","summary":"Mobile menu to show on page load.","type":"plugin","id":"plugin:433a3173f2d06f7d02c7b91c06ed215d","is_default":0,"created_at":1724432268},"580cfed7-f034-4e39-bc7a-cdd01923ce87":{"title":"JetPopup","condition":"jet-popup\/jet-popup.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jet-popup\/assets\/js\/lib\/anime-js\/anime.min.js","\/jet-popup\/assets\/js\/jet-popup-frontend.js","\/jet-woo-builder\/","var jetPopupData","JetEngine.popupData"],"icon_url":"","summary":"To show the pop up","type":"plugin","category":"analytics","id":"plugin:51714cfdb43f231a1c93e7cffb1007ab","is_default":0,"created_at":1755872236},"d9cd2730-12e2-42d7-a082-6f0efcd466cc":{"title":"JetProductGallery","condition":"jet-woo-product-gallery\/jet-woo-product-gallery.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-woo-product-gallery\/assets\/lib\/swiper\/swiper.min.js","\/jet-woo-product-gallery\/assets\/js\/jet-woo-product-gallery.min.js","JetSwiper"],"icon_url":"","summary":"To avoid issues with the product gallery on the product page","type":"plugin","category":"analytics","id":"plugin:df3bc4b6a8a9f28a5ba24cb7496bbc72","is_default":0,"created_at":1740662940},"544aa37b-4d52-4182-99e8-abe23585da14":{"title":"JetReviews","condition":"jet-reviews\/jet-reviews.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-reviews\/assets\/js\/jet-reviews-frontend.js","\/jet-reviews\/assets\/js\/lib\/vue.min.js","jetReviewsWidget"],"icon_url":"","summary":"To show the reviews on the product page","type":"plugin","id":"plugin:5921fc95965ac7fccb7296957bd9abff","is_default":0,"created_at":1724432349},"963c7804-eede-4570-bd63-67066588b758":{"title":"JetSearch - Search results popup","condition":"jet-search\/jet-search.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jet-search\/assets\/lib\/chosen\/chosen.jquery.min.js","\/jet-search\/assets\/js\/jet-search.js","\/jet-search\/assets\/lib\/jet-plugins\/jet-plugins.js"],"icon_url":"","summary":"To display the list of results when using the search box.","type":"plugin","id":"plugin:13e8760379022187de982df2226a5be4","is_default":0,"created_at":1724432367},"a8460089-34b4-4f8f-8694-5d92fa48aa82":{"title":"JetSmartFilters","condition":"jet-smart-filters\/jet-smart-filters.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jet-smart-filters\/assets\/js\/public.js","jet-smart-filters-js-extra","\/jet-engine\/assets\/lib\/jet-plugins\/jet-plugins.js","jetOffcanvasInitialized"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the right filters doesn't load until user interaction.","type":"plugin","category":"analytics","id":"plugin:0cd63a514de1f1acb88e2bde65c4bc8d","is_default":0,"created_at":1756996542},"fe3c4915-6f8b-49b7-aa9c-c97b264d9f12":{"title":"JetSticky","condition":"jetsticky-for-elementor\/jetsticky-for-elementor.php","exclusions":["\/jetsticky-for-elementor\/"],"icon_url":"","summary":"Allows sticky menu and sidebar to be displayed","type":"plugin","id":"plugin:a346b60514ef52afeffc6e2ef2793da3","is_default":0,"created_at":1724432399},"853479dc-fff5-47cf-9a60-bf9b00f71fc4":{"title":"JetTabs for Elementor","condition":"jet-tabs\/jet-tabs.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/wp-content\/plugins\/jet-tabs\/assets\/js\/jet-tabs-frontend.min.js"],"icon_url":"","summary":"To make the tab functionality work correctly.","type":"plugin","id":"plugin:d887a6ffea25d759e8aecdb6b78917f7","is_default":0,"created_at":1724432416},"b7f89562-230c-4f63-8360-7aad6df31e02":{"title":"JetTricks","condition":"jet-tricks\/jet-tricks.php","exclusions":["\/jet-tricks\/"],"icon_url":"","summary":"To display animations.","type":"plugin","id":"plugin:829272546b040d5aaeeeaf976b6cd4ec","is_default":0,"created_at":1724432431},"90451e2a-553a-4496-9fa4-cffedbe69d43":{"title":"JetWoo Widgets For Elementor","condition":"jet-woo-builder\/jet-woo-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jetwoo-widgets-for-elementor\/assets\/js\/jet-woo-widgets.js","\/jet-woo-builder\/assets\/js\/jet-woo-builder.min.js","\/jet-woo-builder\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Load JetWoo carousel on page load.","type":"plugin","id":"plugin:f44f3dbd09149f57db370e4132b057db","is_default":0,"created_at":1724432447},"944718c2-48c6-4f53-aaa2-460d07e033cc":{"title":"JetWooBuilder","condition":"jet-woo-builder\/jet-woo-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/elementor-pro\/","\/elementor\/","elementorFrontendConfig","ElementorProFrontendConfig","JetEngineSettings","\/jet-woo-builder\/","\/jet-woo-builder-custom-quantity-selectors-main\/assets\/js\/main.js"],"icon_url":"","summary":"Add quantity buttons to add to cart.","type":"plugin","id":"plugin:ed318a971f8a047bed5b02ad546a9c18","is_default":0,"created_at":1724432462},"b7807939-54f8-4d5c-8363-a42a154d9592":{"title":"Joinchat","condition":"creame-whatsapp-me\/joinchat.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/creame-whatsapp-me\/public\/js\/joinchat.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the icon to open new chat does not display for mobile unless we apply these exclusions.","type":"plugin","id":"plugin:1c3ec728d37052f3a3055d415618342f","is_default":0,"created_at":1727103514},"8cdeadfc-f686-4c58-bf01-8d6ad43dfef8":{"title":"Kadence Blocks Pro - Load Content","condition":"kadence-blocks-pro\/kadence-blocks-pro.php","exclusions":["\/plugins\/kadence-blocks-pro\/includes\/assets\/js\/aos.min.js"],"summary":"When Delay JavaScript Execution is enabled, the page content doesn't load until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:ea96ffb0858920541f6a6144f7d2289f","is_default":0,"created_at":1754052401},"46d50db6-61ae-4703-aeaa-39f12a46f872":{"title":"Kadence Slider","condition":"kadence-slider\/kadence-slider.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/kadence-slider\/js\/min\/ksp-min.js"],"summary":"When Delay JavaScript Execution is enabled, the slides don't show until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:6a6b1a4de6dc21770d6d044b7dd7a2e4","is_default":0,"created_at":1759413099},"f5b62f59-1dae-4cdf-ac3f-f5e846fc9918":{"id":"plugin:9562e253cd4ac2b1e1f70e32cb4e32dc","title":"Layer Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.utils.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.kreaturamedia.jquery.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.transitions.js","initLayerSlider"],"is_default":0,"condition":"LayerSlider\/layerslider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e2be718d-83a2-4fa0-bc98-f0df52be3dc1":{"title":"LoftLoader Pro","condition":"loftloader-pro\/loftloader-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","loftloader.min.js"],"icon_url":"","summary":"Prevent the page from getting stuck in the loader and load the page content without user interaction.","type":"plugin","id":"plugin:1425e2735306796fe1539d9184a77e10","is_default":0,"created_at":1724432664},"cfa18552-656e-453c-9e14-c07522dc6598":{"title":"MailUp for WordPress","condition":"mailup-email-and-newsletter-subscription-form\/mailup.php","exclusions":["\/mailup-email-and-newsletter-subscription-form\/public\/js\/mailup-public.js","mailup-js-extra"],"icon_url":"","summary":"Enables subscription from to be submitted","type":"plugin","id":"plugin:0bf67b8ba84771e1a367fe24590ef09c","is_default":0,"created_at":1724433004},"c5330c66-ba7b-45b1-87e4-ce590ab005dd":{"title":"Maintenance","condition":"maintenance\/maintenance.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maintenance\/"],"icon_url":"","summary":"Removes the preload spinner without interaction.","type":"plugin","id":"plugin:10d0de28911c5f66463b9c8783f8148a","is_default":0,"created_at":1724433020},"62f6663a-a15f-4bca-b9b5-79f1770e2c5a":{"title":"MapifyLite- Show map on page load","condition":"mapifylite\/mapify_lite.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/mapifylite\/assets\/vendor\/leaflet-1.7.1\/leaflet.js","\/plugins\/mapifylite\/assets\/vendor\/leaflet\/markercluster\/leaflet.markercluster.js","\/plugins\/mapifylite\/assets\/vendor\/leaflet\/locatecontrol\/L.Control.Locate.min.js","\/plugins\/mapifylite\/assets\/vendor\/tooltip.js","\/plugins\/mapifylite\/assets\/js\/dist\/bundle.js","var map"],"icon_url":"","summary":"Load map on pageload.","type":"plugin","id":"plugin:48c30c0f37b64accf88126d4ef58e17b","is_default":0,"created_at":1724432876},"267aef71-afa0-4848-b6f8-3e1ca15c3a23":{"title":"Maps Marker Pro","condition":"maps-marker-pro\/maps-marker-pro.php","exclusions":["\/maps-marker-pro\/js\/mapsmarkerpro.js","var mapsMarkerPro"],"icon_url":"","summary":"Load map on pageload.","type":"plugin","id":"plugin:9460789bdfe77425c895f130991a4cb4","is_default":0,"created_at":1724432891},"b5a88b63-e906-49b3-8134-420139915ea6":{"title":"Master Popups","condition":"master-popups\/master-popups.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/master-popups\/assets\/public\/js\/master-popups-libs.min.js"],"icon_url":"","type":"plugin","id":"plugin:8fd7bd2c8b0a33e62798573abd12be63","is_default":0,"created_at":1681305305},"4be41549-bf4d-4c49-8346-0f8a3b88fdba":{"title":"Master Slider","condition":"master-slider\/master-slider.php","exclusions":["masterslider"],"icon_url":"","summary":"Prevents Master Slider to be initially hidden","type":"plugin","id":"plugin:de888634cc4bd51576eed319d5a528fd","is_default":0,"created_at":1724432981},"087bee18-7cd1-4c10-8acc-19e1b7c4f4cd":{"title":"Max Mega Menu","condition":"megamenu\/megamenu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/hoverIntent.min.js","\/megamenu\/js\/maxmegamenu.js","var megamenu"],"icon_url":"","summary":"For the Pro version this file may need to be excluded too:\r\n\r\n\/megamenu-pro\/assets\/public.js","type":"plugin","id":"plugin:b71309a89bf3c8b558b6fca5d6531919","is_default":0,"created_at":1724433045},"cf22f0b9-01f4-409e-8a93-ad6743095abd":{"title":"Meta Slider","condition":"ml-slider\/ml-slider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ml-slider\/","var metaslider"],"icon_url":"","summary":"Shows the slider on page load","type":"plugin","id":"plugin:94a7bae84ef2816494be4af66c577bfc","is_default":0,"created_at":1724433102},"beb2e088-1354-42db-b803-13e725e8916c":{"title":"MetForm","condition":"metform\/metform.php","exclusions":["\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(?(.*))?( |'|\"|>|$)","\/metform\/public\/assets\/js\/htm.js","\/metform\/public\/assets\/js\/app.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js"],"summary":"Allows the form to load without user interaction","icon_url":"","type":"plugin","category":null,"id":"plugin:0aa559d4482eb485c12cd1ad71418523","is_default":0,"created_at":1744280463},"bb2cbc0d-20da-415e-8218-c17f1db53579":{"title":"Monarch","condition":"monarch\/monarch.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","dt-place-monarch-icons"],"icon_url":"","type":"plugin","id":"plugin:b7335d6d6d5c5134ea10ac2d9b04226c","is_default":0,"created_at":1677853476},"a98d6a80-4610-4ede-bd33-c3e15bed0a95":{"id":"plugin:4f8651262425ef6d7c223c68a2ec2063","title":"Monster Insights","type":"plugin","icon":"","exclusions":["__gtagTracker","monsterinsights_frontend","\/google-analytics-for-wordpress\/assets\/js\/frontend-gtag.min.js"],"is_default":0,"condition":"google-analytics-for-wordpress\/googleanalytics.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"26e1a36e-7a03-449e-8ecc-e42c41ca291c":{"title":"Motion.page","condition":"motionpage\/motionpage.php","exclusions":["\/motionpage\/core\/includes\/assets\/js\/(.*)","\/motionpage\/core\/includes\/assets\/js\/gsap\/(.*)","\/motionpage\/assets\/js\/(.*)","\/motionpage\/assets\/js\/gsap\/(.*)"],"icon_url":"","summary":"Fixes any issue with Motion.page animations","type":"plugin","id":"plugin:f8fc66b302dec2327bdec0434a3b275b","is_default":0,"created_at":1724433236},"459fd663-7f80-45fd-8308-d3484981e161":{"title":"Ninja Forms","condition":"ninja-forms\/ninja-forms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/ninja-forms\/assets\/js\/min\/front-end-deps.js","\/ninja-forms\/assets\/js\/min\/front-end.js","nf-"],"icon_url":"","summary":"Show the form on pageload","type":"plugin","id":"plugin:1d3ae9c1a96d5062616968b81eef319d","is_default":0,"created_at":1724433463},"c97440dd-7592-40e7-8c98-dac20d39808f":{"title":"Ninja Tables","condition":"ninja-tables\/ninja-tables.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ninja-tables(.*)\/assets\/","\/ninja-tables(.*)\/public\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","ninja_table_instance_","ninja_filter_","ninja_table_ready_init_table_id"],"icon_url":"","summary":"Show the table on pageload","type":"plugin","id":"plugin:723a588dcd49285ea9f7404e2379b47f","is_default":0,"created_at":1724433481},"ebc01f06-8c35-47fa-9c63-8959c5cbd915":{"title":"NotificationX","condition":"notificationx\/notificationx.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/notificationx\/assets\/public\/js\/(.*).js","notificationXArr"],"icon_url":"","summary":"Show the pop-up notification","type":"plugin","id":"plugin:f41a52ab1dd50a81cd3a5e341af0007c","is_default":0,"created_at":1724433494},"5fcd4cb7-1916-4995-973e-6d9def619e12":{"title":"Nova Blocks","condition":"nova-blocks\/nova-blocks.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/js\/dist\/dom-ready.min.js","has-loaded","wf-active","nova-blocks"],"summary":"Allows rendering the layout on page load for themes based on the Nova Blocks framework (Pixelgrade themes)","icon_url":"","type":"plugin","category":null,"id":"plugin:72b8526ce363ca9b7e5d82b245379cbb","is_default":0,"created_at":1733813516},"3aaf4a1b-591a-48b7-8d60-e6d65c0f94c9":{"title":"Ocean Elementor Widgets","condition":"ocean-elementor-widgets\/ocean-elementor-widgets.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ocean-elementor-widgets\/"],"icon_url":"","summary":"Avoid console errors (Elements added with this plugin should work)","type":"plugin","id":"plugin:be8fc72a8b8e8eb5958be13737cff47c","is_default":0,"created_at":1724433526},"90bfaf32-fa1d-4b48-bf64-3bf6f2c7c93b":{"title":"Ocean Extra - Load Preloader","condition":"ocean-extra\/ocean-extra.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ocean-extra\/includes\/preloader\/assets\/js\/preloader.min.js"],"summary":"When DJE is enabled, Ocean Extra preloader is not loaded until user interaction on the page.","icon_url":"","type":"plugin","category":null,"id":"plugin:1584fd7b07ef3eed359694c0f3046931","is_default":0,"created_at":1754297770},"f053a7d3-62b0-4312-b0ca-6ff63380eb0b":{"title":"One Click Accessibility","condition":"pojo-accessibility\/pojo-accessibility.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pojo-accessibility\/assets\/js\/app.min.js"],"icon_url":"","summary":"Allow One Click Accessibility to work on all pages","type":"plugin","id":"plugin:1a14afe852fefe7b22ccad3893672a29","is_default":0,"created_at":1724433541},"61e11800-48a9-4354-8a4c-ac9a2b4b033a":{"title":"OoohBoi Steroids for Elementor","condition":"ooohboi-steroids-for-elementor\/ooohboi-steroids.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ooohboi-steroids-for-elementor\/"],"icon_url":"","summary":"Display OohhBoi elements on page load","type":"plugin","id":"plugin:b9ed0fe6f2cdbd305691a6b857f4b3dc","is_default":0,"created_at":1724433511},"560b78a2-f051-490b-9dc6-a602dece0d81":{"title":"Optimole","condition":"optimole-wp\/optimole-wp.php","exclusions":["optimoleData"],"icon_url":"","summary":"To fire excluded JavaScript files served through the Optimole CDN","type":"plugin","id":"plugin:f1ff18a3e04c4e0995fca9cabffe57a7","is_default":0,"created_at":1724433610},"b0fda458-4bf2-41e9-a159-60d4bb6102a6":{"title":"OSM - OpenStreetMap","condition":"osm\/osm.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/osm\/js\/OL\/","\/osm\/js\/osm-v3-plugin-lib.js","vectorM"],"icon_url":"","summary":"Display the map and avoid console errors.","type":"plugin","id":"plugin:48ec18bd3f59772d98f85dddab75e305","is_default":0,"created_at":1724433624},"3743ed67-e0d1-4243-bb1f-ee48a445dd10":{"title":"OxyExtras","condition":"oxyextras\/plugin.php","exclusions":["vime","vime.esm.js"],"icon_url":"","summary":"When using Pro Media Player","type":"plugin","id":"plugin:9eacf0b76484af0259cd788f4923f20c","is_default":0,"created_at":1724433698},"52a21e27-af5b-4476-8d6d-54c323fd1443":{"title":"Oxygen Builder","condition":"oxygen\/functions.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/component-framework\/vendor\/aos\/aos.js","AOS.init","oxygen_init_pro_menu","oxy-pro-menu-show-dropdown","oxy-shape-divider","oxygenVSBInitToggleJs"],"icon_url":"","summary":"When using the \"Pro Menu\" element.\r\nPrevents incorrect positioning of the Shape Divider on page load\r\nAllow tabs toggles to be closed when the page loads","type":"plugin","id":"plugin:e852555c4b4789d78a96d76f503b3262","is_default":0,"created_at":1724433680},"ebd282b9-e175-4b83-90a2-fe12389ccd11":{"id":"plugin:6f9419e58ec86c94e7698aaaaf9dc715","title":"PageLoader by Bonfire","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pageloader-by-bonfire\/pageloader.js","bonfire-pageloader-overlay"],"is_default":0,"condition":"pageloader-by-bonfire\/pageloader-by-bonfire.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"0baf6353-aa70-41a9-a3bc-d89870a5839b":{"title":"PDF Embedder","condition":"pdf-embedder\/pdf_embedder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pdf-embedder\/js\/(.*).js"],"icon_url":"","summary":"Load the PDF's without user interaction.\r\nPlease note that if Defer Javascript Execution is enabled, you also need to exclude these files from being deferred.","type":"plugin","id":"plugin:3a4c4518eb0f60108ab4934fab27d335","is_default":0,"created_at":1724433747},"cba51ec1-87cc-44eb-b12b-d652e3446507":{"title":"Perfect Brands for WooCommerce","condition":"perfect-woocommerce-brands\/perfect-woocommerce-brands.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/perfect-woocommerce-brands\/assets\/lib\/slick\/slick.min.js","\/perfect-woocommerce-brands\/assets\/js\/functions-frontend.min.js"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:4f90aca5957cccbf623e3bbc31afa204","is_default":0,"created_at":1724433762},"808e7a4e-025c-4fae-bf82-de3716e5eb0d":{"title":"Photonic","condition":"photonic\/photonic.php","exclusions":["\/photonic\/include\/js\/front-end\/module\/photonic-baguettebox.min.js"],"icon_url":"","summary":"Display the gallery without user interaction.","type":"plugin","id":"plugin:84fe214646388d7c021dda25003ac165","is_default":0,"created_at":1724434241},"936aff7d-a8ac-4473-a7b5-4b1611b6c557":{"title":"Pixel Caffein","condition":"pixel-caffeine\/pixel-caffeine.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/pixel-caffeine\/build\/frontend.js","aepc_pixel"],"icon_url":"","summary":"Fire the tracker on pageload.","type":"plugin","id":"plugin:6838be282f853f71be282783cb1c162b","is_default":0,"created_at":1724434253},"ab3a4ef5-2732-4b46-a7c3-17b4e9405cd1":{"title":"Pixel Manager for WooCommerce","condition":"woocommerce-pixel-manager-pro\/woocommerce-pixel-manager.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/woocommerce-pixel-manager-pro\/js\/public\/","wpm"],"icon_url":"","summary":"Fire the tracker on pageload.","type":"plugin","id":"plugin:afe0eb7c64d4556a7111c56dd8c4d307","is_default":0,"created_at":1724434270},"2774f964-50b2-425e-8a30-0a02f421b7e4":{"title":"Popup Builder","condition":"popup-builder\/popup-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/popup-builder\/public\/js\/(.*).js","\/popupbuilder-exit-intent\/public\/javascript\/ExitIntent.js","var sgpbPublicUrl","SGPB_POPUP_PARAMS"],"icon_url":"","summary":"Show popup on exit","type":"plugin","id":"plugin:38d4b2986868f543639cd1ebc3e510aa","is_default":0,"created_at":1724433776},"82dbb1e5-31f9-43d7-b522-52819aa49ba5":{"title":"Popup Maker","condition":"popup-maker\/popup-maker.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/pum\/pum-site-scripts.js","pum","\/plugins\/popup-maker\/assets\/js\/site.min.js"],"icon_url":"","summary":"Show popup on one click","type":"plugin","id":"plugin:786717922362642f34a7ff58e919bd95","is_default":0,"created_at":1724433839},"48e08305-1f1c-4ef4-9f13-24af1b155abc":{"title":"PowerPack Addons for Elementor","condition":"powerpack-lite-for-elementor\/powerpack-lite-elementor.php","exclusions":["\/powerpack-lite-for-elementor\/assets\/js\/min\/frontend.min.js"],"icon_url":"","summary":"Show animations","type":"plugin","id":"plugin:17831cbb64e469c7f66224c8c63d0a58","is_default":0,"created_at":1724433893},"e037ae2f-e36b-4f1a-ada8-eb8fde6746f2":{"title":"Preloader Plus","condition":"preloader-plus\/preloader-plus.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/preloader-plus\/(.*)"],"icon_url":"","summary":"Prevents the preloader from being stuck until there's user interaction","type":"plugin","id":"plugin:80e1283ea1afead3ca904fad792643c5","is_default":0,"created_at":1724434032},"90fed478-e89a-455c-8371-836bee58fb81":{"title":"Premium Addons for Elementor","condition":"premium-addons-for-elementor\/premium-addons-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-addons.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/isotope.min.js","\/premium-addons-elementor\/pa-frontend-(.*).min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/slick.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/tooltipster.min.js","window.scopes_array","lottie.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-nav-menu.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/typed.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/imgcompare.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/event-move.min.js"],"icon_url":"","summary":"The above will cover:\r\n\r\n- Make equal height work\r\n- Make filters work\r\n- Make lottie animations work\r\n- Make the testimonials' carousel work\r\n- Allow Animated Text to load without User interaction\r\n- Allow Image comparison to show","type":"plugin","category":"analytics","id":"plugin:debbfbbcbdf9ffb465bbc40008d99f02","is_default":0,"created_at":1744729898},"24bb14b1-f934-4f9d-adbd-4e186e0a0ecd":{"title":"Premium Addons PRO","condition":"premium-addons-pro\/premium-addons-pro-for-elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/premium-addons-pro\/assets\/frontend\/min-js\/premium-badge.min.js"],"icon_url":"","summary":"- Allow Global badges to show","type":"plugin","category":"analytics","id":"plugin:c7220a8a2a42faf4072977c623bc88c7","is_default":0,"created_at":1744729892},"7e43c261-77be-48fc-b25a-8953a654ae85":{"title":"Presto Player","condition":"presto-player\/presto-player.php","exclusions":["\/wp-includes\/js\/dist\/vendor\/regenerator-runtime.min.js","\/presto-player\/dist\/components\/web-components\/web-components.esm.js","\/presto-player\/src\/player\/player-static.js","var player","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","summary":"Load the video player","type":"plugin","id":"plugin:100a0382fcf3d1b6b22da928bce46ea8","is_default":0,"created_at":1724434113},"3d6f509f-d040-4279-9a2f-a4e6eae1e9df":{"title":"Price Based on Country for WooCommerce Pro","condition":"woocommerce-price-based-country-pro-addon\/woocommerce-price-based-country-pro-addon.php","exclusions":["\/woocommerce-product-price-based-on-countries\/assets\/js\/ajax-geolocation.min.js","\/woocommerce-price-based-country-pro-addon\/assets\/js\/currency-switcher.min.js","add-to-cart.min.js","cart-fragments.min.js"],"icon_url":"","summary":"To load the prices and currency switcher without interaction","type":"plugin","id":"plugin:c0fce700121492b566517e68301db382","is_default":0,"created_at":1724434128},"b970bc8a-bcbe-4d08-8ac0-a6853ab3f036":{"title":"Prime Slider","condition":"bdthemes-prime-slider-lite\/bdthemes-prime-slider.php","exclusions":["\/plugins\/bdthemes-prime-slider-lite\/assets\/js\/bdt-uikit.min.js"],"icon_url":"","summary":"Display slider without interaction","type":"plugin","id":"plugin:f1ecfe258440b371124999ca3bfbfff3","is_default":0,"created_at":1724434141},"e5458963-f167-4b68-88e4-77dd39af2842":{"title":"PRO Elements","condition":"pro-elements\/pro-elements.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pro-elements\/"],"icon_url":"","summary":"Fixes functions execution when the jQuery library is already excluded","type":"plugin","id":"plugin:29ea8f4dd72f5a5c5927917fb0665a05","is_default":0,"created_at":1724434176},"b119ad72-f498-4576-bb71-9e6d8c37b68f":{"title":"Product Filter by WBW (for WooCommerce)","condition":"woo-product-filter\/woo-product-filter.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-content\/plugins\/woo-product-filter\/modules\/woofilters\/js\/frontend.woofilters.js","\/woofilters\/js\/frontend.multiselect.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js","opened closed"],"icon_url":"","summary":"Resolves issue where the product filter won't load on the page, there's a 'loading' gif stuck in its place, and there's a console error.","type":"plugin","category":"analytics","id":"plugin:e57ad91e0d94fab011353af544873743","is_default":0,"created_at":1743105367},"7b779aca-e497-4da3-8e51-fa12837d15ab":{"title":"Product Filters for WooCommerce","condition":"woocommerce-product-filters\/woocommerce-product-filters.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-product-filters\/","\/woocommerce\/assets\/js\/accounting\/accounting.min.js","\/wp-includes\/js\/jquery\/ui\/","wcpf-load-project","WCPFData"],"icon_url":"","summary":"Make the filters work","type":"plugin","id":"plugin:719469f1c977f7109d3d6ee21ecd5a16","is_default":0,"created_at":1724434226},"2b2a51f2-bd47-4591-92d8-4a690bce5d99":{"title":"Product Gallery Slider for WooCommerce","condition":"twist\/twist.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/twist\/assets\/js\/slick.min.js","wpgs-public-js-after"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:a898898b2b0ea2cd82e20a6d3a3aa47b","is_default":0,"created_at":1724434162},"badb569e-f821-4f90-b2c7-69c286c1bda5":{"title":"Product Gallery Slider for WooCommerce By Codeixer - Fix Product Gallery","condition":"woo-product-gallery-slider\/woo-product-gallery-slider.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/woo-product-gallery-slider\/assets\/js\/slick.min.js","\/woo-product-gallery-slider\/assets\/js\/wpgs.js"],"summary":"Show Product Gallery on page load","icon_url":"","type":"plugin","category":null,"id":"plugin:d7fe72709580a4c9b3d23e482485ed0d","is_default":0,"created_at":1746519887},"9b63d036-595f-477b-918e-049121c29765":{"title":"Product Slider for WooCommerce","condition":"woo-product-slider\/main.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/woo-product-slider\/src\/Frontend\/assets\/js\/swiper.min.js","\/woo-product-slider\/src\/Frontend\/assets\/js\/scripts.min.js"],"summary":"When Delay JavaScript Execution is enabled, the product sliders don't load until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:e8da84c8281e41723851607361a77a92","is_default":0,"created_at":1738076099},"062c5be3-e5ea-4958-9619-44e3410f237e":{"title":"Product Video Gallery for Woocommerce","condition":"product-video-gallery-slider-for-woocommerce\/product-video-gallery-slider-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/product-video-gallery-slider-for-woocommerce\/public\/js\/nickx.front.js","\/product-video-gallery-slider-for-woocommerce\/public\/js\/swiper-bundle.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the video gallery slider doesn't work until user interaction - images don't slide and thumbs appear much larger than they should.","type":"plugin","category":"analytics","id":"plugin:bbc653a91f0635cd2edb0b741aa62b85","is_default":0,"created_at":1767792522},"34d225a4-688c-476b-846b-420774160d6b":{"id":"plugin:e0b123d324c6fc85b8682660c34f8829","title":"Rank Math SEO","type":"plugin","icon":"","exclusions":["local_ga_js"],"is_default":0,"condition":"seo-by-rank-math\/rank-math.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"02305ca0-2c2a-4eef-a802-b8a942771ecc":{"title":"Retainful","condition":"retainful-next-order-coupon-for-woocommerce\/retainful-next-order-coupon-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/atc-popup.min.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/exit-intent-popup.js","retainful.com","rnoc-add-to-cart-js-before","rnoc_redirect_coupon_popup"],"icon_url":"","summary":"Show the pop-up","type":"plugin","id":"plugin:f9fdee19ba6aed961d96d86e1521a761","is_default":0,"created_at":1724434370},"b4055250-5813-400f-b663-d390fee989e4":{"title":"Revolution Slider","condition":"revslider\/revslider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/revslider\/public\/assets\/js\/","\/revslider\/sr6\/assets\/js\/","\/revslider-(.*)-addon\/","setREVStartSize","rev_slider_","revslider_","window.RS_MODULES","\/revslider\/public\/js\/libs\/tptools.js","\/revslider\/public\/js\/sr7.js","SR7","_tpt.R.fonts.domFonts"],"icon_url":"","summary":"Show the slider on page load","type":"plugin","category":"analytics","id":"plugin:d6a4d07d1b4022d886df52322dcd8a6f","is_default":0,"created_at":1770043380},"0b4e061a-b366-4d5a-a00e-bded4b107133":{"title":"Royal Elementor Addons","condition":"royal-elementor-addons\/wpr-addons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/royal-elementor-addons\/assets\/js\/frontend.min.js","\/royal-elementor-addons\/assets\/js\/lib\/jarallax\/jarallax.min.js","\/royal-elementor-addons\/assets\/js\/lib\/slick\/slick.min.js"],"icon_url":"","summary":"Fixes mobile menu not opening","type":"plugin","category":"analytics","id":"plugin:c4b464373716d7ac8e3cfb019aaa6102","is_default":0,"created_at":1747684976},"1b19ec89-171a-4f85-8c4b-b1bcfc6b1433":{"id":"plugin:5e3f85d8c82cc184b945415d1a862601","title":"Sassy Social Share","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/sassy-social-share\/public\/js\/sassy-social-share-public.js","heateorSssLoadEvent"],"is_default":0,"condition":"sassy-social-share\/sassy-social-share.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f5899925-2ab7-43b6-abc4-51b76d664ca6":{"title":"Scrollsequence","condition":"scrollsequence-pro\/scrollsequence-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/scrollsequence-pro\/public\/js\/gsap__premium_only.js","\/scrollsequence-pro\/public\/js\/gsap-scrolltrigger__premium_only.js","\/scrollsequence-pro\/public\/js\/ssq-lib__premium_only.js","scrollsequence-input-script"],"icon_url":"","summary":"Show images and animation on pageload","type":"plugin","id":"plugin:3df51830b6b80668fc342c8dcea495cf","is_default":0,"created_at":1724434606},"043827fc-3df8-45d6-9cd2-14fbe962987a":{"title":"ShiftNav Pro - Responsive Mobile Menu","condition":"shiftnav-pro\/shiftnav.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-pro\/assets\/js\/shiftnav(.*).js"],"icon_url":"","summary":"Displays without interaction.","type":"plugin","id":"plugin:9d60b5d2de4d828b78c7b088024377d6","is_default":0,"created_at":1724434657},"bcbaf240-e76f-4620-b7d5-4852c46d4be7":{"title":"ShiftNav \u2013 Responsive Mobile Menu","condition":"shiftnav-responsive-mobile-menu\/shiftnav-responsive-mobile-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-responsive-mobile-menu\/"],"icon_url":"","summary":"Displays without interaction.","type":"plugin","id":"plugin:56279bd768c8f27ad1972b6774738bcf","is_default":0,"created_at":1724434651},"bbe0543b-b5af-467b-a90d-e2975d892d8d":{"title":"Short Pixel Adaptive Image","condition":"shortpixel-adaptive-images\/short-pixel-ai.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shortpixel-adaptive-images\/assets\/js\/ai(.*).min.js","spai_settings"],"icon_url":"","type":"plugin","id":"plugin:1bc7ac87d8ab2301a1b904919dc7a798","is_default":0,"created_at":1704734942},"543ab43a-6bd3-4948-a09e-3b95e7c9209d":{"title":"Showcase IDX","condition":"showcase-idx\/showcaseidx.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","SIDX","search.showcaseidx.com\/js\/app-(.*).js","cdn.shortpixel.ai"],"icon_url":"","summary":"Prevents requiring double click on iOS to use filters.\r\n\r\nExclusion when the option New AI engine is enabled (You don't need the above, only this one):\r\n\r\ncdn.shortpixel.ai","type":"plugin","id":"plugin:ce4dea8ddc3caa8d00e95cec3202d32a","is_default":0,"created_at":1724434768},"a16bcab7-1169-46b9-a425-b091478d8312":{"title":"Side Cart WooCommerce","condition":"side-cart-woocommerce\/xoo-wsc-main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/plugins\/woocommerce\/assets\/js\/frontend\/add-to-cart.min.js","\/plugins\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/plugins\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"icon_url":"","summary":"Makes cart icon work to slide in the cart menu.","type":"plugin","id":"plugin:3ea7d9f75ad03620b0bce2517bd5b8d1","is_default":0,"created_at":1724434681},"521f748e-cf09-4019-bd28-b52daef5f16f":{"title":"Simple Banner","condition":"simple-banner\/simple-banner.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/simple-banner\/","simpleBannerScriptParams"],"icon_url":"","summary":"Show the banner on pageload.","type":"plugin","id":"plugin:7843983bf90dbae16c6e889382c71b23","is_default":0,"created_at":1724434695},"76026e82-d9cf-482c-b480-55c57693a184":{"title":"Site Kit by Google","condition":"google-site-kit\/google-site-kit.php","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('","\/gtag\/js","gtag\\(","\/gtm.js"],"icon_url":"","summary":"Fixes issues with Google Analytics.","type":"plugin","id":"plugin:b6825f971d35a5515d095564a2e40936","is_default":0,"created_at":1724434707},"4f9be7dd-fa19-401c-a5a5-81654990f9c4":{"title":"SiteOrigin Widgets Bundle - Load images","condition":"so-widgets-bundle\/so-widgets-bundle.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/so-widgets-bundle\/js\/slider\/jquery.slider.min.js","\/so-widgets-bundle\/js\/jquery.cycle.min.js","\/so-widgets-bundle\/js\/jquery.cycle.swipe.min.js","\/so-widgets-bundle\/js\/sow.jquery.fittext.min.js","\/so-widgets-bundle\/js\/lib\/jquery.fitvids.min.js","\/siteorigin-panels\/js\/styling.min.js","siteorigin-panels-before-js","page_id"],"icon_url":"","summary":"Load the images on the page load.","type":"plugin","id":"plugin:3968480c93d7f92ed1cb78a54b47fc9f","is_default":0,"created_at":1724434720},"79c458d7-f7f7-4072-919d-ad337bde6ae3":{"title":"Slick Menu","condition":"slick-menu\/slick-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/slick-menu\/"],"icon_url":"","summary":"Show menu on pageload","type":"plugin","id":"plugin:5ce5dfecdc9d3292c69a1413bbd17d3c","is_default":0,"created_at":1724434809},"99cf4942-49ea-4687-b156-405ed1ce1cfa":{"title":"Slide Anything","condition":"slide-anything\/slide-anything.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/slide-anything\/owl-carousel\/owl.carousel.min.js","owl_goto.trigger"],"icon_url":"","summary":"Show slider without user interaction","type":"plugin","id":"plugin:fff874cc48b80940210228c975df395c","is_default":0,"created_at":1724434788},"dd0ea584-0c99-4c30-b46d-da35b94c9f0a":{"title":"Slider by Soliloquy","condition":"soliloquy-lite\/soliloquy-lite.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","soliloquy-min.js","soliloquy_slider"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:ffb5f8cc0ea17886dbd05f601ca3eec0","is_default":0,"created_at":1724434937},"20efe964-7ba6-411e-98eb-f2f9bc75dd5a":{"title":"Slider Revolution","condition":"slider-revolution\/revslider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/revslider\/public\/assets\/js\/","\/revslider\/sr6\/assets\/js\/","\/revslider-(.*)-addon\/","setREVStartSize","rev_slider_","revslider_","window.RS_MODULES","\/slider-revolution\/public\/js\/libs\/tptools.js","\/slider-revolution\/public\/js\/sr7.js","SR7","_tpt.R.fonts.domFonts"],"summary":"- Load Slider without user interaction\r\n- For new Slider Revolution version, the \/revslider\/public\/js\/libs\/tptools.js and \/revslider\/public\/js\/sr7.js were updated to: \/slider-revolution\/public\/js\/sr7.js and \/slider-revolution\/public\/js\/libs\/tptools.js. \r\n- The plugin slug was also updated from revslider\/revslider.php to slider-revolution\/revslider.php.\r\n- This backend entry is to allow compatiblity for the new version.","icon_url":"","type":"plugin","category":null,"id":"plugin:41ff48dde3715a47d1ee63fdac32cc4a","is_default":0,"created_at":1770042676},"ecb2fffc-d289-4f68-ae94-71131f17deee":{"title":"Smart Slider 3","condition":"smart-slider-3\/smart-slider-3.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/smart-slider-3\/(.*).js","_N2"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:2f373822dceb191c31c8ad2183d51869","is_default":0,"created_at":1724434826},"284ede43-bf80-419e-8414-46c26cb746f0":{"title":"Smart Slider 3 Pro","condition":"nextend-smart-slider3-pro\/nextend-smart-slider3-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/SmartSlider3\/(.*).js","_N2"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:720ec9fbbd8a52ce525959a68a5310b3","is_default":0,"created_at":1724434836},"4f3a2a29-eb96-42b5-a6ba-38442123d077":{"title":"Spectra - Lottie","condition":"ultimate-addons-for-gutenberg\/ultimate-addons-for-gutenberg.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ultimate-addons-for-gutenberg\/assets\/js\/lottie.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/uagb-bodymovin.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/table-of-contents.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/tabs.min.js","UAGBLottie"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the Lottie animation doesn't load.","type":"plugin","category":"analytics","id":"plugin:138e02cf173082dfff34d8d50b5b1b5f","is_default":0,"created_at":1755608389},"be70034f-def5-4771-9b3f-662eb218da2a":{"title":"Spectra - Show Gallery Images","condition":"ultimate-addons-for-gutenberg\/ultimate-addons-for-gutenberg.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ultimate-addons-for-gutenberg\/assets\/js\/spectra-animations.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/post.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/aos.min.js","\/slick.min.js","\/imagesloaded.min.js","UAGBPostCarousel"],"summary":"Show the gallery on pageload","icon_url":"","type":"plugin","category":"analytics","id":"plugin:ca362d462a44a9622dd8542db373d3d6","is_default":0,"created_at":1738865101},"5ed91dc6-b172-4d45-8406-71689bdb1fef":{"title":"Spectra - Slider","condition":"ultimate-addons-for-gutenberg\/ultimate-addons-for-gutenberg.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/uploads\/uag-plugin\/assets\/(.*)\/uag-js-(.*).js","\/ultimate-addons-for-gutenberg\/assets\/js\/swiper-bundle.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/uagb-button-child.min.js"],"summary":"While Delay JavaScript Execution is enabled, sliders only show the first slide and do not autoplay.","icon_url":"","type":"plugin","category":null,"id":"plugin:f263043f4ed2c766c758fb139b6d50a0","is_default":0,"created_at":1738865295},"c3334c29-4160-42df-a1ce-f8aeeaee8668":{"title":"Super Socializer","condition":"super-socializer\/super_socializer.php","exclusions":["theChamp","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:660defe26748470c3a47366cd4012579","is_default":0,"created_at":1677853633},"f18b4242-fe3f-4e2b-bfc9-ac2fb3939a90":{"title":"Superfly Menu","condition":"superfly-menu\/main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate((.*?)(.min?)?).js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/md5.js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/util.js","\/superfly-menu\/js\/public.min.js","\/superfly-menu\/js\/superfly-menu.js","window.SFM_is_mobile","var SFM_skew_disabled","var SFM_template"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the menu don't load until user interaction.","type":"plugin","category":"analytics","id":"plugin:ccb15175093bc6c437b78797f0698a7b","is_default":0,"created_at":1756121213},"1a05c00a-8562-45bc-80e8-987a4574b1c9":{"title":"Symplr Ads","condition":"symplr-ads\/symplr-plugin.php","exclusions":["\/symplr-ads\/","cdns.symplr.de"],"icon_url":"","summary":"Loads Ads right away","type":"plugin","id":"plugin:3b6d39e28a87e86c4659491e2368ff61","is_default":0,"created_at":1724442756},"858d2d7f-bdac-4d27-ba26-baa9ace96ba4":{"title":"Tabby Responsive Tabs","condition":"tabby-responsive-tabs\/tabby-responsive-tabs.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/tabby-responsive-tabs\/js\/tabby.js","RESPONSIVEUI"],"icon_url":"","summary":"Load tabs without delay","type":"plugin","id":"plugin:7d93008296bb5c7c43d4cba185ed2632","is_default":0,"created_at":1724442869},"caf3b2cc-5a9f-450a-b680-99987b342417":{"title":"tagDiv - Product Filters","condition":"td-woo\/td-woo.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/td-composer\/legacy\/Newspaper\/js\/tagdiv_theme.min.js","\/plugins\/td-woo\/assets\/js\/tdwLoop.js","\/plugins\/td-woo\/assets\/js\/tdwFilter.js","\/plugins\/td-woo\/assets\/js\/tdwMenuCart.js","\/plugins\/td-woo\/assets\/js\/tdwFiltersList.js","tds_more_articles_on_post_pages_distance_from_top"],"summary":"When Delay JavaScript Execution is enabled, the product filters feature won't function.","icon_url":"","type":"plugin","category":null,"id":"plugin:aae992c4a586cfcfd481d64047480570","is_default":0,"created_at":1753968799},"26c21e36-9d91-4395-a1e2-3641c9ddea0b":{"title":"tagDiv - Product Variation Switches","condition":"td-woo\/td-woo.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/plugins\/td-woo\/assets\/js\/tdwVariationSwitches.js"],"summary":"When Delay JavaScript Execution is enabled, product variations don't work.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:6cd05d959fa42829c9135ffc13a9d715","is_default":0,"created_at":1754079213},"e44a5c93-bb77-4624-a121-d846905137ea":{"title":"The Plus Addons for Elementor","condition":"the-plus-addons-for-elementor-page-builder\/theplus_elementor_addon.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/theplus-addons\/(.*)"],"icon_url":"","summary":"Start animations on page load","type":"plugin","id":"plugin:2f563bbb7e92363ec3fb2989a1c7dffe","is_default":0,"created_at":1724442902},"2bbac961-b000-4802-ae97-d52472ec6750":{"title":"The Plus Addons for Elementor Premium","condition":"theplus_elementor_addon\/theplus_elementor_addon.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/theplus_elementor_addon\/","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","summary":"Solve issues with sliders and tabs","type":"plugin","id":"plugin:6e127deaaeefbe57ff945b1f9e274518","is_default":0,"created_at":1724442911},"c3b5d7fd-a1e0-4aca-a0b6-405018a37266":{"title":"The Post Grid","condition":"the-post-grid\/","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","the-post-grid"],"icon_url":"","summary":"Makes the content of single post appearing immediately","type":"plugin","id":"plugin:93c3354976453458cf67f8ec0fdfce5a","is_default":0,"created_at":1724442928},"666b45e8-749c-4140-bd17-e1cd589e03ee":{"title":"ThemeREX Addons","condition":"trx_addons\/trx_addons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/trx_addons\/js\/__scripts-full.js","\/trx_addons\/components\/cpt\/layouts\/shortcodes\/menu\/superfish.min.js","\/trx_addons\/js\/trx_addons.utils.js","\/trx_addons\/js\/tweenmax\/GSAP\/3.12.2\/gsap.min.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/NavMenu\/assets\/NavMenu.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/Counter\/assets\/odometer\/odometer.min.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/Counter\/assets\/Counter.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/AdvancedTitle\/assets\/AdvancedTitle.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/Testimonials\/assets\/Testimonials.js","\/trx_addons\/js\/trx_addons.front.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, Preloader and Popup don't work until user interaction. And the menu don't work at all.","type":"plugin","category":"analytics","id":"plugin:b9c418b47c986935a1151ab9b42f8971","is_default":0,"created_at":1767882265},"a750cada-eb58-4df4-9966-21c8a69332ba":{"title":"Thrive Architect","condition":"thrive-visual-editor\/thrive-visual-editor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-includes\/js\/masonry.min.js","\/thrive-theme\/inc\/assets\/dist\/frontend.min.js","\/thrive-theme\/thrive-dashboard\/js\/dist\/frontend.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/general.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/video.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/menu.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/pricing-table.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/toc.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/lead-generation.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, most related scripts do not work.\r\n\r\nThis backend entry existed for some time with the following exclusions (though there was no GH issue or info available about it):\r\n\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js\r\n\/jquery-migrate(.min)?.js\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/170","type":"plugin","category":"analytics","id":"plugin:75af9efe22c5cc776636266feb55adf1","is_default":0,"created_at":1741639113},"13714cde-680e-4ca4-8607-c35952d6a5f2":{"title":"Thrive Comments","condition":"thrive-comments\/thrive-comments.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"icon_url":"","type":"plugin","id":"plugin:6a72d06ca2f6a888b0d9d5ea93af2edc","is_default":0,"created_at":1677852974},"aa7ca898-499f-4f04-b419-3de199996969":{"title":"Thrive Leads","condition":"thrive-leads\/thrive-leads.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"icon_url":"","summary":"Show the form on pageload & Fix comment box not showing","type":"plugin","id":"plugin:b84d82c02cade64ade00712b9c5652aa","is_default":0,"created_at":1724443176},"9eee297a-8241-4ef2-af97-46074bd0898c":{"id":"plugin:5bb61b0559b0a3fd578315b553451327","title":"Thrive Quiz Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"thrive-quiz-builder\/thrive-quiz-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c2f3ec2a-5b09-4845-aa95-84841783fbfc":{"id":"plugin:a7f3e5206abff19ca7cf142260181738","title":"Thrive Ultimatum","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-ultimatum\/","var TVE_Ult_"],"is_default":0,"condition":"thrive-ultimatum\/thrive-ultimatum.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"d48b8d2f-e071-4a30-840a-306154a115a0":{"title":"Tidio Chat","condition":"tidio-live-chat\/tidio-elements.php","exclusions":["document.tidioChatCode"],"icon_url":"","summary":"Display the chat icon.","type":"plugin","id":"plugin:f57be2014b6a489d053f8367fa6c0f9f","is_default":0,"created_at":1724442883},"cb6d33ed-7eb4-4ff9-9ad0-7fc54fbecf6f":{"id":"plugin:c9e0485ec256d4a6a8d92a98c18d76fc","title":"Toolset Blocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","toolsetCommonEs.fontToHead","toolsetCommonEs.styleToHead","\/toolset-blocks\/vendor\/toolset\/blocks\/public\/js\/frontend.js","\/toolset-blocks\/vendor\/toolset\/common-es\/public\/toolset-common-es-frontend.js","\/toolset-blocks\/public\/js\/views-frontend.js","\/wp-includes\/js\/underscore.min.js"],"is_default":0,"condition":"toolset-blocks\/wp-views.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"4bac6350-0925-49fb-904a-372f22fd6baf":{"title":"Top Bar Pro","condition":"topbar-pro\/topbar_pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/topbar-pro\/js\/tpbr_front.min.js","\/plugins\/topbar-pro\/js\/jquery.cookie.js"],"icon_url":"","summary":"To prevent top bar from getting overlapped with other content.","type":"plugin","id":"plugin:71beda322b37f7fc7d456822493cb972","is_default":0,"created_at":1724443222},"033486e7-0ddc-4915-a848-31504d00448e":{"title":"Twenty20 Image Before-After","condition":"twenty20\/ttwenty.php","exclusions":["\/twenty20\/assets\/js\/(.*).js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","twentytwenty-container"],"icon_url":"","type":"plugin","id":"plugin:23441bba9d3602bc932d697c7cb8aa1f","is_default":0,"created_at":1677858089},"bef2147e-2d0b-431d-ac29-5e8430c0d809":{"title":"Typing Effect","condition":"animated-typing-effect\/typingeffect.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/animated-typing-effect\/assets\/js\/typed.js","\/plugins\/animated-typing-effect\/assets\/js\/typed.fe.js"],"icon_url":"","summary":"Show the animated typing effect on page load","type":"plugin","id":"plugin:e4e1a3e63d09a28dcb20577efbcb5a48","is_default":0,"created_at":1724443336},"7675a34d-006e-4672-99d5-a81e1b8e47f9":{"title":"UberMenu","condition":"ubermenu\/ubermenu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ubermenu\/assets\/js\/ubermenu.min.js"],"icon_url":"","summary":"To make mobile menu responsive immediately without any user interaction","type":"plugin","id":"plugin:3d59cc34167a7f8123e66b627148e0b7","is_default":0,"created_at":1724443357},"8233178a-e7b3-43ce-b193-bd0d9c960933":{"title":"Ultimate Addons for Elementor","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ultimate-elementor\/assets\/lib\/slick\/slick.min.js","\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js","\/ultimate-elementor\/assets\/lib\/isotope\/isotope.min.js","\/ultimate-elementor\/assets\/lib\/jquery-element-resize\/jquery_resize.min.js","\/ultimate-elementor\/assets\/lib\/fancybox\/jquery_fancybox.min.js","\/ultimate-elementor\/assets\/lib\/justifiedgallery\/justifiedgallery.min.js","\/ultimate-elementor\/assets\/min-js\/uael-posts.min.js","\/elementor-pro\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/elementor\/assets\/lib\/swiper\/swiper.min.js","\/nasa-core\/assets\/js\/min\/jquery.slick.min.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","summary":"To make header slider be displayed correctly on page load","type":"plugin","category":"analytics","id":"plugin:86424c46157c1c7e2e1571055813beee","is_default":0,"created_at":1742911351},"dfb47495-8a46-4caa-8c2a-50b02769dcb5":{"title":"Ultimate Addons for Elementor - Fancy Text Effects","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/plugins\/ultimate-elementor\/assets\/lib\/typed\/typed.min.js","\/plugins\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js"],"summary":"When Delay JavaScript Execution is enabled, the text effects don't work until user interaction.","icon_url":"","type":"plugin","id":"plugin:031c5b0ea0dce0a98a766aec5617b017","is_default":0,"created_at":1732107991},"42f39902-a813-4536-a561-29e2795ac097":{"title":"Ultimate Addons for Elementor - Google Maps","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ultimate-elementor\/assets\/lib\/slick\/slick.min.js","\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js","\/ultimate-elementor\/assets\/lib\/isotope\/isotope.min.js","\/ultimate-elementor\/assets\/lib\/jquery-element-resize\/jquery_resize.min.js","\/ultimate-elementor\/assets\/lib\/fancybox\/jquery_fancybox.min.js","\/ultimate-elementor\/assets\/lib\/justifiedgallery\/justifiedgallery.min.js","\/elementor-pro\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/elementor\/assets\/lib\/swiper\/swiper.min.js","\/nasa-core\/assets\/js\/min\/jquery.slick.min.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ultimate-elementor\/assets\/js\/uael-google-map.js","maps.googleapis.com","maps.google.com"],"summary":"Fixes an issue in which the map doesn't work","icon_url":"","type":"plugin","id":"plugin:a3256509256803fa8e9ebfedf73c4843","is_default":0,"created_at":1732565293},"8bddf484-6c78-4147-a4e6-d3039904e5f6":{"title":"Ultimate Addons for Elementor - Mobile Menu","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/ultimate-elementor\/assets\/js\/uael-nav-menu.js","\/ultimate-elementor\/assets\/min-js\/uael-nav-menu.min.js"],"icon_url":"","summary":"To make the mobile menu icon work as expected","type":"plugin","id":"plugin:70cfade3a7adbb54196f6acccc5a176f","is_default":0,"created_at":1724443394},"028504f7-b1cd-4318-8a6d-ce186197e89d":{"id":"plugin:0f0a91f0c454021a5ff9fc25c3ed419f","title":"Ultimate Addons for WPBakery Page Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Ultimate_VC_Addons\/assets\/"],"is_default":0,"condition":"Ultimate_VC_Addons\/Ultimate_VC_Addons.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"5754af3d-a6af-49eb-b731-bdd82f26dc4e":{"title":"Ultimate Responsive Image Slider","condition":"ultimate-responsive-image-slider\/ultimate-responsive-image-slider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","sliderPro"],"icon_url":"","summary":"To load the slider without any user interaction","type":"plugin","id":"plugin:34db8636812bad84c8aea037c2ddc8c2","is_default":0,"created_at":1724443418},"78ae882d-ae31-4179-b677-8893814938c7":{"title":"Unlimited Elements for Elementor Premium - Slider","condition":"unlimited-elements-for-elementor-premium\/unlimited-elements-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/unlimited-elements-for-elementor-premium\/","uc_"],"icon_url":"","type":"plugin","id":"plugin:17260bc347b8c29bee0010e9ec164184","is_default":0,"created_at":1683270377},"051cbfbb-7ad2-4f06-a493-3cf423a80904":{"title":"Variation Swatches for WooCommerce","condition":"woo-variation-swatches\/woo-variation-swatches.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery\/ui\/","\/woo-variation-swatches\/","\/woo-variation-swatches-pro\/","underscore.min.js"],"icon_url":"","summary":"Make some elements to load","type":"plugin","id":"plugin:6717ef5673a956bc08ca4a5117065d53","is_default":0,"created_at":1724443437},"6879caba-7224-4eca-bcb2-370785b495ea":{"title":"Web Accessibility By accessiBe","condition":"accessibe\/accessiebe.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/accessibe\/","acsbJS"],"icon_url":"","summary":"To preserve the functions of the plugin","type":"plugin","id":"plugin:57597b7683e01892932083413f085134","is_default":0,"created_at":1724443688},"bd6732fe-4c2b-40a1-9035-8464057e2da5":{"title":"WooCommerce - Cart Fragments","condition":"woocommerce\/woocommerce.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"icon_url":"","type":"plugin","id":"plugin:201de694c6fc28c8d580a3b2ca484218","is_default":0,"created_at":1680937567},"d044900d-07e1-4533-9516-33106efcb259":{"title":"WooCommerce - Product description","condition":"woocommerce\/woocommerce.php","exclusions":["\/plugins\/woocommerce\/assets\/js\/frontend\/single-product.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:a82644b4c9417ea3a240939a73344700","is_default":0,"created_at":1679309756},"bff953b1-2213-4666-8112-76a84a3cc207":{"title":"WooCommerce - Product Gallery","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/zoom\/jquery.zoom(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/photoswipe\/","\/woocommerce\/?(.*)\/assets\/js\/flexslider\/jquery.flexslider(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/frontend\/single-product(.min)?.js","wc_single_product_params"],"icon_url":"","type":"plugin","id":"plugin:7665868ff97c265628f376523a4f9ecc","is_default":0,"created_at":1686579689},"016e6ddf-c6e7-49ec-bd3f-2585d9e45895":{"title":"WooCommerce - Select2 library","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/assets\/js\/select2\/select2(.*).js"],"icon_url":"","type":"plugin","id":"plugin:4bca670bd5d55dd24b17fb0193b0891e","is_default":0,"created_at":1681459540},"b9b2c6d7-944f-4ae3-ae04-c9e2204b9dab":{"title":"WooCommerce Attribute Swatches","condition":"iconic-woo-attribute-swatches-premium\/iconic-woo-attribute-swatches.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/iconic-woo-attribute-swatches-premium\/assets\/frontend\/js\/main.min.js","\/iconic-woo-attribute-swatches-premium\/assets\/vendor\/flickity\/flickity.pkgd.min.js","iconic_was_vars"],"icon_url":"","summary":"Makes using attribute swatches not require two clicks","type":"plugin","id":"plugin:9165c768e978d6ad3f696db8c78ccbb2","is_default":0,"created_at":1724443452},"4506c5e9-7349-44c9-9967-34370c83facb":{"title":"WooCommerce Bookings","condition":"woocommerce-bookings\/woocommerce-bookings.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/woocommerce-bookings\/dist\/frontend.js","\/wp-includes\/js\/dist\/date.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/underscore.min.js","\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/wp-includes\/js\/dist\/hooks.min.js"],"icon_url":"","summary":"Make sure the calendar is displayed correctly","type":"plugin","id":"plugin:14dec6d289b9977fa3a74116feecebcc","is_default":0,"created_at":1724443469},"d1266110-86a0-4f84-af8e-512714e53010":{"title":"WooCommerce Food Menu | Foodify","condition":"woo-food-menu\/woo-food-menu.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/plugins\/woo-food-menu\/js\/ddaccordion.js","\/plugins\/woo-food-menu\/magnific-popup\/jquery.magnific-popup.js","\/plugins\/woo-food-menu\/js\/wfm.js","\/plugins\/woo-food-menu\/js\/jquery.colorbox.js"],"summary":"When Delay JavaScript Execution is enabled, the plus icon for the food items does not appear until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:4b2fb252dd4125dc63a5a849f29b96f0","is_default":0,"created_at":1765479354},"fec9cd04-c358-45da-a1a8-1668b964016b":{"id":"plugin:456f3b849ba3b6647246aca9d7cdaed5","title":"WooCommerce Product Reviews Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","wc_product_reviews_pro","\/woocommerce-product-reviews-pro\/assets\/js\/frontend\/wc-product-reviews-pro-frontend.min.js","\/woocommerce\/assets\/js\/jquery-tiptip\/jquery.tipTip.min.js"],"is_default":0,"condition":"woocommerce-product-reviews-pro\/woocommerce-product-reviews-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"551a9399-627f-4978-9bae-5cc8e0aefc82":{"id":"plugin:c8577e74eef3b082fb6403760d53f68c","title":"WooCommerce TM Extra Product Options","type":"plugin","icon":"","exclusions":["\/woocommerce-tm-extra-product-options\/assets\/js\/epo.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-util.min.js","\/wp-includes\/js\/dist\/hooks.js","\/wp-includes\/js\/dist\/i18n.js"],"is_default":0,"condition":"woocommerce-tm-extra-product-options\/tm-woo-extra-product-options.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"779b8e37-c537-4485-a23d-a5e7477ea965":{"title":"WooGallery - Product Gallery","condition":"gallery-slider-for-woocommerce\/woo-gallery-slider.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/gallery-slider-for-woocommerce\/public\/js\/woo-gallery-slider-public.min.js"],"summary":"When Delay JavaScript Execution is enabled, the product gallery don't load until user interaction.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:1b347b79ee74db1ff3b408370465e520","is_default":0,"created_at":1744711266},"3cac4650-6a52-448e-8e48-e99a772a59a2":{"title":"WooLentor","condition":"woolentor-addons\/woolentor_addons_elementor.php","exclusions":["\/woolementor\/assets\/third-party\/slick\/slick.min.js","\/woolentor-addons","woolentor_addons"],"icon_url":"","summary":"Display the carousel without interaction.","type":"plugin","id":"plugin:c6e6cab8c80fa3fe57d609f72d2d5c56","is_default":0,"created_at":1724443648},"21af073d-d2ec-4d46-bbda-2c69f87f3f98":{"title":"Woolentor - Fix product gallery","condition":"woolentor-addons\/woolentor_addons_elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)",".woolentor-learg-img","\/woolentor-addons\/assets\/js\/slick.min.js","\/woolentor-addons-pro\/assets\/lib\/js\/tippy.min.js"],"icon_url":"","summary":"Display the product gallery without interaction.","type":"plugin","id":"plugin:c5315e06dfc353cd57f85a60abe4e320","is_default":0,"created_at":1724443660},"67aeb4cb-1a00-4d10-a00c-34888b4c0dba":{"title":"WooThumbs for WooCommerce","condition":"woothumbs-premium\/woothumbs-premium.php","exclusions":["\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-embed.min.js","\/wp-includes\/js\/wp-util.min.js","\/woothumbs-premium\/(.*)"],"icon_url":"","summary":"To preserve the display of product variation images","type":"plugin","id":"plugin:b97b1d3f627769e1dd8305aa25af993c","is_default":0,"created_at":1724443675},"c7a14763-88d0-4344-a6af-e0a8dc5fa8d5":{"title":"WordPress Mega Menu \u2013 QuadMenu","condition":"quadmenu\/quadmenu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/quadmenu","#private-menu","#public-menu"],"icon_url":"","summary":"Show the menu on pageload","type":"plugin","id":"plugin:31b9e812a025e5750a6ef0980ee7d2db","is_default":0,"created_at":1724443871},"f699fdbd-84a7-4f24-b729-3e4a4f83a4dd":{"title":"WP Armour","condition":"wp-armour-extended\/wp-armour-extended.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/honeypot\/includes\/js\/wpa.js","\/wp-armour-extended\/includes\/js\/wpae.js","wpa_hidden_field","wpa_add_test"],"icon_url":"","summary":"To prevent marking all product reviews as spam.","type":"plugin","id":"plugin:601f8fc7d10cad1c2ec2949c0d9b1651","is_default":0,"created_at":1724443705},"697239fe-74f5-42a4-a504-97ee85bf43ff":{"title":"WP Booking Calendar","condition":"booking\/wpdev-booking.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/booking(.*)\/_dist\/all\/_out\/wpbc_all.js","\/wp-content\/plugins\/booking(.*)\/js\/datepick\/jquery.datepick.wpbc.9.0.js","\/wp-content\/plugins\/booking(.*)\/js\/wpbc_time-selector.js","\/wp-content\/plugins\/booking(.*)\/assets\/libs\/tippy.js","\/wp-content\/plugins\/booking(.*)\/assets\/libs\/popper\/popper.js","wpbc_init__head","wpbc_url_ajax","booking_max_monthes_in_calendar","wpbc_define_tippy_popover","flex_tl_table_loading"],"icon_url":"","type":"plugin","id":"plugin:fdaf786c076fa0f17eec1e321fee0b3f","is_default":0,"created_at":1720571754},"6a28aae5-ef91-43fc-8204-92e3a25642b4":{"id":"plugin:5728f3b9856dfe37a36ab15b0a637198","title":"WP Go Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com"],"is_default":0,"condition":"wp-google-maps\/wpGoogleMaps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c9b991d1-a653-404b-be85-e276b1814e7d":{"title":"WP Go Maps Gold","condition":"wp-google-maps-gold\/wp-google-maps-gold.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","maps.google.com\/maps\/api\/js","\/wp-includes\/js\/masonry.min.js","\/wp-google-maps-gold\/(.*)"],"summary":"Loads map on page load and fixes map not displayed after user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:b08baa6d8ba316accee727f2fa23efef","is_default":0,"created_at":1765279015},"1f8f9fbf-fbf0-4e3a-b77c-af0fa47e950d":{"title":"WP Go Maps Pro","condition":"wp-google-maps-pro\/wp-google-maps-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-google-maps(.*)","maps.googleapis.com","mgl_","wpgmza"],"summary":"Loads map on page load and fixes map not displayed after user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:8dad943d1b93e677e2290b2bc13aa36d","is_default":0,"created_at":1765278929},"41e4b98c-e63f-4800-a478-02592562322b":{"title":"WP iCal Availability","condition":"wp-ical-availability\/wp-ical-availability.php","exclusions":["\/wp-ical-availability\/js\/custom-select.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-ical-availability\/"],"icon_url":"","summary":"Fixes error when jQuery is already excluded, & Fully render the calendar on page load","type":"plugin","id":"plugin:3735ca768ede98b25795f4cb057ff4ed","is_default":0,"created_at":1724444622},"2b06c5b8-dc32-4bb0-8504-3a9f1c3a1ec0":{"title":"WP MapIt","condition":"wp-mapit\/wp_mapit.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-mapit\/wp_mapit\/js\/leaflet.js","\/wp-mapit\/wp_mapit\/js\/wp_mapit_multipin.js"],"icon_url":"","summary":"Display the map on page load","type":"plugin","id":"plugin:ba8d1c7f294a3f5b593556eb3b0bc7d9","is_default":0,"created_at":1724443719},"2039eafd-1c11-4e21-a61b-30857f291ae3":{"title":"WP Responsive Menu","condition":"wp-responsive-menu\/wp-responsive-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-responsive-menu\/(.*)"],"icon_url":"","summary":"Render the menu on page load","type":"plugin","id":"plugin:927b8bf7806f2d287559b86a0b455a59","is_default":0,"created_at":1724443736},"e06be942-cccd-4b2d-a268-06dc78f0b820":{"title":"WP Search with Algolia","condition":"wp-search-with-algolia\/algolia.php","exclusions":["\/wp-search-with-algolia\/js\/algoliasearch\/dist\/algoliasearch-lite.umd.js","\/wp-search-with-algolia\/js\/autocomplete-noconflict.js","\/wp-search-with-algolia\/js\/autocomplete.js\/dist\/autocomplete.min.js","var algolia"],"icon_url":"","summary":"Fixes the search function and its related console errors.","type":"plugin","id":"plugin:43267e659d599fbb6b42c719b49bb7a7","is_default":0,"created_at":1724443749},"4fc2a7ae-b9e6-410e-93cf-e6d1962add6a":{"title":"WP Smart Preloader","condition":"wp-smart-preloader\/wp-preloader.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-smart-preloader\/assets\/js\/wsp-main-script(.min)?.js"],"icon_url":"","summary":"Allows the preloader to work without user interaction, and resolves GTMetrix\/PageSpeed Insights test.","type":"plugin","id":"plugin:4fb90fc73fc2b5d1e37ea2dadfd3cef3","is_default":0,"created_at":1724443814},"7ecf40ce-2bcd-412c-bb01-9e71fecf6be8":{"title":"WP Store Locator","condition":"wp-store-locator\/wp-store-locator.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-store-locator\/","\/wp-includes\/js\/underscore.min.js","maps.google.com"],"icon_url":"","summary":"Show the map on page load.","type":"plugin","id":"plugin:d37bb5054a24471ca1675d9ab49d01b0","is_default":0,"created_at":1724443828},"7a1d19a2-3a48-40ab-8051-f642fc63ce2d":{"title":"WP Ultimate Post Grid","condition":"wp-ultimate-post-grid\/wp-ultimate-post-grid.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-ultimate-post-grid\/dist\/public.js","\/wp-ultimate-post-grid-premium\/dist\/public-premium.js","wpupg_grid_args"],"icon_url":"","summary":"Show the dropdown selector\/filter option","type":"plugin","id":"plugin:e24341fef49bd64b89682d583218c108","is_default":0,"created_at":1724443858},"76c86163-ddf3-4113-b620-de9d5058f505":{"title":"WPBakery Page Builder","condition":"js_composer\/js_composer.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js"],"icon_url":"","summary":"Fire sliders, animations, full-width elements resizing without user interaction","type":"plugin","id":"plugin:517d7d24da9a7072ed389d0fb30374a0","is_default":0,"created_at":1724444340},"0b8ff2c0-c3cd-4ec1-b7f5-c7751de6101b":{"title":"WPBakery Page Builder - Carousel","condition":"js_composer\/js_composer.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/js_composer\/assets\/lib\/vc_carousel\/js\/vc_carousel.min.js"],"icon_url":"","summary":"Fire carousels without user interaction.","type":"plugin","id":"plugin:76336ed3f04df091e669f89d908ef2ed","is_default":0,"created_at":1724444319},"4f5e5b98-c326-4b9f-9ada-3b257862132c":{"id":"plugin:1ec7138c950c355e7af60d49c81139fc","title":"wpDataTables","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wpdatatables\/","highcharts"],"is_default":0,"condition":"wpdatatables\/wpdatatables.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"18be1b8c-0bc4-4a01-abc6-a127aff380c6":{"title":"WPForms","condition":"wpforms\/wpforms.php","exclusions":["\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra","wpformsRecaptchaLoad","\/wpforms\/assets\/lib\/jquery.validate.min.js","\/wpforms\/assets\/js\/share\/utils.min.js"],"icon_url":"","summary":"Prevents issues with redirect to Thank you page.","type":"plugin","category":"analytics","id":"plugin:c62ca58ea081c1271de8dadfa7daac69","is_default":0,"created_at":1742578021},"3ee8683e-e9d2-4c5c-b6f5-13c38827d2a2":{"title":"WPForms - Fix telephone field","condition":"wpforms\/wpforms.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wpforms\/assets\/pro\/lib\/intl-tel-input\/module.intl-tel-input.min.js","\/wpforms\/assets\/js\/frontend\/wpforms.min.js","\/wpforms-signatures\/assets\/js\/wpforms-signatures.min.js","\/wpforms-signatures\/assets\/js\/signature_pad.min.js","\/wpforms\/assets\/pro\/js\/frontend\/fields\/phone.min.js","\/wpforms\/assets\/pro\/lib\/intl-tel-input\/intlTelInputWithUtils.min.js"],"icon_url":"","summary":"Fix an issue with the telephone field in which this needs interaction to load.","type":"plugin","category":"analytics","id":"plugin:737442051c0ae65ebfbc06316a63c6ce","is_default":0,"created_at":1767635598},"138b2894-25d2-47ce-b33d-cbf1256d8f45":{"title":"WPForms - Loader GIF","condition":"wpforms\/wpforms.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wpforms-conversational-forms\/assets\/js\/conversational-forms.es5.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the loader GIF stays until user interaction.","type":"plugin","id":"plugin:03dc6ae2848dd60e1d4f4f86015c22f0","is_default":0,"created_at":1724444364},"8a3cacb6-81bd-456a-a1cc-a4025f8e5234":{"id":"plugin:0992ac952c0a05bb35e18b1d5744d346","title":"WPForms Lite","type":"plugin","icon":"","exclusions":["wpformsRecaptchaLoad","\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra"],"is_default":0,"condition":"wpforms-lite\/wpforms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"98bbd410-5b01-4244-a8eb-715765180328":{"title":"XL WooCommerce Sales Triggers","condition":"xl-woocommerce-sales-triggers\/xl-woocommerce-sales-triggers.php","exclusions":["\/xl-woocommerce-sales-triggers\/assets\/js\/wcst_combined.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:ba9e526ddb0157e69757530c6b18b714","is_default":0,"created_at":1677856813},"9d471012-ed59-486b-87ca-d52eb80c29a4":{"title":"YayCurrency Pro - Show Currency Switcher","condition":"yaycurrency-pro\/yay-currency.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/yaycurrency-pro\/"],"summary":"Show currency switcher without user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:8cf794ac4ebf3cd651971fe30c75b26d","is_default":0,"created_at":1742845339},"bf9f9620-dd0e-4e6f-9a45-4eb78a148f42":{"title":"YITH WooCommerce Ajax Product Filter","condition":"yith-woocommerce-ajax-navigation\/init.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-navigation\/assets\/js\/yith-wcan-shortcodes.min.js"],"icon_url":"","summary":"Display product filters on mobile without interaction","type":"plugin","id":"plugin:58663fc781232169e865f6fe7cf1afaa","is_default":0,"created_at":1724444671},"b053279d-e07c-438c-bb3e-3a1f4f5d7c5e":{"title":"YITH WooCommerce AJAX Product Filter Premium","condition":"yith-woocommerce-ajax-product-filter-premium\/init.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-product-filter-premium\/assets\/js\/yith-wcan-shortcodes.min.js"],"icon_url":"","summary":"Display product filters on mobile without interaction","type":"plugin","id":"plugin:68b637fd247e40c8e135e4771d739b07","is_default":0,"created_at":1724444677},"62056165-8bd9-4ff0-b21f-e4ed0ae45fae":{"title":"YITH WooCommerce Points and Rewards","condition":"yith-woocommerce-points-and-rewards-premium\/init.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/yith-woocommerce-points-and-rewards-premium\/assets\/js\/frontend.min.js","\/woo-variation-swatches-pro\/assets\/js\/add-to-cart-variation.min.js"],"icon_url":"","summary":"Display rewards points notification without interaction","type":"plugin","id":"plugin:4acc87d4eb72c86cdea76d180b61a098","is_default":0,"created_at":1724444693},"106395a7-bee9-41d9-8bd5-0e8ad84b478e":{"title":"YITH WooCommerce Wishlist","condition":"yith-woocommerce-wishlist-premium\/init.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/add-to-wishlist-gutenberg.min.js","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/dist\/components\/add-to-wishlist\/index.js","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/jquery.selectBox.min.js","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/jquery.yith-wcwl.min.js","\/plugins\/yith-woocommerce-wishlist-premium\/plugin-fw\/dist\/lapilli-ui\/components\/index.js","\/plugins\/yith-woocommerce-wishlist-premium\/plugin-fw\/dist\/lapilli-ui\/date\/index.js","\/plugins\/yith-woocommerce-wishlist-premium\/plugin-fw\/dist\/lapilli-ui\/styles\/index.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js","\/wp-includes\/js\/dist\/vendor\/lodash.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/url.min.js","wp\\.apiFetch\\.createRootURLMiddleware\\(","window\\.lodash"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the add to wishlist button does not show or work.\r\n\r\nThis allowed the add to wishlist button work while Load JavaScript Deferred was also enabled, but enabling Load JavaScript Deferred caused some console errors, which were may be resolved using these exclusions:\r\n\r\n\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)\r\n\/wp-includes\/js\/dist\/date.min.js\r\n\/wp-includes\/js\/dist\/vendor\/moment.min.js","type":"plugin","category":"analytics","id":"plugin:dfc96a6440c1b9f9bdcb5806af7cc2f9","is_default":0,"created_at":1771882657},"d94dbbf3-bcab-4e47-9fbb-6b3a7cf92787":{"title":"Yotpo Social Reviews for Woocommerce","condition":"yotpo-social-reviews-for-woocommerce\/wc_yotpo.php","exclusions":["\/yotpo-social-reviews-for-woocommerce\/assets\/js\/headerScript.js"],"icon_url":"","type":"plugin","id":"plugin:45ab742b3fccbd04d7bc973c8582be87","is_default":0,"created_at":1680686421},"51dccf53-5cc7-4283-9ab1-01d34c6cce22":{"title":"Zoho SalesIQ","condition":"zoho-salesiq\/index.php","exclusions":["zoho.salesiq"],"icon_url":"","summary":"Display chat without interaction","type":"plugin","id":"plugin:b96c3865575068aac82c973eb3e3c52a","is_default":0,"created_at":1724444708}},"themes":{"9aeea459-91d3-44b6-8a26-b883dca8b402":{"title":"Agensy - Load page without User Interaction","condition":"agensy","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/agensy\/js\/scripts.js","\/themes\/agensy\/js\/scripts-single.js","\/themes\/agensy\/js\/wow.min.js","\/themes\/agensy\/js\/TweenMax.min.js","\/themes\/agensy\/js\/swiper.min.js","\/plugins\/visualcomposer\/assets\/lib\/bower\/isotope\/dist\/isotope.pkgd.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Load page without user interaction.","type":"theme","id":"theme:7ab7dfeb0db9c0c74c020be318c2e6d9","is_default":0,"created_at":1724424755},"9c623554-5834-4669-9e96-1b894c1939b2":{"title":"Andaman","condition":"andaman","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/andaman\/assets\/js\/","\/wp-andaman-plugins\/shortcodes\/vc_extend\/"],"icon_url":"","summary":"Unstuck the page loader (only use when jQuery is already excluded).","type":"theme","id":"theme:0193ea55fce2ada93b262f2824008c0f","is_default":0,"created_at":1724424778},"7374c5a5-69f8-460f-b44f-dee884a824cd":{"title":"Artale","condition":"artale","exclusions":["\/artale-elementor\/assets\/js\/modulobox.js","\/artale-elementor\/assets\/js\/artale-elementor.js","\/artale\/js\/jquery-stellar.js","\/artale\/js\/core\/artale-plugins.js","\/artale\/js\/core\/artale-custom.js","var loader"],"icon_url":"","summary":"Fixes the page loader (not closing) and display the main menu.","type":"theme","id":"theme:24cbda63f1b898ade5562ab4ec6d97a5","is_default":0,"created_at":1724424807},"23b01203-2a70-4394-9326-d59824def2d7":{"title":"Ashe Pro Premium","condition":"ashe-pro-premium","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ashe-pro-premium\/"],"icon_url":"","summary":"Display mobile header without user interaction","type":"theme","id":"theme:4791da3cbbd1ed86253a087f0287aeb4","is_default":0,"created_at":1724426464},"03a9cc62-c167-447d-beb2-65c76c96b056":{"title":"Astra","condition":"astra","exclusions":["\/astra\/assets\/js\/minified\/frontend.min.js","replace\\(\/woocommerce-no-js\/,"],"icon_url":"","type":"theme","id":"theme:3cce5f3eaf76e098ba8e28f7bbba3f92","is_default":0,"created_at":1712608792},"2a2b54cb-8e1d-49d2-bfca-93eee231e470":{"title":"Astra - Carousel","condition":"astra","exclusions":["var astra","\/astra\/assets\/js\/minified\/style.min.js"],"icon_url":"","summary":"Load carousel","type":"theme","id":"theme:72a8d63e59c10bdf512a62b862d143a7","is_default":0,"created_at":1724426844},"ff22ab98-07e0-4faa-8994-4c811410acec":{"title":"Astra Pro - Reveal Effect option","condition":"astra","exclusions":["\/plugins\/astra-addon\/assets\/js\/minified\/blog-reveal.min.js","\/plugins\/astra-addon\/assets\/js\/minified\/reveal-effect.min.js"],"summary":"Show elements without interaction","icon_url":"","type":"theme","category":"analytics","id":"theme:10f23506c0da1886b9594093cbf3463e","is_default":0,"created_at":1758832506},"7783361f-66fc-4d95-a054-4e9545bb5b48":{"title":"Auteur","condition":"g5plus-auteur","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/g5plus-auteur\/assets\/js\/core.min.js","\/g5plus-auteur\/assets\/vendors\/","\/auteur-framework\/libs\/smart-framework\/assets\/vendors\/perfect-scrollbar\/js\/perfect-scrollbar.jquery.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Fire the slider on pageload","type":"theme","id":"theme:6207fe478e269e7547bda70a46607a49","is_default":0,"created_at":1724427467},"4c618038-8fc7-4d48-8d41-a32da14e5c1e":{"title":"AutoTrader","condition":"autotrader","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/autotrader\/(.*).js"],"icon_url":"","type":"theme","id":"theme:046dfeee2b77390c53e0e7f93b6a3792","is_default":0,"created_at":1679736741},"18f04f23-35a0-4c45-8cb6-a91d57ca1790":{"id":"theme:835da12f43373029659f766920e81b47","title":"Avada - Animations & mobile-specific actions","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).js","window.off_canvas_","\/plugins\/fusion-builder\/","\/plugins\/fusion-core\/","\/Avada\/includes\/"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"90135867-1b95-498b-80d6-f5dbf2f6b318":{"title":"Avada - FAQ shortcode","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/fusion-core\/js\/min\/avada-faqs.js"],"icon_url":"","summary":"Displays content created with the FAQ shortcode","type":"theme","id":"theme:b084708c80d8582546e5430219aa4670","is_default":0,"created_at":1724427150},"d23b5bb1-1d7f-4109-bf69-b20a2be2d337":{"title":"Avada - Fusion carousel","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.carouFredSel.js","\/includes\/lib\/assets\/min\/js\/general\/fusion-carousel.js","fusionCarouselVars"],"icon_url":"","summary":"Display carousel on pageload","type":"theme","id":"theme:5e7a2248e1a53d9bb27b187deb541248","is_default":0,"created_at":1724427016},"98dfa8c1-e72a-4cef-a0b2-8f0c322490fc":{"title":"Avada - Fusion form","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form-logics.js","\/includes\/lib\/assets\/min\/js\/library\/cssua.js","\/includes\/lib\/assets\/min\/js\/general\/fusion.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js"],"icon_url":"","summary":"To allow submitting forms","type":"theme","id":"theme:f16fb109027f4994a7649a8b1663e6f7","is_default":0,"created_at":1724427132},"026801fa-af67-47ba-b966-347693f0585f":{"title":"Avada - Fusion grid gallery","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-gallery.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js"],"icon_url":"","summary":"Display fusion grid gallery without delay","type":"theme","id":"theme:33f50696d353d8bd4eb59ff6e8f44c97","is_default":0,"created_at":1724426998},"c8349314-15a3-481e-973b-e4d936e4420e":{"title":"Avada - Fusion slider","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-core\/js\/min\/avada-fusion-slider.js","\/Avada\/includes\/"],"icon_url":"","summary":"Display fusion slider without delay","type":"theme","id":"theme:56fa9993a573540c83eda9c49fae5e3c","is_default":0,"created_at":1724426978},"7a04bc85-0fec-4487-ae05-bb2e5d8d0420":{"title":"Avada - Load Portfolio on pageload","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/library\/packery.js","\/library\/isotope.js","\/library\/imagesLoaded.js","\/general\/fusion-lightbox.js","\/fusion-core\/js\/min\/avada-portfolio.js"],"icon_url":"","summary":"Load Portfolio on pageload","type":"theme","id":"theme:c3f0ed4d94499b68c77d95db37d1d399","is_default":0,"created_at":1724427228},"55bd510c-78aa-49d5-8304-8be2ee2ab0da":{"title":"Avada - Mobile menu","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-menu.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.easing.js"],"icon_url":"","summary":"Load mobile menu scripts without a delay","type":"theme","id":"theme:2189c1c769d65cfc2182e4822847071b","is_default":0,"created_at":1724427273},"ddf00672-c35c-4b68-aeca-925e68bf12b2":{"title":"Avada - OffCanvas","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).min.js","window.off_canvas_"],"icon_url":"","summary":"Load Off Canvas pop-ups without user interaction","type":"theme","id":"theme:97a185f08af70c39c7e221faab0f73eb","is_default":0,"created_at":1724427179},"17544cc3-9d3a-4611-bc5d-44d04e2786fa":{"title":"Avada - Show the Portfolio grid on page load","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/fusion-core\/js\/min\/avada-portfolio.js","avadaPortfolioVars"],"icon_url":"","type":"theme","id":"theme:9d1a9b0c2ca20fca764a82f197b962fd","is_default":0,"created_at":1696601823},"c6c3347c-14e0-4766-afa5-df33a47f5a5a":{"title":"Avada - Sticky menu","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Avada\/assets\/min\/js\/general\/avada-menu.js"],"icon_url":"","summary":"Fix sticky menu","type":"theme","id":"theme:3ff44421b404c5efffa25e78e479e4ea","is_default":0,"created_at":1724427248},"232596c1-6a6a-4fe8-a5c3-a60fa74a9456":{"id":"theme:0d727d80bb132f17c737e55883fe4be0","title":"Avada - WooCommerce product gallery","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-woo-product-images.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.flexslider.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"95ece7e4-3b19-45e5-aa28-14f833c9afca":{"title":"Avesa","condition":"avesa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/avesa\/js\/main.js","\/avesa\/js\/isotope.js","\/sw_core\/js\/slick.min.js","\/avesa\/js\/bootstrap-datetimepicker.min.js","\/avesa\/js\/bootstrap.min.js"],"icon_url":"","summary":"Display images on product pages.","type":"theme","id":"theme:aad8bfcc594eec02e3b0d635198dee5e","is_default":0,"created_at":1724427449},"88f58a9c-8312-4a4c-8183-b3192eedbe17":{"title":"Bambino - Show Header on Page Load","condition":"bambino","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/themes\/bambino\/framework\/js\/header.misc.js","\/plugins\/bold-page-builder\/content_elements\/bt_bb_section\/bt_bb_elements.js","\/plugins\/bold-page-builder\/content_elements_misc\/js\/content_elements.js","maps.googleapis.com","maps.google.com"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the header doesn't show until interaction with the page.\r\n\r\nNotes:\r\n\r\n\u2022 The Bold Page Builder plugin is made by the same party as the theme and they work closely together\r\n\r\n\u2022 Google maps exclusions are included because console errors happen otherwise. It's okay to include these exclusions because the Bold Page Builder is applying the code related to Google Maps and related to the error:\r\nhttps:\/\/imagizer.imageshack.com\/a\/img924\/1328\/UCCTbc.png","type":"theme","category":"analytics","id":"theme:768bafdd8382fa03d858f585230c3c51","is_default":0,"created_at":1744389947},"f2bfe477-4e45-4e52-a7d9-4d0ba3a92258":{"title":"Besa","condition":"besa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/besa\/js\/"],"icon_url":"","summary":"Trigger animations and makes the mobile menu immediately responsive","type":"theme","id":"theme:c238e89523c46ca28b08e401f42f6ccc","is_default":0,"created_at":1724427619},"bd94908c-8138-4995-986b-47ec66494bdd":{"title":"BeTheme","condition":"betheme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/betheme\/","mfn","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"icon_url":"","summary":"Trigger animations and makes the mobile menu immediately responsive","type":"theme","id":"theme:b99156eb9eeb357c0a70bd3bda6861cc","is_default":0,"created_at":1724427590},"190d2f1a-72a6-40ca-b08a-5c7ee7b0a6a5":{"title":"Bosa Online Education - Fixes animations and preloader","condition":"bosa-online-education","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/bosa\/assets\/js\/jquery.slicknav.min.js","\/bosa\/assets\/slick\/slick.min.js","\/bosa\/assets\/js\/navigation.js","\/bosa\/assets\/js\/custom.min.js","\/bosa\/assets\/js\/theia-sticky-sidebar.min.js"],"icon_url":"","summary":"Fix for the loading animation and displaying mobile menu.","type":"theme","id":"theme:5430bf7b83c83a3687b3b7b437e961b0","is_default":0,"created_at":1724427748},"7ae0e798-ea3b-43c6-b741-a46801b6e6ba":{"title":"Bricks - Load Content","condition":"bricks","exclusions":["\/themes\/bricks\/assets\/js\/bricks.min.js","\/themes\/bricks\/assets\/js\/libs\/splide.min.js"],"summary":"When Delay JavaScript Execution is enabled, videos that should autoplay don't play and image carousels don't load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:c0d4df9616ecbbeb395b520043817e84","is_default":0,"created_at":1755805528},"6fb2b9d7-6ecc-4260-999c-938fbebdbf01":{"title":"Bridge","condition":"bridge","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/bridge-creative\/bridge\/js\/","\/wp-includes\/js\/","\/themes\/bridge\/js\/plugins\/abstractBaseClass.js"],"icon_url":"","summary":"This was created some time ago and with no notes, so hard to know why it was created.\r\n\r\nIn an update, I needed to add the following exclusion to prevent a console error:\r\n\/themes\/bridge\/js\/plugins\/abstractBaseClass.js\r\n\r\nIt should be noted that this uses the old regex for excluding jQuery, which appears to accidentally match and exclude over 20 other scripts as well:\r\n\r\nhttps:\/\/mega.wp-rocket.me\/bridge\/\r\nhttps:\/\/regex101.com\/r\/hstZ0q\/1","type":"theme","id":"theme:de8504b73ea228d0ea9bbce69752092e","is_default":0,"created_at":1730991059},"1dd63427-b4c9-4596-b952-ac711e3637f9":{"title":"Bridge - Load elements without user interaction","condition":"bridge","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/hoverIntent.min.js","\/wp-includes\/js\/mediaelement\/wp-mediaelement.min.js","\/wp-includes\/js\/mediaelement\/mediaelement-migrate.min.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","\/wp-content\/themes\/bridge\/js\/default.min.js","\/wp-content\/themes\/bridge\/js\/plugins.js","\/wp-content\/themes\/bridge\/js\/default_dynamic.js","\/wp-content\/themes\/bridge\/js\/jquery.touchSwipe.min.js","\/themes\/bridge\/js\/default_dynamic_callback.js","\/themes\/bridge\/js\/plugins\/doubletaptogo.js","\/themes\/bridge\/js\/plugins\/abstractBaseClass.js","\/themes\/bridge\/js\/plugins\/mixitup.js","\/themes\/bridge\/js\/plugins\/jquery.appear.js","\/themes\/bridge\/js\/plugins\/jquery.prettyPhoto.js","\/themes\/bridge\/js\/plugins\/jquery.flexslider-min.js","\/themes\/bridge\/js\/plugins\/jquery.fitvids.js","\/themes\/bridge\/js\/plugins\/jquery.carouFredSel-(.*).min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, some elements don't load without user interaction.\r\n\r\nUpdate: Needed to add some additional exclusions to prevent console errors and allow the mobile menu to work (mobile menu works without any exclusions, but enabling this one-click exclusion caused the menu to not work before these additional exclusions were added):\r\n\r\n\/themes\/bridge\/js\/default_dynamic_callback.js\r\n\/themes\/bridge\/js\/plugins\/doubletaptogo.js\r\n\/themes\/bridge\/js\/plugins\/abstractBaseClass.js\r\n\/themes\/bridge\/js\/plugins\/mixitup.js\r\n\/themes\/bridge\/js\/plugins\/jquery.appear.js\r\n\/themes\/bridge\/js\/plugins\/jquery.prettyPhoto.js\r\n\/themes\/bridge\/js\/plugins\/jquery.flexslider-min.js\r\n\/themes\/bridge\/js\/plugins\/jquery.fitvids.js\r\n\/themes\/bridge\/js\/plugins\/jquery.carouFredSel-(.*).min.js\r\n\/wp-includes\/js\/hoverIntent.min.js\r\n\/wp-includes\/js\/mediaelement\/wp-mediaelement.min.js\r\n\/wp-includes\/js\/mediaelement\/mediaelement-migrate.min.js\r\n\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","type":"theme","id":"theme:ad9b810efd365ad9a27987d2912b94cd","is_default":0,"created_at":1730991278},"e1afeb67-fd2b-404c-84e3-a6927765d1a3":{"title":"BuddyBoss","condition":"buddyboss-theme","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-includes\/js\/masonry.min.js","\/wp-includes\/js\/underscore.min.js","\/plugins\/buddyboss-platform\/bp-core\/js\/vendor\/magnific-popup.js","\/plugins\/buddyboss-platform\/bp-templates\/bp-nouveau\/js\/buddypress-nouveau.min.js","\/themes\/buddyboss-theme\/assets\/js\/main.js","\/themes\/buddyboss-theme\/assets\/js\/main.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/menu.js","\/themes\/buddyboss-theme\/assets\/js\/plugins\/bb-woocommerce.js","\/themes\/buddyboss-theme\/assets\/js\/plugins\/elementor.js","\/themes\/buddyboss-theme\/assets\/js\/plugins\/learndash.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/fitvids.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/jssocials.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/mousewheel.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/panelslider.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/progressbar.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/select2.full.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/slick.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/sticky-kit.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/validate.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, content won't load until user interaction. \r\n\r\nAlso fixes issue where menu popups don't work.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/173","type":"theme","category":"analytics","id":"theme:be1f26c456c46c5089be61f5e4d4428c","is_default":0,"created_at":1755263118},"65698b6b-85dd-41ef-8fd7-718f1e983dba":{"title":"Car Dealer","condition":"cardealer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/(.*)","\/cardealer\/js\/(.*)"],"icon_url":"","summary":"Fix slider and form console errors","type":"theme","id":"theme:b1111424fff61af8d1e152dcdd6810f6","is_default":0,"created_at":1724428045},"3927d724-5a0a-402b-a838-858d30b54ea9":{"title":"Cardea - Show Page Content on Load","condition":"cardea-wp","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/cardea-wp\/js\/main.js","\/themes\/cardea-wp\/js\/jquery.sticky.js","\/themes\/cardea-wp\/js\/jquery.fitvids.js","\/themes\/cardea-wp\/js\/jquery.smartmenus.min.js"],"icon_url":"","summary":"Show content on page load","type":"theme","id":"theme:d65d1a8303b0c7508278884520e4bec7","is_default":0,"created_at":1724428028},"087fb457-a09d-4140-84bd-c9bc1e8195b7":{"title":"CheerUp","condition":"cheerup","exclusions":["\/cheerup\/js\/jquery.sticky-sidebar.js","\/cheerup\/js\/object-fit-images.js","\/cheerup\/js\/jquery.fitvids.js","\/cheerup\/js\/jquery.mfp-lightbox.js","\/cheerup\/js\/ie-polyfills.js","\/cheerup\/js\/theme.js","\/wp-includes\/js\/imagesloaded.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/jquery.min.js"],"icon_url":"","summary":"Fix an issue with the links in the menu.","type":"theme","id":"theme:13bcf562f45afb245dc4f76fecfba6d6","is_default":0,"created_at":1724428063},"eb86aedb-91e6-480c-b76c-756ac1da41be":{"title":"Clover","condition":"clover-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/clover-theme\/"],"icon_url":"","summary":"Load the hamburger menu.","type":"theme","id":"theme:89372f3d9321ae09c94488592084da29","is_default":0,"created_at":1724428083},"6e90b649-5736-497f-9bc6-515900cfea8a":{"title":"Divi 4 - Animations","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI"],"summary":"When Delay JavaScript Execution is enabled, some content does not load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:f232d8d7c7a5ac7f86040ebad08c295c","is_default":0,"created_at":1773241287},"70916c43-4e02-4932-b6aa-91a1815bc755":{"title":"Divi 4 - Background video","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/custom.unified.js","\/js\/mediaelement\/(.*)","mejs"],"summary":"Play video background on page load","icon_url":"","type":"theme","category":"analytics","id":"theme:713fcea72b704a77a2b01e65e3b9b4be","is_default":0,"created_at":1773241342},"08531785-9818-4e30-903e-564637a2ad7a":{"title":"Divi 4 - Counter module","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js"],"summary":"Compatibility with the Number Counter module","icon_url":"","type":"theme","category":"analytics","id":"theme:5cde03e83c588cd8c4e7490a2e84a7ef","is_default":0,"created_at":1773240138},"1d63dd7c-7bc7-4629-b03d-0437e177af32":{"title":"Divi 4 - Load Animated Elements on Page Load","condition":"Divi","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/salvattore.js"],"summary":"When Delay JavaScript Execution is enabled, some content does not load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:422470ae1a30f4f0fd99a8f15751ed92","is_default":0,"created_at":1773240205},"b996762a-84ef-440d-a089-73a187936fbf":{"title":"Divi 4 - Mobile menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js"],"summary":"Avoids a double tap to open the mobile menu","icon_url":"","type":"theme","category":"analytics","id":"theme:8105de36585b460f035e378abaf066ad","is_default":0,"created_at":1773241393},"ae096e1e-9c36-46ad-a3d1-c26ea507276b":{"title":"Divi 4 - Sticky elements","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/sticky-elements.js","var DIVI"],"summary":"Enable sticky elements on page load.","icon_url":"","type":"theme","category":"analytics","id":"theme:c5dbde7698f50b02f3991975280e1f99","is_default":0,"created_at":1773241365},"349f31f0-dd10-41d3-b0a4-9c5df64879f8":{"title":"Divi 4 - Sticky menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/js\/jquery\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/magnific-popup.js","jqueryParams","firstHeader"],"summary":"Hide sticky menu on page load.\r\n\r\nAvoid white flash when using this trick to prevent Divi's own flashing: \r\n\r\nelm.style.display","icon_url":"","type":"theme","category":"analytics","id":"theme:577daf839a4d88bba14d1462db2da031","is_default":0,"created_at":1773241380},"59563458-5f04-4959-b3e2-53e49e169d67":{"title":"Divi 4 - WooCommerce Single Product Images","condition":"Divi","exclusions":["\/Divi\/js\/scripts.min.js"],"summary":"When Delay JavaScript Execution is enabled, some content does not load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:338556af431f9e85d226bbbf8d635cf1","is_default":0,"created_at":1773241317},"6426539e-4e43-4fef-ab5a-3eb7b2a8b057":{"title":"Eikra","condition":"eikra","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/eikra\/assets\/js\/","EikraObj"],"icon_url":"","summary":"Fixes preloader not closing.","type":"theme","id":"theme:55d2581ad975eb6325bc97fc3d3b0cb8","is_default":0,"created_at":1724429672},"59020bd6-069f-4f2d-afa2-fbdefa03211c":{"title":"Ekko","condition":"ekko","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ekko\/"],"icon_url":"","summary":"Fixes preloader (blank page) not closing.","type":"theme","id":"theme:2c06f4a1949f8ba4e77042a47674fd9e","is_default":0,"created_at":1724429886},"d82f5cdd-c5d3-4596-94dc-1e25aaff2083":{"title":"Elessi","condition":"elessi-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elessi-theme\/assets\/js\/min\/functions.min.js","\/elessi-theme\/assets\/js\/min\/main.min.js"],"icon_url":"","type":"theme","id":"theme:d5d2b7fda7b8a2b5b91d430f7602e230","is_default":0,"created_at":1679737773},"f0587c21-54d0-429d-8efe-18a93dacb18d":{"id":"theme:5fc04cc678cb54567aedb51027933002","title":"Enfold","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/dynamic_avia\/avia-footer-scripts-(.*).js","var avia_is_mobile"],"is_default":0,"condition":"enfold","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c93ee1ee-3956-4278-9ee9-1a0968753e86":{"title":"Enfold - Fix hamburger menu","condition":"enfold","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/enfold\/js\/avia-snippet-hamburger-menu.js","\/enfold\/js\/avia.js","\/enfold\/js\/shortcodes.js","\/enfold\/js\/waypoints\/waypoints.js"],"icon_url":"","type":"theme","id":"theme:2b0c22c5169b94c2eabb125d18915246","is_default":0,"created_at":1715090218},"cc0550cb-918e-419d-b4f2-1809cf666dbb":{"title":"Enfold - LayerSlider","condition":"enfold","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","layerslider"],"icon_url":"","summary":"Loads the slider without user interaction when using Enfold's Layerslider implementation","type":"theme","id":"theme:eb759a03d0ca292c948f09d004a2963f","is_default":0,"created_at":1724430516},"ec883654-4f63-4fae-a3ef-923dcbc2426d":{"title":"Enfold - Shortcodes","condition":"enfold","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/enfold\/js\/avia(.min)?.js","\/enfold\/js\/shortcodes(.min)?.js","\/enfold\/config-templatebuilder\/avia-shortcodes\/","\/enfold\/js\/avia-compat(.min)?.js","\/enfold\/js\/waypoints\/waypoints.min.js","\/enfold\/js\/avia-snippet-(.*).js","\/enfold\/js\/avia-js(.min)?.js","\/enfold\/js\/aviapopup\/jquery.magnific-popup(.min)?.js"],"icon_url":"","type":"theme","id":"theme:072fc4077d7071791d774d6ddbf5dc2a","is_default":0,"created_at":1712954619},"fe3546f0-be3e-4173-8992-a7f6f203b82f":{"title":"Envision","condition":"envision","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/envision\/lib\/js\/app.min.js","var CloudFwOp"],"is_default":1,"icon_url":"","type":"theme","id":"theme:fc5f7d69b646ed95835badc0fc23bc11","created_at":1679737494},"45b060fe-fd61-48c5-8cc9-694b5b6c103f":{"title":"Erios - Fix Mobile Menu","condition":"erios","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/erios\/assets\/js\/libs\/mlpushmenu.js","\/wp-content\/themes\/erios\/assets\/js\/libs\/modernizr.custom.js","\/wp-content\/themes\/erios\/assets\/js\/libs\/classie.js"],"summary":"Fixes an issue in which the mobile menu doesn't appear when clicking the hamburger button","icon_url":"","type":"theme","category":null,"id":"theme:06c4f62aa28eb5d407096ea7c27939ec","is_default":0,"created_at":1738617553},"d997b942-19de-4710-9c81-79d3c65cbd76":{"title":"Ewebot","condition":"ewebot","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/gt3-themes-core\/","\/uploads\/gt3-assets\/js\/(.*)","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Fire animations on pageload.\r\n\r\nAllow the page to load without interaction.\r\n\r\n\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js\r\n\/jquery-migrate(.min)?.js\r\n\/wp-content\/themes\/ewebot\/dist\/js\/theme.js","type":"theme","id":"theme:047f009f2a1f4cdf2088c46be47e385b","is_default":0,"created_at":1724430887},"53d29aec-8ae4-4273-b748-f5bd52dfe177":{"title":"Farvis","condition":"farvis","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/farvis\/"],"icon_url":"","summary":"Fire animations and layout rendering on pageload.","type":"theme","id":"theme:26bff2f3a6ff6347d35edf5c77a35687","is_default":0,"created_at":1724430981},"fb01246b-a5f8-4021-b514-c02cf55e80bd":{"title":"Flatsome","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/assets\/libs\/packery.pkgd.min.js","\/flatsome\/assets\/js\/woocommerce.js","\/flatsome\/assets\/js\/extensions\/flatsome-variation-images-frontend.js"],"icon_url":"","summary":"Avoid homepage slider delay. Allow zoom on the product image gallery.","type":"theme","category":"analytics","id":"theme:26fb1cf80f074ca199d8a7e94c5fc796","is_default":0,"created_at":1735226064},"4d65dc12-9ce7-4171-94a7-9821fd95240e":{"title":"Flatsome - Google map","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com","google.maps.LatLng","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","summary":"Show Google Map on page load","type":"theme","id":"theme:28a6f8b3319c107a34603be0f01a4bcf","is_default":0,"created_at":1724431100},"890e15b6-c66b-4a9e-9b7d-55417df94916":{"title":"Flatsome - Images","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/inc\/integrations\/wp-rocket\/flatsome-wp-rocket.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/inc\/extensions\/flatsome-lazy-load\/flatsome-lazy-load.js","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","summary":"Allow images to load immediately.","type":"theme","id":"theme:f2d60aad9f2f5395e3e145cf8f8ab165","is_default":0,"created_at":1725978870},"ee1a892b-c906-4e35-8684-827919f64bef":{"title":"Foxiz - Load Slider","condition":"foxiz","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/foxiz\/assets\/js\/rbswiper.min.js","\/plugins\/foxiz-core\/assets\/core.js","\/themes\/foxiz\/assets\/js\/global.js","\/themes\/foxiz\/assets\/js\/jquery.ui.totop.min.js"],"summary":"When Delay JavaScript Execution is enabled, the slider doesn't load until there is a user interaction. These exclusions make the slider load immediately.","icon_url":"","type":"theme","id":"theme:ee6e7f08495a961a7bcbfe4e0a283b6e","is_default":0,"created_at":1725039417},"cb54d070-8ee0-4c35-9fa9-b2bac73ccf39":{"title":"Frida","condition":"frida","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/frida\/"],"icon_url":"","summary":"Display images without user interaction and avoid issues with simpleLighbox images","type":"theme","id":"theme:109ddf56796a5133e12279f3daa5ff62","is_default":0,"created_at":1724431195},"435fe79f-47ba-422e-aca6-cea566f6b8a1":{"title":"Gardena Theme","condition":"gardena","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/gardena\/"],"icon_url":"","summary":"Fixes the error message for Largest contentful paint in PageSpeed report, when feature is enabled.","type":"theme","id":"theme:993e6f0fc44b9e55c0a565b84a449340","is_default":0,"created_at":1724431464},"e5428837-d182-44c0-9b8d-66e225e78a42":{"title":"GeneratePress - Back To Top Button","condition":"generatepress","exclusions":["\/themes\/generatepress\/assets\/js\/back-to-top.min.js","generate-back-to-top-js-before"],"summary":"The back to top button will not show or work without these exclusions.","icon_url":"","type":"theme","category":null,"id":"theme:92eb3fe27f152d99a70b3ff7fa51b50a","is_default":0,"created_at":1746819839},"9e78539a-03d9-442b-ab94-dd3b7a9658e4":{"title":"GeneratePress - Mobile menu","condition":"generatepress","exclusions":["\/generatepress\/assets\/js\/menu.min.js","generatepressMenu","\/gp-premium\/menu-plus\/functions\/js\/offside.min.js"],"icon_url":"","summary":"Fixes the mobile menu requiring a double touch, if touching the mobile menu is the first interaction of a visitor with the page.","type":"theme","id":"theme:80a330247d61d729fcd78dc01de6ed2f","is_default":0,"created_at":1724431524},"7d2a6472-83d4-4620-8b9e-ff8872b98c1c":{"title":"Genesis sample","condition":"genesis-sample-develop","exclusions":["\/jquery\/jquery.min.js","\/jquery\/jquery-migrate.min.js","\/js\/hoverIntent.min.js","\/genesis\/lib\/js\/menu\/","\/genesis\/lib\/js\/skip-links.min.js","\/custom-genesis\/js\/custom.js","var c = document.body.classList"],"icon_url":"","summary":"https:\/\/github.com\/wp-media\/delay-javascript-loading\/issues\/33#issuecomment-1201266660 , display mobile menu with DJS","type":"theme","id":"theme:7c14d7a05ad7f4f39b719e015a4723ff","is_default":0,"created_at":1727089078},"02d47d01-56f5-4801-b319-cff1707dd59d":{"title":"Harmuny - Modern WordPress Blog Theme","condition":"harmuny","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/harmuny\/"],"icon_url":"","summary":"Load slideshow without user interaction.","type":"theme","id":"theme:1ff9662c2a3e3221052cbe229feed18c","is_default":0,"created_at":1724427976},"6373bbb2-877c-4075-b6e4-7c58d686b25c":{"title":"HealthFirst","condition":"healthfirst","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/hoverIntent.min.js","\/wp-content\/plugins\/healthfirst-core\/assets\/js\/healthfirst-core.min.js","\/wp-content\/plugins\/healthfirst-core\/assets\/plugins\/modernizr\/modernizr.js","\/wp-content\/plugins\/healthfirst-core\/assets\/plugins\/perfect-scrollbar\/perfect-scrollbar.jquery.min.js","\/wp-content\/themes\/healthfirst\/assets\/js\/main.min.js","\/wp-content\/themes\/healthfirst\/assets\/plugins\/waitforimages\/jquery.waitforimages.js"],"summary":"When Delay JavaScript Execution is enabled, there are console errors.","icon_url":"","type":"theme","id":"theme:882ee30ccc8ed2b36e93c7b6e2c4b98e","is_default":0,"created_at":1724431542},"2c72e7e6-cb77-44e9-af87-d5c42ae6db52":{"title":"Honor - WPBakery fix","condition":"honor","exclusions":["\/honor\/js\/__scripts.js","HONOR_STORAGE","\/js_composer\/"],"icon_url":"","summary":"Only required if used with WPBakery plugin to fix some dependencies issues","type":"theme","id":"theme:9f228373ff4d172655dbf5cb3b1bc23a","is_default":0,"created_at":1724431564},"9309d1d3-1035-4a2c-8ced-075bc3ff9957":{"title":"HotelMaster","condition":"hotelmaster","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/hotelmaster\/javascript\/gdlr-script.js","\/hotelmaster\/plugins\/dl-menu\/modernizr.custom.js","\/hotelmaster\/plugins\/dl-menu\/jquery.dlmenu.js","\/hotelmaster\/plugins\/superfish\/js\/superfish.js","\/hotelmaster\/plugins\/jquery.easing.js"],"icon_url":"","summary":"Fixes double touch required to use the menu on mobile.","type":"theme","id":"theme:978eaddad3b1047e479407b6d92197aa","is_default":0,"created_at":1724431621},"4a09f745-cbb1-47c8-b50a-c8014d5d1335":{"title":"HotelMaster - Blog","condition":"hotelmaster","exclusions":["\/wp-includes\/js\/masonry.min.js","\/gp-premium\/blog\/functions\/js\/scripts.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Loads the blog","type":"theme","id":"theme:e813a548bceac6765a1cdf2316f1a6ab","is_default":0,"created_at":1724431587},"f2d8f704-ec68-4278-9ca2-885daa0c1ce5":{"title":"HotelMaster - Masonry","condition":"hotelmaster","exclusions":["\/gp-premium\/menu-plus\/functions\/js\/offside.min.js","offSide"],"icon_url":"","summary":"Display blog archive posts in a masonry layout without user interaction.","type":"theme","id":"theme:398a264e302e42640553681e8759cd07","is_default":0,"created_at":1724431607},"d62a5509-f311-4ec4-a27b-d808842cebc0":{"title":"Impreza - Image Popups","condition":"Impreza","exclusions":["\/themes\/Impreza\/common\/js\/vendor\/magnific-popup.js","\/uploads\/us-assets\/kuechenstudio-reissig.de.js","magnificPopup"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the image popups do not work correctly.","type":"theme","category":"analytics","id":"theme:76e58bbda03bb74e93ec1d97828501b0","is_default":0,"created_at":1747237800},"92b2e258-1f44-41c1-b1bd-f117f61ee49d":{"title":"Jannah Theme - Fix masonry grid","condition":"jannah","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/masonry.min.js","\/wp-includes\/js\/jquery\/jquery.masonry.min.js","tie-"],"icon_url":"","summary":"Fix masonry grid","type":"theme","id":"theme:35f7f183089309f52046377ca65e905a","is_default":0,"created_at":1724432477},"df52436c-53d6-461a-b81a-cd0b21680524":{"title":"JNews","condition":"jnews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/jnews\/assets\/js\/","jnews","jfla"],"icon_url":"","summary":"Toggle the search box on mobile.\r\n\r\nLoad images without interaction:\r\n\r\n\/jnews\/assets\/js\/modernizr-custom.js","type":"theme","id":"theme:5d90e451984f9d894b1aabb0d00f30a2","is_default":0,"created_at":1724432551},"87ed69a2-3295-4fad-a82e-eeb02925a5dc":{"title":"Jobify","condition":"jobify","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jobify\/js\/jobify.min.js","\/jobify\/js\/select2.full.min.js"],"icon_url":"","summary":"Prevent white space on the mobile header before user interaction","type":"theme","id":"theme:592006aa4562a6915e344e5e2a09e5ee","is_default":0,"created_at":1724432575},"28a0b1ea-8d2f-4931-a48a-166b8df8a773":{"title":"JOYN","condition":"joyn","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/lib\/modernizr-custom.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/spb-functions.min.js","\/swift-framework\/includes\/swift-slider\/assets\/js\/swift-slider.min.js","\/swift-framework\/public\/js\/lib\/imagesloaded.pkgd.min.js","\/joyn\/js\/owl.carousel.min.js","\/joyn\/js\/theme-scripts.js","\/joyn\/js\/functions.js"],"icon_url":"","summary":"Prevent the page from not loading on mobile devices","type":"theme","id":"theme:c395470ad2d4d681836cd942bbb03120","is_default":0,"created_at":1724432590},"542be60a-2346-4740-9a41-8a580c4f013c":{"title":"Juno Toys","condition":"junotoys","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/junotoys\/fw\/js\/core.init.js","\/junotoys\/fw\/js\/core.utils.js","\/junotoys\/fw\/js\/superfish.js","\/junotoys\/fw\/js\/swiper\/swiper.js","\/trx_utils\/shortcodes\/theme.shortcodes.js","\/wp-includes\/js\/jquery\/ui\/(.*)"],"icon_url":"","summary":"Display the swiper\/carousel products","type":"theme","id":"theme:2acab38e8356d36355bb81d931e7fba4","is_default":0,"created_at":1724432608},"06167710-10c7-446e-a08b-ce676e444102":{"title":"Jupiter","condition":"jupiter","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiter\/","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:89c5c30498c2989611f9044be006197c","is_default":0,"created_at":1679738430},"5d042e1f-7e62-4ec4-ba31-30d396004522":{"title":"JupiterX","condition":"jupiterx","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiterx\/(.*).js","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:b06632962a4948d4944fd8d79ffbfceb","is_default":0,"created_at":1679737312},"c4b030ea-66a1-4729-85bf-a484e373a316":{"title":"Kadence","condition":"kadence","exclusions":["\/kadence\/assets\/js\/navigation.min.js","mobile_menu_breakpoint","kadenceConfig"],"icon_url":"","summary":"Avoid double click to open mobile menu and search button","type":"theme","id":"theme:4b7907ee68218db279648da9bf7102d1","is_default":0,"created_at":1724432769},"20c605b4-3e3a-4bb0-a5e5-a08e2cb0f31f":{"title":"Kalium","condition":"kalium","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kalium\/assets\/js\/main.min.js","mobile_menu_breakpoint","var _k"],"icon_url":"","summary":"Fixes the hamburger menu.","type":"theme","id":"theme:1fcb99a1ab06e1e36635365ed3e59ce5","is_default":0,"created_at":1724432784},"e1e04a7d-635a-4e28-83d9-e345ce40e354":{"title":"Kava","condition":"kava","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kava\/assets\/js\/theme-script.js"],"icon_url":"","summary":"Fixes the header color issue.","type":"theme","id":"theme:359d67efbf530c998245225dd3245a88","is_default":0,"created_at":1724432796},"e833c36e-ee89-4924-b608-3f28327c2f85":{"title":"Lay","condition":"lay","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/backbone.min.js","\/wp-includes\/js\/underscore.min.js","\/lay\/","\/laytheme-carousel\/","window.laytheme"],"icon_url":"","summary":"Start showing content on pageload.","type":"theme","id":"theme:7c718c6da874ea6e4b27c6d70bc4e7e8","is_default":0,"created_at":1724432836},"2df2ef47-a833-4711-ba54-48dc62586f37":{"title":"LazaNews","condition":"lazanews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery.custom.js"],"icon_url":"","summary":"Prevents the page preloading animation from being stuck until user interaction.","type":"theme","id":"theme:85d9922ac61ed833fd047a67029df8e5","is_default":0,"created_at":1724432810},"9443304a-34e9-4700-a03a-5f8f62f83ed1":{"title":"Listeo","condition":"listeo","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listeo\/js\/"],"icon_url":"","summary":"Render the page on pageload","type":"theme","id":"theme:db7da585545001f5ae614a2810f08f3a","is_default":0,"created_at":1724432849},"77afa73c-c4a8-42a8-aaee-43f6a761364e":{"title":"ListingPro","condition":"listingpro","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listingpro\/assets\/lib\/jquerym.menu\/js\/jquery.mmenu.min.all.js","\/listingpro\/assets\/lib\/Magnific-Popup-master\/jquery.magnific-popup.min.js","\/listingpro\/assets\/js\/select2.full.min.js","\/listingpro\/assets\/js\/jquery.city-autocomplete.js","\/listingpro\/assets\/js\/chosen.jquery.min.js","\/listingpro\/assets\/lib\/bootstrap\/js\/bootstrap-slider.js","\/listingpro\/assets\/js\/jquery-ui.js","\/listingpro\/assets\/js\/mapbox.js","\/listingpro\/assets\/js\/main.js","\/listingpro\/assets\/js\/leaflet.markercluster.js","maps"],"icon_url":"","summary":"Display the map and avoid console errors.","type":"theme","id":"theme:0b365e43dfc65d2b1b70fac6510c7c9c","is_default":0,"created_at":1724432862},"164e73e5-0603-42de-9ae6-837d822636a3":{"title":"Lycka - Load Menu","condition":"lycka","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/themes\/lycka\/framework\/js\/header.misc.js"],"summary":"When Delay JavaScript Execution is enabled, the menu does not appear until interaction with the page.","icon_url":"","type":"theme","category":null,"id":"theme:16544487fefeb35553d3abb52856b73c","is_default":0,"created_at":1754072604},"47de96e2-016b-4a8b-a707-286242f0077b":{"title":"Magbook - Show Slider","condition":"magbook","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/themes\/magbook\/js\/flexslider-setting.js","\/wp-content\/themes\/magbook\/js\/jquery.flexslider-min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the slider doesn't show until user interaction.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/180","type":"theme","category":"analytics","id":"theme:a1be05a01927e084ea948e15017ee3d3","is_default":0,"created_at":1743179866},"01b369b5-b578-4314-8e95-40b67a41d75a":{"title":"Master Study","condition":"masterstudy","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/masterstudy\/assets\/js\/custom.js","\/masterstudy\/assets\/vendors\/jquery.fancybox.min.js","\/masterstudy\/assets\/js\/select2.full.min.js"],"icon_url":"","summary":"Prevents the page preloading animation from being stuck until user interaction.","type":"theme","id":"theme:0ee224c20e4ef7d546733d933db598f2","is_default":0,"created_at":1724432905},"6b000cc7-d33b-4109-9c39-6119a5d81cde":{"title":"Maya","condition":"maya","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maya\/js\/jquery.mobilemenu.js","\/maya\/js\/jquery.custom.js","\/maya\/core\/includes\/js\/jquery.tipsy.js"],"icon_url":"","summary":"Convert the mobile menu into a selector form on mobile devices without user interaction.","type":"theme","id":"theme:719fe28004fcdd81a820602924aa8074","is_default":0,"created_at":1724432964},"ef3c76d6-1041-473d-81ea-a5a6e8c86735":{"title":"MH Magazine","condition":"mh-magazine","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/mh-magazine\/"],"icon_url":"","summary":"Display menus on page load.","type":"theme","id":"theme:2a0cd6efc2f46be69de61712729a2ec9","is_default":0,"created_at":1724433164},"9cbb2777-5524-43b8-af36-692b27452c0d":{"title":"Minimog","condition":"minimog","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/minimog\/"],"icon_url":"","summary":"Display menus on page load.","type":"theme","id":"theme:61c0c235042359ee7d2a9035e79a7da2","is_default":0,"created_at":1724433180},"7eb81c74-8062-4a6c-bf66-b7c5bc160141":{"title":"Moozo Elementor","condition":"moozo-elementor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/moozo-elementor\/assets\/js\/countdown.js","\/moozo-elementor\/assets\/vendor\/countdown\/countdown.min.js"],"icon_url":"","summary":"Display the countdown timer without interaction.","type":"theme","id":"theme:2ddb538c8e6b6c766fffd0d5c861fd82","is_default":0,"created_at":1724433254},"e90b7bfa-9ff6-4e1a-bf29-6207d55fdd39":{"title":"Motor","condition":"motor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/motor\/js\/"],"icon_url":"","type":"theme","id":"theme:b33538179f5661a86cbe327a1793e199","is_default":0,"created_at":1683973354},"d4607fcd-296f-4235-ba8e-2be508181877":{"title":"Movedo - Autoplay Video","condition":"movedo","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/themes\/movedo\/js\/main.js","\/themes\/movedo\/js\/plugins.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, autoplay videos don't play until user interaction with page.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/181","type":"theme","category":"analytics","id":"theme:08e2673c5f3e451c281eba504f57290e","is_default":0,"created_at":1743424232},"445e625a-f955-41fa-84de-65d9ea19be07":{"title":"My Listing","condition":"my-listing","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/my-listing\/assets\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","maps.googleapis.com","MyListing","_Explore_Settings"],"icon_url":"","summary":"Show the content on page load:","type":"theme","id":"theme:afacb777229ddf5cabceacc64948057d","is_default":0,"created_at":1724433267},"677d9967-ca17-4602-8f63-4c3937f7a5c2":{"title":"Nature One PRO - Nivo Slider","condition":"natureone-pro","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","nivoSlider"],"summary":"When Delay JavaScript Execution is enabled, the Nivo Slider doesn't load until user interaction.","icon_url":"","type":"theme","id":"theme:53ae74a161c1588f5539b6883825d3ee","is_default":0,"created_at":1729860774},"00b8cd2d-2781-4fbb-ac5d-00750ba94ac9":{"title":"Neve - Mobile menu","condition":"neve","exclusions":["\/neve\/assets\/js\/build\/modern\/frontend.js"],"icon_url":"","summary":"Prevents the need for a double tap on the mobile menu.","type":"theme","id":"theme:5ae731cc06dd9284f8172675a6fe81ab","is_default":0,"created_at":1724432677},"483abc54-f1fc-47dc-bfc1-a269c7d1c849":{"title":"Newspaper - Images","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","summary":"Loads images without delay","type":"theme","id":"theme:649ff22527bac2b1c8e0115cd3851d53","is_default":0,"created_at":1724432710},"50db8d14-d421-4237-be14-a6f7b5c11ec5":{"title":"Newspaper - Slider & YouTube","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","tdb_globals","td_youtube_list_ids","iosSlider","\/td-cloud-library\/assets\/js\/js_files_for_front.min.js","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","summary":"Render the slider and Youtube videos on pageload","type":"theme","id":"theme:7e2eeee57ae458c5959342eda6526bf1","is_default":0,"created_at":1724432700},"514f4c30-2b67-4648-960e-dfe1cc401ca5":{"title":"Niva","condition":"niva","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/niva\/js\/","\/sweetthemes-framework\/js\/","mt_typed"],"icon_url":"","summary":"Trigger the page loader and the typewriter","type":"theme","id":"theme:c4838f73a344b829ed626635e210dcf4","is_default":0,"created_at":1724432724},"e67ee504-c3b1-455e-88ab-1fae8c830652":{"title":"OceanWP","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/oceanwp\/"],"icon_url":"","summary":"Fixes some non-function breaking browser console errors.","type":"theme","id":"theme:db37af4b7d12695d37d9256313a5f37a","is_default":0,"created_at":1724432755},"e44e240a-8765-4f4f-b67e-d54e4b727506":{"title":"OceanWP - Mobile menu","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ocean-side-panel\/assets\/js\/side-panel.min.js","\/oceanwp\/assets\/js\/theme.vanilla.min.js"],"icon_url":"","summary":"Avoids double tap on mobile menu","type":"theme","id":"theme:9babbcd52b2ce558d299a06cd1130a11","is_default":0,"created_at":1724432740},"51ac8cbb-6018-45a5-917f-6ce48bc7fc67":{"title":"Ohio","condition":"ohio","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/ohio\/assets\/js\/main.min.js","\/themes\/ohio\/assets\/js\/libs\/jquery.mega-menu.min.js","\/themes\/ohio\/assets\/js\/libs\/typed.min.js","\/themes\/ohio\/assets\/js\/libs\/isotope.pkgd.min.js"],"summary":"Load the mobile menu on page load without user interaction\r\nLoad dynamic typing text without user interaction","icon_url":"","type":"theme","category":"analytics","id":"theme:4ec96adb9cc39333f3d2024b28f2503f","is_default":0,"created_at":1769790675},"69a88ebb-b958-4ef0-be66-a1ceab623773":{"title":"Pelicula Theme","condition":"pelicula","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/qi-blocks\/assets\/js\/plugins\/fslightbox\/fslightbox.min.js","\/plugins\/qi-blocks\/inc\/masonry\/assets\/plugins\/isotope.pkgd.min.js","\/plugins\/qi-blocks\/inc\/masonry\/assets\/plugins\/packery-mode.pkgd.min.js","\/pelicula\/","\/pelicula-core\/assets\/","\/qi-addons-for-elementor\/","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","summary":"Allow the Pelicula theme's Galleries to show on the page without user interaction\r\nFix broken animated title effects so they animate properly.\r\nFix testimonial not showing until user interaction.\r\nFix Modal not triggering when clicked.","type":"theme","category":"analytics","id":"theme:56bb7d07cce915321f3ed45b09b9e9e5","is_default":0,"created_at":1742986303},"897b0100-958d-4a02-b6b2-1e753e9869f4":{"title":"PenNews","condition":"pennews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pennews\/js\/script.min.js","\/pennews\/js\/script.lib.min.js"],"icon_url":"","summary":"When the theme's lazyload functionality is used, lazyload images without interaction.","type":"theme","id":"theme:02811fa00bc1471bb5be0457ce0ee005","is_default":0,"created_at":1724433732},"edd3ba03-e0fd-4b6e-911b-60b29f3471bf":{"title":"Pharmacy Mentor","condition":"pharmacymentor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/pharmacymentor\/"],"icon_url":"","summary":"Load slider and animations on pageload.","type":"theme","id":"theme:3188aaf1ef2c39937450f2a14ebb1174","is_default":0,"created_at":1724442943},"449a1b7e-5c4b-43d6-8a33-195254bfb184":{"title":"Phlox Pro","condition":"phlox-pro","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/phlox-pro\/"],"summary":"When Delay JavaScript Execution is enabled, we have a white page until user interaction.\r\nNo preload or transition page to deactivate on the theme setting.","icon_url":"","type":"theme","category":null,"id":"theme:9cf68c2d2861c6cc6ad4ab1c3c8480eb","is_default":0,"created_at":1756733274},"725415ff-cc76-45cc-a131-3170e5aa30fc":{"title":"Porto","condition":"porto","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme.js","\/porto\/js\/theme.min.js"],"icon_url":"","summary":"Load animations","type":"theme","id":"theme:8493f398f200c8dffe60d46439dd3360","is_default":0,"created_at":1724442964},"a4f6d50c-2ee9-40d6-b13e-502bda0ab18e":{"title":"Porto - Load Product Archive Listing","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/themes\/porto\/js\/skeleton.min.js","\/porto\/js\/theme.js"],"summary":"Load Porto product archive listing in shop pages without user interaction","icon_url":"","type":"theme","category":null,"id":"theme:1315f133b62df536d891c6a9c93ef4a7","is_default":0,"created_at":1746008976},"2c19bcec-f3ff-4873-bfd7-db6bc0f6433c":{"title":"Porto - Owl Carousel","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme(|.min).js","\/porto\/js\/libs\/owl.carousel(|.min).js","\/porto\/js\/theme-async(|.min).js","\/prettyPhoto\/jquery.prettyPhoto(|.min).js"],"icon_url":"","summary":"Load Owl Carousel without interaction","type":"theme","id":"theme:f34f5199fb7fca78852cd3fb7758f178","is_default":0,"created_at":1724442974},"f7779ea7-3b3a-441a-8fe7-44e3ee9350d8":{"title":"Porto - Product Gallery","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme(|.min).js","\/porto\/js\/libs\/owl.carousel(|.min).js","\/porto\/js\/theme-async(|.min).js","\/porto\/js\/woocommerce-theme.js","\/wp-includes\/js\/imagesloaded.min.js","\/wp-includes\/js\/underscore.min.js","\/woocommerce\/assets\/js\/jquery-cookie\/jquery.cookie.min.js"],"summary":"When Delay JavaScript Execution is enabled, the product gallery dots navigation don't load until user interaction.","icon_url":"","type":"theme","category":null,"id":"theme:ddb85625312fec570f0a85e1e11fbba4","is_default":0,"created_at":1746791452},"5b11ec89-1cb2-4793-8b77-79e917e810a0":{"title":"Pro Theme - Fix menu and accordions","condition":"pro","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/pro\/cornerstone\/assets\/js\/site\/cs-classic.(.*).js"],"icon_url":"","summary":"Fix menu and accordions","type":"theme","id":"theme:8f30d70dd2d9a0386445aef8fdd534a9","is_default":0,"created_at":1724443035},"31347ccb-f69e-4cd3-bd47-b80ce14ac76e":{"title":"ProPhoto","condition":"prophoto7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/prophoto7\/js\/bundle.front.js","\/wp-includes\/js\/underscore.min.js","PROPHOTO"],"icon_url":"","summary":"Fire animations","type":"theme","id":"theme:a5836a56c4472fade4dc6ebfe2281554","is_default":0,"created_at":1724443049},"a8208c04-865c-49aa-ab96-41e378d391c8":{"title":"Publisher","condition":"publisher","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/publisher\/js\/"],"icon_url":"","summary":"Make the mobile menu expend from the first click and the cookie notice to show on pageload.","type":"theme","id":"theme:32c73be0cb175da278c8e2af0811b0d1","is_default":0,"created_at":1724443063},"a0d69f3d-1356-4a1d-a600-2f2f788b8a9a":{"title":"REHub","condition":"rehub-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rehub-theme\/js\/custom_floatpanel.js"],"icon_url":"","summary":"Fix the sticky menu","type":"theme","id":"theme:321af1febb74f488cf911380893739b2","is_default":0,"created_at":1724434339},"8b74bbe5-7f32-42df-908f-78c99a8cad82":{"title":"Rey","condition":"rey","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rey\/scripts-(.*).js","\/rey-core\/assets\/js\/"],"icon_url":"","summary":"Fix the sticky menu on mobile and animations","type":"theme","id":"theme:e46567cd0f3ec9b37e7230dc87eac367","is_default":0,"created_at":1724434354},"5c9115d3-bcbd-49d6-8feb-4880d2b82bfe":{"title":"Rife Free","condition":"rife-free","exclusions":["\/rife-free\/js\/script.min.js","\/rife-free\/js\/isotope.pkgd.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","var reJS"],"icon_url":"","type":"theme","id":"theme:74a449954de79625eccc6750e87af8f6","is_default":0,"created_at":1679738107},"6542b2fd-1f91-4862-aa18-11eecc02faaf":{"title":"Roisin","condition":"roisin","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/themes\/roisin\/assets\/js\/main.min.js","\/plugins\/roisin-core\/assets\/js\/roisin-core.min.js","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","type":"theme","id":"theme:8f38fe58034772931110930b91cb6797","is_default":0,"created_at":1685964523},"5a192ad9-d150-4aa0-8efc-d68131cb7a37":{"title":"Sahifa - Mobile Menu","condition":"sahifa","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/themes\/sahifa\/js\/ilightbox.packed.js","\/translate_a\/element.js"],"icon_url":"","summary":"Allow mobile menu slideout to work for Safari mobile","type":"theme","id":"theme:06ebe49f4c1e5b04cece831f8bb198a3","is_default":0,"created_at":1724434427},"7ae9d978-d63c-4a58-beb3-418bebb5b23c":{"title":"Salient","condition":"salient","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/salient\/","winW > bodyW"],"icon_url":"","summary":"Close mobile menu when using anchor links & Show the menu and animations on page load","type":"theme","id":"theme:b3e12d57ac23897be1bb2c673e3fc761","is_default":0,"created_at":1724434525},"35aaa6c5-4a37-4161-b504-fb3ebc4b1148":{"title":"Salient - Nectar slider","condition":"salient","exclusions":["\/salient-nectar-slider\/js\/nectar-slider.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","summary":"load the images without interaction","type":"theme","id":"theme:d612db1dd8dc76faa6a36a9ebfd336dc","is_default":0,"created_at":1724434498},"84c95206-3e59-4eb3-a0c9-e2231a1c0a48":{"title":"SEO Lounge","condition":"seolounge","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/seolounge\/js\/radiantthemes-custom.js","\/seolounge\/js\/radiantthemes-core.min.js"],"icon_url":"","summary":"Avoid the loader being delayed so the page can be displayed before user interaction.","type":"theme","id":"theme:3d72b779d9c4ba6b51cc5b245b141433","is_default":0,"created_at":1724434624},"cd44aa56-088a-40dd-bf1e-f835efa68626":{"title":"Shoptimizer","condition":"shoptimizer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shoptimizer\/assets\/js\/lazyload-bg.js","\/shoptimizer\/assets\/js\/main.min.js"],"icon_url":"","summary":"Shows background images and fix the double tap on mobile menu","type":"theme","id":"theme:6c32b43f4da639e5901574fac6b7d387","is_default":0,"created_at":1724434579},"d2c48a48-430a-4eea-bc05-99b66f1f6a7b":{"title":"SmartMag","condition":"smart-mag","exclusions":["\/smart-mag\/js\/lazyload.js"],"icon_url":"","summary":"Fixes the images not being displayed because of the theme's Lazyload.","type":"theme","id":"theme:23d6b7878bd0087addb067db3fa39864","is_default":0,"created_at":1724434887},"dd0d9133-ef17-4dac-b174-9f25d535838f":{"title":"Soledad","condition":"soledad","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/soledad\/js\/main.js","\/soledad\/js\/more-post.js","\/soledad\/js\/libs-script.min.js"],"icon_url":"","summary":"Fixes the images not being displayed because of the theme's Lazyload.","type":"theme","id":"theme:d3f78b26c2d11c99230171cc6378d06e","is_default":0,"created_at":1724434902},"3b85dd6e-9534-477e-9b15-940d0e155c8d":{"title":"Spacious - Mobile Menu","condition":"spacious","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/spacious\/js\/navigation.js"],"icon_url":"","summary":"Fixes mobile menu functionality.","type":"theme","id":"theme:d423c1f002b10b8682ee24d616b19c9c","is_default":0,"created_at":1724434916},"d657dc56-5c04-439a-8987-401f89a65bf9":{"title":"Stockholm","condition":"stockholm","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/stockholm\/js\/"],"icon_url":"","summary":"To show the logo and prevent JavaScript errors","type":"theme","id":"theme:fcfff492e00727b63cf5dff9f59bc2a4","is_default":0,"created_at":1724443889},"121f9b1b-d3cd-4dde-915e-0b348abf6687":{"title":"Storefront","condition":"storefront","exclusions":["\/storefront\/assets\/js\/navigation.min.js"],"icon_url":"","summary":"Reveals menu from the first click.\r\n\r\nSome elements on the page (Link sliders) are showed on page load:\r\n\r\n\/storefront\/assets\/js\/homepage.min.js","type":"theme","id":"theme:f0dca7e4eaedf573d4664be249845942","is_default":0,"created_at":1724443926},"41cfc83f-ff02-4a35-a3b7-e92db213b224":{"title":"StreamTube","condition":"streamtube","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/streamtube\/","\/streamtube-core\/"],"icon_url":"","summary":"Fixes the display video error on the mobile version.","type":"theme","id":"theme:9772ccddd470688f6bc6aee86e34d29b","is_default":0,"created_at":1724444002},"c31366fe-9045-4767-a405-52a11e08b82e":{"title":"Sydney - Load elements on page load","condition":"sydney-pro-ii","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/sydney-pro-ii\/js\/scripts.js","\/wp-content\/themes\/sydney-pro-ii\/js\/functions.min.js","\/wp-content\/themes\/sydney-pro-ii\/js\/elementor.js","\/wp-content\/themes\/sydney-pro-ii\/js\/hero-slider.js","\/wp-content\/plugins\/sydney-toolbox\/js\/main.js"],"icon_url":"","summary":"Load elements on pages without user interaction","type":"theme","id":"theme:1fb15693856451537e331adeaf2c7d6f","is_default":0,"created_at":1724442744},"aec0a548-4c6b-400a-80ed-19a49e0faef0":{"title":"The7","condition":"dt-the7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","loader-removed","\/Ultimate_VC_Addons\/assets\/min-js\/","\/dt-the7\/","\/js_composer\/","underscore.min.js"],"icon_url":"","summary":"Remove the loader and fire animations","type":"theme","category":"analytics","id":"theme:7934c689fd20e30b6bfc69bb9d46cb63","is_default":0,"created_at":1754635920},"538354ff-d69f-40be-b0cc-df3790599dd2":{"title":"TheGem","condition":"thegem","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thegem\/js\/","gemSettings","thegemSlideshow","tgpLazyItemsOptions"],"icon_url":"","summary":"To show the logo, slider, animations and prevent JavaScript errors","type":"theme","id":"theme:153c54fe73897da838ce39152b1db5a8","is_default":0,"created_at":1724444019},"84d95a79-270c-4223-b459-bb49c6acfaf1":{"title":"Theme Electiman - Mobile Menu","condition":"electiman","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/electiman\/assets\/js\/navigation.js","\/themes\/electiman\/assets\/js\/theme-pluginjs.js","\/themes\/electiman\/assets\/js\/theme.js","\/themes\/electiman\/assets\/js\/slick.min.js","\/themes\/electiman\/venobox\/venobox.min.js","\/themes\/electiman\/assets\/js\/owl.carousel.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","type":"theme","id":"theme:a59c888391c869ed4f3417c02d71fe15","is_default":0,"created_at":1702923332},"3a59bf59-4fe5-4690-8ab7-33e6a976e2e3":{"title":"Thrive Theme Builder","condition":"thrive-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/(.*).js","TVE_Event_Manager_Registered_Callbacks","ThriveGlobal","TCB_Front","TL_Front","TVE_Ult","thrive-","thrive_","tve_","tve-"],"icon_url":"","type":"theme","id":"theme:7492fc8f8a90ad7ef680d9c560da2b0f","is_default":0,"created_at":1710767440},"68f2de3b-e2b8-4edf-b82f-93fd7834c65f":{"title":"Total","condition":"Total","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Total\/assets\/js\/total.min.js"],"icon_url":"","summary":"Allow the search to work","type":"theme","id":"theme:96b0141273eabab320119c467cdcaf17","is_default":0,"created_at":1724444033},"6dc1cb35-6b50-4da0-9834-dddf169edaa6":{"title":"Townhub","condition":"townhub","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/townhub-add-ons\/assets\/js\/(.*)","\/wp-includes\/js\/dist\/vendor\/react.js","\/wp-includes\/js\/dist\/vendor\/react-dom.js"],"icon_url":"","summary":"Prevent add-ons from breaking the site","type":"theme","id":"theme:7c37c885d7fecf788f635734f99e8610","is_default":0,"created_at":1724444055},"f484f86b-e316-4871-9322-dee3925349fe":{"title":"Travel Monster - Owl Carousel","condition":"travel-monster","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/wp-travel-engine\/assets\/lib\/owl-carousel(.*)\/owl.carousel(|.min).js","var isRtl"],"icon_url":"","summary":"Load Owl Carousel Slider without user interaction","type":"theme","id":"theme:d3e8da87b3affd399205438fbc8a4f05","is_default":0,"created_at":1724444075},"3ec96c3f-a6bf-4748-9b7e-78864bd24add":{"title":"uDesign - Mobile Menu","condition":"u-design","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/u-design\/assets\/js\/theme.min.js","\/wp-content\/themes\/u-design\/framework\/assets\/js\/framework.min.js","\/wp-content\/themes\/u-design\/framework\/assets\/js\/framework-async.min.js"],"icon_url":"","summary":"Keep the mobile menu working properly.","type":"theme","id":"theme:31ce70b0a02f8720a86d993816676943","is_default":0,"created_at":1724444158},"cb523239-27cc-461e-973d-c984a83223ac":{"title":"uDesign - Show Page Content on Load","condition":"u-design","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/u-design\/assets\/js\/theme.min.js","\/wp-content\/themes\/u-design\/framework\/assets\/js\/framework.min.js"],"icon_url":"","summary":"Display page content on load without user interaction.","type":"theme","id":"theme:c55edd40ad3f9321da577dad70bb130c","is_default":0,"created_at":1724444147},"14cb0a85-8bee-491e-99d7-5f20a07f4bdd":{"title":"Uncode","condition":"uncode","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uncode\/library\/js\/init(.min)?.js","\/uncode\/library\/js\/plugins(.min)?.js","\/uncode\/library\/js\/app(.min)?.js","\/uncode\/library\/js\/woocommerce-uncode(.min)?.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","initHeader","initBox","fixMenuHeight","initRow"],"icon_url":"","summary":"Hides Uncode's preloader without user interaction.","type":"theme","id":"theme:18ba19b98aefbb6c0fde6c6bf92e9cfc","is_default":0,"created_at":1724444172},"ff97a78f-9c62-4bc0-9340-1ad98aa6f2fa":{"title":"Uncode - Display Media Items","condition":"uncode","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/uncode\/library\/js\/lib\/vivus.min.js","\/uncode\/library\/js\/utils.min.js"],"summary":"When Delay JavaScript Execution is enabled, media items don't load on the page.","icon_url":"","type":"theme","category":null,"id":"theme:c0802221090418af389a07024262d71d","is_default":0,"created_at":1745441048},"c580ba92-2ab9-418d-a5d6-801ba6ceb9ce":{"title":"Uncode - Show Content on Page Load","condition":"uncode","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/uncode\/library\/js\/lib\/jquery.smartmenus.min.js","\/uncode\/library\/js\/lib\/jquery.waypoints.min.js","\/uncode\/library\/js\/utils.min.js","\/uncode\/library\/js\/app-loader.min.js","\/uncode\/library\/js\/preventDoubleTransition.min.js","\/uncode\/library\/js\/animations.min.js","\/uncode\/library\/js\/menuSystem.min.js","\/uncode\/library\/js\/backgroundSelfVideos.min.js","\/uncode\/library\/js\/carousel.min.js","\/uncode\/library\/js\/uncode-owl-nav.min.js","\/uncode\/library\/js\/tapHover.min.js","\/uncode\/library\/js\/lib\/inview.min.js","\/uncode\/library\/js\/disableHoverScroll.min.js","\/uncode\/library\/js\/printScreen.min.js","\/uncode\/library\/js\/lib\/owl.carousel(.*).min.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js"],"summary":"When Delay JavaScript Execution is enabled, much of the page content doesn't load until user interaction.","icon_url":"","type":"theme","category":null,"id":"theme:befde4783fdb847bc562ea6a5882381f","is_default":0,"created_at":1745440617},"96aa49eb-6372-4b4c-b70d-f29dede8a8f2":{"title":"Utouch - Load menu on page load","condition":"utouch","exclusions":["\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/jquery.min.js","\/utouch\/js\/main.js","\/utouch\/js\/swiper.jquery.min.js","\/utouch\/js\/fitvids.js","\/utouch\/js\/theme-plugins.js","\/utouch\/js\/crum-mega-menu.js"],"icon_url":"","summary":"Display menu on page load.","type":"theme","id":"theme:18284bf26abf49a1d5d60b3fb34e4c2d","is_default":0,"created_at":1724444186},"4cc603bb-f291-4096-aeb6-7d54832541dc":{"title":"Vehica - Mobile Menu","condition":"vehica","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/plugins\/vehica-core\/assets\/js\/elements.min.js"],"icon_url":"","summary":"Mobile menu requires double click to open if it's the first action taken.","type":"theme","category":"analytics","id":"theme:14220090cf75437b8926ea110498274a","is_default":0,"created_at":1754069979},"a1fbf155-720a-4704-9794-d6749ad6df59":{"title":"Vivo theme - Fix blank page","condition":"vivo","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/vivo\/framework\/assets\/js\/bt_framework_misc.js"],"icon_url":"","summary":"Fixes a blank page.","type":"theme","id":"theme:a140e640fed504586e24e7c0df30376b","is_default":0,"created_at":1724444202},"5acb5d19-caa6-4deb-b7db-0051df4c3c3b":{"title":"Voxel Theme","condition":"voxel","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/voxel\/","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","type":"theme","id":"theme:240a2be0a2b66b01f83abdcd83da7c7c","is_default":0,"created_at":1720444241},"88e96479-1aa2-4adc-8f07-20bc0368a63f":{"title":"Werkstatt","condition":"werkstatt","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/js\/underscore.min.js","\/werkstatt\/assets\/js\/vendor.min.js","\/werkstatt\/assets\/js\/fullscreen.min.js","\/werkstatt\/assets\/js\/app.min.js"],"icon_url":"","summary":"Show animated elements on page load.","type":"theme","id":"theme:38faa29db5a07b8fef6aee9cc11cafec","is_default":0,"created_at":1724444798},"60c4110b-a960-4d44-b619-6d79514dbf75":{"title":"Woodmart","condition":"woodmart","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/imagesloaded.min.js","\/woodmart\/js\/scripts\/wc\/","\/woodmart\/js\/scripts\/global\/","\/woodmart\/js\/libs\/owl.carousel.min.js","\/woodmart\/js\/libs\/owl.carousel.js","\/woodmart\/js\/libs\/slick.js","\/woodmart\/js\/libs\/autocomplete.min.js"],"icon_url":"","summary":"Show WooCommerce thumbnails on pageload & Show product image gallery","type":"theme","id":"theme:06338f13cb89e5309ad2eb7e4d457be4","is_default":0,"created_at":1724444297},"a4547b5b-10ab-407c-969c-269fddec07b8":{"title":"Woodmart - Cart Fragments","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js","\/woodmart\/js\/scripts\/wc\/updateCartFragmentsFix.js"],"icon_url":"","summary":"Fix problem with the quantity icon of the mini cart","type":"theme","id":"theme:591f4f1b2e86b1e987cd8789df3ffce3","is_default":0,"created_at":1724444280},"c385fdb6-ac41-4b00-a350-1e2e82445e22":{"title":"Woodmart - Menu","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/woodmart\/js\/scripts\/global\/helpers.min.js","\/themes\/woodmart\/js\/scripts\/menu\/menuOffsets.min.js","\/themes\/woodmart\/js\/libs\/swiper.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, menu dropdowns won't work consistently when clicked (seems to happen if page is refreshed and no user interaction happens until after page is fully loaded).","type":"theme","id":"theme:d8453e5704ad631dd785e452ce75c9f6","is_default":0,"created_at":1729535544},"97066e39-027a-4cd6-9152-7b6b53f365f5":{"title":"Woodmart - Mobile Menu","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/woodmart\/js\/scripts\/menu\/mobileNavigation.min.js","\/themes\/woodmart\/js\/scripts\/global\/helpers.min.js"],"icon_url":"","summary":"Allow mobile menu to work with just one click.","type":"theme","id":"theme:d79a3941e2f12fb93ffc980ebeb1d7f4","is_default":0,"created_at":1724444264},"b654d55b-8094-40a6-b145-48572d2c396d":{"title":"Woodmart - Sticky Header","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/woodmart\/js\/scripts\/global\/helpers.min.js","\/themes\/woodmart\/js\/scripts\/header\/headerBuilder.min.js"],"summary":"When Delay JavaScript Execution is enabled, the header is no longer sticky when scrolling down the page.","icon_url":"","type":"theme","id":"theme:aa0d7919216f3bb2e405069d206dfda4","is_default":0,"created_at":1729604626},"926d3769-8ce6-4137-b682-44124909d2cc":{"title":"WooVina - Fix Preloader and Hero section","condition":"woovina","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/woovina-preloader\/assets\/js\/wvp-main-script.js","\/woovina\/assets\/js\/main.min.js","\/woovina-elementor-widgets\/assets\/js\/wew-frontend.min.js","\/woovina-elementor-widgets\/assets\/js\/blog-carousel.min.js","\/woovina-elementor-widgets\/assets\/js\/tabs.min.js"],"icon_url":"","summary":"Fixes preloader and hero section","type":"theme","category":"analytics","id":"theme:23a0047d6cddc8e93a6695e42aa24da0","is_default":0,"created_at":1739814571},"119ebd1c-6b46-4f07-8d6a-3498d9c8814f":{"title":"XStore","condition":"xstore","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/xstore\/js\/","\/et-core-plugin\/packages\/st-woo-swatches\/public\/js\/frontend.min.js"],"icon_url":"","type":"theme","id":"theme:3de9d9ba385200548f177d9c704ae92a","is_default":0,"created_at":1679738190},"9a7a548c-07a1-4dff-93fc-6e8230b67853":{"title":"YOOtheme Pro","condition":"yootheme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","uikit.min.js"],"icon_url":"","summary":"Show animations and image in header on page load.\r\n\r\n\r\n\/yootheme\/","type":"theme","id":"theme:119d329456073aa10969d7cbd9760f28","is_default":0,"created_at":1724444774},"f74c499e-b7d9-4590-8671-379f51f468c8":{"title":"Zeen","condition":"zeen","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/zeen\/assets\/js\/","\/js.cookie.min.js"],"icon_url":"","summary":"Starts animations on pageload","type":"theme","id":"theme:acb52844f996627788836366404a3245","is_default":0,"created_at":1724444815}},"scripts":{"analytics":{"2499bb90-0753-4b2b-9bd4-1525f94c7437":{"title":"Google Analytics","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('"],"icon_url":"","summary":"Google Analytics","type":"script","category":"analytics","id":"script:d86cf69a8b82547a94ca3f6a307cf9a6","is_default":0,"created_at":1734096382},"ac2d5720-9418-468c-80a0-3874ee743c0f":{"title":"Google Optimize","exclusions":["a,s,y,n,c,h,i,d,e","googleoptimize.com\/optimize.js","async-hide"],"icon_url":"","summary":"Prevent a flicker or blank screen.","type":"script","category":"analytics","id":"script:031a0cece38c4739df67f910dcabf1bd","is_default":0,"created_at":1734096440},"219277ae-b2ac-4d42-913d-eaea40985295":{"title":"Google Tag Manager","exclusions":["\/gtag\/js","gtag\\(","\/gtm.js","async-hide"],"icon_url":"","summary":"","type":"script","category":"analytics","id":"script:1d3c65b2b03ef35e14df6b163ea3a1f6","is_default":0,"created_at":1733481215},"f632e3f4-20e6-471e-a78d-86afbea63586":{"title":"HubSpot","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","js(.*).hsforms.net","hbspt.forms.create","MeetingsEmbed\/ex\/MeetingsEmbedCode.js"],"icon_url":"","summary":"Display the form","type":"script","category":"analytics","id":"script:de4bd8ef4675ebb85a055955de76d0ee","is_default":0,"created_at":1742318463}},"ad_networks":{"dd0c5a5b-ec56-49f9-9aa4-89e1e3a6a28a":{"title":"Amazon Ads","exclusions":["amazon-adsystem.com"],"icon_url":"","summary":"To show the ads","type":"script","category":"ad_networks","id":"script:b82a5936d8ea0745016caeb71629ae5d","is_default":0,"created_at":1734083105},"980edf32-c64b-4370-bf23-c62b079e71c3":{"title":"Google AdSense","exclusions":["adsbygoogle"],"icon_url":"","summary":"Google Adsense","type":"script","category":"ad_networks","id":"script:0206e6040c8ff64b8d6ee5fef2ce1c90","is_default":0,"created_at":1734096273},"49c38c0a-43b9-4237-88cb-57ddd519f0ad":{"title":"Venatus Media","exclusions":["\/ad-manager.min.js","__vm_add"],"icon_url":"","summary":"Show ads on page load.","type":"script","category":"ad_networks","id":"script:abe11528732aed9a19a97e73b242faa5","is_default":0,"created_at":1734096334},"0627fe24-7e9d-400f-b064-d98bec2ba85e":{"title":"Yandex Ads","exclusions":["yandex.ru","window.yaContextCb"],"icon_url":"","summary":"Display Ads without interaction","type":"script","category":"ad_networks","id":"script:dbd1875130c71eb4b2ef768ad18d820c","is_default":0,"created_at":1734096360}},"payment_processors":{"05d3eb78-f574-49be-95e1-3f11714005d1":{"title":"Stripe","exclusions":["js.stripe.com"],"icon_url":"","summary":"Fixes ReferenceError: Stripe is not defined","type":"script","category":"payment_processors","id":"script:ce7566d1d08cc094b74cf283cf9c56a5","is_default":0,"created_at":1734077637}},"other_services":{"6f2f3fce-7671-416a-a322-08875c4badb5":{"title":"Cloudflare Turnstile","exclusions":["cloudflare.com\/turnstile\/","cf-turnstile"],"summary":"While DJE applied, the Cloudflare Turnstile Captcha doesn't appear at all.","icon_url":"","type":"script","category":"other_services","id":"script:7b1ae689f336775afa7835a9da7be645","is_default":0,"created_at":1742993345},"6f460036-3106-4b8c-9951-d32de9b1258f":{"title":"Google Maps","exclusions":["maps.googleapis.com","maps.google.com"],"icon_url":"","summary":"Google Maps","type":"script","category":"other_services","id":"script:4d60ab2c6d11d753267484006c23e54c","is_default":0,"created_at":1734096371},"122e6ebb-51fd-477f-97fb-559593f1a48b":{"title":"Google Recaptcha","exclusions":["recaptcha"],"icon_url":"","summary":"Fixes dependency issues related to Google Recaptcha","type":"script","category":"other_services","id":"script:032cb16577cbf07bc7c02bac83bd936d","is_default":0,"created_at":1734096345},"668df886-2f43-46fa-8426-7be3d7f7d150":{"title":"LeadConnector Chatbox","exclusions":["\/chat-widget\/loader.js"],"icon_url":"","summary":"The chatbox icon\/button does not display until user interaction.\r\n\r\nThis should likely be moved to a new category aside from 'Other Services' once the categories are expanded. Most likely 'Widgets'.\r\n\r\nRelated discussion:\r\nhttps:\/\/wp-media.slack.com\/archives\/C43T1AYMQ\/p1734619420716789?thread_ts=1734605228.860859&cid=C43T1AYMQ\r\n\r\nWebsite using this Chatbox:\r\nhttps:\/\/premiermarketingus.com\r\n\r\nIt uses a custom element for the Chatbox that could be used for limiting display in UI to only sites using this widget: ","type":"script","category":"other_services","id":"script:eeda31f2e95b6f4c2107aebe2887bfe8","is_default":0,"created_at":1734620886},"5d606add-ffb8-4a06-b295-5f722710fbfd":{"title":"Refari","exclusions":["widget.refari.co","refari"],"icon_url":"","summary":"www.refari.co","type":"script","category":"other_services","id":"script:a705e197b13b47e72a105c923e044358","is_default":0,"created_at":1734096181},"742ec14a-27a1-4789-b9c8-a9c3a3cf7042":{"title":"Reviews.io","exclusions":["\/carousel-inline-iframeless\/dist.js","carouselInlineWidget"],"icon_url":"","summary":"Prevents the widget from breaking","type":"script","category":"other_services","id":"script:4df445c576f45889506ba175a4c39fdc","is_default":0,"created_at":1734096412},"0a37e528-8718-49f7-a26d-059aa29f867d":{"title":"Trustindex","exclusions":["cdn.trustindex.io\/loader.js","cdn.trustindex.io\/loader-cert.js"],"icon_url":"","summary":"Trustindex element is shown immediately","type":"script","category":"other_services","id":"script:1d38d6195597e8bb81966870f0a4f939","is_default":0,"created_at":1734096229},"dda024ec-4539-4a00-aee8-d9522aa9ba27":{"title":"Trustindex - Load Rich Snippets","exclusions":["cdn.trustindex.io\/assets\/js\/richsnippet.js"],"icon_url":"","summary":"Allow Trustindex Rich Snippets JavaScript to be loaded on the page and show up in Google's Rich Snippet Testing Tool.","type":"script","category":"other_services","id":"script:55d971acbd86a7676772bca65c37c0c0","is_default":0,"created_at":1752130743},"ce9a3865-9efa-4e98-ae10-4f842a4ecc22":{"title":"Typeform","exclusions":["\/next\/embed.js"],"icon_url":"","summary":"Load Typeforms without interaction","type":"script","category":"other_services","id":"script:cd3889ae3b96f891186ae270dbbcc9bb","is_default":0,"created_at":1734096391},"b56bf06c-2f8c-4757-b536-a689fb0e75f9":{"title":"Typekit","exclusions":["typekit"],"icon_url":"","summary":"Load Typekit fonts on page load","type":"script","category":"other_services","id":"script:7815e38b93e3b500a632681bd594bd61","is_default":0,"created_at":1734096353},"03819e72-abf5-4057-9047-16d45db4641e":{"title":"Vidalytics - Autoplay","exclusions":["vidalytics_embed"],"summary":"Allows the autoplay functionality to work for videos without need for user interaction first.","icon_url":"","type":"script","category":"other_services","id":"script:113087c8df349e7c8b86875b46071855","is_default":0,"created_at":1736531452},"2c1d0998-8ab5-478c-8eb9-9e375b46363e":{"title":"Wistia","exclusions":["fast.wistia.com","\/assets\/external\/E-v1.js"],"icon_url":"","summary":"Show video on page load","type":"script","category":"other_services","id":"script:9a0111f8c3186c1cb3113587c660c041","is_default":0,"created_at":1734096254}}}}
\ No newline at end of file
+{"plugins":{"ffc21030-519a-4853-8cea-49f959e82731":{"title":"Additional Variation Images Gallery for WooCommerce","condition":"woo-variation-gallery\/woo-variation-gallery.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woo-variation-gallery\/assets\/js\/slick.min.js","\/woo-variation-gallery\/assets\/js\/frontend.min.js","\/wp-includes\/js\/underscore.min.js","variation_custom_fields"],"icon_url":"","summary":"Prevents delay in the loading of product images.","type":"plugin","id":"plugin:def67a2c1ddd6df2353e4772b6fd4e5b","is_default":0,"created_at":1724424735},"0e7dc253-acd0-4421-877f-a7101d848717":{"title":"Advanced Ads","condition":"advanced-ads\/advanced-ads.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/(.*).js","advanced_ads_ready","advadsCfpQueue","adsbygoogle","adservice.google","\/advanced-ads(.*)","advads_items","advads_tracking_ads"],"icon_url":"","summary":"The latest versions of Advanced Ads include automatic compatibility with Delay JS. So please update them first: Advanced Ads 1.27.0, Advanced Ads Pro 2.13.0, and Advanced Ads Tracking 2.1.0","type":"plugin","id":"plugin:4b82cc7379d46c6272f5d556bb264eec","is_default":0,"created_at":1724424826},"a4d5c058-9120-47ee-977c-f30f83fb1a75":{"id":"plugin:a076fbb79772f497349a76ee74a7f708","title":"All-in-one Compliance for GDPR \/ CCPA Cookie Consent","type":"plugin","icon":"","exclusions":["iubenda_cs.js","var _iub"],"is_default":0,"condition":"iubenda-cookie-law-solution\/iubenda_cookie_solution.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"88457e92-0f24-458e-b7b5-bab59074ebef":{"title":"Amelia","condition":"ameliabooking\/ameliabooking.php","exclusions":["\/wp-content\/plugins\/ameliabooking\/(.*).js","var hasAmeliaEvent","var ameliaShortcodeData"],"icon_url":"","summary":"Display booking options without user interaction.","type":"plugin","category":"analytics","id":"plugin:93ea6597c3cbd06e93a46b9f5368732d","is_default":0,"created_at":1758013982},"79a5082f-821a-4a4b-a0e3-caaf22cf3f75":{"title":"AMO Team Showcase","condition":"amo-team-showcase\/amo-team-showcase.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/amo-team-showcase\/public\/js\/wookmark.js","\/amo-team-showcase\/public\/js\/amo-team-showcase-public.js","\/wp-includes\/js\/imagesloaded.min.js","amoTeamVars"],"icon_url":"","summary":"To display team members.","type":"plugin","id":"plugin:9bdceaa1bb89135730a3b2aa4db94c22","is_default":0,"created_at":1724425072},"90c7fd90-3adf-4cb7-8a92-845bdbd95d27":{"title":"Anti-Spam by CleanTalk - Prevent console error","condition":"cleantalk-spam-protect\/cleantalk.php","exclusions":["ctPublicFunctions","ctPublic"],"icon_url":"","summary":"Prevent console error","type":"plugin","id":"plugin:ed2ade77cd44e21b1703b093c002a903","is_default":0,"created_at":1724425107},"e054f840-700a-4549-bbba-485473a53f71":{"title":"AnWP Football Leagues - Calendar Widget","condition":"football-leagues-by-anwppro\/anwp-football-leagues.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/football-leagues-by-anwppro\/(.*)","\/football-leagues-by-anwppro-premium-premium\/(.*)","window.AnWPFLPro","window.AnWPFLTabulator","\/elementor\/assets\/lib\/flatpickr\/flatpickr.min.js"],"icon_url":"","summary":"Display FL Calendar Widget","type":"plugin","id":"plugin:e7581089f33fdf0a970d5c5deb16ff50","is_default":0,"created_at":1724425139},"1d058cae-4460-4354-bab3-a96445650bd8":{"title":"AnyWhere Elementor Pro","condition":"anywhere-elementor-pro\/anywhere-elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/anywhere-elementor-pro\/build\/index.js"],"icon_url":"","summary":"Make links clickable","type":"plugin","id":"plugin:b739df50f3f5bf400075f17dca652517","is_default":0,"created_at":1724425158},"8a1614c7-55b1-4b6d-88e5-6e8ddc630dae":{"id":"plugin:46741e77eaf4d13a0c80be6b86379758","title":"Astra - Pro Addon","type":"plugin","icon":"","exclusions":["\/astra-addon\/astra-addon-(.*).js"],"is_default":0,"condition":"astra-addon\/astra-addon.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"24bc7cdf-0c51-4d93-a74d-57344689a4f6":{"title":"Beaver Builder - Background Images","condition":"bb-theme-builder\/bb-theme-builder.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/uploads\/bb-plugin\/cache\/(.*)-layout.js"],"summary":"When Delay JavaScript Execution is enabled, background images don't show until user interaction.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:b509b5b21236c81836daf74954b9109e","is_default":0,"created_at":1737120060},"37d96403-f9ea-4481-b2f8-374d7c93e61a":{"title":"Beaver Builder Lite","condition":"beaver-builder-lite-version\/fl-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/bb-plugin\/","\/bb-plugin\/js\/yui3.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/bb-plugin\/js\/fl-slideshow.min.js"],"summary":"To show parallax background, slideshow background and some animations instantly.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:3fab17e6c8338e2dcc7a5c8a06abf093","is_default":0,"created_at":1737118681},"f83dbf3b-783e-4ef9-9b18-8a469ca7102d":{"title":"Bloom","condition":"bloom\/bloom.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bloom\/"],"icon_url":"","type":"plugin","id":"plugin:e57cdfbc09f4e0f7445c279d9f580bdd","is_default":0,"created_at":1685189070},"a95fbc8a-c32d-4a4b-90b4-ab6d203501a6":{"title":"Bold Builder - Load Page Content","condition":"bold-page-builder\/bold-builder.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/plugins\/bold-page-builder\/content_elements_misc\/js\/content_elements.js"],"summary":"When Delay JavaScript Execution is enabled, the Bold Builder page content doesn't load until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:b4e303b649e8a20c016a51f35647cf35","is_default":0,"created_at":1754073080},"135aadd2-cd4a-44ae-8dcf-801f3f2316c0":{"id":"plugin:055ef01accbad6378e3d1a4965600964","title":"Booked","type":"plugin","icon":"","exclusions":["\/booked\/","\/js\/jquery\/ui\/datepicker.min.js"],"is_default":0,"condition":"booked\/booked.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"ddfee9b0-e5a9-4d3f-8c21-b999cbb61c33":{"title":"Bookly","condition":"bookly-responsive-appointment-booking-tool\/main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/bookly-responsive-appointment-booking-tool\/frontend\/","window.bookly"],"icon_url":"","summary":"To load the booking form on page load.","type":"plugin","id":"plugin:492f9b0d55f3bf07c68e915ea1dfb72a","is_default":0,"created_at":1724427886},"7a013fd6-0881-4dbe-8e93-33edefe7f717":{"title":"Borlabs Cookie","condition":"borlabs-cookie\/borlabs-cookie.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","borlabsCookieConfig","borlabs-cookie.min.js","borlabsCookieContentBlocker","BorlabsCookieBox","allFbWidgets","\/borlabs-cookie\/assets\/javascript\/","borlabs-cookie-config"],"icon_url":"","type":"plugin","id":"plugin:e1ec2daca513de476bd3dae79366e9ab","is_default":0,"created_at":1702497952},"3999e680-4049-4494-945c-768cecc1a2c4":{"title":"Brizy","condition":"brizy\/brizy.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/group-(.*).js","\/brizy\/public\/editor-build\/(.*)-wp\/editor\/js\/preview.js","Brizy.emit","\/brizy\/public\/editor-build\/prod\/editor\/js\/group-(.*).js","\/brizy-pro\/public\/editor-build\/prod\/js\/preview.pro.min.js","Brz.emit"],"icon_url":"","summary":"Prevents partially loading the slider. When Delay JavaScript Execution is enabled, the page content don't load until user interaction.","type":"plugin","category":"analytics","id":"plugin:43019d66af7b41e65bb602c01e10c6a0","is_default":0,"created_at":1744729591},"af4d9357-3def-42a1-86b7-419553444b4d":{"title":"Carousel Upsells and Related Product for WooCommerce","condition":"carousel-upsells-and-related-product-for-woocommerce\/ffxf-woo-glide-related-and-upsells.php","exclusions":["\/carousel-upsells-and-related-product-for-woocommerce\/assets\/js\/glide.min.js","carusel_poduct_related"],"icon_url":"","summary":"To load the carousel products with the correct spacing without interaction.","type":"plugin","id":"plugin:5c317f9f244597d8f236ecb7d8e41752","is_default":0,"created_at":1724428163},"fd98f80b-c23b-410d-9dc3-a8ce3e993ac1":{"title":"Chaty Pro","condition":"chaty-pro\/cht-icons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/chaty-pro\/js\/cht-front-script.min.js","\/chaty-pro\/js\/mailcheck.js"],"summary":"Makes the chat widget load without need for user interaction.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:b96ceb22b2d39fb4efd313c0820815ea","is_default":0,"created_at":1741370727},"a3008eca-48a0-472d-9a07-5dca76f92a44":{"title":"Click to Chat - HoliThemes \u2013 Load Widget","condition":"click-to-chat-for-whatsapp\/click-to-chat.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/click-to-chat-for-whatsapp\/"],"summary":"Allow the Click to Chat widget (free version) from HoliThemes to load without user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:a972e5b5e65713a2ac6902079728cce0","is_default":0,"created_at":1747894280},"a9bfc345-2da1-413e-bbe7-800245df5f1f":{"title":"Click to Chat Pro - HoliThemes \u2013 Load Widget","condition":"click-to-chat-pro\/click-to-chat-pro.php","exclusions":["\/click-to-chat-pro\/"],"summary":"Allow the Click to Chat widget (Pro version) by HoliThemes to load without user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:9bc0ad7f761a99e2bf2c3df3fa43dc5a","is_default":0,"created_at":1747894256},"1d866d90-5451-43ba-a4d1-75b64f9235e1":{"title":"clickskeks.at Cookiebanner","condition":"clickskeks\/index.php","exclusions":["clickskeks"],"icon_url":"","summary":"Load the cookie banner without interaction.","type":"plugin","id":"plugin:0a3a29603ebac8fe0808f64f5c8edbb2","is_default":0,"created_at":1724428285},"866ceb37-0285-4ce6-9f2a-9a99b03ad0c1":{"title":"CMSMasters Elementor Addon - Mobile Menu","condition":"cmsmasters-elementor-addon\/cmsmasters-elementor-addon.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/cmsmasters-elementor-addon\/assets\/lib\/perfect-scrollbar\/perfect-scrollbar.min.js","\/cmsmasters-elementor-addon\/assets\/lib\/basicScroll\/basicScroll.min.js","\/cmsmasters-elementor-addon\/assets\/js\/webpack.runtime.min.js","\/cmsmasters-elementor-addon\/assets\/js\/frontend.min.js","elementorCmsmastersFrontendConfig"],"summary":"Mobile menu won't open without these exclusions.\r\n\r\nUsed the same exclusions as Elementor, as that's a required plugin to use this one.","icon_url":"","type":"plugin","category":null,"id":"plugin:0e953e89f00b7ba303c8cc9c26eae84e","is_default":0,"created_at":1744056425},"bd275cce-a8ba-48a1-aa37-b9106a287075":{"title":"CommerceGurus CommerceKit - Load featured image","condition":"commercegurus-commercekit\/commercegurus-commercekit.php","exclusions":["\/wp-content\/plugins\/commercegurus-commercekit\/","cgkit_attr_gallery","commercekit_ajs"],"summary":"The featured product images don't load until user interaction with page.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:e081beb69f2208167beb93dfbe596591","is_default":0,"created_at":1758734403},"c09695cc-2387-4416-881a-c0b392188a26":{"title":"Complianz","condition":"complianz-gdpr\/complianz-gpdr.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","complianz"],"icon_url":"","type":"plugin","id":"plugin:a766f95208154cd69a3e15150a42f325","is_default":0,"created_at":1685188788},"bfb36984-e2a1-40ba-a8cd-f29b0b6f720f":{"title":"Complianz Premium","condition":"complianz-gdpr-premium\/complianz-gpdr-premium.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","complianz"],"icon_url":"","type":"plugin","id":"plugin:89d54385816dd2d5ae92cfda9d95bbfd","is_default":0,"created_at":1712163685},"b5e146fc-0b7c-4c6c-a631-8da246d3bd89":{"title":"Conerstone Builder - Fix mobile menu","condition":"cornerstone\/cornerstone.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/cornerstone\/assets\/js\/site\/cs-classic.(.*).js"],"icon_url":"","summary":"Fix the issue with the hamburger menu, when Delay JavaScript execution is enabled the menu doesn't open.","type":"plugin","id":"plugin:f8f8c81535b5e0073aa3c56b6dd3df5b","is_default":0,"created_at":1724428497},"368bc394-b74e-4b62-b359-cd967f78c6ea":{"title":"ConsentMagic Pro - Show popup without user interaction","condition":"consent-magic-pro\/consent-magic-pro.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/plugins\/consent-magic-pro\/js\/cs-public.min.js","\/wp-content\/plugins\/pixelyoursite-pro\/(.*)"],"icon_url":"","summary":"Load the consent popup without user interaction.","type":"plugin","id":"plugin:9e0701a214f49a057f17b00e39df2e7e","is_default":0,"created_at":1724428306},"7e551e3b-fbe4-4235-87a9-b476bc9e2020":{"title":"Content Egg","condition":"content-egg\/content-egg.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/content-egg\/res\/js\/morrisjs\/morris.min.js","\/content-egg\/res\/js\/morrisjs\/raphael.min.js","Morris.Area"],"icon_url":"","summary":"Show charts on page load.","type":"plugin","id":"plugin:949b1b923d51d10a2fb67a2a39d166b3","is_default":0,"created_at":1724428456},"7fbca6c5-9239-4550-a755-6f041f867a57":{"title":"Cookie Notice & Compliance for GDPR \/ CCPA","condition":"cookie-notice\/cookie-notice.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/cookie-notice\/","var cnArgs"],"icon_url":"","summary":"Loads the cookie notice on the screen.","type":"plugin","id":"plugin:213d0f883ae27aefb3a7937656bbd11e","is_default":0,"created_at":1724428382},"26722567-fe35-44b5-a5a7-fb0f3a38c3f2":{"title":"Cookiebot CMP","condition":"cookiebot\/cookiebot.php","exclusions":["consent.cookiebot.com"],"icon_url":"","summary":"Resolves issue with links not being clickable.","type":"plugin","id":"plugin:1d10ad30bbcf0fd4b26e9625a07abcfc","is_default":0,"created_at":1724428418},"1547249a-ce0c-40e4-91f6-148a5f9652d7":{"title":"CookieYes Lite - Show on page load","condition":"cookie-law-info\/cookie-law-info.php","exclusions":["\/cookie-law-info\/lite\/frontend\/js\/script.min.js"],"icon_url":"","type":"plugin","id":"plugin:29d4d4ccd077232b111581043bbd8d81","is_default":0,"created_at":1721422981},"74110e36-89e5-440d-bec3-7133da3277c2":{"title":"Coupon Referral Program","condition":"coupon-referral-program\/coupon-referral-program.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/coupon-referral-program\/","\/wp-includes\/js\/jquery\/ui\/draggable.min.js"],"icon_url":"","summary":"Fixes non-breaking dependency error.\r\n\r\nAlso requires excluding the following from JavaScript deferring:\r\n\r\n\/coupon-referral-program\/","type":"plugin","id":"plugin:edcf103293ceab711e999d419d038ca1","is_default":0,"created_at":1724428687},"408fa396-20f2-4b1f-820d-52882af281cc":{"title":"CozyStay Core - Fix background images","condition":"cozystay-core\/cozystay-core.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/cozystay-core\/assets\/scripts\/front\/parallax-bundle.min.js"],"icon_url":"","summary":"Fixes background images loading.","type":"plugin","id":"plugin:872b5eef05c1fc3b00cda07ee966938d","is_default":0,"created_at":1724428721},"919e07d3-df99-4ebd-a119-dca6c7cb4e22":{"title":"CP Live - Show Videos on Page Load","condition":"cp-live\/cp-live.php","exclusions":["\/cp-library\/build\/src\/app.js","\/feather-icons\/(.*)\/feather.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/element.min.js","\/wp-includes\/js\/dist\/escape-html.min.js"],"summary":"When Delay JavaScript Execution is enabled, videos don't show on page until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:a589057eec49aeea28adecba9585059f","is_default":0,"created_at":1744115729},"ed63e02f-d6c5-481a-bcb9-aae15f72aa21":{"title":"Crisp - Live Chat and Chatbot","condition":"crisp\/crisp.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","CRISP_RUNTIME_CONFIG","l.js"],"icon_url":"","summary":"Allow the chat icon to be displayed.","type":"plugin","id":"plugin:c3e26264dcfd25802805b4fd1a2a449c","is_default":0,"created_at":1724428819},"a8eb622b-279c-4f84-86e0-785e9497add7":{"title":"Custom Twitter Feeds pro","condition":"custom-twitter-feeds-pro\/custom-twitter-feed.php","exclusions":["\/custom-twitter-feeds-pro\/js\/ctf-scripts.min.js"],"icon_url":"","summary":"Allow Twitter feed pro to display a Twitter feed","type":"plugin","id":"plugin:6e4bf949e12f0bebfefb48f6c316102a","is_default":0,"created_at":1724428839},"1624ef15-e25b-406d-bdf9-d4b78d7a59e7":{"title":"Customer Reviews for WooCommerce Plugin","condition":"customer-reviews-woocommerce\/ivole.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/customer-reviews-woocommerce\/js\/colcade.js"],"icon_url":"","type":"plugin","id":"plugin:1f893b343e72ce55e6c9013fbda172fa","is_default":0,"created_at":1704734788},"b0614843-afed-4377-9d8d-e869221be331":{"title":"Depicter Slider","condition":"depicter\/depicter.php","exclusions":["\/depicter\/"],"icon_url":"","type":"plugin","id":"plugin:77c42a041f1c40d128f4bb3714a6d20d","is_default":0,"created_at":1713878881},"396cc03a-8946-4ee8-ab15-7e48261df79a":{"title":"Divi - Carousel Module 2.0","condition":"dg-divi-carousel","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/dg-divi-carousel\/"],"icon_url":"","type":"plugin","id":"plugin:fcd789b7d02699f89720aa5ff3627912","is_default":0,"created_at":1709126476},"c15fe3b3-0eaa-48f9-bf04-0e778b1f8c63":{"title":"Divi - Supreme","condition":"supreme-modules-for-divi\/supreme-modules-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/supreme-modules-for-divi\/"],"icon_url":"","type":"plugin","id":"plugin:b5489ae4d8b949f536d6dd2e5b0c1a95","is_default":0,"created_at":1679738701},"dd31451b-989a-4517-b02a-e2c2e2023366":{"title":"Divi Den Pro","condition":"ddpro\/ddpro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ddpro\/build\/freddie\/js\/freddieScriptPageTransition.js","\/ddpro\/build\/freddie\/js\/freddieScriptsHeaders.js","\/ddpro\/build\/freddie\/js\/freddieScriptsContents.js","\/ddpro\/build\/freddie\/js\/gsap\/gsap.min.js"],"icon_url":"","summary":"Fires animations and content created with Divi Den Pro.","type":"plugin","id":"plugin:5caed322df984bbfd3ecb506cf12b688","is_default":0,"created_at":1724429225},"2b006370-cc90-42c1-9656-a30fbfbc91c6":{"title":"Divi Mobile","condition":"divi-mobile\/divi-mobile.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","divi-menu","dm_nav"],"icon_url":"","summary":"Avoid double click when using the mobile menu.","type":"plugin","id":"plugin:402d9b241b04934dd30f32e7ba490e63","is_default":0,"created_at":1724429325},"666bbed9-7ce3-457c-ad6e-b5e056d05010":{"title":"Divi Overlays","condition":"divi-overlays\/divi-overlays.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","var DIVI","\/divi-overlays\/"],"icon_url":"","summary":"Enable modals to be displayed on screen","type":"plugin","id":"plugin:1c828c93d87298d2a27c76e13d0880ba","is_default":0,"created_at":1724429242},"42a404af-7792-44be-9baa-565dc3baf25d":{"title":"Divi Pixel","condition":"divi-pixel\/divi-pixel.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/divi-pixel\/dist\/public\/js\/hamburger.min.js","\/divi-pixel\/dist\/vendor\/js\/easypiechart.js"],"icon_url":"","summary":"Page Preloader","type":"plugin","id":"plugin:dd2494945a487a6cc74d3ab1b2137ccb","is_default":0,"created_at":1724429347},"85f5c099-c481-4c38-bbb9-8b76113bdfd5":{"title":"Divi Supreme Pro","condition":"supreme-modules-pro-for-divi\/supreme-modules-pro-for-divi.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","elm.style.display","\/supreme-modules-pro-for-divi\/includes\/modules\/ImageCarousel\/frontend.min.js","\/supreme-modules-pro-for-divi\/public\/js\/swiper-bundle.min.js"],"icon_url":"","summary":"Avoid white screen before user interaction","type":"plugin","id":"plugin:3d5f0ae7751702fd1bb490fcf991a334","is_default":0,"created_at":1724429378},"0b78d762-c7be-45de-9aae-0c5078ec0619":{"id":"plugin:b5fc0101608d0b0627268dc49e3e1f8f","title":"Divi Toolbox","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","jQuery('.preloader')","\/divi-toolbox\/assets\/js\/toolbox-scripts.js"],"is_default":0,"condition":"divi-toolbox\/divi-toolbox.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"fe4f05d8-f90a-4547-9717-1b51a2dc8c5f":{"title":"Divi Torque - Carousel Images","condition":"addons-for-divi\/addons-for-divi.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/addons-for-divi\/assets\/libs\/slick\/slick.min.js","\/plugins\/addons-for-divi\/assets\/libs\/magnific-popup\/magnific-popup.js","\/plugins\/addons-for-divi\/assets\/js\/frontend.js","\/plugins\/addons-for-divi\/assets\/libs\/counter-up\/counter-up.min.js","\/themes\/Divi\/js\/scripts.min.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/jquery.mobile.js","cdn.userway.org\/widget.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, carousel images have incorrect dimensions until user interaction with page.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/213","type":"plugin","category":"analytics","id":"plugin:0c5e37ad7075d749ed195f856431d4e7","is_default":0,"created_at":1751983104},"9714d442-1c18-4b5d-a840-9eae2054f047":{"title":"Divi Torque - Gallery Images","condition":"addons-for-divi\/addons-for-divi.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/plugins\/diviflash\/public\/js\/lib\/packery.pkgd.js","\/wp-content\/plugins\/diviflash\/public\/js\/lib\/imagesloaded.pkgd.min.js","\/wp-content\/plugins\/diviflash\/public\/js\/df-packery.js","\/themes\/Divi\/js\/scripts.min.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js","\/themes\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/jquery.mobile.js","cdn.userway.org\/widget.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the gallery images do not show until user interaction with page.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/214","type":"plugin","category":"analytics","id":"plugin:a6b73cee8978dfce1c881b8301445741","is_default":0,"created_at":1751983856},"aa07b744-a9cc-4de2-8caf-c203da1a8517":{"title":"DiviMenus - Mobile Menu","condition":"divimenus\/divimenus.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/divimenus\/scripts\/frontend-bundle.min.js"],"summary":"When Delay JavaScript Execution is enabled, the mobile menu loads as open until interaction with the page.","icon_url":"","type":"plugin","category":null,"id":"plugin:5041c45e48cd10836174e158078bdce6","is_default":0,"created_at":1745522929},"31a34440-1383-40c4-8920-effcf99f2165":{"title":"Dracula Dark Mode","condition":"dracula-dark-mode-premium\/plugin.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/plugins\/dracula-dark-mode-premium\/assets\/js\/dark-mode.js","\/wp-content\/plugins\/dracula-dark-mode-premium\/assets\/js\/frontend.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","draculaDarkMode"],"icon_url":"","summary":"Show dark mode toggle button and apply styles without need for user interaction with page.","type":"plugin","id":"plugin:5e8a5d8d3830136d84d0f3676f1bf5a5","is_default":0,"created_at":1724429514},"8baba0f8-4449-47d8-a87d-9b6a116e7684":{"title":"Dynamic Pricing & Discounts Lite for WooCommerce","condition":"woo-dynamic-pricing-discounts-lite\/dynamic-pricing-discounts-lite-for-woocommerce.php","exclusions":["\/woo-dynamic-pricing-discounts-lite\/assets\/OwlCarousel\/dist\/owl.carousel.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:185062bf08db42515488e1853d1f4917","is_default":0,"created_at":1677857247},"0fa129f2-5869-4db7-9bf0-69e4b3549ee2":{"id":"plugin:27478327aa44075a86176fad95640d76","title":"Dynamic Product Gallery for WooCommerce","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-dynamic-gallery\/","a3revWCDynamicGallery"],"is_default":0,"condition":"woocommerce-dynamic-gallery\/wc_dynamic_gallery_woocommerce.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"9958c6be-2f67-4791-95c3-a7ad96d599c0":{"title":"Dynamic Product Gallery Premium for WooCommerce","condition":"woocommerce-dynamic-gallery-pro\/wc_dynamic_gallery_woocommerce.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/woocommerce-dynamic-gallery-pro\/assets\/js\/mygallery\/jquery.a3-dgallery.js","settings_defaults_","a3revWCDynamicGallery"],"icon_url":"","summary":"Load the gallery content without user interaction.","type":"plugin","id":"plugin:11dc02a76019f00422f4ac85f47f5135","is_default":0,"created_at":1724429541},"ce26ed21-1be5-481f-80d4-31edfac6d890":{"title":"Dynamic.ooo - Dynamic Content for Elementor","condition":"dynamic-content-for-elementor\/dynamic-content-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/dynamic-content-for-elementor\/assets\/","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","summary":"Show dynamic content","type":"plugin","id":"plugin:d2bd5b348abe016bdc722acce7755062","is_default":0,"created_at":1724429557},"6a3161a6-1a6f-457a-a9ee-54b376981927":{"title":"Easy Table of Contents","condition":"easy-table-of-contents\/easy-table-of-contents.php","exclusions":["\/easy-table-of-contents\/assets\/js\/front.min.js"],"icon_url":"","summary":"Avoid the Easy Table of Contents to briefly open when the page loads.","type":"plugin","id":"plugin:ee1dec033c6481a77fe88de5bef1a02d","is_default":0,"created_at":1724429629},"25a534a0-2c1f-4cf4-9e19-7941bc032b3a":{"title":"Ecwid Ecommerce Shopping Cart","condition":"ecwid-shopping-cart\/ecwid-shopping-cart.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","app.ecwid.com\/script.js","\/ecwid-shopping-cart\/js\/frontend.js","\/ecwid-shopping-cart\/js\/static-page.js","ecwidParamswindow.ec","jQuery.mobile","xSearch","xCategoriesV2","xProductBrowser","Ecwid.init"],"icon_url":"","type":"plugin","id":"plugin:41c8f5f0ab00cb39654aedd783d194e0","is_default":0,"created_at":1704734846},"a0d681db-991a-4220-8f05-c54a4857aa42":{"title":"Element Pack Pro","condition":"bdthemes-element-pack\/bdthemes-element-pack.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/bdthemes-element-pack\/assets\/js\/modules\/ep-static-carousel.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-custom-carousel.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-slideshow.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-product-carousel.min.js","\/bdthemes-element-pack\/assets\/js\/modules\/ep-stacker.min.js","\/bdthemes-element-pack\/assets\/js\/bdt-uikit.min.js","\/bdthemes-element-pack\/assets\/js\/common\/helper.min.js","\/bdthemes-element-pack\/assets\/vendor\/js\/ScrollTrigger.min.js","\/bdthemes-element-pack\/assets\/vendor\/js\/gsap.min.js"],"icon_url":"","summary":"Fix issues with gallery and product carousels.","type":"plugin","id":"plugin:ced76c4da718a667537dc6c9d5e0244d","is_default":0,"created_at":1724429901},"40464325-5bae-4a20-bc97-553499e09a73":{"title":"Elementor","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:1d15783218a3137bec4ee8df5353e218","is_default":0,"created_at":1694425872},"ac86b64c-c80a-4053-894d-6caa8b4fdce8":{"title":"Elementor Loop Carrousel","condition":"elementor\/elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","type":"plugin","id":"plugin:0eb8d0bbd1c7ca05ac133ea634f676b7","is_default":0,"created_at":1694442056},"a8fc9fd1-f6d3-41eb-abe9-ef176de6d7e2":{"title":"Elementor - Lazy Load Background Images","condition":"elementor\/elementor.php","exclusions":["lazyloadRunObserver"],"icon_url":"","summary":"Start background images so they load immediately","type":"plugin","id":"plugin:bf248cb2876558452a566c5dd89262b8","is_default":0,"created_at":1724430300},"1948aff5-7850-4979-91fa-0ce181484508":{"title":"Elementor Custom Skin","condition":"ele-custom-skin\/ele-custom-skin.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ele-custom-skin(.*)\/assets\/js\/"],"icon_url":"","summary":"Fixes console error when Elementor scripts are excluded","type":"plugin","id":"plugin:de658ae6c2d05a5a4a947efecf5e0c16","is_default":0,"created_at":1724429916},"25708299-c596-4416-8ad8-740aee0f2752":{"title":"Elementor Pro","condition":"elementor-pro\/elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js"],"icon_url":"","summary":"Show elements, galleries, and start animations. \r\n\r\nWhen User Cache is active the following exclusions will resolve console errors:\r\n\r\n\/wp-includes\/js\/underscore.min.js\r\n\/wp-includes\/js\/jquery\/ui\/core.min.js\r\n\/wp-includes\/js\/backbone.min.js\r\nelementorAdminBarConfig\r\nelementorCommonConfig\r\nelementorWebCliConfig\r\nelementorDevToolsConfig","type":"plugin","id":"plugin:030ad23e3851ed7adfa7b9b6c13cf5a6","is_default":0,"created_at":1724430189},"f34dd874-4b34-41e6-a31c-ece3c1efbffc":{"title":"Elementor Pro - SmartMenus","condition":"elementor-pro\/elementor-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/assets\/lib\/smartmenus\/jquery.smartmenus.min.js","\/elementor-pro\/assets\/js\/preloaded-elements-handlers.min.js"],"icon_url":"","summary":"Fixes the mobile menu","type":"plugin","id":"plugin:305581ad4294a30eeb1247982f626005","is_default":0,"created_at":1724430219},"111cc8b2-0be9-438b-9aa3-7f1e301a5697":{"id":"plugin:5ae9f5d99224d5ebc7d0c0bbf5b99787","title":"Elementor Pro - User Cache","type":"plugin","icon":"","exclusions":["\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/backbone.min.js","elementorAdminBarConfig","elementorCommonConfig","elementorWebCliConfig","elementorDevToolsConfig"],"is_default":0,"condition":"elementor-pro\/elementor-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c1713bf8-e0c3-4cb5-8b3f-841b06aa87ed":{"title":"ElementsKit Lite - Megamenu","condition":"elementskit-lite\/elementskit-lite.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/elementskit(.*)\/"],"icon_url":"","type":"plugin","id":"plugin:b91fed2fc4478dbb7067742c1ee4691b","is_default":0,"created_at":1683270249},"236c2a9e-9668-4a80-9b66-d2222d812dd6":{"title":"Elfsight Slider CC","condition":"elfsight-slider-cc\/elfsight-slider-cc.php","exclusions":["\/elfsight-slider-cc\/assets\/elfsight-slider.js"],"icon_url":"","summary":"Load slider on page loading","type":"plugin","id":"plugin:b0e259c84df5e120d6113dd0eef9da4b","is_default":0,"created_at":1724430233},"706ff35d-8e33-4b04-a986-346faff704e9":{"title":"Essential Addons for Elementor","condition":"essential-addons-for-elementor-lite\/essential_adons_elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"icon_url":"","summary":"Start the carousel on page load","type":"plugin","id":"plugin:417192424139d89fb2a5b1ee1f2b9613","is_default":0,"created_at":1724430272},"b38556dc-2bc4-430f-9c55-7191cf7773db":{"title":"Essential Addons for Elementor Pro","condition":"essential-addons-elementor\/essential_adons_elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/essential-addons(-for)?-elementor(-lite)?\/.*(.min)?.js"],"icon_url":"","summary":"Start the carousel on page load","type":"plugin","id":"plugin:057757d0593ad9d2dc58124f0077a5df","is_default":0,"created_at":1724430280},"719b988f-0d60-40c2-ba46-88f943119cb1":{"title":"Essential Grid","condition":"essential-grid\/essential-grid.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/essential-grid\/","lightboxOptions"],"icon_url":"","summary":"Load grid without interaction.","type":"plugin","id":"plugin:c8e6c490f6438f566ade600c33531a85","is_default":0,"created_at":1724430960},"47d3d2ab-160d-4b07-ac25-8250b9e6a951":{"title":"EventON Lite","condition":"eventon-lite\/eventon.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/eventon-lite\/assets\/js\/(.*)"],"icon_url":"","summary":"Load the events calendar on page load","type":"plugin","id":"plugin:dafd19fa48a1fef890dc4348052fcb75","is_default":0,"created_at":1724430313},"219968d7-cf1f-4ee0-917a-db35dcc93a3e":{"id":"plugin:49ff465628fc3cb6d7f23ff81d9b8339","title":"FacetWP","type":"plugin","icon":"","exclusions":["\/facetwp\/assets\/js\/dist\/front.min.js","window.FWP_"],"is_default":0,"condition":"facetwp\/index.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"acce5701-5917-48d5-83ab-3e626aa420c5":{"id":"plugin:78a1c88a56fa957c802074b6418c6fac","title":"FacetWP - Flyout menu","type":"plugin","icon":"","exclusions":["\/facetwp-flyout\/assets\/js\/front.js"],"is_default":0,"condition":"facetwp-flyout\/facetwp-flyout.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"081461cf-dbd0-42f3-9557-10cdc16cf145":{"title":"FiboFilters Premium","condition":"fibofilters-pro\/fibofilters.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/fibofilters-pro\/build\/front-pro\/front.js"],"icon_url":"","summary":"Display filter without need for user interaction.","type":"plugin","id":"plugin:d9f62725f1470d35c3f220645bc2e473","is_default":0,"created_at":1724431277},"f2a5b95f-1a22-46d2-8b72-42a53e46ae3f":{"title":"FiboSearch - Ajax Search for WooCommerce","condition":"ajax-search-for-woocommerce\/ajax-search-for-woocommerce.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.js","\/wp-includes\/js\/jquery\/jquery-migrate.js","\/ajax-search-for-woocommerce\/assets\/js\/search.js","\/ajax-search-for-woocommerce\/assets\/js\/search.min.js"],"icon_url":"","summary":"Avoid search modals moving to the top when adding keyword in the input field.","type":"plugin","category":"analytics","id":"plugin:5d7555892a3a9968fde3fa3a335fc3d8","is_default":0,"created_at":1775676297},"7d1404e9-be76-449c-87aa-919557abe82d":{"title":"FlexBlock","condition":"flo-flex-builder\/flo-flex-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/flo-flex-builder\/dist\/flex-public.min.js","flexDebug"],"icon_url":"","summary":"Fire animations and show images on pageload.","type":"plugin","id":"plugin:ad46179e8b0584abaf52056b846da227","is_default":0,"created_at":1724431336},"b9c6a2dc-b226-4e2c-b85e-29ee55b8f751":{"title":"Fluent Forms","condition":"fluentform\/fluentform.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/fluentform\/public\/js\/(.*).js","\/fluentformpro\/public\/js\/(.*).js"],"icon_url":"","summary":"Fixes files upload field.\r\n\r\n*Requires exlcuding jQuery from JavaScript deferring as well","type":"plugin","id":"plugin:567a2b15db30ef6bd4904e4317139aac","is_default":0,"created_at":1724431366},"10874f8a-2855-4e80-bc46-e484589b76a8":{"title":"Flying Images","condition":"nazy-load\/flying-images.php","exclusions":["flyingImages"],"icon_url":"","summary":"Fixes images not being loaded until there is user interaction","type":"plugin","id":"plugin:e78c153103f698b2b34892332d6b3b62","is_default":0,"created_at":1724431386},"53958499-dacd-41d6-93bc-1534fe7d9eda":{"title":"FooGallery Premium","condition":"foogallery-premium\/foogallery.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/foobox-image-lightbox\/free\/js\/foobox.free.min.js","\/plugins\/foogallery-premium\/pro\/extensions\/default-templates\/shared\/js\/foogallery.min.js"],"icon_url":"","summary":"Prevents delay in the loading of product images.","type":"plugin","id":"plugin:5a0e40a6c5783856893b803189de1404","is_default":0,"created_at":1724431261},"7870d704-2024-4622-838c-fad37d5c6753":{"title":"Formidable Forms","condition":"formidable\/formidable.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","frmSigs","\/formidable-signature\/js\/frm.signature.min.js"],"icon_url":"","summary":"Prevent the delay of the function and the file that processes the signature.","type":"plugin","id":"plugin:ebb5efb57b19ae60e734e456ca2df3f8","is_default":0,"created_at":1724431311},"3f24f9b3-e59e-400f-a784-999f93f60fab":{"title":"Forminator","condition":"forminator\/forminator.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","forminatorFront","\/forminator\/build\/front\/front.multi.min.js","\/forminator\/assets\/js\/library\/jquery.validate.min.js","\/forminator\/assets\/forminator-ui\/js\/forminator-form.min.js","\/forminator\/assets\/forminator-ui\/js\/select2.full.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js","\/forminator\/assets\/js\/library\/intlTelInput.min.js"],"icon_url":"","summary":"Display form without interaction","type":"plugin","category":"analytics","id":"plugin:0b08523445b8869a67ca40e777704692","is_default":0,"created_at":1769789399},"cef612ad-2a33-4e0c-b2d2-0831bb35e682":{"title":"Funnelforms Free","condition":"funnelforms-free\/Funnelforms-free.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/funnelforms-free\/res\/frontend\/scripts\/frontend.js"],"summary":"When Delay JavaScript Execution is enabled, the Form doesn\u2019t load.","icon_url":"","type":"plugin","category":null,"id":"plugin:2cc4ab9bdadb915b68d466b87f5f2934","is_default":0,"created_at":1750261265},"2e1a34f6-21cd-46d1-af05-8ba575170f44":{"title":"Gallery Slider for WooCommerce - Pro - Fix Product Gallery","condition":"woo-gallery-slider-pro\/woo-gallery-slider-pro.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/woo-gallery-slider-pro\/public\/js\/woo-gallery-slider-public.min.js","\/woo-gallery-slider-pro\/public\/js\/swiper-bundle.min.js","\/woo-gallery-slider-pro\/public\/js\/zoom.min.js","\/woo-gallery-slider-pro\/public\/js\/jquery.fancybox.min.js","\/woo-gallery-slider-pro\/public\/js\/video.min.js"],"icon_url":"","summary":"Makes the gallery to load at page load","type":"plugin","id":"plugin:04761f78cbc0a1ed05c65d7e20ddda5b","is_default":0,"created_at":1732823624},"3a600ded-3454-48fb-9811-46afa2ab3c05":{"title":"GDPR Cookie Compliance","condition":"gdpr-cookie-compliance\/moove-gdpr.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/gdpr-cookie-compliance\/dist\/scripts\/main.js"],"icon_url":"","summary":"Show the consent banner on page load.","type":"plugin","id":"plugin:5759bf0d47ac3457485314b381a9b528","is_default":0,"created_at":1724431440},"e21aaa5e-7354-471d-ab86-85f99f48830c":{"title":"GDPR Cookie Consent","condition":"webtoffee-gdpr-cookie-consent\/cookie-law-info.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/public\/js\/cookie-law-info-public.js","Cli_Data"],"icon_url":"","summary":"Show the consent banner on page load.","type":"plugin","id":"plugin:ffb40036ab0583218561de7c28c6bd9b","is_default":0,"created_at":1724431421},"1f8bdec1-9c4c-4080-8ac0-5f8b49967047":{"title":"GetPaid - Fix console errors","condition":"invoicing\/invoicing.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/invoicing\/vendor\/ayecode\/wp-ayecode-ui\/assets\/js\/select2.min.js","\/invoicing\/vendor\/ayecode\/wp-ayecode-ui\/assets\/js\/bootstrap.bundle.min.js"],"summary":"It fixes some errors with jQuery in the browser's console.","icon_url":"","type":"plugin","id":"plugin:6756935a144cf0a74b252db5f8229ee9","is_default":0,"created_at":1728404861},"c11ca4ea-1a23-49ee-9a6b-1e549de50ea2":{"title":"Getwid - Gutenberg Blocks","condition":"getwid\/getwid.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"icon_url":"","summary":"Fixes tabs when jQuery is excluded from Delay JavaScript Execution.","type":"plugin","id":"plugin:3877953c5ec1e66db92ad844ae8ebafc","is_default":0,"created_at":1724431639},"79b33eb9-bc92-4d8a-afd8-1c61e70bed8f":{"title":"GiveWP","condition":"give\/give.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/give\/assets\/dist\/js\/give.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","summary":"Closes the preloader.","type":"plugin","id":"plugin:0fb3af06fc5c710a670220b054c292c5","is_default":0,"created_at":1724431653},"3773bb33-b168-4f68-9963-512da24ac4da":{"title":"GoodLayers Core","condition":"goodlayers-core\/goodlayers-core.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/goodlayers-core\/plugins\/script.js","\/goodlayers-core\/include\/js\/page-builder.js"],"icon_url":"","type":"plugin","id":"plugin:5f124509a56ca2e0644246919ec70434","is_default":0,"created_at":1704734904},"2adabe9b-6e03-4a67-959f-492813d40f69":{"title":"Google Tag Manager for WooCommerce PRO","condition":"gtm-ecommerce-woo-pro\/gtm-ecommerce-woo-pro.php","exclusions":["\/gtm-ecommerce-woo-pro\/assets\/gtm-ecommerce-woo-pro.js"],"icon_url":"","summary":"Fire tracker on page load.","type":"plugin","id":"plugin:e54fd4313007b6fedf8ab4df0e05277a","is_default":0,"created_at":1724431759},"7bf261ac-89d4-492f-8a3d-1c5809b9579a":{"title":"Gravity Forms","condition":"gravityforms\/gravityforms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/gravityforms\/","gform","recaptcha","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/plupload\/plupload.min.js","\/wp-includes\/js\/plupload\/moxie.min.js"],"icon_url":"","type":"plugin","id":"plugin:7a1c1606d094f6bff83c0ee155908367","is_default":0,"created_at":1694457903},"fbaf4a19-f675-441a-b75c-7fd748a59827":{"title":"Gravity Forms Page Transitions","condition":"gp-page-transitions\/gp-page-transitions.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/gp-page-transitions\/js\/"],"icon_url":"","summary":"To load the form without interaction - Gravity Forms one-click exclusion should also be checked.","type":"plugin","id":"plugin:53ef8d0ee1f9fdf0bbf87676e449eef5","is_default":0,"created_at":1724432081},"12340193-5c35-4b0d-b0bc-bea690cf1cae":{"title":"Green Forms","condition":"green-forms\/green-forms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","leform.min.js","leform_customjs_handlers","leform_ajax_url"],"icon_url":"","summary":"Load forms without any delay","type":"plugin","id":"plugin:2f3112dd98c39aeb6bde618c9026a29f","is_default":0,"created_at":1724432097},"4d20b427-47cf-4cdf-91c7-ff53602d3b2a":{"id":"plugin:0eb769dddc58f998e913345841b1d0b3","title":"GTM4WP","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","dataLayer"],"is_default":0,"condition":"duracelltomi-google-tag-manager\/duracelltomi-google-tag-manager-for-wordpress.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"a2b3c237-728c-49d6-882a-e3885444e9b4":{"title":"GTranslate","condition":"gtranslate\/gtranslate.php","exclusions":["translate.google.com","googleTranslateElementInit"],"icon_url":"","summary":"To enable immediate translation on the page without user interaction","type":"plugin","id":"plugin:3b085ccda851ccf129d9506462f0cd65","is_default":0,"created_at":1724432146},"79dfc946-6b96-4b6d-bcaf-8cae6330581a":{"title":"GTranslate - Show language switcher on page load","condition":"gtranslate\/gtranslate.php","exclusions":["window.gtranslateSettings","\/gtranslate\/js\/dwf.js","\/gtranslate\/js\/flags.js"],"icon_url":"","summary":"To show language switcher on page load.","type":"plugin","category":"analytics","id":"plugin:0aedfaa0f543c47c4b0fcf57307c6691","is_default":0,"created_at":1737550549},"40cd9336-e73f-4a61-a7f6-27ec1ca6892c":{"title":"HBook","condition":"hbook\/hbook.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/hbook\/","hb_booking_form_data","hb_max_date"],"icon_url":"","summary":"Render the form on page load.","type":"plugin","id":"plugin:e1f17c1eac230219e6fec3ac07406a0d","is_default":0,"created_at":1724432162},"52cec6ac-f2a4-415f-83f4-ca0db789401d":{"title":"hCaptcha for WP","condition":"hcaptcha-for-forms-and-more\/hcaptcha.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","hcaptcha"],"summary":"Load hcaptcha without error on page load","icon_url":"","type":"plugin","category":null,"id":"plugin:19677c6ace86eadfd1269341071f3481","is_default":0,"created_at":1770201198},"192224c7-df72-4e3d-8f13-3206ac5b2e90":{"title":"Helper - OpenAI Chatbot for WordPress","condition":"\/helper\/index.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/helper\/js\/helper.min.js","mdpHelper"],"icon_url":"","summary":"Allow for chatbot icon load without user interaction.","type":"plugin","id":"plugin:07311d992a8a9d6af91e4766d2cb9ac9","is_default":0,"created_at":1724433592},"99cfbb2e-5678-42c2-928f-5cb09d7e43da":{"title":"HUSKY - Products Filter for WooCommerce","condition":"woocommerce-products-filter\/index.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-products-filter\/(.*)","woof"],"icon_url":"","summary":"Avoid console error (no impact on the functionality of WOOF)","type":"plugin","id":"plugin:269c5766fba124a838ac012a4b5a1a13","is_default":0,"created_at":1724432177},"b98640e1-c483-4032-99fe-4fa96093d261":{"title":"Hustle","condition":"wordpress-popup\/popover.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/underscore.min.js","\/wp-content\/plugins\/wordpress-popup\/"],"summary":"When Delay JavaScript Execution is enabled, the Popup doesn't load.","icon_url":"","type":"plugin","category":null,"id":"plugin:d9fc141690ff6b022b7f15b533daac7f","is_default":0,"created_at":1759750548},"3a964eac-4aeb-49a7-9fd6-4c31b2645dee":{"id":"plugin:d457acfec0f86aac6733f1446f4fc94f","title":"Instagram Feed Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/instagram-feed-pro\/js\/sbi-scripts.min.js","sb_instagram_js_options"],"is_default":0,"condition":"instagram-feed-pro\/instagram-feed.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"8f9f4788-1b8d-468b-b291-1fcbd48618b9":{"id":"plugin:513b0c0ec8e12130af9b4bbbb17d7275","title":"Interactive Geo Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/interactive-geo-maps-premium\/assets\/public\/map-service\/app.min.js","\/interactive-geo-maps\/assets\/public\/map-service\/app.js","iMapsData","cdn.amcharts.com\/lib\/"],"is_default":0,"condition":"interactive-geo-maps\/interactive-geo-maps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"cf650ca3-afa0-4a13-9e4f-f7cca19abac6":{"title":"Ivory Search","condition":"add-search-to-menu\/add-search-to-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/add-search-to-menu\/public\/js\/ivory-search.min.js"],"icon_url":"","type":"plugin","id":"plugin:7430e9d2c985ae0a3339a7b7e1acc318","is_default":0,"created_at":1677852711},"17a5dd54-1f5e-4d57-a56d-a8a970651954":{"title":"JetBlocks","condition":"jet-blocks\/jet-blocks.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-blocks\/assets\/js\/jet-blocks.min.js"],"icon_url":"","summary":"Enable dropdown on hover on the Cart and enable Mobile Sticky Header","type":"plugin","id":"plugin:1c8a1e1ba89a601f88654f094139b469","is_default":0,"created_at":1724432217},"b6f78c90-9823-459a-8dc1-1257e5f0d4e3":{"title":"JetBlog","condition":"jet-blog\/jet-blog.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/","ElementorProFrontendConfig","elementorFrontendConfig","hasJetBlogPlaylist"],"icon_url":"","summary":"News ticker to work on pageload (in addition to any other Jet exclusions).","type":"plugin","id":"plugin:dac9ec782180f33d0fcc7c4e0e569b9d","is_default":0,"created_at":1724432242},"e17173d8-6ef8-4e27-ba0f-379c9aea7eda":{"title":"JetElements","condition":"jet-elements\/jet-elements.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jet-elements\/","hasJetBlogPlaylist","jetElements","\/wp-includes\/js\/jquery\/ui\/"],"icon_url":"","summary":"Load JetElements on page load.","type":"plugin","id":"plugin:0fe8895d1da5247b73a5d0b482df4ac4","is_default":0,"created_at":1724432253},"cfd77501-9c9e-4f11-b994-0178a592fc08":{"title":"JetEngine","condition":"jet-engine\/jet-engine.php","exclusions":["\/jet-engine\/"],"icon_url":"","type":"plugin","id":"plugin:bc998e71546860c8c7f70c45a6c18972","is_default":0,"created_at":1686208296},"f320c661-4a2b-4299-bada-110f9e931e3c":{"title":"JetFormBuilder - Load without interaction","condition":"jetformbuilder\/jet-form-builder.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jetformbuilder\/","var JetFormBuilderSettings","\/wp-includes\/js\/dist\/i18n.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/jet-plugins\/jet-plugins.js","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"summary":"The form is loaded without interaction, and styles are applied immediately.","icon_url":"","type":"plugin","id":"plugin:5ad00a39ed79f888daca19429bc59989","is_default":0,"created_at":1730300985},"36fed829-a2d9-41b5-94f6-2c3b9f07a94e":{"title":"JetMenu","condition":"jet-menu\/jet-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor-pro\/","\/elementor\/","\/jet-blog\/assets\/js\/lib\/slick\/slick.min.js","\/jet-elements\/","\/jet-menu\/","elementorFrontendConfig","ElementorProFrontendConfig","hasJetBlogPlaylist","JetEngineSettings","jetMenuPublicSettings","\/jet-reviews\/assets\/js\/lib\/vue.min.js"],"icon_url":"","summary":"Mobile menu to show on page load.","type":"plugin","id":"plugin:433a3173f2d06f7d02c7b91c06ed215d","is_default":0,"created_at":1724432268},"580cfed7-f034-4e39-bc7a-cdd01923ce87":{"title":"JetPopup","condition":"jet-popup\/jet-popup.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jet-popup\/assets\/js\/lib\/anime-js\/anime.min.js","\/jet-popup\/assets\/js\/jet-popup-frontend.js","\/jet-woo-builder\/","var jetPopupData","JetEngine.popupData"],"icon_url":"","summary":"To show the pop up","type":"plugin","category":"analytics","id":"plugin:51714cfdb43f231a1c93e7cffb1007ab","is_default":0,"created_at":1755872236},"d9cd2730-12e2-42d7-a082-6f0efcd466cc":{"title":"JetProductGallery","condition":"jet-woo-product-gallery\/jet-woo-product-gallery.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-woo-product-gallery\/assets\/lib\/swiper\/swiper.min.js","\/jet-woo-product-gallery\/assets\/js\/jet-woo-product-gallery.min.js","JetSwiper"],"icon_url":"","summary":"To avoid issues with the product gallery on the product page","type":"plugin","category":"analytics","id":"plugin:df3bc4b6a8a9f28a5ba24cb7496bbc72","is_default":0,"created_at":1740662940},"544aa37b-4d52-4182-99e8-abe23585da14":{"title":"JetReviews","condition":"jet-reviews\/jet-reviews.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jet-reviews\/assets\/js\/jet-reviews-frontend.js","\/jet-reviews\/assets\/js\/lib\/vue.min.js","jetReviewsWidget"],"icon_url":"","summary":"To show the reviews on the product page","type":"plugin","id":"plugin:5921fc95965ac7fccb7296957bd9abff","is_default":0,"created_at":1724432349},"963c7804-eede-4570-bd63-67066588b758":{"title":"JetSearch - Search results popup","condition":"jet-search\/jet-search.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jet-search\/assets\/lib\/chosen\/chosen.jquery.min.js","\/jet-search\/assets\/js\/jet-search.js","\/jet-search\/assets\/lib\/jet-plugins\/jet-plugins.js"],"icon_url":"","summary":"To display the list of results when using the search box.","type":"plugin","id":"plugin:13e8760379022187de982df2226a5be4","is_default":0,"created_at":1724432367},"a8460089-34b4-4f8f-8694-5d92fa48aa82":{"title":"JetSmartFilters","condition":"jet-smart-filters\/jet-smart-filters.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/jet-smart-filters\/assets\/js\/public.js","jet-smart-filters-js-extra","\/jet-engine\/assets\/lib\/jet-plugins\/jet-plugins.js","jetOffcanvasInitialized"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the right filters doesn't load until user interaction.","type":"plugin","category":"analytics","id":"plugin:0cd63a514de1f1acb88e2bde65c4bc8d","is_default":0,"created_at":1756996542},"fe3c4915-6f8b-49b7-aa9c-c97b264d9f12":{"title":"JetSticky","condition":"jetsticky-for-elementor\/jetsticky-for-elementor.php","exclusions":["\/jetsticky-for-elementor\/"],"icon_url":"","summary":"Allows sticky menu and sidebar to be displayed","type":"plugin","id":"plugin:a346b60514ef52afeffc6e2ef2793da3","is_default":0,"created_at":1724432399},"853479dc-fff5-47cf-9a60-bf9b00f71fc4":{"title":"JetTabs for Elementor","condition":"jet-tabs\/jet-tabs.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/wp-content\/plugins\/jet-tabs\/assets\/js\/jet-tabs-frontend.min.js"],"icon_url":"","summary":"To make the tab functionality work correctly.","type":"plugin","id":"plugin:d887a6ffea25d759e8aecdb6b78917f7","is_default":0,"created_at":1724432416},"b7f89562-230c-4f63-8360-7aad6df31e02":{"title":"JetTricks","condition":"jet-tricks\/jet-tricks.php","exclusions":["\/jet-tricks\/"],"icon_url":"","summary":"To display animations.","type":"plugin","id":"plugin:829272546b040d5aaeeeaf976b6cd4ec","is_default":0,"created_at":1724432431},"90451e2a-553a-4496-9fa4-cffedbe69d43":{"title":"JetWoo Widgets For Elementor","condition":"jet-woo-builder\/jet-woo-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/jetwoo-widgets-for-elementor\/assets\/js\/jet-woo-widgets.js","\/jet-woo-builder\/assets\/js\/jet-woo-builder.min.js","\/jet-woo-builder\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Load JetWoo carousel on page load.","type":"plugin","id":"plugin:f44f3dbd09149f57db370e4132b057db","is_default":0,"created_at":1724432447},"944718c2-48c6-4f53-aaa2-460d07e033cc":{"title":"JetWooBuilder","condition":"jet-woo-builder\/jet-woo-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/elementor-pro\/","\/elementor\/","elementorFrontendConfig","ElementorProFrontendConfig","JetEngineSettings","\/jet-woo-builder\/","\/jet-woo-builder-custom-quantity-selectors-main\/assets\/js\/main.js"],"icon_url":"","summary":"Add quantity buttons to add to cart.","type":"plugin","id":"plugin:ed318a971f8a047bed5b02ad546a9c18","is_default":0,"created_at":1724432462},"b7807939-54f8-4d5c-8363-a42a154d9592":{"title":"Joinchat","condition":"creame-whatsapp-me\/joinchat.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/creame-whatsapp-me\/public\/js\/joinchat.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the icon to open new chat does not display for mobile unless we apply these exclusions.","type":"plugin","id":"plugin:1c3ec728d37052f3a3055d415618342f","is_default":0,"created_at":1727103514},"8cdeadfc-f686-4c58-bf01-8d6ad43dfef8":{"title":"Kadence Blocks Pro - Load Content","condition":"kadence-blocks-pro\/kadence-blocks-pro.php","exclusions":["\/plugins\/kadence-blocks-pro\/includes\/assets\/js\/aos.min.js"],"summary":"When Delay JavaScript Execution is enabled, the page content doesn't load until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:ea96ffb0858920541f6a6144f7d2289f","is_default":0,"created_at":1754052401},"46d50db6-61ae-4703-aeaa-39f12a46f872":{"title":"Kadence Slider","condition":"kadence-slider\/kadence-slider.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/kadence-slider\/js\/min\/ksp-min.js"],"summary":"When Delay JavaScript Execution is enabled, the slides don't show until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:6a6b1a4de6dc21770d6d044b7dd7a2e4","is_default":0,"created_at":1759413099},"f5b62f59-1dae-4cdf-ac3f-f5e846fc9918":{"id":"plugin:9562e253cd4ac2b1e1f70e32cb4e32dc","title":"Layer Slider","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.utils.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.kreaturamedia.jquery.js","\/LayerSlider\/assets\/static\/layerslider\/js\/layerslider.transitions.js","initLayerSlider"],"is_default":0,"condition":"LayerSlider\/layerslider.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"e2be718d-83a2-4fa0-bc98-f0df52be3dc1":{"title":"LoftLoader Pro","condition":"loftloader-pro\/loftloader-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","loftloader.min.js"],"icon_url":"","summary":"Prevent the page from getting stuck in the loader and load the page content without user interaction.","type":"plugin","id":"plugin:1425e2735306796fe1539d9184a77e10","is_default":0,"created_at":1724432664},"cfa18552-656e-453c-9e14-c07522dc6598":{"title":"MailUp for WordPress","condition":"mailup-email-and-newsletter-subscription-form\/mailup.php","exclusions":["\/mailup-email-and-newsletter-subscription-form\/public\/js\/mailup-public.js","mailup-js-extra"],"icon_url":"","summary":"Enables subscription from to be submitted","type":"plugin","id":"plugin:0bf67b8ba84771e1a367fe24590ef09c","is_default":0,"created_at":1724433004},"c5330c66-ba7b-45b1-87e4-ce590ab005dd":{"title":"Maintenance","condition":"maintenance\/maintenance.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maintenance\/"],"icon_url":"","summary":"Removes the preload spinner without interaction.","type":"plugin","id":"plugin:10d0de28911c5f66463b9c8783f8148a","is_default":0,"created_at":1724433020},"62f6663a-a15f-4bca-b9b5-79f1770e2c5a":{"title":"MapifyLite- Show map on page load","condition":"mapifylite\/mapify_lite.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/mapifylite\/assets\/vendor\/leaflet-1.7.1\/leaflet.js","\/plugins\/mapifylite\/assets\/vendor\/leaflet\/markercluster\/leaflet.markercluster.js","\/plugins\/mapifylite\/assets\/vendor\/leaflet\/locatecontrol\/L.Control.Locate.min.js","\/plugins\/mapifylite\/assets\/vendor\/tooltip.js","\/plugins\/mapifylite\/assets\/js\/dist\/bundle.js","var map"],"icon_url":"","summary":"Load map on pageload.","type":"plugin","id":"plugin:48c30c0f37b64accf88126d4ef58e17b","is_default":0,"created_at":1724432876},"267aef71-afa0-4848-b6f8-3e1ca15c3a23":{"title":"Maps Marker Pro","condition":"maps-marker-pro\/maps-marker-pro.php","exclusions":["\/maps-marker-pro\/js\/mapsmarkerpro.js","var mapsMarkerPro"],"icon_url":"","summary":"Load map on pageload.","type":"plugin","id":"plugin:9460789bdfe77425c895f130991a4cb4","is_default":0,"created_at":1724432891},"b5a88b63-e906-49b3-8134-420139915ea6":{"title":"Master Popups","condition":"master-popups\/master-popups.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/master-popups\/assets\/public\/js\/master-popups-libs.min.js"],"icon_url":"","type":"plugin","id":"plugin:8fd7bd2c8b0a33e62798573abd12be63","is_default":0,"created_at":1681305305},"4be41549-bf4d-4c49-8346-0f8a3b88fdba":{"title":"Master Slider","condition":"master-slider\/master-slider.php","exclusions":["masterslider"],"icon_url":"","summary":"Prevents Master Slider to be initially hidden","type":"plugin","id":"plugin:de888634cc4bd51576eed319d5a528fd","is_default":0,"created_at":1724432981},"087bee18-7cd1-4c10-8acc-19e1b7c4f4cd":{"title":"Max Mega Menu","condition":"megamenu\/megamenu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/hoverIntent.min.js","\/megamenu\/js\/maxmegamenu.js","var megamenu"],"icon_url":"","summary":"For the Pro version this file may need to be excluded too:\r\n\r\n\/megamenu-pro\/assets\/public.js","type":"plugin","id":"plugin:b71309a89bf3c8b558b6fca5d6531919","is_default":0,"created_at":1724433045},"cf22f0b9-01f4-409e-8a93-ad6743095abd":{"title":"Meta Slider","condition":"ml-slider\/ml-slider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ml-slider\/","var metaslider"],"icon_url":"","summary":"Shows the slider on page load","type":"plugin","id":"plugin:94a7bae84ef2816494be4af66c577bfc","is_default":0,"created_at":1724433102},"beb2e088-1354-42db-b803-13e725e8916c":{"title":"MetForm","condition":"metform\/metform.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/metform\/public\/assets\/js\/htm.js","\/metform\/public\/assets\/js\/app.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js"],"icon_url":"","summary":"Allows the form to load without user interaction","type":"plugin","category":"analytics","id":"plugin:0aa559d4482eb485c12cd1ad71418523","is_default":0,"created_at":1774038905},"bb2cbc0d-20da-415e-8218-c17f1db53579":{"title":"Monarch","condition":"monarch\/monarch.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","dt-place-monarch-icons"],"icon_url":"","type":"plugin","id":"plugin:b7335d6d6d5c5134ea10ac2d9b04226c","is_default":0,"created_at":1677853476},"a98d6a80-4610-4ede-bd33-c3e15bed0a95":{"id":"plugin:4f8651262425ef6d7c223c68a2ec2063","title":"Monster Insights","type":"plugin","icon":"","exclusions":["__gtagTracker","monsterinsights_frontend","\/google-analytics-for-wordpress\/assets\/js\/frontend-gtag.min.js"],"is_default":0,"condition":"google-analytics-for-wordpress\/googleanalytics.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"26e1a36e-7a03-449e-8ecc-e42c41ca291c":{"title":"Motion.page","condition":"motionpage\/motionpage.php","exclusions":["\/motionpage\/core\/includes\/assets\/js\/(.*)","\/motionpage\/core\/includes\/assets\/js\/gsap\/(.*)","\/motionpage\/assets\/js\/(.*)","\/motionpage\/assets\/js\/gsap\/(.*)"],"icon_url":"","summary":"Fixes any issue with Motion.page animations","type":"plugin","id":"plugin:f8fc66b302dec2327bdec0434a3b275b","is_default":0,"created_at":1724433236},"459fd663-7f80-45fd-8308-d3484981e161":{"title":"Ninja Forms","condition":"ninja-forms\/ninja-forms.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/ninja-forms\/assets\/js\/min\/front-end-deps.js","\/ninja-forms\/assets\/js\/min\/front-end.js","nf-"],"icon_url":"","summary":"Show the form on pageload","type":"plugin","id":"plugin:1d3ae9c1a96d5062616968b81eef319d","is_default":0,"created_at":1724433463},"c97440dd-7592-40e7-8c98-dac20d39808f":{"title":"Ninja Tables","condition":"ninja-tables\/ninja-tables.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ninja-tables(.*)\/assets\/","\/ninja-tables(.*)\/public\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","ninja_table_instance_","ninja_filter_","ninja_table_ready_init_table_id"],"icon_url":"","summary":"Show the table on pageload","type":"plugin","id":"plugin:723a588dcd49285ea9f7404e2379b47f","is_default":0,"created_at":1724433481},"ebc01f06-8c35-47fa-9c63-8959c5cbd915":{"title":"NotificationX","condition":"notificationx\/notificationx.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/notificationx\/assets\/public\/js\/(.*).js","notificationXArr"],"icon_url":"","summary":"Show the pop-up notification","type":"plugin","id":"plugin:f41a52ab1dd50a81cd3a5e341af0007c","is_default":0,"created_at":1724433494},"5fcd4cb7-1916-4995-973e-6d9def619e12":{"title":"Nova Blocks","condition":"nova-blocks\/nova-blocks.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/js\/dist\/dom-ready.min.js","has-loaded","wf-active","nova-blocks"],"summary":"Allows rendering the layout on page load for themes based on the Nova Blocks framework (Pixelgrade themes)","icon_url":"","type":"plugin","category":null,"id":"plugin:72b8526ce363ca9b7e5d82b245379cbb","is_default":0,"created_at":1733813516},"3aaf4a1b-591a-48b7-8d60-e6d65c0f94c9":{"title":"Ocean Elementor Widgets","condition":"ocean-elementor-widgets\/ocean-elementor-widgets.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ocean-elementor-widgets\/"],"icon_url":"","summary":"Avoid console errors (Elements added with this plugin should work)","type":"plugin","id":"plugin:be8fc72a8b8e8eb5958be13737cff47c","is_default":0,"created_at":1724433526},"90bfaf32-fa1d-4b48-bf64-3bf6f2c7c93b":{"title":"Ocean Extra - Load Preloader","condition":"ocean-extra\/ocean-extra.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ocean-extra\/includes\/preloader\/assets\/js\/preloader.min.js"],"summary":"When DJE is enabled, Ocean Extra preloader is not loaded until user interaction on the page.","icon_url":"","type":"plugin","category":null,"id":"plugin:1584fd7b07ef3eed359694c0f3046931","is_default":0,"created_at":1754297770},"f053a7d3-62b0-4312-b0ca-6ff63380eb0b":{"title":"One Click Accessibility","condition":"pojo-accessibility\/pojo-accessibility.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pojo-accessibility\/assets\/js\/app.min.js"],"icon_url":"","summary":"Allow One Click Accessibility to work on all pages","type":"plugin","id":"plugin:1a14afe852fefe7b22ccad3893672a29","is_default":0,"created_at":1724433541},"61e11800-48a9-4354-8a4c-ac9a2b4b033a":{"title":"OoohBoi Steroids for Elementor","condition":"ooohboi-steroids-for-elementor\/ooohboi-steroids.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ooohboi-steroids-for-elementor\/"],"icon_url":"","summary":"Display OohhBoi elements on page load","type":"plugin","id":"plugin:b9ed0fe6f2cdbd305691a6b857f4b3dc","is_default":0,"created_at":1724433511},"560b78a2-f051-490b-9dc6-a602dece0d81":{"title":"Optimole","condition":"optimole-wp\/optimole-wp.php","exclusions":["optimoleData"],"icon_url":"","summary":"To fire excluded JavaScript files served through the Optimole CDN","type":"plugin","id":"plugin:f1ff18a3e04c4e0995fca9cabffe57a7","is_default":0,"created_at":1724433610},"b0fda458-4bf2-41e9-a159-60d4bb6102a6":{"title":"OSM - OpenStreetMap","condition":"osm\/osm.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/osm\/js\/OL\/","\/osm\/js\/osm-v3-plugin-lib.js","vectorM"],"icon_url":"","summary":"Display the map and avoid console errors.","type":"plugin","id":"plugin:48ec18bd3f59772d98f85dddab75e305","is_default":0,"created_at":1724433624},"3743ed67-e0d1-4243-bb1f-ee48a445dd10":{"title":"OxyExtras","condition":"oxyextras\/plugin.php","exclusions":["vime","vime.esm.js"],"icon_url":"","summary":"When using Pro Media Player","type":"plugin","id":"plugin:9eacf0b76484af0259cd788f4923f20c","is_default":0,"created_at":1724433698},"52a21e27-af5b-4476-8d6d-54c323fd1443":{"title":"Oxygen Builder","condition":"oxygen\/functions.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/component-framework\/vendor\/aos\/aos.js","AOS.init","oxygen_init_pro_menu","oxy-pro-menu-show-dropdown","oxy-shape-divider","oxygenVSBInitToggleJs"],"icon_url":"","summary":"When using the \"Pro Menu\" element.\r\nPrevents incorrect positioning of the Shape Divider on page load\r\nAllow tabs toggles to be closed when the page loads","type":"plugin","id":"plugin:e852555c4b4789d78a96d76f503b3262","is_default":0,"created_at":1724433680},"ebd282b9-e175-4b83-90a2-fe12389ccd11":{"id":"plugin:6f9419e58ec86c94e7698aaaaf9dc715","title":"PageLoader by Bonfire","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pageloader-by-bonfire\/pageloader.js","bonfire-pageloader-overlay"],"is_default":0,"condition":"pageloader-by-bonfire\/pageloader-by-bonfire.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"0baf6353-aa70-41a9-a3bc-d89870a5839b":{"title":"PDF Embedder","condition":"pdf-embedder\/pdf_embedder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pdf-embedder\/js\/(.*).js"],"icon_url":"","summary":"Load the PDF's without user interaction.\r\nPlease note that if Defer Javascript Execution is enabled, you also need to exclude these files from being deferred.","type":"plugin","id":"plugin:3a4c4518eb0f60108ab4934fab27d335","is_default":0,"created_at":1724433747},"cba51ec1-87cc-44eb-b12b-d652e3446507":{"title":"Perfect Brands for WooCommerce","condition":"perfect-woocommerce-brands\/perfect-woocommerce-brands.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/perfect-woocommerce-brands\/assets\/lib\/slick\/slick.min.js","\/perfect-woocommerce-brands\/assets\/js\/functions-frontend.min.js"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:4f90aca5957cccbf623e3bbc31afa204","is_default":0,"created_at":1724433762},"808e7a4e-025c-4fae-bf82-de3716e5eb0d":{"title":"Photonic","condition":"photonic\/photonic.php","exclusions":["\/photonic\/include\/js\/front-end\/module\/photonic-baguettebox.min.js"],"icon_url":"","summary":"Display the gallery without user interaction.","type":"plugin","id":"plugin:84fe214646388d7c021dda25003ac165","is_default":0,"created_at":1724434241},"936aff7d-a8ac-4473-a7b5-4b1611b6c557":{"title":"Pixel Caffein","condition":"pixel-caffeine\/pixel-caffeine.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/pixel-caffeine\/build\/frontend.js","aepc_pixel"],"icon_url":"","summary":"Fire the tracker on pageload.","type":"plugin","id":"plugin:6838be282f853f71be282783cb1c162b","is_default":0,"created_at":1724434253},"ab3a4ef5-2732-4b46-a7c3-17b4e9405cd1":{"title":"Pixel Manager for WooCommerce","condition":"woocommerce-pixel-manager-pro\/woocommerce-pixel-manager.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/woocommerce-pixel-manager-pro\/js\/public\/","wpm"],"icon_url":"","summary":"Fire the tracker on pageload.","type":"plugin","id":"plugin:afe0eb7c64d4556a7111c56dd8c4d307","is_default":0,"created_at":1724434270},"2774f964-50b2-425e-8a30-0a02f421b7e4":{"title":"Popup Builder","condition":"popup-builder\/popup-builder.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/popup-builder\/public\/js\/(.*).js","\/popupbuilder-exit-intent\/public\/javascript\/ExitIntent.js","var sgpbPublicUrl","SGPB_POPUP_PARAMS"],"icon_url":"","summary":"Show popup on exit","type":"plugin","id":"plugin:38d4b2986868f543639cd1ebc3e510aa","is_default":0,"created_at":1724433776},"82dbb1e5-31f9-43d7-b522-52819aa49ba5":{"title":"Popup Maker","condition":"popup-maker\/popup-maker.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/pum\/pum-site-scripts.js","pum","\/plugins\/popup-maker\/assets\/js\/site.min.js"],"icon_url":"","summary":"Show popup on one click","type":"plugin","id":"plugin:786717922362642f34a7ff58e919bd95","is_default":0,"created_at":1724433839},"48e08305-1f1c-4ef4-9f13-24af1b155abc":{"title":"PowerPack Addons for Elementor","condition":"powerpack-lite-for-elementor\/powerpack-lite-elementor.php","exclusions":["\/powerpack-lite-for-elementor\/assets\/js\/min\/frontend.min.js"],"icon_url":"","summary":"Show animations","type":"plugin","id":"plugin:17831cbb64e469c7f66224c8c63d0a58","is_default":0,"created_at":1724433893},"e037ae2f-e36b-4f1a-ada8-eb8fde6746f2":{"title":"Preloader Plus","condition":"preloader-plus\/preloader-plus.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/preloader-plus\/(.*)"],"icon_url":"","summary":"Prevents the preloader from being stuck until there's user interaction","type":"plugin","id":"plugin:80e1283ea1afead3ca904fad792643c5","is_default":0,"created_at":1724434032},"90fed478-e89a-455c-8371-836bee58fb81":{"title":"Premium Addons for Elementor","condition":"premium-addons-for-elementor\/premium-addons-for-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-addons.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/isotope.min.js","\/premium-addons-elementor\/pa-frontend-(.*).min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/slick.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/tooltipster.min.js","window.scopes_array","lottie.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/premium-nav-menu.min.js","\/premium-addons-for-elementor\/assets\/frontend\/min-js\/typed.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/imgcompare.min.js","\/premium-addons-pro\/assets\/frontend\/min-js\/event-move.min.js"],"icon_url":"","summary":"The above will cover:\r\n\r\n- Make equal height work\r\n- Make filters work\r\n- Make lottie animations work\r\n- Make the testimonials' carousel work\r\n- Allow Animated Text to load without User interaction\r\n- Allow Image comparison to show","type":"plugin","category":"analytics","id":"plugin:debbfbbcbdf9ffb465bbc40008d99f02","is_default":0,"created_at":1744729898},"24bb14b1-f934-4f9d-adbd-4e186e0a0ecd":{"title":"Premium Addons PRO","condition":"premium-addons-pro\/premium-addons-pro-for-elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/premium-addons-pro\/assets\/frontend\/min-js\/premium-badge.min.js"],"icon_url":"","summary":"- Allow Global badges to show","type":"plugin","category":"analytics","id":"plugin:c7220a8a2a42faf4072977c623bc88c7","is_default":0,"created_at":1744729892},"7e43c261-77be-48fc-b25a-8953a654ae85":{"title":"Presto Player","condition":"presto-player\/presto-player.php","exclusions":["\/wp-includes\/js\/dist\/vendor\/regenerator-runtime.min.js","\/presto-player\/dist\/components\/web-components\/web-components.esm.js","\/presto-player\/src\/player\/player-static.js","var player","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js"],"icon_url":"","summary":"Load the video player","type":"plugin","id":"plugin:100a0382fcf3d1b6b22da928bce46ea8","is_default":0,"created_at":1724434113},"3d6f509f-d040-4279-9a2f-a4e6eae1e9df":{"title":"Price Based on Country for WooCommerce Pro","condition":"woocommerce-price-based-country-pro-addon\/woocommerce-price-based-country-pro-addon.php","exclusions":["\/woocommerce-product-price-based-on-countries\/assets\/js\/ajax-geolocation.min.js","\/woocommerce-price-based-country-pro-addon\/assets\/js\/currency-switcher.min.js","add-to-cart.min.js","cart-fragments.min.js"],"icon_url":"","summary":"To load the prices and currency switcher without interaction","type":"plugin","id":"plugin:c0fce700121492b566517e68301db382","is_default":0,"created_at":1724434128},"b970bc8a-bcbe-4d08-8ac0-a6853ab3f036":{"title":"Prime Slider","condition":"bdthemes-prime-slider-lite\/bdthemes-prime-slider.php","exclusions":["\/plugins\/bdthemes-prime-slider-lite\/assets\/js\/bdt-uikit.min.js"],"icon_url":"","summary":"Display slider without interaction","type":"plugin","id":"plugin:f1ecfe258440b371124999ca3bfbfff3","is_default":0,"created_at":1724434141},"e5458963-f167-4b68-88e4-77dd39af2842":{"title":"PRO Elements","condition":"pro-elements\/pro-elements.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pro-elements\/"],"icon_url":"","summary":"Fixes functions execution when the jQuery library is already excluded","type":"plugin","id":"plugin:29ea8f4dd72f5a5c5927917fb0665a05","is_default":0,"created_at":1724434176},"b119ad72-f498-4576-bb71-9e6d8c37b68f":{"title":"Product Filter by WBW (for WooCommerce)","condition":"woo-product-filter\/woo-product-filter.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-content\/plugins\/woo-product-filter\/modules\/woofilters\/js\/frontend.woofilters.js","\/woofilters\/js\/frontend.multiselect.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js","opened closed"],"icon_url":"","summary":"Resolves issue where the product filter won't load on the page, there's a 'loading' gif stuck in its place, and there's a console error.","type":"plugin","category":"analytics","id":"plugin:e57ad91e0d94fab011353af544873743","is_default":0,"created_at":1743105367},"7b779aca-e497-4da3-8e51-fa12837d15ab":{"title":"Product Filters for WooCommerce","condition":"woocommerce-product-filters\/woocommerce-product-filters.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce-product-filters\/","\/woocommerce\/assets\/js\/accounting\/accounting.min.js","\/wp-includes\/js\/jquery\/ui\/","wcpf-load-project","WCPFData"],"icon_url":"","summary":"Make the filters work","type":"plugin","id":"plugin:719469f1c977f7109d3d6ee21ecd5a16","is_default":0,"created_at":1724434226},"2b2a51f2-bd47-4591-92d8-4a690bce5d99":{"title":"Product Gallery Slider for WooCommerce","condition":"twist\/twist.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/twist\/assets\/js\/slick.min.js","wpgs-public-js-after"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:a898898b2b0ea2cd82e20a6d3a3aa47b","is_default":0,"created_at":1724434162},"badb569e-f821-4f90-b2c7-69c286c1bda5":{"title":"Product Gallery Slider for WooCommerce By Codeixer - Fix Product Gallery","condition":"woo-product-gallery-slider\/woo-product-gallery-slider.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/woo-product-gallery-slider\/assets\/js\/slick.min.js","\/woo-product-gallery-slider\/assets\/js\/wpgs.js"],"summary":"Show Product Gallery on page load","icon_url":"","type":"plugin","category":null,"id":"plugin:d7fe72709580a4c9b3d23e482485ed0d","is_default":0,"created_at":1746519887},"9b63d036-595f-477b-918e-049121c29765":{"title":"Product Slider for WooCommerce","condition":"woo-product-slider\/main.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/woo-product-slider\/src\/Frontend\/assets\/js\/swiper.min.js","\/woo-product-slider\/src\/Frontend\/assets\/js\/scripts.min.js"],"summary":"When Delay JavaScript Execution is enabled, the product sliders don't load until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:e8da84c8281e41723851607361a77a92","is_default":0,"created_at":1738076099},"062c5be3-e5ea-4958-9619-44e3410f237e":{"title":"Product Video Gallery for Woocommerce","condition":"product-video-gallery-slider-for-woocommerce\/product-video-gallery-slider-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/product-video-gallery-slider-for-woocommerce\/public\/js\/nickx.front.js","\/product-video-gallery-slider-for-woocommerce\/public\/js\/swiper-bundle.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the video gallery slider doesn't work until user interaction - images don't slide and thumbs appear much larger than they should.","type":"plugin","category":"analytics","id":"plugin:bbc653a91f0635cd2edb0b741aa62b85","is_default":0,"created_at":1767792522},"34d225a4-688c-476b-846b-420774160d6b":{"id":"plugin:e0b123d324c6fc85b8682660c34f8829","title":"Rank Math SEO","type":"plugin","icon":"","exclusions":["local_ga_js"],"is_default":0,"condition":"seo-by-rank-math\/rank-math.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"02305ca0-2c2a-4eef-a802-b8a942771ecc":{"title":"Retainful","condition":"retainful-next-order-coupon-for-woocommerce\/retainful-next-order-coupon-for-woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/atc-popup.min.js","\/retainful-next-order-coupon-for-woocommerce\/src\/premium\/assets\/js\/exit-intent-popup.js","retainful.com","rnoc-add-to-cart-js-before","rnoc_redirect_coupon_popup"],"icon_url":"","summary":"Show the pop-up","type":"plugin","id":"plugin:f9fdee19ba6aed961d96d86e1521a761","is_default":0,"created_at":1724434370},"b4055250-5813-400f-b663-d390fee989e4":{"title":"Revolution Slider","condition":"revslider\/revslider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/revslider\/public\/assets\/js\/","\/revslider\/sr6\/assets\/js\/","\/revslider-(.*)-addon\/","setREVStartSize","rev_slider_","revslider_","window.RS_MODULES","\/revslider\/public\/js\/libs\/tptools.js","\/revslider\/public\/js\/sr7.js","SR7","_tpt.R.fonts.domFonts"],"icon_url":"","summary":"Show the slider on page load","type":"plugin","category":"analytics","id":"plugin:d6a4d07d1b4022d886df52322dcd8a6f","is_default":0,"created_at":1770043380},"0b4e061a-b366-4d5a-a00e-bded4b107133":{"title":"Royal Elementor Addons","condition":"royal-elementor-addons\/wpr-addons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/royal-elementor-addons\/assets\/js\/frontend.min.js","\/royal-elementor-addons\/assets\/js\/lib\/jarallax\/jarallax.min.js","\/royal-elementor-addons\/assets\/js\/lib\/parallax\/parallax.min.js","\/royal-elementor-addons\/assets\/js\/lib\/slick\/slick.min.js"],"icon_url":"","summary":"Fixes mobile menu not opening","type":"plugin","category":"analytics","id":"plugin:c4b464373716d7ac8e3cfb019aaa6102","is_default":0,"created_at":1778531519},"1b19ec89-171a-4f85-8c4b-b1bcfc6b1433":{"id":"plugin:5e3f85d8c82cc184b945415d1a862601","title":"Sassy Social Share","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/sassy-social-share\/public\/js\/sassy-social-share-public.js","heateorSssLoadEvent"],"is_default":0,"condition":"sassy-social-share\/sassy-social-share.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"f5899925-2ab7-43b6-abc4-51b76d664ca6":{"title":"Scrollsequence","condition":"scrollsequence-pro\/scrollsequence-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/scrollsequence-pro\/public\/js\/gsap__premium_only.js","\/scrollsequence-pro\/public\/js\/gsap-scrolltrigger__premium_only.js","\/scrollsequence-pro\/public\/js\/ssq-lib__premium_only.js","scrollsequence-input-script"],"icon_url":"","summary":"Show images and animation on pageload","type":"plugin","id":"plugin:3df51830b6b80668fc342c8dcea495cf","is_default":0,"created_at":1724434606},"043827fc-3df8-45d6-9cd2-14fbe962987a":{"title":"ShiftNav Pro - Responsive Mobile Menu","condition":"shiftnav-pro\/shiftnav.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-pro\/assets\/js\/shiftnav(.*).js"],"icon_url":"","summary":"Displays without interaction.","type":"plugin","id":"plugin:9d60b5d2de4d828b78c7b088024377d6","is_default":0,"created_at":1724434657},"bcbaf240-e76f-4620-b7d5-4852c46d4be7":{"title":"ShiftNav \u2013 Responsive Mobile Menu","condition":"shiftnav-responsive-mobile-menu\/shiftnav-responsive-mobile-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shiftnav-responsive-mobile-menu\/"],"icon_url":"","summary":"Displays without interaction.","type":"plugin","id":"plugin:56279bd768c8f27ad1972b6774738bcf","is_default":0,"created_at":1724434651},"bbe0543b-b5af-467b-a90d-e2975d892d8d":{"title":"Short Pixel Adaptive Image","condition":"shortpixel-adaptive-images\/short-pixel-ai.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shortpixel-adaptive-images\/assets\/js\/ai(.*).min.js","spai_settings"],"icon_url":"","type":"plugin","id":"plugin:1bc7ac87d8ab2301a1b904919dc7a798","is_default":0,"created_at":1704734942},"543ab43a-6bd3-4948-a09e-3b95e7c9209d":{"title":"Showcase IDX","condition":"showcase-idx\/showcaseidx.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","SIDX","search.showcaseidx.com\/js\/app-(.*).js","cdn.shortpixel.ai"],"icon_url":"","summary":"Prevents requiring double click on iOS to use filters.\r\n\r\nExclusion when the option New AI engine is enabled (You don't need the above, only this one):\r\n\r\ncdn.shortpixel.ai","type":"plugin","id":"plugin:ce4dea8ddc3caa8d00e95cec3202d32a","is_default":0,"created_at":1724434768},"a16bcab7-1169-46b9-a425-b091478d8312":{"title":"Side Cart WooCommerce","condition":"side-cart-woocommerce\/xoo-wsc-main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/plugins\/woocommerce\/assets\/js\/frontend\/add-to-cart.min.js","\/plugins\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/plugins\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"icon_url":"","summary":"Makes cart icon work to slide in the cart menu.","type":"plugin","id":"plugin:3ea7d9f75ad03620b0bce2517bd5b8d1","is_default":0,"created_at":1724434681},"521f748e-cf09-4019-bd28-b52daef5f16f":{"title":"Simple Banner","condition":"simple-banner\/simple-banner.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/simple-banner\/","simpleBannerScriptParams"],"icon_url":"","summary":"Show the banner on pageload.","type":"plugin","id":"plugin:7843983bf90dbae16c6e889382c71b23","is_default":0,"created_at":1724434695},"76026e82-d9cf-482c-b480-55c57693a184":{"title":"Site Kit by Google","condition":"google-site-kit\/google-site-kit.php","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('","\/gtag\/js","gtag\\(","\/gtm.js"],"icon_url":"","summary":"Fixes issues with Google Analytics.","type":"plugin","id":"plugin:b6825f971d35a5515d095564a2e40936","is_default":0,"created_at":1724434707},"4f9be7dd-fa19-401c-a5a5-81654990f9c4":{"title":"SiteOrigin Widgets Bundle - Load images","condition":"so-widgets-bundle\/so-widgets-bundle.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/so-widgets-bundle\/js\/slider\/jquery.slider.min.js","\/so-widgets-bundle\/js\/jquery.cycle.min.js","\/so-widgets-bundle\/js\/jquery.cycle.swipe.min.js","\/so-widgets-bundle\/js\/sow.jquery.fittext.min.js","\/so-widgets-bundle\/js\/lib\/jquery.fitvids.min.js","\/siteorigin-panels\/js\/styling.min.js","siteorigin-panels-before-js","page_id"],"icon_url":"","summary":"Load the images on the page load.","type":"plugin","id":"plugin:3968480c93d7f92ed1cb78a54b47fc9f","is_default":0,"created_at":1724434720},"79c458d7-f7f7-4072-919d-ad337bde6ae3":{"title":"Slick Menu","condition":"slick-menu\/slick-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/slick-menu\/"],"icon_url":"","summary":"Show menu on pageload","type":"plugin","id":"plugin:5ce5dfecdc9d3292c69a1413bbd17d3c","is_default":0,"created_at":1724434809},"99cf4942-49ea-4687-b156-405ed1ce1cfa":{"title":"Slide Anything","condition":"slide-anything\/slide-anything.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/slide-anything\/owl-carousel\/owl.carousel.min.js","owl_goto.trigger"],"icon_url":"","summary":"Show slider without user interaction","type":"plugin","id":"plugin:fff874cc48b80940210228c975df395c","is_default":0,"created_at":1724434788},"dd0ea584-0c99-4c30-b46d-da35b94c9f0a":{"title":"Slider by Soliloquy","condition":"soliloquy-lite\/soliloquy-lite.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","soliloquy-min.js","soliloquy_slider"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:ffb5f8cc0ea17886dbd05f601ca3eec0","is_default":0,"created_at":1724434937},"20efe964-7ba6-411e-98eb-f2f9bc75dd5a":{"title":"Slider Revolution","condition":"slider-revolution\/revslider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/revslider\/public\/assets\/js\/","\/revslider\/sr6\/assets\/js\/","\/revslider-(.*)-addon\/","setREVStartSize","rev_slider_","revslider_","window.RS_MODULES","\/slider-revolution\/public\/js\/libs\/tptools.js","\/slider-revolution\/public\/js\/sr7.js","SR7","_tpt.R.fonts.domFonts"],"summary":"- Load Slider without user interaction\r\n- For new Slider Revolution version, the \/revslider\/public\/js\/libs\/tptools.js and \/revslider\/public\/js\/sr7.js were updated to: \/slider-revolution\/public\/js\/sr7.js and \/slider-revolution\/public\/js\/libs\/tptools.js. \r\n- The plugin slug was also updated from revslider\/revslider.php to slider-revolution\/revslider.php.\r\n- This backend entry is to allow compatiblity for the new version.","icon_url":"","type":"plugin","category":null,"id":"plugin:41ff48dde3715a47d1ee63fdac32cc4a","is_default":0,"created_at":1770042676},"ecb2fffc-d289-4f68-ae94-71131f17deee":{"title":"Smart Slider 3","condition":"smart-slider-3\/smart-slider-3.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/smart-slider-3\/(.*).js","_N2"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:2f373822dceb191c31c8ad2183d51869","is_default":0,"created_at":1724434826},"284ede43-bf80-419e-8414-46c26cb746f0":{"title":"Smart Slider 3 Pro","condition":"nextend-smart-slider3-pro\/nextend-smart-slider3-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/SmartSlider3\/(.*).js","_N2"],"icon_url":"","summary":"Show the slider on pageload","type":"plugin","id":"plugin:720ec9fbbd8a52ce525959a68a5310b3","is_default":0,"created_at":1724434836},"4f3a2a29-eb96-42b5-a6ba-38442123d077":{"title":"Spectra - Lottie","condition":"ultimate-addons-for-gutenberg\/ultimate-addons-for-gutenberg.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ultimate-addons-for-gutenberg\/assets\/js\/lottie.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/uagb-bodymovin.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/table-of-contents.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/tabs.min.js","UAGBLottie"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the Lottie animation doesn't load.","type":"plugin","category":"analytics","id":"plugin:138e02cf173082dfff34d8d50b5b1b5f","is_default":0,"created_at":1755608389},"be70034f-def5-4771-9b3f-662eb218da2a":{"title":"Spectra - Show Gallery Images","condition":"ultimate-addons-for-gutenberg\/ultimate-addons-for-gutenberg.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ultimate-addons-for-gutenberg\/assets\/js\/spectra-animations.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/post.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/aos.min.js","\/slick.min.js","\/imagesloaded.min.js","UAGBPostCarousel"],"summary":"Show the gallery on pageload","icon_url":"","type":"plugin","category":"analytics","id":"plugin:ca362d462a44a9622dd8542db373d3d6","is_default":0,"created_at":1738865101},"5ed91dc6-b172-4d45-8406-71689bdb1fef":{"title":"Spectra - Slider","condition":"ultimate-addons-for-gutenberg\/ultimate-addons-for-gutenberg.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/uploads\/uag-plugin\/assets\/(.*)\/uag-js-(.*).js","\/ultimate-addons-for-gutenberg\/assets\/js\/swiper-bundle.min.js","\/ultimate-addons-for-gutenberg\/assets\/js\/uagb-button-child.min.js"],"summary":"While Delay JavaScript Execution is enabled, sliders only show the first slide and do not autoplay.","icon_url":"","type":"plugin","category":null,"id":"plugin:f263043f4ed2c766c758fb139b6d50a0","is_default":0,"created_at":1738865295},"c3334c29-4160-42df-a1ce-f8aeeaee8668":{"title":"Super Socializer","condition":"super-socializer\/super_socializer.php","exclusions":["theChamp","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:660defe26748470c3a47366cd4012579","is_default":0,"created_at":1677853633},"f18b4242-fe3f-4e2b-bfc9-ac2fb3939a90":{"title":"Superfly Menu","condition":"superfly-menu\/main.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate((.*?)(.min?)?).js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/md5.js","\/superfly-menu\/includes\/vendor\/looks_awesome\/icon_manager\/js\/util.js","\/superfly-menu\/js\/public.min.js","\/superfly-menu\/js\/superfly-menu.js","window.SFM_is_mobile","var SFM_skew_disabled","var SFM_template"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the menu don't load until user interaction.","type":"plugin","category":"analytics","id":"plugin:ccb15175093bc6c437b78797f0698a7b","is_default":0,"created_at":1756121213},"1a05c00a-8562-45bc-80e8-987a4574b1c9":{"title":"Symplr Ads","condition":"symplr-ads\/symplr-plugin.php","exclusions":["\/symplr-ads\/","cdns.symplr.de"],"icon_url":"","summary":"Loads Ads right away","type":"plugin","id":"plugin:3b6d39e28a87e86c4659491e2368ff61","is_default":0,"created_at":1724442756},"858d2d7f-bdac-4d27-ba26-baa9ace96ba4":{"title":"Tabby Responsive Tabs","condition":"tabby-responsive-tabs\/tabby-responsive-tabs.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/tabby-responsive-tabs\/js\/tabby.js","RESPONSIVEUI"],"icon_url":"","summary":"Load tabs without delay","type":"plugin","id":"plugin:7d93008296bb5c7c43d4cba185ed2632","is_default":0,"created_at":1724442869},"caf3b2cc-5a9f-450a-b680-99987b342417":{"title":"tagDiv - Product Filters","condition":"td-woo\/td-woo.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/td-composer\/legacy\/Newspaper\/js\/tagdiv_theme.min.js","\/plugins\/td-woo\/assets\/js\/tdwLoop.js","\/plugins\/td-woo\/assets\/js\/tdwFilter.js","\/plugins\/td-woo\/assets\/js\/tdwMenuCart.js","\/plugins\/td-woo\/assets\/js\/tdwFiltersList.js","tds_more_articles_on_post_pages_distance_from_top"],"summary":"When Delay JavaScript Execution is enabled, the product filters feature won't function.","icon_url":"","type":"plugin","category":null,"id":"plugin:aae992c4a586cfcfd481d64047480570","is_default":0,"created_at":1753968799},"26c21e36-9d91-4395-a1e2-3641c9ddea0b":{"title":"tagDiv - Product Variation Switches","condition":"td-woo\/td-woo.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/plugins\/td-woo\/assets\/js\/tdwVariationSwitches.js"],"summary":"When Delay JavaScript Execution is enabled, product variations don't work.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:6cd05d959fa42829c9135ffc13a9d715","is_default":0,"created_at":1754079213},"e44a5c93-bb77-4624-a121-d846905137ea":{"title":"The Plus Addons for Elementor","condition":"the-plus-addons-for-elementor-page-builder\/theplus_elementor_addon.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/theplus-addons\/(.*)"],"icon_url":"","summary":"Start animations on page load","type":"plugin","id":"plugin:2f563bbb7e92363ec3fb2989a1c7dffe","is_default":0,"created_at":1724442902},"2bbac961-b000-4802-ae97-d52472ec6750":{"title":"The Plus Addons for Elementor Premium","condition":"theplus_elementor_addon\/theplus_elementor_addon.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/theplus_elementor_addon\/","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","summary":"Solve issues with sliders and tabs","type":"plugin","id":"plugin:6e127deaaeefbe57ff945b1f9e274518","is_default":0,"created_at":1724442911},"c3b5d7fd-a1e0-4aca-a0b6-405018a37266":{"title":"The Post Grid","condition":"the-post-grid\/","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","the-post-grid"],"icon_url":"","summary":"Makes the content of single post appearing immediately","type":"plugin","id":"plugin:93c3354976453458cf67f8ec0fdfce5a","is_default":0,"created_at":1724442928},"666b45e8-749c-4140-bd17-e1cd589e03ee":{"title":"ThemeREX Addons","condition":"trx_addons\/trx_addons.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/trx_addons\/js\/__scripts-full.js","\/trx_addons\/components\/cpt\/layouts\/shortcodes\/menu\/superfish.min.js","\/trx_addons\/js\/trx_addons.utils.js","\/trx_addons\/js\/tweenmax\/GSAP\/3.12.2\/gsap.min.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/NavMenu\/assets\/NavMenu.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/Counter\/assets\/odometer\/odometer.min.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/Counter\/assets\/Counter.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/AdvancedTitle\/assets\/AdvancedTitle.js","\/trx_addons\/addons\/elementor-widgets\/classes\/Widgets\/Testimonials\/assets\/Testimonials.js","\/trx_addons\/js\/trx_addons.front.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, Preloader and Popup don't work until user interaction. And the menu don't work at all.","type":"plugin","category":"analytics","id":"plugin:b9c418b47c986935a1151ab9b42f8971","is_default":0,"created_at":1767882265},"a750cada-eb58-4df4-9966-21c8a69332ba":{"title":"Thrive Architect","condition":"thrive-visual-editor\/thrive-visual-editor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-includes\/js\/masonry.min.js","\/thrive-theme\/inc\/assets\/dist\/frontend.min.js","\/thrive-theme\/thrive-dashboard\/js\/dist\/frontend.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/general.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/video.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/menu.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/pricing-table.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/toc.min.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/lead-generation.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, most related scripts do not work.\r\n\r\nThis backend entry existed for some time with the following exclusions (though there was no GH issue or info available about it):\r\n\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js\r\n\/jquery-migrate(.min)?.js\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/170","type":"plugin","category":"analytics","id":"plugin:75af9efe22c5cc776636266feb55adf1","is_default":0,"created_at":1741639113},"13714cde-680e-4ca4-8607-c35952d6a5f2":{"title":"Thrive Comments","condition":"thrive-comments\/thrive-comments.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"icon_url":"","type":"plugin","id":"plugin:6a72d06ca2f6a888b0d9d5ea93af2edc","is_default":0,"created_at":1677852974},"aa7ca898-499f-4f04-b419-3de199996969":{"title":"Thrive Leads","condition":"thrive-leads\/thrive-leads.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-leads\/","window.TL_Const","var ml=","\/thrive-comments\/assets\/js\/","ThriveComments","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/backbone.min.js"],"icon_url":"","summary":"Show the form on pageload & Fix comment box not showing","type":"plugin","id":"plugin:b84d82c02cade64ade00712b9c5652aa","is_default":0,"created_at":1724443176},"9eee297a-8241-4ef2-af97-46074bd0898c":{"id":"plugin:5bb61b0559b0a3fd578315b553451327","title":"Thrive Quiz Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"is_default":0,"condition":"thrive-quiz-builder\/thrive-quiz-builder.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c2f3ec2a-5b09-4845-aa95-84841783fbfc":{"id":"plugin:a7f3e5206abff19ca7cf142260181738","title":"Thrive Ultimatum","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-ultimatum\/","var TVE_Ult_"],"is_default":0,"condition":"thrive-ultimatum\/thrive-ultimatum.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"d48b8d2f-e071-4a30-840a-306154a115a0":{"title":"Tidio Chat","condition":"tidio-live-chat\/tidio-elements.php","exclusions":["document.tidioChatCode"],"icon_url":"","summary":"Display the chat icon.","type":"plugin","id":"plugin:f57be2014b6a489d053f8367fa6c0f9f","is_default":0,"created_at":1724442883},"cb6d33ed-7eb4-4ff9-9ad0-7fc54fbecf6f":{"id":"plugin:c9e0485ec256d4a6a8d92a98c18d76fc","title":"Toolset Blocks","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","toolsetCommonEs.fontToHead","toolsetCommonEs.styleToHead","\/toolset-blocks\/vendor\/toolset\/blocks\/public\/js\/frontend.js","\/toolset-blocks\/vendor\/toolset\/common-es\/public\/toolset-common-es-frontend.js","\/toolset-blocks\/public\/js\/views-frontend.js","\/wp-includes\/js\/underscore.min.js"],"is_default":0,"condition":"toolset-blocks\/wp-views.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"4bac6350-0925-49fb-904a-372f22fd6baf":{"title":"Top Bar Pro","condition":"topbar-pro\/topbar_pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/topbar-pro\/js\/tpbr_front.min.js","\/plugins\/topbar-pro\/js\/jquery.cookie.js"],"icon_url":"","summary":"To prevent top bar from getting overlapped with other content.","type":"plugin","id":"plugin:71beda322b37f7fc7d456822493cb972","is_default":0,"created_at":1724443222},"033486e7-0ddc-4915-a848-31504d00448e":{"title":"Twenty20 Image Before-After","condition":"twenty20\/ttwenty.php","exclusions":["\/twenty20\/assets\/js\/(.*).js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","twentytwenty-container"],"icon_url":"","type":"plugin","id":"plugin:23441bba9d3602bc932d697c7cb8aa1f","is_default":0,"created_at":1677858089},"bef2147e-2d0b-431d-ac29-5e8430c0d809":{"title":"Typing Effect","condition":"animated-typing-effect\/typingeffect.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/animated-typing-effect\/assets\/js\/typed.js","\/plugins\/animated-typing-effect\/assets\/js\/typed.fe.js"],"icon_url":"","summary":"Show the animated typing effect on page load","type":"plugin","id":"plugin:e4e1a3e63d09a28dcb20577efbcb5a48","is_default":0,"created_at":1724443336},"7675a34d-006e-4672-99d5-a81e1b8e47f9":{"title":"UberMenu","condition":"ubermenu\/ubermenu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ubermenu\/assets\/js\/ubermenu.min.js"],"icon_url":"","summary":"To make mobile menu responsive immediately without any user interaction","type":"plugin","id":"plugin:3d59cc34167a7f8123e66b627148e0b7","is_default":0,"created_at":1724443357},"8233178a-e7b3-43ce-b193-bd0d9c960933":{"title":"Ultimate Addons for Elementor","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ultimate-elementor\/assets\/lib\/slick\/slick.min.js","\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js","\/ultimate-elementor\/assets\/lib\/isotope\/isotope.min.js","\/ultimate-elementor\/assets\/lib\/jquery-element-resize\/jquery_resize.min.js","\/ultimate-elementor\/assets\/lib\/fancybox\/jquery_fancybox.min.js","\/ultimate-elementor\/assets\/lib\/justifiedgallery\/justifiedgallery.min.js","\/ultimate-elementor\/assets\/min-js\/uael-posts.min.js","\/elementor-pro\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/elementor\/assets\/lib\/swiper\/swiper.min.js","\/nasa-core\/assets\/js\/min\/jquery.slick.min.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","summary":"To make header slider be displayed correctly on page load","type":"plugin","category":"analytics","id":"plugin:86424c46157c1c7e2e1571055813beee","is_default":0,"created_at":1742911351},"dfb47495-8a46-4caa-8c2a-50b02769dcb5":{"title":"Ultimate Addons for Elementor - Fancy Text Effects","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/plugins\/ultimate-elementor\/assets\/lib\/typed\/typed.min.js","\/plugins\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js"],"summary":"When Delay JavaScript Execution is enabled, the text effects don't work until user interaction.","icon_url":"","type":"plugin","id":"plugin:031c5b0ea0dce0a98a766aec5617b017","is_default":0,"created_at":1732107991},"42f39902-a813-4536-a561-29e2795ac097":{"title":"Ultimate Addons for Elementor - Google Maps","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ultimate-elementor\/assets\/lib\/slick\/slick.min.js","\/ultimate-elementor\/assets\/min-js\/uael-frontend.min.js","\/ultimate-elementor\/assets\/lib\/isotope\/isotope.min.js","\/ultimate-elementor\/assets\/lib\/jquery-element-resize\/jquery_resize.min.js","\/ultimate-elementor\/assets\/lib\/fancybox\/jquery_fancybox.min.js","\/ultimate-elementor\/assets\/lib\/justifiedgallery\/justifiedgallery.min.js","\/elementor-pro\/assets\/js\/frontend.min.js","\/wp-includes\/js\/imagesloaded.min.js","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/elementor\/assets\/lib\/swiper\/swiper.min.js","\/nasa-core\/assets\/js\/min\/jquery.slick.min.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/ultimate-elementor\/assets\/js\/uael-google-map.js","maps.googleapis.com","maps.google.com"],"summary":"Fixes an issue in which the map doesn't work","icon_url":"","type":"plugin","id":"plugin:a3256509256803fa8e9ebfedf73c4843","is_default":0,"created_at":1732565293},"8bddf484-6c78-4147-a4e6-d3039904e5f6":{"title":"Ultimate Addons for Elementor - Mobile Menu","condition":"ultimate-elementor\/ultimate-elementor.php","exclusions":["\/jquery-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/jquery-migrate(.*)(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/ultimate-elementor\/assets\/js\/uael-nav-menu.js","\/ultimate-elementor\/assets\/min-js\/uael-nav-menu.min.js"],"icon_url":"","summary":"To make the mobile menu icon work as expected","type":"plugin","id":"plugin:70cfade3a7adbb54196f6acccc5a176f","is_default":0,"created_at":1724443394},"028504f7-b1cd-4318-8a6d-ce186197e89d":{"id":"plugin:0f0a91f0c454021a5ff9fc25c3ed419f","title":"Ultimate Addons for WPBakery Page Builder","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Ultimate_VC_Addons\/assets\/"],"is_default":0,"condition":"Ultimate_VC_Addons\/Ultimate_VC_Addons.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"5754af3d-a6af-49eb-b731-bdd82f26dc4e":{"title":"Ultimate Responsive Image Slider","condition":"ultimate-responsive-image-slider\/ultimate-responsive-image-slider.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","sliderPro"],"icon_url":"","summary":"To load the slider without any user interaction","type":"plugin","id":"plugin:34db8636812bad84c8aea037c2ddc8c2","is_default":0,"created_at":1724443418},"78ae882d-ae31-4179-b677-8893814938c7":{"title":"Unlimited Elements for Elementor Premium - Slider","condition":"unlimited-elements-for-elementor-premium\/unlimited-elements-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elementor\/","\/elementor-pro\/","ElementorProFrontendConfig","elementorFrontendConfig","\/unlimited-elements-for-elementor-premium\/","uc_"],"icon_url":"","type":"plugin","id":"plugin:17260bc347b8c29bee0010e9ec164184","is_default":0,"created_at":1683270377},"051cbfbb-7ad2-4f06-a493-3cf423a80904":{"title":"Variation Swatches for WooCommerce","condition":"woo-variation-swatches\/woo-variation-swatches.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery\/ui\/","\/woo-variation-swatches\/","\/woo-variation-swatches-pro\/","underscore.min.js"],"icon_url":"","summary":"Make some elements to load","type":"plugin","id":"plugin:6717ef5673a956bc08ca4a5117065d53","is_default":0,"created_at":1724443437},"6879caba-7224-4eca-bcb2-370785b495ea":{"title":"Web Accessibility By accessiBe","condition":"accessibe\/accessiebe.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/accessibe\/","acsbJS"],"icon_url":"","summary":"To preserve the functions of the plugin","type":"plugin","id":"plugin:57597b7683e01892932083413f085134","is_default":0,"created_at":1724443688},"bd6732fe-4c2b-40a1-9035-8464057e2da5":{"title":"WooCommerce - Cart Fragments","condition":"woocommerce\/woocommerce.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js"],"icon_url":"","type":"plugin","id":"plugin:201de694c6fc28c8d580a3b2ca484218","is_default":0,"created_at":1680937567},"d044900d-07e1-4533-9516-33106efcb259":{"title":"WooCommerce - Product description","condition":"woocommerce\/woocommerce.php","exclusions":["\/plugins\/woocommerce\/assets\/js\/frontend\/single-product.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:a82644b4c9417ea3a240939a73344700","is_default":0,"created_at":1679309756},"bff953b1-2213-4666-8112-76a84a3cc207":{"title":"WooCommerce - Product Gallery","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/zoom\/jquery.zoom(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/photoswipe\/","\/woocommerce\/?(.*)\/assets\/js\/flexslider\/jquery.flexslider(.min)?.js","\/woocommerce\/?(.*)\/assets\/js\/frontend\/single-product(.min)?.js","wc_single_product_params"],"icon_url":"","type":"plugin","id":"plugin:7665868ff97c265628f376523a4f9ecc","is_default":0,"created_at":1686579689},"016e6ddf-c6e7-49ec-bd3f-2585d9e45895":{"title":"WooCommerce - Select2 library","condition":"woocommerce\/woocommerce.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/woocommerce\/assets\/js\/select2\/select2(.*).js"],"icon_url":"","type":"plugin","id":"plugin:4bca670bd5d55dd24b17fb0193b0891e","is_default":0,"created_at":1681459540},"b9b2c6d7-944f-4ae3-ae04-c9e2204b9dab":{"title":"WooCommerce Attribute Swatches","condition":"iconic-woo-attribute-swatches-premium\/iconic-woo-attribute-swatches.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/iconic-woo-attribute-swatches-premium\/assets\/frontend\/js\/main.min.js","\/iconic-woo-attribute-swatches-premium\/assets\/vendor\/flickity\/flickity.pkgd.min.js","iconic_was_vars"],"icon_url":"","summary":"Makes using attribute swatches not require two clicks","type":"plugin","id":"plugin:9165c768e978d6ad3f696db8c78ccbb2","is_default":0,"created_at":1724443452},"4506c5e9-7349-44c9-9967-34370c83facb":{"title":"WooCommerce Bookings","condition":"woocommerce-bookings\/woocommerce-bookings.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/woocommerce-bookings\/dist\/frontend.js","\/wp-includes\/js\/dist\/date.min.js","\/wp-includes\/js\/dist\/vendor\/moment.min.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-includes\/js\/underscore.min.js","\/woocommerce\/assets\/js\/jquery-blockui\/jquery.blockUI.min.js","\/wp-includes\/js\/dist\/hooks.min.js"],"icon_url":"","summary":"Make sure the calendar is displayed correctly","type":"plugin","id":"plugin:14dec6d289b9977fa3a74116feecebcc","is_default":0,"created_at":1724443469},"d1266110-86a0-4f84-af8e-512714e53010":{"title":"WooCommerce Food Menu | Foodify","condition":"woo-food-menu\/woo-food-menu.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/plugins\/woo-food-menu\/js\/ddaccordion.js","\/plugins\/woo-food-menu\/magnific-popup\/jquery.magnific-popup.js","\/plugins\/woo-food-menu\/js\/wfm.js","\/plugins\/woo-food-menu\/js\/jquery.colorbox.js"],"summary":"When Delay JavaScript Execution is enabled, the plus icon for the food items does not appear until user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:4b2fb252dd4125dc63a5a849f29b96f0","is_default":0,"created_at":1765479354},"fec9cd04-c358-45da-a1a8-1668b964016b":{"id":"plugin:456f3b849ba3b6647246aca9d7cdaed5","title":"WooCommerce Product Reviews Pro","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","wc_product_reviews_pro","\/woocommerce-product-reviews-pro\/assets\/js\/frontend\/wc-product-reviews-pro-frontend.min.js","\/woocommerce\/assets\/js\/jquery-tiptip\/jquery.tipTip.min.js"],"is_default":0,"condition":"woocommerce-product-reviews-pro\/woocommerce-product-reviews-pro.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"551a9399-627f-4978-9bae-5cc8e0aefc82":{"id":"plugin:c8577e74eef3b082fb6403760d53f68c","title":"WooCommerce TM Extra Product Options","type":"plugin","icon":"","exclusions":["\/woocommerce-tm-extra-product-options\/assets\/js\/epo.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/jquery\/ui\/mouse.min.js","\/wp-includes\/js\/jquery\/ui\/slider.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-util.min.js","\/wp-includes\/js\/dist\/hooks.js","\/wp-includes\/js\/dist\/i18n.js"],"is_default":0,"condition":"woocommerce-tm-extra-product-options\/tm-woo-extra-product-options.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"779b8e37-c537-4485-a23d-a5e7477ea965":{"title":"WooGallery - Product Gallery","condition":"gallery-slider-for-woocommerce\/woo-gallery-slider.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/gallery-slider-for-woocommerce\/public\/js\/woo-gallery-slider-public.min.js"],"summary":"When Delay JavaScript Execution is enabled, the product gallery don't load until user interaction.","icon_url":"","type":"plugin","category":"analytics","id":"plugin:1b347b79ee74db1ff3b408370465e520","is_default":0,"created_at":1744711266},"3cac4650-6a52-448e-8e48-e99a772a59a2":{"title":"WooLentor","condition":"woolentor-addons\/woolentor_addons_elementor.php","exclusions":["\/woolementor\/assets\/third-party\/slick\/slick.min.js","\/woolentor-addons","woolentor_addons"],"icon_url":"","summary":"Display the carousel without interaction.","type":"plugin","id":"plugin:c6e6cab8c80fa3fe57d609f72d2d5c56","is_default":0,"created_at":1724443648},"21af073d-d2ec-4d46-bbda-2c69f87f3f98":{"title":"Woolentor - Fix product gallery","condition":"woolentor-addons\/woolentor_addons_elementor.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)",".woolentor-learg-img","\/woolentor-addons\/assets\/js\/slick.min.js","\/woolentor-addons-pro\/assets\/lib\/js\/tippy.min.js"],"icon_url":"","summary":"Display the product gallery without interaction.","type":"plugin","id":"plugin:c5315e06dfc353cd57f85a60abe4e320","is_default":0,"created_at":1724443660},"67aeb4cb-1a00-4d10-a00c-34888b4c0dba":{"title":"WooThumbs for WooCommerce","condition":"woothumbs-premium\/woothumbs-premium.php","exclusions":["\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/underscore.min.js","\/wp-includes\/js\/wp-embed.min.js","\/wp-includes\/js\/wp-util.min.js","\/woothumbs-premium\/(.*)"],"icon_url":"","summary":"To preserve the display of product variation images","type":"plugin","id":"plugin:b97b1d3f627769e1dd8305aa25af993c","is_default":0,"created_at":1724443675},"c7a14763-88d0-4344-a6af-e0a8dc5fa8d5":{"title":"WordPress Mega Menu \u2013 QuadMenu","condition":"quadmenu\/quadmenu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/quadmenu","#private-menu","#public-menu"],"icon_url":"","summary":"Show the menu on pageload","type":"plugin","id":"plugin:31b9e812a025e5750a6ef0980ee7d2db","is_default":0,"created_at":1724443871},"f699fdbd-84a7-4f24-b729-3e4a4f83a4dd":{"title":"WP Armour","condition":"wp-armour-extended\/wp-armour-extended.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/honeypot\/includes\/js\/wpa.js","\/wp-armour-extended\/includes\/js\/wpae.js","wpa_hidden_field","wpa_add_test"],"icon_url":"","summary":"To prevent marking all product reviews as spam.","type":"plugin","id":"plugin:601f8fc7d10cad1c2ec2949c0d9b1651","is_default":0,"created_at":1724443705},"697239fe-74f5-42a4-a504-97ee85bf43ff":{"title":"WP Booking Calendar","condition":"booking\/wpdev-booking.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/booking(.*)\/_dist\/all\/_out\/wpbc_all.js","\/wp-content\/plugins\/booking(.*)\/js\/datepick\/jquery.datepick.wpbc.9.0.js","\/wp-content\/plugins\/booking(.*)\/js\/wpbc_time-selector.js","\/wp-content\/plugins\/booking(.*)\/assets\/libs\/tippy.js","\/wp-content\/plugins\/booking(.*)\/assets\/libs\/popper\/popper.js","wpbc_init__head","wpbc_url_ajax","booking_max_monthes_in_calendar","wpbc_define_tippy_popover","flex_tl_table_loading"],"icon_url":"","type":"plugin","id":"plugin:fdaf786c076fa0f17eec1e321fee0b3f","is_default":0,"created_at":1720571754},"6a28aae5-ef91-43fc-8204-92e3a25642b4":{"id":"plugin:5728f3b9856dfe37a36ab15b0a637198","title":"WP Go Maps","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com"],"is_default":0,"condition":"wp-google-maps\/wpGoogleMaps.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"c9b991d1-a653-404b-be85-e276b1814e7d":{"title":"WP Go Maps Gold","condition":"wp-google-maps-gold\/wp-google-maps-gold.php","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","maps.google.com\/maps\/api\/js","\/wp-includes\/js\/masonry.min.js","\/wp-google-maps-gold\/(.*)"],"summary":"Loads map on page load and fixes map not displayed after user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:b08baa6d8ba316accee727f2fa23efef","is_default":0,"created_at":1765279015},"1f8f9fbf-fbf0-4e3a-b77c-af0fa47e950d":{"title":"WP Go Maps Pro","condition":"wp-google-maps-pro\/wp-google-maps-pro.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-google-maps(.*)","maps.googleapis.com","mgl_","wpgmza"],"summary":"Loads map on page load and fixes map not displayed after user interaction","icon_url":"","type":"plugin","category":"analytics","id":"plugin:8dad943d1b93e677e2290b2bc13aa36d","is_default":0,"created_at":1765278929},"41e4b98c-e63f-4800-a478-02592562322b":{"title":"WP iCal Availability","condition":"wp-ical-availability\/wp-ical-availability.php","exclusions":["\/wp-ical-availability\/js\/custom-select.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-ical-availability\/"],"icon_url":"","summary":"Fixes error when jQuery is already excluded, & Fully render the calendar on page load","type":"plugin","id":"plugin:3735ca768ede98b25795f4cb057ff4ed","is_default":0,"created_at":1724444622},"2b06c5b8-dc32-4bb0-8504-3a9f1c3a1ec0":{"title":"WP MapIt","condition":"wp-mapit\/wp_mapit.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-mapit\/wp_mapit\/js\/leaflet.js","\/wp-mapit\/wp_mapit\/js\/wp_mapit_multipin.js"],"icon_url":"","summary":"Display the map on page load","type":"plugin","id":"plugin:ba8d1c7f294a3f5b593556eb3b0bc7d9","is_default":0,"created_at":1724443719},"2039eafd-1c11-4e21-a61b-30857f291ae3":{"title":"WP Responsive Menu","condition":"wp-responsive-menu\/wp-responsive-menu.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-responsive-menu\/(.*)"],"icon_url":"","summary":"Render the menu on page load","type":"plugin","id":"plugin:927b8bf7806f2d287559b86a0b455a59","is_default":0,"created_at":1724443736},"e06be942-cccd-4b2d-a268-06dc78f0b820":{"title":"WP Search with Algolia","condition":"wp-search-with-algolia\/algolia.php","exclusions":["\/wp-search-with-algolia\/js\/algoliasearch\/dist\/algoliasearch-lite.umd.js","\/wp-search-with-algolia\/js\/autocomplete-noconflict.js","\/wp-search-with-algolia\/js\/autocomplete.js\/dist\/autocomplete.min.js","var algolia"],"icon_url":"","summary":"Fixes the search function and its related console errors.","type":"plugin","id":"plugin:43267e659d599fbb6b42c719b49bb7a7","is_default":0,"created_at":1724443749},"4fc2a7ae-b9e6-410e-93cf-e6d1962add6a":{"title":"WP Smart Preloader","condition":"wp-smart-preloader\/wp-preloader.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-smart-preloader\/assets\/js\/wsp-main-script(.min)?.js"],"icon_url":"","summary":"Allows the preloader to work without user interaction, and resolves GTMetrix\/PageSpeed Insights test.","type":"plugin","id":"plugin:4fb90fc73fc2b5d1e37ea2dadfd3cef3","is_default":0,"created_at":1724443814},"7ecf40ce-2bcd-412c-bb01-9e71fecf6be8":{"title":"WP Store Locator","condition":"wp-store-locator\/wp-store-locator.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-store-locator\/","\/wp-includes\/js\/underscore.min.js","maps.google.com"],"icon_url":"","summary":"Show the map on page load.","type":"plugin","id":"plugin:d37bb5054a24471ca1675d9ab49d01b0","is_default":0,"created_at":1724443828},"7a1d19a2-3a48-40ab-8051-f642fc63ce2d":{"title":"WP Ultimate Post Grid","condition":"wp-ultimate-post-grid\/wp-ultimate-post-grid.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/wp-ultimate-post-grid\/dist\/public.js","\/wp-ultimate-post-grid-premium\/dist\/public-premium.js","wpupg_grid_args"],"icon_url":"","summary":"Show the dropdown selector\/filter option","type":"plugin","id":"plugin:e24341fef49bd64b89682d583218c108","is_default":0,"created_at":1724443858},"76c86163-ddf3-4113-b620-de9d5058f505":{"title":"WPBakery Page Builder","condition":"js_composer\/js_composer.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js"],"icon_url":"","summary":"Fire sliders, animations, full-width elements resizing without user interaction","type":"plugin","id":"plugin:517d7d24da9a7072ed389d0fb30374a0","is_default":0,"created_at":1724444340},"0b8ff2c0-c3cd-4ec1-b7f5-c7751de6101b":{"title":"WPBakery Page Builder - Carousel","condition":"js_composer\/js_composer.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/js_composer\/assets\/lib\/vc_carousel\/js\/vc_carousel.min.js"],"icon_url":"","summary":"Fire carousels without user interaction.","type":"plugin","id":"plugin:76336ed3f04df091e669f89d908ef2ed","is_default":0,"created_at":1724444319},"4f5e5b98-c326-4b9f-9ada-3b257862132c":{"id":"plugin:1ec7138c950c355e7af60d49c81139fc","title":"wpDataTables","type":"plugin","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wpdatatables\/","highcharts"],"is_default":0,"condition":"wpdatatables\/wpdatatables.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"18be1b8c-0bc4-4a01-abc6-a127aff380c6":{"title":"WPForms","condition":"wpforms\/wpforms.php","exclusions":["\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra","wpformsRecaptchaLoad","\/wpforms\/assets\/lib\/jquery.validate.min.js","\/wpforms\/assets\/js\/share\/utils.min.js"],"icon_url":"","summary":"Prevents issues with redirect to Thank you page.","type":"plugin","category":"analytics","id":"plugin:c62ca58ea081c1271de8dadfa7daac69","is_default":0,"created_at":1742578021},"3ee8683e-e9d2-4c5c-b6f5-13c38827d2a2":{"title":"WPForms - Fix telephone field","condition":"wpforms\/wpforms.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wpforms\/assets\/pro\/lib\/intl-tel-input\/module.intl-tel-input.min.js","\/wpforms\/assets\/js\/frontend\/wpforms.min.js","\/wpforms-signatures\/assets\/js\/wpforms-signatures.min.js","\/wpforms-signatures\/assets\/js\/signature_pad.min.js","\/wpforms\/assets\/pro\/js\/frontend\/fields\/phone.min.js","\/wpforms\/assets\/pro\/lib\/intl-tel-input\/intlTelInputWithUtils.min.js"],"icon_url":"","summary":"Fix an issue with the telephone field in which this needs interaction to load.","type":"plugin","category":"analytics","id":"plugin:737442051c0ae65ebfbc06316a63c6ce","is_default":0,"created_at":1767635598},"138b2894-25d2-47ce-b33d-cbf1256d8f45":{"title":"WPForms - Loader GIF","condition":"wpforms\/wpforms.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wpforms-conversational-forms\/assets\/js\/conversational-forms.es5.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the loader GIF stays until user interaction.","type":"plugin","id":"plugin:03dc6ae2848dd60e1d4f4f86015c22f0","is_default":0,"created_at":1724444364},"8a3cacb6-81bd-456a-a1cc-a4025f8e5234":{"id":"plugin:0992ac952c0a05bb35e18b1d5744d346","title":"WPForms Lite","type":"plugin","icon":"","exclusions":["wpformsRecaptchaLoad","\/wpforms-offline-forms\/assets\/js\/wpforms-offline-forms.min.js","wpforms-offline-forms-js-extra"],"is_default":0,"condition":"wpforms-lite\/wpforms.php","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"98bbd410-5b01-4244-a8eb-715765180328":{"title":"XL WooCommerce Sales Triggers","condition":"xl-woocommerce-sales-triggers\/xl-woocommerce-sales-triggers.php","exclusions":["\/xl-woocommerce-sales-triggers\/assets\/js\/wcst_combined.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","type":"plugin","id":"plugin:ba9e526ddb0157e69757530c6b18b714","is_default":0,"created_at":1677856813},"9d471012-ed59-486b-87ca-d52eb80c29a4":{"title":"YayCurrency Pro - Show Currency Switcher","condition":"yaycurrency-pro\/yay-currency.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/yaycurrency-pro\/"],"summary":"Show currency switcher without user interaction.","icon_url":"","type":"plugin","category":null,"id":"plugin:8cf794ac4ebf3cd651971fe30c75b26d","is_default":0,"created_at":1742845339},"bf9f9620-dd0e-4e6f-9a45-4eb78a148f42":{"title":"YITH WooCommerce Ajax Product Filter","condition":"yith-woocommerce-ajax-navigation\/init.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-navigation\/assets\/js\/yith-wcan-shortcodes.min.js"],"icon_url":"","summary":"Display product filters on mobile without interaction","type":"plugin","id":"plugin:58663fc781232169e865f6fe7cf1afaa","is_default":0,"created_at":1724444671},"b053279d-e07c-438c-bb3e-3a1f4f5d7c5e":{"title":"YITH WooCommerce AJAX Product Filter Premium","condition":"yith-woocommerce-ajax-product-filter-premium\/init.php","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/yith-woocommerce-ajax-product-filter-premium\/assets\/js\/yith-wcan-shortcodes.min.js"],"icon_url":"","summary":"Display product filters on mobile without interaction","type":"plugin","id":"plugin:68b637fd247e40c8e135e4771d739b07","is_default":0,"created_at":1724444677},"866bcd59-0350-4df0-ae42-c6180210d34a":{"title":"YITH WooCommerce Gift Cards Premium","condition":"yith-woocommerce-gift-cards-premium\/init.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/plugins\/yith-woocommerce-gift-cards-premium\/assets\/js\/ywgc-frontend.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-content\/plugins\/yith-woocommerce-gift-cards-premium\/assets\/js\/jquery-ui-timepicker-addon.js","\/wp-includes\/js\/jquery\/ui\/datepicker.min.js","\/wp-content\/plugins\/woocommerce\/assets\/js\/frontend\/single-product.min.js"],"summary":"When Delay JavaScript is enabled, the single product images do not load without user interaction","icon_url":"","type":"plugin","category":null,"id":"plugin:11615e29ef141b308c70587208059747","is_default":0,"created_at":1776163000},"62056165-8bd9-4ff0-b21f-e4ed0ae45fae":{"title":"YITH WooCommerce Points and Rewards","condition":"yith-woocommerce-points-and-rewards-premium\/init.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/yith-woocommerce-points-and-rewards-premium\/assets\/js\/frontend.min.js","\/woo-variation-swatches-pro\/assets\/js\/add-to-cart-variation.min.js"],"icon_url":"","summary":"Display rewards points notification without interaction","type":"plugin","id":"plugin:4acc87d4eb72c86cdea76d180b61a098","is_default":0,"created_at":1724444693},"106395a7-bee9-41d9-8bd5-0e8ad84b478e":{"title":"YITH WooCommerce Wishlist","condition":"yith-woocommerce-wishlist-premium\/init.php","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/add-to-wishlist-gutenberg.min.js","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/dist\/components\/add-to-wishlist\/index.js","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/jquery.selectBox.min.js","\/plugins\/yith-woocommerce-wishlist-premium\/assets\/js\/jquery.yith-wcwl.min.js","\/plugins\/yith-woocommerce-wishlist-premium\/plugin-fw\/dist\/lapilli-ui\/components\/index.js","\/plugins\/yith-woocommerce-wishlist-premium\/plugin-fw\/dist\/lapilli-ui\/date\/index.js","\/plugins\/yith-woocommerce-wishlist-premium\/plugin-fw\/dist\/lapilli-ui\/styles\/index.js","\/wp-includes\/js\/dist\/vendor\/react-dom.min.js","\/wp-includes\/js\/dist\/vendor\/react.min.js","\/wp-includes\/js\/dist\/vendor\/lodash.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/url.min.js","wp\\.apiFetch\\.createRootURLMiddleware\\(","window\\.lodash"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the add to wishlist button does not show or work.\r\n\r\nThis allowed the add to wishlist button work while Load JavaScript Deferred was also enabled, but enabling Load JavaScript Deferred caused some console errors, which were may be resolved using these exclusions:\r\n\r\n\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)\r\n\/wp-includes\/js\/dist\/date.min.js\r\n\/wp-includes\/js\/dist\/vendor\/moment.min.js","type":"plugin","category":"analytics","id":"plugin:dfc96a6440c1b9f9bdcb5806af7cc2f9","is_default":0,"created_at":1771882657},"d94dbbf3-bcab-4e47-9fbb-6b3a7cf92787":{"title":"Yotpo Social Reviews for Woocommerce","condition":"yotpo-social-reviews-for-woocommerce\/wc_yotpo.php","exclusions":["\/yotpo-social-reviews-for-woocommerce\/assets\/js\/headerScript.js"],"icon_url":"","type":"plugin","id":"plugin:45ab742b3fccbd04d7bc973c8582be87","is_default":0,"created_at":1680686421},"51dccf53-5cc7-4283-9ab1-01d34c6cce22":{"title":"Zoho SalesIQ","condition":"zoho-salesiq\/index.php","exclusions":["zoho.salesiq"],"icon_url":"","summary":"Display chat without interaction","type":"plugin","id":"plugin:b96c3865575068aac82c973eb3e3c52a","is_default":0,"created_at":1724444708}},"themes":{"9aeea459-91d3-44b6-8a26-b883dca8b402":{"title":"Agensy - Load page without User Interaction","condition":"agensy","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/agensy\/js\/scripts.js","\/themes\/agensy\/js\/scripts-single.js","\/themes\/agensy\/js\/wow.min.js","\/themes\/agensy\/js\/TweenMax.min.js","\/themes\/agensy\/js\/swiper.min.js","\/plugins\/visualcomposer\/assets\/lib\/bower\/isotope\/dist\/isotope.pkgd.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Load page without user interaction.","type":"theme","id":"theme:7ab7dfeb0db9c0c74c020be318c2e6d9","is_default":0,"created_at":1724424755},"9c623554-5834-4669-9e96-1b894c1939b2":{"title":"Andaman","condition":"andaman","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/andaman\/assets\/js\/","\/wp-andaman-plugins\/shortcodes\/vc_extend\/"],"icon_url":"","summary":"Unstuck the page loader (only use when jQuery is already excluded).","type":"theme","id":"theme:0193ea55fce2ada93b262f2824008c0f","is_default":0,"created_at":1724424778},"7374c5a5-69f8-460f-b44f-dee884a824cd":{"title":"Artale","condition":"artale","exclusions":["\/artale-elementor\/assets\/js\/modulobox.js","\/artale-elementor\/assets\/js\/artale-elementor.js","\/artale\/js\/jquery-stellar.js","\/artale\/js\/core\/artale-plugins.js","\/artale\/js\/core\/artale-custom.js","var loader"],"icon_url":"","summary":"Fixes the page loader (not closing) and display the main menu.","type":"theme","id":"theme:24cbda63f1b898ade5562ab4ec6d97a5","is_default":0,"created_at":1724424807},"23b01203-2a70-4394-9326-d59824def2d7":{"title":"Ashe Pro Premium","condition":"ashe-pro-premium","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/ashe-pro-premium\/"],"icon_url":"","summary":"Display mobile header without user interaction","type":"theme","id":"theme:4791da3cbbd1ed86253a087f0287aeb4","is_default":0,"created_at":1724426464},"03a9cc62-c167-447d-beb2-65c76c96b056":{"title":"Astra","condition":"astra","exclusions":["\/astra\/assets\/js\/minified\/frontend.min.js","replace\\(\/woocommerce-no-js\/,"],"icon_url":"","type":"theme","id":"theme:3cce5f3eaf76e098ba8e28f7bbba3f92","is_default":0,"created_at":1712608792},"2a2b54cb-8e1d-49d2-bfca-93eee231e470":{"title":"Astra - Carousel","condition":"astra","exclusions":["var astra","\/astra\/assets\/js\/minified\/style.min.js"],"icon_url":"","summary":"Load carousel","type":"theme","id":"theme:72a8d63e59c10bdf512a62b862d143a7","is_default":0,"created_at":1724426844},"ff22ab98-07e0-4faa-8994-4c811410acec":{"title":"Astra Pro - Reveal Effect option","condition":"astra","exclusions":["\/plugins\/astra-addon\/assets\/js\/minified\/blog-reveal.min.js","\/plugins\/astra-addon\/assets\/js\/minified\/reveal-effect.min.js"],"summary":"Show elements without interaction","icon_url":"","type":"theme","category":"analytics","id":"theme:10f23506c0da1886b9594093cbf3463e","is_default":0,"created_at":1758832506},"7783361f-66fc-4d95-a054-4e9545bb5b48":{"title":"Auteur","condition":"g5plus-auteur","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/g5plus-auteur\/assets\/js\/core.min.js","\/g5plus-auteur\/assets\/vendors\/","\/auteur-framework\/libs\/smart-framework\/assets\/vendors\/perfect-scrollbar\/js\/perfect-scrollbar.jquery.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Fire the slider on pageload","type":"theme","id":"theme:6207fe478e269e7547bda70a46607a49","is_default":0,"created_at":1724427467},"4c618038-8fc7-4d48-8d41-a32da14e5c1e":{"title":"AutoTrader","condition":"autotrader","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/autotrader\/(.*).js"],"icon_url":"","type":"theme","id":"theme:046dfeee2b77390c53e0e7f93b6a3792","is_default":0,"created_at":1679736741},"18f04f23-35a0-4c45-8cb6-a91d57ca1790":{"id":"theme:835da12f43373029659f766920e81b47","title":"Avada - Animations & mobile-specific actions","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).js","window.off_canvas_","\/plugins\/fusion-builder\/","\/plugins\/fusion-core\/","\/Avada\/includes\/"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:16.000000Z","icon_url":""},"90135867-1b95-498b-80d6-f5dbf2f6b318":{"title":"Avada - FAQ shortcode","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/plugins\/fusion-core\/js\/min\/avada-faqs.js"],"icon_url":"","summary":"Displays content created with the FAQ shortcode","type":"theme","id":"theme:b084708c80d8582546e5430219aa4670","is_default":0,"created_at":1724427150},"d23b5bb1-1d7f-4109-bf69-b20a2be2d337":{"title":"Avada - Fusion carousel","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.carouFredSel.js","\/includes\/lib\/assets\/min\/js\/general\/fusion-carousel.js","fusionCarouselVars"],"icon_url":"","summary":"Display carousel on pageload","type":"theme","id":"theme:5e7a2248e1a53d9bb27b187deb541248","is_default":0,"created_at":1724427016},"98dfa8c1-e72a-4cef-a0b2-8f0c322490fc":{"title":"Avada - Fusion form","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-form-logics.js","\/includes\/lib\/assets\/min\/js\/library\/cssua.js","\/includes\/lib\/assets\/min\/js\/general\/fusion.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js"],"icon_url":"","summary":"To allow submitting forms","type":"theme","id":"theme:f16fb109027f4994a7649a8b1663e6f7","is_default":0,"created_at":1724427132},"026801fa-af67-47ba-b966-347693f0585f":{"title":"Avada - Fusion grid gallery","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-builder\/assets\/js\/min\/general\/fusion-gallery.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js"],"icon_url":"","summary":"Display fusion grid gallery without delay","type":"theme","id":"theme:33f50696d353d8bd4eb59ff6e8f44c97","is_default":0,"created_at":1724426998},"c8349314-15a3-481e-973b-e4d936e4420e":{"title":"Avada - Fusion slider","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/fusion-core\/js\/min\/avada-fusion-slider.js","\/Avada\/includes\/"],"icon_url":"","summary":"Display fusion slider without delay","type":"theme","id":"theme:56fa9993a573540c83eda9c49fae5e3c","is_default":0,"created_at":1724426978},"7a04bc85-0fec-4487-ae05-bb2e5d8d0420":{"title":"Avada - Load Portfolio on pageload","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/library\/packery.js","\/library\/isotope.js","\/library\/imagesLoaded.js","\/general\/fusion-lightbox.js","\/fusion-core\/js\/min\/avada-portfolio.js"],"icon_url":"","summary":"Load Portfolio on pageload","type":"theme","id":"theme:c3f0ed4d94499b68c77d95db37d1d399","is_default":0,"created_at":1724427228},"55bd510c-78aa-49d5-8304-8be2ee2ab0da":{"title":"Avada - Mobile menu","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-menu.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.easing.js"],"icon_url":"","summary":"Load mobile menu scripts without a delay","type":"theme","id":"theme:2189c1c769d65cfc2182e4822847071b","is_default":0,"created_at":1724427273},"ddf00672-c35c-4b68-aeca-925e68bf12b2":{"title":"Avada - OffCanvas","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uploads\/fusion-scripts\/(.*).min.js","window.off_canvas_"],"icon_url":"","summary":"Load Off Canvas pop-ups without user interaction","type":"theme","id":"theme:97a185f08af70c39c7e221faab0f73eb","is_default":0,"created_at":1724427179},"17544cc3-9d3a-4611-bc5d-44d04e2786fa":{"title":"Avada - Show the Portfolio grid on page load","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/includes\/lib\/assets\/min\/js\/library\/imagesLoaded.js","\/includes\/lib\/assets\/min\/js\/library\/isotope.js","\/includes\/lib\/assets\/min\/js\/library\/lazysizes.js","\/includes\/lib\/assets\/min\/js\/library\/modernizr.js","\/includes\/lib\/assets\/min\/js\/library\/packery.js","\/fusion-core\/js\/min\/avada-portfolio.js","avadaPortfolioVars"],"icon_url":"","type":"theme","id":"theme:9d1a9b0c2ca20fca764a82f197b962fd","is_default":0,"created_at":1696601823},"c6c3347c-14e0-4766-afa5-df33a47f5a5a":{"title":"Avada - Sticky menu","condition":"Avada","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Avada\/assets\/min\/js\/general\/avada-menu.js"],"icon_url":"","summary":"Fix sticky menu","type":"theme","id":"theme:3ff44421b404c5efffa25e78e479e4ea","is_default":0,"created_at":1724427248},"232596c1-6a6a-4fe8-a5c3-a60fa74a9456":{"id":"theme:0d727d80bb132f17c737e55883fe4be0","title":"Avada - WooCommerce product gallery","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/assets\/min\/js\/general\/avada-woo-product-images.js","\/includes\/lib\/assets\/min\/js\/library\/jquery.flexslider.js"],"is_default":0,"condition":"Avada","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"95ece7e4-3b19-45e5-aa28-14f833c9afca":{"title":"Avesa","condition":"avesa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/avesa\/js\/main.js","\/avesa\/js\/isotope.js","\/sw_core\/js\/slick.min.js","\/avesa\/js\/bootstrap-datetimepicker.min.js","\/avesa\/js\/bootstrap.min.js"],"icon_url":"","summary":"Display images on product pages.","type":"theme","id":"theme:aad8bfcc594eec02e3b0d635198dee5e","is_default":0,"created_at":1724427449},"88f58a9c-8312-4a4c-8183-b3192eedbe17":{"title":"Bambino - Show Header on Page Load","condition":"bambino","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/themes\/bambino\/framework\/js\/header.misc.js","\/plugins\/bold-page-builder\/content_elements\/bt_bb_section\/bt_bb_elements.js","\/plugins\/bold-page-builder\/content_elements_misc\/js\/content_elements.js","maps.googleapis.com","maps.google.com"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the header doesn't show until interaction with the page.\r\n\r\nNotes:\r\n\r\n\u2022 The Bold Page Builder plugin is made by the same party as the theme and they work closely together\r\n\r\n\u2022 Google maps exclusions are included because console errors happen otherwise. It's okay to include these exclusions because the Bold Page Builder is applying the code related to Google Maps and related to the error:\r\nhttps:\/\/imagizer.imageshack.com\/a\/img924\/1328\/UCCTbc.png","type":"theme","category":"analytics","id":"theme:768bafdd8382fa03d858f585230c3c51","is_default":0,"created_at":1744389947},"f2bfe477-4e45-4e52-a7d9-4d0ba3a92258":{"title":"Besa","condition":"besa","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/besa\/js\/"],"icon_url":"","summary":"Trigger animations and makes the mobile menu immediately responsive","type":"theme","id":"theme:c238e89523c46ca28b08e401f42f6ccc","is_default":0,"created_at":1724427619},"bd94908c-8138-4995-986b-47ec66494bdd":{"title":"BeTheme","condition":"betheme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/betheme\/","mfn","\/wp-includes\/js\/jquery\/ui\/tabs.min.js","\/wp-includes\/js\/jquery\/ui\/core.min.js"],"icon_url":"","summary":"Trigger animations and makes the mobile menu immediately responsive","type":"theme","id":"theme:b99156eb9eeb357c0a70bd3bda6861cc","is_default":0,"created_at":1724427590},"190d2f1a-72a6-40ca-b08a-5c7ee7b0a6a5":{"title":"Bosa Online Education - Fixes animations and preloader","condition":"bosa-online-education","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/bosa\/assets\/js\/jquery.slicknav.min.js","\/bosa\/assets\/slick\/slick.min.js","\/bosa\/assets\/js\/navigation.js","\/bosa\/assets\/js\/custom.min.js","\/bosa\/assets\/js\/theia-sticky-sidebar.min.js"],"icon_url":"","summary":"Fix for the loading animation and displaying mobile menu.","type":"theme","id":"theme:5430bf7b83c83a3687b3b7b437e961b0","is_default":0,"created_at":1724427748},"7ae0e798-ea3b-43c6-b741-a46801b6e6ba":{"title":"Bricks - Load Content","condition":"bricks","exclusions":["\/themes\/bricks\/assets\/js\/bricks.min.js","\/themes\/bricks\/assets\/js\/libs\/splide.min.js"],"summary":"When Delay JavaScript Execution is enabled, videos that should autoplay don't play and image carousels don't load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:c0d4df9616ecbbeb395b520043817e84","is_default":0,"created_at":1755805528},"6fb2b9d7-6ecc-4260-999c-938fbebdbf01":{"title":"Bridge","condition":"bridge","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/bridge-creative\/bridge\/js\/","\/wp-includes\/js\/","\/themes\/bridge\/js\/plugins\/abstractBaseClass.js"],"icon_url":"","summary":"This was created some time ago and with no notes, so hard to know why it was created.\r\n\r\nIn an update, I needed to add the following exclusion to prevent a console error:\r\n\/themes\/bridge\/js\/plugins\/abstractBaseClass.js\r\n\r\nIt should be noted that this uses the old regex for excluding jQuery, which appears to accidentally match and exclude over 20 other scripts as well:\r\n\r\nhttps:\/\/mega.wp-rocket.me\/bridge\/\r\nhttps:\/\/regex101.com\/r\/hstZ0q\/1","type":"theme","id":"theme:de8504b73ea228d0ea9bbce69752092e","is_default":0,"created_at":1730991059},"1dd63427-b4c9-4596-b952-ac711e3637f9":{"title":"Bridge - Load elements without user interaction","condition":"bridge","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/hoverIntent.min.js","\/wp-includes\/js\/mediaelement\/wp-mediaelement.min.js","\/wp-includes\/js\/mediaelement\/mediaelement-migrate.min.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","\/wp-content\/themes\/bridge\/js\/default.min.js","\/wp-content\/themes\/bridge\/js\/plugins.js","\/wp-content\/themes\/bridge\/js\/default_dynamic.js","\/wp-content\/themes\/bridge\/js\/jquery.touchSwipe.min.js","\/themes\/bridge\/js\/default_dynamic_callback.js","\/themes\/bridge\/js\/plugins\/doubletaptogo.js","\/themes\/bridge\/js\/plugins\/abstractBaseClass.js","\/themes\/bridge\/js\/plugins\/mixitup.js","\/themes\/bridge\/js\/plugins\/jquery.appear.js","\/themes\/bridge\/js\/plugins\/jquery.prettyPhoto.js","\/themes\/bridge\/js\/plugins\/jquery.flexslider-min.js","\/themes\/bridge\/js\/plugins\/jquery.fitvids.js","\/themes\/bridge\/js\/plugins\/jquery.carouFredSel-(.*).min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, some elements don't load without user interaction.\r\n\r\nUpdate: Needed to add some additional exclusions to prevent console errors and allow the mobile menu to work (mobile menu works without any exclusions, but enabling this one-click exclusion caused the menu to not work before these additional exclusions were added):\r\n\r\n\/themes\/bridge\/js\/default_dynamic_callback.js\r\n\/themes\/bridge\/js\/plugins\/doubletaptogo.js\r\n\/themes\/bridge\/js\/plugins\/abstractBaseClass.js\r\n\/themes\/bridge\/js\/plugins\/mixitup.js\r\n\/themes\/bridge\/js\/plugins\/jquery.appear.js\r\n\/themes\/bridge\/js\/plugins\/jquery.prettyPhoto.js\r\n\/themes\/bridge\/js\/plugins\/jquery.flexslider-min.js\r\n\/themes\/bridge\/js\/plugins\/jquery.fitvids.js\r\n\/themes\/bridge\/js\/plugins\/jquery.carouFredSel-(.*).min.js\r\n\/wp-includes\/js\/hoverIntent.min.js\r\n\/wp-includes\/js\/mediaelement\/wp-mediaelement.min.js\r\n\/wp-includes\/js\/mediaelement\/mediaelement-migrate.min.js\r\n\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","type":"theme","id":"theme:ad9b810efd365ad9a27987d2912b94cd","is_default":0,"created_at":1730991278},"e1afeb67-fd2b-404c-84e3-a6927765d1a3":{"title":"BuddyBoss","condition":"buddyboss-theme","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-includes\/js\/masonry.min.js","\/wp-includes\/js\/underscore.min.js","\/plugins\/buddyboss-platform\/bp-core\/js\/vendor\/magnific-popup.js","\/plugins\/buddyboss-platform\/bp-templates\/bp-nouveau\/js\/buddypress-nouveau.min.js","\/themes\/buddyboss-theme\/assets\/js\/main.js","\/themes\/buddyboss-theme\/assets\/js\/main.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/menu.js","\/themes\/buddyboss-theme\/assets\/js\/plugins\/bb-woocommerce.js","\/themes\/buddyboss-theme\/assets\/js\/plugins\/elementor.js","\/themes\/buddyboss-theme\/assets\/js\/plugins\/learndash.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/fitvids.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/jssocials.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/mousewheel.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/panelslider.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/progressbar.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/select2.full.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/slick.min.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/sticky-kit.js","\/themes\/buddyboss-theme\/assets\/js\/vendors\/validate.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, content won't load until user interaction. \r\n\r\nAlso fixes issue where menu popups don't work.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/173","type":"theme","category":"analytics","id":"theme:be1f26c456c46c5089be61f5e4d4428c","is_default":0,"created_at":1755263118},"65698b6b-85dd-41ef-8fd7-718f1e983dba":{"title":"Car Dealer","condition":"cardealer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/(.*)","\/cardealer\/js\/(.*)"],"icon_url":"","summary":"Fix slider and form console errors","type":"theme","id":"theme:b1111424fff61af8d1e152dcdd6810f6","is_default":0,"created_at":1724428045},"3927d724-5a0a-402b-a838-858d30b54ea9":{"title":"Cardea - Show Page Content on Load","condition":"cardea-wp","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/cardea-wp\/js\/main.js","\/themes\/cardea-wp\/js\/jquery.sticky.js","\/themes\/cardea-wp\/js\/jquery.fitvids.js","\/themes\/cardea-wp\/js\/jquery.smartmenus.min.js"],"icon_url":"","summary":"Show content on page load","type":"theme","id":"theme:d65d1a8303b0c7508278884520e4bec7","is_default":0,"created_at":1724428028},"693c7cfe-67a5-462c-b460-7a6c767fcee8":{"title":"Charity Help","condition":"charity-help","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/charity-help\/js\/custom.js","\/wp-content\/themes\/charity-help\/mixitup\/jquery.prettyPhoto5152.js","\/wp-content\/themes\/charity-help\/testimonialsrotator\/js\/jquery.quovolver.min.js","\/wp-content\/themes\/charity-help\/testimonialsrotator\/js\/owl.carousel.js","\/wp-content\/themes\/charity-help\/js\/jquery.flexisel.js","\/wp-content\/themes\/charity-help\/js\/jquery.nivo.slider.js","nivoSlider"],"summary":"When Delay JavaScript Execution is enabled, the mobile menu stays open and the slider doesn't work until user interaction.","icon_url":"","type":"theme","category":null,"id":"theme:88b860b4a67fe70a72764c0b3ca85bd3","is_default":0,"created_at":1774513579},"087fb457-a09d-4140-84bd-c9bc1e8195b7":{"title":"CheerUp","condition":"cheerup","exclusions":["\/cheerup\/js\/jquery.sticky-sidebar.js","\/cheerup\/js\/object-fit-images.js","\/cheerup\/js\/jquery.fitvids.js","\/cheerup\/js\/jquery.mfp-lightbox.js","\/cheerup\/js\/ie-polyfills.js","\/cheerup\/js\/theme.js","\/wp-includes\/js\/imagesloaded.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/jquery.min.js"],"icon_url":"","summary":"Fix an issue with the links in the menu.","type":"theme","id":"theme:13bcf562f45afb245dc4f76fecfba6d6","is_default":0,"created_at":1724428063},"eb86aedb-91e6-480c-b76c-756ac1da41be":{"title":"Clover","condition":"clover-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/clover-theme\/"],"icon_url":"","summary":"Load the hamburger menu.","type":"theme","id":"theme:89372f3d9321ae09c94488592084da29","is_default":0,"created_at":1724428083},"6e90b649-5736-497f-9bc6-515900cfea8a":{"title":"Divi 4 - Animations","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI"],"summary":"When Delay JavaScript Execution is enabled, some content does not load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:f232d8d7c7a5ac7f86040ebad08c295c","is_default":0,"created_at":1773241287},"70916c43-4e02-4932-b6aa-91a1815bc755":{"title":"Divi 4 - Background video","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/custom.unified.js","\/js\/mediaelement\/(.*)","mejs"],"summary":"Play video background on page load","icon_url":"","type":"theme","category":"analytics","id":"theme:713fcea72b704a77a2b01e65e3b9b4be","is_default":0,"created_at":1773241342},"08531785-9818-4e30-903e-564637a2ad7a":{"title":"Divi 4 - Counter module","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js","\/js\/magnific-popup.js","var DIVI","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js"],"summary":"Compatibility with the Number Counter module","icon_url":"","type":"theme","category":"analytics","id":"theme:5cde03e83c588cd8c4e7490a2e84a7ef","is_default":0,"created_at":1773240138},"1d63dd7c-7bc7-4629-b03d-0437e177af32":{"title":"Divi 4 - Load Animated Elements on Page Load","condition":"Divi","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/easypiechart.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/salvattore.js"],"summary":"When Delay JavaScript Execution is enabled, some content does not load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:422470ae1a30f4f0fd99a8f15751ed92","is_default":0,"created_at":1773240205},"b996762a-84ef-440d-a089-73a187936fbf":{"title":"Divi 4 - Mobile menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/js\/custom.unified.js"],"summary":"Avoids a double tap to open the mobile menu","icon_url":"","type":"theme","category":"analytics","id":"theme:8105de36585b460f035e378abaf066ad","is_default":0,"created_at":1773241393},"ae096e1e-9c36-46ad-a3d1-c26ea507276b":{"title":"Divi 4 - Sticky elements","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js",".dipi_preloader_wrapper_outer","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/sticky-elements.js","var DIVI"],"summary":"Enable sticky elements on page load.","icon_url":"","type":"theme","category":"analytics","id":"theme:c5dbde7698f50b02f3991975280e1f99","is_default":0,"created_at":1773241365},"349f31f0-dd10-41d3-b0a4-9c5df64879f8":{"title":"Divi 4 - Sticky menu","condition":"Divi","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/js\/jquery\/jquery-migrate.min.js","\/Divi\/js\/scripts.min.js","\/Divi\/includes\/builder\/feature\/dynamic-assets\/assets\/js\/magnific-popup.js","jqueryParams","firstHeader"],"summary":"Hide sticky menu on page load.\r\n\r\nAvoid white flash when using this trick to prevent Divi's own flashing: \r\n\r\nelm.style.display","icon_url":"","type":"theme","category":"analytics","id":"theme:577daf839a4d88bba14d1462db2da031","is_default":0,"created_at":1773241380},"59563458-5f04-4959-b3e2-53e49e169d67":{"title":"Divi 4 - WooCommerce Single Product Images","condition":"Divi","exclusions":["\/Divi\/js\/scripts.min.js"],"summary":"When Delay JavaScript Execution is enabled, some content does not load until user interaction.","icon_url":"","type":"theme","category":"analytics","id":"theme:338556af431f9e85d226bbbf8d635cf1","is_default":0,"created_at":1773241317},"18e2c257-27fa-48ce-89c9-9684739576a3":{"title":"Divi 5 - Mobile Menu","condition":"Divi","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-content\/themes\/Divi\/includes\/builder-5\/visual-builder\/build\/script-library-interactions.js"],"icon_url":"","summary":"Fix Divi 5 mobile menu pop-up from being opened automatically on page load and only closed until user interaction.","type":"theme","category":"analytics","id":"theme:98645c5294c310f572fc3e0ae8006800","is_default":0,"created_at":1777904118},"6426539e-4e43-4fef-ab5a-3eb7b2a8b057":{"title":"Eikra","condition":"eikra","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/eikra\/assets\/js\/","EikraObj"],"icon_url":"","summary":"Fixes preloader not closing.","type":"theme","id":"theme:55d2581ad975eb6325bc97fc3d3b0cb8","is_default":0,"created_at":1724429672},"59020bd6-069f-4f2d-afa2-fbdefa03211c":{"title":"Ekko","condition":"ekko","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ekko\/"],"icon_url":"","summary":"Fixes preloader (blank page) not closing.","type":"theme","id":"theme:2c06f4a1949f8ba4e77042a47674fd9e","is_default":0,"created_at":1724429886},"d82f5cdd-c5d3-4596-94dc-1e25aaff2083":{"title":"Elessi","condition":"elessi-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/elessi-theme\/assets\/js\/min\/functions.min.js","\/elessi-theme\/assets\/js\/min\/main.min.js"],"icon_url":"","type":"theme","id":"theme:d5d2b7fda7b8a2b5b91d430f7602e230","is_default":0,"created_at":1679737773},"f0587c21-54d0-429d-8efe-18a93dacb18d":{"id":"theme:5fc04cc678cb54567aedb51027933002","title":"Enfold","type":"theme","icon":"","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/dynamic_avia\/avia-footer-scripts-(.*).js","var avia_is_mobile"],"is_default":0,"condition":"enfold","created_at":1676435704,"updated_at":"2023-02-15T04:32:17.000000Z","icon_url":""},"c93ee1ee-3956-4278-9ee9-1a0968753e86":{"title":"Enfold - Fix hamburger menu","condition":"enfold","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/enfold\/js\/avia-snippet-hamburger-menu.js","\/enfold\/js\/avia.js","\/enfold\/js\/shortcodes.js","\/enfold\/js\/waypoints\/waypoints.js"],"icon_url":"","type":"theme","id":"theme:2b0c22c5169b94c2eabb125d18915246","is_default":0,"created_at":1715090218},"cc0550cb-918e-419d-b4f2-1809cf666dbb":{"title":"Enfold - LayerSlider","condition":"enfold","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","layerslider"],"icon_url":"","summary":"Loads the slider without user interaction when using Enfold's Layerslider implementation","type":"theme","id":"theme:eb759a03d0ca292c948f09d004a2963f","is_default":0,"created_at":1724430516},"ec883654-4f63-4fae-a3ef-923dcbc2426d":{"title":"Enfold - Shortcodes","condition":"enfold","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/enfold\/js\/avia(.min)?.js","\/enfold\/js\/shortcodes(.min)?.js","\/enfold\/config-templatebuilder\/avia-shortcodes\/","\/enfold\/js\/avia-compat(.min)?.js","\/enfold\/js\/waypoints\/waypoints.min.js","\/enfold\/js\/avia-snippet-(.*).js","\/enfold\/js\/avia-js(.min)?.js","\/enfold\/js\/aviapopup\/jquery.magnific-popup(.min)?.js"],"icon_url":"","type":"theme","id":"theme:072fc4077d7071791d774d6ddbf5dc2a","is_default":0,"created_at":1712954619},"fe3546f0-be3e-4173-8992-a7f6f203b82f":{"title":"Envision","condition":"envision","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/envision\/lib\/js\/app.min.js","var CloudFwOp"],"is_default":1,"icon_url":"","type":"theme","id":"theme:fc5f7d69b646ed95835badc0fc23bc11","created_at":1679737494},"45b060fe-fd61-48c5-8cc9-694b5b6c103f":{"title":"Erios - Fix Mobile Menu","condition":"erios","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/erios\/assets\/js\/libs\/mlpushmenu.js","\/wp-content\/themes\/erios\/assets\/js\/libs\/modernizr.custom.js","\/wp-content\/themes\/erios\/assets\/js\/libs\/classie.js"],"summary":"Fixes an issue in which the mobile menu doesn't appear when clicking the hamburger button","icon_url":"","type":"theme","category":null,"id":"theme:06c4f62aa28eb5d407096ea7c27939ec","is_default":0,"created_at":1738617553},"d997b942-19de-4710-9c81-79d3c65cbd76":{"title":"Ewebot","condition":"ewebot","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/gt3-themes-core\/","\/uploads\/gt3-assets\/js\/(.*)","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Fire animations on pageload.\r\n\r\nAllow the page to load without interaction.\r\n\r\n\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js\r\n\/jquery-migrate(.min)?.js\r\n\/wp-content\/themes\/ewebot\/dist\/js\/theme.js","type":"theme","id":"theme:047f009f2a1f4cdf2088c46be47e385b","is_default":0,"created_at":1724430887},"53d29aec-8ae4-4273-b748-f5bd52dfe177":{"title":"Farvis","condition":"farvis","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/farvis\/"],"icon_url":"","summary":"Fire animations and layout rendering on pageload.","type":"theme","id":"theme:26bff2f3a6ff6347d35edf5c77a35687","is_default":0,"created_at":1724430981},"fb01246b-a5f8-4021-b514-c02cf55e80bd":{"title":"Flatsome","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/assets\/libs\/packery.pkgd.min.js","\/flatsome\/assets\/js\/woocommerce.js","\/flatsome\/assets\/js\/extensions\/flatsome-variation-images-frontend.js"],"icon_url":"","summary":"Avoid homepage slider delay. Allow zoom on the product image gallery.","type":"theme","category":"analytics","id":"theme:26fb1cf80f074ca199d8a7e94c5fc796","is_default":0,"created_at":1735226064},"4d65dc12-9ce7-4171-94a7-9821fd95240e":{"title":"Flatsome - Google map","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","maps.googleapis.com","google.maps.LatLng","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","summary":"Show Google Map on page load","type":"theme","id":"theme:28a6f8b3319c107a34603be0f01a4bcf","is_default":0,"created_at":1724431100},"890e15b6-c66b-4a9e-9b7d-55417df94916":{"title":"Flatsome - Images","condition":"flatsome","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/flatsome\/inc\/integrations\/wp-rocket\/flatsome-wp-rocket.js","\/flatsome\/assets\/js\/flatsome.js","\/flatsome\/inc\/extensions\/flatsome-lazy-load\/flatsome-lazy-load.js","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","summary":"Allow images to load immediately.","type":"theme","id":"theme:f2d60aad9f2f5395e3e145cf8f8ab165","is_default":0,"created_at":1725978870},"ee1a892b-c906-4e35-8684-827919f64bef":{"title":"Foxiz - Load Slider","condition":"foxiz","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/foxiz\/assets\/js\/rbswiper.min.js","\/plugins\/foxiz-core\/assets\/core.js","\/themes\/foxiz\/assets\/js\/global.js","\/themes\/foxiz\/assets\/js\/jquery.ui.totop.min.js"],"summary":"When Delay JavaScript Execution is enabled, the slider doesn't load until there is a user interaction. These exclusions make the slider load immediately.","icon_url":"","type":"theme","id":"theme:ee6e7f08495a961a7bcbfe4e0a283b6e","is_default":0,"created_at":1725039417},"cb54d070-8ee0-4c35-9fa9-b2bac73ccf39":{"title":"Frida","condition":"frida","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/frida\/"],"icon_url":"","summary":"Display images without user interaction and avoid issues with simpleLighbox images","type":"theme","id":"theme:109ddf56796a5133e12279f3daa5ff62","is_default":0,"created_at":1724431195},"435fe79f-47ba-422e-aca6-cea566f6b8a1":{"title":"Gardena Theme","condition":"gardena","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/gardena\/"],"icon_url":"","summary":"Fixes the error message for Largest contentful paint in PageSpeed report, when feature is enabled.","type":"theme","id":"theme:993e6f0fc44b9e55c0a565b84a449340","is_default":0,"created_at":1724431464},"e5428837-d182-44c0-9b8d-66e225e78a42":{"title":"GeneratePress - Back To Top Button","condition":"generatepress","exclusions":["\/themes\/generatepress\/assets\/js\/back-to-top.min.js","generate-back-to-top-js-before"],"summary":"The back to top button will not show or work without these exclusions.","icon_url":"","type":"theme","category":null,"id":"theme:92eb3fe27f152d99a70b3ff7fa51b50a","is_default":0,"created_at":1746819839},"9e78539a-03d9-442b-ab94-dd3b7a9658e4":{"title":"GeneratePress - Mobile menu","condition":"generatepress","exclusions":["\/generatepress\/assets\/js\/menu.min.js","generatepressMenu","\/gp-premium\/menu-plus\/functions\/js\/offside.min.js"],"icon_url":"","summary":"Fixes the mobile menu requiring a double touch, if touching the mobile menu is the first interaction of a visitor with the page.","type":"theme","id":"theme:80a330247d61d729fcd78dc01de6ed2f","is_default":0,"created_at":1724431524},"7d2a6472-83d4-4620-8b9e-ff8872b98c1c":{"title":"Genesis sample","condition":"genesis-sample-develop","exclusions":["\/jquery\/jquery.min.js","\/jquery\/jquery-migrate.min.js","\/js\/hoverIntent.min.js","\/genesis\/lib\/js\/menu\/","\/genesis\/lib\/js\/skip-links.min.js","\/custom-genesis\/js\/custom.js","var c = document.body.classList"],"icon_url":"","summary":"https:\/\/github.com\/wp-media\/delay-javascript-loading\/issues\/33#issuecomment-1201266660 , display mobile menu with DJS","type":"theme","id":"theme:7c14d7a05ad7f4f39b719e015a4723ff","is_default":0,"created_at":1727089078},"02d47d01-56f5-4801-b319-cff1707dd59d":{"title":"Harmuny - Modern WordPress Blog Theme","condition":"harmuny","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/harmuny\/"],"icon_url":"","summary":"Load slideshow without user interaction.","type":"theme","id":"theme:1ff9662c2a3e3221052cbe229feed18c","is_default":0,"created_at":1724427976},"6373bbb2-877c-4075-b6e4-7c58d686b25c":{"title":"HealthFirst","condition":"healthfirst","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/hoverIntent.min.js","\/wp-content\/plugins\/healthfirst-core\/assets\/js\/healthfirst-core.min.js","\/wp-content\/plugins\/healthfirst-core\/assets\/plugins\/modernizr\/modernizr.js","\/wp-content\/plugins\/healthfirst-core\/assets\/plugins\/perfect-scrollbar\/perfect-scrollbar.jquery.min.js","\/wp-content\/themes\/healthfirst\/assets\/js\/main.min.js","\/wp-content\/themes\/healthfirst\/assets\/plugins\/waitforimages\/jquery.waitforimages.js"],"summary":"When Delay JavaScript Execution is enabled, there are console errors.","icon_url":"","type":"theme","id":"theme:882ee30ccc8ed2b36e93c7b6e2c4b98e","is_default":0,"created_at":1724431542},"2c72e7e6-cb77-44e9-af87-d5c42ae6db52":{"title":"Honor - WPBakery fix","condition":"honor","exclusions":["\/honor\/js\/__scripts.js","HONOR_STORAGE","\/js_composer\/"],"icon_url":"","summary":"Only required if used with WPBakery plugin to fix some dependencies issues","type":"theme","id":"theme:9f228373ff4d172655dbf5cb3b1bc23a","is_default":0,"created_at":1724431564},"9309d1d3-1035-4a2c-8ced-075bc3ff9957":{"title":"HotelMaster","condition":"hotelmaster","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/hotelmaster\/javascript\/gdlr-script.js","\/hotelmaster\/plugins\/dl-menu\/modernizr.custom.js","\/hotelmaster\/plugins\/dl-menu\/jquery.dlmenu.js","\/hotelmaster\/plugins\/superfish\/js\/superfish.js","\/hotelmaster\/plugins\/jquery.easing.js"],"icon_url":"","summary":"Fixes double touch required to use the menu on mobile.","type":"theme","id":"theme:978eaddad3b1047e479407b6d92197aa","is_default":0,"created_at":1724431621},"4a09f745-cbb1-47c8-b50a-c8014d5d1335":{"title":"HotelMaster - Blog","condition":"hotelmaster","exclusions":["\/wp-includes\/js\/masonry.min.js","\/gp-premium\/blog\/functions\/js\/scripts.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","summary":"Loads the blog","type":"theme","id":"theme:e813a548bceac6765a1cdf2316f1a6ab","is_default":0,"created_at":1724431587},"f2d8f704-ec68-4278-9ca2-885daa0c1ce5":{"title":"HotelMaster - Masonry","condition":"hotelmaster","exclusions":["\/gp-premium\/menu-plus\/functions\/js\/offside.min.js","offSide"],"icon_url":"","summary":"Display blog archive posts in a masonry layout without user interaction.","type":"theme","id":"theme:398a264e302e42640553681e8759cd07","is_default":0,"created_at":1724431607},"d62a5509-f311-4ec4-a27b-d808842cebc0":{"title":"Impreza - Image Popups","condition":"Impreza","exclusions":["\/themes\/Impreza\/common\/js\/vendor\/magnific-popup.js","\/uploads\/us-assets\/kuechenstudio-reissig.de.js","magnificPopup"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the image popups do not work correctly.","type":"theme","category":"analytics","id":"theme:76e58bbda03bb74e93ec1d97828501b0","is_default":0,"created_at":1747237800},"92b2e258-1f44-41c1-b1bd-f117f61ee49d":{"title":"Jannah Theme - Fix masonry grid","condition":"jannah","exclusions":["\/wp-includes\/js\/jquery\/jquery.min.js","\/wp-includes\/js\/masonry.min.js","\/wp-includes\/js\/jquery\/jquery.masonry.min.js","tie-"],"icon_url":"","summary":"Fix masonry grid","type":"theme","id":"theme:35f7f183089309f52046377ca65e905a","is_default":0,"created_at":1724432477},"df52436c-53d6-461a-b81a-cd0b21680524":{"title":"JNews","condition":"jnews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/jnews\/assets\/js\/","jnews","jfla"],"icon_url":"","summary":"Toggle the search box on mobile.\r\n\r\nLoad images without interaction:\r\n\r\n\/jnews\/assets\/js\/modernizr-custom.js","type":"theme","id":"theme:5d90e451984f9d894b1aabb0d00f30a2","is_default":0,"created_at":1724432551},"87ed69a2-3295-4fad-a82e-eeb02925a5dc":{"title":"Jobify","condition":"jobify","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jobify\/js\/jobify.min.js","\/jobify\/js\/select2.full.min.js"],"icon_url":"","summary":"Prevent white space on the mobile header before user interaction","type":"theme","id":"theme:592006aa4562a6915e344e5e2a09e5ee","is_default":0,"created_at":1724432575},"28a0b1ea-8d2f-4931-a48a-166b8df8a773":{"title":"JOYN","condition":"joyn","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/lib\/modernizr-custom.js","\/swift-framework\/includes\/page-builder\/frontend-assets\/js\/spb-functions.min.js","\/swift-framework\/includes\/swift-slider\/assets\/js\/swift-slider.min.js","\/swift-framework\/public\/js\/lib\/imagesloaded.pkgd.min.js","\/joyn\/js\/owl.carousel.min.js","\/joyn\/js\/theme-scripts.js","\/joyn\/js\/functions.js"],"icon_url":"","summary":"Prevent the page from not loading on mobile devices","type":"theme","id":"theme:c395470ad2d4d681836cd942bbb03120","is_default":0,"created_at":1724432590},"542be60a-2346-4740-9a41-8a580c4f013c":{"title":"Juno Toys","condition":"junotoys","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate.min.js","\/junotoys\/fw\/js\/core.init.js","\/junotoys\/fw\/js\/core.utils.js","\/junotoys\/fw\/js\/superfish.js","\/junotoys\/fw\/js\/swiper\/swiper.js","\/trx_utils\/shortcodes\/theme.shortcodes.js","\/wp-includes\/js\/jquery\/ui\/(.*)"],"icon_url":"","summary":"Display the swiper\/carousel products","type":"theme","id":"theme:2acab38e8356d36355bb81d931e7fba4","is_default":0,"created_at":1724432608},"06167710-10c7-446e-a08b-ce676e444102":{"title":"Jupiter","condition":"jupiter","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiter\/","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:89c5c30498c2989611f9044be006197c","is_default":0,"created_at":1679738430},"5d042e1f-7e62-4ec4-ba31-30d396004522":{"title":"JupiterX","condition":"jupiterx","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jupiterx\/(.*).js","\/wp-includes\/js\/underscore.min.js","WebFont.load"],"icon_url":"","type":"theme","id":"theme:b06632962a4948d4944fd8d79ffbfceb","is_default":0,"created_at":1679737312},"c4b030ea-66a1-4729-85bf-a484e373a316":{"title":"Kadence","condition":"kadence","exclusions":["\/kadence\/assets\/js\/navigation.min.js","mobile_menu_breakpoint","kadenceConfig"],"icon_url":"","summary":"Avoid double click to open mobile menu and search button","type":"theme","id":"theme:4b7907ee68218db279648da9bf7102d1","is_default":0,"created_at":1724432769},"20c605b4-3e3a-4bb0-a5e5-a08e2cb0f31f":{"title":"Kalium","condition":"kalium","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kalium\/assets\/js\/main.min.js","mobile_menu_breakpoint","var _k"],"icon_url":"","summary":"Fixes the hamburger menu.","type":"theme","id":"theme:1fcb99a1ab06e1e36635365ed3e59ce5","is_default":0,"created_at":1724432784},"e1e04a7d-635a-4e28-83d9-e345ce40e354":{"title":"Kava","condition":"kava","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/kava\/assets\/js\/theme-script.js"],"icon_url":"","summary":"Fixes the header color issue.","type":"theme","id":"theme:359d67efbf530c998245225dd3245a88","is_default":0,"created_at":1724432796},"e833c36e-ee89-4924-b608-3f28327c2f85":{"title":"Lay","condition":"lay","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/backbone.min.js","\/wp-includes\/js\/underscore.min.js","\/lay\/","\/laytheme-carousel\/","window.laytheme"],"icon_url":"","summary":"Start showing content on pageload.","type":"theme","id":"theme:7c718c6da874ea6e4b27c6d70bc4e7e8","is_default":0,"created_at":1724432836},"2df2ef47-a833-4711-ba54-48dc62586f37":{"title":"LazaNews","condition":"lazanews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/jquery.custom.js"],"icon_url":"","summary":"Prevents the page preloading animation from being stuck until user interaction.","type":"theme","id":"theme:85d9922ac61ed833fd047a67029df8e5","is_default":0,"created_at":1724432810},"9443304a-34e9-4700-a03a-5f8f62f83ed1":{"title":"Listeo","condition":"listeo","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listeo\/js\/"],"icon_url":"","summary":"Render the page on pageload","type":"theme","id":"theme:db7da585545001f5ae614a2810f08f3a","is_default":0,"created_at":1724432849},"77afa73c-c4a8-42a8-aaee-43f6a761364e":{"title":"ListingPro","condition":"listingpro","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/listingpro\/assets\/lib\/jquerym.menu\/js\/jquery.mmenu.min.all.js","\/listingpro\/assets\/lib\/Magnific-Popup-master\/jquery.magnific-popup.min.js","\/listingpro\/assets\/js\/select2.full.min.js","\/listingpro\/assets\/js\/jquery.city-autocomplete.js","\/listingpro\/assets\/js\/chosen.jquery.min.js","\/listingpro\/assets\/lib\/bootstrap\/js\/bootstrap-slider.js","\/listingpro\/assets\/js\/jquery-ui.js","\/listingpro\/assets\/js\/mapbox.js","\/listingpro\/assets\/js\/main.js","\/listingpro\/assets\/js\/leaflet.markercluster.js","maps"],"icon_url":"","summary":"Display the map and avoid console errors.","type":"theme","id":"theme:0b365e43dfc65d2b1b70fac6510c7c9c","is_default":0,"created_at":1724432862},"164e73e5-0603-42de-9ae6-837d822636a3":{"title":"Lycka - Load Menu","condition":"lycka","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/themes\/lycka\/framework\/js\/header.misc.js"],"summary":"When Delay JavaScript Execution is enabled, the menu does not appear until interaction with the page.","icon_url":"","type":"theme","category":null,"id":"theme:16544487fefeb35553d3abb52856b73c","is_default":0,"created_at":1754072604},"47de96e2-016b-4a8b-a707-286242f0077b":{"title":"Magbook - Show Slider","condition":"magbook","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/themes\/magbook\/js\/flexslider-setting.js","\/wp-content\/themes\/magbook\/js\/jquery.flexslider-min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, the slider doesn't show until user interaction.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/180","type":"theme","category":"analytics","id":"theme:a1be05a01927e084ea948e15017ee3d3","is_default":0,"created_at":1743179866},"01b369b5-b578-4314-8e95-40b67a41d75a":{"title":"Master Study","condition":"masterstudy","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/masterstudy\/assets\/js\/custom.js","\/masterstudy\/assets\/vendors\/jquery.fancybox.min.js","\/masterstudy\/assets\/js\/select2.full.min.js"],"icon_url":"","summary":"Prevents the page preloading animation from being stuck until user interaction.","type":"theme","id":"theme:0ee224c20e4ef7d546733d933db598f2","is_default":0,"created_at":1724432905},"6b000cc7-d33b-4109-9c39-6119a5d81cde":{"title":"Maya","condition":"maya","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/maya\/js\/jquery.mobilemenu.js","\/maya\/js\/jquery.custom.js","\/maya\/core\/includes\/js\/jquery.tipsy.js"],"icon_url":"","summary":"Convert the mobile menu into a selector form on mobile devices without user interaction.","type":"theme","id":"theme:719fe28004fcdd81a820602924aa8074","is_default":0,"created_at":1724432964},"ef3c76d6-1041-473d-81ea-a5a6e8c86735":{"title":"MH Magazine","condition":"mh-magazine","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/mh-magazine\/"],"icon_url":"","summary":"Display menus on page load.","type":"theme","id":"theme:2a0cd6efc2f46be69de61712729a2ec9","is_default":0,"created_at":1724433164},"9cbb2777-5524-43b8-af36-692b27452c0d":{"title":"Minimog","condition":"minimog","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/minimog\/"],"icon_url":"","summary":"Display menus on page load.","type":"theme","id":"theme:61c0c235042359ee7d2a9035e79a7da2","is_default":0,"created_at":1724433180},"7eb81c74-8062-4a6c-bf66-b7c5bc160141":{"title":"Moozo Elementor","condition":"moozo-elementor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/moozo-elementor\/assets\/js\/countdown.js","\/moozo-elementor\/assets\/vendor\/countdown\/countdown.min.js"],"icon_url":"","summary":"Display the countdown timer without interaction.","type":"theme","id":"theme:2ddb538c8e6b6c766fffd0d5c861fd82","is_default":0,"created_at":1724433254},"e90b7bfa-9ff6-4e1a-bf29-6207d55fdd39":{"title":"Motor","condition":"motor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/motor\/js\/"],"icon_url":"","type":"theme","id":"theme:b33538179f5661a86cbe327a1793e199","is_default":0,"created_at":1683973354},"d4607fcd-296f-4235-ba8e-2be508181877":{"title":"Movedo - Autoplay Video","condition":"movedo","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/themes\/movedo\/js\/main.js","\/themes\/movedo\/js\/plugins.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, autoplay videos don't play until user interaction with page.\r\n\r\nhttps:\/\/github.com\/wp-media\/rucss-backend\/issues\/181","type":"theme","category":"analytics","id":"theme:08e2673c5f3e451c281eba504f57290e","is_default":0,"created_at":1743424232},"445e625a-f955-41fa-84de-65d9ea19be07":{"title":"My Listing","condition":"my-listing","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/my-listing\/assets\/","\/wp-includes\/js\/dist\/vendor\/moment.min.js","maps.googleapis.com","MyListing","_Explore_Settings"],"icon_url":"","summary":"Show the content on page load:","type":"theme","id":"theme:afacb777229ddf5cabceacc64948057d","is_default":0,"created_at":1724433267},"677d9967-ca17-4602-8f63-4c3937f7a5c2":{"title":"Nature One PRO - Nivo Slider","condition":"natureone-pro","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","nivoSlider"],"summary":"When Delay JavaScript Execution is enabled, the Nivo Slider doesn't load until user interaction.","icon_url":"","type":"theme","id":"theme:53ae74a161c1588f5539b6883825d3ee","is_default":0,"created_at":1729860774},"00b8cd2d-2781-4fbb-ac5d-00750ba94ac9":{"title":"Neve - Mobile menu","condition":"neve","exclusions":["\/neve\/assets\/js\/build\/modern\/frontend.js"],"icon_url":"","summary":"Prevents the need for a double tap on the mobile menu.","type":"theme","id":"theme:5ae731cc06dd9284f8172675a6fe81ab","is_default":0,"created_at":1724432677},"483abc54-f1fc-47dc-bfc1-a269c7d1c849":{"title":"Newspaper - Images","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","summary":"Loads images without delay","type":"theme","id":"theme:649ff22527bac2b1c8e0115cd3851d53","is_default":0,"created_at":1724432710},"50db8d14-d421-4237-be14-a6f7b5c11ec5":{"title":"Newspaper - Slider & YouTube","condition":"Newspaper","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","tagdiv_theme.min.js","tdBlocksArray","tdb_globals","td_youtube_list_ids","iosSlider","\/td-cloud-library\/assets\/js\/js_files_for_front.min.js","\/wp-includes\/js\/underscore.min.js","\/td-cloud-library\/assets\/js\/","\/npm\/slick-carousel@1.8.1\/slick\/slick.min.js","tdb-gallery-wrap","tdBlocksArray","tdb_"],"icon_url":"","summary":"Render the slider and Youtube videos on pageload","type":"theme","id":"theme:7e2eeee57ae458c5959342eda6526bf1","is_default":0,"created_at":1724432700},"514f4c30-2b67-4648-960e-dfe1cc401ca5":{"title":"Niva","condition":"niva","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/niva\/js\/","\/sweetthemes-framework\/js\/","mt_typed"],"icon_url":"","summary":"Trigger the page loader and the typewriter","type":"theme","id":"theme:c4838f73a344b829ed626635e210dcf4","is_default":0,"created_at":1724432724},"e67ee504-c3b1-455e-88ab-1fae8c830652":{"title":"OceanWP","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/oceanwp\/"],"icon_url":"","summary":"Fixes some non-function breaking browser console errors.","type":"theme","id":"theme:db37af4b7d12695d37d9256313a5f37a","is_default":0,"created_at":1724432755},"e44e240a-8765-4f4f-b67e-d54e4b727506":{"title":"OceanWP - Mobile menu","condition":"oceanwp","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/ocean-side-panel\/assets\/js\/side-panel.min.js","\/oceanwp\/assets\/js\/theme.vanilla.min.js"],"icon_url":"","summary":"Avoids double tap on mobile menu","type":"theme","id":"theme:9babbcd52b2ce558d299a06cd1130a11","is_default":0,"created_at":1724432740},"51ac8cbb-6018-45a5-917f-6ce48bc7fc67":{"title":"Ohio","condition":"ohio","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/ohio\/assets\/js\/main.min.js","\/themes\/ohio\/assets\/js\/libs\/jquery.mega-menu.min.js","\/themes\/ohio\/assets\/js\/libs\/typed.min.js","\/themes\/ohio\/assets\/js\/libs\/isotope.pkgd.min.js"],"summary":"Load the mobile menu on page load without user interaction\r\nLoad dynamic typing text without user interaction","icon_url":"","type":"theme","category":"analytics","id":"theme:4ec96adb9cc39333f3d2024b28f2503f","is_default":0,"created_at":1769790675},"69a88ebb-b958-4ef0-be66-a1ceab623773":{"title":"Pelicula Theme","condition":"pelicula","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/plugins\/qi-blocks\/assets\/js\/plugins\/fslightbox\/fslightbox.min.js","\/plugins\/qi-blocks\/inc\/masonry\/assets\/plugins\/isotope.pkgd.min.js","\/plugins\/qi-blocks\/inc\/masonry\/assets\/plugins\/packery-mode.pkgd.min.js","\/pelicula\/","\/pelicula-core\/assets\/","\/qi-addons-for-elementor\/","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","summary":"Allow the Pelicula theme's Galleries to show on the page without user interaction\r\nFix broken animated title effects so they animate properly.\r\nFix testimonial not showing until user interaction.\r\nFix Modal not triggering when clicked.","type":"theme","category":"analytics","id":"theme:56bb7d07cce915321f3ed45b09b9e9e5","is_default":0,"created_at":1742986303},"897b0100-958d-4a02-b6b2-1e753e9869f4":{"title":"PenNews","condition":"pennews","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/pennews\/js\/script.min.js","\/pennews\/js\/script.lib.min.js"],"icon_url":"","summary":"When the theme's lazyload functionality is used, lazyload images without interaction.","type":"theme","id":"theme:02811fa00bc1471bb5be0457ce0ee005","is_default":0,"created_at":1724433732},"edd3ba03-e0fd-4b6e-911b-60b29f3471bf":{"title":"Pharmacy Mentor","condition":"pharmacymentor","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/pharmacymentor\/"],"icon_url":"","summary":"Load slider and animations on pageload.","type":"theme","id":"theme:3188aaf1ef2c39937450f2a14ebb1174","is_default":0,"created_at":1724442943},"449a1b7e-5c4b-43d6-8a33-195254bfb184":{"title":"Phlox Pro","condition":"phlox-pro","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/phlox-pro\/"],"summary":"When Delay JavaScript Execution is enabled, we have a white page until user interaction.\r\nNo preload or transition page to deactivate on the theme setting.","icon_url":"","type":"theme","category":null,"id":"theme:9cf68c2d2861c6cc6ad4ab1c3c8480eb","is_default":0,"created_at":1756733274},"725415ff-cc76-45cc-a131-3170e5aa30fc":{"title":"Porto","condition":"porto","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme.js","\/porto\/js\/theme.min.js"],"icon_url":"","summary":"Load animations","type":"theme","id":"theme:8493f398f200c8dffe60d46439dd3360","is_default":0,"created_at":1724442964},"a4f6d50c-2ee9-40d6-b13e-502bda0ab18e":{"title":"Porto - Load Product Archive Listing","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/themes\/porto\/js\/skeleton.min.js","\/porto\/js\/theme.js"],"summary":"Load Porto product archive listing in shop pages without user interaction","icon_url":"","type":"theme","category":null,"id":"theme:1315f133b62df536d891c6a9c93ef4a7","is_default":0,"created_at":1746008976},"2c19bcec-f3ff-4873-bfd7-db6bc0f6433c":{"title":"Porto - Owl Carousel","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme(|.min).js","\/porto\/js\/libs\/owl.carousel(|.min).js","\/porto\/js\/theme-async(|.min).js","\/prettyPhoto\/jquery.prettyPhoto(|.min).js"],"icon_url":"","summary":"Load Owl Carousel without interaction","type":"theme","id":"theme:f34f5199fb7fca78852cd3fb7758f178","is_default":0,"created_at":1724442974},"f7779ea7-3b3a-441a-8fe7-44e3ee9350d8":{"title":"Porto - Product Gallery","condition":"porto","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-includes\/js\/jquery\/ui\/","\/porto\/js\/theme(|.min).js","\/porto\/js\/libs\/owl.carousel(|.min).js","\/porto\/js\/theme-async(|.min).js","\/porto\/js\/woocommerce-theme.js","\/wp-includes\/js\/imagesloaded.min.js","\/wp-includes\/js\/underscore.min.js","\/woocommerce\/assets\/js\/jquery-cookie\/jquery.cookie.min.js"],"summary":"When Delay JavaScript Execution is enabled, the product gallery dots navigation don't load until user interaction.","icon_url":"","type":"theme","category":null,"id":"theme:ddb85625312fec570f0a85e1e11fbba4","is_default":0,"created_at":1746791452},"5b11ec89-1cb2-4793-8b77-79e917e810a0":{"title":"Pro Theme - Fix menu and accordions","condition":"pro","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/pro\/cornerstone\/assets\/js\/site\/cs-classic.(.*).js"],"icon_url":"","summary":"Fix menu and accordions","type":"theme","id":"theme:8f30d70dd2d9a0386445aef8fdd534a9","is_default":0,"created_at":1724443035},"31347ccb-f69e-4cd3-bd47-b80ce14ac76e":{"title":"ProPhoto","condition":"prophoto7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/prophoto7\/js\/bundle.front.js","\/wp-includes\/js\/underscore.min.js","PROPHOTO"],"icon_url":"","summary":"Fire animations","type":"theme","id":"theme:a5836a56c4472fade4dc6ebfe2281554","is_default":0,"created_at":1724443049},"a8208c04-865c-49aa-ab96-41e378d391c8":{"title":"Publisher","condition":"publisher","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/publisher\/js\/"],"icon_url":"","summary":"Make the mobile menu expend from the first click and the cookie notice to show on pageload.","type":"theme","id":"theme:32c73be0cb175da278c8e2af0811b0d1","is_default":0,"created_at":1724443063},"a0d69f3d-1356-4a1d-a600-2f2f788b8a9a":{"title":"REHub","condition":"rehub-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rehub-theme\/js\/custom_floatpanel.js"],"icon_url":"","summary":"Fix the sticky menu","type":"theme","id":"theme:321af1febb74f488cf911380893739b2","is_default":0,"created_at":1724434339},"8b74bbe5-7f32-42df-908f-78c99a8cad82":{"title":"Rey","condition":"rey","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/rey\/scripts-(.*).js","\/rey-core\/assets\/js\/"],"icon_url":"","summary":"Fix the sticky menu on mobile and animations","type":"theme","id":"theme:e46567cd0f3ec9b37e7230dc87eac367","is_default":0,"created_at":1724434354},"5c9115d3-bcbd-49d6-8feb-4880d2b82bfe":{"title":"Rife Free","condition":"rife-free","exclusions":["\/rife-free\/js\/script.min.js","\/rife-free\/js\/isotope.pkgd.min.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","var reJS"],"icon_url":"","type":"theme","id":"theme:74a449954de79625eccc6750e87af8f6","is_default":0,"created_at":1679738107},"6542b2fd-1f91-4862-aa18-11eecc02faaf":{"title":"Roisin","condition":"roisin","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/themes\/roisin\/assets\/js\/main.min.js","\/plugins\/roisin-core\/assets\/js\/roisin-core.min.js","\/wp-includes\/js\/hoverIntent.min.js"],"icon_url":"","type":"theme","id":"theme:8f38fe58034772931110930b91cb6797","is_default":0,"created_at":1685964523},"5a192ad9-d150-4aa0-8efc-d68131cb7a37":{"title":"Sahifa - Mobile Menu","condition":"sahifa","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/themes\/sahifa\/js\/ilightbox.packed.js","\/translate_a\/element.js"],"icon_url":"","summary":"Allow mobile menu slideout to work for Safari mobile","type":"theme","id":"theme:06ebe49f4c1e5b04cece831f8bb198a3","is_default":0,"created_at":1724434427},"7ae9d978-d63c-4a58-beb3-418bebb5b23c":{"title":"Salient","condition":"salient","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/salient\/","winW > bodyW"],"icon_url":"","summary":"Close mobile menu when using anchor links & Show the menu and animations on page load","type":"theme","id":"theme:b3e12d57ac23897be1bb2c673e3fc761","is_default":0,"created_at":1724434525},"35aaa6c5-4a37-4161-b504-fb3ebc4b1148":{"title":"Salient - Nectar slider","condition":"salient","exclusions":["\/salient-nectar-slider\/js\/nectar-slider.js","\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js"],"icon_url":"","summary":"load the images without interaction","type":"theme","id":"theme:d612db1dd8dc76faa6a36a9ebfd336dc","is_default":0,"created_at":1724434498},"84c95206-3e59-4eb3-a0c9-e2231a1c0a48":{"title":"SEO Lounge","condition":"seolounge","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?$","\/js_composer\/assets\/js\/dist\/js_composer_front.min.js","\/seolounge\/js\/radiantthemes-custom.js","\/seolounge\/js\/radiantthemes-core.min.js"],"icon_url":"","summary":"Avoid the loader being delayed so the page can be displayed before user interaction.","type":"theme","id":"theme:3d72b779d9c4ba6b51cc5b245b141433","is_default":0,"created_at":1724434624},"cd44aa56-088a-40dd-bf1e-f835efa68626":{"title":"Shoptimizer","condition":"shoptimizer","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/shoptimizer\/assets\/js\/lazyload-bg.js","\/shoptimizer\/assets\/js\/main.min.js"],"icon_url":"","summary":"Shows background images and fix the double tap on mobile menu","type":"theme","id":"theme:6c32b43f4da639e5901574fac6b7d387","is_default":0,"created_at":1724434579},"d2c48a48-430a-4eea-bc05-99b66f1f6a7b":{"title":"SmartMag","condition":"smart-mag","exclusions":["\/smart-mag\/js\/lazyload.js"],"icon_url":"","summary":"Fixes the images not being displayed because of the theme's Lazyload.","type":"theme","id":"theme:23d6b7878bd0087addb067db3fa39864","is_default":0,"created_at":1724434887},"dd0d9133-ef17-4dac-b174-9f25d535838f":{"title":"Soledad","condition":"soledad","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/soledad\/js\/main.js","\/soledad\/js\/more-post.js","\/soledad\/js\/libs-script.min.js"],"icon_url":"","summary":"Fixes the images not being displayed because of the theme's Lazyload.","type":"theme","id":"theme:d3f78b26c2d11c99230171cc6378d06e","is_default":0,"created_at":1724434902},"3b85dd6e-9534-477e-9b15-940d0e155c8d":{"title":"Spacious - Mobile Menu","condition":"spacious","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/spacious\/js\/navigation.js"],"icon_url":"","summary":"Fixes mobile menu functionality.","type":"theme","id":"theme:d423c1f002b10b8682ee24d616b19c9c","is_default":0,"created_at":1724434916},"d657dc56-5c04-439a-8987-401f89a65bf9":{"title":"Stockholm","condition":"stockholm","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/stockholm\/js\/"],"icon_url":"","summary":"To show the logo and prevent JavaScript errors","type":"theme","id":"theme:fcfff492e00727b63cf5dff9f59bc2a4","is_default":0,"created_at":1724443889},"121f9b1b-d3cd-4dde-915e-0b348abf6687":{"title":"Storefront","condition":"storefront","exclusions":["\/storefront\/assets\/js\/navigation.min.js"],"icon_url":"","summary":"Reveals menu from the first click.\r\n\r\nSome elements on the page (Link sliders) are showed on page load:\r\n\r\n\/storefront\/assets\/js\/homepage.min.js","type":"theme","id":"theme:f0dca7e4eaedf573d4664be249845942","is_default":0,"created_at":1724443926},"41cfc83f-ff02-4a35-a3b7-e92db213b224":{"title":"StreamTube","condition":"streamtube","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/streamtube\/","\/streamtube-core\/"],"icon_url":"","summary":"Fixes the display video error on the mobile version.","type":"theme","id":"theme:9772ccddd470688f6bc6aee86e34d29b","is_default":0,"created_at":1724444002},"c31366fe-9045-4767-a405-52a11e08b82e":{"title":"Sydney - Load elements on page load","condition":"sydney-pro-ii","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/sydney-pro-ii\/js\/scripts.js","\/wp-content\/themes\/sydney-pro-ii\/js\/functions.min.js","\/wp-content\/themes\/sydney-pro-ii\/js\/elementor.js","\/wp-content\/themes\/sydney-pro-ii\/js\/hero-slider.js","\/wp-content\/plugins\/sydney-toolbox\/js\/main.js"],"icon_url":"","summary":"Load elements on pages without user interaction","type":"theme","id":"theme:1fb15693856451537e331adeaf2c7d6f","is_default":0,"created_at":1724442744},"aec0a548-4c6b-400a-80ed-19a49e0faef0":{"title":"The7","condition":"dt-the7","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/wp-includes\/js\/jquery\/jquery-migrate.min.js","loader-removed","\/Ultimate_VC_Addons\/assets\/min-js\/","\/dt-the7\/","\/js_composer\/","underscore.min.js"],"icon_url":"","summary":"Remove the loader and fire animations","type":"theme","category":"analytics","id":"theme:7934c689fd20e30b6bfc69bb9d46cb63","is_default":0,"created_at":1754635920},"538354ff-d69f-40be-b0cc-df3790599dd2":{"title":"TheGem","condition":"thegem","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thegem\/js\/","gemSettings","thegemSlideshow","tgpLazyItemsOptions"],"icon_url":"","summary":"To show the logo, slider, animations and prevent JavaScript errors","type":"theme","id":"theme:153c54fe73897da838ce39152b1db5a8","is_default":0,"created_at":1724444019},"84d95a79-270c-4223-b459-bb49c6acfaf1":{"title":"Theme Electiman - Mobile Menu","condition":"electiman","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/electiman\/assets\/js\/navigation.js","\/themes\/electiman\/assets\/js\/theme-pluginjs.js","\/themes\/electiman\/assets\/js\/theme.js","\/themes\/electiman\/assets\/js\/slick.min.js","\/themes\/electiman\/venobox\/venobox.min.js","\/themes\/electiman\/assets\/js\/owl.carousel.min.js","\/wp-includes\/js\/imagesloaded.min.js"],"icon_url":"","type":"theme","id":"theme:a59c888391c869ed4f3417c02d71fe15","is_default":0,"created_at":1702923332},"3a59bf59-4fe5-4690-8ab7-33e6a976e2e3":{"title":"Thrive Theme Builder","condition":"thrive-theme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/thrive-visual-editor\/editor\/js\/dist\/modules\/(.*).js","TVE_Event_Manager_Registered_Callbacks","ThriveGlobal","TCB_Front","TL_Front","TVE_Ult","thrive-","thrive_","tve_","tve-"],"icon_url":"","type":"theme","id":"theme:7492fc8f8a90ad7ef680d9c560da2b0f","is_default":0,"created_at":1710767440},"68f2de3b-e2b8-4edf-b82f-93fd7834c65f":{"title":"Total","condition":"Total","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/Total\/assets\/js\/total.min.js"],"icon_url":"","summary":"Allow the search to work","type":"theme","id":"theme:96b0141273eabab320119c467cdcaf17","is_default":0,"created_at":1724444033},"6dc1cb35-6b50-4da0-9834-dddf169edaa6":{"title":"Townhub","condition":"townhub","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/townhub-add-ons\/assets\/js\/(.*)","\/wp-includes\/js\/dist\/vendor\/react.js","\/wp-includes\/js\/dist\/vendor\/react-dom.js"],"icon_url":"","summary":"Prevent add-ons from breaking the site","type":"theme","id":"theme:7c37c885d7fecf788f635734f99e8610","is_default":0,"created_at":1724444055},"f484f86b-e316-4871-9322-dee3925349fe":{"title":"Travel Monster - Owl Carousel","condition":"travel-monster","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/wp-content\/plugins\/wp-travel-engine\/assets\/lib\/owl-carousel(.*)\/owl.carousel(|.min).js","var isRtl"],"icon_url":"","summary":"Load Owl Carousel Slider without user interaction","type":"theme","id":"theme:d3e8da87b3affd399205438fbc8a4f05","is_default":0,"created_at":1724444075},"3ec96c3f-a6bf-4748-9b7e-78864bd24add":{"title":"uDesign - Mobile Menu","condition":"u-design","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/u-design\/assets\/js\/theme.min.js","\/wp-content\/themes\/u-design\/framework\/assets\/js\/framework.min.js","\/wp-content\/themes\/u-design\/framework\/assets\/js\/framework-async.min.js"],"icon_url":"","summary":"Keep the mobile menu working properly.","type":"theme","id":"theme:31ce70b0a02f8720a86d993816676943","is_default":0,"created_at":1724444158},"cb523239-27cc-461e-973d-c984a83223ac":{"title":"uDesign - Show Page Content on Load","condition":"u-design","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/wp-content\/themes\/u-design\/assets\/js\/theme.min.js","\/wp-content\/themes\/u-design\/framework\/assets\/js\/framework.min.js"],"icon_url":"","summary":"Display page content on load without user interaction.","type":"theme","id":"theme:c55edd40ad3f9321da577dad70bb130c","is_default":0,"created_at":1724444147},"14cb0a85-8bee-491e-99d7-5f20a07f4bdd":{"title":"Uncode","condition":"uncode","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/uncode\/library\/js\/init(.min)?.js","\/uncode\/library\/js\/plugins(.min)?.js","\/uncode\/library\/js\/app(.min)?.js","\/uncode\/library\/js\/woocommerce-uncode(.min)?.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js","initHeader","initBox","fixMenuHeight","initRow"],"icon_url":"","summary":"Hides Uncode's preloader without user interaction.","type":"theme","id":"theme:18ba19b98aefbb6c0fde6c6bf92e9cfc","is_default":0,"created_at":1724444172},"ff97a78f-9c62-4bc0-9340-1ad98aa6f2fa":{"title":"Uncode - Display Media Items","condition":"uncode","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/uncode\/library\/js\/lib\/vivus.min.js","\/uncode\/library\/js\/utils.min.js"],"summary":"When Delay JavaScript Execution is enabled, media items don't load on the page.","icon_url":"","type":"theme","category":null,"id":"theme:c0802221090418af389a07024262d71d","is_default":0,"created_at":1745441048},"c580ba92-2ab9-418d-a5d6-801ba6ceb9ce":{"title":"Uncode - Show Content on Page Load","condition":"uncode","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/uncode\/library\/js\/lib\/jquery.smartmenus.min.js","\/uncode\/library\/js\/lib\/jquery.waypoints.min.js","\/uncode\/library\/js\/utils.min.js","\/uncode\/library\/js\/app-loader.min.js","\/uncode\/library\/js\/preventDoubleTransition.min.js","\/uncode\/library\/js\/animations.min.js","\/uncode\/library\/js\/menuSystem.min.js","\/uncode\/library\/js\/backgroundSelfVideos.min.js","\/uncode\/library\/js\/carousel.min.js","\/uncode\/library\/js\/uncode-owl-nav.min.js","\/uncode\/library\/js\/tapHover.min.js","\/uncode\/library\/js\/lib\/inview.min.js","\/uncode\/library\/js\/disableHoverScroll.min.js","\/uncode\/library\/js\/printScreen.min.js","\/uncode\/library\/js\/lib\/owl.carousel(.*).min.js","\/wp-includes\/js\/mediaelement\/mediaelement-and-player.min.js"],"summary":"When Delay JavaScript Execution is enabled, much of the page content doesn't load until user interaction.","icon_url":"","type":"theme","category":null,"id":"theme:befde4783fdb847bc562ea6a5882381f","is_default":0,"created_at":1745440617},"96aa49eb-6372-4b4c-b70d-f29dede8a8f2":{"title":"Utouch - Load menu on page load","condition":"utouch","exclusions":["\/wp-includes\/js\/jquery\/jquery-migrate.min.js","\/wp-includes\/js\/jquery\/jquery.min.js","\/utouch\/js\/main.js","\/utouch\/js\/swiper.jquery.min.js","\/utouch\/js\/fitvids.js","\/utouch\/js\/theme-plugins.js","\/utouch\/js\/crum-mega-menu.js"],"icon_url":"","summary":"Display menu on page load.","type":"theme","id":"theme:18284bf26abf49a1d5d60b3fb34e4c2d","is_default":0,"created_at":1724444186},"4cc603bb-f291-4096-aeb6-7d54832541dc":{"title":"Vehica - Mobile Menu","condition":"vehica","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |\\'|\"|>|$)","\/wp-content\/plugins\/vehica-core\/assets\/js\/elements.min.js"],"icon_url":"","summary":"Mobile menu requires double click to open if it's the first action taken.","type":"theme","category":"analytics","id":"theme:14220090cf75437b8926ea110498274a","is_default":0,"created_at":1754069979},"a1fbf155-720a-4704-9794-d6749ad6df59":{"title":"Vivo theme - Fix blank page","condition":"vivo","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/vivo\/framework\/assets\/js\/bt_framework_misc.js"],"icon_url":"","summary":"Fixes a blank page.","type":"theme","id":"theme:a140e640fed504586e24e7c0df30376b","is_default":0,"created_at":1724444202},"5acb5d19-caa6-4deb-b7db-0051df4c3c3b":{"title":"Voxel Theme","condition":"voxel","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/voxel\/","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig"],"icon_url":"","type":"theme","id":"theme:240a2be0a2b66b01f83abdcd83da7c7c","is_default":0,"created_at":1720444241},"88e96479-1aa2-4adc-8f07-20bc0368a63f":{"title":"Werkstatt","condition":"werkstatt","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/js\/underscore.min.js","\/werkstatt\/assets\/js\/vendor.min.js","\/werkstatt\/assets\/js\/fullscreen.min.js","\/werkstatt\/assets\/js\/app.min.js"],"icon_url":"","summary":"Show animated elements on page load.","type":"theme","id":"theme:38faa29db5a07b8fef6aee9cc11cafec","is_default":0,"created_at":1724444798},"60c4110b-a960-4d44-b619-6d79514dbf75":{"title":"Woodmart","condition":"woodmart","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/wp-includes\/js\/imagesloaded.min.js","\/woodmart\/js\/scripts\/wc\/","\/woodmart\/js\/scripts\/global\/","\/woodmart\/js\/libs\/owl.carousel.min.js","\/woodmart\/js\/libs\/owl.carousel.js","\/woodmart\/js\/libs\/slick.js","\/woodmart\/js\/libs\/autocomplete.min.js"],"icon_url":"","summary":"Show WooCommerce thumbnails on pageload & Show product image gallery","type":"theme","id":"theme:06338f13cb89e5309ad2eb7e4d457be4","is_default":0,"created_at":1724444297},"a4547b5b-10ab-407c-969c-269fddec07b8":{"title":"Woodmart - Cart Fragments","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>)","\/woocommerce\/assets\/js\/frontend\/cart-fragments.min.js","\/woocommerce\/assets\/js\/js-cookie\/js.cookie.min.js","\/woodmart\/js\/scripts\/wc\/updateCartFragmentsFix.js"],"icon_url":"","summary":"Fix problem with the quantity icon of the mini cart","type":"theme","id":"theme:591f4f1b2e86b1e987cd8789df3ffce3","is_default":0,"created_at":1724444280},"c385fdb6-ac41-4b00-a350-1e2e82445e22":{"title":"Woodmart - Menu","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/woodmart\/js\/scripts\/global\/helpers.min.js","\/themes\/woodmart\/js\/scripts\/menu\/menuOffsets.min.js","\/themes\/woodmart\/js\/libs\/swiper.min.js"],"icon_url":"","summary":"When Delay JavaScript Execution is enabled, menu dropdowns won't work consistently when clicked (seems to happen if page is refreshed and no user interaction happens until after page is fully loaded).","type":"theme","id":"theme:d8453e5704ad631dd785e452ce75c9f6","is_default":0,"created_at":1729535544},"97066e39-027a-4cd6-9152-7b6b53f365f5":{"title":"Woodmart - Mobile Menu","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/woodmart\/js\/scripts\/menu\/mobileNavigation.min.js","\/themes\/woodmart\/js\/scripts\/global\/helpers.min.js"],"icon_url":"","summary":"Allow mobile menu to work with just one click.","type":"theme","id":"theme:d79a3941e2f12fb93ffc980ebeb1d7f4","is_default":0,"created_at":1724444264},"b654d55b-8094-40a6-b145-48572d2c396d":{"title":"Woodmart - Sticky Header","condition":"woodmart","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/themes\/woodmart\/js\/scripts\/global\/helpers.min.js","\/themes\/woodmart\/js\/scripts\/header\/headerBuilder.min.js"],"summary":"When Delay JavaScript Execution is enabled, the header is no longer sticky when scrolling down the page.","icon_url":"","type":"theme","id":"theme:aa0d7919216f3bb2e405069d206dfda4","is_default":0,"created_at":1729604626},"926d3769-8ce6-4137-b682-44124909d2cc":{"title":"WooVina - Fix Preloader and Hero section","condition":"woovina","exclusions":["\\\/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\\?(.*))?( |'|\"|>|$)","\/elementor\/","\/elementor-pro\/","\/wp-includes\/js\/imagesloaded.min.js","ElementorProFrontendConfig","elementorFrontendConfig","\/happy-elementor-addons-pro\/","\/header-footer-elementor\/inc\/js\/frontend.js","\/wp-includes\/js\/jquery\/ui\/core.min.js","\/wp-includes\/js\/dist\/api-fetch.min.js","\/wp-includes\/js\/dist\/hooks.min.js","\/wp-includes\/js\/dist\/i18n.min.js","\/woovina-preloader\/assets\/js\/wvp-main-script.js","\/woovina\/assets\/js\/main.min.js","\/woovina-elementor-widgets\/assets\/js\/wew-frontend.min.js","\/woovina-elementor-widgets\/assets\/js\/blog-carousel.min.js","\/woovina-elementor-widgets\/assets\/js\/tabs.min.js"],"icon_url":"","summary":"Fixes preloader and hero section","type":"theme","category":"analytics","id":"theme:23a0047d6cddc8e93a6695e42aa24da0","is_default":0,"created_at":1739814571},"119ebd1c-6b46-4f07-8d6a-3498d9c8814f":{"title":"XStore","condition":"xstore","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/xstore\/js\/","\/et-core-plugin\/packages\/st-woo-swatches\/public\/js\/frontend.min.js"],"icon_url":"","type":"theme","id":"theme:3de9d9ba385200548f177d9c704ae92a","is_default":0,"created_at":1679738190},"9a7a548c-07a1-4dff-93fc-6e8230b67853":{"title":"YOOtheme Pro","condition":"yootheme","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","uikit.min.js"],"icon_url":"","summary":"Show animations and image in header on page load.\r\n\r\n\r\n\/yootheme\/","type":"theme","id":"theme:119d329456073aa10969d7cbd9760f28","is_default":0,"created_at":1724444774},"f74c499e-b7d9-4590-8671-379f51f468c8":{"title":"Zeen","condition":"zeen","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","\/zeen\/assets\/js\/","\/js.cookie.min.js"],"icon_url":"","summary":"Starts animations on pageload","type":"theme","id":"theme:acb52844f996627788836366404a3245","is_default":0,"created_at":1724444815}},"scripts":{"analytics":{"2499bb90-0753-4b2b-9bd4-1525f94c7437":{"title":"Google Analytics","exclusions":["google-analytics.com\/analytics.js","ga\\( '","ga\\('"],"icon_url":"","summary":"Google Analytics","type":"script","category":"analytics","id":"script:d86cf69a8b82547a94ca3f6a307cf9a6","is_default":0,"created_at":1734096382},"ac2d5720-9418-468c-80a0-3874ee743c0f":{"title":"Google Optimize","exclusions":["a,s,y,n,c,h,i,d,e","googleoptimize.com\/optimize.js","async-hide"],"icon_url":"","summary":"Prevent a flicker or blank screen.","type":"script","category":"analytics","id":"script:031a0cece38c4739df67f910dcabf1bd","is_default":0,"created_at":1734096440},"219277ae-b2ac-4d42-913d-eaea40985295":{"title":"Google Tag Manager","exclusions":["\/gtag\/js","gtag\\(","\/gtm.js","async-hide"],"icon_url":"","summary":"","type":"script","category":"analytics","id":"script:1d3c65b2b03ef35e14df6b163ea3a1f6","is_default":0,"created_at":1733481215},"f632e3f4-20e6-471e-a78d-86afbea63586":{"title":"HubSpot","exclusions":["\/jquery-?[0-9.](.*)(.min|.slim|.slim.min)?.js","\/jquery-migrate(.min)?.js","js(.*).hsforms.net","hbspt.forms.create","MeetingsEmbed\/ex\/MeetingsEmbedCode.js"],"icon_url":"","summary":"Display the form","type":"script","category":"analytics","id":"script:de4bd8ef4675ebb85a055955de76d0ee","is_default":0,"created_at":1742318463}},"ad_networks":{"dd0c5a5b-ec56-49f9-9aa4-89e1e3a6a28a":{"title":"Amazon Ads","exclusions":["amazon-adsystem.com"],"icon_url":"","summary":"To show the ads","type":"script","category":"ad_networks","id":"script:b82a5936d8ea0745016caeb71629ae5d","is_default":0,"created_at":1734083105},"980edf32-c64b-4370-bf23-c62b079e71c3":{"title":"Google AdSense","exclusions":["adsbygoogle"],"icon_url":"","summary":"Google Adsense","type":"script","category":"ad_networks","id":"script:0206e6040c8ff64b8d6ee5fef2ce1c90","is_default":0,"created_at":1734096273},"49c38c0a-43b9-4237-88cb-57ddd519f0ad":{"title":"Venatus Media","exclusions":["\/ad-manager.min.js","__vm_add"],"icon_url":"","summary":"Show ads on page load.","type":"script","category":"ad_networks","id":"script:abe11528732aed9a19a97e73b242faa5","is_default":0,"created_at":1734096334},"0627fe24-7e9d-400f-b064-d98bec2ba85e":{"title":"Yandex Ads","exclusions":["yandex.ru","window.yaContextCb"],"icon_url":"","summary":"Display Ads without interaction","type":"script","category":"ad_networks","id":"script:dbd1875130c71eb4b2ef768ad18d820c","is_default":0,"created_at":1734096360}},"payment_processors":{"05d3eb78-f574-49be-95e1-3f11714005d1":{"title":"Stripe","exclusions":["js.stripe.com"],"icon_url":"","summary":"Fixes ReferenceError: Stripe is not defined","type":"script","category":"payment_processors","id":"script:ce7566d1d08cc094b74cf283cf9c56a5","is_default":0,"created_at":1734077637}},"other_services":{"6f2f3fce-7671-416a-a322-08875c4badb5":{"title":"Cloudflare Turnstile","exclusions":["cloudflare.com\/turnstile\/","cf-turnstile"],"summary":"While DJE applied, the Cloudflare Turnstile Captcha doesn't appear at all.","icon_url":"","type":"script","category":"other_services","id":"script:7b1ae689f336775afa7835a9da7be645","is_default":0,"created_at":1742993345},"6f460036-3106-4b8c-9951-d32de9b1258f":{"title":"Google Maps","exclusions":["maps.googleapis.com","maps.google.com"],"icon_url":"","summary":"Google Maps","type":"script","category":"other_services","id":"script:4d60ab2c6d11d753267484006c23e54c","is_default":0,"created_at":1734096371},"122e6ebb-51fd-477f-97fb-559593f1a48b":{"title":"Google Recaptcha","exclusions":["recaptcha"],"icon_url":"","summary":"Fixes dependency issues related to Google Recaptcha","type":"script","category":"other_services","id":"script:032cb16577cbf07bc7c02bac83bd936d","is_default":0,"created_at":1734096345},"668df886-2f43-46fa-8426-7be3d7f7d150":{"title":"LeadConnector Chatbox","exclusions":["\/chat-widget\/loader.js"],"icon_url":"","summary":"The chatbox icon\/button does not display until user interaction.\r\n\r\nThis should likely be moved to a new category aside from 'Other Services' once the categories are expanded. Most likely 'Widgets'.\r\n\r\nRelated discussion:\r\nhttps:\/\/wp-media.slack.com\/archives\/C43T1AYMQ\/p1734619420716789?thread_ts=1734605228.860859&cid=C43T1AYMQ\r\n\r\nWebsite using this Chatbox:\r\nhttps:\/\/premiermarketingus.com\r\n\r\nIt uses a custom element for the Chatbox that could be used for limiting display in UI to only sites using this widget: ","type":"script","category":"other_services","id":"script:eeda31f2e95b6f4c2107aebe2887bfe8","is_default":0,"created_at":1734620886},"5d606add-ffb8-4a06-b295-5f722710fbfd":{"title":"Refari","exclusions":["widget.refari.co","refari"],"icon_url":"","summary":"www.refari.co","type":"script","category":"other_services","id":"script:a705e197b13b47e72a105c923e044358","is_default":0,"created_at":1734096181},"742ec14a-27a1-4789-b9c8-a9c3a3cf7042":{"title":"Reviews.io","exclusions":["\/carousel-inline-iframeless\/dist.js","carouselInlineWidget"],"icon_url":"","summary":"Prevents the widget from breaking","type":"script","category":"other_services","id":"script:4df445c576f45889506ba175a4c39fdc","is_default":0,"created_at":1734096412},"0a37e528-8718-49f7-a26d-059aa29f867d":{"title":"Trustindex","exclusions":["cdn.trustindex.io\/loader.js","cdn.trustindex.io\/loader-cert.js"],"icon_url":"","summary":"Trustindex element is shown immediately","type":"script","category":"other_services","id":"script:1d38d6195597e8bb81966870f0a4f939","is_default":0,"created_at":1734096229},"dda024ec-4539-4a00-aee8-d9522aa9ba27":{"title":"Trustindex - Load Rich Snippets","exclusions":["cdn.trustindex.io\/assets\/js\/richsnippet.js"],"icon_url":"","summary":"Allow Trustindex Rich Snippets JavaScript to be loaded on the page and show up in Google's Rich Snippet Testing Tool.","type":"script","category":"other_services","id":"script:55d971acbd86a7676772bca65c37c0c0","is_default":0,"created_at":1752130743},"ce9a3865-9efa-4e98-ae10-4f842a4ecc22":{"title":"Typeform","exclusions":["\/next\/embed.js"],"icon_url":"","summary":"Load Typeforms without interaction","type":"script","category":"other_services","id":"script:cd3889ae3b96f891186ae270dbbcc9bb","is_default":0,"created_at":1734096391},"b56bf06c-2f8c-4757-b536-a689fb0e75f9":{"title":"Typekit","exclusions":["typekit"],"icon_url":"","summary":"Load Typekit fonts on page load","type":"script","category":"other_services","id":"script:7815e38b93e3b500a632681bd594bd61","is_default":0,"created_at":1734096353},"03819e72-abf5-4057-9047-16d45db4641e":{"title":"Vidalytics - Autoplay","exclusions":["vidalytics_embed"],"summary":"Allows the autoplay functionality to work for videos without need for user interaction first.","icon_url":"","type":"script","category":"other_services","id":"script:113087c8df349e7c8b86875b46071855","is_default":0,"created_at":1736531452},"2c1d0998-8ab5-478c-8eb9-9e375b46363e":{"title":"Wistia","exclusions":["fast.wistia.com","\/assets\/external\/E-v1.js"],"icon_url":"","summary":"Show video on page load","type":"script","category":"other_services","id":"script:9a0111f8c3186c1cb3113587c660c041","is_default":0,"created_at":1734096254}}}}
\ No newline at end of file
diff --git a/web/app/plugins/wp-rocket/dynamic-lists-incompatible-plugins.json b/web/app/plugins/wp-rocket/dynamic-lists-incompatible-plugins.json
index 9f88e3d07..274a8a3db 100644
--- a/web/app/plugins/wp-rocket/dynamic-lists-incompatible-plugins.json
+++ b/web/app/plugins/wp-rocket/dynamic-lists-incompatible-plugins.json
@@ -1 +1 @@
-{"":[{"slug":"wp-optimize","file":"wp-optimize\/wp-optimize.php"},{"slug":"airlift","file":"airlift\/airlift.php"},{"slug":"leverage-browser-caching-ninjas","file":"leverage-browser-caching-ninjas\/leverage-browser-caching-ninja.php"},{"slug":"wp-fast-cache","file":"wp-fast-cache\/wp-fast-cache.php"},{"slug":"hyper-cache","file":"hyper-cache\/plugin.php"},{"slug":"wp-http-compression","file":"wp-http-compression\/wp-http-compression.php"},{"slug":"cache-enabler","file":"cache-enabler\/cache-enabler.php"},{"slug":"flexicache","file":"flexicache\/wp-plugin.php"},{"slug":"litespeed-cache","file":"litespeed-cache\/litespeed-cache.php"},{"slug":"quick-cache","file":"quick-cache\/quick-cache.php"},{"slug":"w3-total-cache","file":"w3-total-cache\/w3-total-cache.php"},{"slug":"wp-performance-score-booster","file":"wp-performance-score-booster\/wp-performance-score-booster.php"},{"slug":"remove-query-strings-from-static-resources","file":"remove-query-strings-from-static-resources\/remove-query-strings.php"},{"slug":"query-strings-remover","file":"query-strings-remover\/query-strings-remover.php"},{"slug":"swift-performance","file":"swift-performance\/performance.php"},{"slug":"wp-super-cache","file":"wp-super-cache\/wp-cache.php"},{"slug":"gator-cache","file":"gator-cache\/gator-cache.php"},{"slug":"page-optimize","file":"page-optimize\/page-optimize.php"},{"slug":"leverage-browser-caching","file":"leverage-browser-caching\/leverage-browser-caching.php"},{"slug":"wp-fastest-cache","file":"wp-fastest-cache\/wpFastestCache.php"},{"slug":"enable-gzip-compression","file":"enable-gzip-compression\/enable-gzip-compression.php"},{"slug":"hyper-cache-extended","file":"hyper-cache-extended\/plugin.php"},{"slug":"force-gzip","file":"force-gzip\/force-gzip.php"},{"slug":"add-expires-headers","file":"add-expires-headers\/add-expires-headers.php"},{"slug":"lite-cache","file":"lite-cache\/plugin.php"},{"slug":"psn-pagespeed-ninja","file":"psn-pagespeed-ninja\/pagespeedninja.php"},{"slug":"speed-booster-pack","file":"speed-booster-pack\/speed-booster-pack.php"},{"slug":"wp-ffpc","file":"wp-ffpc\/wp-ffpc.php"},{"slug":"super-static-cache","file":"super-static-cache\/super-static-cache.php"},{"slug":"wpcompressor","file":"wpcompressor\/wpcompressor.php"},{"slug":"swift-performance-lite","file":"swift-performance-lite\/performance.php"},{"slug":"far-future-expiry-header","file":"far-future-expiry-header\/far-future-expiration.php"},{"slug":"combine-css","file":"combine-css\/combine-css.php"},{"slug":"gzip-ninja-speed-compression","file":"gzip-ninja-speed-compression\/gzip-ninja-speed.php"},{"slug":"check-and-enable-gzip-compression","file":"check-and-enable-gzip-compression\/richards-toolbox.php"},{"slug":"wordpress-gzip-compression","file":"wordpress-gzip-compression\/ezgz.php"}],"control_heartbeat":[{"slug":"heartbeat-control","file":"heartbeat-control\/heartbeat-control.php"}],"minify_css||minify_js":[{"slug":"async-js-and-css","file":"async-js-and-css\/asyncJSandCSS.php"},{"slug":"fast-velocity-minify","file":"fast-velocity-minify\/fvm.php"},{"slug":"scripts-gzip","file":"scripts-gzip\/scripts_gzip.php"},{"slug":"bwp-minify","file":"bwp-minify\/bwp-minify.php"},{"slug":"wp-super-minify","file":"wp-super-minify\/wp-super-minify.php"},{"slug":"wp-minify","file":"wp-minify\/wp-minify.php"},{"slug":"merge-minify-refresh","file":"merge-minify-refresh\/merge-minify-refresh.php"},{"slug":"minqueue","file":"minqueue\/plugin.php"},{"slug":"dependency-minification","file":"dependency-minification\/dependency-minification.php"}],"lazyload_iframes":[{"slug":"lazy-load-for-videos","file":"lazy-load-for-videos\/codeispoetry.php"}],"lazyload":[{"slug":"bj-lazy-load","file":"bj-lazy-load\/bj-lazy-load.php"},{"slug":"lazy-load","file":"lazy-load\/lazy-load.php"},{"slug":"advanced-lazy-load","file":"advanced-lazy-load\/advanced_lazyload.php"},{"slug":"jquery-image-lazy-loading","file":"jquery-image-lazy-loading\/jq_img_lazy_load.php"},{"slug":"crazy-lazy","file":"crazy-lazy\/crazy-lazy.php"},{"slug":"specify-image-dimensions","file":"specify-image-dimensions\/specify-image-dimensions.php"}],"auto_preload_fonts":[{"slug":"custom-fonts","file":"custom-fonts\/custom-fonts.php"}],"minify_js":[{"slug":"footer-javascript","file":"footer-javascript\/footer-javascript.php"},{"slug":"combine-js","file":"combine-js\/combine-js.php"},{"slug":"scripts-to-footerphp","file":"scripts-to-footerphp\/scripts-to-footer.php"},{"slug":"wp-js","file":"wp-js\/wp-js.php"}]}
\ No newline at end of file
+{"":[{"slug":"check-and-enable-gzip-compression","file":"check-and-enable-gzip-compression\/richards-toolbox.php"},{"slug":"remove-query-strings-from-static-resources","file":"remove-query-strings-from-static-resources\/remove-query-strings.php"},{"slug":"wpcompressor","file":"wpcompressor\/wpcompressor.php"},{"slug":"wp-super-cache","file":"wp-super-cache\/wp-cache.php"},{"slug":"hyper-cache-extended","file":"hyper-cache-extended\/plugin.php"},{"slug":"query-strings-remover","file":"query-strings-remover\/query-strings-remover.php"},{"slug":"gator-cache","file":"gator-cache\/gator-cache.php"},{"slug":"hyper-cache","file":"hyper-cache\/plugin.php"},{"slug":"wordpress-gzip-compression","file":"wordpress-gzip-compression\/ezgz.php"},{"slug":"psn-pagespeed-ninja","file":"psn-pagespeed-ninja\/pagespeedninja.php"},{"slug":"quick-cache","file":"quick-cache\/quick-cache.php"},{"slug":"super-static-cache","file":"super-static-cache\/super-static-cache.php"},{"slug":"lite-cache","file":"lite-cache\/plugin.php"},{"slug":"wp-fast-cache","file":"wp-fast-cache\/wp-fast-cache.php"},{"slug":"airlift","file":"airlift\/airlift.php"},{"slug":"gzip-ninja-speed-compression","file":"gzip-ninja-speed-compression\/gzip-ninja-speed.php"},{"slug":"swift-performance","file":"swift-performance\/performance.php"},{"slug":"force-gzip","file":"force-gzip\/force-gzip.php"},{"slug":"wp-http-compression","file":"wp-http-compression\/wp-http-compression.php"},{"slug":"swift-performance-lite","file":"swift-performance-lite\/performance.php"},{"slug":"enable-gzip-compression","file":"enable-gzip-compression\/enable-gzip-compression.php"},{"slug":"wp-fastest-cache","file":"wp-fastest-cache\/wpFastestCache.php"},{"slug":"litespeed-cache","file":"litespeed-cache\/litespeed-cache.php"},{"slug":"w3-total-cache","file":"w3-total-cache\/w3-total-cache.php"},{"slug":"add-expires-headers","file":"add-expires-headers\/add-expires-headers.php"},{"slug":"speed-booster-pack","file":"speed-booster-pack\/speed-booster-pack.php"},{"slug":"combine-css","file":"combine-css\/combine-css.php"},{"slug":"leverage-browser-caching-ninjas","file":"leverage-browser-caching-ninjas\/leverage-browser-caching-ninja.php"},{"slug":"page-optimize","file":"page-optimize\/page-optimize.php"},{"slug":"wp-performance-score-booster","file":"wp-performance-score-booster\/wp-performance-score-booster.php"},{"slug":"flexicache","file":"flexicache\/wp-plugin.php"},{"slug":"far-future-expiry-header","file":"far-future-expiry-header\/far-future-expiration.php"},{"slug":"wp-ffpc","file":"wp-ffpc\/wp-ffpc.php"},{"slug":"cache-enabler","file":"cache-enabler\/cache-enabler.php"},{"slug":"wp-optimize","file":"wp-optimize\/wp-optimize.php"},{"slug":"leverage-browser-caching","file":"leverage-browser-caching\/leverage-browser-caching.php"}],"minify_js":[{"slug":"scripts-to-footerphp","file":"scripts-to-footerphp\/scripts-to-footer.php"},{"slug":"wp-js","file":"wp-js\/wp-js.php"},{"slug":"combine-js","file":"combine-js\/combine-js.php"},{"slug":"footer-javascript","file":"footer-javascript\/footer-javascript.php"}],"minify_css||minify_js":[{"slug":"wp-super-minify","file":"wp-super-minify\/wp-super-minify.php"},{"slug":"fast-velocity-minify","file":"fast-velocity-minify\/fvm.php"},{"slug":"bwp-minify","file":"bwp-minify\/bwp-minify.php"},{"slug":"minqueue","file":"minqueue\/plugin.php"},{"slug":"dependency-minification","file":"dependency-minification\/dependency-minification.php"},{"slug":"async-js-and-css","file":"async-js-and-css\/asyncJSandCSS.php"},{"slug":"merge-minify-refresh","file":"merge-minify-refresh\/merge-minify-refresh.php"},{"slug":"scripts-gzip","file":"scripts-gzip\/scripts_gzip.php"},{"slug":"wp-minify","file":"wp-minify\/wp-minify.php"}],"control_heartbeat":[{"slug":"heartbeat-control","file":"heartbeat-control\/heartbeat-control.php"}],"lazyload":[{"slug":"advanced-lazy-load","file":"advanced-lazy-load\/advanced_lazyload.php"},{"slug":"crazy-lazy","file":"crazy-lazy\/crazy-lazy.php"},{"slug":"jquery-image-lazy-loading","file":"jquery-image-lazy-loading\/jq_img_lazy_load.php"},{"slug":"lazy-load","file":"lazy-load\/lazy-load.php"},{"slug":"bj-lazy-load","file":"bj-lazy-load\/bj-lazy-load.php"},{"slug":"specify-image-dimensions","file":"specify-image-dimensions\/specify-image-dimensions.php"}],"auto_preload_fonts":[{"slug":"custom-fonts","file":"custom-fonts\/custom-fonts.php"}],"lazyload_iframes":[{"slug":"lazy-load-for-videos","file":"lazy-load-for-videos\/codeispoetry.php"}]}
\ No newline at end of file
diff --git a/web/app/plugins/wp-rocket/dynamic-lists.json b/web/app/plugins/wp-rocket/dynamic-lists.json
index 2642cc319..37281d7f8 100644
--- a/web/app/plugins/wp-rocket/dynamic-lists.json
+++ b/web/app/plugins/wp-rocket/dynamic-lists.json
@@ -1 +1 @@
-{"rucss_inline_atts_exclusions":["rocket-lazyload-inline-css","divi-style-parent-inline-inline-css","gsf-custom-css","extra-style-inline-inline-css","woodmart-inline-css-inline-css","woodmart_shortcodes-custom-css","rs-plugin-settings-inline-css","divi-style-inline-inline-css","tcb-post-list-dynamic-style","n2-ss-","wpcf7-","siteorigin-panels-layouts-footer","xstore-inline-css-inline-css","assets.reviews.io","ezoicCSS","stk-","rocket-lazyrender-inline-css","umsMapStyles_","trx_addons-inline-styles-inline-css","greyd-custom-styles-footer"],"rucss_inline_content_exclusions":[".wp-container-",".wp-elements-","#wpv-expandable-",".custom-content-","#thb-",".et_pb_text_dap_","#gdlr-core-shape-divider","#ultib3-",".uvc-wrap-",".jet-listing-dynamic-post-",".vcex_",".wprm-advanced-list-",".adsslot_",".jnews_",".cp-info-bar.content-","#stockie-custom-","#ohio-custom-",".uid-","#wpfMainWrapper","#penci_","#penci-",".wpbs_s","#apcore_","#apress_","#zolo_",".extended-products-grid#style-",".preloader#style-preloader-",".thegem-heading-",".thegem-button-",".thegem-custom-",".thegem-popup-","#pattern-","#thegem-video-frame-","#thegem-",".qwery_inline_",".dcgd_submit_button",".irs-bar",".gallery-grid-",".cmplz-hidden","#sqbquizouter","#start_sqbquizouter",".flo-header--",".trx_addons_inline_",".wpp-cardview-compact",".e-loop-item-",".tiered-pricing-plain-text",".vc_cta3_content-container",".vc_btn-gradient-btn-",".et_pb_de_mach_title_",".et_pb_dmach_section_","img#wpstats",".ti-widget"],"defer_js_inline_exclusions":["DOMContentLoaded","document.write","window.lazyLoadOptions","N.N2_","rev_slider_wrapper","FB3D_CLIENT_LOCALE","ewww_webp_supported","anr_captcha_field_div","renderInvisibleReCaptcha","bookingInProgress"],"defer_js_external_exclusions":["gist.github.com","content.jwplatform.com","js.hsforms.net","www.uplaunch.com","google.com\/recaptcha","widget.reviews.co.uk","verify.authorize.net\/anetseal","lib\/admin\/assets\/lib\/webfont\/webfont.min.js","app.mailerlite.com","widget.reviews.io","simplybook.(.*)\/v2\/widget\/widget.js","\/wp-includes\/js\/dist\/i18n.min.js","\/wp-content\/plugins\/wpfront-notification-bar\/js\/wpfront-notification-bar(.*).js","\/wp-content\/plugins\/oxygen\/component-framework\/vendor\/aos\/aos.js","\/wp-content\/plugins\/ewww-image-optimizer\/includes\/check-webp(.min)?.js","static.mailerlite.com\/data\/(.*).js","cdn.voxpow.com\/static\/libs\/v1\/(.*).js","cdn.voxpow.com\/media\/trackers\/js\/(.*).js","use.typekit.net","www.idxhome.com","\/wp-includes\/js\/dist\/vendor\/lodash(.min)?.js","\/wp-includes\/js\/dist\/api-fetch(.min)?.js","\/wp-includes\/js\/dist\/i18n(.min)?.js","\/wp-includes\/js\/dist\/vendor\/wp-polyfill(.min)?.js","\/wp-includes\/js\/dist\/url(.min)?.js","\/wp-includes\/js\/dist\/hooks(.min)?.js","www.paypal.com\/sdk\/js","js-eu1.hsforms.net","yanovis.Voucher.js","\/carousel-upsells-and-related-product-for-woocommerce\/assets\/js\/glide.min.js","use.typekit.com","\/artale\/modules\/kirki\/assets\/webfont.js","\/api\/scripts\/lb_cs.js","js.hscta.net\/cta\/current.js","widget.refari.co","player.vdocipher.com","\/wp-content\/plugins\/wp-rocket\/assets\/js\/lcp-beacon(.min)?.js"],"delay_js_exclusions":["nowprocket","\/wp-includes\/js\/wp-embed.min.js","lazyLoadOptions","lazyLoadThumb","wp-rocket\/assets\/js\/lazyload\/(.*)","et_core_page_resource_fallback","window.\\$us === undefined","js-extra","fusionNavIsCollapsed","\/assets\/js\/smush-lazy-load","eio_lazy_vars","\\\/lazysizes(\\.min|-pre|-post)?\\.js","document\\.body\\.classList\\.remove\\(\"no-js\"\\)","document\\.documentElement\\.className\\.replace\\( 'no-js', 'js' \\)","et_animation_data","wpforms_settings","var nfForms","\/\/stats.wp.com","_stq.push","fluent_form_ff_form_instance_","cpLoadCSS","ninja_column_","var rbs_gallery_","var lepopup_","var billing_additional_field","var gtm4wp","var dataLayer_content","\/ewww-image-optimizer\/includes\/load[_-]webp(\\.min)?.js","\/ewww-image-optimizer\/includes\/check-webp(\\.min)?.js","ewww_webp_supported","\/dist\/js\/browser-redirect\/app.js","\/perfmatters\/js\/lazyload.min.js","lazyLoadInstance","scripts.mediavine.com\/tags\/","initCubePortfolio","simpli.fi","gforms_recaptcha_","\/jetpack-boost\/vendor\/automattic\/jetpack-lazy-images\/(.*)","jetpack-lazy-images-js-enabled","jetpack-boost-critical-css","wpformsRecaptchaCallback","booking-suedtirol-js","wpcp_css_disable_selection","\/gravityforms\/js\/conditional_logic.min.js","statcounter.com\/counter\/counter.js","var sc_project","\/jetpack\/jetpack_vendor\/automattic\/jetpack-lazy-images\/(.*)","\/themify-builder\/themify\/js\/modules\/fallback(\\.min)?.js","handlePixMessage","var corner_video","cdn.pixfuture.com\/hb_v2.js","cdn.pixfuture.com\/pbix.js","served-by.pixfuture.com\/www\/delivery\/ads.js","served-by.pixfuture.com\/www\/delivery\/headerbid_sticky_refresh.js","serv-vdo.pixfuture.com\/vpaid\/ads.js","wprRemoveCPCSS","window.jdgmSettings","\/photonic\/include\/js\/front-end\/nomodule\/photonic-baguettebox.min.js","\/photonic\/include\/ext\/baguettebox\/baguettebox.min.js","window.wsf_form_json_config","et_link_options_data","FuseboxPlayerAPIKey","js.hscta.net\/cta\/current.js","hbspt.cta.load","consent.cookiebot.com\/uc.js","\/woofilter-pro\/woofilterpro\/js\/ion.rangeSlider.min.js","barra.r7.com\/barra.js","rocket_css_lazyload_launch","#wpr-lazyload-bg","\/wp-content\/plugins\/wp-rocket\/assets\/js\/lcp-beacon(.min)?.js","rocket_lcp_data","rocket_beacon_data","\/wp-content\/plugins\/wp-rocket\/assets\/js\/wpr-beacon(.min)?.js","elm.style.display=\"none\""],"js_minify_external":["html5.js","show_ads.js","histats.com\/js","ws.amazon.com\/widgets","\/ads\/","intensedebate.com","scripts.chitika.net\/","jotform.com\/","gist.github.com","forms.aweber.com","video.unrulymedia.com","stats.wp.com","stats.wordpress.com","widget.rafflecopter.com","widget-prime.rafflecopter.com","releases.flowplayer.org","c.ad6media.fr","cdn.stickyadstv.com","www.smava.de","contextual.media.net","app.getresponse.com","adserver.reklamstore.com","s0.wp.com","wprp.zemanta.com","files.bannersnack.com","smarticon.geotrust.com","js.gleam.io","ir-na.amazon-adsystem.com","web.ventunotech.com","verify.authorize.net","ads.themoneytizer.com","embed.finanzcheck.de","imagesrv.adition.com","js.juicyads.com","form.jotformeu.com","speakerdeck.com","content.jwplatform.com","ads.investingchannel.com","app.ecwid.com","www.industriejobs.de","s.gravatar.com","googlesyndication.com","a.optmstr.com","a.optmnstr.com","a.opmnstr.com","adthrive.com","mediavine.com","js.hsforms.net","googleadservices.com","f.convertkit.com","recaptcha\/api.js","mailmunch.co","apps.shareaholic.com","dsms0mj1bbhn4.cloudfront.net","nutrifox.com","code.tidio.co","www.uplaunch.com","widget.reviewability.com","embed-cdn.gettyimages.com\/widgets.js","app.mailerlite.com","ck.page","cdn.jsdelivr.net\/gh\/AmauriC\/","static.klaviyo.com\/onsite\/js\/klaviyo.js","a.omappapi.com\/app\/js\/api.min.js","static.zdassets.com","feedbackcompany.com\/widgets\/feedback-company-widget.min.js","widget.gleamjs.io","phonewagon.com","simplybook.asia\/v2\/widget\/widget.js","simplybook.it\/v2\/widget\/widget.js","simplybook.me\/v2\/widget\/widget.js","static.botsrv.com\/website\/js\/widget2.36cf1446.js","static.mailerlite.com\/data\/","cdn.voxpow.com","loader.knack.com","embed.lpcontent.net\/leadboxes\/current\/embed.js","cc.cdn.civiccomputing.com\/9\/cookieControl-9.x.min.js","cse.google.com\/cse.js","kit.fontawesome.com","cdn.jsdelivr.net\/npm\/mathjax@3\/es5\/tex-mml-chtml.js","static.leadpages.net\/leadbars\/current\/embed.js","booqable.com\/v2\/booqable.js","googleoptimize.com","cdna.hubpeople.com\/js\/widget_standalone_two_modes.js","s3.tradingview.com","www.vbt.io\/ext\/vbtforms.js","cdn.callrail.com","documentcloud.adobe.com\/view-sdk\/main.js","static.cleverpush.com","js.afterpay.com","cdn.enable.co.il\/licenses\/enable-","hcaptcha.com\/1\/api.js","voucher.getavo.it\/public\/js\/yanovis.Voucher.js","js-eu1.hsforms.net","statcounter.com\/counter\/counter.js","snapppt.com","use.typekit.com","secure.gravatar.com\/js\/gprofiles.js","cdn.jsdelivr.net\/npm\/hockeystack","widget.prod.faslet.net","ga.getresponse.com\/script\/ga.js","cognitoforms.com","usercentrics.eu","cdn.amcharts.com","umami","cdn.popt.in\/pixel.js","m2d.m2.ai","pubguru.net","trustindex.io","cdnjs.cloudflare.com\/ajax\/libs\/prism\/","podigee-podcast-player.js","tarteaucitron.io\/load.js","osm.klarnaservices.com\/lib.js","mein.clickskeks.at\/app.js","barra.r7.com\/barra.js","widget.refari.co","widget.reviews.co.uk","player.vdocipher.com","www.instagram.com\/embed.js","smartframe.io","challenges.cloudflare.com\/turnstile\/","script.roboassist.ai","cdn.hu-manity.co","daumcdn.net\/mapjsapi\/bundle\/postcode\/prod\/postcode.v2.js","consent.cookiebot.com","umstats.tools.coolw.xyz","powerad.ai","leadconnectorhq.com","buzzsprout.com","embed.reddit.com\/widgets.js","onfastspring.com","widget.superchat.de\/snippet.js"],"js_move_after_combine":["map_fusion_map_","ec:addProduct","ec:addImpression","clear_better_facebook_comments","vc-row-destroy-equal-heights-","dfd-icon-list-","SFM_template","WLTChangeState","wlt_star_","wlt_pop_distance_","smart_list_tip","gd-wgt-pagi-","data-rf-id=","tvc_po=","scrapeazon","startclock","it_logo_field_owl-box_","td_live_css_uid","wpvl_paramReplace","tdAjaxCount","mec_skin_","_wca","_taboola","fbq('trackCustom'","fbq('track'","data.token","sharrre","dfads_ajax_load_ads","tie_postviews","wmp_update","h5ab-print-article","gform_ajax_frame_","gform_post_render","mts_view_count","act_css_tooltip","window.SLB","wpt_view_count","var dateNow","gallery_product_",".flo-block-slideshow-","data='api-key=ct-","ip_common_function()","(\"style#gsf-custom-css\").append","a3revWCDynamicGallery_","#owl-carousel-instagram-","window.FlowFlowOpts","jQuery('.td_uid_","jQuery(\".slider-","#dfd-vcard-widget-","#sf-instagram-widget-",".woocommerce-tabs-","penci_megamenu__","vc_prepareHoverBox","wp-temp-form-div","_wswebinarsystem_already_","#views-extra-css\").text","fusetag.setTargeting","hit.uptrendsdata.com","callback:window.renderBadge","test_run_nf_conditional_logic","cb_nombre","$('.fl-node-","function($){google_maps_","$(\"#myCarousel","et_animation_data=","current_url=\"","CustomEvent.prototype=window.Event.prototype","electro-wc-product-gallery","woof_is_mobile","jQuery('.videonextup","wpp_params","us.templateDirectoryUri=",".fat-gallery-item",".ratingbox","user_rating.prototype.eraseCookie","test_run_nf_conditional","dpsp-networks-btns-wrapper","pa_woo_product_info","sharing_enabled_on_post_via_metabox","#product-search-field-","GOTMLS_login_offset","berocket_aapf_time_to_fix_products_style","window.vc_googleMapsPointer","sinceID_","#ut-background-video-ut-section","+window.comment_tab_width+","dfd-button-hover-in","wpseo-address-wrapper","platform.stumbleupon.com","#woo_pp_ec_button_mini_cart","#supercarousel","blockClass","tdbMenuItem","tdbSearchItem","best_seller_badge","jQuery('#product-top-bar","fb_desc-","FC_regenerate_captcha","wp_post_blocks_vars.listed_posts=[","captcha-hash","mapdata={",".ywpc-char-",").countdowntimer(","jQuery(\"#td_uid_","find('#td_uid_","variation_estimate_msg"],"js_excluded_inline":["document.write","google_ad","edToolbar","gtag","_gaq.push","_gaLt","GoogleAnalyticsObject","syntaxhighlighter","adsbygoogle","ci_cap_","_stq","nonce","post_id","LogHuman","idcomments_acct","ch_client","sc_online_t","_stq","bannersnack_embed","vtn_player_type","ven_video_key","ANS_customer_id","tdBlock","tdLocalCache","wpRestNonce","\"url\":","lazyLoadOptions","adthrive","loadCSS","google_tag_params","clicky_custom","clicky_site_ids","NSLPopupCenter","_paq","gtm","dataLayer","RecaptchaLoad","WPCOM_sharing_counts","jetpack_remote_comment","subscribe-field","contextly","_mmunch","gt_request_uri","doGTranslate","docTitle","bs_ajax_paginate_","bs_deferred_loading_","theChampRedirectionUrl","theChampFBCommentUrl","theChampTwitterRedirect","theChampRegRedirectionUrl","ESSB_CACHE_URL","oneall_social_login_providers_","betterads_screen_width","woocommerce_wishlist_add_to_wishlist_url","arf_conditional_logic","heateorSsHorSharingShortUrl","TL_Const","bimber_front_microshare","setAttribute(\"id\"","setAttribute( \"id\"","TribeEventsPro","peepsotimedata","wphc_data","hc_rand_id","RBL_ADD","AfsAnalyticsObject","_thriveCurrentPost","esc_login_url","fwduvpMainPlaylist","Bibblio.initRelatedContent","showUFC()","#iphorm-","#fancy-","ult-carousel-","theChampLJAuthUrl","f._fbq","Insticator","w2dc_js_objects","cherry_ajax","ad_block_","elementorFrontendConfig","zeen_","disqusIdentifier","currentAjaxUrl","geodir_event_call_calendar_","atatags-","hbspt.forms.create","function(c,h,i,m,p)","dataTable({","rankMath = {","_atrk_opts","quicklinkOptions","ct_checkjs_","WP_Statistics_http","penci_block_","omapi_localized","omapi_data","OptinMonsterApp","tminusnow","nfForms","galleries.gallery_","wcj_evt.prodID","advads_tracking_ads","advadsGATracking.postContext","woopack_config","ulp_content_id","wp-cumulus\/tagcloud.swf?r=","ctSetCookie('ct_checkjs'","woof_really_curr_tax","uLogin.customInit","i18n_no_matching_variations_text","alsp_map_markers_attrs","var inc_opt =","iworks_upprev","yith_wcevti_tickets","window.metrilo.ensure_cbuid","metrilo.event","wordpress_page_root","wcct_info","Springbot.product_id","pysWooProductData","dfd-heading","owl=$(\"#","penci_megamenu","fts_security","algoliaAutocomplete","avia_framework_globals","tabs.easyResponsiveTabs","searchlocationHeader","yithautocomplete","data-parallax-speed","currency_data=","cedexisData","function reenableButton","#wpnbio-show","e.Newsletter2GoTrackingObject","var categories_","\"+nRemaining+\"","cartsguru_cart_token","after_share_easyoptin","location_data.push","thirstyFunctions.isThirstyLink","styles: ' #custom-menu-","function svc_center_","#svc_carousel2_container_","advads.move","elementid","advads_has_ads","wpseo_map_init","mdf_current_page_url","tptn_tracker","dpsp_pin_button_data","searchwp_live_search_params","wpp_params","top.location,thispage","selection+pagelink","ic_window_resolution","PHP.wp_p_id","ShopifyBuy.UI.onReady(client)","orig_request_uri","gie.widgets.load","Adman.Flash","PHP.wp_p_id","window.broadstreetKeywords","var productId =","var flatsomeVars","wc_product_block_data","static.mailerlite.com","amzn_assoc","_bs_getParameterByName","_stq.push","h._remove","var FlowFlowOpts","var WCPFData =","var _beeketing","var _statcounter","var actions =","var current_url","var object_name","var the_ajax_script","var wc_cart_fragments_params","var woocommerce_params","var wpml_cookies","wc_add_to_cart_params","window.broadstreetKeywords","window.wc_ga_pro.available_gateways","xa.prototype","HOUZEZ_ajaxcalls_vars","w2dc_maps_objects","w2dc_controller_args_array","w2dc_map_markers_attrs","YT.Player","WPFC.data","function current_video_","var videodiv","var slider_wppasrotate","wppas_ga","var blockClass","tarteaucitron","pw_brand_product_list","tminusCountDown","pysWooSelectContentData","wpvq_ans89733","_isp_version","price_range_data","window.FeedbackCompanyWidgets","woocs_current_currency","woo_variation_swatches_options","woocommerce_price_slider_params","scriptParams","form-adv-pagination","borlabsCookiePrioritize","urls_wpwidgetpolylang","quickViewNonce","frontendscripts_params","nj-facebook-messenger","var fb_mess_position","init_particles_row_background_script","setREVStartSize","fl-node","PPAccordion","soliloquy_","wprevpublicjs_script_vars","DTGS_NONCE_FRONTEND","et_animation_data","archives-dropdown","loftloaderCache","SmartSliderSimple","var nectarLove","var incOpt","RocketBrowserCompatibilityChecker","RocketPreloadLinksConfig","placementVersionId","var useEdit","var DTGS_NONCE_FRONTEND","n2jQuery","et_core_api_spam_recaptcha","cnArgs","__CF$cv$params","trustbox_settings","aepro","cdn.jst.ai","w2dc_fields_in_categories","jetMenuPublicSettings","JetTricksSettings","aepc_pixel","avadaWooCommerceVars","var isb","fcaPcPost","csrf_token","icwp_wpsf_vars_lpantibot","wpvViewHead","ed_school_plugin","aps_comp_","guaven_woos","__lm_redirect_to","__wpdm_view_count","bookacti.booking_system","nfFrontEnd","view_quote_cart_link","__eae_decode_emails","divioverlays_ajaxurl","var _EPYT_","#ins-heading-","#ins-button-","tve_frontend_options","lb24.src","amazon_Login_accessToken","porto_infinite_scroll",".adace-loader-","adace_load_","tagGroupsAccordiontaggroupscloudaccordion","tagGroupsTabstaggroupscloudtabs","jrRelatedWidgets","UNCODE.initRow","amp_mobile_redirect_disabled","wpgdprcData","wpml_browser_redirect_params","swPreRegister","kboard_settings","ct_ultimate_gdpr_cookie","wcpv_registration_local","www.idxhome.com","arf_footer_cl_logic_call","reload_attached_coupons","var ftpp","forminatorFront","_EPYT_","edd_free_downloads_vars","edd_stripe_vars","var ASP","ecwidOriginalTitle","defaultCategoryId","translation-revision-date","google_conversion_id","hbspt","var marker_locations_","var AdmMyAjax","ifso_page_url","referrer_for_pageload","WoocommerceWidget\/woocommerceWidget.js","var ht_ctc_chat_var","spuvar","var wpilFrontend","urls_polylangREPLACETOID","e.setAttribute('unselectable',on);","try{Typekit.load","iMapsData","var wpforms_user_journey","rocket_lazyload_css_data","wcStoreApiNonceTimestamp","createNonceMiddleware","pbidHash","wcBlocksMiddlewareConfig"],"cache_ignored_parameters":["utm_source","utm_medium","utm_campaign","utm_expid","utm_term","utm_content","utm_id","utm_source_platform","utm_creative_format","utm_marketing_tactic","mtm_source","mtm_medium","mtm_campaign","mtm_keyword","mtm_cid","mtm_content","pk_source","pk_medium","pk_campaign","pk_keyword","pk_cid","pk_content","fb_action_ids","fb_action_types","fb_source","fbclid","campaignid","adgroupid","adid","gclid","age-verified","ao_noptimize","usqp","cn-reloaded","_ga","sscid","gclsrc","_gl","mc_cid","mc_eid","_bta_tid","_bta_c","trk_contact","trk_msg","trk_module","trk_sid","gdfms","gdftrk","gdffi","_ke","_kx","redirect_log_mongo_id","redirect_mongo_id","sb_referer_host","mkwid","pcrid","ef_id","s_kwcid","msclkid","dm_i","epik","pp","gbraid","wbraid","ssp_iabi","ssp_iaba","gad","vgo_ee","gad_source","gad_campaignid","onlywprocket","srsltid","gadid","fbadid"],"preload_exclusions":["void\\(.*;","(.*)__trashed(.*)","\/jet-menu\/(.*)","\/jet-popup\/(.*)","(.*)printButton.href(.*)"],"exclude_js_files":["\/wp-includes\/js\/dist\/i18n.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/html2canvas.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/pdf.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/three.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/3d-flip-book.min.js","\/google-site-kit\/dist\/assets\/js\/(.*).js","\/wp-live-chat-support\/public\/js\/callus(.*).js","\/borlabs-cookie\/assets\/javascript\/(.*).js","\/wp-content\/plugins\/wp-rocket\/assets\/js\/lcp-beacon(.min)?.js","\/woocommerce-bookings\/dist\/frontend.js","\/plugins\/mapify(.*)\/assets\/js\/dist\/bundle.js","\/wp-content\/plugins\/wp-rocket\/assets\/js\/wpr-beacon(.min)?.js","\/wp-recipe-maker-premium\/dist\/public-premium.js","\/plugins\/wp-recipe-maker\/(.*)"],"staging_domains":[".wpengine.com",".wpenginepowered.com",".pantheonsite.io",".flywheelsites.com",".flywheelstaging.com",".kinsta.com",".kinsta.cloud",".cloudwaysapps.com",".azurewebsites.net",".wpserveur.site","-liquidwebsites.com",".myftpupload.com",".dream.press",".sg-host.com",".platformsh.site",".wpstage.net",".bigscoots-staging.com",".wpsc.site",".runcloud.link",".onrocket.site",".singlestaging.com",".myraidbox.de",".instawp.xyz",".instawp.co",".instawp.link",".instawp.app",".hstgr.cloud",".myhostpoint.ch",".wpcomstaging.com",".nxcli.io",".nxcli.net",".lyricalstaging.com",".myrdbx.io",".staging.tempurl.host",".staging.mysites.io",".updraftclone.com",".easywp.com",".preview.infomaniak.website",".wp-cloud.dev",".wpsc.dev",".wptiger.fr",".amazonaws.com",".wpdns.site",".cloudwayssites.com",".mystagingwebsite.com",".hostingersite.com",".ngrok.io",".stage.site",".ksysweb.com",".dev.cc",".docksal",".lndo.site",".local",".localhost",".test",".wpstagecoach.com",".preprod",".ddev.site","my.wordpress.net"],"exclude_js_template":["type=\"module\"","data-minify=","data-no-minify="],"lazy_rendering_exclusions":["class=\"parallex\"","class=\"avada-footer-scripts\"","id=\"rhslidingMenu\"","class=\"logobsmallt\"","id=\"ast-mobile-popup-wrapper\"","id=\"cmplz-cookiebanner-container\"","class=\"wf-container-footer\"","class=\"de-mega-menu-container\"","data-nosnippet","class=\"floating-menu float-menu-","id=\"jeg_off_canvas\"","id=\"dipi-popup-maker-container\"","class=\"static-position vendor_hidden\"","class=\"jws-mini-cart-wrapper\"","class=\"home-widgets-section\"","elementor-location-floating_buttons","class=\"xoo-el-container xoo-el-style-popup\"","class=\"off-canvas-wrapper\"","id=\"ast-hb-account-login-wrap\"","id=\"ak_drawer_holder\"","id=\"brx-footer\"","elementor-location-footer","class=\"ts-floating-sidebar\"","id=\"yith-wacp-popup\"","class=\"fl-builder-content fl-builder-content-30 fl-builder-global-templates-locked\"","class=\"mfn-footer-tmpl mfn-footer\"","class=\"fusion-tb-footer fusion-footer","class=\"wt-cli-cookie-bar-container\"","id=\"lazy-loading-point\"","class=\"cp-popup-container","class=\"xoo-wsc-markup","class=\"xoo-wsc-modal","class=\"breakdance\"","class=\"footer-container color-scheme-light\"","class=\"sticky-cta\"","class=\"footer-booking-widget","rh_sticky_wrapper_footer","class=\"sticky-add-to-cart-wrapper","id=\"wcpa_img_preview\"","id=\"wpca-lay-out-wrapper\"","class=\"site-footer\"","class=\"atbs-layout-split atbs-block","wll-launcher-button-container","id=\"wll-site-launcher\"","class=\"mobile_nav","id=\"nav","class=\"nav","no-wpr-lazyrender"],"host_fonts":[],"preload_fonts_exclusions":["api.fontshare.com","cdn.fontshare.com"],"preconnect_external_domains_exclusions":["static.cloudflareinsights.com","rel=\"profile\"","rel=\"preconnect\"","rel=\"dns-prefetch\"","rel=\"icon\""],"mixpanel_tracked_settings":["async_css","async_css_mobile","auto_preload_fonts","automatic_cleanup_frequency","cache_logged_user","cache_mobile","cache_purge_pages","cache_query_strings","cache_reject_cookies","cache_reject_ua","cache_reject_uri","cache_ssl","cdn","cdn_cnames","cdn_reject_files","cdn_zone","control_heartbeat","critical_css","database_all_transients","database_auto_drafts","database_optimize_tables","database_revisions","database_spam_comments","database_trashed_comments","database_trashed_posts","defer_all_js","delay_js","delay_js_exclusions","delay_js_exclusions_selected","delay_js_exclusions_selected_exclusions","delay_js_execution_safe_mode","dns_prefetch","do_caching_mobile_files","do_cloudflare","emoji","exclude_css","exclude_defer_js","exclude_inline_js","exclude_js","exclude_lazyload","heartbeat_admin_behavior","heartbeat_editor_behavior","heartbeat_site_behavior","host_fonts_locally","image_dimensions","lazyload","lazyload_css_bg_img","lazyload_iframes","lazyload_youtube","manual_preload","minify_concatenate_css","minify_concatenate_js","minify_css","minify_google_fonts","minify_js","optimize_css_delivery","performance_monitoring","performance_monitoring_schedule_frequency","preload_excluded_uri","preload_links","previous_version","purge_cron_interval","purge_cron_unit","remove_unused_css","remove_unused_css_safelist","schedule_automatic_cleanup","sucury_waf_cache_sync","varnish_auto_purge","version","wpr-js-tips"],"rocket_insights_add_homepage_expiry_interval":116}
\ No newline at end of file
+{"rucss_inline_atts_exclusions":["rocket-lazyload-inline-css","divi-style-parent-inline-inline-css","gsf-custom-css","extra-style-inline-inline-css","woodmart-inline-css-inline-css","woodmart_shortcodes-custom-css","rs-plugin-settings-inline-css","divi-style-inline-inline-css","tcb-post-list-dynamic-style","n2-ss-","wpcf7-","siteorigin-panels-layouts-footer","xstore-inline-css-inline-css","assets.reviews.io","ezoicCSS","stk-","rocket-lazyrender-inline-css","umsMapStyles_","trx_addons-inline-styles-inline-css","greyd-custom-styles-footer"],"rucss_inline_content_exclusions":[".wp-container-",".wp-elements-","#wpv-expandable-",".custom-content-","#thb-",".et_pb_text_dap_","#gdlr-core-shape-divider","#ultib3-",".uvc-wrap-",".jet-listing-dynamic-post-",".vcex_",".wprm-advanced-list-",".adsslot_",".jnews_",".cp-info-bar.content-","#stockie-custom-","#ohio-custom-",".uid-","#wpfMainWrapper","#penci_","#penci-",".wpbs_s","#apcore_","#apress_","#zolo_",".extended-products-grid#style-",".preloader#style-preloader-",".thegem-heading-",".thegem-button-",".thegem-custom-",".thegem-popup-","#pattern-","#thegem-video-frame-","#thegem-",".qwery_inline_",".dcgd_submit_button",".irs-bar",".gallery-grid-",".cmplz-hidden","#sqbquizouter","#start_sqbquizouter",".flo-header--",".trx_addons_inline_",".wpp-cardview-compact",".e-loop-item-",".tiered-pricing-plain-text",".vc_cta3_content-container",".vc_btn-gradient-btn-",".et_pb_de_mach_title_",".et_pb_dmach_section_","img#wpstats",".ti-widget"],"defer_js_inline_exclusions":["DOMContentLoaded","document.write","window.lazyLoadOptions","N.N2_","rev_slider_wrapper","FB3D_CLIENT_LOCALE","ewww_webp_supported","anr_captcha_field_div","renderInvisibleReCaptcha","bookingInProgress"],"defer_js_external_exclusions":["gist.github.com","content.jwplatform.com","js.hsforms.net","www.uplaunch.com","google.com\/recaptcha","widget.reviews.co.uk","verify.authorize.net\/anetseal","lib\/admin\/assets\/lib\/webfont\/webfont.min.js","app.mailerlite.com","widget.reviews.io","simplybook.(.*)\/v2\/widget\/widget.js","\/wp-includes\/js\/dist\/i18n.min.js","\/wp-content\/plugins\/wpfront-notification-bar\/js\/wpfront-notification-bar(.*).js","\/wp-content\/plugins\/oxygen\/component-framework\/vendor\/aos\/aos.js","\/wp-content\/plugins\/ewww-image-optimizer\/includes\/check-webp(.min)?.js","static.mailerlite.com\/data\/(.*).js","cdn.voxpow.com\/static\/libs\/v1\/(.*).js","cdn.voxpow.com\/media\/trackers\/js\/(.*).js","use.typekit.net","www.idxhome.com","\/wp-includes\/js\/dist\/vendor\/lodash(.min)?.js","\/wp-includes\/js\/dist\/api-fetch(.min)?.js","\/wp-includes\/js\/dist\/i18n(.min)?.js","\/wp-includes\/js\/dist\/vendor\/wp-polyfill(.min)?.js","\/wp-includes\/js\/dist\/url(.min)?.js","\/wp-includes\/js\/dist\/hooks(.min)?.js","www.paypal.com\/sdk\/js","js-eu1.hsforms.net","yanovis.Voucher.js","\/carousel-upsells-and-related-product-for-woocommerce\/assets\/js\/glide.min.js","use.typekit.com","\/artale\/modules\/kirki\/assets\/webfont.js","\/api\/scripts\/lb_cs.js","js.hscta.net\/cta\/current.js","widget.refari.co","player.vdocipher.com","\/wp-content\/plugins\/wp-rocket\/assets\/js\/lcp-beacon(.min)?.js"],"delay_js_exclusions":["nowprocket","\/wp-includes\/js\/wp-embed.min.js","lazyLoadOptions","lazyLoadThumb","wp-rocket\/assets\/js\/lazyload\/(.*)","et_core_page_resource_fallback","window.\\$us === undefined","js-extra","fusionNavIsCollapsed","\/assets\/js\/smush-lazy-load","eio_lazy_vars","\\\/lazysizes(\\.min|-pre|-post)?\\.js","document\\.body\\.classList\\.remove\\(\"no-js\"\\)","document\\.documentElement\\.className\\.replace\\( 'no-js', 'js' \\)","et_animation_data","wpforms_settings","var nfForms","\/\/stats.wp.com","_stq.push","fluent_form_ff_form_instance_","cpLoadCSS","ninja_column_","var rbs_gallery_","var lepopup_","var billing_additional_field","var gtm4wp","var dataLayer_content","\/ewww-image-optimizer\/includes\/load[_-]webp(\\.min)?.js","\/ewww-image-optimizer\/includes\/check-webp(\\.min)?.js","ewww_webp_supported","\/dist\/js\/browser-redirect\/app.js","\/perfmatters\/js\/lazyload.min.js","lazyLoadInstance","scripts.mediavine.com\/tags\/","initCubePortfolio","simpli.fi","gforms_recaptcha_","\/jetpack-boost\/vendor\/automattic\/jetpack-lazy-images\/(.*)","jetpack-lazy-images-js-enabled","jetpack-boost-critical-css","wpformsRecaptchaCallback","booking-suedtirol-js","wpcp_css_disable_selection","\/gravityforms\/js\/conditional_logic.min.js","statcounter.com\/counter\/counter.js","var sc_project","\/jetpack\/jetpack_vendor\/automattic\/jetpack-lazy-images\/(.*)","\/themify-builder\/themify\/js\/modules\/fallback(\\.min)?.js","handlePixMessage","var corner_video","cdn.pixfuture.com\/hb_v2.js","cdn.pixfuture.com\/pbix.js","served-by.pixfuture.com\/www\/delivery\/ads.js","served-by.pixfuture.com\/www\/delivery\/headerbid_sticky_refresh.js","serv-vdo.pixfuture.com\/vpaid\/ads.js","wprRemoveCPCSS","window.jdgmSettings","\/photonic\/include\/js\/front-end\/nomodule\/photonic-baguettebox.min.js","\/photonic\/include\/ext\/baguettebox\/baguettebox.min.js","window.wsf_form_json_config","et_link_options_data","FuseboxPlayerAPIKey","js.hscta.net\/cta\/current.js","hbspt.cta.load","consent.cookiebot.com\/uc.js","\/woofilter-pro\/woofilterpro\/js\/ion.rangeSlider.min.js","barra.r7.com\/barra.js","rocket_css_lazyload_launch","#wpr-lazyload-bg","\/wp-content\/plugins\/wp-rocket\/assets\/js\/lcp-beacon(.min)?.js","rocket_lcp_data","rocket_beacon_data","\/wp-content\/plugins\/wp-rocket\/assets\/js\/wpr-beacon(.min)?.js","elm.style.display=\"none\""],"js_minify_external":["html5.js","show_ads.js","histats.com\/js","ws.amazon.com\/widgets","\/ads\/","intensedebate.com","scripts.chitika.net\/","jotform.com\/","gist.github.com","forms.aweber.com","video.unrulymedia.com","stats.wp.com","stats.wordpress.com","widget.rafflecopter.com","widget-prime.rafflecopter.com","releases.flowplayer.org","c.ad6media.fr","cdn.stickyadstv.com","www.smava.de","contextual.media.net","app.getresponse.com","adserver.reklamstore.com","s0.wp.com","wprp.zemanta.com","files.bannersnack.com","smarticon.geotrust.com","js.gleam.io","ir-na.amazon-adsystem.com","web.ventunotech.com","verify.authorize.net","ads.themoneytizer.com","embed.finanzcheck.de","imagesrv.adition.com","js.juicyads.com","form.jotformeu.com","speakerdeck.com","content.jwplatform.com","ads.investingchannel.com","app.ecwid.com","www.industriejobs.de","s.gravatar.com","googlesyndication.com","a.optmstr.com","a.optmnstr.com","a.opmnstr.com","adthrive.com","mediavine.com","js.hsforms.net","googleadservices.com","f.convertkit.com","recaptcha\/api.js","mailmunch.co","apps.shareaholic.com","dsms0mj1bbhn4.cloudfront.net","nutrifox.com","code.tidio.co","www.uplaunch.com","widget.reviewability.com","embed-cdn.gettyimages.com\/widgets.js","app.mailerlite.com","ck.page","cdn.jsdelivr.net\/gh\/AmauriC\/","static.klaviyo.com\/onsite\/js\/klaviyo.js","a.omappapi.com\/app\/js\/api.min.js","static.zdassets.com","feedbackcompany.com\/widgets\/feedback-company-widget.min.js","widget.gleamjs.io","phonewagon.com","simplybook.asia\/v2\/widget\/widget.js","simplybook.it\/v2\/widget\/widget.js","simplybook.me\/v2\/widget\/widget.js","static.botsrv.com\/website\/js\/widget2.36cf1446.js","static.mailerlite.com\/data\/","cdn.voxpow.com","loader.knack.com","embed.lpcontent.net\/leadboxes\/current\/embed.js","cc.cdn.civiccomputing.com\/9\/cookieControl-9.x.min.js","cse.google.com\/cse.js","kit.fontawesome.com","cdn.jsdelivr.net\/npm\/mathjax@3\/es5\/tex-mml-chtml.js","static.leadpages.net\/leadbars\/current\/embed.js","booqable.com\/v2\/booqable.js","googleoptimize.com","cdna.hubpeople.com\/js\/widget_standalone_two_modes.js","s3.tradingview.com","www.vbt.io\/ext\/vbtforms.js","cdn.callrail.com","documentcloud.adobe.com\/view-sdk\/main.js","static.cleverpush.com","js.afterpay.com","cdn.enable.co.il\/licenses\/enable-","hcaptcha.com\/1\/api.js","voucher.getavo.it\/public\/js\/yanovis.Voucher.js","js-eu1.hsforms.net","statcounter.com\/counter\/counter.js","snapppt.com","use.typekit.com","secure.gravatar.com\/js\/gprofiles.js","cdn.jsdelivr.net\/npm\/hockeystack","widget.prod.faslet.net","ga.getresponse.com\/script\/ga.js","cognitoforms.com","usercentrics.eu","cdn.amcharts.com","umami","cdn.popt.in\/pixel.js","m2d.m2.ai","pubguru.net","trustindex.io","cdnjs.cloudflare.com\/ajax\/libs\/prism\/","podigee-podcast-player.js","tarteaucitron.io\/load.js","osm.klarnaservices.com\/lib.js","mein.clickskeks.at\/app.js","barra.r7.com\/barra.js","widget.refari.co","widget.reviews.co.uk","player.vdocipher.com","www.instagram.com\/embed.js","smartframe.io","challenges.cloudflare.com\/turnstile\/","script.roboassist.ai","cdn.hu-manity.co","daumcdn.net\/mapjsapi\/bundle\/postcode\/prod\/postcode.v2.js","consent.cookiebot.com","umstats.tools.coolw.xyz","powerad.ai","leadconnectorhq.com","buzzsprout.com","embed.reddit.com\/widgets.js","onfastspring.com","widget.superchat.de\/snippet.js"],"js_move_after_combine":["map_fusion_map_","ec:addProduct","ec:addImpression","clear_better_facebook_comments","vc-row-destroy-equal-heights-","dfd-icon-list-","SFM_template","WLTChangeState","wlt_star_","wlt_pop_distance_","smart_list_tip","gd-wgt-pagi-","data-rf-id=","tvc_po=","scrapeazon","startclock","it_logo_field_owl-box_","td_live_css_uid","wpvl_paramReplace","tdAjaxCount","mec_skin_","_wca","_taboola","fbq('trackCustom'","fbq('track'","data.token","sharrre","dfads_ajax_load_ads","tie_postviews","wmp_update","h5ab-print-article","gform_ajax_frame_","gform_post_render","mts_view_count","act_css_tooltip","window.SLB","wpt_view_count","var dateNow","gallery_product_",".flo-block-slideshow-","data='api-key=ct-","ip_common_function()","(\"style#gsf-custom-css\").append","a3revWCDynamicGallery_","#owl-carousel-instagram-","window.FlowFlowOpts","jQuery('.td_uid_","jQuery(\".slider-","#dfd-vcard-widget-","#sf-instagram-widget-",".woocommerce-tabs-","penci_megamenu__","vc_prepareHoverBox","wp-temp-form-div","_wswebinarsystem_already_","#views-extra-css\").text","fusetag.setTargeting","hit.uptrendsdata.com","callback:window.renderBadge","test_run_nf_conditional_logic","cb_nombre","$('.fl-node-","function($){google_maps_","$(\"#myCarousel","et_animation_data=","current_url=\"","CustomEvent.prototype=window.Event.prototype","electro-wc-product-gallery","woof_is_mobile","jQuery('.videonextup","wpp_params","us.templateDirectoryUri=",".fat-gallery-item",".ratingbox","user_rating.prototype.eraseCookie","test_run_nf_conditional","dpsp-networks-btns-wrapper","pa_woo_product_info","sharing_enabled_on_post_via_metabox","#product-search-field-","GOTMLS_login_offset","berocket_aapf_time_to_fix_products_style","window.vc_googleMapsPointer","sinceID_","#ut-background-video-ut-section","+window.comment_tab_width+","dfd-button-hover-in","wpseo-address-wrapper","platform.stumbleupon.com","#woo_pp_ec_button_mini_cart","#supercarousel","blockClass","tdbMenuItem","tdbSearchItem","best_seller_badge","jQuery('#product-top-bar","fb_desc-","FC_regenerate_captcha","wp_post_blocks_vars.listed_posts=[","captcha-hash","mapdata={",".ywpc-char-",").countdowntimer(","jQuery(\"#td_uid_","find('#td_uid_","variation_estimate_msg"],"js_excluded_inline":["document.write","google_ad","edToolbar","gtag","_gaq.push","_gaLt","GoogleAnalyticsObject","syntaxhighlighter","adsbygoogle","ci_cap_","_stq","nonce","post_id","LogHuman","idcomments_acct","ch_client","sc_online_t","_stq","bannersnack_embed","vtn_player_type","ven_video_key","ANS_customer_id","tdBlock","tdLocalCache","wpRestNonce","\"url\":","lazyLoadOptions","adthrive","loadCSS","google_tag_params","clicky_custom","clicky_site_ids","NSLPopupCenter","_paq","gtm","dataLayer","RecaptchaLoad","WPCOM_sharing_counts","jetpack_remote_comment","subscribe-field","contextly","_mmunch","gt_request_uri","doGTranslate","docTitle","bs_ajax_paginate_","bs_deferred_loading_","theChampRedirectionUrl","theChampFBCommentUrl","theChampTwitterRedirect","theChampRegRedirectionUrl","ESSB_CACHE_URL","oneall_social_login_providers_","betterads_screen_width","woocommerce_wishlist_add_to_wishlist_url","arf_conditional_logic","heateorSsHorSharingShortUrl","TL_Const","bimber_front_microshare","setAttribute(\"id\"","setAttribute( \"id\"","TribeEventsPro","peepsotimedata","wphc_data","hc_rand_id","RBL_ADD","AfsAnalyticsObject","_thriveCurrentPost","esc_login_url","fwduvpMainPlaylist","Bibblio.initRelatedContent","showUFC()","#iphorm-","#fancy-","ult-carousel-","theChampLJAuthUrl","f._fbq","Insticator","w2dc_js_objects","cherry_ajax","ad_block_","elementorFrontendConfig","zeen_","disqusIdentifier","currentAjaxUrl","geodir_event_call_calendar_","atatags-","hbspt.forms.create","function(c,h,i,m,p)","dataTable({","rankMath = {","_atrk_opts","quicklinkOptions","ct_checkjs_","WP_Statistics_http","penci_block_","omapi_localized","omapi_data","OptinMonsterApp","tminusnow","nfForms","galleries.gallery_","wcj_evt.prodID","advads_tracking_ads","advadsGATracking.postContext","woopack_config","ulp_content_id","wp-cumulus\/tagcloud.swf?r=","ctSetCookie('ct_checkjs'","woof_really_curr_tax","uLogin.customInit","i18n_no_matching_variations_text","alsp_map_markers_attrs","var inc_opt =","iworks_upprev","yith_wcevti_tickets","window.metrilo.ensure_cbuid","metrilo.event","wordpress_page_root","wcct_info","Springbot.product_id","pysWooProductData","dfd-heading","owl=$(\"#","penci_megamenu","fts_security","algoliaAutocomplete","avia_framework_globals","tabs.easyResponsiveTabs","searchlocationHeader","yithautocomplete","data-parallax-speed","currency_data=","cedexisData","function reenableButton","#wpnbio-show","e.Newsletter2GoTrackingObject","var categories_","\"+nRemaining+\"","cartsguru_cart_token","after_share_easyoptin","location_data.push","thirstyFunctions.isThirstyLink","styles: ' #custom-menu-","function svc_center_","#svc_carousel2_container_","advads.move","elementid","advads_has_ads","wpseo_map_init","mdf_current_page_url","tptn_tracker","dpsp_pin_button_data","searchwp_live_search_params","wpp_params","top.location,thispage","selection+pagelink","ic_window_resolution","PHP.wp_p_id","ShopifyBuy.UI.onReady(client)","orig_request_uri","gie.widgets.load","Adman.Flash","PHP.wp_p_id","window.broadstreetKeywords","var productId =","var flatsomeVars","wc_product_block_data","static.mailerlite.com","amzn_assoc","_bs_getParameterByName","_stq.push","h._remove","var FlowFlowOpts","var WCPFData =","var _beeketing","var _statcounter","var actions =","var current_url","var object_name","var the_ajax_script","var wc_cart_fragments_params","var woocommerce_params","var wpml_cookies","wc_add_to_cart_params","window.broadstreetKeywords","window.wc_ga_pro.available_gateways","xa.prototype","HOUZEZ_ajaxcalls_vars","w2dc_maps_objects","w2dc_controller_args_array","w2dc_map_markers_attrs","YT.Player","WPFC.data","function current_video_","var videodiv","var slider_wppasrotate","wppas_ga","var blockClass","tarteaucitron","pw_brand_product_list","tminusCountDown","pysWooSelectContentData","wpvq_ans89733","_isp_version","price_range_data","window.FeedbackCompanyWidgets","woocs_current_currency","woo_variation_swatches_options","woocommerce_price_slider_params","scriptParams","form-adv-pagination","borlabsCookiePrioritize","urls_wpwidgetpolylang","quickViewNonce","frontendscripts_params","nj-facebook-messenger","var fb_mess_position","init_particles_row_background_script","setREVStartSize","fl-node","PPAccordion","soliloquy_","wprevpublicjs_script_vars","DTGS_NONCE_FRONTEND","et_animation_data","archives-dropdown","loftloaderCache","SmartSliderSimple","var nectarLove","var incOpt","RocketBrowserCompatibilityChecker","RocketPreloadLinksConfig","placementVersionId","var useEdit","var DTGS_NONCE_FRONTEND","n2jQuery","et_core_api_spam_recaptcha","cnArgs","__CF$cv$params","trustbox_settings","aepro","cdn.jst.ai","w2dc_fields_in_categories","jetMenuPublicSettings","JetTricksSettings","aepc_pixel","avadaWooCommerceVars","var isb","fcaPcPost","csrf_token","icwp_wpsf_vars_lpantibot","wpvViewHead","ed_school_plugin","aps_comp_","guaven_woos","__lm_redirect_to","__wpdm_view_count","bookacti.booking_system","nfFrontEnd","view_quote_cart_link","__eae_decode_emails","divioverlays_ajaxurl","var _EPYT_","#ins-heading-","#ins-button-","tve_frontend_options","lb24.src","amazon_Login_accessToken","porto_infinite_scroll",".adace-loader-","adace_load_","tagGroupsAccordiontaggroupscloudaccordion","tagGroupsTabstaggroupscloudtabs","jrRelatedWidgets","UNCODE.initRow","amp_mobile_redirect_disabled","wpgdprcData","wpml_browser_redirect_params","swPreRegister","kboard_settings","ct_ultimate_gdpr_cookie","wcpv_registration_local","www.idxhome.com","arf_footer_cl_logic_call","reload_attached_coupons","var ftpp","forminatorFront","_EPYT_","edd_free_downloads_vars","edd_stripe_vars","var ASP","ecwidOriginalTitle","defaultCategoryId","translation-revision-date","google_conversion_id","hbspt","var marker_locations_","var AdmMyAjax","ifso_page_url","referrer_for_pageload","WoocommerceWidget\/woocommerceWidget.js","var ht_ctc_chat_var","spuvar","var wpilFrontend","urls_polylangREPLACETOID","e.setAttribute('unselectable',on);","try{Typekit.load","iMapsData","var wpforms_user_journey","rocket_lazyload_css_data","wcStoreApiNonceTimestamp","createNonceMiddleware","pbidHash","wcBlocksMiddlewareConfig"],"cache_ignored_parameters":["utm_source","utm_medium","utm_campaign","utm_expid","utm_term","utm_content","utm_id","utm_source_platform","utm_creative_format","utm_marketing_tactic","mtm_source","mtm_medium","mtm_campaign","mtm_keyword","mtm_cid","mtm_content","pk_source","pk_medium","pk_campaign","pk_keyword","pk_cid","pk_content","fb_action_ids","fb_action_types","fb_source","fbclid","campaignid","adgroupid","adid","gclid","age-verified","ao_noptimize","usqp","cn-reloaded","_ga","sscid","gclsrc","_gl","mc_cid","mc_eid","_bta_tid","_bta_c","trk_contact","trk_msg","trk_module","trk_sid","gdfms","gdftrk","gdffi","_ke","_kx","redirect_log_mongo_id","redirect_mongo_id","sb_referer_host","mkwid","pcrid","ef_id","s_kwcid","msclkid","dm_i","epik","pp","gbraid","wbraid","ssp_iabi","ssp_iaba","gad","vgo_ee","gad_source","gad_campaignid","onlywprocket","srsltid","gadid","fbadid"],"preload_exclusions":["void\\(.*;","(.*)__trashed(.*)","\/jet-menu\/(.*)","\/jet-popup\/(.*)","(.*)printButton.href(.*)"],"exclude_js_files":["\/wp-includes\/js\/dist\/i18n.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/html2canvas.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/pdf.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/three.min.js","\/interactive-3d-flipbook-powered-physics-engine\/assets\/js\/3d-flip-book.min.js","\/google-site-kit\/dist\/assets\/js\/(.*).js","\/wp-live-chat-support\/public\/js\/callus(.*).js","\/borlabs-cookie\/assets\/javascript\/(.*).js","\/wp-content\/plugins\/wp-rocket\/assets\/js\/lcp-beacon(.min)?.js","\/woocommerce-bookings\/dist\/frontend.js","\/plugins\/mapify(.*)\/assets\/js\/dist\/bundle.js","\/wp-content\/plugins\/wp-rocket\/assets\/js\/wpr-beacon(.min)?.js","\/wp-recipe-maker-premium\/dist\/public-premium.js","\/plugins\/wp-recipe-maker\/(.*)","\/jet-menu\/assets\/public\/js\/jet-menu-public-scripts.js","\/jet-menu\/assets\/public\/js\/jet-menu-mobile-menu-public-scripts.js"],"staging_domains":[".wpengine.com",".wpenginepowered.com",".pantheonsite.io",".flywheelsites.com",".flywheelstaging.com",".kinsta.com",".kinsta.cloud",".cloudwaysapps.com",".azurewebsites.net",".wpserveur.site","-liquidwebsites.com",".myftpupload.com",".dream.press",".sg-host.com",".platformsh.site",".wpstage.net",".bigscoots-staging.com",".wpsc.site",".runcloud.link",".onrocket.site",".singlestaging.com",".myraidbox.de",".instawp.xyz",".instawp.co",".instawp.link",".instawp.app",".hstgr.cloud",".myhostpoint.ch",".wpcomstaging.com",".nxcli.io",".nxcli.net",".lyricalstaging.com",".myrdbx.io",".staging.tempurl.host",".staging.mysites.io",".updraftclone.com",".easywp.com",".preview.infomaniak.website",".wp-cloud.dev",".wpsc.dev",".wptiger.fr",".amazonaws.com",".wpdns.site",".cloudwayssites.com",".mystagingwebsite.com",".hostingersite.com",".ngrok.io",".stage.site",".ksysweb.com",".dev.cc",".docksal",".lndo.site",".local",".localhost",".test",".wpstagecoach.com",".preprod",".ddev.site","my.wordpress.net"],"exclude_js_template":["type=\"module\"","data-minify=","data-no-minify="],"lazy_rendering_exclusions":["class=\"parallex\"","class=\"avada-footer-scripts\"","id=\"rhslidingMenu\"","class=\"logobsmallt\"","id=\"ast-mobile-popup-wrapper\"","id=\"cmplz-cookiebanner-container\"","class=\"wf-container-footer\"","class=\"de-mega-menu-container\"","data-nosnippet","class=\"floating-menu float-menu-","id=\"jeg_off_canvas\"","id=\"dipi-popup-maker-container\"","class=\"static-position vendor_hidden\"","class=\"jws-mini-cart-wrapper\"","class=\"home-widgets-section\"","elementor-location-floating_buttons","class=\"xoo-el-container xoo-el-style-popup\"","class=\"off-canvas-wrapper\"","id=\"ast-hb-account-login-wrap\"","id=\"ak_drawer_holder\"","id=\"brx-footer\"","elementor-location-footer","class=\"ts-floating-sidebar\"","id=\"yith-wacp-popup\"","class=\"fl-builder-content fl-builder-content-30 fl-builder-global-templates-locked\"","class=\"mfn-footer-tmpl mfn-footer\"","class=\"fusion-tb-footer fusion-footer","class=\"wt-cli-cookie-bar-container\"","id=\"lazy-loading-point\"","class=\"cp-popup-container","class=\"xoo-wsc-markup","class=\"xoo-wsc-modal","class=\"breakdance\"","class=\"footer-container color-scheme-light\"","class=\"sticky-cta\"","class=\"footer-booking-widget","rh_sticky_wrapper_footer","class=\"sticky-add-to-cart-wrapper","id=\"wcpa_img_preview\"","id=\"wpca-lay-out-wrapper\"","class=\"atbs-layout-split atbs-block","wll-launcher-button-container","id=\"wll-site-launcher\"","class=\"mobile_nav","id=\"nav","class=\"nav","no-wpr-lazyrender","class=\"wpfMainWrapper\""],"host_fonts":[],"preload_fonts_exclusions":["api.fontshare.com","cdn.fontshare.com"],"preconnect_external_domains_exclusions":["static.cloudflareinsights.com","rel=\"profile\"","rel=\"preconnect\"","rel=\"dns-prefetch\"","rel=\"icon\""],"mixpanel_tracked_settings":["async_css","async_css_mobile","auto_preload_fonts","automatic_cleanup_frequency","cache_logged_user","cache_mobile","cache_purge_pages","cache_query_strings","cache_reject_cookies","cache_reject_ua","cache_reject_uri","cache_ssl","cdn","cdn_cnames","cdn_reject_files","cdn_zone","control_heartbeat","critical_css","database_all_transients","database_auto_drafts","database_optimize_tables","database_revisions","database_spam_comments","database_trashed_comments","database_trashed_posts","defer_all_js","delay_js","delay_js_exclusions","delay_js_exclusions_selected","delay_js_exclusions_selected_exclusions","delay_js_execution_safe_mode","dns_prefetch","do_caching_mobile_files","do_cloudflare","emoji","exclude_css","exclude_defer_js","exclude_inline_js","exclude_js","exclude_lazyload","heartbeat_admin_behavior","heartbeat_editor_behavior","heartbeat_site_behavior","host_fonts_locally","image_dimensions","lazyload","lazyload_css_bg_img","lazyload_iframes","lazyload_youtube","manual_preload","minify_concatenate_css","minify_concatenate_js","minify_css","minify_google_fonts","minify_js","optimize_css_delivery","performance_monitoring","performance_monitoring_schedule_frequency","preload_excluded_uri","preload_links","previous_version","purge_cron_interval","purge_cron_unit","remove_unused_css","remove_unused_css_safelist","schedule_automatic_cleanup","sucury_waf_cache_sync","varnish_auto_purge","version","wpr-js-tips"],"rocket_insights_add_homepage_expiry_interval":266}
\ No newline at end of file
diff --git a/web/app/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php b/web/app/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php
index 5ea9de2fc..9d1c0b219 100644
--- a/web/app/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Addon/Cloudflare/Subscriber.php
@@ -66,6 +66,8 @@ public static function get_subscribed_events() {
'rocket_cron_deactivate_cloudflare_devmode' => 'deactivate_devmode',
'rocket_after_clean_domain' => 'auto_purge',
'after_rocket_clean_post' => [ 'auto_purge_by_url', 10, 3 ],
+ 'after_rocket_clean_home' => [ 'purge_url', 10, 2 ],
+ 'after_rocket_clean_files' => 'purge_url',
'admin_post_rocket_purge_cloudflare' => 'purge_cache',
'init' => [ 'set_real_ip', 1 ],
'update_option_' . $slug => [
@@ -212,6 +214,43 @@ public function auto_purge_by_url( $post, $purge_urls, $lang ) {
$this->cloudflare->purge_by_url( $post, $purge_urls, $lang );
}
+ /**
+ * Purge specific Cloudflare cache URLs automatically.
+ *
+ * Used as the callback for both after_rocket_clean_home( $root, $lang ) and after_rocket_clean_files( $urls ).
+ *
+ * @param array|string $urls_or_root Array of URLs to purge when triggered by after_rocket_clean_files, or the home cache root path when triggered by after_rocket_clean_home.
+ * @param string $lang The language to purge, only used when triggered by after_rocket_clean_home.
+ *
+ * @return void
+ */
+ public function purge_url( $urls_or_root, $lang = '' ) {
+ if ( ! current_user_can( 'rocket_purge_cloudflare_cache' ) ) {
+ return;
+ }
+
+ if ( is_wp_error( $this->cloudflare->check_connection() ) ) {
+ return;
+ }
+
+ $cf_cache_everything = $this->cloudflare->has_page_rule( 'cache_everything' );
+
+ if ( is_wp_error( $cf_cache_everything ) || ! $cf_cache_everything ) {
+ return;
+ }
+
+ // after_rocket_clean_files passes an array of URLs directly; after_rocket_clean_home passes a cache root path, so purge the home URL for that lang instead.
+ $purge_urls = is_array( $urls_or_root ) ? $urls_or_root : [ get_rocket_i18n_home_url( $lang ) ];
+ $purge_urls = array_unique( array_filter( $purge_urls ) );
+
+ if ( empty( $purge_urls ) ) {
+ return;
+ }
+
+ // Purge CloudFlare.
+ $this->cloudflare->purge_by_url( null, $purge_urls, $lang );
+ }
+
/**
* Purge CloudFlare cache.
*
@@ -628,7 +667,7 @@ public function display_settings_notice( $value, $old_value ) {
$connection = $this->cloudflare->check_connection( $value['cloudflare_zone_id'] );
- if ( is_wp_error( $connection ) ) {
+ if ( is_wp_error( $connection ) && function_exists( 'add_settings_error' ) ) {
add_settings_error( 'general', 'cloudflare_api_key_invalid', __( 'WP Rocket: ', 'rocket' ) . '' . $connection->get_error_message() . '', 'error' );
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/AbilitiesInterface.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/AbilitiesInterface.php
new file mode 100644
index 000000000..d5fea48e3
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/AbilitiesInterface.php
@@ -0,0 +1,27 @@
+catalog = $catalog;
+ }
+
+ /**
+ * Prints the WP Rocket abilities catalog as JSON.
+ *
+ * ## EXAMPLES
+ *
+ * $ wp rocket abilities-catalog
+ * [{"name":"wp-rocket/get-options", ...}]
+ *
+ * @return void
+ */
+ public function abilities_catalog(): void {
+ \WP_CLI::line( (string) wp_json_encode( $this->catalog->get_manifest(), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ) );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/CLI/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/CLI/Subscriber.php
new file mode 100644
index 000000000..19130f5c4
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/CLI/Subscriber.php
@@ -0,0 +1,44 @@
+command = $command;
+ }
+
+ /**
+ * Get the events to which this subscriber wants to listen.
+ *
+ * @return array The events and their corresponding callback methods.
+ */
+ public static function get_subscribed_events(): array {
+ return [
+ 'cli_init' => 'register_commands',
+ ];
+ }
+
+ /**
+ * Registers the `wp rocket abilities-catalog` command with WP-CLI.
+ *
+ * @return void
+ */
+ public function register_commands(): void {
+ \WP_CLI::add_command( 'rocket abilities-catalog', [ $this->command, 'abilities_catalog' ] );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/Catalog.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Catalog.php
new file mode 100644
index 000000000..4fb212262
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Catalog.php
@@ -0,0 +1,42 @@
+get_name(), self::VENDOR_PREFIX ) ) {
+ continue;
+ }
+
+ $manifest[] = [
+ 'name' => $ability->get_name(),
+ 'label' => $ability->get_label(),
+ 'description' => $ability->get_description(),
+ 'category' => $ability->get_category(),
+ 'input_schema' => $ability->get_input_schema(),
+ 'output_schema' => $ability->get_output_schema(),
+ 'meta' => $ability->get_meta(),
+ ];
+ }
+
+ return $manifest;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/Context.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Context.php
new file mode 100644
index 000000000..774a43469
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Context.php
@@ -0,0 +1,21 @@
+options = $options;
+ $this->allowed_options = $allowed_options;
+ }
+
+ /**
+ * Registers the ability to get WP Rocket options.
+ *
+ * @return void
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ $schema_definitions = [
+ // Cache settings.
+ 'cache_logged_user' => [
+ 'type' => 'integer',
+ 'description' => 'Enable caching for logged-in users.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'cache_webp' => [
+ 'type' => 'integer',
+ 'description' => 'Enable WebP caching.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'do_caching_mobile_files' => [
+ 'type' => 'integer',
+ 'description' => 'Create separate cache files for mobile.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'cache_reject_uri' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'URLs to exclude from caching.',
+ ],
+ 'cache_reject_cookies' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Cookies that prevent caching.',
+ ],
+ 'cache_reject_ua' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'User agents to exclude from caching.',
+ ],
+ 'cache_query_strings' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Query strings to cache.',
+ ],
+ 'cache_purge_pages' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'URLs to always purge.',
+ ],
+ 'purge_cron_interval' => [
+ 'type' => 'integer',
+ 'description' => 'Cache lifespan interval value.',
+ ],
+ 'purge_cron_unit' => [
+ 'type' => 'string',
+ 'description' => 'Cache lifespan time unit.',
+ 'enum' => [ 'MINUTE_IN_SECONDS', 'HOUR_IN_SECONDS', 'DAY_IN_SECONDS' ],
+ ],
+
+ // File optimization - CSS.
+ 'minify_css' => [
+ 'type' => 'integer',
+ 'description' => 'Enable CSS minification.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'minify_google_fonts' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Google Fonts minification.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'exclude_css' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'CSS files to exclude from minification.',
+ ],
+ 'async_css' => [
+ 'type' => 'integer',
+ 'description' => 'Enable asynchronous CSS loading.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'async_css_mobile' => [
+ 'type' => 'integer',
+ 'description' => 'Enable asynchronous CSS loading on mobile.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'critical_css' => [
+ 'type' => 'string',
+ 'description' => 'Fallback critical CSS content.',
+ ],
+ 'remove_unused_css' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Remove Unused CSS (RUCSS).',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'remove_unused_css_safelist' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'CSS selectors to always keep.',
+ ],
+ 'optimize_css_delivery' => [
+ 'type' => 'integer',
+ 'description' => 'Enable CSS delivery optimization.',
+ 'enum' => [ 0, 1 ],
+ ],
+
+ // File optimization - JS.
+ 'minify_js' => [
+ 'type' => 'integer',
+ 'description' => 'Enable JavaScript minification.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'minify_concatenate_js' => [
+ 'type' => 'integer',
+ 'description' => 'Enable JavaScript concatenation.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'exclude_js' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'JavaScript files to exclude from minification.',
+ ],
+ 'exclude_inline_js' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Inline JavaScript patterns to exclude.',
+ ],
+ 'defer_all_js' => [
+ 'type' => 'integer',
+ 'description' => 'Enable JavaScript defer loading.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'exclude_defer_js' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'JavaScript files to exclude from defer.',
+ ],
+ 'delay_js' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Delay JavaScript execution.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'delay_js_exclusions' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'JavaScript files to exclude from delay.',
+ ],
+
+ // Media.
+ 'lazyload' => [
+ 'type' => 'integer',
+ 'description' => 'Enable image lazy loading.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'lazyload_iframes' => [
+ 'type' => 'integer',
+ 'description' => 'Enable iframe/video lazy loading.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'lazyload_youtube' => [
+ 'type' => 'integer',
+ 'description' => 'Replace YouTube videos with preview image.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'lazyload_css_bg_img' => [
+ 'type' => 'integer',
+ 'description' => 'Enable CSS background image lazy loading.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'exclude_lazyload' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Patterns to exclude from lazy loading.',
+ ],
+ 'image_dimensions' => [
+ 'type' => 'integer',
+ 'description' => 'Add missing image dimensions.',
+ 'enum' => [ 0, 1 ],
+ ],
+
+ // Fonts.
+ 'host_fonts_locally' => [
+ 'type' => 'integer',
+ 'description' => 'Host Google Fonts locally.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'auto_preload_fonts' => [
+ 'type' => 'integer',
+ 'description' => 'Automatically preload fonts.',
+ 'enum' => [ 0, 1 ],
+ ],
+
+ // Preload.
+ 'manual_preload' => [
+ 'type' => 'integer',
+ 'description' => 'Enable cache preloading.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'preload_links' => [
+ 'type' => 'integer',
+ 'description' => 'Enable link preloading on hover.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'preload_fonts' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Font URLs to preload.',
+ ],
+ 'preload_excluded_uri' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'URIs to exclude from preload.',
+ ],
+ 'dns_prefetch' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Domains to DNS prefetch.',
+ ],
+
+ // Database.
+ 'database_revisions' => [
+ 'type' => 'integer',
+ 'description' => 'Clean post revisions.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'database_auto_drafts' => [
+ 'type' => 'integer',
+ 'description' => 'Clean auto drafts.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'database_trashed_posts' => [
+ 'type' => 'integer',
+ 'description' => 'Clean trashed posts.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'database_spam_comments' => [
+ 'type' => 'integer',
+ 'description' => 'Clean spam comments.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'database_trashed_comments' => [
+ 'type' => 'integer',
+ 'description' => 'Clean trashed comments.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'database_all_transients' => [
+ 'type' => 'integer',
+ 'description' => 'Clean all transients.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'database_optimize_tables' => [
+ 'type' => 'integer',
+ 'description' => 'Optimize database tables.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'schedule_automatic_cleanup' => [
+ 'type' => 'integer',
+ 'description' => 'Enable automatic database cleanup.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'automatic_cleanup_frequency' => [
+ 'type' => 'string',
+ 'description' => 'Frequency of automatic cleanup.',
+ 'enum' => [ 'daily', 'weekly', 'monthly' ],
+ ],
+
+ // CDN.
+ 'cdn' => [
+ 'type' => 'integer',
+ 'description' => 'Enable CDN.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'cdn_cnames' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'CDN CNAME URLs.',
+ ],
+ 'cdn_zone' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'CDN zones for each CNAME.',
+ ],
+ 'cdn_reject_files' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Files to exclude from CDN.',
+ ],
+ 'cdn_reject_pages' => [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ 'description' => 'Pages to exclude from CDN.',
+ ],
+
+ // Cloudflare.
+ 'do_cloudflare' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Cloudflare integration.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'cloudflare_devmode' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Cloudflare development mode.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'cloudflare_protocol_rewrite' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Cloudflare protocol rewrite.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'cloudflare_auto_settings' => [
+ 'type' => 'integer',
+ 'description' => 'Apply optimal Cloudflare settings.',
+ 'enum' => [ 0, 1 ],
+ ],
+
+ // Heartbeat.
+ 'control_heartbeat' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Heartbeat control.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'heartbeat_site_behavior' => [
+ 'type' => 'string',
+ 'description' => 'Heartbeat behavior on frontend.',
+ 'enum' => [ '', 'reduce_periodicity', 'disable' ],
+ ],
+ 'heartbeat_admin_behavior' => [
+ 'type' => 'string',
+ 'description' => 'Heartbeat behavior in admin.',
+ 'enum' => [ '', 'reduce_periodicity', 'disable' ],
+ ],
+ 'heartbeat_editor_behavior' => [
+ 'type' => 'string',
+ 'description' => 'Heartbeat behavior in post editor.',
+ 'enum' => [ '', 'reduce_periodicity', 'disable' ],
+ ],
+
+ // Performance monitoring.
+ 'performance_monitoring' => [
+ 'type' => 'integer',
+ 'description' => 'Enable performance monitoring.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'performance_monitoring_schedule_frequency' => [
+ 'type' => 'integer',
+ 'description' => 'Performance monitoring check frequency in seconds.',
+ 'enum' => [ 86400, 604800, 2592000 ],
+ ],
+
+ // Add-ons.
+ 'varnish_auto_purge' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Varnish auto purge.',
+ 'enum' => [ 0, 1 ],
+ ],
+ 'sucury_waf_cache_sync' => [
+ 'type' => 'integer',
+ 'description' => 'Enable Sucuri WAF cache sync.',
+ 'enum' => [ 0, 1 ],
+ ],
+
+ // Analytics.
+ 'analytics_enabled' => [
+ 'type' => 'integer',
+ 'description' => 'Enable anonymous analytics.',
+ 'enum' => [ 0, 1 ],
+ ],
+
+ // Misc.
+ 'emoji' => [
+ 'type' => 'integer',
+ 'description' => 'Enable emoji support.',
+ 'enum' => [ 0, 1 ],
+ ],
+ ];
+
+ $properties = array_intersect_key( $schema_definitions, array_flip( $this->allowed_options->get() ) );
+
+ wp_register_ability(
+ 'wp-rocket/get-options',
+ [
+ 'label' => __( 'Get WP Rocket options', 'rocket' ),
+ 'description' => _x(
+ 'Retrieves current WP Rocket settings as a flat key-value object, including toggles and array-type options.
+Use this when the user asks what is enabled, disabled, or excluded. Do not use it to change settings; use set-option instead.
+Always call this before set-option when changing an array-type option, to avoid overwriting existing values. Do not show internal, credential, or read-only keys to the user.
+Unless the user asks for another format, present settings as a grouped dashboard with cards for Caching, File Optimisation, Media, CDN, Database, and Heartbeat. Each card should show a group-level badge, setting rows, status pills, impact bars, and plain-language descriptions using the approved colors.',
+ 'Ability description',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-options',
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => $properties,
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'show_in_rest' => true,
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'annotations' => [
+ 'readonly' => true,
+ 'destructive' => false,
+ 'idempotent' => true,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to get WP Rocket options.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to get WP Rocket options, returning only allowlisted options.
+ *
+ * @return array
+ */
+ public function execute(): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/get-options',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ $allowed_keys = $this->allowed_options->get();
+ $options = $this->options->get_options();
+
+ return array_intersect_key( $options, array_flip( $allowed_keys ) );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/Options/SetOption.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Options/SetOption.php
new file mode 100644
index 000000000..c610bdaa8
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Options/SetOption.php
@@ -0,0 +1,400 @@
+ [ 'MINUTE_IN_SECONDS', 'HOUR_IN_SECONDS', 'DAY_IN_SECONDS' ],
+ 'automatic_cleanup_frequency' => [ 'daily', 'weekly', 'monthly' ],
+ 'heartbeat_site_behavior' => [ '', 'reduce_periodicity', 'disable' ],
+ 'heartbeat_admin_behavior' => [ '', 'reduce_periodicity', 'disable' ],
+ 'heartbeat_editor_behavior' => [ '', 'reduce_periodicity', 'disable' ],
+ ];
+
+ /**
+ * Options that require special string sanitization (CSS content).
+ */
+ private const STRING_OPTIONS = [
+ 'critical_css',
+ ];
+
+ /**
+ * Options that use rocket_sanitize_textarea_field() for sanitization.
+ */
+ private const TEXTAREA_FIELD_OPTIONS = [
+ 'cache_reject_uri',
+ 'cache_reject_cookies',
+ 'cache_reject_ua',
+ 'cache_query_strings',
+ 'cache_purge_pages',
+ 'exclude_css',
+ 'exclude_js',
+ 'exclude_inline_js',
+ 'exclude_defer_js',
+ 'exclude_lazyload',
+ 'delay_js_exclusions',
+ 'remove_unused_css_safelist',
+ 'cdn_reject_files',
+ ];
+
+ /**
+ * Options that accept arrays with sanitize_text_field per item.
+ */
+ private const ARRAY_OPTIONS = [
+ 'cdn_cnames',
+ 'cdn_zone',
+ 'preload_fonts',
+ 'dns_prefetch',
+ 'preload_excluded_uri',
+ 'cdn_reject_pages',
+ 'delay_js_exclusions_selected',
+ 'delay_js_exclusions_selected_exclusions',
+ ];
+
+ /**
+ * Constructor.
+ *
+ * @param AllowedOptions $allowed_options Allowed options instance.
+ */
+ public function __construct( AllowedOptions $allowed_options ) {
+ $this->allowed_options = $allowed_options;
+ }
+
+ /**
+ * Registers the set option ability.
+ *
+ * @return void
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/set-option',
+ [
+ 'label' => __( 'Set a WP Rocket option', 'rocket' ),
+ 'description' => _x(
+ 'Writes one WP Rocket option using option_name and option_value. update_mode defaults to update, which appends to arrays; use replace to overwrite a full array.
+Use this when the user wants to enable, disable, or update a specific setting. For array-type options, always call get-options first.
+Confirmation is required before calling. First show the setting name and the current value to new value. Then ask: `Confirm this change?` and wait for a clear yes or no.
+A user request such as `enable it` or `disable it` is not enough confirmation. Only call this ability after the user gives an affirmative answer in the same turn.',
+ 'Ability description',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-options',
+ 'input_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'option_name' => [
+ 'type' => 'string',
+ 'description' => __( 'The name of the WP Rocket option to set', 'rocket' ),
+ 'enum' => $this->allowed_options->get(),
+ ],
+ 'option_value' => [
+ 'anyOf' => [
+ [ 'type' => 'string' ],
+ [ 'type' => 'boolean' ],
+ [ 'type' => 'integer' ],
+ [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ ],
+ ],
+ 'description' => __( 'The value to set for the specified WP Rocket option', 'rocket' ),
+ ],
+ 'update_mode' => [
+ 'type' => 'string',
+ 'enum' => [ 'update', 'replace' ],
+ 'description' => __( 'For array and textarea options: "update" (default) adds new entries to the existing list; "replace" overwrites the entire list.', 'rocket' ),
+ ],
+ ],
+ 'required' => [ 'option_name', 'option_value' ],
+ ],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'success' => [
+ 'type' => 'boolean',
+ 'description' => __( 'Indicates whether the option was successfully set', 'rocket' ),
+ ],
+ 'error' => [
+ 'type' => 'string',
+ 'description' => __( 'Error message if the option could not be set', 'rocket' ),
+ ],
+ 'previous_value' => [
+ 'anyOf' => [
+ [ 'type' => 'string' ],
+ [ 'type' => 'boolean' ],
+ [ 'type' => 'integer' ],
+ [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ ],
+ ],
+ 'description' => __( 'The previous value of the option before it was updated', 'rocket' ),
+ ],
+ 'new_value' => [
+ 'anyOf' => [
+ [ 'type' => 'string' ],
+ [ 'type' => 'boolean' ],
+ [ 'type' => 'integer' ],
+ [
+ 'type' => 'array',
+ 'items' => [ 'type' => 'string' ],
+ ],
+ ],
+ 'description' => __( 'The new value of the option after it was updated', 'rocket' ),
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'show_in_rest' => true,
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'annotations' => [
+ 'readonly' => false,
+ 'destructive' => true,
+ 'idempotent' => true,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to set WP Rocket options.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to set a WP Rocket option.
+ *
+ * @param array|null $input Input containing option_name, option_value, and optionally update_mode.
+ * @return array Response with success status and option values.
+ */
+ public function execute( $input = null ): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/set-option',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ $option_name = $input['option_name'];
+ $option_value = $input['option_value'];
+ $update_mode = $input['update_mode'] ?? 'update';
+
+ if ( ! $this->validate_option_name( $option_name ) ) {
+ return [
+ 'success' => false,
+ 'error' => sprintf(
+ /* translators: %s: option name */
+ __( 'Invalid option name: %s. This option cannot be set via the ability.', 'rocket' ),
+ $option_name
+ ),
+ ];
+ }
+
+ $previous_value = get_rocket_option( $option_name );
+ $sanitized_value = $this->sanitize_value( $option_name, $option_value, $update_mode, $previous_value );
+
+ update_rocket_option( $option_name, $sanitized_value );
+
+ return [
+ 'success' => true,
+ 'previous_value' => $previous_value,
+ 'new_value' => $sanitized_value,
+ ];
+ }
+
+ /**
+ * Returns an array of all allowed option names.
+ *
+ * @return array List of allowed option names.
+ */
+ private function get_allowed_options(): array {
+ return $this->allowed_options->get();
+ }
+
+ /**
+ * Validates that the option name is in the allowed list.
+ *
+ * @param string $option_name The option name to validate.
+ * @return bool True if valid, false otherwise.
+ */
+ private function validate_option_name( string $option_name ): bool {
+ return in_array( $option_name, $this->get_allowed_options(), true );
+ }
+
+ /**
+ * Sanitizes the option value based on the option type.
+ *
+ * @param string $option_name The option name.
+ * @param mixed $option_value The value to sanitize.
+ * @param string $update_mode Either 'update' (merge into existing) or 'replace' (overwrite).
+ * @param mixed $previous_value The current stored value, used for merging in update mode.
+ * @return mixed Sanitized value.
+ */
+ private function sanitize_value( string $option_name, $option_value, string $update_mode = 'update', $previous_value = null ) {
+ // Boolean options: convert to 0 or 1.
+ if ( in_array( $option_name, self::BOOLEAN_OPTIONS, true ) ) {
+ return ! empty( $option_value ) ? 1 : 0;
+ }
+
+ // Integer options: cast to integer.
+ if ( in_array( $option_name, self::INTEGER_OPTIONS, true ) ) {
+ return (int) $option_value;
+ }
+
+ // Enum options: validate against allowed values.
+ if ( isset( self::ENUM_OPTIONS[ $option_name ] ) ) {
+ $allowed_values = self::ENUM_OPTIONS[ $option_name ];
+ if ( in_array( $option_value, $allowed_values, true ) ) {
+ return $option_value;
+ }
+ // Return current value if invalid.
+ return $previous_value;
+ }
+
+ // String options (critical_css): strip tags and style elements.
+ if ( in_array( $option_name, self::STRING_OPTIONS, true ) ) {
+ if ( empty( $option_value ) ) {
+ return '';
+ }
+ return wp_strip_all_tags(
+ str_replace( [ '' ], '', $option_value ),
+ true
+ );
+ }
+
+ // Textarea field options: use rocket_sanitize_textarea_field.
+ if ( in_array( $option_name, self::TEXTAREA_FIELD_OPTIONS, true ) ) {
+ if ( ! function_exists( 'rocket_sanitize_textarea_field' ) ) {
+ $sanitized = is_array( $option_value ) ? $option_value : [];
+ } else {
+ $sanitized = rocket_sanitize_textarea_field( $option_name, $option_value ) ?? [];
+ }
+
+ if ( 'replace' === $update_mode ) {
+ return $sanitized;
+ }
+
+ // update mode: merge new entries into the existing list.
+ $existing = is_array( $previous_value ) ? $previous_value : [];
+ return array_values( array_unique( array_merge( $existing, $sanitized ) ) );
+ }
+
+ // Array options: sanitize each item with sanitize_text_field.
+ if ( in_array( $option_name, self::ARRAY_OPTIONS, true ) ) {
+ if ( ! is_array( $option_value ) ) {
+ return [];
+ }
+
+ $sanitized = array_map( 'sanitize_text_field', $option_value );
+
+ if ( 'replace' === $update_mode ) {
+ return $sanitized;
+ }
+
+ // update mode: merge new entries into the existing list.
+ $existing = is_array( $previous_value ) ? $previous_value : [];
+ return array_values( array_unique( array_merge( $existing, $sanitized ) ) );
+ }
+
+ // Fallback: return value as-is (should not reach here for valid options).
+ return $option_value;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/Options/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Options/Subscriber.php
new file mode 100644
index 000000000..de8fea3b4
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/Options/Subscriber.php
@@ -0,0 +1,109 @@
+get_options = $get_options;
+ $this->set_option = $set_option;
+ $this->context = $context;
+ }
+
+ /**
+ * Get the events to which this subscriber wants to listen.
+ *
+ * @return array The events and their corresponding callback methods.
+ */
+ public static function get_subscribed_events(): array {
+ return [
+ 'wp_abilities_api_categories_init' => [
+ [ 'register_options_category' ],
+ ],
+ 'wp_abilities_api_init' => [
+ [ 'register_get_options_ability' ],
+ [ 'register_set_option_ability' ],
+ ],
+ ];
+ }
+
+ /**
+ * Register the WP Rocket options ability category.
+ *
+ * @return void
+ */
+ public function register_options_category(): void {
+ if ( ! $this->context->is_enabled() ) {
+ return;
+ }
+
+ if ( ! function_exists( 'wp_register_ability_category' ) ) {
+ return;
+ }
+
+ wp_register_ability_category(
+ 'wp-rocket-options',
+ [
+ 'label' => __( 'WP Rocket Options', 'rocket' ),
+ 'description' => __( 'Abilities that retrieve or update WP Rocket options', 'rocket' ),
+ ]
+ );
+ }
+
+ /**
+ * Register the ability to get WP Rocket options.
+ *
+ * @return void
+ */
+ public function register_get_options_ability(): void {
+ if ( ! $this->context->is_enabled() ) {
+ return;
+ }
+
+ $this->get_options->register();
+ }
+
+ /**
+ * Register the ability to set a WP Rocket option.
+ *
+ * @return void
+ */
+ public function register_set_option_ability(): void {
+ if ( ! $this->context->is_enabled() ) {
+ return;
+ }
+
+ $this->set_option->register();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Abilities/ServiceProvider.php b/web/app/plugins/wp-rocket/inc/Engine/Abilities/ServiceProvider.php
new file mode 100644
index 000000000..6d9c78327
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Abilities/ServiceProvider.php
@@ -0,0 +1,70 @@
+provides, true );
+ }
+
+ /**
+ * Register the services provided by this service provider.
+ *
+ * @return void
+ */
+ public function register(): void {
+ $this->getContainer()->addShared( 'abilities_context', Context::class );
+ $this->getContainer()->addShared( 'abilities_allowed_options', AllowedOptions::class );
+ $this->getContainer()->add( 'abilities_get_options', GetOptions::class )
+ ->addArguments( [ 'options', 'abilities_allowed_options' ] );
+ $this->getContainer()->add( 'abilities_set_option', SetOption::class )
+ ->addArgument( 'abilities_allowed_options' );
+ $this->getContainer()->addShared( 'abilities_subscriber', Subscriber::class )
+ ->addArguments(
+ [
+ 'abilities_get_options',
+ 'abilities_set_option',
+ 'abilities_context',
+ ]
+ );
+ $this->getContainer()->addShared( 'abilities_catalog', Catalog::class );
+ $this->getContainer()->add( 'abilities_cli_command', CLICommand::class )
+ ->addArgument( 'abilities_catalog' );
+ $this->getContainer()->addShared( 'abilities_cli_subscriber', CLISubscriber::class )
+ ->addArgument( 'abilities_cli_command' );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Activation/Activation.php b/web/app/plugins/wp-rocket/inc/Engine/Activation/Activation.php
index 708099643..8fabeaaf2 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Activation/Activation.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Activation/Activation.php
@@ -94,6 +94,9 @@ public static function activate_plugin() {
*/
do_action( 'rocket_activation' );
+ // Flush once, after every activator has registered its rewrite rules.
+ flush_rewrite_rules();
+
if ( rocket_valid_key() ) {
// Add All WP Rocket rules of the .htaccess file.
flush_rocket_htaccess();
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php
index 6573eb9d5..2a89433eb 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/Beacon/Beacon.php
@@ -579,14 +579,44 @@ public function get_suggest( $doc_id ) {
'url' => 'https://fr.docs.wp-rocket.me/article/246-utiliser-wp-rocket-avec-un-cdn/?utm_source=wp_plugin&utm_medium=wp_rocket',
],
],
+ 'own_cdn' => [
+ 'en' => [
+ 'id' => '54c7fa3de4b0512429885b5c',
+ 'url' => 'https://docs.wp-rocket.me/article/42-using-wp-rocket-with-a-cdn/?utm_source=wp_plugin&utm_medium=wp_rocket',
+ ],
+ 'fr' => [
+ 'id' => '5696830b9033603f7da308ac',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/246-utiliser-wp-rocket-avec-un-cdn/?utm_source=wp_plugin&utm_medium=wp_rocket',
+ ],
+ ],
+ 'purge_cdn' => [
+ 'en' => [
+ 'id' => '5e4c84bd04286364bc958833',
+ 'url' => 'https://docs.wp-rocket.me/article/1307-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#when-should-i-purge-the-rocketcdn-cache',
+ ],
+ 'fr' => [
+ 'id' => '5f351e42042863444aa04652',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/1343-comment-utiliser-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#when-should-i-purge-the-rocketcdn-cache',
+ ],
+ ],
'rocketcdn' => [
'en' => [
'id' => '5e4c84bd04286364bc958833',
- 'url' => 'https://docs.wp-rocket.me/article/1307-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket',
+ 'url' => 'https://docs.wp-rocket.me/article/1307-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#rocketcdn-pro-plan',
],
'fr' => [
'id' => '5f351e42042863444aa04652',
- 'url' => 'https://fr.docs.wp-rocket.me/article/1343-comment-utiliser-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/1343-comment-utiliser-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#rocketcdn-pro-plan',
+ ],
+ ],
+ 'rocketcdn_free' => [
+ 'en' => [
+ 'id' => '5e4c84bd04286364bc958833',
+ 'url' => 'https://docs.wp-rocket.me/article/1307-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#rocketcdn-free-plan',
+ ],
+ 'fr' => [
+ 'id' => '5f351e42042863444aa04652',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/1343-comment-utiliser-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#rocketcdn-free-plan',
],
],
'rocketcdn_error' => [
@@ -601,12 +631,22 @@ public function get_suggest( $doc_id ) {
],
'exclude_cdn' => [
'en' => [
- 'id' => '5434667fe4b0310ce5ee867a',
- 'url' => 'https://docs.wp-rocket.me/article/24-resolving-issues-with-cdn-and-fonts-icons/?utm_source=wp_plugin&utm_medium=wp_rocket',
+ 'id' => '54c7fa3de4b0512429885b5c',
+ 'url' => 'https://docs.wp-rocket.me/article/42-using-wp-rocket-with-a-cdn#exclude-files-from-your-cdn',
+ ],
+ 'fr' => [
+ 'id' => '5696830b9033603f7da308ac',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/246-utiliser-wp-rocket-avec-un-cdn/?utm_source=wp_plugin&utm_medium=wp_rocket#exclure-des-fichiers-du-cdn',
+ ],
+ ],
+ 'exclude_cdn_rocketcdn' => [
+ 'en' => [
+ 'id' => '5e4c84bd04286364bc958833',
+ 'url' => 'https://docs.wp-rocket.me/article/1307-rocketcd/?utm_source=wp_plugin&utm_medium=wp_rocket#exclude-files-from-rocketcdn',
],
'fr' => [
- 'id' => '569684d29033603f7da308b9',
- 'url' => 'https://fr.docs.wp-rocket.me/article/248-resoudre-des-problemes-avec-cdn-et-les-polices-icones/?utm_source=wp_plugin&utm_medium=wp_rocket',
+ 'id' => '5f351e42042863444aa04652',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/1343-comment-utiliser-rocketcdn/?utm_source=wp_plugin&utm_medium=wp_rocket#exclude-files-from-rocketcdn',
],
],
'cloudflare_credentials' => [
@@ -845,6 +885,16 @@ public function get_suggest( $doc_id ) {
'url' => 'https://fr.docs.wp-rocket.me/article/1878-rocket-insights?utm_source=wp_plugin&utm_medium=wp_rocket',
],
],
+ 'mcp_server' => [
+ 'en' => [
+ 'id' => '6a5a7a2d8609704abe640d81',
+ 'url' => 'https://docs.wp-rocket.me/article/1922-wp-rocket-mcp?utm_source=wp_plugin&utm_medium=wp_rocket',
+ ],
+ 'fr' => [
+ 'id' => '6a635ff8a20e9375e2188b72',
+ 'url' => 'https://fr.docs.wp-rocket.me/article/1923-mcp-wp-rocket?utm_source=wp_plugin&utm_medium=wp_rocket',
+ ],
+ ],
];
return isset( $suggest[ $doc_id ][ $this->get_user_locale() ] )
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/APIHandler/APIClient.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/APIHandler/APIClient.php
index 8d3d897da..0c4aa53c6 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/APIHandler/APIClient.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/APIHandler/APIClient.php
@@ -52,14 +52,6 @@ public function add_to_queue( string $url, array $options = [], array $args = []
$args
);
- $this->logger::debug(
- 'Rocket Insights: Initiating test',
- [
- 'url' => $url,
- 'options' => $options,
- ]
- );
-
$sent = $this->handle_post( $args );
if ( ! $sent ) {
@@ -78,13 +70,6 @@ public function add_to_queue( string $url, array $options = [], array $args = []
$response_data = json_decode( $this->response_body, true );
- $this->logger::info(
- 'Rocket Insights: Test initiated successfully',
- [
- 'job_id' => $response_data['uuid'],
- ]
- );
-
$response_data['code'] = $this->response_code;
return $response_data;
@@ -107,11 +92,6 @@ public function get_queue_job_status( string $test_id, $queue_name, $is_home = f
'timeout' => 15,
];
- $this->logger::debug(
- 'Rocket Insights: Checking test status',
- [ 'test_id' => $test_id ]
- );
-
$sent = $this->handle_get( $args );
if ( ! $sent ) {
@@ -146,14 +126,6 @@ public function get_queue_job_status( string $test_id, $queue_name, $is_home = f
return $error_data;
}
- $this->logger::debug(
- 'Rocket Insights: Status check completed',
- [
- 'test_id' => $test_id,
- 'status' => $response_data['status'] ?? 'unknown',
- ]
- );
-
switch ( $response_data['status'] ?? 'pending' ) {
case 'pending':
$code = 425;
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/AddPageInsights.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/AddPageInsights.php
new file mode 100644
index 000000000..8f98c203d
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/AddPageInsights.php
@@ -0,0 +1,370 @@
+context = $context;
+ $this->manager = $manager;
+ $this->job_processor = $job_processor;
+ $this->queue = $queue;
+ $this->query = $query;
+ $this->plan = $plan;
+ }
+
+ /**
+ * Registers the ability to add page insights.
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/add-page-insights',
+ [
+ 'label' => __( 'Add Page Insights', 'rocket' ),
+ 'description' => _x(
+ 'Adds a URL to Rocket Insights monitoring. Requires a valid URI.
+Use this when the user wants to monitor a new page. Do not use it when the page is already monitored; use retest-page-insights instead.
+Confirm the exact URL with the user before calling. This action is non-idempotent, so calling it twice for the same URL may return an error.
+On success, tell the user the first score may take a few minutes and offer to trigger an immediate test with retest-page-insights Recheck every minute in the background and poll results with get-page-insights-score.',
+ 'Ability description',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-insights',
+ 'input_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'url' => [
+ 'type' => 'string',
+ 'format' => 'uri',
+ ],
+ ],
+ 'required' => [ 'url' ],
+ ],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'success' => [
+ 'type' => 'boolean',
+ 'description' => __( 'Indicates whether the page was successfully added', 'rocket' ),
+ ],
+ 'error' => [
+ 'type' => 'string',
+ 'description' => __( 'Error message if the page could not be added', 'rocket' ),
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'show_in_rest' => true,
+ 'annotations' => [
+ 'readonly' => false,
+ 'destructive' => false,
+ 'idempotent' => false,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to execute this ability.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to add page insights.
+ *
+ * @param array $input The input data containing the URL to be added.
+ *
+ * @return array
+ */
+ public function execute( $input = null ): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/add-page-insights',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ $payload = $this->get_url_validation_payload( $input['url'] );
+
+ if ( $payload['error'] ) {
+ return [
+ 'success' => false,
+ 'error' => $payload['message'],
+ ];
+ }
+
+ $url = $payload['processed_url'];
+
+ if ( Utils::is_home( $url ) ) {
+ $page_title = __( 'Homepage', 'rocket' );
+ } else {
+ $page_title = $this->get_page_title( $payload['message'] );
+ }
+
+ $source = 'mcp-ai';
+
+ $additional_details = [
+ 'title' => $page_title,
+ 'data' => [
+ 'source' => $source,
+ ],
+ ];
+
+ // Handle synchronous submission using shared method.
+ $row_id = $this->handle_sync_submission( $url, true, $additional_details );
+
+ if ( empty( $row_id ) ) {
+ return [
+ 'success' => false,
+ 'error' => 'Failed to add page to monitoring queue.',
+ ];
+ }
+
+ // Check URL limit again after insertion to handle race conditions.
+ // If the limit is exceeded, remove the newly added URL and return an error.
+ if ( $this->query->get_total_count() > $this->plan->max_urls() ) {
+ // Delete the newly added URL.
+ $this->query->delete_item( $row_id );
+
+ return [
+ 'success' => false,
+ 'error' => 'URL limit exceeded.',
+ ];
+ }
+
+ $urls_count = $this->query->get_total_count();
+ $current_plan = $this->plan->get_current_plan();
+
+ /**
+ * Fires when a performance monitoring job is added.
+ *
+ * @since 3.20
+ *
+ * @param string $url The URL that was added for monitoring.
+ * @param string $plan Plan name.
+ * @param int $urls_count The current number of URLs being monitored.
+ * @param string $source The source of the request.
+ */
+ do_action( 'rocket_rocket_insights_job_added', $url, $current_plan, $urls_count, $source );
+
+ return [
+ 'success' => true,
+ 'error' => '',
+ ];
+ }
+
+ /**
+ * Validates a given URL for performance monitoring eligibility.
+ *
+ * @param string $url The URL to validate.
+ *
+ * @return array {
+ * @type bool $error Whether an error occurred during validation.
+ * @type string $message The error message, or an empty string if no error.
+ * @type string $processed_url The URL with protocol added if validation passes.
+ * }
+ */
+ protected function get_url_validation_payload( string $url ): array {
+ $payload = [
+ 'error' => false,
+ 'message' => '',
+ 'processed_url' => '',
+ 'data' => [
+ 'status' => 400,
+ ],
+ ];
+
+ if ( 'local' === wp_get_environment_type() ) {
+ $payload['error'] = true;
+ $payload['message'] = 'Performance monitoring is disabled for local environment';
+
+ return $payload;
+ }
+
+ // Validate that performance monitoring is not disabled.
+ if ( ! $this->context->is_allowed() ) {
+ $payload['error'] = true;
+ $payload['message'] = 'Performance monitoring is disabled.';
+
+ return $payload;
+ }
+
+ // Check if URL has protocol, add if needed.
+ $url = rocket_add_url_protocol( $url );
+ $payload['processed_url'] = $url;
+
+ $response = $this->get_page_content( $url );
+
+ if ( ! $response ) {
+ $payload['error'] = true;
+ $payload['message'] = 'Url does not resolve to a valid page.';
+
+ return $payload;
+ }
+
+ // check if url is not from admin.
+ if ( strpos( $url, admin_url() ) === 0 ) {
+ $payload['error'] = true;
+ $payload['message'] = 'Url is an admin page.';
+
+ return $payload;
+ }
+
+ // Check if url has not been submited.
+ if ( false !== $this->manager->get_single_job( $url, true ) ) {
+ $payload['error'] = true;
+ $payload['message'] = 'URL has already been submitted for performance monitoring.';
+
+ return $payload;
+ }
+
+ // Fetch url body and send to payload.
+ $payload['message'] = $response;
+
+ return $payload;
+ }
+
+ /**
+ * Handle synchronous submission of Rocket Insights job.
+ *
+ * This method centralizes the logic for attempting synchronous job submission
+ * and falling back to async queuing when needed. It uses JobProcessor's send_api
+ * for the actual API call, then adds Rocket Insights-specific validation and logging.
+ *
+ * @since 3.20
+ *
+ * @param string $url The URL to test.
+ * @param bool $is_mobile Whether this is a mobile test.
+ * @param array $additional_details Optional additional data to store with the job.
+ *
+ * @return bool|null Row ID on success, false on failure, null if not allowed.
+ */
+ private function handle_sync_submission( string $url, bool $is_mobile, array $additional_details = [] ) {
+ // Attempt synchronous API submission.
+ $sync_response = $this->job_processor->send_api( $url, $is_mobile, 'rocket_insights', true );
+
+ // If sync submission failed or returned WP_Error, fall back to async queue.
+ if ( false === $sync_response || empty( $sync_response['uuid'] ) ) {
+ Logger::error(
+ 'Rocket Insights: Synchronous Submission failed, Now falling back to Async Queue.',
+ [
+ 'url' => $url,
+ ]
+ );
+ return $this->manager->add_to_the_queue( $url, $is_mobile, $additional_details );
+ }
+
+ // Success! Save with the new data.
+ $row_id = $this->manager->add_to_the_queue( $url, $is_mobile, $additional_details );
+
+ if ( empty( $row_id ) ) {
+ // DB insert failed after successful API submission - log orphaned job.
+ Logger::error(
+ 'Rocket Insights: Database insert failed after successful sync submission',
+ [
+ 'url' => $url,
+ 'job_id' => $sync_response['uuid'],
+ ]
+ );
+ return false;
+ }
+
+ Logger::info(
+ 'Rocket Insights: Synchronous Submission successful, Now scheduling single job to run in 30 seconds.',
+ [
+ 'url' => $url,
+ ]
+ );
+
+ // Update to in-progress status immediately with job_id.
+ $this->manager->make_status_inprogress( $url, $is_mobile, 'rocket_insights', [ 'job_id' => $sync_response['uuid'] ] );
+ $this->queue->schedule_job_status_single_task( time() + 30, $url, $is_mobile, 'rocket_insights' );
+
+ return $row_id;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetInsightsScore.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetInsightsScore.php
new file mode 100644
index 000000000..72b72b507
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetInsightsScore.php
@@ -0,0 +1,228 @@
+query = $query;
+ $this->global_score = $global_score;
+ }
+
+ /**
+ * Registers the ability to get insights scores.
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/get-insights-scores',
+ [
+ 'label' => __( 'Get Rocket Insights Score', 'rocket' ),
+ 'description' => _x(
+ 'Returns a site-wide Rocket Insights summary with global_score, pages_monitored, is_running, and per-page results. Use include_metrics: true unless the user explicitly asks only for the global score.
+Do not open or read GTmetrix report_url links. You may show them as complementary report links.
+Use this when the user asks for a global score, site-wide overview, or all monitored pages. Do not use it for a specific page; use get-page-insights-score instead.
+If is_running is true or any result is not completed, tell the user tests are still in progress and only show completed results. Recheck every minute until remaining results are available. Do not show status when all results are completed. Do not show is_running unless at least one page result has is_running: true.
+Always open with a one-line global verdict, such as `Global score: 84/100 - 3 pages healthy, 2 need attention.` Present results using the richest available format: charts first, then a Markdown table, then structured prose.
+When showing scores or metrics, use only the approved performance colors and thresholds.',
+ 'Ability description',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-insights',
+ 'input_schema' => [
+ 'anyOf' => [
+ [
+ 'type' => 'null',
+ ],
+ [
+ 'type' => 'object',
+ 'properties' => [
+ 'include_metrics' => [
+ 'type' => 'boolean',
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'summary' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'global_score' => [
+ 'type' => 'number',
+ ],
+ 'pages_monitored' => [
+ 'type' => 'integer',
+ ],
+ 'status' => [
+ 'type' => 'string',
+ ],
+ 'is_running' => [
+ 'type' => 'boolean',
+ ],
+ ],
+ ],
+ 'results' => [
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'url' => [
+ 'type' => 'string',
+ 'format' => 'uri',
+ ],
+ 'title' => [
+ 'type' => 'string',
+ ],
+ 'is_mobile' => [
+ 'type' => 'boolean',
+ ],
+ 'status' => [
+ 'type' => 'string',
+ ],
+ 'data' => [
+ 'type' => 'string',
+ ],
+ 'modified' => [
+ 'type' => 'string',
+ 'format' => 'date-time',
+ ],
+ 'score' => [
+ 'type' => [
+ 'number',
+ 'null',
+ ],
+ ],
+ 'report_url' => [
+ 'type' => [ 'string', 'null' ],
+ 'format' => 'uri',
+ ],
+ 'metric_data' => [
+ 'type' => [
+ 'string',
+ 'null',
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'show_in_rest' => true,
+ 'annotations' => [
+ 'readonly' => true,
+ 'destructive' => false,
+ 'idempotent' => true,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to execute this ability.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to get insights scores.
+ *
+ * @param array|null $input Optional input parameters, such as 'include_metrics' to include detailed metric data.
+ *
+ * @return array
+ */
+ public function execute( $input = null ) {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/get-insights-scores',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ $global_score = $this->global_score->get_global_score_data();
+ $results = [];
+
+ if ( 'no-url' === $global_score['status'] ) {
+ return [
+ 'summary' => [
+ 'global_score' => $global_score['score'],
+ 'pages_monitored' => $global_score['pages_num'],
+ 'status' => $global_score['status'],
+ 'is_running' => $global_score['is_running'],
+ ],
+ 'results' => $results,
+ ];
+ }
+
+ $args = [
+ 'fields' => [
+ 'url',
+ 'title',
+ 'is_mobile',
+ 'status',
+ 'data',
+ 'modified',
+ 'score',
+ 'report_url',
+ ],
+ ];
+
+ if ( ! empty( $input['include_metrics'] ) ) {
+ $args['fields'][] = 'metric_data';
+ }
+
+ $results = $this->query->query( $args );
+
+ return [
+ 'summary' => [
+ 'global_score' => $global_score['score'],
+ 'pages_monitored' => $global_score['pages_num'],
+ 'status' => $global_score['status'],
+ 'is_running' => $global_score['is_running'],
+ ],
+ 'results' => $results,
+ ];
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetPageInsightsScore.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetPageInsightsScore.php
new file mode 100644
index 000000000..16d6ef284
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetPageInsightsScore.php
@@ -0,0 +1,189 @@
+query = $query;
+ $this->plan = $plan;
+ }
+
+ /**
+ * Registers the ability to get page insights score.
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/get-page-insights-score',
+ [
+ 'label' => __( 'Get Rocket Insights Score for a Page', 'rocket' ),
+ 'description' => _x(
+ 'Returns the latest Rocket Insights score for one specific URL. Requires a URI and returns score, status, report_url, and metric_data such as LCP, FCP, and TBT.
+Use this when the user asks about the performance or score of one page. Do not use it for fresh tests; use retest-page-insights instead. Do not use it for all pages; use get-insights-scores instead.
+If exists is false, tell the user the URL is not monitored and offer to add it with add-page-insights. This ability is read-only and does not trigger a new test.
+Always open with a one-line verdict, such as `Score: 94/100 - page is healthy.` Present results using the richest available format: charts first, then a Markdown table, then structured prose.
+Do not open or read GTmetrix report_url links. You may show them as complementary report links. When showing scores or metrics, use only the approved performance colors and thresholds.',
+ 'Ability description',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-insights',
+ 'input_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'url' => [
+ 'type' => 'string',
+ 'format' => 'uri',
+ ],
+ ],
+ 'required' => [ 'url' ],
+ ],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'exists' => [
+ 'type' => 'boolean',
+ ],
+ 'results' => [
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'url' => [
+ 'type' => 'string',
+ 'format' => 'uri',
+ ],
+ 'title' => [
+ 'type' => 'string',
+ ],
+ 'is_mobile' => [
+ 'type' => 'boolean',
+ ],
+ 'status' => [
+ 'type' => 'string',
+ ],
+ 'modified' => [
+ 'type' => [ 'string', 'null' ],
+ ],
+ 'score' => [
+ 'type' => [ 'number', 'null' ],
+ ],
+ 'report_url' => [
+ 'type' => [ 'string', 'null' ],
+ ],
+ 'metric_data' => [
+ 'type' => [ 'object', 'null' ],
+ ],
+ ],
+ ],
+ ],
+ 'free_slots' => [
+ 'type' => 'integer',
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'show_in_rest' => true,
+ 'annotations' => [
+ 'readonly' => true,
+ 'destructive' => false,
+ 'idempotent' => true,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to execute this ability.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to get page insights score.
+ *
+ * @param array|null $input The input data containing the URL to look up.
+ *
+ * @return array
+ */
+ public function execute( $input = null ): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/get-page-insights-score',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ $url = rocket_add_url_protocol( $input['url'] );
+ $url = untrailingslashit( $url );
+ $rows = $this->query->get_rows_by_url( $url );
+
+ if ( false === $rows ) {
+ $free_slots = max( 0, $this->plan->max_urls() - $this->query->get_total_count() );
+
+ return [
+ 'exists' => false,
+ 'free_slots' => $free_slots,
+ ];
+ }
+
+ $results = [];
+
+ foreach ( $rows as $row ) {
+ $results[] = [
+ 'url' => $row->url,
+ 'score' => $row->score,
+ 'status' => $row->status,
+ 'modified' => $row->modified ? gmdate( 'Y-m-d\TH:i:s\Z', $row->modified ) : null,
+ 'report_url' => ! empty( $row->report_url ) ? $row->report_url : null,
+ 'metric_data' => $row->metric_data,
+ 'is_mobile' => $row->is_mobile,
+ 'title' => $row->title,
+ ];
+ }
+
+ return [
+ 'exists' => true,
+ 'results' => $results,
+ ];
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetRecommendations.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetRecommendations.php
new file mode 100644
index 000000000..9e107a067
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/GetRecommendations.php
@@ -0,0 +1,196 @@
+data_manager = $data_manager;
+ }
+
+ /**
+ * Registers the ability to get Rocket Insights recommendations.
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/get-recommendations',
+ [
+ 'label' => __( 'Get Rocket Insights Recommendations', 'rocket' ),
+ 'description' => __(
+ 'Returns WP Rocket\'s own site-specific performance recommendations.
+Use this when the user asks what to improve or wants prioritized optimization suggestions. Do not use it for scores or test results; use get-insights-scores or get-page-insights-score instead.
+Check the status first. If status is loading, retry in a few minutes. If status is completed, show the recommendations. If status is failed or expired, tell the user no recommendation data is available.
+For each recommendation, mcp_actionable: true means it can be applied with set-option and may be suggested for activation. mcp_actionable: false means the recommendation requires a manual step.',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-insights',
+ 'input_schema' => [],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'status' => [
+ 'type' => 'string',
+ 'enum' => [ 'loading', 'completed', 'failed', 'expired' ],
+ 'description' => 'The current state of the recommendations data.',
+ ],
+ 'recommendations' => [
+ 'type' => 'array',
+ 'items' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'option_slug' => [ 'type' => 'string' ],
+ 'title' => [ 'type' => 'string' ],
+ 'description' => [ 'type' => 'string' ],
+ 'mcp_actionable' => [ 'type' => 'boolean' ],
+ 'mcp_ability' => [ 'type' => [ 'string', 'null' ] ],
+ ],
+ ],
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'show_in_rest' => true,
+ 'annotations' => [
+ 'readonly' => true,
+ 'destructive' => false,
+ 'idempotent' => true,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to execute this ability.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to get Rocket Insights recommendations.
+ *
+ * @param mixed $input Unused input parameter.
+ *
+ * @return array
+ */
+ public function execute( $input = null ): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/get-recommendations',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ $data = $this->data_manager->get_recommendations();
+
+ if ( false === $data ) {
+ return [
+ 'status' => 'expired',
+ 'recommendations' => [],
+ ];
+ }
+
+ // Status whitelist guard — coerce any unrecognised or transitional status
+ // to a value within the closed output_schema enum.
+ // 'pending' maps to 'loading' (matches Recommendations\Render::map_status_to_state()).
+ // Anything outside the known set falls back to 'failed'.
+ $known_statuses = [ 'loading', 'completed', 'failed' ];
+ if ( 'pending' === $data['status'] ) {
+ $status = 'loading';
+ } elseif ( in_array( $data['status'], $known_statuses, true ) ) {
+ $status = $data['status'];
+ } else {
+ $status = 'failed';
+ }
+
+ $formatted = [];
+ foreach ( $data['recommendations'] ?? [] as $recommendation ) {
+ $slug = $recommendation['option_slug'] ?? '';
+ $actionable = in_array( $slug, self::MCP_ACTIONABLE_OPTION_SLUGS, true );
+ $formatted[] = [
+ 'option_slug' => $slug,
+ 'title' => $recommendation['title'] ?? '',
+ 'description' => $recommendation['description'] ?? '',
+ 'mcp_actionable' => $actionable,
+ 'mcp_ability' => $actionable ? 'wp-rocket/set-option' : null,
+ ];
+ }
+
+ return [
+ 'status' => $status,
+ 'recommendations' => $formatted,
+ ];
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/RemovePageInsights.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/RemovePageInsights.php
new file mode 100644
index 000000000..5f9bc5708
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/RemovePageInsights.php
@@ -0,0 +1,178 @@
+context = $context;
+ $this->query = $query;
+ }
+
+ /**
+ * Registers the ability to remove page insights.
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/remove-page-insights',
+ [
+ 'label' => __( 'Remove Page Insights', 'rocket' ),
+ 'description' => _x(
+ 'Permanently removes a URL from Rocket Insights monitoring and deletes its historical score data.
+Use this only when the user explicitly asks to stop monitoring a page and accepts data deletion. Do not use it for pausing or retesting.
+This action is destructive and non-idempotent. Before calling, explicitly confirm the exact URL with the user. Never remove multiple pages in bulk; require separate confirmation for each URL.',
+ 'Ability description',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-insights',
+ 'input_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'url' => [
+ 'type' => 'string',
+ 'format' => 'uri',
+ 'description' => __( 'Full URL of the page to remove from Rocket Insights monitoring.', 'rocket' ),
+ ],
+ ],
+ 'required' => [ 'url' ],
+ ],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'success' => [
+ 'type' => 'boolean',
+ 'description' => __( 'Indicates whether the page was successfully removed', 'rocket' ),
+ ],
+ 'error' => [
+ 'type' => 'string',
+ 'description' => __( 'Error message if the page could not be removed', 'rocket' ),
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'show_in_rest' => true,
+ 'annotations' => [
+ 'readonly' => false,
+ 'destructive' => true,
+ 'idempotent' => false,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to execute this ability.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to remove a page from Rocket Insights monitoring.
+ *
+ * @param array $input The input data containing the URL to be removed.
+ *
+ * @return array
+ */
+ public function execute( $input = null ): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/remove-page-insights',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ if ( ! $this->context->is_allowed() ) {
+ return [
+ 'success' => false,
+ 'error' => 'Performance monitoring is disabled.',
+ ];
+ }
+
+ $url = rocket_add_url_protocol( $input['url'] );
+
+ $rows = $this->query->get_rows_by_url( $url );
+
+ if ( empty( $rows ) ) {
+ return [
+ 'success' => false,
+ 'error' => 'URL is not currently being monitored.',
+ ];
+ }
+
+ // A page can have both a mobile and a desktop row; remove all of them.
+ $deleted_id = null;
+ foreach ( $rows as $row ) {
+ if ( $this->query->delete_item( $row->id ) ) {
+ $deleted_id = $row->id;
+ }
+ }
+
+ // Nothing was removed (e.g. the rows were deleted concurrently); skip the side-effects.
+ if ( null === $deleted_id ) {
+ return [
+ 'success' => false,
+ 'error' => 'URL is not currently being monitored.',
+ ];
+ }
+
+ /**
+ * Fires when a performance monitoring job is deleted.
+ *
+ * Removing a page is a single logical event: the listeners reset the global
+ * score and refresh recommendations globally, so the action is fired once even
+ * when several rows (mobile and desktop) were removed.
+ *
+ * @since 3.20
+ *
+ * @param int $id The ID of a deleted performance monitoring job.
+ */
+ do_action( 'rocket_rocket_insights_job_deleted', $deleted_id );
+
+ return [
+ 'success' => true,
+ 'error' => '',
+ ];
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/RetestPageInsights.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/RetestPageInsights.php
new file mode 100644
index 000000000..eeca15cf9
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/RetestPageInsights.php
@@ -0,0 +1,311 @@
+context = $context;
+ $this->manager = $manager;
+ $this->job_processor = $job_processor;
+ $this->queue = $queue;
+ }
+
+ /**
+ * Registers the ability to retest page insights.
+ */
+ public function register(): void {
+ if ( ! function_exists( 'wp_register_ability' ) ) {
+ return;
+ }
+
+ wp_register_ability(
+ 'wp-rocket/retest-page-insights',
+ [
+ 'label' => __( 'Retest Page Insights', 'rocket' ),
+ 'description' => __(
+ 'Triggers a fresh Rocket Insights performance test for an already monitored URL. Requires a valid URI.
+Use this when the user wants a fresh test for a monitored page. Do not call it while a test is already running.
+Handle response statuses as follows: triggered means the test was queued and results should be polled with get-page-insights-score; running means a test is already in progress and should not be triggered again; not_found means the page is not tracked and add-page-insights should be offered; failed means an error occurred.
+If the user wants results, wait and check every minute with get-page-insights-score, since the test may take a few minutes.',
+ 'rocket'
+ ),
+ 'category' => 'wp-rocket-insights',
+ 'input_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'url' => [
+ 'type' => 'string',
+ 'format' => 'uri',
+ ],
+ ],
+ 'required' => [ 'url' ],
+ ],
+ 'output_schema' => [
+ 'type' => 'object',
+ 'properties' => [
+ 'success' => [
+ 'type' => 'boolean',
+ 'description' => __( 'Whether the retest was triggered', 'rocket' ),
+ ],
+ 'status' => [
+ 'type' => 'string',
+ 'enum' => [ 'running', 'triggered', 'not_found', 'failed' ],
+ 'description' => __( 'Current job status: running = test already in flight; triggered = retest queued; not_found = URL not tracked; failed = error', 'rocket' ),
+ ],
+ 'error' => [
+ 'type' => 'string',
+ 'description' => __( 'Error message if retest could not be triggered', 'rocket' ),
+ ],
+ ],
+ ],
+ 'execute_callback' => [ $this, 'execute' ],
+ 'permission_callback' => [ $this, 'check_permissions' ],
+ 'meta' => [
+ 'mcp' => [
+ 'public' => true,
+ ],
+ 'show_in_rest' => true,
+ 'annotations' => [
+ 'readonly' => false,
+ 'destructive' => false,
+ 'idempotent' => false,
+ ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to execute this ability.
+ *
+ * MCP OAuth gates only on login by design — the ability owns its permission check.
+ *
+ * @return bool
+ */
+ public function check_permissions(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Executes the ability to retest page insights.
+ *
+ * @param array $input The input data containing the URL to be retested.
+ *
+ * @return array
+ */
+ public function execute( $input = null ): array {
+ $this->track_event(
+ 'MCP Ability Executed',
+ [
+ 'ability' => 'wp-rocket/retest-page-insights',
+ 'context' => 'wp_plugin_mcp',
+ ]
+ );
+ // Guard: local environments do not support performance monitoring.
+ if ( 'local' === wp_get_environment_type() ) {
+ return [
+ 'success' => false,
+ 'status' => 'failed',
+ 'error' => 'Performance monitoring is disabled for local environment',
+ ];
+ }
+
+ // Guard: performance monitoring may be disabled via context (e.g. plan, settings).
+ if ( ! $this->context->is_allowed() ) {
+ return [
+ 'success' => false,
+ 'status' => 'failed',
+ 'error' => 'Performance monitoring is disabled.',
+ ];
+ }
+
+ // Normalize URL — add protocol if missing.
+ $url = rocket_add_url_protocol( $input['url'] );
+
+ // Look up the existing DB row for this URL. get_single_job() returns bool|object.
+ $row = $this->manager->get_single_job( $url, true );
+
+ if ( ! is_object( $row ) ) {
+ return [
+ 'success' => false,
+ 'status' => 'not_found',
+ 'error' => 'URL is not tracked by Rocket Insights.',
+ ];
+ }
+
+ // Guard: delegate running-state check to the Row object.
+ // is_running() encapsulates the canonical set ['to-submit', 'pending', 'in-progress'].
+ //
+ // Note (concurrency race): there is a TOCTOU window between this is_running() check
+ // and the reset_job() call inside add_url_to_the_queue(). A cron transition in that
+ // window could clobber a newly in-flight job. This is accepted best-effort behavior —
+ // Rest::update_item() has the identical race and ships without additional locking.
+ if ( $row->is_running() ) {
+ return [
+ 'success' => true,
+ 'status' => 'running',
+ 'error' => '',
+ ];
+ }
+
+ // Build submission details with stale-score reset fields.
+ //
+ // score, report_url, and is_blurred are passed through add_to_the_queue() →
+ // add_url_to_the_queue() → reset_job(), which clears the previous result from the
+ // DB row immediately. Without these fields the row retains the old score until the new
+ // test completes, causing get-insights-scores to return stale data during the retest window.
+ //
+ // Note (stuck rows): a row permanently stuck in a running state (e.g. cron crashed after
+ // submission) will cause is_running() to return true indefinitely, blocking retests. The
+ // only recovery path is manual deletion from the admin UI. This is a pre-existing limitation
+ // shared with Rest::update_item() and is out of scope for this PR.
+ $additional_details = [
+ 'data' => [
+ 'is_retest' => true,
+ 'source' => 'mcp-ai',
+ ],
+ 'score' => '',
+ 'report_url' => '',
+ 'is_blurred' => 0,
+ ];
+
+ $row_id = $this->handle_sync_submission( $url, true, $additional_details );
+
+ if ( empty( $row_id ) ) {
+ return [
+ 'success' => false,
+ 'status' => 'failed',
+ 'error' => 'Unable to reset performance test. Please try again.',
+ ];
+ }
+
+ /**
+ * Fires when a Rocket Insights retest job is triggered via the MCP ability.
+ *
+ * @since 3.20
+ *
+ * @param int $row_id The ID of the existing row that was queued for retesting.
+ */
+ do_action( 'rocket_rocket_insights_job_retest', (int) $row->id );
+
+ return [
+ 'success' => true,
+ 'status' => 'triggered',
+ 'error' => '',
+ ];
+ }
+
+ /**
+ * Handle synchronous submission of Rocket Insights retest job.
+ *
+ * This method centralizes the logic for attempting synchronous job submission
+ * and falling back to async queuing when needed. It uses JobProcessor's send_api
+ * for the actual API call, then adds Rocket Insights-specific validation and logging.
+ *
+ * Copied verbatim from AddPageInsights::handle_sync_submission() which correctly uses
+ * Logger::info() on the success path. Do NOT copy from Rest::handle_sync_submission()
+ * which has a Logger::error()-on-success bug.
+ *
+ * @since 3.20
+ *
+ * @param string $url The URL to test.
+ * @param bool $is_mobile Whether this is a mobile test.
+ * @param array $additional_details Optional additional data to store with the job.
+ *
+ * @return bool|null Row ID on success, false on failure, null if not allowed.
+ */
+ private function handle_sync_submission( string $url, bool $is_mobile, array $additional_details = [] ) {
+ // Attempt synchronous API submission.
+ $sync_response = $this->job_processor->send_api( $url, $is_mobile, 'rocket_insights', true );
+
+ // If sync submission failed or returned WP_Error, fall back to async queue.
+ if ( false === $sync_response || empty( $sync_response['uuid'] ) ) {
+ Logger::error(
+ 'Rocket Insights: Synchronous Submission failed, Now falling back to Async Queue.',
+ [
+ 'url' => $url,
+ ]
+ );
+ return $this->manager->add_to_the_queue( $url, $is_mobile, $additional_details );
+ }
+
+ // Success! Save with the new data.
+ $row_id = $this->manager->add_to_the_queue( $url, $is_mobile, $additional_details );
+
+ if ( empty( $row_id ) ) {
+ // DB insert failed after successful API submission - log orphaned job.
+ Logger::error(
+ 'Rocket Insights: Database insert failed after successful sync submission',
+ [
+ 'url' => $url,
+ 'job_id' => $sync_response['uuid'],
+ ]
+ );
+ return false;
+ }
+
+ Logger::info(
+ 'Rocket Insights: Synchronous Submission successful, Now scheduling single job to run in 30 seconds.',
+ [
+ 'url' => $url,
+ ]
+ );
+
+ // Update to in-progress status immediately with job_id.
+ $this->manager->make_status_inprogress( $url, $is_mobile, 'rocket_insights', [ 'job_id' => $sync_response['uuid'] ] );
+ $this->queue->schedule_job_status_single_task( time() + 30, $url, $is_mobile, 'rocket_insights' );
+
+ return $row_id;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/Subscriber.php
new file mode 100644
index 000000000..8fec36432
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Abilities/Subscriber.php
@@ -0,0 +1,185 @@
+get_insights_score = $get_insights_score;
+ $this->add_page_insights = $add_page_insights;
+ $this->retest_page_insights = $retest_page_insights;
+ $this->remove_page_insights = $remove_page_insights;
+ $this->get_recommendations = $get_recommendations;
+ $this->get_page_insights_score = $get_page_insights_score;
+ $this->abilities_context = $abilities_context;
+ }
+
+ /**
+ * Returns an array of events this subscriber wants to listen to.
+ *
+ * @return array
+ */
+ public static function get_subscribed_events(): array {
+ return [
+ 'wp_abilities_api_init' => [
+ [ 'register_get_insights_scores_ability' ],
+ [ 'register_add_page_insights_ability' ],
+ [ 'register_retest_page_insights_ability' ],
+ [ 'register_remove_page_insights_ability' ],
+ [ 'register_get_recommendations_ability' ],
+ [ 'register_get_page_insights_score_ability' ],
+ ],
+ 'wp_abilities_api_categories_init' => 'register_rocket_insights_category',
+ ];
+ }
+
+ /**
+ * Registers the ability to get insights scores.
+ */
+ public function register_get_insights_scores_ability() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ $this->get_insights_score->register();
+ }
+
+ /**
+ * Registers the Rocket Insights ability category.
+ */
+ public function register_rocket_insights_category() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ if ( ! function_exists( 'wp_register_ability_category' ) ) {
+ return;
+ }
+
+ wp_register_ability_category(
+ 'wp-rocket-insights',
+ [
+ 'label' => __( 'Rocket Insights', 'rocket' ),
+ 'description' => __( 'Abilities related to Rocket Insights performance monitoring and scoring.', 'rocket' ),
+ ]
+ );
+ }
+
+ /**
+ * Registers the ability to add page insights.
+ */
+ public function register_add_page_insights_ability() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ $this->add_page_insights->register();
+ }
+
+ /**
+ * Registers the ability to retest page insights.
+ */
+ public function register_retest_page_insights_ability() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ $this->retest_page_insights->register();
+ }
+
+ /**
+ * Registers the ability to remove page insights.
+ */
+ public function register_remove_page_insights_ability() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ $this->remove_page_insights->register();
+ }
+
+ /**
+ * Registers the ability to get recommendations.
+ */
+ public function register_get_recommendations_ability() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ $this->get_recommendations->register();
+ }
+
+ /**
+ * Registers the ability to get page insights score.
+ */
+ public function register_get_page_insights_score_ability() {
+ if ( ! $this->abilities_context->is_enabled() ) {
+ return;
+ }
+
+ $this->get_page_insights_score->register();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Controller.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Controller.php
index 5b0dfa38b..112cd9503 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Controller.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Controller.php
@@ -490,4 +490,40 @@ public function track_metric_actions(): void {
wp_send_json_success();
}
+
+ /**
+ * Tracks the home page event after the user opts in to analytics.
+ *
+ * This method checks if the analytics notice has already been displayed and dismissed to ensure events are not tracked multiple times.
+ * If not, it triggers the tracking of the Rocket Insights test.
+ *
+ * @param bool $status Indicates the current status of the analytics opt-in.
+ *
+ * @return void
+ */
+ public function track_home_after_analytics_optin( bool $status ): void {
+ // Bail out if user disabled analytics.
+ if ( ! $status ) {
+ return;
+ }
+
+ // Bail out if analytics already enabled before and notice was dismissed.
+ if ( 1 === (int) get_option( 'rocket_analytics_notice_displayed' ) ) {
+ return;
+ }
+
+ $row_details = $this->query->get_row( home_url(), true );
+
+ // Bail out if row details is not found.
+ if ( empty( $row_details ) ) {
+ return;
+ }
+
+ // Bail out if test is still in progress.
+ if ( ! in_array( $row_details->status, [ 'completed', 'failed' ], true ) ) {
+ return;
+ }
+
+ $this->tracking->track_rocket_insights_test( $row_details, [], $this->plan->get_current_plan() );
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/GlobalMetrics/Calculator.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/GlobalMetrics/Calculator.php
index 96e6145c1..d41621f66 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/GlobalMetrics/Calculator.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/GlobalMetrics/Calculator.php
@@ -82,6 +82,10 @@ function () {
// Sum up all metrics.
foreach ( $tests as $test ) {
+ if ( empty( $test ) ) {
+ continue;
+ }
+
$metric_data = json_decode( $test, true );
// Skip if metric_data is empty or not an array.
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Jobs/Manager.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Jobs/Manager.php
index df6d6d4bf..a5cca86e5 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Jobs/Manager.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Jobs/Manager.php
@@ -70,12 +70,9 @@ public function __construct(
* @return array
*/
public function get_pending_jobs( int $num_rows ): array {
- $this->logger::debug( "Rocket Insights: Start getting number of {$num_rows} pending jobs." );
-
$pending_jobs = $this->query->get_pending_jobs( $num_rows );
if ( ! $pending_jobs ) {
- $this->logger::debug( 'Rocket Insights: No pending jobs are there.' );
return [];
}
@@ -157,25 +154,11 @@ public function process( array $job_details, $row_details, string $optimization_
}
if ( ! empty( $job_details['status'] ) && 'pending' === $job_details['status'] ) {
- $this->logger::info(
- 'Rocket Insights: Revert to pending because of API status is pending',
- [
- 'job_id' => $row_details->job_id,
- ]
- );
-
$this->query->revert_to_pending( $row_details->id );
+
return;
}
- $this->logger::info(
- 'Rocket Insights: Test completed successfully',
- [
- 'job_id' => $row_details->job_id,
- 'score' => $job_details['performance_score'] ?? null,
- ]
- );
-
$this->query->make_status_completed( $row_details->id, 'completed', $this->parse_test_results( $job_details ) );
$row_details = $this->query->get_row_by_id( $row_details->id );
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/PageHandlerTrait.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/PageHandlerTrait.php
deleted file mode 100644
index 0ea699d9b..000000000
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/PageHandlerTrait.php
+++ /dev/null
@@ -1,69 +0,0 @@
- tag in the given HTML, decodes any HTML entities,
- * strips all tags, sanitizes the text, and then trims the title at common separators
- * (such as " | ", " - ", " – ", " » ") to return a clean, concise page title.
- *
- * @param string $html The HTML content from which to extract the page title.
- *
- * @return string The sanitized and trimmed page title, or an empty string if not found.
- */
- public function get_page_title( string $html ): string {
- $title = '';
-
- if ( empty( $html ) ) {
- return $title;
- }
-
- // Extract title from title tag.
- if ( ! preg_match( '/]*>(.*?)<\/title>/is', $html, $matches ) ) {
- return $title;
- }
-
- // Clean up and sanitize the title.
- $title = html_entity_decode( trim( $matches[1] ), ENT_QUOTES, 'UTF-8' );
-
- if ( empty( $title ) ) {
- return $title;
- }
-
- $title = wp_strip_all_tags( $title );
- $title = sanitize_text_field( $title );
-
- return $title;
- }
-
-
- /**
- * Fetches the HTML content of a given URL using a custom user agent.
- *
- * Performs a remote GET request to the specified URL, simulating a mobile browser user agent,
- * and returns the response body if the request is successful (HTTP 200).
- *
- * @param string $url The URL to fetch the HTML content from.
- *
- * @return string|false The HTML content of the page on success, or false on failure.
- */
- public function get_page_content( string $url ) {
- $user_agent = 'WP Rocket/Fetch Page Buffer for Performance Monitoring Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1';
- $args = [
- 'user-agent' => $user_agent,
- 'timeout' => 60,
- ];
-
- $response = wp_safe_remote_get( $url, $args );
-
- if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
- return false;
- }
-
- return wp_remote_retrieve_body( $response );
- }
-}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/DataManager.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/DataManager.php
index c4973dbf3..4bd1e607b 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/DataManager.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/DataManager.php
@@ -74,6 +74,9 @@ class DataManager implements LoggerAwareInterface {
'database_all_transients' => 'database',
'sucury_waf_cache_sync' => 'addons',
'varnish_auto_purge' => 'addons',
+
+ 'plugin_rocketcdn' => 'page_cdn',
+ 'plugin_imagify' => 'imagify',
];
/**
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/SettingsSubscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/SettingsSubscriber.php
index a461e52fa..b424ac1dd 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/SettingsSubscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/SettingsSubscriber.php
@@ -6,6 +6,7 @@
use WP_Rocket\Event_Management\Subscriber_Interface;
use WP_Rocket\Logger\LoggerAware;
use WP_Rocket\Logger\LoggerAwareInterface;
+use Imagify_Partner;
/**
* Recommendations Settings Subscriber.
@@ -38,7 +39,8 @@ public function __construct( DataManager $data_manager ) {
*/
public static function get_subscribed_events(): array {
return [
- 'update_option_wp_rocket_settings' => [ 'maybe_fetch_after_settings_change', 10, 2 ],
+ 'update_option_wp_rocket_settings' => [ 'maybe_fetch_after_settings_change', 10, 2 ],
+ 'rocket_insights_api_recommendations_params' => 'maybe_add_imagify_to_recommendations_api_params',
];
}
@@ -76,6 +78,26 @@ public function maybe_fetch_after_settings_change( array $old_options, array $ne
$this->fetch_recommendations( $new_options );
}
+ /**
+ * Adds the 'plugin_imagify' option to the recommendations API parameters.
+ *
+ * Adds 'plugin_imagify' if Imagify is active OR white label is enabled.
+ *
+ * @param array $params The existing API parameters.
+ * @return array The modified API parameters with 'plugin_imagify' added if applicable.
+ */
+ public function maybe_add_imagify_to_recommendations_api_params( array $params ): array {
+ if (
+ rocket_get_constant( 'WP_ROCKET_WHITE_LABEL_ACCOUNT', false )
+ ||
+ Imagify_Partner::has_imagify_api_key()
+ ) {
+ $params['enabled_options'][] = 'plugin_imagify';
+ }
+
+ return $params;
+ }
+
/**
* Check if changed settings affect recommendations.
*
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/Subscriber.php
index 980dbe19e..79ceee492 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/Subscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Recommendations/Subscriber.php
@@ -64,6 +64,8 @@ public static function get_subscribed_events(): array {
'rocket_insights_recommendations_rest_response' => 'output_recommendations_rest_response',
'wp_rocket_upgrade' => [ 'force_global_metrics_recalculation', 10, 2 ],
'rocket_rocket_insights_job_deleted' => 'maybe_clear_recommendations_on_delete',
+ 'activated_plugin' => 'maybe_clear_recommendations',
+ 'deactivated_plugin' => 'maybe_clear_recommendations',
];
}
@@ -159,6 +161,25 @@ public function force_global_metrics_recalculation( string $new_version, string
$this->data_manager->force_global_metrics_recalculation();
}
+ /**
+ * Clear recommendations if relevant plugin(Imagify/RocketCDN) is activated or deactivated.
+ *
+ * @param string $plugin The plugin being activated or deactivated.
+ * @return void
+ */
+ public function maybe_clear_recommendations( string $plugin ): void {
+ $allowed_plugins = [
+ 'imagify/imagify.php',
+ 'rocketcdn/rocketcdn.php',
+ ];
+
+ if ( ! in_array( $plugin, $allowed_plugins, true ) ) {
+ return;
+ }
+
+ $this->data_manager->clear_recommendations();
+ }
+
/**
* Fetches recommendations on page load.
*
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Rest.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Rest.php
index 79181f6c2..207a5ec52 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Rest.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Rest.php
@@ -17,6 +17,7 @@
use WP_Rocket\Engine\Common\{
JobManager\JobProcessor,
JobManager\Queue\Queue,
+ Page\PageHandlerTrait,
Utils
};
use WP_Rocket\Logger\Logger;
@@ -462,6 +463,46 @@ public function create_item( $request ) {
return rest_ensure_response( $payload );
}
+ /**
+ * Validate url
+ *
+ * @param string $url The URL to validate.
+ *
+ * @return array
+ */
+ private function get_url_validation_payload( string $url ) {
+ // Validate that performance monitoring is not disabled.
+ if ( ! $this->context->is_allowed() ) {
+ $payload['error'] = true;
+ $payload['message'] = 'Performance monitoring is disabled.';
+
+ return $payload;
+ }
+
+ if ( 'local' === wp_get_environment_type() ) {
+ $payload['error'] = true;
+ $payload['message'] = 'Performance monitoring is disabled for local environment';
+
+ return $payload;
+ }
+
+ $payload = $this->get_page_url_validation_payload( $url );
+
+ if ( $payload['error'] ) {
+ return $payload;
+ }
+
+ // Check if url has not been submited.
+ if ( false !== $this->manager->get_single_job( $url, true ) ) {
+ $payload['error'] = true;
+ $payload['message'] = '';
+
+ return $payload;
+ }
+
+ return $payload;
+ }
+
/**
* Checks if a given request has access to create items.
*
@@ -752,83 +793,6 @@ public function get_progress_permissions_check( $request ) {
return true;
}
- /**
- * Validates a given URL for performance monitoring eligibility.
- *
- * @param string $url The URL to validate.
- *
- * @return array {
- * @type bool $error Whether an error occurred during validation.
- * @type string $message The error message, or an empty string if no error.
- * @type string $processed_url The URL with protocol added if validation passes.
- * }
- */
- protected function get_url_validation_payload( string $url ): array {
- $payload = [
- 'error' => false,
- 'message' => '',
- 'processed_url' => '',
- 'data' => [
- 'status' => 400,
- ],
- ];
-
- if ( 'local' === wp_get_environment_type() ) {
- $payload['error'] = true;
- $payload['message'] = 'Performance monitoring is disabled for local environment';
-
- return $payload;
- }
-
- // Validate that performance monitoring is not disabled.
- if ( ! $this->context->is_allowed() ) {
- $payload['error'] = true;
- $payload['message'] = 'Performance monitoring is disabled.';
-
- return $payload;
- }
- // Validate that url is not empty.
- if ( '' === $url ) {
- $payload['error'] = true;
- $payload['message'] = 'No url provided.';
-
- return $payload;
- }
-
- // Check if URL has protocol, add if needed.
- $url = rocket_add_url_protocol( $url );
- $payload['processed_url'] = $url;
-
- $response = $this->get_page_content( $url );
-
- if ( ! $response ) {
- $payload['error'] = true;
- $payload['message'] = 'Url does not resolve to a valid page.';
-
- return $payload;
- }
-
- // check if url is not from admin.
- if ( strpos( $url, admin_url() ) === 0 ) {
- $payload['error'] = true;
- $payload['message'] = 'Url is an admin page.';
-
- return $payload;
- }
-
- // Check if url has not been submited.
- if ( false !== $this->manager->get_single_job( $url, true ) ) {
- $payload['error'] = true;
-
- return $payload;
- }
-
- // Fetch url body and send to payload.
- $payload['message'] = $response;
-
- return $payload;
- }
-
/**
* Retrieves the global performance score payload for AJAX responses.
*
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/ServiceProvider.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/ServiceProvider.php
index dedfcf0f9..2f302714a 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/ServiceProvider.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/ServiceProvider.php
@@ -5,7 +5,15 @@
use WP_Rocket\Dependencies\League\Container\Argument\Literal\StringArgument;
use WP_Rocket\Dependencies\League\Container\ServiceProvider\AbstractServiceProvider;
-use WP_Rocket\Engine\Admin\RocketInsights\{Database\Tables\RocketInsights as RITable,
+use WP_Rocket\Engine\Admin\RocketInsights\{
+ Abilities\GetInsightsScore,
+ Abilities\AddPageInsights,
+ Abilities\RetestPageInsights,
+ Abilities\RemovePageInsights,
+ Abilities\GetRecommendations,
+ Abilities\GetPageInsightsScore,
+ Abilities\Subscriber as AbilitiesSubscriber,
+ Database\Tables\RocketInsights as RITable,
Database\Queries\RocketInsights as RIQuery,
APIHandler\APIClient as RIAPIClient,
Context\Context,
@@ -68,6 +76,13 @@ class ServiceProvider extends AbstractServiceProvider {
'ri_recommendations_rest',
'ri_recommendations_subscriber',
'ri_recommendations_settings_subscriber',
+ 'ri_get_insights_scores_ability',
+ 'ri_add_page_insights_ability',
+ 'ri_retest_page_insights_ability',
+ 'ri_remove_page_insights_ability',
+ 'ri_get_recommendations_ability',
+ 'ri_get_page_insights_score_ability',
+ 'ri_abilities_subscriber',
];
/**
@@ -288,6 +303,68 @@ public function register(): void {
]
);
+ $this->getContainer()->add( 'ri_get_insights_scores_ability', GetInsightsScore::class )
+ ->addArguments(
+ [
+ 'ri_query',
+ 'ri_global_score',
+ ]
+ );
+
+ $this->getContainer()->add( 'ri_add_page_insights_ability', AddPageInsights::class )
+ ->addArguments(
+ [
+ 'ri_context',
+ 'ri_manager',
+ 'job_processor',
+ 'job_manager_queue',
+ 'ri_query',
+ 'ri_plan',
+ ]
+ );
+
+ $this->getContainer()->add( 'ri_retest_page_insights_ability', RetestPageInsights::class )
+ ->addArguments(
+ [
+ 'ri_context',
+ 'ri_manager',
+ 'job_processor',
+ 'job_manager_queue',
+ ]
+ );
+
+ $this->getContainer()->add( 'ri_remove_page_insights_ability', RemovePageInsights::class )
+ ->addArguments(
+ [
+ 'ri_context',
+ 'ri_query',
+ ]
+ );
+
+ $this->getContainer()->add( 'ri_get_recommendations_ability', GetRecommendations::class )
+ ->addArgument( 'ri_recommendations_data_manager' );
+
+ $this->getContainer()->add( 'ri_get_page_insights_score_ability', GetPageInsightsScore::class )
+ ->addArguments(
+ [
+ 'ri_query',
+ 'ri_plan',
+ ]
+ );
+
+ $this->getContainer()->addShared( 'ri_abilities_subscriber', AbilitiesSubscriber::class )
+ ->addArguments(
+ [
+ 'ri_get_insights_scores_ability',
+ 'ri_add_page_insights_ability',
+ 'ri_retest_page_insights_ability',
+ 'ri_remove_page_insights_ability',
+ 'ri_get_recommendations_ability',
+ 'ri_get_page_insights_score_ability',
+ 'abilities_context',
+ ]
+ );
+
// Ensure the table is created.
$this->getContainer()->get( 'ri_table' );
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Subscriber.php
index 31a3b4d2f..635aba7af 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Subscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/RocketInsights/Subscriber.php
@@ -189,6 +189,8 @@ public static function get_subscribed_events(): array {
'rocket_rocket_insights_enabled' => 'maybe_disable_for_reseller_or_non_live',
'rest_api_init' => [ 'register_routes' ],
'wp_ajax_rocket_insight_track_metric_actions' => 'track_metric_actions',
+ 'rocket_settings_saved_message' => 'update_settings_saved_message',
+ 'rocket_mixpanel_optin_changed' => 'track_home_after_analytics_optin',
];
}
@@ -758,4 +760,42 @@ public function on_update_refresh_metric_data( $new_version, $old_version ) {
public function track_metric_actions(): void {
$this->controller->track_metric_actions();
}
+
+ /**
+ * Update the settings saved message to include a note about recommendations needing to be updated.
+ *
+ * @param string $message Filtered message to update.
+ * @return string The additional message to append to the settings saved notice.
+ */
+ public function update_settings_saved_message( string $message ): string {
+ if ( ! $this->context->is_allowed() ) {
+ return $message;
+ }
+
+ $insights_url = add_query_arg(
+ [
+ 'page' => WP_ROCKET_PLUGIN_SLUG . '#rocket_insights',
+ ],
+ admin_url( 'options-general.php' )
+ );
+
+ // Moved the space outside the translatable string.
+ return ' ' . sprintf(
+ /* translators: %1$s = opening link tag, %2$s = closing link tag */
+ esc_html__( 'Your Rocket Insights results aren’t updated yet. %1$sRun a new test%2$s to get the latest recommendations.', 'rocket' ),
+ '',
+ ' '
+ );
+ }
+
+ /**
+ * Tracks the home page event after the user opts in to analytics for the first time.
+ *
+ * @param bool $status Indicates the current status of the analytics opt-in.
+ *
+ * @return void
+ */
+ public function track_home_after_analytics_optin( bool $status ): void {
+ $this->controller->track_home_after_analytics_optin( $status );
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php
index cc65379da..55badc6a7 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Page.php
@@ -3,6 +3,7 @@
use WP_Rocket\Engine\Admin\Database\Optimization;
use WP_Rocket\Engine\Admin\Beacon\Beacon;
+use WP_Rocket\Engine\CDN\RocketCDN\SubscriptionController;
use WP_Rocket\Engine\License\API\User;
use WP_Rocket\Engine\License\API\UserClient;
use WP_Rocket\Engine\Optimization\DelayJS\Admin\SiteList;
@@ -109,21 +110,28 @@ class Page extends Abstract_Render {
*/
private $ri_context;
+ /**
+ * Subscription controller instance.
+ *
+ * @var SubscriptionController
+ */
+ private $subscription_controller;
+
/**
* Creates an instance of the Page object.
*
+ * @param array $args Array of required arguments to add the admin page.
+ * @param Settings $settings Instance of Settings class.
+ * @param Render $render Render instance.
+ * @param Beacon $beacon Beacon instance.
+ * @param Optimization $optimize Database optimization instance.
+ * @param UserClient $user_client User client instance.
+ * @param SiteList $delayjs_sitelist User client instance.
+ * @param string $template_path Path to views.
+ * @param Options_Data $options WP Rocket options instance.
+ * @param Context $ri_context Rocket Insights context instance.
+ * @param SubscriptionController $subscription_controller Subscription controller instance.
* @since 3.0
- *
- * @param array $args Array of required arguments to add the admin page.
- * @param Settings $settings Instance of Settings class.
- * @param Render $render Render instance.
- * @param Beacon $beacon Beacon instance.
- * @param Optimization $optimize Database optimization instance.
- * @param UserClient $user_client User client instance.
- * @param SiteList $delayjs_sitelist User client instance.
- * @param string $template_path Path to views.
- * @param Options_Data $options WP Rocket options instance.
- * @param Context $ri_context Rocket Insights context instance.
*/
public function __construct(
array $args,
@@ -135,7 +143,8 @@ public function __construct(
SiteList $delayjs_sitelist,
$template_path,
Options_Data $options,
- Context $ri_context
+ Context $ri_context,
+ SubscriptionController $subscription_controller
) {
parent::__construct( $template_path );
$args = array_merge(
@@ -147,17 +156,18 @@ public function __construct(
$args
);
- $this->slug = $args['slug'];
- $this->title = $args['title'];
- $this->capability = $args['capability'];
- $this->settings = $settings;
- $this->render = $render;
- $this->beacon = $beacon;
- $this->optimize = $optimize;
- $this->user_client = $user_client;
- $this->delayjs_sitelist = $delayjs_sitelist;
- $this->options = $options;
- $this->ri_context = $ri_context;
+ $this->slug = $args['slug'];
+ $this->title = $args['title'];
+ $this->capability = $args['capability'];
+ $this->settings = $settings;
+ $this->render = $render;
+ $this->beacon = $beacon;
+ $this->optimize = $optimize;
+ $this->user_client = $user_client;
+ $this->delayjs_sitelist = $delayjs_sitelist;
+ $this->options = $options;
+ $this->ri_context = $ri_context;
+ $this->subscription_controller = $subscription_controller;
}
/**
@@ -212,12 +222,12 @@ public function render_page() {
if ( $rocket_valid_key ) {
$this->dashboard_section();
$this->rocket_insights_section();
+ $this->cdn_section();
$this->assets_section();
$this->media_section();
$this->preload_section();
$this->advanced_cache_section();
$this->database_section();
- $this->cdn_section();
$this->heartbeat_section();
$this->addons_section();
$this->cloudflare_section();
@@ -238,6 +248,9 @@ public function render_page() {
[
'slug' => $this->slug, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
'btn_submit_text' => $btn_submit_text, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ 'tools_page' => [
+ 'mcp_server_beacon' => $this->beacon->get_suggest( 'mcp_server' ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ ],
]
);
}
@@ -450,6 +463,7 @@ private function dashboard_section() {
'faq' => $this->beacon->get_suggest( 'faq' ),
'customer_data' => $this->customer_data(),
'rocket_insights_enabled' => $this->ri_context->is_allowed(),
+ 'is_rocketcdn_paid_user' => $this->subscription_controller->is_paid(),
]
);
}
@@ -1509,46 +1523,54 @@ private function cdn_section() {
$this->settings->add_page_section(
'page_cdn',
[
- 'title' => __( 'CDN', 'rocket' ),
- 'menu_description' => __( 'Integrate your CDN', 'rocket' ),
+ 'title' => __( 'Content Delivery', 'rocket' ),
+ 'menu_description' => __( 'Speed up page delivery', 'rocket' ),
+ /**
+ * Filters the badge label displayed on the Content Delivery settings tab.
+ *
+ * Return an empty string to suppress the badge (e.g. for existing paid subscribers).
+ *
+ * @param string $badge Badge label. Default 'NEW'.
+ * @return string
+ */
+ 'badge' => wpm_apply_filters_typed( 'string', 'rocket_cdn_tab_badge', __( 'NEW', 'rocket' ) ),
]
);
- $cdn_beacon = $this->beacon->get_suggest( 'cdn' );
- $cdn_exclude_beacon = $this->beacon->get_suggest( 'exclude_cdn' );
-
- $this->settings->add_settings_sections(
- [
- 'cdn_section' => [
- 'title' => __( 'CDN', 'rocket' ),
- 'type' => 'fields_container',
- 'description' => __( 'All URLs of static files (CSS, JS, images) will be rewritten to the CNAME(s) you provide.', 'rocket' ) . '' . sprintf(
- // translators: %1$s = opening link tag, %2$s = closing link tag.
- __( 'Not required for services like Cloudflare and Sucuri. Please see our available %1$sAdd-ons%2$s.', 'rocket' ),
- '',
- ' '
- ) . ' ',
- 'help' => [
- 'id' => $this->beacon->get_suggest( 'cdn_section' ),
- 'url' => $cdn_beacon['url'],
- ],
- 'page' => 'page_cdn',
+ $cdn_beacon = $this->beacon->get_suggest( 'own_cdn' );
+
+ $cdn_sections = [
+ 'cdn_section' => [
+ 'title' => __( 'Your CDN', 'rocket' ),
+ 'type' => 'your_own_cdn',
+ 'help' => [
+ 'id' => $cdn_beacon['id'],
+ 'url' => $cdn_beacon['url'],
+ ],
+ 'page' => 'page_cdn',
+ 'class' => [ 'your-own-cdn' ],
+ 'status_indicator' => [
+ // Read raw options to avoid values filtered through pre_get_rocket_option_* when RocketCDN is active.
+ // This prevents incorrect BYOCDN status display when CDN is enabled but no CNAMEs are configured.
+ 'is_active' => ! empty( ( (array) $this->options->get_options() )['cdn_cnames'] ?? [] ),
+ 'status_text' => __( 'Your CDN is active on your website', 'rocket' ),
+ 'paused_status_text' => __( 'RocketCDN is paused', 'rocket' ),
+ 'hide_pause_btn' => true,
],
- 'cnames_section' => [
- 'type' => 'nocontainer',
- 'page' => 'page_cdn',
- ],
- 'exclude_cdn_section' => [
- 'title' => __( 'Exclude files from CDN', 'rocket' ),
- 'type' => 'fields_container',
- 'help' => [
- 'id' => $cdn_exclude_beacon['id'],
- 'url' => $cdn_exclude_beacon['url'],
- ],
- 'page' => 'page_cdn',
- ],
- ]
- );
+ ],
+ ];
+
+ /**
+ * Filters the CDN driver sections.
+ *
+ * Allows adding or modifying sections for different CDN drivers
+ * (Built-in CDN, RocketCDN Unlimited, Your own CDN).
+ *
+ * @param array $cdn_driver_sections CDN driver sections data.
+ */
+ $cdn_sections = wpm_apply_filters_typed( 'array', 'rocket_cdn_driver_sections', $cdn_sections );
+
+ $this->settings->add_settings_sections( $cdn_sections );
$maybe_display_cdn_helper = '';
@@ -1588,7 +1610,7 @@ private function cdn_section() {
apply_filters(
'rocket_cdn_settings_fields',
[
- 'cdn' => [
+ 'cdn' => [
'type' => 'checkbox',
'label' => __( 'Enable Content Delivery Network', 'rocket' ),
'helper' => $maybe_display_cdn_helper,
@@ -1596,24 +1618,16 @@ private function cdn_section() {
'page' => 'page_cdn',
'default' => 0,
'sanitize_callback' => 'sanitize_checkbox',
- ],
- 'cdn_cnames' => [
- 'type' => 'cnames',
- 'label' => __( 'CDN CNAME(s)', 'rocket' ),
- 'description' => __( 'Specify the CNAME(s) below', 'rocket' ),
- 'default' => [],
- 'section' => 'cnames_section',
- 'page' => 'page_cdn',
- ],
- 'cdn_reject_files' => [
- 'type' => 'textarea',
- 'description' => __( 'Specify URL(s) of files that should not get served via CDN (one per line).', 'rocket' ),
- 'helper' => __( 'The domain part of the URL will be stripped automatically. Use (.*) wildcards to exclude all files of a given file type located at a specific path.', 'rocket' ),
- 'placeholder' => '/wp-content/plugins/some-plugins/(.*).css',
- 'section' => 'exclude_cdn_section',
- 'page' => 'page_cdn',
- 'default' => [],
- 'sanitize_callback' => 'sanitize_textarea',
+ 'container_class' => [ 'wpr-isHidden' ],
+ ],
+ 'cdn_cnames' => [
+ 'type' => 'cnames',
+ 'label' => __( 'CDN CNAME(s)', 'rocket' ),
+ 'description' => __( 'Specify the CNAME(s) below', 'rocket' ),
+ 'default' => [],
+ 'section' => 'cdn_section',
+ 'page' => 'page_cdn',
+ 'container_class' => [ 'your-own-cdn' ],
],
]
)
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Render.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Render.php
index 9ee344c4e..87f0f1882 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Render.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Render.php
@@ -209,10 +209,12 @@ public function render_tutorials_section() {
/**
* Render the tools page section.
*
+ * @param array $data Data to pass to the template.
+ *
* @since 3.0
*/
- public function render_tools_section() {
- echo $this->generate( 'page-sections/tools' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ public function render_tools_section( $data = [] ) {
+ echo $this->generate( 'page-sections/tools', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
}
/**
@@ -323,6 +325,54 @@ public function addons_container( $args ) {
echo $this->generate( 'sections/addons-container', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
}
+ /**
+ * Displays the Your Own CDN section template.
+ *
+ * This is a section for configuring your own CDN settings.
+ * It includes the PAUSE CDN button.
+ *
+ * @param array $args Array of arguments to populate the template.
+ */
+ public function your_own_cdn( $args ) {
+ echo $this->generate( 'sections/cdn/your-own-cdn', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Displays the RocketCDN Free section template.
+ *
+ * @param array $args Array of arguments to populate the template.
+ */
+ public function rocketcdn_free( $args ) {
+ echo $this->generate( 'sections/cdn/rocketcdn-free', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Displays the RocketCDN Paid section template.
+ *
+ * @param array $args Array of arguments to populate the template.
+ */
+ public function rocketcdn_paid( $args ) {
+ echo $this->generate( 'sections/cdn/rocketcdn-paid', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Displays the purge CDN cache section template.
+ *
+ * @param array $args Array of arguments to populate the template.
+ */
+ public function purge_cdn_cache_section( $args ) {
+ echo $this->generate( 'sections/cdn/purge-cdn-cache', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Displays the no container with title section template.
+ *
+ * @param array $args Array of arguments to populate the template.
+ */
+ public function nocontainer_with_title( $args ) {
+ echo $this->generate( 'sections/nocontainer-with-title', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
/**
* Displays the text field template.
*
@@ -364,6 +414,23 @@ public function textarea( $args ) {
echo $this->generate( 'fields/textarea', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
}
+ /**
+ * Displays the textarea with container field template.
+ *
+ * @since 3.22
+ *
+ * @param array $args Array of arguments to populate the template.
+ */
+ public function textarea_with_container( $args ) {
+ if ( is_array( $args['value'] ) ) {
+ $args['value'] = implode( "\n", $args['value'] );
+ }
+
+ $args['value'] = empty( $args['value'] ) ? '' : $args['value'];
+
+ echo $this->generate( 'fields/textarea-with-container', $args ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
/**
* Displays the sliding checkbox field template.
*
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/ServiceProvider.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/ServiceProvider.php
index 1f0808b51..f3047305a 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/ServiceProvider.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/ServiceProvider.php
@@ -74,6 +74,7 @@ public function register(): void {
'template_path',
'options',
'ri_context',
+ 'rocketcdn_subscription_controller',
]
);
$this->getContainer()->addShared( 'settings_page_subscriber', Subscriber::class )
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Settings.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Settings.php
index f590f59dd..cce8f67e1 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Settings.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Settings.php
@@ -385,6 +385,12 @@ public function sanitize_callback( $input ) {
$input['cdn_zone'] = array_values( $input['cdn_zone'] );
}
+ if ( ! empty( $input['cdn_reject_pages'] ) ) {
+ $input['cdn_reject_pages'] = rocket_sanitize_textarea_field( 'cdn_reject_pages', $input['cdn_reject_pages'] );
+ } else {
+ $input['cdn_reject_pages'] = [];
+ }
+
// Option : Files to exclude from the CDN process.
if ( ! empty( $input['cdn_reject_files'] ) ) {
$input['cdn_reject_files'] = rocket_sanitize_textarea_field( 'cdn_reject_files', $input['cdn_reject_files'] );
@@ -421,7 +427,16 @@ function ( $error ) {
);
if ( ! $notices ) {
- add_settings_error( 'general', 'settings_updated', __( 'Settings saved.', 'rocket' ), 'updated' );
+ $message = __( 'Settings saved.', 'rocket' );
+
+ /**
+ * Filters the appended message to the "Settings saved." admin notice.
+ *
+ * @param string $appended_message The appended message.
+ */
+ $message .= wpm_apply_filters_typed( 'string', 'rocket_settings_saved_message', '' );
+
+ add_settings_error( 'general', 'settings_updated', $message, 'updated' );
}
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Subscriber.php
index c3b903eb4..660bba506 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Subscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/Admin/Settings/Subscriber.php
@@ -140,8 +140,9 @@ public function add_admin_page() {
* @since 3.7.4
*
* @param string $menu_title The text to be used for the menu.
+ * @param string $context Filter context, adminmenu or adminbar.
*/
- apply_filters( 'rocket_menu_title', $this->page->get_title() ),
+ wpm_apply_filters_typed( 'string', 'rocket_menu_title', $this->page->get_title(), 'adminmenu' ),
$this->page->get_capability(),
$this->page->get_slug(),
[ $this->page, 'render_page' ]
@@ -199,7 +200,8 @@ public function add_menu_tools_page( $navigation ) {
$navigation['tools'] = [
'id' => 'tools',
'title' => __( 'Tools', 'rocket' ),
- 'menu_description' => __( 'Import, Export, Rollback', 'rocket' ),
+ 'menu_description' => __( 'Export, import, rollback, and set up MCP', 'rocket' ),
+ 'badge' => __( 'NEW', 'rocket' ),
];
return $navigation;
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Admin/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Admin/Subscriber.php
index 281259b49..5189d463c 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/Admin/Subscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Admin/Subscriber.php
@@ -4,6 +4,7 @@
namespace WP_Rocket\Engine\CDN\Admin;
use WP_Rocket\Event_Management\Subscriber_Interface;
+use WP_Rocket\Engine\CDN\Context;
class Subscriber implements Subscriber_Interface {
/**
@@ -13,7 +14,9 @@ class Subscriber implements Subscriber_Interface {
*/
public static function get_subscribed_events() {
return [
- 'rocket_meta_boxes_fields' => [ 'add_meta_box', 9 ],
+ 'rocket_meta_boxes_fields' => [ 'add_meta_box', 9 ],
+ 'rocket_hidden_settings_fields' => [ 'add_cdn_type', 10 ],
+ 'rocket_input_sanitize' => 'sanitize_cdn_type_option',
];
}
@@ -25,8 +28,52 @@ public static function get_subscribed_events() {
* @return string[]
*/
public function add_meta_box( array $fields ) {
- $fields['cdn'] = __( 'CDN', 'rocket' );
+ /*
+ * Hiding the CDN option in the metabox for now.
+ * We will revisit this when handling CDN status for different pages/posts.
+ *
+ * $fields['cdn'] = __( 'CDN', 'rocket' );
+ */
return $fields;
}
+
+ /**
+ * Add CDN to the list of hidden settings fields.
+ *
+ * @param string[] $fields Hidden settings fields.
+ *
+ * @return string[]
+ */
+ public function add_cdn_type( array $fields ) {
+ $fields[] = 'cdn_type';
+
+ return $fields;
+ }
+
+ /**
+ * Sanitize the CDN type option.
+ *
+ * @param array $input Input array.
+ *
+ * @return array
+ */
+ public function sanitize_cdn_type_option( array $input ) {
+ // Set default value if empty.
+ if ( empty( $input['cdn_type'] ) ) {
+ $input['cdn_type'] = Context::ROCKETCDN_TYPE;
+ }
+
+ $allowed_drivers = [ Context::ROCKETCDN_TYPE, Context::BYOCDN_TYPE ];
+
+ // Validate that the value is one of the allowed drivers.
+ if ( ! in_array( $input['cdn_type'], $allowed_drivers, true ) ) {
+ $input['cdn_type'] = Context::ROCKETCDN_TYPE;
+ }
+
+ // Sanitize the value.
+ $input['cdn_type'] = sanitize_text_field( $input['cdn_type'] );
+
+ return $input;
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/CDN.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/CDN.php
index ba864553d..dec12e2a6 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/CDN.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/CDN.php
@@ -5,6 +5,7 @@
use WP_Rocket\Admin\Options_Data;
use WP_Rocket\Engine\Support\CommentTrait;
+use WP_Rocket\Engine\CDN\CNAMEValidator;
/**
* CDN class
@@ -28,13 +29,31 @@ class CDN {
*/
private $home_host;
+ /**
+ * CNAME Validator instance
+ *
+ * @var CNAMEValidator
+ */
+ private $cname_validator;
+
+ /**
+ * Context instance.
+ *
+ * @var Context
+ */
+ private $context;
+
/**
* Constructor
*
- * @param Options_Data $options WP Rocket Options instance.
+ * @param Options_Data $options WP Rocket Options instance.
+ * @param CNAMEValidator $cname_validator CNAME Validator instance.
+ * @param Context $context Context instance.
*/
- public function __construct( Options_Data $options ) {
- $this->options = $options;
+ public function __construct( Options_Data $options, CNAMEValidator $cname_validator, Context $context ) {
+ $this->options = $options;
+ $this->cname_validator = $cname_validator;
+ $this->context = $context;
}
/**
@@ -232,6 +251,16 @@ public function get_cdn_urls( $zones = [ 'all' ] ) {
*/
$hosts = (array) apply_filters( 'rocket_cdn_cnames', $hosts, $zones );
$hosts = array_filter( $hosts );
+
+ if ( ! $this->context->is_rocketcdn() ) {
+ $hosts = array_filter(
+ $hosts,
+ function ( $url ) {
+ return $this->cname_validator->is_valid( rocket_add_url_protocol( $url ) );
+ }
+ );
+ }
+
$hosts = array_flip( array_flip( $hosts ) );
$hosts = array_values( $hosts );
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/CNAMEValidator.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/CNAMEValidator.php
new file mode 100644
index 000000000..904c0178d
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/CNAMEValidator.php
@@ -0,0 +1,82 @@
+build_check_url( $cname_url );
+ $response = wp_remote_head( $check_url, [ 'timeout' => 5 ] );
+
+ if ( is_wp_error( $response ) ) {
+ set_transient( $transient_key, 0, DAY_IN_SECONDS );
+ return false;
+ }
+
+ $code = isset( $response['response']['code'] ) ? (int) $response['response']['code'] : 0; // @phpstan-ignore-line - code may be absent in certain HTTP transport error states
+ $valid = 404 !== $code ? 1 : 0;
+
+ set_transient( $transient_key, $valid, DAY_IN_SECONDS );
+
+ return (bool) $valid;
+ }
+
+ /**
+ * Deletes cached validation results for the given CNAME URLs.
+ *
+ * Called when CDN settings are saved so stale cached results are not used
+ * after the user updates their CNAME list.
+ *
+ * @since 3.22.0.3
+ *
+ * @param array $cname_urls List of CNAME URLs whose transients should be deleted.
+ * @return void
+ */
+ public function clear_validation_cache( array $cname_urls ): void {
+ foreach ( $cname_urls as $url ) {
+ delete_transient( 'rocket_cname_valid_' . md5( rocket_add_url_protocol( $url ) ) );
+ }
+ }
+
+ /**
+ * Builds the URL to probe by replacing the site host with the CDN host in the
+ * active theme's stylesheet URI.
+ *
+ * Using style.css guarantees the file exists on any WordPress install and
+ * that the check works with any CDN provider — not just RocketCDN.
+ *
+ * @since 3.22.0.3
+ *
+ * @param string $cname_url CDN URL.
+ * @return string
+ */
+ private function build_check_url( string $cname_url ): string {
+ $stylesheet_path = wp_parse_url( get_stylesheet_uri(), PHP_URL_PATH ) ?? '';
+ $cname_host = wp_parse_url( rocket_add_url_protocol( $cname_url ), PHP_URL_HOST ) ?? '';
+
+ return 'https://' . $cname_host . $stylesheet_path;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Cache.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Cache.php
new file mode 100644
index 000000000..517abafea
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Cache.php
@@ -0,0 +1,52 @@
+query = $query;
+ }
+
+ /**
+ * Clear all site's cache.
+ *
+ * @return void
+ */
+ public function clear_all_cache(): void {
+ rocket_clean_domain();
+ }
+
+ /**
+ * Clear rocketCDN free pages cache.
+ *
+ * @return void
+ */
+ public function clear_rocketcdn_free_pages_cache(): void {
+ $pages = $this->query->get_all();
+
+ foreach ( $pages as $page ) {
+ if ( empty( $page->url ) ) {
+ continue;
+ }
+
+ Utils::clean_url( $page->url );
+ }
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Context.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Context.php
new file mode 100644
index 000000000..e502100a0
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Context.php
@@ -0,0 +1,116 @@
+options = $options;
+ $this->subscription_controller = $subscription_controller;
+ }
+
+ /**
+ * Gets the currently active CDN driver.
+ *
+ * @return string
+ */
+ public function get_driver(): string {
+ $cdn_type = $this->get_cdn_type();
+
+ if ( self::ROCKETCDN_TYPE !== $cdn_type ) {
+ return self::BYOCDN_TYPE;
+ }
+
+ return $this->rocketcdn_resolver();
+ }
+
+ /**
+ * Get CDN Type.
+ *
+ * @return string
+ */
+ public function get_cdn_type(): string {
+ return (string) $this->options->get( 'cdn_type', self::ROCKETCDN_TYPE );
+ }
+
+ /**
+ * Is rocketcdn tab is selected.
+ *
+ * @return bool
+ */
+ public function is_rocketcdn() {
+ return self::ROCKETCDN_TYPE === $this->get_cdn_type();
+ }
+
+ /**
+ * Gets the free page limit for the RocketCDN free tier.
+ *
+ * @return int
+ */
+ public function get_free_page_limit(): int {
+ return 3;
+ }
+
+ /**
+ * Resolves RocketCDN to either free or paid type.
+ *
+ * @return string
+ */
+ private function rocketcdn_resolver(): string {
+ if ( ! $this->subscription_controller->has_active_subscription() && $this->subscription_controller->is_cancelled_outside_grace_period() ) {
+ return self::ROCKETCDN_TYPE;
+ }
+
+ if ( $this->subscription_controller->is_paid() ) {
+ return self::ROCKETCDN_PAID_TYPE;
+ }
+
+ return self::ROCKETCDN_FREE_TYPE;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/Custom.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/Custom.php
new file mode 100644
index 000000000..529ca374a
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/Custom.php
@@ -0,0 +1,16 @@
+container = $container;
+ $this->context = $context;
+ }
+
+ /**
+ * Create appropriate driver based on current context
+ *
+ * @return DriverInterface|null Driver container ID.
+ */
+ public function create(): ?DriverInterface {
+ $active_driver = $this->context->get_driver();
+
+ switch ( $active_driver ) {
+ case Context::ROCKETCDN_FREE_TYPE:
+ return $this->container->get( 'cdn_driver_free' );
+
+ case Context::ROCKETCDN_PAID_TYPE:
+ return $this->container->get( 'cdn_driver_paid' );
+
+ case Context::BYOCDN_TYPE:
+ return $this->container->get( 'cdn_driver_byocdn' );
+
+ default:
+ return null;
+ }
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/DriverInterface.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/DriverInterface.php
new file mode 100644
index 000000000..940aa7c28
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/DriverInterface.php
@@ -0,0 +1,15 @@
+query = $query;
+ }
+
+ /**
+ * Should rewrite url or not.
+ *
+ * @param string $url Page Url to check.
+ * @return bool
+ */
+ public function should_rewrite_url( string $url ): bool {
+ return $this->query->is_url_found( $url );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/RocketCDNPaid.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/RocketCDNPaid.php
new file mode 100644
index 000000000..1fe534f05
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Drivers/RocketCDNPaid.php
@@ -0,0 +1,119 @@
+options = $options;
+ }
+
+ /**
+ * Should rewrite url or not.
+ *
+ * @param string $url Page Url to check.
+ * @return bool
+ */
+ public function should_rewrite_url( string $url ): bool {
+ // Get excluded pages from options.
+ $excluded_pages = $this->get_excluded_pages();
+
+ // Check if URL is in excluded list.
+ foreach ( $excluded_pages as $excluded_pattern ) {
+ $normalized_pattern = $this->normalize_pattern( $excluded_pattern );
+ if ( $this->matches_pattern( $url, $normalized_pattern ) ) {
+ return false; // This page is excluded, don't rewrite.
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Get excluded pages from options
+ *
+ * @return array
+ */
+ private function get_excluded_pages(): array {
+ $excluded = $this->options->get( 'cdn_reject_pages', [] );
+ return is_array( $excluded ) ? $excluded : [];
+ }
+
+ /**
+ * Check if URL matches exclusion pattern
+ *
+ * @param string $url URL to check.
+ * @param string $pattern Pattern to match against.
+ * @return bool
+ */
+ private function matches_pattern( string $url, string $pattern ): bool {
+ if ( empty( $pattern ) ) {
+ return false; // Empty pattern should not match anything.
+ }
+
+ return ! empty(
+ $this->find(
+ preg_quote( $pattern, '/' ),
+ $url
+ )
+ );
+ }
+
+ /**
+ * Normalize pattern for matching
+ *
+ * Handles:
+ * 1. Trailing slashes (e.g., /category/ => /category)
+ * 2. Non-Latin characters (e.g., категории => URL-encoded)
+ * 3. Inconsistent URL encoding
+ *
+ * @param string $pattern Pattern to normalize.
+ * @return string Normalized pattern.
+ */
+ private function normalize_pattern( string $pattern ): string {
+ $pattern = untrailingslashit( $pattern );
+
+ // This ensures "категории" becomes "%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8".
+ $pattern = $this->encode_non_latin_chars( $pattern );
+
+ return $pattern;
+ }
+
+ /**
+ * URL-encode non-Latin characters in pattern
+ *
+ * Converts UTF-8 characters (like Cyrillic, Arabic, CJK) to URL-encoded form.
+ * This matches how WordPress and browsers encode URLs.
+ *
+ * @param string $pattern Pattern with possible non-Latin chars.
+ * @return string Pattern with non-Latin chars URL-encoded.
+ */
+ private function encode_non_latin_chars( string $pattern ): string {
+ if ( empty( $pattern ) ) {
+ return '';
+ }
+ // Use rawurlencode to match browser URL encoding.
+ // But preserve the path structure (don't encode /).
+ $parts = explode( '/', $pattern );
+ $encoded_parts = array_map( 'rawurlencode', $parts );
+
+ return implode( '/', $encoded_parts );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Render/Controller.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Render/Controller.php
new file mode 100644
index 000000000..51c024690
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Render/Controller.php
@@ -0,0 +1,963 @@
+beacon = $beacon;
+ $this->context = $context;
+ $this->options = $options;
+ $this->cdn_query = $cdn_query;
+ $this->subscription_controller = $subscription_controller;
+ $this->user = $user;
+ $this->cache = $cache;
+ }
+
+ /**
+ * Adds the RocketCDN Paid section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_rocketcdn_paid_section( array $sections ): array {
+ if ( Context::ROCKETCDN_PAID_TYPE !== $this->context->get_driver() ) {
+ return $sections;
+ }
+
+ $cdn_beacon = $this->beacon->get_suggest( 'rocketcdn' );
+
+ $status_indicator_data = $this->get_status_indicator_data( 1, $this->is_subscription_loading(), false );
+ $status_indicator_data['class'] .= ' wpr-cdn-status-pronounced rocketcdn';
+
+ $sections['rocketcdn_paid_section'] = [
+ 'title' => __( 'RocketCDN', 'rocket' ),
+ 'type' => 'rocketcdn_paid',
+ 'class' => [ 'rocketcdn' ],
+ 'page' => 'page_cdn',
+ 'help' => [
+ 'id' => $cdn_beacon['id'],
+ 'url' => $cdn_beacon['url'],
+ ],
+ 'status_indicator' => $status_indicator_data,
+ ];
+
+ return $sections;
+ }
+
+ /**
+ * Adds the RocketCDN Free section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_rocketcdn_free_section( array $sections ): array {
+ if ( Context::ROCKETCDN_PAID_TYPE === $this->context->get_driver() ) {
+ return $sections;
+ }
+
+ $classes = [ 'rocketcdn' ];
+ $is_subscription_loading = $this->is_subscription_loading();
+ $this->page_count = count( $this->get_items() );
+ $cta_heading = sprintf(
+ // translators: %1$s = opening strong tag, %2$s = closing strong tag.
+ __( '%1$sWant full-site Content Delivery coverage?%2$s Extend RocketCDN to all your pages with unlimited bandwidth.', 'rocket' ),
+ '',
+ ' '
+ );
+
+ $cta_heading_max_limit = sprintf(
+ // translators: %1$s = opening strong tag, %2$s = number of pages allowed, %3$s = closing strong tag.
+ __( '%1$sNice work! You’re using RocketCDN on %2$s key pages!%3$s ', 'rocket' ),
+ '',
+ $this->context->get_free_page_limit(),
+ ' '
+ );
+
+ $cta_description = __( 'Upgrade to RocketCDN Pro to extend faster content delivery across all your pages from 100+ edge locations worldwide.', 'rocket' );
+
+ $limit_reached = $this->page_count >= $this->context->get_free_page_limit();
+
+ // Disable input field and buttons when 3 pages are added.
+ if ( $limit_reached || $is_subscription_loading ) {
+ $classes[] = 'wpr-cdn-built-in--disabled';
+ }
+
+ if ( $this->is_cdn_paused() ) {
+ $classes[] = 'wpr-cdn-built-in--paused';
+ }
+
+ $cdn_beacon = $this->beacon->get_suggest( 'rocketcdn_free' );
+
+ $sections['rocketcdn_free_section'] = [
+ 'title' => __( 'RocketCDN', 'rocket' ),
+ 'type' => 'rocketcdn_free',
+ 'class' => $classes,
+ 'page' => 'page_cdn',
+ 'help' => [
+ 'id' => $cdn_beacon['id'],
+ 'url' => $cdn_beacon['url'],
+ ],
+ 'status_indicator' => $this->get_status_indicator_data( $this->page_count, $is_subscription_loading ),
+ 'cta_data' => [
+ 'cta_heading' => $cta_heading,
+ 'cta_heading_max_limit' => $cta_heading_max_limit,
+ 'cta_description' => $cta_description,
+ 'is_visible' => $this->page_count > 0 && ! $this->user->is_reseller_account(),
+ 'is_expanded' => $limit_reached,
+ 'limit_reached' => $limit_reached,
+ ],
+ 'limit_reached' => $limit_reached,
+ ];
+
+ return $sections;
+ }
+
+ /**
+ * Adds the Purge CDN Cache section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_purge_cdn_cache_section( array $sections ): array {
+ $cdn_beacon = $this->beacon->get_suggest( 'purge_cdn' );
+
+ if ( ! empty( $_SERVER['REQUEST_URI'] ) ) {
+ $referer_url = filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_URL );
+ }
+ $classes = [ 'rocketcdn', 'rocketcdn-shared-section' ];
+
+ $sections['purge_cdn_cache_section'] = [
+ // translators: %s is the CDN driver, wrapped in a span for JS targeting.
+ 'title' => sprintf( __( 'Purge %s Cache', 'rocket' ), 'RocketCDN ' ),
+ 'type' => 'purge_cdn_cache_section',
+ 'description' => sprintf(
+ // translators: %s = CDN driver, wrapped in a span for JS targeting.
+ __( 'Purges %s cached resources for your website.', 'rocket' ),
+ 'RocketCDN '
+ ),
+ 'purge_url' => Utils::get_nonce_post_url( 'rocket_purge_rocketcdn' ),
+ 'page' => 'page_cdn',
+ 'help' => [
+ 'id' => $cdn_beacon['id'],
+ 'url' => $cdn_beacon['url'],
+ ],
+ 'class' => $classes,
+ ];
+
+ if ( $this->context->is_rocketcdn() && $this->should_disable_element_for_rocketcdn() ) {
+ $sections['purge_cdn_cache_section']['class'][] = 'wpr-cdn-disabled';
+ }
+
+ return $sections;
+ }
+
+ /**
+ * Adds the Exclude CDN section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_exclude_cdn_section( array $sections ): array {
+ $cdn_exclude_beacon = $this->beacon->get_suggest( 'exclude_cdn' );
+ $rocketcdn_exclude_beacon = $this->beacon->get_suggest( 'exclude_cdn_rocketcdn' );
+
+ $is_rocketcdn = $this->context->is_rocketcdn();
+ $initial_url = $is_rocketcdn ? $rocketcdn_exclude_beacon['url'] : $cdn_exclude_beacon['url'];
+ $initial_id = $is_rocketcdn ? $rocketcdn_exclude_beacon['id'] : $cdn_exclude_beacon['id'];
+
+ $sections['exclude_cdn_section'] = [
+ // translators: %s is the CDN driver, wrapped in a span for JS targeting.
+ 'title' => sprintf( __( 'Manage %s Exclusions', 'rocket' ), 'RocketCDN ' ),
+ 'type' => 'nocontainer_with_title',
+ 'help' => [
+ 'id' => $initial_id,
+ 'url' => $initial_url,
+ 'rocketcdn_url' => $rocketcdn_exclude_beacon['url'],
+ 'rocketcdn_id' => $rocketcdn_exclude_beacon['id'],
+ 'other_cdn_url' => $cdn_exclude_beacon['url'],
+ 'other_cdn_id' => $cdn_exclude_beacon['id'],
+ ],
+ 'page' => 'page_cdn',
+ 'class' => [ 'cdn-shared-section' ],
+ ];
+
+ if ( $this->context->is_rocketcdn() && $this->should_disable_element_for_rocketcdn() ) {
+ $sections['exclude_cdn_section']['class'][] = 'wpr-cdn-disabled';
+ }
+
+ return $sections;
+ }
+
+ /**
+ * Adds exclusion fields for CDN to the settings fields array.
+ *
+ * @since 3.22
+ *
+ * @param array $fields Existing settings fields array.
+ *
+ * @return array Modified fields array with CDN exclusion fields appended.
+ */
+ public function add_exclusions_fields( array $fields ): array {
+ $exclusion_fields = [];
+
+ if ( Context::ROCKETCDN_PAID_TYPE === $this->context->get_driver() ) {
+ $exclusion_fields['cdn_reject_pages'] = [
+ 'type' => 'textarea_with_container',
+ 'label' => __( 'Exclude Pages from CDN', 'rocket' ),
+ 'description' => __( 'Specify URL(s) of pages that should not get served via CDN (one per line).', 'rocket' ),
+ 'helper' => __( 'Use (.*) wildcards to exclude all files of a given file type located at a specific path.', 'rocket' ),
+ 'placeholder' => '/path/to/page',
+ 'section' => 'exclude_cdn_section',
+ 'page' => 'page_cdn',
+ 'default' => [],
+ 'class' => [
+ 'wpr-cdn-exclusions',
+ 'rocketcdn',
+ 'rocketcdn-shared-section',
+ ],
+ 'sanitize_callback' => 'sanitize_textarea',
+ ];
+ }
+
+ $exclusion_fields['cdn_reject_files'] = [
+ 'type' => 'textarea_with_container',
+ 'label' => __( 'Exclude Files from CDN', 'rocket' ),
+ 'description' => __( 'Specify URL(s) of files that should not get served via CDN (one per line).', 'rocket' ),
+ 'helper' => __( 'The domain part of the URL will be stripped automatically. Use (.*) wildcards to exclude all files of a given file type located at a specific path.', 'rocket' ),
+ 'placeholder' => '/wp-content/plugins/some-plugins/(.*).css',
+ 'section' => 'exclude_cdn_section',
+ 'page' => 'page_cdn',
+ 'default' => [],
+ 'class' => [ 'cdn-shared-section', 'wpr-cdn-exclusions' ],
+ 'sanitize_callback' => 'sanitize_textarea',
+ ];
+
+ // Disable exclusions fields when subscription is processing.
+ foreach ( array_keys( $exclusion_fields ) as $field ) {
+ if ( $this->context->is_rocketcdn() && $this->should_disable_element_for_rocketcdn() ) {
+ $exclusion_fields[ $field ]['class'][] = 'wpr-cdn-disabled';
+ $exclusion_fields[ $field ]['attributes'] = [
+ 'disabled' => 'disabled',
+ ];
+ }
+ }
+
+ return array_merge( $fields, $exclusion_fields );
+ }
+
+ /**
+ * Renders the built-in CDN page list table.
+ *
+ * Builds row data and delegates to the table-list generic partial.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_built_in_page_list(): void {
+ if ( 0 === $this->page_count ) {
+ return;
+ }
+
+ echo $this->get_built_in_page_list(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Gets the status indicator HTML for the RocketCDN free section.
+ *
+ * @param int $pages_count Number of pages currently using RocketCDN.
+ *
+ * @return string The rendered status indicator HTML.
+ */
+ public function get_status_indicator_html( int $pages_count ): string {
+ $data = $this->get_status_indicator_data( $pages_count, $this->is_subscription_loading() );
+
+ return $this->render_parts_with_data( 'cdn/cdn-status-indicator', $data, true );
+ }
+
+ /**
+ * Gets the built-in page list for the CDN settings.
+ *
+ * Generates a partial table list view using the 'rocket_cdn_free_page_rows'
+ * hook to populate the rows of the table.
+ *
+ * @return string The rendered HTML string of the built-in page list table.
+ */
+ public function get_built_in_page_list(): string {
+ $table_data = [
+ 'rows_hook' => 'rocket_cdn_free_page_rows',
+ ];
+
+ return $this->generate( 'partials/table-list', $table_data );
+ }
+
+ /**
+ * Renders the built-in CDN page list rows.
+ *
+ * Builds each row and renders them via the table-list-row generic partial.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_built_in_page_rows(): void {
+ $pages = $this->get_items();
+
+ foreach ( $pages as $page ) {
+ echo $this->generate( 'partials/table-list-row', $this->build_page_row( $page ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+ }
+
+ /**
+ * Renders the RocketCDN CTA banner.
+ *
+ * @param bool $display Whether to display the CTA. Default true.
+ *
+ * @return bool
+ * @since 3.22
+ */
+ public function maybe_display_rocketcdn_cta( bool $display = true ): bool {
+ if ( ! $display ) {
+ return false;
+ }
+
+ if ( $this->is_subscription_loading() ) {
+ return false;
+ }
+
+ if ( $this->user->is_reseller_account() ) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Removes the "NEW" badge from the Content Delivery tab for existing paid RocketCDN subscribers.
+ *
+ * Paid users already know RocketCDN — the badge is only relevant for users
+ * discovering the service for the first time via the free tier.
+ *
+ * @since 3.22
+ *
+ * @param string $badge Current badge label.
+ *
+ * @return string Empty string for paid subscribers, original badge otherwise.
+ */
+ public function maybe_hide_cdn_tab_badge( string $badge ): string {
+ if ( $this->subscription_controller->is_paid() ) {
+ return '';
+ }
+
+ return $badge;
+ }
+
+ /**
+ * Synchronizes forced pause state and emits tracking events on transitions.
+ *
+ * @param \WP_Screen $screen Current admin screen.
+ *
+ * @return void
+ */
+ public function maybe_sync_forced_pause_tracking_state( \WP_Screen $screen ): void {
+ if ( 'settings_page_wprocket' !== $screen->id || ! current_user_can( 'rocket_manage_options' ) ) {
+ return;
+ }
+ $is_forced = $this->is_forced_paused();
+ $stored = $this->get_forced_pause_tracking();
+ $was_forced = (bool) ( $stored['tracking'] ?? false );
+
+ // Bail out when state hasn't changed to avoid unnecessary option updates and tracking events.
+ if ( $is_forced === $was_forced ) {
+ return;
+ }
+
+ $stored['tracking'] = $is_forced;
+ update_option( self::FORCED_PAUSE_TRACKING_OPTION, $stored, false );
+
+ // Clear whole cache.
+ $this->cache->clear_all_cache();
+
+ /**
+ * Fires when the CDN state changes between paused and active.
+ *
+ * @param string $new_state The new state of the CDN: 'paused' or 'active'.
+ * @param string $reason 'wpr_forced_pause' when pausing, 'wpr_forced_resume' when resuming.
+ * @since 3.22
+ */
+ do_action(
+ 'rocket_rocketcdn_cdn_state_changed',
+ $is_forced ? 'paused' : 'active',
+ $is_forced ? 'wpr_forced_pause' : 'wpr_forced_resume'
+ );
+ }
+
+ /**
+ * Renders the CDN driver tabs.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_cdn_driver_tabs(): void {
+
+ $driver = $this->context->get_driver();
+ $data = [
+ 'disable_other_cdn' => Context::ROCKETCDN_PAID_TYPE === $driver,
+ 'cdn_type' => $this->options->get( 'cdn_type', Context::ROCKETCDN_TYPE ),
+ 'display_tabs' => ! $this->is_cdn_type_filtered(),
+ 'rocketcdn_mode' => Context::ROCKETCDN_PAID_TYPE === $driver ? 'RocketCDN Paid' : 'RocketCDN Free',
+ ];
+
+ echo $this->generate( 'partials/cdn/cdn-driver-tabs', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Renders the expired WP Rocket license notice.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_expired_wpr_licence_notice(): void {
+ if ( ! $this->should_display_licence_expired_notice() ) {
+ return;
+ }
+
+ $data = [
+ 'renewal_url' => $this->user->get_renewal_url(),
+ 'is_reseller' => $this->user->is_reseller_account(),
+ ];
+
+ echo $this->generate( 'partials/cdn/wpr-licence-expired-notice', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Renders the reseller-banned notice.
+ *
+ * @since 3.23.1
+ *
+ * @return void
+ */
+ public function render_reseller_banned_notice(): void {
+ if ( ! $this->user->is_reseller_license_banned() ) {
+ return;
+ }
+
+ echo $this->generate( 'partials/cdn/wpr-licence-banned-notice', [] ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ }
+
+ /**
+ * Filter the CDN option to pause CDN for users with inactive subscriptions.
+ *
+ * If the user has an inactive subscription, this will force the CDN option to be false,
+ * effectively pausing CDN functionality until they renew or reactivate their subscription.
+ *
+ * @since 3.22
+ *
+ * @param mixed $cdn Current value of the CDN option.
+ *
+ * @return mixed False if the user has an inactive subscription, original value otherwise.
+ */
+ public function maybe_pause_cdn_for_inactive_subscription( $cdn ) {
+ // Bail early if not on RocketCDN driver to avoid unnecessary checks.
+ if ( ! $this->context->is_rocketcdn() ) {
+ return $cdn;
+ }
+
+ if ( $this->is_forced_paused() ) {
+ $stored = $this->get_forced_pause_tracking();
+
+ // Prevent unnecessary DB write on every request.
+ if ( empty( $stored['persistent'] ) ) {
+ $stored['persistent'] = true;
+ update_option( self::FORCED_PAUSE_TRACKING_OPTION, $stored, false );
+
+ // Clear whole cache.
+ $this->cache->clear_all_cache();
+ }
+
+ return false;
+ }
+
+ return $cdn;
+ }
+
+ /**
+ * Determines whether a UI element should be disabled for RocketCDN.
+ *
+ * Returns true only when all of the following are true: the current context
+ * is RocketCDN, the CDN is paused, the user has an active subscription,
+ * the license is invalid, and the subscription is in a loading state.
+ *
+ * @return bool True if the element should be disabled, false otherwise.
+ */
+ public function should_disable_element_for_rocketcdn(): bool {
+ return $this->is_subscription_loading()
+ || $this->is_cdn_paused()
+ || $this->should_display_licence_expired_notice()
+ || ! $this->subscription_controller->has_active_subscription();
+ }
+
+ /**
+ * Filters status indicator texts for the free RocketCDN tier.
+ *
+ * Hooked to {@see 'rocket_rocketcdn_status_indicator_texts'} at priority 10.
+ * Activates the status text once pages have been added, and surfaces an
+ * expiry notice when the WP Rocket licence is invalid.
+ *
+ * @param array $texts Text strings for the status indicator.
+ * @param int $pages_count Number of pages using RocketCDN.
+ * @param bool $is_subscription_loading Whether the subscription is loading.
+ * @param bool $free Whether this is for the free version.
+ *
+ * @return array
+ */
+ public function get_free_status_indicator_texts( array $texts, int $pages_count, bool $is_subscription_loading, bool $free ): array {
+ if ( ! $free ) {
+ return $texts;
+ }
+
+ if ( $pages_count > 0 ) {
+ $texts['status_text'] = $texts['active_status_text'];
+ $texts['details'] = __( 'Serving files from 10 edge locations. Covering up to 3 pages.', 'rocket' );
+ }
+
+ if ( $this->subscription_controller->is_license_invalid() ) {
+ $texts['class'] .= ' wpr-cdn-status--expired';
+ $texts['paused_details'] = __( 'RocketCDN is currently paused because your WPRocket licence has expired.', 'rocket' );
+ }
+
+ if ( $this->user->is_reseller_license_banned() ) {
+ $texts['paused_details'] = '';
+ }
+
+ return $texts;
+ }
+
+ /**
+ * Filters status indicator texts for the paid RocketCDN tier.
+ *
+ * Hooked to {@see 'rocket_rocketcdn_status_indicator_texts'} at priority 10.
+ * Activates the paid status text and surfaces a cancellation notice during
+ * the grace period.
+ *
+ * @param array $texts Text strings for the status indicator.
+ * @param int $pages_count Number of pages using RocketCDN.
+ * @param bool $is_subscription_loading Whether the subscription is loading.
+ * @param bool $free Whether this is for the free version.
+ *
+ * @return array
+ */
+ public function get_paid_status_indicator_texts( array $texts, int $pages_count, bool $is_subscription_loading, bool $free ): array {
+ if ( $free ) {
+ return $texts;
+ }
+
+ $texts['details'] = __( 'Serving files from 100+ edge locations', 'rocket' );
+ $texts['active_status_text'] = __( 'RocketCDN is active on your website', 'rocket' );
+ $texts['status_text'] = $texts['active_status_text'];
+
+ if ( $this->subscription_controller->is_in_grace_period() ) {
+ $texts['paused_details'] = __( 'RocketCDN is currently paused because your RocketCDN subscription was cancelled. Please wait up to two days before resuming.', 'rocket' );
+ $texts['class'] .= ' wpr-cdn-status--expired';
+ }
+
+ return $texts;
+ }
+
+ /**
+ * Auto-creates a RocketCDN Free subscription when a previously forced-paused state is resolved.
+ *
+ * @since 3.22.0.2
+ *
+ * @return void
+ */
+ public function maybe_auto_create_rocketcdn_free_subscription() {
+ // Bail out if there is an active subscription.
+ if ( $this->subscription_controller->has_active_subscription() ) {
+ return;
+ }
+
+ // Bail out if the subscription is paid and is still within the cancellation grace period — too early to auto-resume.
+ if ( $this->subscription_controller->is_paid() && $this->subscription_controller->is_in_grace_period() ) {
+ return;
+ }
+
+ if ( $this->subscription_controller->is_license_invalid() ) {
+ return;
+ }
+
+ // Update the forced pause tracking option to indicate the forced pause has been resolved.
+ $stored = $this->get_forced_pause_tracking();
+ $stored['persistent'] = false;
+ update_option( self::FORCED_PAUSE_TRACKING_OPTION, $stored, false );
+
+ // Bail out if there are no add pages in the free plan — no need to auto create, allow normal flow.
+ if ( empty( $this->get_items() ) ) {
+ return;
+ }
+
+ // Auto-create a new subscription to resume free RocketCDN service.
+ $this->subscription_controller->create_subscription();
+ }
+
+ /**
+ * Reads the forced pause tracking option, migrating the legacy bool format to the current array format.
+ *
+ * @return array
+ */
+ private function get_forced_pause_tracking(): array {
+ $stored = get_option( self::FORCED_PAUSE_TRACKING_OPTION, [] );
+
+ // Migrate legacy bool value: the option used to be stored as a plain bool.
+ if ( is_bool( $stored ) ) {
+ return [ 'tracking' => $stored ];
+ }
+
+ return (array) $stored;
+ }
+
+ /**
+ * Builds a table-list-row data array from a page object.
+ *
+ * @since 3.22
+ *
+ * @param object $page Page object with url and title properties.
+ *
+ * @return array Row data for the table-list-row partial.
+ */
+ private function build_page_row( object $page ): array {
+ $disable_class = $this->is_subscription_loading() ? 'wpr-cdn-disabled' : '';
+ $delete_button = ''
+ . ' '
+ . ' ';
+
+ return [
+ 'columns' => [
+ [
+ 'content' => '' . esc_html( $page->title ) . ' ',
+ ],
+ [
+ 'type' => 'actions',
+ 'content' => $delete_button,
+ ],
+ ],
+ ];
+ }
+
+ /**
+ * Retrieves the list of pages added to RocketCDN for the free plan.
+ *
+ * @since 3.22
+ *
+ * @return array List of page objects with id, url, and title properties.
+ */
+ private function get_items(): array {
+ $query_params = [
+ 'orderby' => 'modified',
+ 'order' => 'asc',
+ 'number' => 20,
+ ];
+
+ return $this->cdn_query->query( $query_params );
+ }
+
+ /**
+ * Checks if subscription is currently processing.
+ *
+ * @since 3.22
+ *
+ * @return bool True if the subscription is processing, false otherwise.
+ */
+ private function is_subscription_loading(): bool {
+ return $this->subscription_controller->is_subscription_creation_loading();
+ }
+
+ /**
+ * Checks if the WP Rocket license is expired for a free RocketCDN subscriber.
+ *
+ * @return bool True when the expired licence notice should be displayed.
+ */
+ private function should_display_licence_expired_notice(): bool {
+ return $this->context->is_rocketcdn() &&
+ $this->subscription_controller->is_free() &&
+ $this->subscription_controller->is_license_invalid() &&
+ ! $this->user->is_reseller_license_banned();
+ }
+
+ /**
+ * Checks if the CDN type is currently filtered.
+ *
+ * @since 3.22
+ *
+ * @return bool True if the CDN type is filtered, false otherwise.
+ */
+ private function is_cdn_type_filtered(): bool {
+ $allowed_cdn_types = [ 'rocketcdn', 'byocdn' ];
+
+ /**
+ * Pre-filter cdn_type option.
+ *
+ * @since 3.22
+ *
+ * @param mixed $cdn_type Filtered CDN type.
+ */
+ $cdn_type = wpm_apply_filters_typed( 'string|null', 'pre_get_rocket_option_cdn_type', null, '' );
+
+ if ( null !== $cdn_type && in_array( $cdn_type, $allowed_cdn_types, true ) ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Get status indicator data for RocketCDN.
+ *
+ * Retrieves an array of data used to render the RocketCDN status indicator,
+ * including status text, details, and various flags based on the current
+ * subscription state.
+ *
+ * @param int $pages_count Number of pages currently using RocketCDN.
+ * @param bool $is_subscription_loading Whether the subscription is currently being processed.
+ * @param bool $free Whether this is for the free version of RocketCDN. Default true.
+ *
+ * @return array {
+ * Array of status indicator data.
+ *
+ * @type string $class CSS class to apply to the status indicator. Empty string or ' wpr-cdn-status--paused'.
+ * @type bool $is_active Whether RocketCDN is active.
+ * @type string $status_text Current status text to display.
+ * @type string $details Details text describing the current status.
+ * @type string $active_status_text Text to display when RocketCDN is active.
+ * @type string $paused_status_text Text to display when RocketCDN is paused.
+ * @type string $paused_details Details text to display when RocketCDN is paused.
+ * @type bool $is_paused Whether RocketCDN is currently paused.
+ * @type int $pages_count Number of pages currently using RocketCDN.
+ * @type bool $is_subscription_loading Whether the subscription is currently being processed.
+ * @type bool $hide_pause_btn Whether to hide the pause button.
+ * }
+ */
+ private function get_status_indicator_data( int $pages_count, bool $is_subscription_loading, bool $free = true ): array {
+ $texts = [
+ 'paused_status_text' => __( 'RocketCDN is paused', 'rocket' ),
+ 'active_status_text' => __( 'RocketCDN is active', 'rocket' ),
+ 'paused_details' => __( 'RocketCDN is currently paused. Click Resume CDN to re-enable content delivery.', 'rocket' ),
+ 'status_text' => '',
+ 'details' => sprintf(
+ // translators: %1$s = opening tag, %2$s = closing tag.
+ __( '%1$sStart with your homepage and add up to 2 more key pages.%2$s Includes unlimited traffic across 10 edge locations.', 'rocket' ),
+ '',
+ ' '
+ ),
+ 'class' => '',
+ ];
+
+ /**
+ * Filters the status indicator text strings for RocketCDN.
+ *
+ * Free- and paid-tier callbacks are registered by default to apply
+ * tier-specific overrides. Additional callbacks may be added to
+ * customise the indicator for custom subscription states.
+ *
+ * @param array $texts {
+ * Text strings and CSS modifier class for the status indicator.
+ *
+ * @type string $paused_status_text Text displayed when CDN is paused.
+ * @type string $active_status_text Text displayed when CDN is active.
+ * @type string $paused_details Details shown while CDN is paused.
+ * @type string $status_text Currently-shown status text (empty = inactive state).
+ * @type string $details Currently-shown details text.
+ * @type string $class CSS modifier class(es) for the indicator element.
+ * }
+ * @param int $pages_count Number of pages currently using RocketCDN.
+ * @param bool $is_subscription_loading Whether the subscription is currently being processed.
+ * @param bool $free Whether this is for the free version of RocketCDN.
+ *
+ * @since 3.22.0.2
+ */
+ $texts = wpm_apply_filters_typed( 'array', 'rocket_rocketcdn_status_indicator_texts', $texts, $pages_count, $is_subscription_loading, $free );
+
+ if ( $is_subscription_loading ) {
+ $texts['status_text'] = __( 'Creating your subscription...', 'rocket' );
+ $texts['details'] = __( 'Please wait, RocketCDN will be ready in about 30s.', 'rocket' );
+ }
+
+ $is_paused = $this->is_cdn_paused();
+
+ if ( $is_paused ) {
+ $texts['status_text'] = $texts['paused_status_text'];
+ $texts['details'] = $texts['paused_details'];
+ $texts['class'] .= ' wpr-cdn-status--paused';
+ }
+
+ return [
+ 'class' => $texts['class'],
+ 'is_active' => true,
+ 'status_text' => $texts['status_text'],
+ 'details' => $texts['details'],
+ 'active_status_text' => $texts['active_status_text'],
+ 'paused_status_text' => $texts['paused_status_text'],
+ 'paused_details' => $texts['paused_details'],
+ 'is_paused' => $is_paused,
+ 'pages_count' => $pages_count,
+ 'is_subscription_loading' => $is_subscription_loading,
+ 'hide_pause_btn' => ( $is_subscription_loading || 0 === $pages_count ) && ! $is_paused,
+ ];
+ }
+
+ /**
+ * Check if cdn should pause or not.
+ *
+ * @return bool
+ */
+ private function is_cdn_paused(): bool {
+ return ! (bool) $this->options->get( 'cdn' );
+ }
+
+ /**
+ * Determines whether the CDN should be force-paused due to an inactive or invalid subscription state.
+ *
+ * @since 3.22
+ *
+ * @return bool True if the CDN should be force-paused, false otherwise.
+ */
+ private function is_forced_paused(): bool {
+ // Force paused if paid plan cancelled but in grace period.
+ if ( $this->subscription_controller->is_paid() && $this->subscription_controller->is_in_grace_period() ) {
+ return true;
+ }
+
+ if ( $this->subscription_controller->is_paid() && $this->subscription_controller->is_cancelled_outside_grace_period() ) {
+ return true;
+ }
+
+ // Force paused if free plan with an invalid WP Rocket licence.
+ if ( $this->subscription_controller->is_free() && $this->subscription_controller->is_license_invalid() ) {
+ return true;
+ }
+
+ // Force paused if subscription cancelled beyond the grace period and WP Rocket licence is invalid.
+ if ( $this->subscription_controller->is_cancelled_outside_grace_period() && $this->subscription_controller->is_license_invalid() ) {
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/Render/Subscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/Render/Subscriber.php
new file mode 100644
index 000000000..c08920b0c
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/Render/Subscriber.php
@@ -0,0 +1,273 @@
+controller = $controller;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public static function get_subscribed_events(): array {
+ return [
+ 'rocket_cdn_driver_sections' => [
+ [ 'add_rocketcdn_paid_section' ],
+ [ 'add_rocketcdn_free_section' ],
+ [ 'add_exclude_cdn_section' ],
+ [ 'add_purge_cdn_cache_section' ],
+ ],
+ 'current_screen' => [ 'maybe_sync_forced_pause_tracking_state' ],
+ 'rocket_cdn_free_page_list' => 'render_built_in_page_list',
+ 'rocket_cdn_free_page_rows' => 'render_built_in_page_rows',
+ 'rocket_cdn_driver_tabs' => 'render_cdn_driver_tabs',
+ 'rocket_cdn_settings_fields' => 'add_exclusions_fields',
+ 'rocket_display_rocketcdn_cta' => 'maybe_display_rocketcdn_cta',
+ 'rocket_cdn_tab_badge' => 'maybe_hide_cdn_tab_badge',
+ 'pre_get_rocket_option_cdn' => 'maybe_pause_cdn_for_inactive_subscription',
+ 'rocket_cdn_free_before_status_indicator' => [
+ [ 'render_expired_wpr_licence_notice', 9 ],
+ [ 'render_reseller_banned_notice', 9 ],
+ ],
+ 'rocket_rocketcdn_status_indicator_texts' => [
+ [ 'get_free_status_indicator_texts', 10, 4 ],
+ [ 'get_paid_status_indicator_texts', 10, 4 ],
+ ],
+ 'admin_init' => 'maybe_auto_create_rocketcdn_free_subscription',
+ ];
+ }
+
+ /**
+ * Adds the RocketCDN Paid section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_rocketcdn_paid_section( array $sections ): array {
+ return $this->controller->add_rocketcdn_paid_section( $sections );
+ }
+
+ /**
+ * Adds the RocketCDN Free section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_rocketcdn_free_section( array $sections ): array {
+ return $this->controller->add_rocketcdn_free_section( $sections );
+ }
+
+ /**
+ * Adds the Exclude CDN section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_exclude_cdn_section( array $sections ): array {
+ return $this->controller->add_exclude_cdn_section( $sections );
+ }
+
+ /**
+ * Adds the Purge CDN Cache section to the CDN driver sections.
+ *
+ * @since 3.22
+ *
+ * @param array $sections CDN driver sections.
+ *
+ * @return array
+ */
+ public function add_purge_cdn_cache_section( array $sections ): array {
+ return $this->controller->add_purge_cdn_cache_section( $sections );
+ }
+
+ /**
+ * Renders the built-in CDN page list table.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_built_in_page_list(): void {
+ $this->controller->render_built_in_page_list();
+ }
+
+ /**
+ * Renders the built-in CDN page list rows.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_built_in_page_rows(): void {
+ $this->controller->render_built_in_page_rows();
+ }
+
+ /**
+ * Renders the CDN driver tabs.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_cdn_driver_tabs(): void {
+ $this->controller->render_cdn_driver_tabs();
+ }
+
+ /**
+ * Adds exclusion fields for CDN to the settings fields array.
+ *
+ * @since 3.22
+ *
+ * @param array $fields Existing settings fields array.
+ *
+ * @return array
+ */
+ public function add_exclusions_fields( array $fields ): array {
+ return $this->controller->add_exclusions_fields( $fields );
+ }
+
+ /**
+ * Displays the RocketCDN Call to Action on the CDN tab of WP Rocket settings page.
+ *
+ * @param bool $display Whether to display the CTA. Default true.
+ *
+ * @since 3.22
+ *
+ * @return bool
+ */
+ public function maybe_display_rocketcdn_cta( bool $display = true ): bool {
+ return $this->controller->maybe_display_rocketcdn_cta( $display );
+ }
+
+ /**
+ * Removes the "NEW" badge from the Content Delivery tab for existing paid subscribers.
+ *
+ * @since 3.22
+ *
+ * @param string $badge Current badge label.
+ *
+ * @return string
+ */
+ public function maybe_hide_cdn_tab_badge( string $badge ): string {
+ return $this->controller->maybe_hide_cdn_tab_badge( $badge );
+ }
+
+ /**
+ * Syncs the forced pause tracking option state on WP Rocket settings screen.
+ *
+ * @param \WP_Screen $screen Current screen object.
+ *
+ * @return void
+ */
+ public function maybe_sync_forced_pause_tracking_state( \WP_Screen $screen ): void {
+ $this->controller->maybe_sync_forced_pause_tracking_state( $screen );
+ }
+
+ /**
+ * Pauses the CDN for inactive subscriptions.
+ *
+ * @since 3.22
+ *
+ * @param mixed $cdn CDN Option.
+ *
+ * @return mixed
+ */
+ public function maybe_pause_cdn_for_inactive_subscription( $cdn ) {
+ return $this->controller->maybe_pause_cdn_for_inactive_subscription( $cdn );
+ }
+
+ /**
+ * Renders the expired WP Rocket license notice.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function render_expired_wpr_licence_notice(): void {
+ $this->controller->render_expired_wpr_licence_notice();
+ }
+
+ /**
+ * Renders the reseller-banned notice.
+ *
+ * @since 3.23.1
+ *
+ * @return void
+ */
+ public function render_reseller_banned_notice(): void {
+ $this->controller->render_reseller_banned_notice();
+ }
+
+ /**
+ * Filters status indicator texts for the free RocketCDN tier.
+ *
+ * @param array $texts Text strings for the status indicator.
+ * @param int $pages_count Number of pages using RocketCDN.
+ * @param bool $is_subscription_loading Whether the subscription is loading.
+ * @param bool $free Whether this is for the free version.
+ *
+ * @return array
+ */
+ public function get_free_status_indicator_texts( array $texts, int $pages_count, bool $is_subscription_loading, bool $free ): array {
+ return $this->controller->get_free_status_indicator_texts( $texts, $pages_count, $is_subscription_loading, $free );
+ }
+
+ /**
+ * Filters status indicator texts for the paid RocketCDN tier.
+ *
+ * @param array $texts Text strings for the status indicator.
+ * @param int $pages_count Number of pages using RocketCDN.
+ * @param bool $is_subscription_loading Whether the subscription is loading.
+ * @param bool $free Whether this is for the free version.
+ *
+ * @return array
+ */
+ public function get_paid_status_indicator_texts( array $texts, int $pages_count, bool $is_subscription_loading, bool $free ): array {
+ return $this->controller->get_paid_status_indicator_texts( $texts, $pages_count, $is_subscription_loading, $free );
+ }
+
+ /**
+ * Auto-creates a RocketCDN Free subscription when a previously forced-paused state is resolved.
+ *
+ * @since 3.22.0.2
+ *
+ * @return void
+ */
+ public function maybe_auto_create_rocketcdn_free_subscription(): void {
+ $this->controller->maybe_auto_create_rocketcdn_free_subscription();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIClient.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIClient.php
index 7600f4d7a..969c7b126 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIClient.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIClient.php
@@ -42,6 +42,11 @@ private function get_remote_subscription_data() {
'cdn_url' => '',
'subscription_next_date_update' => 0,
'subscription_status' => 'cancelled',
+ 'website_attached' => false,
+ 'plan_type' => 'free',
+ 'plan_page_limit' => 0,
+ 'website_id' => 0,
+ 'status_code' => 500,
];
$token = get_option( 'rocketcdn_user_token' );
@@ -56,13 +61,23 @@ private function get_remote_subscription_data() {
],
];
+ $parsed_home = wp_parse_url( home_url() );
+ if ( empty( $parsed_home['host'] ) ) {
+ $this->set_status_transient( $default, 3 * MINUTE_IN_SECONDS );
+
+ return $default;
+ }
+
$response = wp_remote_get(
- self::ROCKETCDN_API . 'website/search/?url=' . home_url(),
+ sprintf( '%1$ssubscription/%2$s/status', self::ROCKETCDN_API, $parsed_home['host'] ),
$args
);
- if ( 200 !== wp_remote_retrieve_response_code( $response ) ) {
- $this->set_status_transient( $default, 3 * MINUTE_IN_SECONDS );
+ $status_code = wp_remote_retrieve_response_code( $response );
+ $default['status_code'] = $status_code;
+
+ if ( 200 !== $status_code ) {
+ $this->set_status_transient( $default, 404 !== $status_code ? 3 * MINUTE_IN_SECONDS : DAY_IN_SECONDS );
return $default;
}
@@ -76,12 +91,28 @@ private function get_remote_subscription_data() {
}
$data = json_decode( $data, true );
- $data = array_intersect_key( (array) $data, $default );
- $data = array_merge( $default, $data );
+ if ( empty( $data['success'] ) ) {
+ $this->set_status_transient( $default, 3 * MINUTE_IN_SECONDS );
+ return $default;
+ }
- $this->set_status_transient( $data, WEEK_IN_SECONDS );
+ // Map the data.
+ $final_data = [
+ 'id' => $data['subscription_id'] ?? 0,
+ 'is_active' => $data['website_activated'] ?? false,
+ 'cdn_url' => $data['cdn_url'] ?? '',
+ 'subscription_next_date_update' => $data['next_date_update'] ?? 0,
+ 'subscription_status' => $data['status'] ?? 'cancelled',
+ 'website_attached' => $data['website_attached'] ?? false,
+ 'plan_type' => $data['plan_type'] ?? 'free',
+ 'plan_page_limit' => $data['plan_page_limit'] ?? 0,
+ 'website_id' => $data['website_id'] ?? 0,
+ 'status_code' => $status_code,
+ ];
- return $data;
+ $this->set_status_transient( $final_data, DAY_IN_SECONDS );
+
+ return $final_data;
}
/**
@@ -97,6 +128,7 @@ private function set_status_transient( $value, $duration ) {
set_transient( 'rocketcdn_status', $value, $duration );
}
+
/**
* Gets pricing & promotion data for RocketCDN from cache if it exists
*
@@ -222,7 +254,7 @@ public function purge_cache_request() {
$subscription = $this->get_subscription_data();
$status = 'error';
- if ( ! isset( $subscription['id'] ) || 0 === $subscription['id'] ) {
+ if ( ! isset( $subscription['website_id'] ) || 0 === $subscription['website_id'] ) {
return [
'status' => $status,
'message' => __( 'RocketCDN cache purge failed: Missing identifier parameter.', 'rocket' ),
@@ -246,7 +278,7 @@ public function purge_cache_request() {
];
$response = wp_remote_request(
- self::ROCKETCDN_API . 'website/' . $subscription['id'] . '/purge/',
+ self::ROCKETCDN_API . 'website/' . $subscription['website_id'] . '/purge/',
$args
);
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/CheckStatusAPIClient.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/CheckStatusAPIClient.php
new file mode 100644
index 000000000..c56aebbb4
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/CheckStatusAPIClient.php
@@ -0,0 +1,84 @@
+task_id = $task_id;
+ }
+
+ /**
+ * Get the transient key for making this API Client calls.
+ *
+ * @return string The transient key for plugin updates.
+ */
+ protected function get_transient_key() {
+ return 'rocket_cdn_check_status_request';
+ }
+
+ /**
+ * Get the API URL for creating rocketcdn free account silently.
+ *
+ * @return string The API URL.
+ */
+ protected function get_api_url() {
+ if ( empty( $this->task_id ) ) {
+ return '';
+ }
+ return sprintf( '%1$swebsite/task/%2$s/', APIClient::ROCKETCDN_API, $this->task_id );
+ }
+
+ /**
+ * Check RocketCDN free account creation status.
+ *
+ * @return array|false
+ */
+ public function check() {
+ $token = get_option( 'rocketcdn_user_token' );
+
+ if ( empty( $token ) ) {
+ return false;
+ }
+
+ $args = [
+ 'headers' => [
+ 'Authorization' => 'Token ' . $token,
+ ],
+ ];
+
+ $response = $this->send_get_request( $args, true );
+
+ if ( is_wp_error( $response ) ) {
+ return false;
+ }
+
+ $response = wp_remote_retrieve_body( $response );
+ if ( empty( $response ) ) {
+ return false;
+ }
+
+ return json_decode( $response, true );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/CreateAPIClient.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/CreateAPIClient.php
new file mode 100644
index 000000000..e92c534b4
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/CreateAPIClient.php
@@ -0,0 +1,67 @@
+free_url = $user->get_rocketcdn_free_url();
+ }
+
+ /**
+ * Get the transient key for making this API Client calls.
+ *
+ * @return string The transient key for plugin updates.
+ */
+ protected function get_transient_key() {
+ return 'rocket_cdn_create_request';
+ }
+
+ /**
+ * Get the API URL for creating rocketcdn free account silently.
+ *
+ * @return string The API URL.
+ */
+ protected function get_api_url() {
+ return $this->free_url;
+ }
+
+ /**
+ * Create RocketCDN free account.
+ *
+ * @return array|false
+ */
+ public function create() {
+ $response = $this->send_post_request( [], true );
+
+ if ( is_wp_error( $response ) ) {
+ return false;
+ }
+
+ $response = wp_remote_retrieve_body( $response );
+ if ( empty( $response ) ) {
+ return false;
+ }
+
+ return json_decode( $response, true );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/WebsiteSearch.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/WebsiteSearch.php
new file mode 100644
index 000000000..fdf018b36
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/APIHandler/WebsiteSearch.php
@@ -0,0 +1,126 @@
+site_url = $site_url;
+ }
+
+ /**
+ * Get the transient key for making this API Client calls.
+ *
+ * @return string The transient key.
+ */
+ protected function get_transient_key() {
+ return 'rocket_cdn_website_search';
+ }
+
+ /**
+ * Get the API URL for website search.
+ *
+ * @return string The API URL.
+ */
+ protected function get_api_url() {
+ if ( empty( $this->site_url ) ) {
+ return '';
+ }
+ return add_query_arg(
+ 'url',
+ untrailingslashit( $this->site_url ),
+ APIClient::ROCKETCDN_API . 'website/search/'
+ );
+ }
+
+ /**
+ * Check RocketCDN free account creation status.
+ *
+ * @return array|false
+ */
+ public function find() {
+ $cached = get_transient( $this->get_transient_key() );
+ if ( false !== $cached ) {
+ return $cached;
+ }
+
+ $token = get_option( 'rocketcdn_user_token' );
+
+ if ( empty( $token ) ) {
+ return false;
+ }
+
+ $args = [
+ 'headers' => [
+ 'Authorization' => 'Token ' . $token,
+ ],
+ ];
+
+ $response = $this->send_get_request( $args, true );
+
+ if ( is_wp_error( $response ) ) {
+ return false;
+ }
+
+ $response = wp_remote_retrieve_body( $response );
+ if ( empty( $response ) ) {
+ return false;
+ }
+
+ $response = json_decode( $response, true );
+ if ( ! is_array( $response ) ) {
+ return false;
+ }
+
+ $final = [
+ 'subscription_status' => $response['subscription_status'] ?? 'cancelled',
+ 'plan_type' => $response['subscription_plan_type'] ?? 'free',
+ 'status_code' => wp_remote_retrieve_response_code( $response ),
+ 'website_status' => $response['status'] ?? '',
+ ];
+ set_transient( $this->get_transient_key(), $final, HOUR_IN_SECONDS );
+
+ return $final;
+ }
+
+ /**
+ * Validate response code.
+ *
+ * @param array $response Response object.
+ * @return bool
+ */
+ protected function valid_response_code( $response ) {
+ return in_array( wp_remote_retrieve_response_code( $response ), [ 200, 404 ], true );
+ }
+
+ /**
+ * Validate response body.
+ *
+ * @param array $response Response object.
+ * @return bool
+ */
+ protected function valid_response_body( $response ) {
+ return ! empty( wp_remote_retrieve_body( $response ) );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php
index 948f79325..6793ca5bf 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/AdminPageSubscriber.php
@@ -3,8 +3,8 @@
namespace WP_Rocket\Engine\CDN\RocketCDN;
use WP_Rocket\Abstract_Render;
-use WP_Rocket\Admin\Options_Data;
-use WP_Rocket\Engine\Admin\Beacon\Beacon;
+use WP_Rocket\Engine\License\API\User;
+use WP_Rocket\Engine\License\API\UserClient;
use WP_Rocket\Event_Management\Subscriber_Interface;
/**
@@ -21,54 +21,47 @@ class AdminPageSubscriber extends Abstract_Render implements Subscriber_Interfac
private $api_client;
/**
- * WP Rocket options instance
- *
- * @var Options_Data
- */
- private $options;
-
- /**
- * Beacon instance
+ * UserClient instance
*
- * @var Beacon
+ * @var UserClient
*/
- private $beacon;
+ private $user_client;
/**
- * UserClient instance
+ * User instance
*
- * @var \WP_Rocket\Engine\License\API\UserClient
+ * @var User
*/
- private $user_client;
+ private $user;
/**
* Constructor
*
- * @param APIClient $api_client RocketCDN API Client instance.
- * @param Options_Data $options WP Rocket options instance.
- * @param Beacon $beacon Beacon instance.
- * @param \WP_Rocket\Engine\License\API\UserClient $user_client UserClient instance.
- * @param string $template_path Path to the templates.
+ * @param APIClient $api_client RocketCDN API Client instance.
+ * @param UserClient $user_client UserClient instance.
+ * @param User $user User instance.
+ * @param string $template_path Path to the templates.
*/
- public function __construct( APIClient $api_client, Options_Data $options, Beacon $beacon, $user_client, $template_path ) {
+ public function __construct( APIClient $api_client, $user_client, User $user, $template_path ) {
parent::__construct( $template_path );
$this->api_client = $api_client;
- $this->options = $options;
- $this->beacon = $beacon;
$this->user_client = $user_client;
+ $this->user = $user;
}
/**
- * {@inheritdoc}
+ * Return an array of events that this subscriber wants to listen to.
+ *
+ * @return array
*/
public static function get_subscribed_events() {
return [
- 'rocket_dashboard_after_account_data' => 'display_rocketcdn_status',
- 'rocket_cdn_settings_fields' => 'rocketcdn_field',
- 'admin_post_rocket_purge_rocketcdn' => 'purge_cdn_cache',
- 'rocket_settings_page_footer' => 'add_subscription_modal',
- 'http_request_args' => [ 'preserve_authorization_token', PHP_INT_MAX, 2 ],
+ 'rocket_dashboard_after_account_data' => 'display_rocketcdn_status',
+ 'admin_post_rocket_purge_rocketcdn' => 'purge_cdn_cache',
+ 'rocket_settings_page_footer' => 'add_subscription_modal',
+ 'http_request_args' => [ 'preserve_authorization_token', PHP_INT_MAX, 2 ],
+ 'rocket_insights_api_recommendations_params' => 'maybe_add_rocketcdn_to_recommendations_api_params',
];
}
@@ -93,96 +86,48 @@ public function display_rocketcdn_status() {
return;
}
+ if ( $this->user->is_reseller_account() ) {
+ return;
+ }
+
$subscription_data = $this->api_client->get_subscription_data();
$container_class = '';
- $status_class = '';
- $label = '';
- $status_text = '';
$is_active = false;
-
- if ( 'running' === $subscription_data['subscription_status'] ) {
- $label = __( 'Next Billing Date', 'rocket' );
- $status_class = ' wpr-isValid';
- $status_text = date_i18n( get_option( 'date_format' ), strtotime( $subscription_data['subscription_next_date_update'] ) );
- $is_active = true;
+ $items = [];
+
+ if ( 'running' === $subscription_data['subscription_status'] && 'paid' === $subscription_data['plan_type'] ) {
+ $items[] = [
+ 'label' => __( 'Plan', 'rocket' ),
+ 'value' => __( 'RocketCDN Pro', 'rocket' ),
+ 'class' => ' wpr-isValid wpr-no-icon',
+ ];
+ $items[] = [
+ 'label' => __( 'Next Billing Date', 'rocket' ),
+ 'value' => date_i18n( get_option( 'date_format' ), strtotime( $subscription_data['subscription_next_date_update'] ) ),
+ 'class' => ' wpr-isValid',
+ ];
+
+ $is_active = true;
} else {
- $status_class = ' wpr-isInvalid';
+ $items[] = [
+ 'label' => '',
+ 'value' => __( 'No RocketCDN Pro Subscription', 'rocket' ),
+ 'class' => ' wpr-isInvalid',
+ ];
$container_class = ' wpr-flex--egal';
- $status_text = __( 'No Subscription', 'rocket' );
}
$data = [
'is_live_site' => rocket_is_live_site(),
'container_class' => $container_class,
- 'label' => $label,
- 'status_class' => $status_class,
- 'status_text' => $status_text,
'is_active' => $is_active,
+ 'items' => $items,
];
echo $this->generate( 'dashboard-status', $data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
}
- /**
- * Adds the RocketCDN fields to the CDN section
- *
- * @since 3.5
- *
- * @param array $fields CDN settings fields.
- *
- * @return array
- */
- public function rocketcdn_field( $fields ) {
- if ( $this->is_white_label_account() ) {
- return $fields;
- }
-
- $subscription_data = $this->api_client->get_subscription_data();
-
- if ( 'running' !== $subscription_data['subscription_status'] ) {
- return $fields;
- }
-
- $helper_text = __( 'Your RocketCDN subscription is currently active.', 'rocket' );
- $cdn_cnames = $this->options->get( 'cdn_cnames', [] );
-
- if ( empty( $cdn_cnames ) || $cdn_cnames[0] !== $subscription_data['cdn_url'] ) {
- $helper_text = sprintf(
- // translators: %1$s = opening tag, %2$s = CDN URL, %3$s = closing tag.
- __( 'To use RocketCDN, replace your CNAME with %1$s%2$s%3$s.', 'rocket' ),
- '',
- $subscription_data['cdn_url'],
- ''
- );
- }
-
- $beacon = $this->beacon->get_suggest( 'rocketcdn' );
-
- $more_info = sprintf(
- // translators: %1$is = opening link tag, %2$s = closing link tag.
- __( '%1$sMore Info%2$s', 'rocket' ),
- '',
- ' '
- );
-
- $fields['cdn_cnames'] = [
- 'type' => 'rocket_cdn',
- 'label' => __( 'CDN CNAME(s)', 'rocket' ),
- 'description' => __( 'Specify the CNAME(s) below', 'rocket' ),
- 'helper' => $helper_text . ' ' . $more_info,
- 'default' => '',
- 'section' => 'cnames_section',
- 'page' => 'page_cdn',
- 'beacon' => [
- 'url' => $beacon['url'],
- 'id' => $beacon['id'],
- ],
- ];
-
- return $fields;
- }
-
/**
* Purges the CDN cache and store the response in a transient.
*
@@ -217,6 +162,10 @@ public function add_subscription_modal() {
return;
}
+ if ( $this->user->is_reseller_account() ) {
+ return;
+ }
+
if ( ! rocket_is_live_site() ) {
return;
}
@@ -258,7 +207,7 @@ public function add_subscription_modal() {
@@ -280,6 +229,51 @@ public function preserve_authorization_token( $args, $url ) {
return $this->api_client->preserve_authorization_token( $args, $url );
}
+ /**
+ * Adds the 'plugin_rocketcdn' option to the recommendations API parameters if certain conditions are met.
+ *
+ * @param array $params The existing API parameters.
+ * @return array The modified API parameters with 'plugin_rocketcdn' added if applicable.
+ */
+ public function maybe_add_rocketcdn_to_recommendations_api_params( array $params ): array {
+ if ( ! $this->should_add_to_recommendations_api_params( $params ) ) {
+ return $params;
+ }
+
+ $params['enabled_options'][] = 'plugin_rocketcdn';
+
+ return $params;
+ }
+
+ /**
+ * Determines whether to add the 'plugin_rocketcdn' option to the recommendations API parameters.
+ *
+ * This method checks multiple conditions to decide if the user should be included:
+ * - Returns true if the account is a white label account.
+ * - Returns true if the RocketCDN standalone is active.
+ * - Returns true if CDN option in WP Rocket is enabled.
+ * - Returns false otherwise.
+ *
+ * @param array $params API params.
+ * @return bool True if the user should be added to the recommendations API parameters, false otherwise.
+ */
+ private function should_add_to_recommendations_api_params( $params ): bool {
+ // Return true if white label is true.
+ if ( $this->is_white_label_account() ) {
+ return true;
+ }
+
+ if ( ! empty( rocket_get_constant( 'ROCKETCDN_VERSION' ) ) ) {
+ return true;
+ }
+
+ if ( in_array( 'cdn', $params['enabled_options'], true ) ) {
+ return true;
+ }
+
+ return false;
+ }
+
/**
* Checks if white label is enabled
*
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php
index c92af00a7..53f4594de 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/CDNOptionsManager.php
@@ -40,18 +40,18 @@ public function __construct( Options $options_api, Options_Data $options ) {
*
* @since 3.5
*
- * @param string $cdn_url CDN URL.
+ * @param bool $clear_cache Clear website whole cache.
* @return void
*/
- public function enable( $cdn_url ) {
+ public function enable( bool $clear_cache = true ) {
$this->options->set( 'cdn', 1 );
- $this->options->set( 'cdn_cnames', [ $cdn_url ] );
- $this->options->set( 'cdn_zone', [ 'all' ] );
$this->options_api->set( 'settings', $this->options->get_options() );
delete_transient( 'rocketcdn_status' );
- rocket_clean_domain();
+ if ( $clear_cache ) {
+ rocket_clean_domain();
+ }
}
/**
@@ -75,8 +75,6 @@ public function save_token( string $token ): void {
*/
public function disable() {
$this->options->set( 'cdn', 0 );
- $this->options->set( 'cdn_cnames', [] );
- $this->options->set( 'cdn_zone', [] );
$this->options_api->set( 'settings', $this->options->get_options() );
@@ -93,4 +91,23 @@ public function disable() {
public function get_cdn_cnames() {
return $this->options->get( 'cdn_cnames', [] );
}
+
+ /**
+ * Check if there is saved user token.
+ *
+ * @return bool
+ */
+ public function has_token(): bool {
+ return ! empty( get_option( 'rocketcdn_user_token' ) );
+ }
+
+ /**
+ * Flush subscription cache.
+ *
+ * @return void
+ */
+ public function flush_subscription_cache() {
+ delete_transient( 'rocketcdn_status' );
+ delete_transient( 'rocket_cdn_website_search' );
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php
index 2f8a30775..0c34c62e7 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/DataManagerSubscriber.php
@@ -3,6 +3,7 @@
use WP_Rocket\Admin\Options;
use WP_Rocket\Admin\Options_Data;
+use WP_Rocket\Engine\CDN\Context;
use WP_Rocket\Engine\License\API\UserClient;
use WP_Rocket\Engine\Optimization\RegexTrait;
use WP_Rocket\Event_Management\Subscriber_Interface;
@@ -52,25 +53,36 @@ class DataManagerSubscriber implements Subscriber_Interface {
*/
private $user_client;
+ /**
+ * Subscription controller instance.
+ *
+ * @var SubscriptionController
+ */
+ private $subscription_controller;
+
/**
* Constructor
*
- * @param APIClient $api_client RocketCDN API Client instance.
- * @param CDNOptionsManager $cdn_options CDNOptionsManager instance.
- * @param Options_Data $options Options instance.
- * @param Options $options_api Options API instance.
- * @param UserClient $user_client UserClient instance.
+ * @param APIClient $api_client RocketCDN API Client instance.
+ * @param CDNOptionsManager $cdn_options CDNOptionsManager instance.
+ * @param Options_Data $options Options instance.
+ * @param Options $options_api Options API instance.
+ * @param UserClient $user_client UserClient instance.
+ * @param SubscriptionController $subscription_controller SubscriptionController instance.
*/
- public function __construct( APIClient $api_client, CDNOptionsManager $cdn_options, Options_Data $options, Options $options_api, UserClient $user_client ) {
- $this->api_client = $api_client;
- $this->cdn_options = $cdn_options;
- $this->options = $options;
- $this->options_api = $options_api;
- $this->user_client = $user_client;
+ public function __construct( APIClient $api_client, CDNOptionsManager $cdn_options, Options_Data $options, Options $options_api, UserClient $user_client, SubscriptionController $subscription_controller ) {
+ $this->api_client = $api_client;
+ $this->cdn_options = $cdn_options;
+ $this->options = $options;
+ $this->options_api = $options_api;
+ $this->user_client = $user_client;
+ $this->subscription_controller = $subscription_controller;
}
/**
- * {@inheritdoc}
+ * Return an array of events that this subscriber wants to listen to.
+ *
+ * @return array
*/
public static function get_subscribed_events() {
return [
@@ -85,7 +97,12 @@ public static function get_subscribed_events() {
'wp_ajax_rocketcdn_process_status' => 'get_process_status',
'wp_ajax_rocketcdn_validate_token_cname' => 'validate_token_cname',
self::CRON_EVENT => 'maybe_disable_cdn',
- 'wp_rocket_upgrade' => [ 'refresh_cdn_cname', 10, 2 ],
+ 'wp_rocket_upgrade' => [
+ [ 'refresh_cdn_cname', 10, 2 ],
+ [ 'refresh_subscription_details_with_update', 10, 2 ],
+ [ 'maybe_set_rocketcdn_as_cdn_type_on_upgrade', 12, 2 ],
+ ],
+ 'set_transient_wp_rocket_customer_data' => 'maybe_refresh_rocketcdn_details',
];
}
@@ -169,7 +186,7 @@ public function handle_rocketcdn_checkout_parameter(): void {
// Save token and enable CDN.
$this->cdn_options->save_token( $token );
- $this->cdn_options->enable( $cdn_url );
+ $this->cdn_options->enable();
// Schedule subscription check.
$subscription = $this->api_client->get_subscription_data();
@@ -225,7 +242,7 @@ public function enable() {
wp_send_json_error( $data );
}
- $this->cdn_options->enable( esc_url_raw( $cdn_url ) );
+ $this->cdn_options->enable();
$subscription = $this->api_client->get_subscription_data();
@@ -354,6 +371,14 @@ public function maybe_disable_cdn() {
return;
}
+ // If subscription is not running and plan type is not free, clear cache.
+ if ( $this->subscription_controller->is_free() ) {
+ /**
+ * Fires when the rocketcdn subscription is not running.
+ */
+ do_action( 'rocketcdn_free_plan_subscription_expired' );
+ }
+
$this->cdn_options->disable();
}
@@ -399,7 +424,7 @@ public function validate_token_cname() {
}
update_option( 'rocketcdn_user_token', $token );
- $this->cdn_options->enable( esc_url_raw( $cdn_url ) );
+ $this->cdn_options->enable();
$data['message'] = 'token_updated_successfully';
wp_send_json_success( $data );
@@ -435,6 +460,10 @@ public function maybe_retry_activation(): void {
return;
}
+ if ( $this->subscription_controller->is_subscription_creation_loading() ) {
+ return;
+ }
+
$token = get_option( 'rocketcdn_user_token' );
// If token is not saved locally, try to get it from user endpoint.
@@ -461,12 +490,12 @@ public function maybe_retry_activation(): void {
return;
}
- if ( empty( $subscription_data['id'] ) ) {
+ if ( empty( $subscription_data['website_id'] ) ) {
return;
}
// Retry the activation.
- $activation_result = $this->api_client->activate_subscription( $token, $subscription_data['id'] );
+ $activation_result = $this->api_client->activate_subscription( $token, $subscription_data['website_id'] );
if ( is_wp_error( $activation_result ) ) {
return;
@@ -488,7 +517,7 @@ public function maybe_retry_activation(): void {
}
// Enable CDN and schedule check.
- $this->cdn_options->enable( $subscription['cdn_url'] );
+ $this->cdn_options->enable();
$this->schedule_subscription_check( $subscription );
}
@@ -525,4 +554,62 @@ public function refresh_cdn_cname( $new_version, $old_version ): void {
$this->options_api->set( 'settings', $this->options->get_options() );
}
+
+ /**
+ * Refresh subscription details with update to v3.22.0.2.
+ *
+ * @param string $new_version Plugin new version.
+ * @param string $old_version Plugin old version.
+ * @return void
+ */
+ public function refresh_subscription_details_with_update( $new_version, $old_version ) {
+ if ( version_compare( $old_version, '3.22.0.2', '>=' ) ) {
+ return;
+ }
+
+ $this->user_client->flush_cache();// Flush customer details cache to set the transient and then refresh rocketcdn subscription details.
+ $this->cdn_options->flush_subscription_cache();
+ }
+
+ /**
+ * Save the token with any change in rocket customer details in case it's not saved.
+ *
+ * @param object $user_data Rocket customer data.
+ * @return void
+ */
+ public function maybe_refresh_rocketcdn_details( $user_data ) {
+ if ( ! empty( $user_data->rocketcdn->cdn_token ) && ! $this->cdn_options->has_token() ) {
+ $token = sanitize_key( (string) $user_data->rocketcdn->cdn_token );
+ if ( 40 !== strlen( $token ) ) {
+ return;
+ }
+ $this->cdn_options->save_token( $token );
+ }
+
+ $this->cdn_options->flush_subscription_cache();
+ }
+
+ /**
+ * Sets cdn_type to rocketcdn when upgrading from a version affected by the grace period bug.
+ *
+ * @since 3.22.0.2
+ *
+ * @param string $new_version New plugin version.
+ * @param string $old_version Previously installed plugin version.
+ *
+ * @return void
+ */
+ public function maybe_set_rocketcdn_as_cdn_type_on_upgrade( string $new_version, string $old_version ) {
+ if ( version_compare( $old_version, '3.22.0.2', '>=' ) ) {
+ return;
+ }
+
+ if ( ! $this->subscription_controller->is_in_grace_period() ) {
+ return;
+ }
+
+ $current_options = $this->options_api->get( 'settings', [] );
+ $current_options['cdn_type'] = Context::ROCKETCDN_TYPE;
+ $this->options_api->set( 'settings', $current_options );
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Queries/RocketCDN.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Queries/RocketCDN.php
new file mode 100644
index 000000000..4e2111931
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Queries/RocketCDN.php
@@ -0,0 +1,160 @@
+query( [] );
+ }
+
+ /**
+ * Get a page by URL.
+ *
+ * @param string $url The URL to search for.
+ *
+ * @return RocketCDNRow|false
+ */
+ public function get_by_url( string $url ) {
+ $normalized_url = $this->normalize_url_path_encoding( untrailingslashit( $url ) );
+
+ $items = $this->query(
+ [
+ 'url' => $normalized_url,
+ ]
+ );
+
+ if ( empty( $items ) ) {
+ return false;
+ }
+
+ return $items[0];
+ }
+
+ /**
+ * Check if the url is found in the database.
+ *
+ * @param string $url The URL to search for.
+ *
+ * @return bool
+ */
+ public function is_url_found( string $url ): bool {
+ $normalized_url = $this->normalize_url_path_encoding( untrailingslashit( $url ) );
+
+ $counter = $this->query(
+ [
+ 'count' => true,
+ 'url' => $normalized_url,
+ ]
+ );
+
+ return 0 < (int) $counter;
+ }
+
+ /**
+ * Get total count of pages.
+ *
+ * @param bool $bool_cache Use DB cache or not.
+ *
+ * @return int
+ */
+ public function get_total_count( bool $bool_cache = true ): int {
+ return (int) $this->query(
+ [
+ 'count' => true,
+ ],
+ $bool_cache
+ );
+ }
+
+ /**
+ * Delete all rows from the table.
+ *
+ * @return bool|int
+ */
+ public function delete_all_rows() {
+ $db = $this->get_db();
+
+ if ( ! $db ) {
+ return false;
+ }
+
+ $prefixed_table_name = $db->prefix . $this->table_name;
+
+ $query = "DELETE FROM `$prefixed_table_name`";
+ $rows_affected = $db->query( $query );
+
+ return $rows_affected;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Rows/RocketCDN.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Rows/RocketCDN.php
new file mode 100644
index 000000000..870219b08
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Rows/RocketCDN.php
@@ -0,0 +1,61 @@
+id = (int) $this->id;
+ $this->title = (string) $this->title;
+ $this->url = (string) $this->url;
+ $this->modified = empty( $this->modified ) ? 0 : strtotime( (string) $this->modified );
+ $this->last_accessed = empty( $this->last_accessed ) ? 0 : strtotime( (string) $this->last_accessed );
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Schemas/RocketCDN.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Schemas/RocketCDN.php
new file mode 100644
index 000000000..9e6755aee
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Schemas/RocketCDN.php
@@ -0,0 +1,67 @@
+ 'id',
+ 'type' => 'bigint',
+ 'length' => 20,
+ 'unsigned' => true,
+ 'extra' => 'auto_increment',
+ 'primary' => true,
+ 'sortable' => true,
+ ],
+ // Title Column.
+ [
+ 'name' => 'title',
+ 'type' => 'varchar',
+ 'length' => 255,
+ 'default' => '',
+ 'cache_key' => false,
+ 'searchable' => true,
+ 'sortable' => true,
+ ],
+ // URL Column.
+ [
+ 'name' => 'url',
+ 'type' => 'varchar',
+ 'length' => 2000,
+ 'default' => '',
+ 'cache_key' => true,
+ 'searchable' => true,
+ 'sortable' => true,
+ ],
+ // Modified Column.
+ [
+ 'name' => 'modified',
+ 'type' => 'timestamp',
+ 'default' => '0000-00-00 00:00:00',
+ 'modified' => true,
+ 'date_query' => true,
+ 'sortable' => true,
+ ],
+ // Last Accessed Column.
+ [
+ 'name' => 'last_accessed',
+ 'type' => 'timestamp',
+ 'default' => '0000-00-00 00:00:00',
+ 'date_query' => true,
+ 'sortable' => true,
+ ],
+ ];
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Tables/RocketCDN.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Tables/RocketCDN.php
new file mode 100644
index 000000000..0518be255
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Database/Tables/RocketCDN.php
@@ -0,0 +1,69 @@
+ value array of versions => methods.
+ *
+ * @var array
+ */
+ protected $upgrades = [];
+
+ /**
+ * Table schema data.
+ *
+ * @var string
+ */
+ protected $schema_data = "
+ id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+ title varchar(255) NOT NULL default '',
+ url varchar(2000) NOT NULL default '',
+ modified timestamp NOT NULL default '0000-00-00 00:00:00',
+ last_accessed timestamp NOT NULL default '0000-00-00 00:00:00',
+ PRIMARY KEY (id),
+ KEY modified (modified),
+ KEY last_accessed (last_accessed),
+ KEY url (url(150))";
+
+ /**
+ * Truncate DB table.
+ *
+ * @return bool
+ */
+ public function truncate_table(): bool {
+ if ( ! $this->exists() ) {
+ return false;
+ }
+
+ return $this->truncate();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/FrontendSubscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/FrontendSubscriber.php
new file mode 100644
index 000000000..8f1ef2a78
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/FrontendSubscriber.php
@@ -0,0 +1,165 @@
+context = $context;
+ $this->subscription_controller = $subscription_controller;
+ }
+
+ /**
+ * Return an array of events that this subscriber wants to listen to.
+ *
+ * @return array
+ */
+ public static function get_subscribed_events() {
+ return [
+ 'get_rocket_option_cdn_cnames' => [ 'set_cdn_cnames', 9 ],
+ 'get_rocket_option_cdn_zone' => [ 'set_cdn_zone', 9 ],
+ ];
+ }
+
+ /**
+ * Sets the CDN CNAME from the RocketCDN subscription data on the filter level.
+ *
+ * @since 3.22
+ *
+ * @param mixed $cnames The current filter value.
+ *
+ * @return mixed The CDN CNAME array if RocketCDN is active, or the original value for BYOCDN, or empty otherwise.
+ */
+ public function set_cdn_cnames( $cnames ) {
+ if ( is_admin() ) {
+ return $this->handle_admin_cname( $cnames );
+ }
+
+ if ( ! $this->context->is_rocketcdn() ) {
+ return $cnames;
+ }
+
+ $cdn_url = $this->get_rocketcdn_url();
+
+ return empty( $cdn_url ) ? [] : [ $cdn_url ];
+ }
+
+ /**
+ * Sets the CDN zone from the RocketCDN subscription data on the filter level.
+ *
+ * @since 3.22
+ *
+ * @param mixed $value The current filter value.
+ *
+ * @return mixed The CDN zone array if RocketCDN is active, or the original value.
+ */
+ public function set_cdn_zone( $value ) {
+ $cdn_url = $this->get_rocketcdn_url();
+
+ if ( empty( $cdn_url ) ) {
+ return $value;
+ }
+
+ return [ 'all' ];
+ }
+
+ /**
+ * Gets the CDN URL from the RocketCDN subscription data.
+ *
+ * @since 3.22
+ *
+ * @return string The CDN URL if subscription is active, empty string otherwise.
+ */
+ private function get_rocketcdn_url(): string {
+ // Use memoized value if available.
+ if ( null !== $this->rocketcdn_url ) {
+ return $this->rocketcdn_url;
+ }
+
+ if ( ! $this->context->is_rocketcdn() ) {
+ $this->rocketcdn_url = '';
+ return '';
+ }
+
+ if ( ! $this->subscription_controller->has_active_subscription() ) {
+ $this->rocketcdn_url = '';
+ return '';
+ }
+
+ $this->rocketcdn_url = $this->get_raw_rocketcdn_url();
+
+ return $this->rocketcdn_url;
+ }
+
+ /**
+ * Get raw rocketcdn url without any check.
+ *
+ * @return string
+ */
+ private function get_raw_rocketcdn_url() {
+ return $this->subscription_controller->get_rocketcdn_url();
+ }
+
+ /**
+ * Handles the CDN CNAME value in the admin area to ensure that the RocketCDN URL is removed from the list of CNAMEs when the user saves the settings.
+ *
+ * @param array $cnames CNAME array.
+ * @return array
+ */
+ private function handle_admin_cname( $cnames ) {
+ if ( empty( $cnames ) ) {
+ return $cnames;
+ }
+
+ return array_filter( $cnames, [ $this, 'filter_rocketcdn_cname' ] );
+ }
+
+ /**
+ * Filter rocketcdn cname by comparing the current rocketcdn url with the CNAME value.
+ *
+ * @param string $cname CNAME string.
+ * @return bool
+ */
+ private function filter_rocketcdn_cname( $cname ) {
+ return $cname !== $this->get_raw_rocketcdn_url();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php
index e4d9a2085..ef656f72f 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/NoticesSubscriber.php
@@ -2,10 +2,14 @@
namespace WP_Rocket\Engine\CDN\RocketCDN;
use WP_Rocket\Abstract_Render;
+use WP_Rocket\Admin\Options_Data;
use WP_Rocket\Engine\Admin\Beacon\Beacon;
+use WP_Rocket\Engine\Common\Utils;
+use WP_Rocket\Engine\License\API\User;
use WP_Rocket\Engine\License\API\UserClient;
use WP_Rocket\Engine\Tracking\Tracking;
use WP_Rocket\Event_Management\Subscriber_Interface;
+use WP_Rocket\Engine\Tracking\TrackingTrait;
/**
* Subscriber for the RocketCDN notices on WP Rocket settings page
@@ -13,6 +17,8 @@
* @since 3.5
*/
class NoticesSubscriber extends Abstract_Render implements Subscriber_Interface {
+ use TrackingTrait;
+
/**
* RocketCDN API Client instance.
*
@@ -42,158 +48,82 @@ class NoticesSubscriber extends Abstract_Render implements Subscriber_Interface
private $tracking;
/**
- * Constructor
+ * WP Rocket options instance
*
- * @param APIClient $api_client RocketCDN API Client instance.
- * @param Beacon $beacon Beacon instance.
- * @param UserClient $user_client UserClient instance.
- * @param Tracking $tracking Tracking instance.
- * @param string $template_path Path to the templates.
+ * @var Options_Data
*/
- public function __construct( APIClient $api_client, Beacon $beacon, UserClient $user_client, Tracking $tracking, $template_path ) {
- parent::__construct( $template_path );
-
- $this->api_client = $api_client;
- $this->beacon = $beacon;
- $this->user_client = $user_client;
- $this->tracking = $tracking;
- }
-
- /**
- * {@inheritdoc}
- */
- public static function get_subscribed_events() {
- return [
- 'admin_notices' => [
- [ 'promote_rocketcdn_notice' ],
- [ 'purge_cache_notice' ],
- [ 'change_cname_notice' ],
- [ 'activation_failed_notice' ],
- ],
- 'rocket_before_cdn_sections' => 'display_rocketcdn_cta',
- 'wp_ajax_toggle_rocketcdn_cta' => 'toggle_cta',
- 'wp_ajax_rocketcdn_dismiss_notice' => 'dismiss_notice',
- 'admin_footer' => 'add_dismiss_script',
- ];
- }
+ private $options;
/**
- * Adds notice to promote RocketCDN on settings page
+ * Subscription controller instance.
*
- * @since 3.5
- *
- * @return void
+ * @var SubscriptionController
*/
- public function promote_rocketcdn_notice() {
- /**
- * Filters RocketCDN promotion notice.
- *
- * @param bool $promotion_notice; true to display, false otherwise.
- */
- if ( ! apply_filters( 'rocket_promote_rocketcdn_notice', true ) ) {
- return;
- }
-
- if ( $this->is_white_label_account() ) {
- return;
- }
-
- if ( ! rocket_is_live_site() ) {
- return;
- }
-
- if ( ! $this->should_display_notice() ) {
- return;
- }
-
- echo $this->generate( 'promote-notice' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
- }
+ private $subscription_controller;
/**
- * Adds inline script to permanently dismissing the RocketCDN promotion notice
- *
- * @since 3.5
+ * User instance.
*
- * @return void
+ * @var User
*/
- public function add_dismiss_script() {
- if ( $this->is_white_label_account() ) {
- return;
- }
-
- if ( ! rocket_is_live_site() ) {
- return;
- }
-
- if ( ! $this->should_display_notice() ) {
- return;
- }
-
- $nonce = wp_create_nonce( 'rocketcdn_dismiss_notice' );
- ?>
-
- id ) {
- return false;
- }
-
- if ( get_user_meta( get_current_user_id(), 'rocketcdn_dismiss_notice', true ) ) {
- return false;
- }
-
- $subscription_data = $this->api_client->get_subscription_data();
+ public function __construct(
+ APIClient $api_client,
+ Beacon $beacon,
+ UserClient $user_client,
+ Tracking $tracking,
+ $template_path,
+ Options_Data $options,
+ SubscriptionController $subscription_controller,
+ User $user
+ ) {
+ parent::__construct( $template_path );
- return 'running' !== $subscription_data['subscription_status'];
+ $this->api_client = $api_client;
+ $this->beacon = $beacon;
+ $this->user_client = $user_client;
+ $this->tracking = $tracking;
+ $this->options = $options;
+ $this->subscription_controller = $subscription_controller;
+ $this->user = $user;
}
/**
- * Ajax callback to save the dismiss as a user meta
- *
- * @since 3.5
+ * Return an array of events that this subscriber wants to listen to.
*
- * @return void
+ * @return array
*/
- public function dismiss_notice() {
- check_ajax_referer( 'rocketcdn_dismiss_notice', 'nonce', true );
-
- if ( ! current_user_can( 'rocket_manage_options' ) ) {
- wp_send_json_error( 'no permissions' );
- }
-
- update_user_meta( get_current_user_id(), 'rocketcdn_dismiss_notice', true );
-
- wp_send_json_success();
+ public static function get_subscribed_events() {
+ return [
+ 'admin_notices' => [
+ [ 'purge_cache_notice' ],
+ [ 'change_cname_notice' ],
+ [ 'activation_failed_notice' ],
+ [ 'maybe_display_rocketcdn_notice' ],
+ ],
+ 'rocket_cdn_free_before_status_indicator' => [
+ [ 'display_rocketcdn_cta' ],
+ [ 'display_reseller_limit_banner', 11 ],
+ ],
+ 'admin_post_rocket_ignore' => [
+ [ 'track_notice_homepage_cta_click', 5 ],
+ [ 'track_rocketcdn_notice_dismissed', 5 ],
+ ],
+ 'wp_ajax_rocket_ignore' => [ [ 'track_rocketcdn_notice_dismissed', 5 ] ],
+ ];
}
/**
@@ -201,9 +131,11 @@ public function dismiss_notice() {
*
* @since 3.5
*
+ * @param array $cta_data CTA data.
+ *
* @return void
*/
- public function display_rocketcdn_cta() {
+ public function display_rocketcdn_cta( array $cta_data ) {
/**
* Filters the display of the RocketCDN cta banner.
*
@@ -217,13 +149,17 @@ public function display_rocketcdn_cta() {
return;
}
+ if ( $this->user->is_reseller_account() ) {
+ return;
+ }
+
if ( ! rocket_is_live_site() ) {
return;
}
$subscription_data = $this->api_client->get_subscription_data();
- if ( 'running' === $subscription_data['subscription_status'] ) {
+ if ( $this->subscription_controller->has_active_subscription() && $this->subscription_controller->is_paid() ) {
return;
}
@@ -286,6 +222,13 @@ public function display_rocketcdn_cta() {
$promotion_end_date = date_i18n( get_option( 'date_format' ), $end_date );
}
+ global $wp_locale;
+ $current_price_array = explode( $wp_locale->number_format['decimal_point'], $current_price_monthly );
+
+ if ( $cta_data['limit_reached'] ) {
+ $cta_big_class .= 'wpr-rocketcdn-cta---max-limit';
+ }
+
$big_cta_data = [
'container_class' => $cta_big_class,
'promotion_campaign' => $promotion_campaign,
@@ -296,38 +239,39 @@ public function display_rocketcdn_cta() {
'current_price_monthly' => $current_price_monthly,
'current_price_annual' => $current_price_annual,
'button_url' => $button_url,
+ 'regular_price' => $regular_price_monthly,
+ 'current_price' => $current_price_monthly,
+ 'current_price_array' => [
+ 'major' => ! empty( $current_price_array[0] ) ? $current_price_array[0] : 0,
+ 'minor' => ! empty( $current_price_array[1] ) ? $current_price_array[1] : 0,
+ ],
];
}
- echo $this->generate( 'cta-small', $small_cta_data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
+ $big_cta_data = array_merge( $big_cta_data, $cta_data );
+
echo $this->generate( 'cta-big', $big_cta_data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
}
/**
- * Toggles display of the RocketCDN CTAs on the settings page
+ * Displays a reseller-specific informational banner when the 3-page limit is reached.
*
- * @since 3.5
+ * @param array $cta_data CTA data including limit_reached flag.
*
* @return void
*/
- public function toggle_cta() {
- check_ajax_referer( 'rocket-ajax', 'nonce', true );
-
- if ( ! current_user_can( 'rocket_manage_options' ) ) {
- wp_send_json_error( 'no permissions' );
- }
-
- if ( ! isset( $_POST['status'] ) ) {
- wp_send_json_error( 'missing status' );
+ public function display_reseller_limit_banner( array $cta_data ) {
+ if ( ! $this->user->is_reseller_account() ) {
+ return;
}
- if ( 'big' === $_POST['status'] ) {
- delete_user_meta( get_current_user_id(), 'rocket_rocketcdn_cta_hidden' );
- } elseif ( 'small' === $_POST['status'] ) {
- update_user_meta( get_current_user_id(), 'rocket_rocketcdn_cta_hidden', true );
- }
+ $banner_data = [
+ 'heading' => esc_html__( 'Nice work! You\'re using RocketCDN on all available pages.', 'rocket' ),
+ 'description' => esc_html__( 'RocketCDN covers up to 3 pages, and you\'re all set.', 'rocket' ),
+ 'is_hidden' => empty( $cta_data['limit_reached'] ),
+ ];
- wp_send_json_success();
+ echo $this->generate( 'cta-reseller-limit', $banner_data ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Dynamic content is properly escaped in the view.
}
/**
@@ -469,6 +413,12 @@ public function activation_failed_notice(): void {
return;
}
+ if ( $this->subscription_controller->is_free() ) {
+ // Send the request again (create subscription) to fix what is wrong with this account.
+ $this->subscription_controller->create_subscription( true );
+ return;
+ }
+
$express_checkout_url = $this->get_express_checkout_url();
if ( empty( $express_checkout_url ) ) {
@@ -506,16 +456,18 @@ public function activation_failed_notice(): void {
* @return bool True if notice should be displayed, false otherwise.
*/
private function should_display_activation_failed_notice(): bool {
+ if ( $this->subscription_controller->is_subscription_creation_loading() ) {
+ return false;
+ }
+
// Do not show the notice if there is no RocketCDN user token saved:
// this usually means the user never went through the checkout/activation flow.
if ( empty( get_option( 'rocketcdn_user_token', '' ) ) ) {
return false;
}
- $subscription_data = $this->api_client->get_subscription_data();
-
- // Show notice when is_active is false AND cdn_url is empty.
- return ! $subscription_data['is_active'] && empty( $subscription_data['cdn_url'] );
+ // Show notice when webiste is not attached.
+ return ! $this->subscription_controller->is_website_attached() && $this->subscription_controller->has_active_subscription();
}
/**
@@ -545,4 +497,146 @@ private function get_express_checkout_url(): string {
esc_url_raw( $user_data->rocketcdn->button->url )
);
}
+
+ /**
+ * Display RocketCDN notice on admin dashboard if flag is set and notice hasn't been dismissed
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function maybe_display_rocketcdn_notice() {
+ /**
+ * Filters showing rocketcdn admin notices
+ *
+ * @since 3.22
+ *
+ * @param bool $show_rocketcdn_notices Show rocketcdn notices, by default it's shown.
+ */
+ if ( wpm_apply_filters_typed( 'boolean', 'rocket_hide_rocketcdn_notices', false ) ) {
+ return;
+ }
+
+ $previous_version = $this->options->get( 'previous_version' );
+ // @phpstan-ignore-next-line
+ $rocket_cdn_token = get_option( 'rocketcdn_user_token', '' );
+
+ // Don't show the notice if RocketCDN is already active (token exists).
+ if ( ! empty( $rocket_cdn_token ) ) {
+ return;
+ }
+
+ // Fresh install, show new install notice.
+ if ( empty( $previous_version ) ) {
+ $message = sprintf(
+ // translators: %1$s opening tag, %2$s closing tag.
+ esc_html__(
+ '%1$sNew in WP Rocket: Faster loading for your key pages%2$s',
+ 'rocket'
+ ),
+ '',
+ '
'
+ );
+
+ $message .= sprintf(
+ // translators: %1$s opening tag, %2$s closing
tag.
+ esc_html__(
+ '%1$sYou can now use Content Delivery, powered by RocketCDN, to speed up your homepage and 2 more pages, at no extra cost.%2$s',
+ 'rocket'
+ ),
+ '',
+ '
'
+ );
+
+ $notice_info = [
+ 'new_version' => '3.22.0',
+ 'dismiss_button' => 'rocketcdn_install_notice',
+ 'dismiss_message' => __( 'Dismiss', 'rocket' ),
+ 'message' => $message,
+ 'action' => 'rocketcdn_install_page',
+ 'status' => 'success',
+ 'track_event' => true,
+ ];
+
+ Utils::display_update_notice( $notice_info, true );
+
+ return;
+ }
+
+ $message = sprintf(
+ // translators: %1$s opening tag, %2$s closing tag.
+ esc_html__(
+ '%1$sUse RocketCDN for free to boost up to 3 pages 🚀%2$s',
+ 'rocket'
+ ),
+ '',
+ '
'
+ );
+
+ $message .= sprintf(
+ // translators: %1$s opening tag, %2$s closing
tag.
+ esc_html__(
+ '%1$sAs a WP Rocket user, you can now activate RocketCDN for free on up to 3 pages. Choose your top pages and speed up their performance worldwide!%2$s',
+ 'rocket'
+ ),
+ '',
+ '
'
+ );
+
+ $notice_info = [
+ 'new_version' => '3.22.0',
+ 'dismiss_button' => 'rocket_update_notice',
+ 'dismiss_message' => __( 'Check it later', 'rocket' ),
+ 'message' => $message,
+ 'action' => 'rocketcdn_upgrade_page',
+ 'previous_version' => $previous_version,
+ 'track_event' => true,
+ ];
+
+ Utils::display_update_notice( $notice_info, true );
+ }
+
+ /**
+ * Tracks the "Start with my homepage" CTA click from the RocketCDN promo admin notice.
+ *
+ * Fires before rocket_dismiss_boxes() redirects, so we can track before the exit.
+ *
+ * @return void
+ */
+ public function track_notice_homepage_cta_click(): void {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce is verified later by rocket_dismiss_boxes().
+ $box = isset( $_GET['box'] ) ? sanitize_key( wp_unslash( $_GET['box'] ) ) : '';
+
+ if ( 'rocketcdn_install_notice' !== $box ) {
+ return;
+ }
+
+ /**
+ * Fires when the homepage cta button is clicked.
+ *
+ * @param string $source The source of the click, either 'add_homepage_button' or 'admin_notices'.
+ */
+ do_action( 'rocket_rocketcdn_add_homepage', 'admin_notices' );
+ }
+
+ /**
+ * Tracks when a RocketCDN admin notice is dismissed.
+ *
+ * Fires before rocket_dismiss_boxes() redirects, so we can track before the exit.
+ *
+ * @return void
+ */
+ public function track_rocketcdn_notice_dismissed(): void {
+ // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nonce is verified later by rocket_dismiss_boxes().
+ $box = isset( $_GET['box'] ) ? sanitize_key( wp_unslash( $_GET['box'] ) ) : '';
+
+ $rocketcdn_boxes = [ 'rocketcdn_install_notice', 'rocket_update_notice' ];
+
+ if ( ! in_array( $box, $rocketcdn_boxes, true ) ) {
+ return;
+ }
+
+ // Track Mixpanel event immediately.
+ $this->track_event( 'RocketCDN Admin Notice Dismissed' );
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Queue.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Queue.php
new file mode 100644
index 000000000..41ec3e1cf
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Queue.php
@@ -0,0 +1,65 @@
+is_scheduled( $this->create_status_job ) ) {
+ return;
+ }
+ $this->cancel( $this->create_status_job );
+ }
+
+ /**
+ * Schedule reset task.
+ *
+ * @param string $task_id Task ID to check the status of RocketCDN free website creation.
+ *
+ * @return void
+ */
+ public function schedule_create_status_job( string $task_id ): void {
+ // Schedule weekly cleanup.
+ $this->schedule_single(
+ time() + 30, // After 30 seconds from now.
+ $this->create_status_job,
+ [
+ 'task_id' => $task_id,
+ ]
+ );
+ }
+
+ /**
+ * Cancel all scheduled tasks.
+ *
+ * @return void
+ */
+ public function cancel_all_tasks() {
+ $this->cancel_create_status_job();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php
index 25b20d673..0850ccc47 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/RESTSubscriber.php
@@ -26,29 +26,62 @@ class RESTSubscriber implements Subscriber_Interface {
*/
private $options;
+ /**
+ * Rest controller instance.
+ *
+ * @var Rest
+ */
+ private $rest;
+
+ /**
+ * Subscription controller instance.
+ *
+ * @var SubscriptionController
+ */
+ private $subscription_controller;
+
/**
* Constructor
*
- * @param CDNOptionsManager $cdn_options CDNOptionsManager instance.
- * @param Options_Data $options WP Rocket Options instance.
+ * @param CDNOptionsManager $cdn_options CDNOptionsManager instance.
+ * @param Options_Data $options WP Rocket Options instance.
+ * @param Rest $rest Rest controller instance.
+ * @param SubscriptionController $subscription_controller Subscription controller.
*/
- public function __construct( CDNOptionsManager $cdn_options, Options_Data $options ) {
- $this->cdn_options = $cdn_options;
- $this->options = $options;
+ public function __construct( CDNOptionsManager $cdn_options, Options_Data $options, Rest $rest, SubscriptionController $subscription_controller ) {
+ $this->cdn_options = $cdn_options;
+ $this->options = $options;
+ $this->rest = $rest;
+ $this->subscription_controller = $subscription_controller;
}
/**
- * {@inheritdoc}
+ * Return an array of events that this subscriber wants to listen to.
+ *
+ * @return array
*/
public static function get_subscribed_events() {
return [
- 'rest_api_init' => [
+ 'rest_api_init' => [
[ 'register_enable_route' ],
[ 'register_disable_route' ],
+ [ 'register_routes' ],
],
+ 'rocket_cdnfree_website_create_status' => 'check_status',
];
}
+ /**
+ * Registers RocketCDN pages and state REST routes.
+ *
+ * @since 3.22
+ *
+ * @return void
+ */
+ public function register_routes(): void {
+ $this->rest->register_routes();
+ }
+
/**
* Register Enable route in the WP REST API
*
@@ -72,6 +105,7 @@ public function register_enable_route() {
'required' => true,
'validate_callback' => [ $this, 'validate_key' ],
],
+ // RocketCDN CNAME is no longer required as it's now changed on the filter level not in the settings option.
'url' => [
'required' => true,
'validate_callback' => function ( $param ) {
@@ -128,9 +162,7 @@ public function register_disable_route() {
* @return \WP_REST_Response|\WP_Error
*/
public function enable( \WP_REST_Request $request ) {
- $params = $request->get_body_params();
-
- $this->cdn_options->enable( $params['url'] );
+ $this->cdn_options->enable();
$response = [
'code' => 'success',
@@ -191,4 +223,17 @@ public function validate_email( $param ) {
public function validate_key( $param ) {
return ! empty( $param ) && $param === $this->options->get( 'consumer_key' );
}
+
+ /**
+ * Check subscription creation status.
+ *
+ * @param string $task_id Task ID to check.
+ * @return void
+ */
+ public function check_status( string $task_id ) {
+ if ( empty( $task_id ) ) {
+ return;
+ }
+ $this->subscription_controller->check_status( $task_id );
+ }
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Rest.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Rest.php
new file mode 100644
index 000000000..9966fadad
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/Rest.php
@@ -0,0 +1,561 @@
+query = $query;
+ $this->options = $options;
+ $this->options_api = $options_api;
+ $this->render_controller = $render_controller;
+ $this->context = $context;
+ $this->subscription_controller = $subscription_controller;
+ }
+
+ /**
+ * Registers the REST routes.
+ *
+ * @return void
+ */
+ public function register_routes(): void {
+ register_rest_route(
+ self::ROUTE_NAMESPACE,
+ self::ROUTE_BASE . '/pages',
+ [
+ [
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => [ $this, 'get_pages' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ ],
+ [
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => [ $this, 'add_page' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ 'args' => [
+ 'url' => [
+ 'required' => true,
+ 'validate_callback' => function ( $param ) {
+ return ! empty( $param ) && wp_http_validate_url( esc_url_raw( $param ) );
+ },
+ 'sanitize_callback' => function ( $param ) {
+ return $this->normalize_url_path_encoding( untrailingslashit( esc_url_raw( $param ) ) );
+ },
+ ],
+ ],
+ ],
+ ]
+ );
+
+ register_rest_route(
+ self::ROUTE_NAMESPACE,
+ self::ROUTE_BASE . '/pages/homepage',
+ [
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => [ $this, 'add_homepage' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ ]
+ );
+
+ register_rest_route(
+ self::ROUTE_NAMESPACE,
+ self::ROUTE_BASE . '/pages/(?P\d+)',
+ [
+ 'methods' => WP_REST_Server::DELETABLE,
+ 'callback' => [ $this, 'remove_page' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ 'args' => [
+ 'id' => [
+ 'required' => true,
+ 'validate_callback' => function ( $param ) {
+ return is_numeric( $param ) && $param > 0;
+ },
+ 'sanitize_callback' => 'absint',
+ ],
+ ],
+ ]
+ );
+
+ register_rest_route(
+ self::ROUTE_NAMESPACE,
+ self::ROUTE_BASE . '/pause',
+ [
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => [ $this, 'save_pause_state' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ 'args' => [
+ 'paused' => [
+ 'required' => true,
+ 'validate_callback' => function ( $param ) {
+ return is_bool( $param ) || in_array( (string) $param, [ '0', '1' ], true );
+ },
+ 'sanitize_callback' => function ( $param ) {
+ return (int) (bool) $param;
+ },
+ ],
+ ],
+ ]
+ );
+
+ register_rest_route(
+ self::ROUTE_NAMESPACE,
+ self::ROUTE_BASE . '/driver',
+ [
+ 'methods' => WP_REST_Server::CREATABLE,
+ 'callback' => [ $this, 'save_cdn_type' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ 'args' => [
+ 'driver' => [
+ 'required' => true,
+ 'validate_callback' => function ( $param ) {
+ return in_array( $param, [ 'byocdn', 'rocketcdn' ], true );
+ },
+ 'sanitize_callback' => 'sanitize_text_field',
+ ],
+ ],
+ ]
+ );
+
+ register_rest_route(
+ self::ROUTE_NAMESPACE,
+ self::ROUTE_BASE . '/subscription',
+ [
+ [
+ 'methods' => WP_REST_Server::READABLE,
+ 'callback' => [ $this, 'get_subscription' ],
+ 'permission_callback' => [ $this, 'check_permission' ],
+ ],
+ ]
+ );
+ }
+
+ /**
+ * Checks if the current user has permission to manage CDN options.
+ *
+ * @return bool
+ */
+ public function check_permission(): bool {
+ return current_user_can( 'rocket_manage_options' );
+ }
+
+ /**
+ * Adds a page URL to RocketCDN free-tier delivery.
+ *
+ * Validates the URL, checks the page limit, and saves to DB.
+ *
+ * @param WP_REST_Request $request REST request.
+ * @return WP_REST_Response|WP_Error
+ */
+ public function add_page( WP_REST_Request $request ) {
+ $url = $request->get_param( 'url' );
+
+ // Check for local environment.
+ if ( 'local' === wp_get_environment_type() ) {
+ return new WP_Error(
+ 'rocketcdn_on_local_environment',
+ __( 'Addition of pages to RocketCDN is disabled for local environment.', 'rocket' ),
+ [ 'status' => 400 ]
+ );
+ }
+
+ if ( $this->is_limit_reached() ) {
+ return new WP_Error(
+ 'rocketcdn_page_limit_reached',
+ sprintf(
+ /* translators: %d: maximum number of free pages */
+ __( 'Page limit of %d has been reached. Remove a page before adding a new one.', 'rocket' ),
+ $this->get_free_page_limit()
+ ),
+ [ 'status' => 400 ]
+ );
+ }
+
+ $payload = $this->get_url_validation_payload( $url );
+
+ if ( $payload['error'] ) {
+ return new WP_Error(
+ 'rocketcdn_url_not_found',
+ $payload['message'],
+ [ 'status' => $payload['data']['status'] ]
+ );
+ }
+
+ $page_title = __( 'Homepage', 'rocket' );
+
+ if ( ! Utils::is_home( $url ) ) {
+ $page_title = $this->get_page_title( $payload['message'] );
+ }
+
+ $existing = $this->query->get_by_url( $url );
+
+ if ( false !== $existing ) {
+ return new WP_Error(
+ 'rocketcdn_page_already_exists',
+ __( 'This page is already registered for RocketCDN delivery.', 'rocket' ),
+ [ 'status' => 409 ]
+ );
+ }
+
+ $created = $this->subscription_controller->create_subscription();
+ if ( is_wp_error( $created ) ) {
+ return $created;
+ }
+
+ /**
+ * WP Rocket Metabox fields on post edit page.
+ *
+ * @param string[] $original_fields Metaboxes fields.
+ */
+ if ( ! wpm_apply_filters_typed( 'boolean', 'rocket_cdnfree_can_add_page', true, $url ) ) {
+ return new WP_Error(
+ 'rocketcdn_disabled_by_filter',
+ __( 'Adding page is disabled by the filter.', 'rocket' ),
+ [ 'status' => 500 ]
+ );
+ }
+
+ $inserted = $this->query->add_item(
+ [
+ 'url' => $url,
+ 'title' => $page_title,
+ 'modified' => current_time( 'mysql' ),
+ 'last_accessed' => current_time( 'mysql' ),
+ ]
+ );
+
+ if ( ! $inserted ) {
+ return new WP_Error(
+ 'rocketcdn_db_error',
+ __( 'Failed to save page to the database.', 'rocket' ),
+ [ 'status' => 500 ]
+ );
+ }
+
+ $this->clean_url_cache( $url );
+
+ $pages_count = $this->query->get_total_count( false );
+ $source_raw = $request->get_param( 'source' );
+ $source = is_string( $source_raw ) && '' !== $source_raw ? sanitize_key( $source_raw ) : 'manual';
+ $tracked_event = [
+ 'button' => 'rocket cdn add page',
+ 'is_homepage' => Utils::is_home( $url ),
+ 'pages_count' => $pages_count,
+ 'source' => $source,
+ ];
+
+ if ( Utils::is_home( $url ) ) {
+ $tracked_event['button'] = 'rocket cdn add homepage';
+ unset( $tracked_event['is_homepage'] );
+ unset( $tracked_event['pages_count'] );
+ }
+
+ $this->track_event( 'Button Clicked', $tracked_event );
+
+ return new WP_REST_Response( $this->get_pages_data(), 201 );
+ }
+
+ /**
+ * Cleans the cache for the provided URL to ensure changes are reflected in RocketCDN delivery.
+ *
+ * @param string $url URL to clear.
+ *
+ * @return void
+ */
+ private function clean_url_cache( string $url ): void {
+ if ( Utils::is_home( $url ) ) {
+ rocket_clean_home();
+
+ return;
+ }
+
+ rocket_clean_files( [ user_trailingslashit( $url ) ] );
+ }
+
+ /**
+ * Removes a page from RocketCDN free-tier delivery by DB record ID.
+ *
+ * Deletes the DB record and returns the updated list.
+ *
+ * @param WP_REST_Request $request REST request.
+ * @return WP_REST_Response|WP_Error
+ */
+ public function remove_page( WP_REST_Request $request ) {
+ $id = $request->get_param( 'id' );
+ $item = $this->query->get_item( $id );
+
+ if ( empty( $item ) ) {
+ return new WP_Error(
+ 'rocketcdn_page_not_found',
+ __( 'The specified page was not found.', 'rocket' ),
+ [ 'status' => 404 ]
+ );
+ }
+
+ $removed_url = $item->url;
+
+ $this->query->delete_item( $id );
+
+ $this->clean_url_cache( $removed_url );
+
+ $pages_count = $this->query->get_total_count( false );
+
+ $this->track_event(
+ 'Button Clicked',
+ [
+ 'button' => 'rocket cdn remove page',
+ 'is_homepage' => Utils::is_home( $removed_url ),
+ 'pages_count' => $pages_count,
+ ]
+ );
+
+ return new WP_REST_Response( $this->get_pages_data(), 200 );
+ }
+
+ /**
+ * Returns all registered free-tier pages with count and limit info.
+ *
+ * @return WP_REST_Response
+ */
+ public function get_pages(): WP_REST_Response {
+ return new WP_REST_Response( $this->get_pages_data(), 200 );
+ }
+
+ /**
+ * Quick-adds the site homepage as a free-tier CDN page.
+ *
+ * @return WP_REST_Response|WP_Error
+ */
+ public function add_homepage() {
+ $request = new WP_REST_Request( 'POST' );
+ $request->set_param( 'url', untrailingslashit( home_url() ) );
+ $request->set_param( 'source', 'add_homepage_button' );
+
+ return $this->add_page( $request );
+ }
+
+ /**
+ * Saves CDN driver state options.
+ *
+ * Persists the paused state.
+ *
+ * @param WP_REST_Request $request REST request.
+ * @return WP_REST_Response
+ */
+ public function save_pause_state( WP_REST_Request $request ): WP_REST_Response {
+ $paused = (int) $request->get_param( 'paused' );
+
+ $this->options->set( 'cdn', $paused );
+ $this->options_api->set( 'settings', $this->options->get_options() );
+
+ $status = 0 === $paused ? 'paused' : 'active';
+ $action = 0 === $paused ? 'user_paused' : 'user_resume';
+
+ do_action( 'rocket_rocketcdn_cdn_state_changed', $status, $action );
+
+ return new WP_REST_Response(
+ [
+ 'paused' => $this->options->get( 'cdn', 0 ),
+ ],
+ 200
+ );
+ }
+
+ /**
+ * Checks whether the free-tier page limit has been reached.
+ *
+ * @return bool True if the count is at or above the limit.
+ */
+ public function is_limit_reached(): bool {
+ return $this->query->get_total_count() >= $this->get_free_page_limit();
+ }
+
+ /**
+ * Builds the pages response payload.
+ *
+ * @return array
+ */
+ private function get_pages_data(): array {
+ $pages = $this->query->get_all();
+
+ $pages_count = $this->query->get_total_count( false );
+
+ return [
+ 'pages' => array_map(
+ function ( $page ) {
+ return [
+ 'id' => (int) $page->id,
+ 'url' => $page->url,
+ 'title' => $page->title,
+ ];
+ },
+ $pages
+ ),
+ 'count' => $pages_count,
+ 'limit' => $this->get_free_page_limit(),
+ 'items_html' => $this->render_controller->get_built_in_page_list(),
+ 'status_indicator_html' => $this->render_controller->get_status_indicator_html( $pages_count ),
+ 'is_subscription_creation_loading' => $this->subscription_controller->is_subscription_creation_loading(),
+ ];
+ }
+
+ /**
+ * Return the total number of free pages allowed for RocketCDN delivery.
+ *
+ * @return int
+ */
+ protected function get_free_page_limit(): int {
+ return $this->context->get_free_page_limit();
+ }
+
+ /**
+ * Save cdn driver
+ *
+ * Persists the active driver tab selection so the UI
+ * can restore the correct view after a page refresh.
+ *
+ * @param WP_REST_Request $request REST request.
+ * @return WP_REST_Response
+ */
+ public function save_cdn_type( WP_REST_Request $request ) {
+ $cdn_type = $request->get_param( 'driver' );
+
+ $this->options->set( 'cdn_type', $cdn_type );
+ $this->options_api->set( 'settings', $this->options->get_options() );
+
+ return new WP_REST_Response(
+ [
+ 'cdn_type' => $cdn_type,
+ 'disable_rocket_cdn_elements' => $this->render_controller->should_disable_element_for_rocketcdn(),
+ ],
+ 200
+ );
+ }
+
+ /**
+ * Get subscription details.
+ *
+ * @return WP_REST_Response
+ */
+ public function get_subscription(): WP_REST_Response {
+ $subscription = $this->subscription_controller->get_subscription();
+
+ if ( empty( $subscription ) ) {
+ return new WP_REST_Response( null, 204 );
+ }
+
+ return new WP_REST_Response(
+ $subscription,
+ 200
+ );
+ }
+
+ /**
+ * Get URL validation payload.
+ *
+ * @param string $url URL to validate.
+ *
+ * @return array
+ */
+ private function get_url_validation_payload( string $url ): array {
+ $payload = $this->get_page_url_validation_payload( $url );
+
+ // Check for same host.
+ $url_host = wp_parse_url( $url );
+ $site_host = wp_parse_url( home_url() );
+
+ // Check that URL has a valid host component.
+ if ( ! isset( $url_host['host'] ) ) {
+ $payload['error'] = true;
+ $payload['message'] = __( 'Invalid URL provided.', 'rocket' );
+ }
+
+ // Check that URL host matches site host.
+ if ( $url_host['host'] !== $site_host['host'] ) {
+ $payload['error'] = true;
+ $payload['message'] = __( 'URL must be on the same domain as the site.', 'rocket' );
+ }
+
+ return $payload;
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php
index 5b2ffa294..e1c3402ad 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/ServiceProvider.php
@@ -5,6 +5,11 @@
use WP_Rocket\Dependencies\League\Container\Argument\Literal\StringArgument;
use WP_Rocket\Dependencies\League\Container\ServiceProvider\AbstractServiceProvider;
+use WP_Rocket\Engine\CDN\RocketCDN\APIHandler\CheckStatusAPIClient;
+use WP_Rocket\Engine\CDN\RocketCDN\APIHandler\CreateAPIClient;
+use WP_Rocket\Engine\CDN\RocketCDN\APIHandler\WebsiteSearch;
+use WP_Rocket\Engine\CDN\RocketCDN\Database\Queries\RocketCDN as RocketCDNQuery;
+use WP_Rocket\Engine\CDN\RocketCDN\Database\Tables\RocketCDN as RocketCDNTable;
/**
* Service provider for RocketCDN
@@ -16,12 +21,21 @@ class ServiceProvider extends AbstractServiceProvider {
* @var array
*/
protected $provides = [
+ 'rocketcdn_table',
+ 'rocketcdn_query',
'rocketcdn_api_client',
'rocketcdn_options_manager',
'rocketcdn_data_manager_subscriber',
+ 'rocketcdn_frontend_subscriber',
+ 'rocketcdn_rest',
'rocketcdn_rest_subscriber',
'rocketcdn_admin_subscriber',
'rocketcdn_notices_subscriber',
+ 'rocketcdn_subscription_controller',
+ 'rocketcdn_create_api_client',
+ 'rocketcdn_queue',
+ 'rocketcdn_check_status_api_client',
+ 'rocketcdn_website_search_api_client',
];
/**
@@ -41,6 +55,10 @@ public function provides( string $id ): bool {
* @return void
*/
public function register(): void {
+ // RocketCDN database layer.
+ $this->getContainer()->addShared( 'rocketcdn_table', RocketCDNTable::class );
+ $this->getContainer()->add( 'rocketcdn_query', RocketCDNQuery::class );
+
// RocketCDN API Client.
$this->getContainer()->add( 'rocketcdn_api_client', APIClient::class );
// RocketCDN CDN options manager.
@@ -60,6 +78,27 @@ public function register(): void {
'options',
'options_api',
'user_client',
+ 'rocketcdn_subscription_controller',
+ ]
+ );
+ // RocketCDN Frontend subscriber.
+ $this->getContainer()->addShared( 'rocketcdn_frontend_subscriber', FrontendSubscriber::class )
+ ->addArguments(
+ [
+ 'cdn_context',
+ 'rocketcdn_subscription_controller',
+ ]
+ );
+ // RocketCDN REST API pages controller.
+ $this->getContainer()->add( 'rocketcdn_rest', Rest::class )
+ ->addArguments(
+ [
+ 'rocketcdn_query',
+ 'options',
+ 'options_api',
+ 'cdn_render_controller',
+ 'cdn_context',
+ 'rocketcdn_subscription_controller',
]
);
// RocketCDN REST API Subscriber.
@@ -68,6 +107,8 @@ public function register(): void {
[
'rocketcdn_options_manager',
'options',
+ 'rocketcdn_rest',
+ 'rocketcdn_subscription_controller',
]
);
// RocketCDN Notices Subscriber.
@@ -79,18 +120,41 @@ public function register(): void {
'user_client',
'tracking',
new StringArgument( __DIR__ . '/views' ),
+ 'options',
+ 'rocketcdn_subscription_controller',
+ 'user',
]
);
+
+ $this->getContainer()->add( 'rocketcdn_queue', Queue::class );
+ $this->getContainer()->add( 'rocketcdn_create_api_client', CreateAPIClient::class )->addArgument( 'user' );
+ $this->getContainer()->add( 'rocketcdn_check_status_api_client', CheckStatusAPIClient::class );
+ $this->getContainer()->add( 'rocketcdn_website_search_api_client', WebsiteSearch::class );
+ $this->getContainer()->add( 'rocketcdn_subscription_controller', SubscriptionController::class )
+ ->addArguments(
+ [
+ 'rocketcdn_api_client',
+ 'rocketcdn_create_api_client',
+ 'rocketcdn_options_manager',
+ 'rocketcdn_queue',
+ 'rocketcdn_check_status_api_client',
+ 'user',
+ 'rocketcdn_website_search_api_client',
+ ]
+ );
+
// RocketCDN settings page subscriber.
$this->getContainer()->addShared( 'rocketcdn_admin_subscriber', AdminPageSubscriber::class )
->addArguments(
[
'rocketcdn_api_client',
- 'options',
- 'beacon',
'user_client',
+ 'user',
new StringArgument( __DIR__ . '/views' ),
]
);
+
+ // Ensure the table is created and refreshed when needed.
+ $this->getContainer()->get( 'rocketcdn_table' );
}
}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/SubscriptionController.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/SubscriptionController.php
new file mode 100644
index 000000000..dc041dcee
--- /dev/null
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/SubscriptionController.php
@@ -0,0 +1,439 @@
+api_client = $api_client;
+ $this->create_api_client = $create_api_client;
+ $this->options_manager = $options_manager;
+ $this->queue = $queue;
+ $this->check_status_api_client = $check_status_api_client;
+ $this->user = $user;
+ $this->website_search_api_client = $website_search_api_client;
+ }
+
+ /**
+ * Get subscription data.
+ *
+ * @return array
+ */
+ public function get_subscription_data() {
+ if ( $this->is_subscription_creation_loading() ) {
+ return [];
+ }
+
+ if ( ! rocket_get_constant( 'WP_ROCKET_IS_TESTING', false ) && ! empty( $this->subscription ) ) {
+ return $this->subscription;
+ }
+
+ $this->subscription = $this->api_client->get_subscription_data();
+ if ( 404 === ( $this->subscription['status_code'] ?? null ) ) {
+ $this->website_search_api_client->set_site_url( home_url() );
+ $website = $this->website_search_api_client->find();
+ if ( ! empty( $website ) ) {
+ $this->subscription = array_merge( $this->subscription, $website );
+ }
+ }
+
+ return $this->subscription;
+ }
+
+ /**
+ * Check if it has active RocketCDN subscription.
+ *
+ * @return bool
+ */
+ public function has_active_subscription(): bool {
+ $subscription = $this->get_subscription_data();
+ return ! empty( $subscription['subscription_status'] ) && 'running' === $subscription['subscription_status'];
+ }
+
+ /**
+ * Check if it has WP Rocket license is expired or revoked, regardless of RocketCDN subscription status.
+ *
+ * @return bool
+ */
+ public function is_license_invalid(): bool {
+ return $this->user->is_license_expired() || $this->user->is_revoked();
+ }
+
+
+ /**
+ * Check if it has inactive RocketCDN subscription.
+ * We are checking the transient since the get_subscription_data will return default value until we add a page to rocketcdn.
+ *
+ * @return bool
+ */
+ public function has_inactive_subscription() {
+ $transient = get_transient( 'rocketcdn_status' );
+ if ( false === $transient ) {
+ return false;
+ }
+
+ return ! $this->has_active_subscription();
+ }
+
+ /**
+ * Create RocketCDN subscription if it doesn't have an active one, and handle the response.
+ *
+ * @param bool $skip_active_check Skip checking if the website has active subscription or not, default is false.
+ *
+ * @return bool|WP_Error
+ */
+ public function create_subscription( bool $skip_active_check = false ) {
+ if ( ! $skip_active_check && $this->has_active_subscription() ) {
+ return false;
+ }
+
+ $this->start_subscription_creation_loader();
+
+ $created = $this->create_api_client->create();
+ if ( ! $created || ! $created['success'] ) {
+ $this->logger::error(
+ 'RocketCDN: Failed to create subscription.',
+ [
+ 'code' => $created['data']['code'] ?? 'Unknown',
+ 'message' => $created['data']['message'] ?? 'Unknown',
+ ]
+ );
+
+ $this->stop_subscription_creation_loader();
+
+ return new WP_Error( $created['data']['code'] ?? 'rocketcdn_account_notcreated', $created['data']['message'] ?? 'Unknown' );
+ }
+
+ switch ( $created['data']['code'] ) {
+ case 'cdn_task_enqueued':
+ // Save CDN token.
+ $this->options_manager->save_token( $created['data']['cdn_token'] );
+
+ // Enqueue AS single task after 30 seconds from now to check the status.
+ $this->queue->schedule_create_status_job( $created['data']['task_id'] );
+
+ /**
+ * Fires when rocketcdn subscription is created.
+ *
+ * @param string $task_id Enqueued task ID.
+ * @param string $token CDN Subscription token.
+ */
+ do_action( 'rocket_cdn_subscription_created', $created['data']['task_id'], $created['data']['cdn_token'] );
+ break;
+
+ case 'already_free_subscribed':
+ // Clear subscription cache so it can get the final state, and save the token before if it's not saved before.
+ if ( ! $this->options_manager->has_token() ) {
+ $this->options_manager->save_token( $created['data']['cdn_token'] );
+ }
+
+ $this->stop_subscription_creation_loader();
+
+ $this->options_manager->flush_subscription_cache();
+ break;
+ default:
+ // Log this not known code.
+ $this->logger::error(
+ 'RocketCDN: Received not known response code when creating subscription.',
+ [
+ 'code' => $created['data']['code'],
+ 'message' => $created['data']['message'],
+ ]
+ );
+ $this->stop_subscription_creation_loader();
+
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Check subscription's creation status.
+ *
+ * @param string $task_id Task ID.
+ * @return void
+ */
+ public function check_status( string $task_id ) {
+ if ( $this->has_active_subscription() ) {
+ $this->stop_subscription_creation_loader();
+ return;
+ }
+
+ $this->check_status_api_client->set_task_id( $task_id );
+ $status = $this->check_status_api_client->check();
+ if ( ! $status ) {
+ $this->stop_subscription_creation_loader();
+ return;
+ }
+
+ if ( ! $status['success'] ) {
+ $this->stop_subscription_creation_loader();
+ $this->logger::error(
+ 'RocketCDN: Failed to check creation status.',
+ $status
+ );
+ return;
+ }
+
+ switch ( $status['status'] ) {
+ case 'PENDING':
+ // Re-add the action scheduler task to check status again after 30 seconds.
+ $this->queue->schedule_create_status_job( $task_id );
+ break;
+ case 'SUCCESS':
+ $this->options_manager->enable( false );
+
+ $this->stop_subscription_creation_loader();
+
+ /**
+ * Fires when rocketcdn subscription's creation is finished successfully.
+ */
+ do_action( 'rocket_cdnfree_website_created' );
+ break;
+ default:
+ $this->stop_subscription_creation_loader();
+ $this->logger::error(
+ 'RocketCDN: Received not known response code when check subscription\'s status.',
+ $status
+ );
+ }
+ }
+
+ /**
+ * If current subscription is free.
+ *
+ * @return bool
+ */
+ public function is_free(): bool {
+ $subscription = $this->get_subscription_data();
+ return ! empty( $subscription['plan_type'] ) && 'free' === $subscription['plan_type'];
+ }
+
+ /**
+ * If current subscription is paid.
+ *
+ * @return bool
+ */
+ public function is_paid(): bool {
+ $subscription = $this->get_subscription_data();
+ return ! empty( $subscription['plan_type'] ) && 'paid' === $subscription['plan_type'];
+ }
+
+ /**
+ * Check if website is attached to the subscription correctly or not.
+ *
+ * @return bool
+ */
+ public function is_website_attached(): bool {
+ $subscription = $this->get_subscription_data();
+ return ! empty( $subscription['website_attached'] );
+ }
+
+ /**
+ * Set subscription creation process transient.
+ * Its value can be used to track creation process time.
+ *
+ * @return void
+ */
+ private function start_subscription_creation_loader() {
+ set_transient( $this->subscription_loading_transient, time(), HOUR_IN_SECONDS );
+ }
+
+ /**
+ * Delete subscription creation process transient.
+ *
+ * @return void
+ */
+ private function stop_subscription_creation_loader() {
+ delete_transient( $this->subscription_loading_transient );
+ }
+
+ /**
+ * Check if subscription creation process is in-progress state.
+ *
+ * @return bool
+ */
+ public function is_subscription_creation_loading(): bool {
+ if ( ! $this->options_manager->has_token() ) {
+ return false;
+ }
+
+ return false !== get_transient( $this->subscription_loading_transient );
+ }
+
+ /**
+ * Get subscription details, mainly for the rest API endpoint.
+ *
+ * @return array
+ */
+ public function get_subscription() {
+ return [
+ 'is_loading' => $this->is_subscription_creation_loading(),
+ 'has_active_subscription' => $this->has_active_subscription(),
+ ];
+ }
+
+ /**
+ * Get rocketcdn from the subscription.
+ *
+ * @return string
+ */
+ public function get_rocketcdn_url() {
+ $subscription = $this->get_subscription_data();
+ return $subscription['cdn_url'] ?? '';
+ }
+
+ /**
+ * Get rocketcdn transient status
+ *
+ * @return mixed
+ */
+ public function get_rocketcdn_status() {
+ return get_transient( 'rocketcdn_status' );
+ }
+
+ /**
+ * Checks whether the subscription has been cancelled or refunded.
+ *
+ * @since 3.22.0.2
+ *
+ * @return bool True if the subscription status is 'cancelled' or 'refunded', false otherwise.
+ */
+ public function is_cancelled(): bool {
+ $subscription = $this->get_subscription_data();
+ return ! empty( $subscription['subscription_status'] ) && in_array( $subscription['subscription_status'], [ 'cancelled', 'refunded' ], true );
+ }
+
+ /**
+ * Checks whether the website is pending deletion on the RocketCDN side.
+ *
+ * @since 3.22.0.2
+ *
+ * @return bool True if the website status is 'pending_deletion', false otherwise.
+ */
+ public function is_website_pending_deletion(): bool {
+ $subscription = $this->get_subscription_data();
+ return ! empty( $subscription['website_status'] ) && 'pending_deletion' === $subscription['website_status'];
+ }
+
+ /**
+ * Checks whether the subscription is within the cancellation grace period.
+ *
+ * The grace period is active when the subscription is cancelled but the website
+ * is still pending deletion, meaning it has not yet been fully removed.
+ *
+ * @since 3.22.0.2
+ *
+ * @return bool True if the subscription is cancelled and the website is pending deletion, false otherwise.
+ */
+ public function is_in_grace_period(): bool {
+ return $this->is_cancelled() && $this->is_website_pending_deletion();
+ }
+
+ /**
+ * Checks whether the subscription is cancelled and the grace period has elapsed.
+ *
+ * Returns true when the subscription is cancelled and the website is no longer
+ * pending deletion, indicating the grace period has fully passed.
+ *
+ * @since 3.22.0.2
+ *
+ * @return bool True if cancelled and outside the grace period, false otherwise.
+ */
+ public function is_cancelled_outside_grace_period(): bool {
+ return $this->is_cancelled() && ! $this->is_website_pending_deletion();
+ }
+}
diff --git a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php
index 34b33668f..20d5033fe 100644
--- a/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php
+++ b/web/app/plugins/wp-rocket/inc/Engine/CDN/RocketCDN/views/cta-big.php
@@ -9,138 +9,172 @@
* @type string $promotion_campaign Promotion campaign title.
* @type string $promotion_end_date Promotion end date.
* @type string $nopromo_variant CSS modifier for the no promotion display.
+ * @type string $regular_price RocketCDN regular price.
+ * @type string $current_price RocketCDN current price.
* @type string $regular_price_monthly RocketCDN regular monthly price.
* @type string $regular_price_annual RocketCDN regular annual price.
* @type string $current_price_monthly RocketCDN current monthly price.
* @type string $current_price_annual RocketCDN current annual price.
+ * @type string $cta_heading CTA toggle text with strong-wrapped heading.
+ * @type string $cta_description CTA description text.
* }
*/
defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
$data = isset( $data ) && is_array( $data ) ? $data : []; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
+
+$rocketcdn_container_classes = [ 'wpr-rocketcdn-cta' ];
+
+if ( empty( $data['is_visible'] ) ) {
+ $rocketcdn_container_classes[] = 'wpr-isHidden';
+}
+
+if ( ! empty( $data['is_visible'] ) && ! empty( $data['is_expanded'] ) ) {
+ $rocketcdn_container_classes[] = 'wpr-rocketcdn-cta--expanded';
+ $rocketcdn_container_classes[] = 'wpr-rocketcdn-cta---max-limit';
+}
+
+if ( ! empty( $data['is_visible'] ) && empty( $data['is_expanded'] ) ) {
+ $rocketcdn_container_classes[] = 'wpr-rocketcdn-cta--collapsed';
+}
+
+if ( ! empty( $data['container_class'] ) ) {
+ $rocketcdn_container_classes[] = $data['container_class'];
+}
+
?>
-