diff --git a/build/old_settings_upe_toggle.js b/build/old_settings_upe_toggle.js
new file mode 100644
index 0000000..4df3fce
--- /dev/null
+++ b/build/old_settings_upe_toggle.js
@@ -0,0 +1 @@
+!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=301)}({2:function(e,t){e.exports=window.wp.i18n},204:function(e,t){e.exports=window.wp.domReady},254:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(204),o=n.n(r);const c={recordEvent:()=>null};function i(e,t){o()(()=>{window.wcTracks&&window.wcTracks.isEnabled&&(window.wc&&window.wc.tracks&&window.wc.tracks.recordEvent&&"function"==typeof window.wc.tracks.recordEvent?window.wc.tracks:window.wcTracks&&window.wcTracks.recordEvent?window.wcTracks:c).recordEvent(e,t)})}},301:function(e,t,n){"use strict";n.r(t);var r=n(4),o=n(2),c=n(204),i=n.n(c),a=n(254);i()(()=>{if(!wc_stripe_old_settings_param)return;const{was_upe_enabled:e,is_upe_enabled:t}=wc_stripe_old_settings_param;if("1"!==t&&Object(r.dispatch)("core/notices").createSuccessNotice(Object(o.__)("🤔 What made you disable the new payments experience?","woocommerce-gateway-stripe"),{actions:[{label:Object(o.__)("Share feedback (1 min)","woocommerce-gateway-stripe"),url:"https://woocommerce.survey.fm/woocommerce-stripe-upe-opt-out-survey"}]}),e!==t){const e=t?"wcstripe_upe_enabled":"wcstripe_upe_disabled";Object(a.a)(e)}})},4:function(e,t){e.exports=window.wp.data}});
\ No newline at end of file
