diff --git a/static/games/Terminal/Terminal.html b/static/games/Terminal/Terminal.html
index 74e87d1..7797559 100644
--- a/static/games/Terminal/Terminal.html
+++ b/static/games/Terminal/Terminal.html
@@ -333,7 +333,7 @@ version 0.6.9
vm.setTurboMode(false);
if (vm.setInterpolation) vm.setInterpolation(false);
if (vm.setFramerate) vm.setFramerate(30);
- if (vm.renderer.setUseHighQualityRender) vm.renderer.setUseHighQualityRender(false);
+ if (vm.renderer.setUseHighQualityRender) vm.renderer.setUseHighQualityRender(true);
if (vm.setRuntimeOptions) vm.setRuntimeOptions({
fencing: true,
miscLimits: true,
@@ -353,10 +353,15 @@ version 0.6.9
getSandboxMode: () => 'unsandboxed',
canLoadExtensionFromProject: () => true
});
- for (const extension of ["data:text/javascript;base64,Ly8gTmFtZTogVGVybWluYWwKLy8gSUQ6IEJyMHRUZXJtaW5hbAovLyBEZXNjcmlwdGlvbjogTWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLiBPcGVuIGEgVGVybWluYWwgYW5kIGNyZWF0ZSBjb21tYW5kcwovLyBCeTogQnIwdGNyYWZ0IDx3d3cuQnIwdGNyYWZ0LmRlPgoKKGZ1bmN0aW9uIChTY3JhdGNoKSB7CiAgInVzZSBzdHJpY3QiCgogIGNvbnN0IG1lbnVJY29uVVJJID0gImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjJaWEp6YVc5dVBTSXhMakVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGRwWkhSb1BTSXhNekl1TWpreU1EY2lJR2hsYVdkb2REMGlNVE15TGpRd09UUXpJaUIyYVdWM1FtOTRQU0l3TERBc01UTXlMakk1TWpBM0xERXpNaTQwTURrME15SStQR2NnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb0xURTNNeTQ0TlRNNU5pd3RNVEV6TGpjNU5USTVLU0krUEdjZ1pHRjBZUzF3WVhCbGNpMWtZWFJoUFNKN0puRjFiM1E3YVhOUVlXbHVkR2x1WjB4aGVXVnlKbkYxYjNRN09uUnlkV1Y5SWlCbWFXeHNMWEoxYkdVOUltNXZibnBsY204aUlITjBjbTlyWlQwaWJtOXVaU0lnYzNSeWIydGxMV3hwYm1WallYQTlJbUoxZEhRaUlITjBjbTlyWlMxc2FXNWxhbTlwYmowaWJXbDBaWElpSUhOMGNtOXJaUzF0YVhSbGNteHBiV2wwUFNJeE1DSWdjM1J5YjJ0bExXUmhjMmhoY25KaGVUMGlJaUJ6ZEhKdmEyVXRaR0Z6YUc5bVpuTmxkRDBpTUNJZ2MzUjViR1U5SW0xcGVDMWliR1Z1WkMxdGIyUmxPaUJ1YjNKdFlXd2lQanh3WVhSb0lHUTlJazB6TURZdU1UUTJNRFFzTVRnd1l6QXNNell1TlRZek56Y2dMVEk1TGpZeE5EVXhMRFkyTGpJd05EY3hJQzAyTmk0eE5EWXdOQ3cyTmk0eU1EUTNNV010TXpZdU5UTXhNellzTUNBdE5qWXVNVFEyTURRc0xUSTVMalkwTURrMElDMDJOaTR4TkRZd05Dd3ROall1TWpBME56RmpNQ3d0TXpZdU5UWXpOemNnTWprdU5qRTBOamdzTFRZMkxqSXdORGN4SURZMkxqRTBOakEwTEMwMk5pNHlNRFEzTVdNek5pNDFNekV6Tml3d0lEWTJMakUwTmpBMExESTVMalkwTURrMElEWTJMakUwTmpBMExEWTJMakl3TkRjeGVpSWdabWxzYkQwaUl6azBPVFE1TkNJZ2MzUnliMnRsTFhkcFpIUm9QU0l3SWk4K1BIQmhkR2dnWkQwaVRURTRPUzR6TURneE5pd3lNVFF1T1RBd05EWjJMVEUzTGpNeU56QXliREUzTGpNd01qQTVMQzB4Tnk0eE5qQXpiQzB4Tnk0ek1ESXdPU3d0TVRndU5ETTJOekoyTFRFMkxqZzNOalUyYkRNMUxqUTFOVEEzTERNMExqWXlPVEk0ZWlJZ1ptbHNiRDBpSXpFMk5UUXhZaUlnYzNSeWIydGxMWGRwWkhSb1BTSXdJaTgrUEhCaGRHZ2daRDBpVFRJeU1TNDNNVGMzTERJeE5DNHdOakUzWXkwd0xqVXpOVGtzTUNBdE1DNDVOekF5TkN3dE1DNDBNelF6TkNBdE1DNDVOekF5TkN3dE1DNDVOekF5TkhZdE1UTXVORGs1TlRoak1Dd3RNQzQxTXpVNUlEQXVORE0wTXpRc0xUQXVPVGN3TWpRZ01DNDVOekF5TkN3dE1DNDVOekF5TkdnMk9DNHdNRE01WXpBdU5UTTFPU3d3SURBdU9UY3dNalFzTUM0ME16UXpOQ0F3TGprM01ESTBMREF1T1Rjd01qUjJNVE11TkRrNU5UaGpNQ3d3TGpVek5Ua2dMVEF1TkRNME16UXNNQzQ1TnpBeU5DQXRNQzQ1TnpBeU5Dd3dMamszTURJMGVpSWdabWxzYkQwaUl6RTJOVFF4WWlJZ2MzUnliMnRsTFhkcFpIUm9QU0l3SWk4K1BIUmxlSFFnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb01qSXpMakUxTXpRNUxESXhNQzQzTmpjeU5Ta2djMk5oYkdVb01DNHpPRE0xT0N3d0xqTTRNelU0S1NJZ1ptOXVkQzF6YVhwbFBTSTBNQ0lnZUcxc09uTndZV05sUFNKd2NtVnpaWEoyWlNJZ1ptbHNiRDBpSXpJeE4yUXlPQ0lnWm1sc2JDMXlkV3hsUFNKdWIyNTZaWEp2SWlCemRISnZhMlU5SW01dmJtVWlJSE4wY205clpTMTNhV1IwYUQwaU1TSWdjM1J5YjJ0bExXeHBibVZqWVhBOUltSjFkSFFpSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpYldsMFpYSWlJSE4wY205clpTMXRhWFJsY214cGJXbDBQU0l4TUNJZ2MzUnliMnRsTFdSaGMyaGhjbkpoZVQwaUlpQnpkSEp2YTJVdFpHRnphRzltWm5ObGREMGlNQ0lnWm05dWRDMW1ZVzFwYkhrOUlsTmhibk1nVTJWeWFXWWlJR1p2Ym5RdGQyVnBaMmgwUFNKdWIzSnRZV3dpSUhSbGVIUXRZVzVqYUc5eVBTSnpkR0Z5ZENJZ2MzUjViR1U5SW0xcGVDMWliR1Z1WkMxdGIyUmxPaUJ1YjNKdFlXd2lQangwYzNCaGJpQjRQU0l3SWlCa2VUMGlNQ0krUW5Jd2RHTnlZV1owUEM5MGMzQmhiajQ4TDNSbGVIUStQQzluUGp3dlp6NDhMM04yWno0OElTMHRjbTkwWVhScGIyNURaVzUwWlhJNk5qWXVNVFEyTURNMk5qWTJOalkyT1RZNk5qWXVNakEwTnpFek1UWTRNRGd4TWpRdExUND0iOwogIGNvbnN0IHVybCA9ICJodHRwczovL2V4YW1wbGUuY29tIjsKICBjb25zdCBOb3JtYWxNb2RlID0gZmFsc2U7CiAgdmFyIEFwcElEID0gIiI7CiAgdmFyIERlZmF1bHRDb2xvdXIgPSAiIzAwMDAwMCI7CiAgdmFyIERlZmF1bHRXYXJuID0gIiNlMmRhMDAiOwogIHZhciBEZWZhdWx0RXJyb3IgPSAiI2UwMDAwMCI7CiAgdmFyIEVycm9yID0gImZhbHNlIjsKCiAgaWYgKCFTY3JhdGNoLmV4dGVuc2lvbnMudW5zYW5kYm94ZWQpIHsKICAgIHRocm93IG5ldyBFcnJvcignVGhlIHRlcm1pbmFsIGV4dGVuc2lvbiBydW5zIGJldHRlciB3aGVuIHVuc2FuZGJveGVkJyk7CiAgfQogIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ0FQUElEJywgJycpOwoKY2xhc3MgVGVybWluYWwgCnsKICBnZXRJbmZvKCkgCiAgewogICAgcmV0dXJuIHsKICAgICAgaWQ6ICdCcjB0VGVybWluYWwnLAogICAgICBuYW1lOiAnVGVybWluYWwnLAogICAgICBtZW51SWNvblVSSTogbWVudUljb25VUkksCiAgICAgIGJsb2NrSWNvblVSSTogbWVudUljb25VUkksCiAgICAgIGNvbG9yMTogJyNiM2IzYjMnLAogICAgICBjb2xvcjI6ICcjODY4Njg2JywKICAgICAgY29sb3IzOiAnIzVhNWE1YScsCiAgICAgIGJsb2NrczogCiAgICAgIFsKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdTZXRBcHBJRCcsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnc2V0IEFwcElEIHRvIFtJRF0nLAogICAgICAgICAgYXJndW1lbnRzOiAKICAgICAgICAgIHsKICAgICAgICAgICAgSUQ6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICd0ZXJtaW5hbCcsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnW1NIT1ddIHRlcm1pbmFsJywKICAgICAgICAgIGFyZ3VtZW50czogCiAgICAgICAgICB7CiAgICAgICAgICAgIFNIT1c6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICAgIG1lbnU6ICdTSE9XJwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdsb2cnLAogICAgICAgICAgYmxvY2tUeXBlOiBTY3JhdGNoLkJsb2NrVHlwZS5DT01NQU5ELAogICAgICAgICAgdGV4dDogJ2xvZyBbTE9HXScsCiAgICAgICAgICBhcmd1bWVudHM6IAogICAgICAgICAgewogICAgICAgICAgICBMT0c6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICd3YXJuJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICd3YXJuIFtXQVJOXScsCiAgICAgICAgICBhcmd1bWVudHM6IAogICAgICAgICAgewogICAgICAgICAgICBXQVJOOiAKICAgICAgICAgICAgewogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLlNUUklORywKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgb3Bjb2RlOiAnZXJyb3InLAogICAgICAgICAgYmxvY2tUeXBlOiBTY3JhdGNoLkJsb2NrVHlwZS5DT01NQU5ELAogICAgICAgICAgdGV4dDogJ2Vycm9yIFtFUlJPUl0nLAogICAgICAgICAgYXJndW1lbnRzOiAKICAgICAgICAgIHsKICAgICAgICAgICAgRVJST1I6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdXcml0aW5nQ29sb3VyJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdzZXQgZGVmYXVsdCBmb250IGNvbG9yIG9uIFtDT0xPVVJdJywKICAgICAgICAgIGFyZ3VtZW50czogCiAgICAgICAgICB7CiAgICAgICAgICAgIENPTE9VUjogCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB0eXBlOiBTY3JhdGNoLkFyZ3VtZW50VHlwZS5DT0xPUiwKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgb3Bjb2RlOiAnQ29sb3VyTG9nJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdMb2cgW0xPR10gd2l0aCBjb2xvdXIgW0NPTE9VUl0nLAogICAgICAgICAgYXJndW1lbnRzOiAKICAgICAgICAgIHsKICAgICAgICAgICAgTE9HOiAKICAgICAgICAgICAgewogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLlNUUklORywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ09MT1VSOiAKICAgICAgICAgICAgewogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLkNPTE9SLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdjbGVhcicsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnY2xlYXInLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgb3Bjb2RlOiAnV2hlbkNvbW1hbmQnLAogICAgICAgICAgYmxvY2tUeXBlOiBTY3JhdGNoLkJsb2NrVHlwZS5IQVQsCiAgICAgICAgICB0ZXh0OiAnd2hlbiBbQ09NTUFORF0gd2FzIGVudGVyZWQgYXMgYSBjb21tYW5kJywKICAgICAgICAgIGlzRWRnZUFjdGl2YXRlZDogdHJ1ZSwKICAgICAgICAgIGFyZ3VtZW50czogCiAgICAgICAgICB7CiAgICAgICAgICAgIENPTU1BTkQ6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdDb21tYW5kJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuUkVQT1JURVIsCiAgICAgICAgICB0ZXh0OiAnY29tbWFuZCcsCiAgICAgICAgICBpc0VkZ2VBY3RpdmF0ZWQ6IHRydWUKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIG9wY29kZTogJ0xvZycsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLlJFUE9SVEVSLAogICAgICAgICAgdGV4dDogJ0xvZycsCiAgICAgICAgICBpc0VkZ2VBY3RpdmF0ZWQ6IHRydWUsCiAgICAgICAgICBoaWRlRnJvbVBhbGV0dGU6IE5vcm1hbE1vZGUsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdTZXRDb21tYW5kJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdzZXQgQ29tbWFuZCBvbiBbVEVYVF0nLAogICAgICAgICAgaXNFZGdlQWN0aXZhdGVkOiB0cnVlLAogICAgICAgICAgaGlkZUZyb21QYWxldHRlOiBOb3JtYWxNb2RlLAogICAgICAgICAgYXJndW1lbnRzOgogICAgICAgICAgewogICAgICAgICAgICBURVhUOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdjbGVhckxvZycsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnY2xlYXIgTG9nJywKICAgICAgICAgIGlzRWRnZUFjdGl2YXRlZDogdHJ1ZSwKICAgICAgICAgIGhpZGVGcm9tUGFsZXR0ZTogTm9ybWFsTW9kZSwKICAgICAgICB9LAoKICAgICAgXSwKICAgICAgbWVudXM6IAogICAgICB7CiAgICAgICAgU0hPVzogCiAgICAgICAgewogICAgICAgICAgYWNjZXB0UmVwb3J0ZXJzOiB0cnVlLAogICAgICAgICAgaXRlbXM6IAogICAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdGV4dDonc2hvdycsCiAgICAgICAgICAgICAgdmFsdWU6J3Nob3cnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB0ZXh0OiAnaGlkZScsIAogICAgICAgICAgICAgIHZhbHVlOiAnaGlkZScKICAgICAgICAgICAgfQogICAgICAgICAgXQogICAgICAgIH0KICAgICAgfQogICAgfTsKICB9CgoKICBTZXRBcHBJRCAoYXJncykKICB7CiAgICBBcHBJRCA9IGFyZ3MuSUQ7CiAgfQoKICB0ZXJtaW5hbCAoYXJncykKICB7CiAgICBpZiAoQXBwSUQgPT0gIiIpIAogICAgewogICAgICBpZiAoRXJyb3IgPT0gImZhbHNlIikKICAgICAgewogICAgICBhbGVydCgiUGxlYXNlIHVzZSB0aGUgJ3NldCBBcHBJRCB0bycgYmxvY2sgYmVmb3JlIHJ1bm5pbmcgeW91ciBwcm9ncmFtIik7CiAgICAgIEVycm9yID0gInRydWUiOwogICAgICB9CiAgICAgIHJldHVybiAnRXJyb3InOwogICAgfSAKICAgIGlmIChhcmdzLlNIT1cgPT0gImhpZGUiKQogICAgewogICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiVGVybWluYWxfUHJpdmF0ZSIgKyBBcHBJRCwgImNsb3NlIikKICAgIH0gCiAgICBlbHNlCiAgICB7CiAgICAgIGlmIChhcmdzLlNIT1cgPT0gInNob3ciKQogICAgICB7CiAgICAgICAgU2NyYXRjaC5vcGVuV2luZG93KHVybCwgIndpZHRoPTQwMCxoZWlnaHQ9NDAwIik7CiAgICAgIH0gCiAgICB9CiAgICByZXR1cm47CiAgfQoKICBsb2cgKGFyZ3MpCiAgewogICAgaWYgKEFwcElEID09ICIiKSAKICAgIHsKICAgICAgaWYgKEVycm9yID09ICJmYWxzZSIpCiAgICAgIHsKICAgICAgYWxlcnQoIlBsZWFzZSB1c2UgdGhlICdzZXQgQXBwSUQgdG8nIGJsb2NrIGJlZm9yZSBydW5uaW5nIHlvdXIgcHJvZ3JhbSIpOwogICAgICBFcnJvciA9ICJ0cnVlIjsKICAgICAgfQogICAgICByZXR1cm4gIkVycm9yIjsKICAgIH0gCiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiVGVybWluYWxfTG9nIiArIEFwcElELCAieyIgKyBEZWZhdWx0Q29sb3VyICsgIn0iICsgYXJncy5MT0cpOwogICAgcmV0dXJuOwogIH0KCiAgd2FybiAoYXJncykKICB7CiAgICBpZiAoQXBwSUQgPT0gIiIpIAogICAgewogICAgICBpZiAoRXJyb3IgPT0gImZhbHNlIikKICAgICAgewogICAgICBhbGVydCgiUGxlYXNlIHVzZSB0aGUgJ3NldCBBcHBJRCB0bycgYmxvY2sgYmVmb3JlIHJ1bm5pbmcgeW91ciBwcm9ncmFtIik7CiAgICAgIEVycm9yID0gInRydWUiOwogICAgICB9CiAgICAgIHJldHVybiAiRXJyb3IiOwogICAgfSAKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUZXJtaW5hbF9Mb2cnICsgQXBwSUQsICJ7IiArIERlZmF1bHRXYXJuICsgIn3igLwiICsgYXJncy5XQVJOKTsKICAgIHJldHVybjsKICB9CgogIGVycm9yIChhcmdzKQogIHsKICAgIGlmIChBcHBJRCA9PSAiIikgCiAgICB7CiAgICAgIGlmIChFcnJvciA9PSAiZmFsc2UiKQogICAgICB7CiAgICAgIGFsZXJ0KCJQbGVhc2UgdXNlIHRoZSAnc2V0IEFwcElEIHRvJyBibG9jayBiZWZvcmUgcnVubmluZyB5b3VyIHByb2dyYW0iKTsKICAgICAgRXJyb3IgPSAidHJ1ZSI7CiAgICAgIH0KICAgICAgcmV0dXJuICJFcnJvciI7CiAgICB9IAogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1Rlcm1pbmFsX0xvZycgKyBBcHBJRCwgInsiICsgRGVmYXVsdEVycm9yICsgIn3imqAiICsgYXJncy5FUlJPUik7CiAgICByZXR1cm47CiAgfQoKICBXcml0aW5nQ29sb3VyIChhcmdzKQogIHsKICAgIGlmIChBcHBJRCA9PSAiIikgCiAgICB7CiAgICAgIGlmIChFcnJvciA9PSAiZmFsc2UiKQogICAgICB7CiAgICAgIGFsZXJ0KCJQbGVhc2UgdXNlIHRoZSAnc2V0IEFwcElEIHRvJyBibG9jayBiZWZvcmUgcnVubmluZyB5b3VyIHByb2dyYW0iKTsKICAgICAgRXJyb3IgPSAidHJ1ZSI7CiAgICAgIH0KICAgICAgcmV0dXJuICJFcnJvciI7CiAgICB9ICAKICAgIERlZmF1bHRDb2xvdXIgPSBhcmdzLkNPTE9VUjsKICAgIHJldHVybjsKICB9CgogIENvbG91ckxvZyAoYXJncykKICB7CiAgICBpZiAoQXBwSUQgPT0gIiIpIAogICAgewogICAgICBpZiAoRXJyb3IgPT0gImZhbHNlIikKICAgICAgewogICAgICBhbGVydCgiUGxlYXNlIHVzZSB0aGUgJ3NldCBBcHBJRCB0bycgYmxvY2sgYmVmb3JlIHJ1bm5pbmcgeW91ciBwcm9ncmFtIik7CiAgICAgIEVycm9yID0gInRydWUiOwogICAgICB9CiAgICAgIHJldHVybiAiRXJyb3IiOwogICAgfSAKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUZXJtaW5hbF9Mb2cnICsgQXBwSUQsICJ7IiArIGFyZ3MuQ09MT1VSICsgIn0iICsgYXJncy5MT0cpOwogICAgcmV0dXJuOwogIH0KCiAgY2xlYXIgKGFyZ3MpCiAgewogICAgaWYgKEFwcElEID09ICIiKSAKICAgIHsKICAgICAgaWYgKEVycm9yID09ICJmYWxzZSIpCiAgICAgIHsKICAgICAgYWxlcnQoIlBsZWFzZSB1c2UgdGhlICdzZXQgQXBwSUQgdG8nIGJsb2NrIGJlZm9yZSBydW5uaW5nIHlvdXIgcHJvZ3JhbSIpOwogICAgICBFcnJvciA9ICJ0cnVlIjsKICAgICAgfQogICAgICByZXR1cm4gIkVycm9yIjsKICAgIH0gCiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVGVybWluYWxfcHJpdmF0ZScgKyBBcHBJRCwgImNsZWFyIik7CiAgICByZXR1cm47CiAgfQoKICBXaGVuQ29tbWFuZCAoYXJncykKICB7CiAgICBpZiAoQXBwSUQgPT0gIiIpIAogICAgewogICAgICBpZiAoRXJyb3IgPT0gImZhbHNlIikKICAgICAgewogICAgICBhbGVydCgiUGxlYXNlIHVzZSB0aGUgJ3NldCBBcHBJRCB0bycgYmxvY2sgYmVmb3JlIHJ1bm5pbmcgeW91ciBwcm9ncmFtIik7CiAgICAgIEVycm9yID0gInRydWUiOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0gCiAgICByZXR1cm4gYXJncy5DT01NQU5EID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1Rlcm1pbmFsX0NvbW1hbmQnICsgQXBwSUQpOwogIH0KCiAgQ29tbWFuZCAoYXJncykKICB7CiAgICBpZiAoQXBwSUQgPT0gIiIpIAogICAgewogICAgICBpZiAoRXJyb3IgPT0gImZhbHNlIikKICAgICAgewogICAgICBhbGVydCgiUGxlYXNlIHVzZSB0aGUgJ3NldCBBcHBJRCB0bycgYmxvY2sgYmVmb3JlIHJ1bm5pbmcgeW91ciBwcm9ncmFtIik7CiAgICAgIEVycm9yID0gInRydWUiOwogICAgICB9CiAgICAgIHJldHVybiAiRXJyb3IiOwogICAgfSAKICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVGVybWluYWxfQ29tbWFuZCcgKyBBcHBJRCk7CiAgfQoKICBMb2cgKGFyZ3MpCiAgewogICAgaWYgKEFwcElEID09ICIiKSAKICAgIHsKICAgICAgaWYgKEVycm9yID09ICJmYWxzZSIpCiAgICAgIHsKICAgICAgYWxlcnQoIlBsZWFzZSB1c2UgdGhlICdzZXQgQXBwSUQgdG8nIGJsb2NrIGJlZm9yZSBydW5uaW5nIHlvdXIgcHJvZ3JhbSIpOwogICAgICBFcnJvciA9ICJ0cnVlIjsKICAgICAgfQogICAgICByZXR1cm4gIkVycm9yIjsKICAgIH0gCiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1Rlcm1pbmFsX0xvZycgKyBBcHBJRCk7CiAgfQoKICBTZXRDb21tYW5kIChhcmdzKQogIHsKICAgIGlmIChBcHBJRCA9PSAiIikgCiAgICB7CiAgICAgIGlmIChFcnJvciA9PSAiZmFsc2UiKQogICAgICB7CiAgICAgIGFsZXJ0KCJQbGVhc2UgdXNlIHRoZSAnc2V0IEFwcElEIHRvJyBibG9jayBiZWZvcmUgcnVubmluZyB5b3VyIHByb2dyYW0iKTsKICAgICAgRXJyb3IgPSAidHJ1ZSI7CiAgICAgIH0KICAgICAgcmV0dXJuICJFcnJvciI7CiAgICB9IAogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1Rlcm1pbmFsX0NvbW1hbmQnICsgQXBwSUQsIGFyZ3MuVEVYVCk7CiAgICByZXR1cm4gOwogIH0KCiAgY2xlYXJMb2cgKGFyZ3MpCiAgewogICAgaWYgKEFwcElEID09ICIiKSAKICAgIHsKICAgICAgaWYgKEVycm9yID09ICJmYWxzZSIpCiAgICAgIHsKICAgICAgYWxlcnQoIlBsZWFzZSB1c2UgdGhlICdzZXQgQXBwSUQgdG8nIGJsb2NrIGJlZm9yZSBydW5uaW5nIHlvdXIgcHJvZ3JhbSIpOwogICAgICBFcnJvciA9ICJ0cnVlIjsKICAgICAgfQogICAgICByZXR1cm4gIkVycm9yIjsKICAgIH0gCiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVGVybWluYWxfTG9nJyArIEFwcElELCAiIik7CiAgICByZXR1cm4gOwogIH0KICAKfQogCgpTY3JhdGNoLmV4dGVuc2lvbnMucmVnaXN0ZXIobmV3IFRlcm1pbmFsKCkpOwp9KShTY3JhdGNoKTs=","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Search%20Params%0A%2F%2F%20ID%3A%20zxmushroom63searchparams%0A%2F%2F%20Description%3A%20Interact%20with%20URL%20search%20parameters%3A%20the%20part%20of%20the%20URL%20after%20a%20question%20mark.%0A%2F%2F%20By%3A%20ZXMushroom63%0A%0A(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0A%20%20%20%20throw%20new%20Error(%22SearchParams%20must%20be%20run%20unsandboxed.%22)%3B%0A%20%20%7D%0A%0A%20%20class%20SearchApi%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22zxmushroom63searchparams%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20%22Search%20Params%22%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23b4b4b4%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%239c9c9c%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%23646464%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22searchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22value%20of%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22occurencesofsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22occurences%20of%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22indexedsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22index%20%5BI%5D%20of%20search%20parameters%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20I%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20search%20parameter%20%5BID%5D%20to%20%5BVAL%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2215%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deletesearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22delete%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22appendsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22append%20search%20parameter%20%5BID%5D%20with%20value%20%5BVAL%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2215%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22hassearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22has%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22searchparamslength%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22length%20of%20search%20parameters%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22searchparamatindex%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22search%20parameter%20%5BPARAM%5D%20at%20index%20%5BI%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20PARAM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22PARAM%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20I%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20PARAM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22value%22%2C%20%22name%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20searchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20return%20new%20URLSearchParams(location.search).get(ID.toString())%20%7C%7C%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20occurencesofsearchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20new%20URLSearchParams(location.search).getAll(ID.toString()).length%20%7C%7C%200%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20indexedsearchparam(%7B%20ID%2C%20I%20%7D)%20%7B%0A%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20new%20URLSearchParams(location.search).getAll(ID.toString())%5B%0A%20%20%20%20%20%20%20%20%20%20parseInt(I)%20-%201%0A%20%20%20%20%20%20%20%20%5D%20%7C%7C%20%22%22%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setsearchparam(%7B%20ID%2C%20VAL%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20s.set(ID.toString()%2C%20VAL.toString())%3B%0A%20%20%20%20%20%20history.replaceState(%22%22%2C%20%22%22%2C%20%22%3F%22%20%2B%20s.toString())%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20searchparamslength()%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20%2F%2F%20%40ts-ignore%0A%20%20%20%20%20%20return%20typeof%20s.size%20!%3D%3D%20%22object%22%20%3F%20s.size%20%3A%200%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20deletesearchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20s.delete(ID.toString())%3B%0A%20%20%20%20%20%20history.replaceState(%22%22%2C%20%22%22%2C%20%22%3F%22%20%2B%20s.toString())%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20appendsearchparam(%7B%20ID%2C%20VAL%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20s.append(ID.toString()%2C%20VAL.toString())%3B%0A%20%20%20%20%20%20history.replaceState(%22%22%2C%20%22%22%2C%20%22%3F%22%20%2B%20s.toString())%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20hassearchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20return%20s.has(ID.toString())%20%7C%7C%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20searchparamatindex(%7B%20PARAM%2C%20I%20%7D)%20%7B%0A%20%20%20%20%20%20var%20index%20%3D%20parseInt(I)%20-%201%20%7C%7C%200%3B%0A%20%20%20%20%20%20index%20%3D%20Math.max(0%2C%20index)%3B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20var%20values%20%3D%20PARAM.toString()%20%3D%3D%3D%20%22value%22%20%3F%20s.values()%20%3A%20s.keys()%3B%0A%20%20%20%20%20%20var%20i%20%3D%200%3B%0A%20%20%20%20%20%20for%20(const%20value%20of%20values)%20%7B%0A%20%20%20%20%20%20%20%20if%20(i%20%3D%3D%3D%20index)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20i%2B%2B%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20SearchApi())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Hyper%20Sense%0D%0A%2F%2F%20ID%3A%20HyperSenseSP%0D%0A%2F%2F%20Description%3A%20Cool%20New%20Sensing%20Blocks%0D%0A%0D%0A%2F%2F%20Version%201.8.2%0D%0A%0D%0A(function%20(Scratch)%20%7B%0D%0A%20%20%22use%20strict%22%3B%0D%0A%0D%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0D%0A%20%20%20%20throw%20new%20Error(%22Hyper%20Sense%20must%20run%20unsandboxed%22)%3B%0D%0A%20%20%7D%0D%0A%0D%0A%20%20const%20menuIconURI%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzguMjE0IiBoZWlnaHQ9IjEzOC4yMTQiIHZpZXdCb3g9IjAsMCwxMzguMjE0LDEzOC4yMTQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNzAuODkzLC0xMTAuODkzKSI%2BPGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTcwLjg5MywxODBjMCwtMzguMTY2NzQgMzAuOTQwMjYsLTY5LjEwNyA2OS4xMDcsLTY5LjEwN2MzOC4xNjY3NCwwIDY5LjEwNywzMC45NDAyNiA2OS4xMDcsNjkuMTA3YzAsMzguMTY2NzQgLTMwLjk0MDI2LDY5LjEwNyAtNjkuMTA3LDY5LjEwN2MtMzguMTY2NzQsMCAtNjkuMTA3LC0zMC45NDAyNiAtNjkuMTA3LC02OS4xMDd6IiBmaWxsPSIjNWNiMWQ2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0yNzMuNTY4MTMsMjE2LjIzNjU5Yy0wLjY4MjI5LDAgLTEuMzY0NTcsLTAuMjYwNzQgLTEuODg2MDYsLTAuNzgwMDZsLTY2LjU3ODkzLC02Ni41ODExYy0xLjA0MDgxLC0xLjA0MDgxIC0xLjA0MDgxLC0yLjczMTI5IDAsLTMuNzcyMWMxLjA0MDgxLC0xLjA0MDgxIDIuNzMxMjksLTEuMDQwODEgMy43NzIxLDBsNjYuNTc4OTMsNjYuNTc4OTNjMS4wNDA4MSwxLjA0MDgxIDEuMDQwODEsMi43MzEyOSAwLDMuNzcyMWMtMC41MjE0OSwwLjUxOTMyIC0xLjIwMzc4LDAuNzgyMjMgLTEuODg2MDYsMC43ODIyM3oiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTIzMy4xMDcxMSwxNTguNDM2MDZjMCw4LjEwMjY0IC02LjU2ODU5LDE0LjY3MTIzIC0xNC42NzEyMywxNC42NzEyM2MtOC4xMDI2NCwwIC0xNC42NzEyMywtNi41Njg1OSAtMTQuNjcxMjMsLTE0LjY3MTIzYzAsLTguMTAyNjQgNi41Njg1OSwtMTQuNjcxMjMgMTQuNjcxMjMsLTE0LjY3MTIzYzguMTAyNjQsMCAxNC42NzEyMyw2LjU2ODU5IDE0LjY3MTIzLDE0LjY3MTIzeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjMxLjA3MzQ3LDE4OC43MjQyNmMtNy44ODU4MywtMS44NjIwOSAtMTIuNzY5MDIsLTkuNzY0MzUgLTEwLjkwNjkyLC0xNy42NTAxN2MxLjg2MjA5LC03Ljg4NTgzIDkuNzY0MzUsLTEyLjc2OTAyIDE3LjY1MDE3LC0xMC45MDY5MmM3Ljg4NTgzLDEuODYyMDkgMTIuNzY5MDIsOS43NjQzNSAxMC45MDY5MiwxNy42NTAxN2MtMS44NjIwOSw3Ljg4NTgzIC05Ljc2NDM1LDEyLjc2OTAyIC0xNy42NTAxNywxMC45MDY5MnoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTI2NS4xMjAwMSwxOTAuNDQ2NzljMCw4LjEwMjY0IC02LjU3MDc2LDE0LjY3MzM5IC0xNC42NzMzOSwxNC42NzMzOWMtOC4xMDI2NCwwIC0xNC42NzEyMywtNi41NzA3NiAtMTQuNjcxMjMsLTE0LjY3MzM5YzAsLTguMTAyNjQgNi41Njg1OSwtMTQuNjcxMjMgMTQuNjcxMjMsLTE0LjY3MTIzYzguMTAyNjQsMCAxNC42NzMzOSw2LjU3MDc2IDE0LjY3MzM5LDE0LjY3MTIzeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjczLjU2ODEzLDIxNi4yMzY1OWMtMC42ODIyOSwwIC0xLjM2NDU3LC0wLjI2MDc0IC0xLjg4NjA2LC0wLjc4MDA2bC0xNi4zMzk5OCwtMTYuMzM5OThjLTEuMDQyOTgsLTEuMDQwODEgLTEuMDQyOTgsLTIuNzMxMjkgMCwtMy43NzIxYzEuMDQyOTgsLTEuMDQwODEgMi43MjkxMiwtMS4wNDA4MSAzLjc3MjEsMGwxNi4zMzk5OCwxNi4zMzk5OGMxLjA0MDgxLDEuMDQwODEgMS4wNDA4MSwyLjczMTI5IDAsMy43NzIxYy0wLjUyMTQ5LDAuNTE3MTQgLTEuMjAzNzgsMC43ODAwNiAtMS44ODYwNiwwLjc4MDA2eiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48ZyBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNMTgyLjY2ODI2LDE4MGwxMi44MDY5MSwtMTIuODA2OTF2MjUuNjEzODF6Ii8%2BPHBhdGggZD0iTTI1Mi44MDY5LDEzNS40NzUxNmgtMjUuNjEzODFsMTIuODA2OSwtMTIuODA2OXoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9Ii8%2BPHBhdGggZD0iTTI5Ny4zMzE3NSwxODBsLTEyLjgwNjksMTIuODA2OXYtMjUuNjEzODF6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIvPjxwYXRoIGQ9Ik0yMjcuMTkzMSwyMjQuNTI0ODRoMjUuNjEzODFsLTEyLjgwNjksMTIuODA2OXoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9Ii8%2BPC9nPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20const%20loudnessArrayLength%20%3D%2020%3B%0D%0A%20%20let%20currentlyPressedKey%20%3D%20null%3B%0D%0A%20%20let%20keyPressTime%20%3D%200%3B%0D%0A%20%20const%20keyHitPass%20%3D%20%7B%7D%3B%0D%0A%0D%0A%20%20const%20renderer%20%3D%20Scratch.renderer%3B%0D%0A%20%20const%20vm%20%3D%20Scratch.vm%3B%0D%0A%20%20const%20runtime%20%3D%20vm.runtime%3B%0D%0A%20%20var%20timer%20%3D%200%3B%0D%0A%20%20%0D%0A%20%20class%20HyperSenseSP%20%7B%0D%0A%20%20%20%20constructor()%20%7B%0D%0A%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20true%3B%0D%0A%20%20%20%20%20%20runtime.on(%22BEFORE_EXECUTE%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20timer%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%20%20runtime.startHats(%22HyperSenseSP_whenKeyPressed%22)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22PROJECT_START%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20timer%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22PROJECT_STOP_ALL%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20timer%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22AFTER_EXECUTE%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20true%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22ANSWER%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.wait%20%3D%20%5Bfalse%2C%20%22sprite%22%5D%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20const%20originalGreenFlag%20%3D%20vm.greenFlag%3B%0D%0A%20%20%20%20%20%20vm.greenFlag%20%3D%20function%20()%20%7B%0D%0A%20%20%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%20%20originalGreenFlag.call(this)%3B%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20%20%20this.scrollDistance%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.oldScroll%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.loudnessArray%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20document.addEventListener(%22wheel%22%2C%20this.handleScroll)%3B%0D%0A%20%20%20%20%20%20this.isMicrophoneEnabled%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.pressedKey%20%3D%20null%3B%0D%0A%20%20%20%20%20%20this.wait%20%3D%20%5Bfalse%2C%20%22sprite%22%5D%3B%0D%0A%0D%0A%20%20%20%20%20%20document.addEventListener(%22keydown%22%2C%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20keyPressTime%20%3D%20keyPressTime%20%2B%200.1%3B%0D%0A%20%20%20%20%20%20%20%20this.pressedKey%20%3D%20event.key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%20%20currentlyPressedKey%20%3D%20event.key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20document.addEventListener(%22keyup%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20keyHitPass%5BcurrentlyPressedKey%5D%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20this.pressedKey%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20currentlyPressedKey%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20keyPressTime%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20document.addEventListener(%22mousemove%22%2C%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20window.mouseX%20%3D%20event.clientX%3B%0D%0A%20%20%20%20%20%20%20%20window.mouseY%20%3D%20event.clientY%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getInfo()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20id%3A%20%22HyperSenseSP%22%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20%22Hyper%20Sense%22%2C%0D%0A%20%20%20%20%20%20%20%20color1%3A%20%22%235cb1d6%22%2C%0D%0A%20%20%20%20%20%20%20%20color2%3A%20%22%232e8eb8%22%2C%0D%0A%20%20%20%20%20%20%20%20menuIconURI%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Scrolling%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22monitorScrollWheel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scroll%20wheel%20distance%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22monitorScrollWheelLimited%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scroll%20wheel%20distance%20limited%20from%20%5BMIN%5D%20to%20%5BMAX%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MIN%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setScrollDistance%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20scroll%20wheel%20distance%20to%20%5BDISTANCE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DISTANCE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeScrollDistance%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20scroll%20wheel%20distance%20by%20%5BDISTANCE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DISTANCE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scrollWheelHat%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20scrolled%20%5BEVENT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EVENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22SCROLL_EVENTS%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22up%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scrollWheelBool%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20scrolling%20%5BEVENT%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EVENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22SCROLL_EVENTS%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22up%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Mouse%20Detection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22mouseClick%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20mouse%20%5BBUTTON%5D%20down%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22mouseButtons%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22realX%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22real%20mouse%20x%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22realY%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22real%20mouse%20y%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Key%20Detection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenKeyHit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20%5BKEY%5D%20key%20hit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Space%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isKeyHit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20key%20%5BKEY%5D%20hit%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Space%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%2F%2Fyes%2C%20these%20blocks%20do%20technically%20exist%2C%20but%20they%20dont%20have%20special%20keys%20like%20Tab%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenKeyPressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20%5BKEY%5D%20pressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20isEdgeActivated%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Tab%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isKeyPressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22key%20%5BKEY%5D%20pressed%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Tab%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22currentKey%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22current%20key%20pressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22timeKeyPressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22seconds%20key%20%5BKEY%5D%20pressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Touching%20Expanded%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteTouchingSprite%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20%5BSPRITE1%5D%20touching%20%5BSPRITE2%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS3%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteCurrentTouching%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22sprites%20touching%20%5BSPRITE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS2%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getNeighbors%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22get%20neighbors%20of%20%5BSPRITE%5D%20with%20diameter%20%5BDIAMETER%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS4%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DIAMETER%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22colorTouchingSprite%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22color%20touching%20%5BSPRITE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS2%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22colorAtPosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22color%20at%20x%20%5Bx%5D%20y%20%5By%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Strings%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22boolean%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20%5BSTRING%5D%20real%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getAllString%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22get%20%5BTEXT%5D%20in%20string%20%5BSTRING%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22rotating%20a%206%20makes%20a%209!%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22string_types%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22numbers%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Miscellaneous%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22advancedAsk%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5BQUESTION%5D%20as%20%5BTHING%5D%20and%20%5BWAIT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20THING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22Asking%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22stage%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20QUESTION%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22what%20is%20your%20name%3F%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20WAIT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22shouldWait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22wait%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setAtt%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20ask%20monitor%20x%3A%20%5Bx%5D%20y%3A%20%5By%5D%20width%3A%20%5Bwidth%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20width%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20480%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getSpriteName%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22my%20sprite%20name%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22allLayers%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22max%20sprite%20layers%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteDragMode%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20drag%20mode%20of%20%5BSPRITE%5D%20to%20%5BDRAG%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS4%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DRAG%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22DRAG_MODES%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22draggable%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22toggleMicrophone%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22toggle%20microphone%20to%20%5BSTATE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STATE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22microphoneStates%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22enabled%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22averageMicrophoneLoudness%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22average%20microphone%20loudness%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20microphoneStates%3A%20%5B%22enabled%22%2C%20%22disabled%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(true%2C%20false)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS2%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(true%2C%20true)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS3%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(false%2C%20true)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS4%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(false%2C%20false)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20Asking%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22stage%22%2C%20%22sprite%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20shouldWait%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22wait%22%2C%20%22continue%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20keys%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Any%22%2C%20%22A%22%2C%20%22B%22%2C%20%22C%22%2C%20%22D%22%2C%20%22E%22%2C%20%22F%22%2C%20%22G%22%2C%20%22H%22%2C%20%22I%22%2C%20%22J%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22K%22%2C%20%22L%22%2C%20%22M%22%2C%20%22N%22%2C%20%22O%22%2C%20%22P%22%2C%20%22Q%22%2C%20%22R%22%2C%20%22S%22%2C%20%22T%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22U%22%2C%20%22V%22%2C%20%22W%22%2C%20%22X%22%2C%20%22Y%22%2C%20%22Z%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%220%22%2C%20%221%22%2C%20%222%22%2C%20%223%22%2C%20%224%22%2C%20%225%22%2C%20%226%22%2C%20%227%22%2C%20%228%22%2C%20%229%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Arrow%20Up%22%2C%20%22Arrow%20Down%22%2C%20%22Arrow%20Left%22%2C%20%22Arrow%20Right%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Space%22%2C%20%22Enter%22%2C%20%22Shift%22%2C%20%22Control%22%2C%20%22Alt%22%2C%20%22Escape%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Backspace%22%2C%20%22Tab%22%2C%20%22Caps%20Lock%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Insert%22%2C%20%22Page%20Up%22%2C%20%22Page%20Down%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20SCROLL_EVENTS%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22up%22%2C%20%22down%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20DRAG_MODES%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22draggable%22%2C%20%22not%20draggable%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20string_types%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22numbers%22%2C%20%22letters%22%2C%20%22special%20characters%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20mouseButtons%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22left%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scroll%20wheel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%201%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22right%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%202%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22back%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%203%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22foward%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%204%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20allLayers()%20%7B%0D%0A%20%20%20%20%20%20return%20renderer._drawList.length%20-%201%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20monitorScrollWheel()%20%7B%0D%0A%20%20%20%20%20%20return%20this.scrollDistance%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20monitorScrollWheelLimited(args)%20%7B%0D%0A%20%20%20%20%20%20const%20min%20%3D%20Scratch.Cast.toNumber(args.MIN)%3B%0D%0A%20%20%20%20%20%20const%20max%20%3D%20Scratch.Cast.toNumber(args.MAX)%3B%0D%0A%20%20%20%20%20%20return%20Math.max(Math.min(this.scrollDistance%2C%20max)%2C%20min)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setScrollDistance(args)%20%7B%0D%0A%20%20%20%20%20%20this.scrollDistance%20%3D%20Scratch.Cast.toNumber(args.DISTANCE)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changeScrollDistance(args)%20%7B%0D%0A%20%20%20%20%20%20this.scrollDistance%20%3D%20this.scrollDistance%20%2B%20Scratch.Cast.toNumber(args.DISTANCE)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20handleScroll%20%3D%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20this.scrollDistance%20%2B%3D%20event.deltaY%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20getSpriteName(_%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20return%20util.target.getName()%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20initMicrophone()%20%7B%0D%0A%20%20%20%20%20%20if%20(this.isMicrophoneEnabled)%20%7B%0D%0A%20%20%20%20%20%20%20%20navigator.mediaDevices.getUserMedia(%7B%20audio%3A%20true%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20.then(this.handleMicrophoneSuccess)%0D%0A%20%20%20%20%20%20%20%20%20%20.catch(this.handleMicrophoneError)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20handleMicrophoneSuccess%20%3D%20(stream)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20this.audioContext%20%3D%20new%20(window.AudioContext%20%7C%7C%20window.webkitAudioContext)()%3B%0D%0A%20%20%20%20%20%20const%20microphone%20%3D%20this.audioContext.createMediaStreamSource(stream)%3B%0D%0A%20%20%20%20%20%20const%20analyser%20%3D%20this.audioContext.createAnalyser()%3B%0D%0A%20%20%20%20%20%20analyser.fftSize%20%3D%20256%3B%0D%0A%0D%0A%20%20%20%20%20%20microphone.connect(analyser)%3B%0D%0A%20%20%20%20%20%20this.updateMicrophoneLoudness(analyser)%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20handleMicrophoneError%20%3D%20(error)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20console.error(%22Error%20accessing%20microphone%3A%22%2C%20error)%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20updateMicrophoneLoudness(analyser)%20%7B%0D%0A%20%20%20%20%20%20const%20dataArray%20%3D%20new%20Uint8Array(analyser.frequencyBinCount)%3B%0D%0A%0D%0A%20%20%20%20%20%20setInterval(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20analyser.getByteFrequencyData(dataArray)%3B%0D%0A%20%20%20%20%20%20%20%20const%20loudness%20%3D%20this.calculateLoudness(dataArray)%3B%0D%0A%20%20%20%20%20%20%20%20this.loudnessArray.push(loudness)%3B%0D%0A%20%20%20%20%20%20%20%20if%20(this.loudnessArray.length%20%3E%3D%20loudnessArrayLength)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20this.loudnessArray.shift()%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%2C%20100)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20calculateLoudness(dataArray)%20%7B%0D%0A%20%20%20%20%20%20let%20sum%20%3D%200%3B%0D%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20dataArray.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20sum%20%2B%3D%20dataArray%5Bi%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20sum%20%2F%20dataArray.length%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20averageMicrophoneLoudness()%20%7B%0D%0A%20%20%20%20%20%20let%20loudness%20%3D%20this.calculateAverageLoudness(this.loudnessArray)%3B%0D%0A%20%20%20%20%20%20if%20(isNaN(loudness))%20%7B%0D%0A%20%20%20%20%20%20%20%20loudness%20%3D%20%22Microphone%20is%20Disabled!%22%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20loudness%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20calculateAverageLoudness(loudnessArray)%20%7B%0D%0A%20%20%20%20%20%20return%20loudnessArray.reduce((acc%2C%20loudness)%20%3D%3E%20acc%20%2B%20loudness%2C%200)%20%2F%20loudnessArray.length%20%2B1%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20toggleMicrophone(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.STATE%20%3D%3D%3D%20%22enabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isMicrophoneEnabled%20%3D%20true%3B%0D%0A%20%20%20%20%20%20%20%20this.initMicrophone()%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isMicrophoneEnabled%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%20%20this.disableMicrophone()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20disableMicrophone()%20%7B%0D%0A%20%20%20%20%20%20if%20(this.audioContext)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.audioContext.close().then(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20this.audioContext%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.loudnessArray%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20%20%20%7D).catch(error%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20console.error(%22Error%20while%20closing%20audio%20context%3A%22%2C%20error)%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20handleKeyPress(key%2C%20loop)%20%7B%0D%0A%20%20%20%20%20%20if%20(key%20%3D%3D%3D%20%22Any%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(currentlyPressedKey%20%3D%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20false%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20currentlyPressedKey%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(isNaN(parseFloat(key)))%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20pressedKey%20%3D%20this.pressedKey%20%7C%7C%20null%3B%0D%0A%0D%0A%20%20%20%20%20%20if%20(%0D%0A%20%20%20%20%20%20%20%20((key%20%3D%3D%3D%20%22SPACE%22%20%26%26%20pressedKey%20%3D%3D%3D%20%22%20%22)%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20(key%20%3D%3D%3D%20pressedKey)%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20(key.startsWith(%22DIGIT%22)%20%26%26%20key.slice(5)%20%3D%3D%3D%20pressedKey))%0D%0A%20%20%20%20%20%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20(key%20%3D%3D%3D%20%22SPACE%22)%20%3F%20%22%20%22%20%3A%20key%3B%0D%0A%20%20%20%20%20%20%20%20if%20(isNaN(keyHitPass%5Bkey%5D))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20keyHitPass%5Bkey%5D%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20keyHitPass%5Bkey%5D%20%3D%20keyHitPass%5Bkey%5D%20%2B%201%3B%0D%0A%20%20%20%20%20%20%20%20return%20(loop)%20%3F%20true%20%3A%20(keyHitPass%5Bkey%5D%20%3C%202)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20false%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isKeyHit(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20false%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20whenKeyHit(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20false%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20whenKeyPressed(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20true%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isKeyPressed(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20true%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20currentKey()%20%7B%0D%0A%20%20%20%20%20%20if%20(currentlyPressedKey%20%3D%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20%22No%20Keys%20Pressed%22%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(currentlyPressedKey.includes(%22ARROW%22)%20%7C%7C%20currentlyPressedKey%20%3D%3D%3D%20%22CAPSLOCK%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20(currentlyPressedKey%20%3D%3D%3D%20%22CAPSLOCK%22)%20%3F%20%22Caps%20Lock%22%20%3A%20%22Arrow%20%22%20%2B%20currentlyPressedKey.charAt(5).toUpperCase()%20%2B%20currentlyPressedKey.slice(6).toLowerCase()%3B%20%2F%2Fmakes%20it%20%22Arrow%20Left%22%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20currentlyPressedKey.charAt(0).toUpperCase()%20%2B%20currentlyPressedKey.slice(1).toLowerCase()%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20timeKeyPressed(args)%20%7B%0D%0A%20%20%20%20%20%20let%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20if%20(isNaN(parseFloat(key)))%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(key%20%3D%3D%3D%20%22SPACE%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(key%20%3D%3D%3D%20this.pressedKey%20%7C%7C%20args.KEY%20%3D%3D%3D%20%22Any%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20keyPressTime%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20return%200%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteTouchingSprite(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20sprite1%20%3D%20args.SPRITE1%3B%0D%0A%20%20%20%20%20%20const%20sprite2%20%3D%20args.SPRITE2%3B%0D%0A%20%20%20%20%20%20const%20target%20%3D%20sprite2%20%3D%3D%3D%20%22_myself_%22%20%3F%20util.target%20%3A%20runtime.getSpriteTargetByName(sprite2)%3B%0D%0A%20%20%20%20%20%20if%20(!target)%20return%20false%3B%0D%0A%20%20%20%20%20%20return%20target.isTouchingObject(sprite1)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteCurrentTouching(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20list%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20this._getTargets()%3B%0D%0A%20%20%20%20%20%20if%20(args.SPRITE%20%3D%3D%3D%20%22_myself_%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20this.spriteCurrentTouchingMyself(util)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20thisSprite%20%3D%20args.SPRITE%20%3D%3D%3D%20%22_mouse_%22%20%3F%20%22_mouse_%22%20%3A%20args.SPRITE%3B%0D%0A%20%20%20%20%20%20if%20(!thisSprite)%20return%20%22%5B%5D%22%3B%0D%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20spriteNames.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20runtime.getSpriteTargetByName(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20let%20caseTouch%20%3D%20target.isTouchingObject(thisSprite)%3B%0D%0A%20%20%20%20%20%20%20%20if%20(caseTouch)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(spriteNames%5Bi%5D.value%20!%3D%3D%20thisSprite)%20list.push(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20JSON.stringify(list)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteCurrentTouchingMyself(util)%20%7B%0D%0A%20%20%20%20%20%20const%20list%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20this._getTargets()%3B%0D%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20spriteNames.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20sprite1%20%3D%20spriteNames%5Bi%5D.value%3B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20util.target%3B%0D%0A%20%20%20%20%20%20%20%20let%20caseTouch%3B%0D%0A%20%20%20%20%20%20%20%20caseTouch%20%3D%20target.isTouchingObject(sprite1)%3B%0D%0A%20%20%20%20%20%20%20%20if%20(caseTouch)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20list.push(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20JSON.stringify(list)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getNeighbors(args)%20%7B%0D%0A%20%20%20%20%20%20const%20list%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20this._getTargets()%3B%0D%0A%20%20%20%20%20%20const%20target%20%3D%20runtime.getSpriteTargetByName(args.SPRITE)%3B%0D%0A%20%20%20%20%20%20if%20(!target)%20return%20%22%5B%5D%22%3B%0D%0A%20%20%20%20%20%20const%20old%20%3D%20%5Btarget.size%2C%20target.direction%5D%3B%0D%0A%20%20%20%20%20%20target.setDirection(-179)%2C%20target.setSize(Math.abs(Scratch.Cast.toNumber(args.DIAMETER)))%3B%0D%0A%20%20%20%20%20%20for%20(let%20l%20%3D%200%3B%20l%20%3C%2090%3B%20l%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20spriteNames.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20sprite1%20%3D%20spriteNames%5Bi%5D.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20let%20caseTouch%20%3D%20target.isTouchingObject(sprite1)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(caseTouch%20%26%26%20!list.includes(sprite1))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(target.sprite.name%20!%3D%3D%20sprite1)%20list.push(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20target.setDirection(target.direction%20%2B%202)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20formattedList%20%3D%20JSON.stringify(list)%3B%0D%0A%20%20%20%20%20%20target.setSize(old%5B0%5D)%2C%20target.setDirection(old%5B1%5D)%3B%0D%0A%20%20%20%20%20%20return%20formattedList%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20colorAtPosition(args)%20%7B%0D%0A%20%20%20%20%20%20return%20this.colorTouching(Scratch.Cast.toNumber(args.x)%2C%20Scratch.Cast.toNumber(args.y))%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20%0D%0A%20%20%20%20colorTouchingSprite(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20let%20hex%3B%0D%0A%20%20%20%20%20%20if%20(args.SPRITE%20%3D%3D%3D%20%22_mouse_%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20hex%20%3D%20this.colorTouching(util.ioQuery(%22mouse%22%2C%20%22getScratchX%22)%2C%20util.ioQuery(%22mouse%22%2C%20%22getScratchY%22))%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20args.SPRITE%20%3D%3D%3D%20%22_myself_%22%20%3F%20util.target%20%3A%20runtime.getSpriteTargetByName(args.SPRITE)%3B%0D%0A%20%20%20%20%20%20%20%20const%20wasVisible%20%3D%20target.visible%3B%0D%0A%20%20%20%20%20%20%20%20target.setVisible(false)%3B%0D%0A%20%20%20%20%20%20%20%20hex%20%3D%20this.colorTouching(target.x%2C%20target.y)%3B%0D%0A%20%20%20%20%20%20%20%20target.setVisible(wasVisible)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20hex%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20colorTouching(x%2C%20y)%20%7B%0D%0A%20%20%20%20%20%20const%20clientX%20%3D%20Math.round((((runtime.stageWidth%20%2F%202)%20%2B%20x)%20%2F%20runtime.stageWidth)%20*%20renderer._gl.canvas.clientWidth)%3B%0D%0A%20%20%20%20%20%20const%20clientY%20%3D%20Math.round((((runtime.stageHeight%20%2F%202)%20-%20y)%20%2F%20runtime.stageHeight)%20*%20renderer._gl.canvas.clientHeight)%3B%0D%0A%20%20%20%20%20%20const%20colorInfo%20%3D%20renderer.extractColor(clientX%2C%20clientY%2C%2020)%3B%0D%0A%20%20%20%20%20%20const%20r%20%3D%20colorInfo.color.r.toString(16).padStart(2%2C%20%220%22)%3B%0D%0A%20%20%20%20%20%20const%20g%20%3D%20colorInfo.color.g.toString(16).padStart(2%2C%20%220%22)%3B%0D%0A%20%20%20%20%20%20const%20b%20%3D%20colorInfo.color.b.toString(16).padStart(2%2C%20%220%22)%3B%0D%0A%20%20%20%20%20%20return%20%60%23%24%7Br%7D%24%7Bg%7D%24%7Bb%7D%60%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20scrollWheelHat(args)%20%7B%0D%0A%20%20%20%20%20%20let%20status%3B%0D%0A%20%20%20%20%20%20if%20(args.EVENT%20%3D%3D%3D%20%22down%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3E%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3C%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(status)%20this.oldScroll%20%3D%20this.scrollDistance%3B%0D%0A%20%20%20%20%20%20return%20(status)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20scrollWheelBool(args)%20%7B%0D%0A%20%20%20%20%20%20let%20status%3B%0D%0A%20%20%20%20%20%20if%20(args.EVENT%20%3D%3D%3D%20%22down%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3E%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3C%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(status)%20this.oldScroll%20%3D%20this.scrollDistance%3B%0D%0A%20%20%20%20%20%20return%20(!!status)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteDragMode(args)%20%7B%0D%0A%20%20%20%20%20%20const%20target%20%3D%20runtime.getSpriteTargetByName(args.SPRITE)%3B%0D%0A%20%20%20%20%20%20target.setDraggable(args.DRAG%20%3D%3D%3D%20%22draggable%22)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20boolean(args)%20%7B%0D%0A%20%20%20%20%20%20const%20string%20%3D%20Scratch.Cast.toString(args.STRING)%3B%0D%0A%20%20%20%20%20%20return%20(!!string%20%26%26%20args.STRING%20!%3D%3D%20undefined)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setAtt(args)%20%7B%0D%0A%20%20%20%20%20%20let%20box%20%3D%20document.querySelectorAll(%60%5Bclass%5E%3D%22question%22%5D%60)%5B0%5D%3B%0D%0A%20%20%20%20%20%20if%20(!box)%20return%3B%0D%0A%20%20%20%20%20%20const%20canvas%20%3D%20getComputedStyle(document.querySelector(%22canvas%22))%3B%0D%0A%20%20%20%20%20%20if%20(args.width)%20%7B%0D%0A%20%20%20%20%20%20%20%20box.style.width%20%3D%20%60%24%7Bargs.width%20*%20(parseInt(canvas.width)%20%2F%20480)%7Dpx%60%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(args.x%20!%3D%3D%20%22%22%20%26%26%20args.y%20!%3D%3D%20%22%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20x%20%3D%20args.x%20%2B%20(parseInt(canvas.width)%20%2F%202)%20-%20(args.width%20*%20(parseInt(canvas.width)%20%2F%20480)%20%2F%202)%3B%0D%0A%20%20%20%20%20%20%20%20const%20y%20%3D%20args.y%20%2B%20(parseInt(canvas.height)%20%2F%202)%20-%20(this.wait%5B1%5D%20%3D%3D%3D%20%22stage%22%20%3F%2053%20%3A%2039)%3B%0D%0A%20%20%20%20%20%20%20%20box.style.transform%20%3D%20%60translate(%24%7Bx%7Dpx%2C%20%24%7By%20*%20-1%7Dpx)%60%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20advancedAsk(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20wasVisible%20%3D%20util.target.visible%3B%0D%0A%20%20%20%20%20%20if%20(!util.target.isStage%20%26%26%20args.THING%20%3D%3D%3D%20%22stage%22)%20%7Butil.target.setVisible(false)%7D%0D%0A%20%20%20%20%20%20this.wait%20%3D%20%5Btrue%2C%20args.THING%5D%3B%0D%0A%20%20%20%20%20%20runtime.ext_scratch3_sensing.askAndWait(args%2C%20util)%3B%0D%0A%20%20%20%20%20%20if%20(!util.target.isStage%20%26%26%20wasVisible)%20%7Butil.target.setVisible(true)%7D%0D%0A%20%20%20%20%20%20if%20(args.WAIT%20%3D%3D%3D%20%22wait%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20new%20Promise(resolve%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20checkWait%20%3D%20()%20%3D%3E%20this.wait%5B0%5D%20%3F%20setTimeout(checkWait%2C%20100)%20%3A%20resolve()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20checkWait()%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20mouseClick(args%2C%20util)%20%7Breturn%20util.ioQuery(%22mouse%22%2C%20%22getButtonIsDown%22%2C%20%5BScratch.Cast.toNumber(args.BUTTON)%5D)%7D%0D%0A%20%20%20%20realX()%20%7Breturn%20window.mouseX%7D%0D%0A%20%20%20%20realY()%20%7Breturn%20window.mouseY%7D%0D%0A%0D%0A%20%20%20%20getAllString(args)%20%7B%0D%0A%20%20%20%20%20%20let%20regex%3B%0D%0A%20%20%20%20%20%20if%20(args.TEXT%20%3D%3D%3D%20%22letters%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20regex%20%3D%20%2F%5B%5EA-Za-z%5D%2Fg%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.TEXT%20%3D%3D%3D%20%22numbers%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20regex%20%3D%20%2F%5B%5E0-9%5D%2Fg%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20regex%20%3D%20%2F%5BA-Za-z0-9%5D%2Fg%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20args.STRING.replace(regex%2C%20%22%22)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20_getTargets(mouse%2C%20myself)%20%7B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20if%20(mouse)%20%7B%0D%0A%20%20%20%20%20%20%20%20spriteNames.push(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22mouse-pointer%22%2C%20value%3A%20%22_mouse_%22%2C%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(myself)%20%7B%0D%0A%20%20%20%20%20%20%20%20spriteNames.push(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22myself%22%2C%20value%3A%20%22_myself_%22%2C%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20targets%20%3D%20Scratch.vm.runtime.targets%3B%0D%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20targets.length%3B%20index%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20targets%5Bindex%5D%3B%0D%0A%20%20%20%20%20%20%20%20if%20(target.isOriginal)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20targetName%20%3D%20target.getName()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20spriteNames.push(%7B%20text%3A%20targetName%2C%20value%3A%20targetName%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(spriteNames.length%20%3E%200)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20spriteNames%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20%5B%22%22%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20HyperSenseSP())%3B%0D%0A%7D)(Scratch)%3B%0D%0A%20%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Better%20Input%0D%0A%2F%2F%20ID%3A%20BetterInputSP%0D%0A%2F%2F%20Description%3A%20Expansion%20of%20the%20%22ask%20and%20wait%22%20Blocks%0D%0A%2F%2F%20By%3A%20SharkPool%20%3Chttps%3A%2F%2Fgithub.com%2FSharkPool-SP%3E%0D%0A%0D%0A%2F%2F%20Version%20V.3.0.0%20(Infinite%20Buttons%20%2B%20More%20Live%20Updated%20Elements%20%2B%20Image%20setting%20for%20Buttons)%0D%0A%0D%0A(function%20(Scratch)%20%7B%0D%0A%20%20%22use%20strict%22%3B%0D%0A%0D%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0D%0A%20%20%20%20throw%20new%20Error(%22Better%20Input%20must%20run%20unsandboxed%22)%3B%0D%0A%20%20%7D%0D%0A%0D%0A%20%20const%20menuIconURI%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzQuMTc2MjgiIGhlaWdodD0iMTM0LjE3NjI4IiB2aWV3Qm94PSIwLDAsMTM0LjE3NjI4LDEzNC4xNzYyOCI%2BPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3Mi45MTE4NiwtMTEyLjkxMTg2KSI%2BPGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTcyLjkxMTg2LDE4MGMwLC0zNy4wNTE3NiAzMC4wMzYzOCwtNjcuMDg4MTQgNjcuMDg4MTQsLTY3LjA4ODE0YzM3LjA1MTc2LDAgNjcuMDg4MTQsMzAuMDM2MzggNjcuMDg4MTQsNjcuMDg4MTRjMCwzNy4wNTE3NiAtMzAuMDM2MzgsNjcuMDg4MTQgLTY3LjA4ODE0LDY3LjA4ODE0Yy0zNy4wNTE3NiwwIC02Ny4wODgxNCwtMzAuMDM2MzggLTY3LjA4ODE0LC02Ny4wODgxNHoiIGZpbGw9IiM5NDAwZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwIi8%2BPHBhdGggZD0iTTI0OS42Nzg4MiwxNDEuMDQ1NzZsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjI0LjY2NTI2LDE1OC40NTE3aDI4LjA0MDY3djIxLjU0ODMxdjIxLjUwODQ4bC0yOC40Mzg5OCwtMC4wMzk4M2MtMjguMiwtMC4wNzk2NiAtMjguNDM4OTksLTAuMDc5NjcgLTI5LjMxNTI2LC0wLjU5NzQ2Yy0wLjQ3Nzk3LC0wLjI3ODgyIC0xLjExNTI1LC0wLjkxNjEgLTEuMzk0MDcsLTEuNDczNzNsLTAuNTU3NjMsLTAuOTU1OTN2LTE4LjQ0MTUzYzAsLTE3LjcyNDU4IDAuMDM5ODMsLTE4LjQ0MTUzIDAuNDc3OTcsLTE5LjM1NzYzYzAuNTk3NDYsLTEuMDc1NDIgMC45NTU5MywtMS40MzM5IDIuMTUwODUsLTEuODcyMDNjMC43NTY3OCwtMC4yMzg5OSA2LjE3MzczLC0wLjMxODY1IDI5LjAzNjQ0LC0wLjMxODY1ek0yMTQuNjI3OTcsMTY4LjQ0OTE2Yy0wLjYzNzI5LDAuMzk4MyAtMS4zMTQ0MSwxLjc5MjM3IC01LjAxODY0LDkuOTk3NDZjLTQuNjIwMzQsMTAuMjM2NDQgLTQuODU5MzIsMTAuOTEzNTYgLTMuODIzNzIsMTIuMDI4ODJjMS4xNTUwOSwxLjIzNDc1IDIuOTQ3NDUsMS4yNzQ1NyAzLjk4MzA1LDAuMDM5ODNjMC4zMTg2NSwtMC4zOTgzIDAuNzk2NiwtMS4yNzQ1NyAxLjAzNTU5LC0xLjk1MTdsMC40MzgxNCwtMS4yMzQ3NWg0Ljc3OTY2aDQuNzc5NjZsMC41NTc2MywxLjQzMzljMC43MTY5NSwxLjk1MTcgMS40NzM3MywyLjYyODgyIDIuOTA3NjMsMi42Mjg4MmMwLjkxNjEsMCAxLjE5NDkxLC0wLjExOTQ5IDEuNzkyMzcsLTAuNzk2NjFjMC41MTc4LC0wLjU1NzYzIDAuNzE2OTUsLTEuMDM1NTkgMC43MTY5NSwtMS42NzI4OGMwLC0wLjYzNzI5IC0xLjE1NTA4LC0zLjU4NDc0IC0zLjc4MzksLTkuNDM5ODNjLTQuOTc4ODEsLTExLjE5MjM3IC00LjczOTg0LC0xMC43MTQ0MSAtNS41MzY0NSwtMTEuMTEyNzFjLTAuOTE2MSwtMC41MTc4IC0xLjkxMTg3LC0wLjQ3Nzk2IC0yLjgyNzk3LDAuMDc5NjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjE2LjEwMTcsMTc2LjA5NjYxYzAuMTU5MzIsMC4xNTkzMiAyLjU4ODk4LDYuMTMzOSAyLjU4ODk4LDYuMzMzMDVjMCwwLjE1OTMyIC0xLjE5NDkxLDAuMjM4OTggLTIuNzA4NDcsMC4yMzg5OGMtMi4wNzExOCwwIC0yLjY2ODY0LC0wLjA3OTY2IC0yLjU4ODk4LC0wLjMxODY1YzAuMDc5NjYsLTAuMTU5MzIgMC42NzcxMiwtMS42MzMwNSAxLjM5NDA3LC0zLjMwNTkzYzAuNzE2OTUsLTEuNjMzMDUgMS4zMTQ0LC0yLjk4NzI5IDEuMzE0NCwtMi45NDc0NnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yNjcuNjQyMzgsMTgwdi0yMS41ODgxM2w4LjI4NDc0LDAuMDc5NjZjNy44MDY3OCwwLjA3OTY2IDguMzI0NTgsMC4xMTk1IDkuMTIxMTksMC41OTc0NmMwLjQ3Nzk2LDAuMjc4ODIgMS4xMTUyNSwwLjkxNjEgMS4zOTQwNywxLjQ3MzczbDAuNTU3NjIsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC41NTc2MiwwLjk1NTkzYy0wLjI3ODgyLDAuNTU3NjMgLTAuOTE2MTEsMS4xOTQ5MSAtMS4zOTQwNywxLjQ3MzczYy0wLjgzNjQ0LDAuNTE3OCAtMS4zMTQ0MSwwLjUxNzggLTkuMTIxMTksMC41OTc0NmwtOC4yODQ3NCwwLjA3OTY2di0yMS41NDgzeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTI0OS42Nzg4MiwxNDEuMDQ1NzZsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yNTEuMzcyNiwxNTguNDUxN3Y0My4wNTY3OGMwLDAgLTU1LjU0NDYzLC0wLjExOTUgLTU2LjQyMDksLTAuNjM3MjljLTAuNDc3OTcsLTAuMjc4ODIgLTEuMTE1MjUsLTAuOTE2MSAtMS4zOTQwNywtMS40NzM3M2wtMC41NTc2MywtMC45NTU5M3YtMTguNDQxNTNjMCwtMTcuNzI0NTggMC4wMzk4MywtMTguNDQxNTMgMC40Nzc5NywtMTkuMzU3NjNjMC41OTc0NiwtMS4wNzU0MiAwLjk1NTkzLC0xLjQzMzkgMi4xNTA4NSwtMS44NzIwM2MwLjc1Njc4LC0wLjIzODk5IDU1Ljc0Mzc4LC0wLjMxODY1IDU1Ljc0Mzc4LC0wLjMxODY1ek0yMTQuNjI3OTcsMTY4LjQ0OTE2Yy0wLjYzNzI5LDAuMzk4MyAtMS4zMTQ0MSwxLjc5MjM3IC01LjAxODY0LDkuOTk3NDZjLTQuNjIwMzQsMTAuMjM2NDQgLTQuODU5MzIsMTAuOTEzNTYgLTMuODIzNzIsMTIuMDI4ODJjMS4xNTUwOSwxLjIzNDc1IDIuOTQ3NDUsMS4yNzQ1NyAzLjk4MzA1LDAuMDM5ODNjMC4zMTg2NSwtMC4zOTgzIDAuNzk2NiwtMS4yNzQ1NyAxLjAzNTU5LC0xLjk1MTdsMC40MzgxNCwtMS4yMzQ3NWg0Ljc3OTY2aDQuNzc5NjZsMC41NTc2MywxLjQzMzljMC43MTY5NSwxLjk1MTcgMS40NzM3MywyLjYyODgyIDIuOTA3NjMsMi42Mjg4MmMwLjkxNjEsMCAxLjE5NDkxLC0wLjExOTQ5IDEuNzkyMzcsLTAuNzk2NjFjMC41MTc4LC0wLjU1NzYzIDAuNzE2OTUsLTEuMDM1NTkgMC43MTY5NSwtMS42NzI4OGMwLC0wLjYzNzI5IC0xLjE1NTA4LC0zLjU4NDc0IC0zLjc4MzksLTkuNDM5ODNjLTQuOTc4ODEsLTExLjE5MjM3IC00LjczOTg0LC0xMC43MTQ0MSAtNS41MzY0NSwtMTEuMTEyNzFjLTAuOTE2MSwtMC41MTc4IC0xLjkxMTg3LC0wLjQ3Nzk2IC0yLjgyNzk3LDAuMDc5NjZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yMTYuMTAxNywxNzYuMDk2NjFjMC4xNTkzMiwwLjE1OTMyIDIuNTg4OTgsNi4xMzM5IDIuNTg4OTgsNi4zMzMwNWMwLDAuMTU5MzIgLTEuMTk0OTEsMC4yMzg5OCAtMi43MDg0NywwLjIzODk4Yy0yLjA3MTE4LDAgLTIuNjY4NjQsLTAuMDc5NjYgLTIuNTg4OTgsLTAuMzE4NjVjMC4wNzk2NiwtMC4xNTkzMiAwLjY3NzEyLC0xLjYzMzA1IDEuMzk0MDcsLTMuMzA1OTNjMC43MTY5NSwtMS42MzMwNSAxLjMxNDQsLTIuOTg3MjkgMS4zMTQ0LC0yLjk0NzQ2eiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjY4Ljk3NTcxLDE1OC40MTE4N2MwLDAgMTUuMjc1OTksMC4xOTkxNSAxNi4wNzI2LDAuNjc3MTJjMC40Nzc5NiwwLjI3ODgyIDEuMTE1MjUsMC45MTYxIDEuMzk0MDcsMS40NzM3M2wwLjU1NzYyLDAuOTU1OTN2MTguNDgxMzZ2MTguNDQxNTNsLTAuNTU3NjIsMC45NTU5M2MtMC4yNzg4MiwwLjU1NzYzIC0wLjkxNjExLDEuMTk0OTEgLTEuMzk0MDcsMS40NzM3M2MtMC44MzY0NCwwLjUxNzggLTE2LjA3MjYsMC42NzcxMiAtMTYuMDcyNiwwLjY3NzEyeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48L2c%2BPC9nPjwvc3ZnPg%3D%3D%22%3B%0D%0A%0D%0A%20%20const%20blockIconURI%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI3OS4zNjMxMyIgaGVpZ2h0PSI4Ny45MjE0OSIgdmlld0JveD0iMCwwLDc5LjM2MzEzLDg3LjkyMTQ5Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwLjMxODQzLC0xMzYuMDQxNDMpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMzIuNjcxMTksMTgwLjAwMDAzdjIxLjU0ODNsLTExLjcwNjUyLC0wLjA3OTY2Yy0xMS4wMzExNiwtMC4wNzk2NiAtMTEuNzA2NTQsLTAuMDc5NjYgLTEyLjg4ODQ1LC0wLjU5NzQ2Yy0wLjY3NTM3LC0wLjI3ODgyIC0xLjU3NTg3LC0wLjkxNjEgLTEuOTY5ODUsLTEuNDczNzNsLTAuNzg3OTMsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjc4NzkzLC0wLjk1NTkzYzAuMzkzOTgsLTAuNTU3NjMgMS4yOTQ0OCwtMS4xOTQ5MSAxLjk2OTg1LC0xLjQ3MzczYzEuMTI1NjMsLTAuNDc3OTYgMS44NTcyOSwtMC41MTc4IDEyLjg4ODQ1LC0wLjU5NzQ2bDExLjcwNjUyLC0wLjA3OTY2djIxLjU4ODEzeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzAuNzg3MTYsMjAxLjU0ODMzYzAsMCAtMjEuNTI5MDQsLTAuMTU5MzIgLTIyLjcxMDk0LC0wLjY3NzEyYy0wLjY3NTM3LC0wLjI3ODgyIC0xLjU3NTg3LC0wLjkxNjEgLTEuOTY5ODUsLTEuNDczNzNsLTAuNzg3OTMsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjc4NzkzLC0wLjk1NTkzYzAuMzkzOTgsLTAuNTU3NjMgMS4yOTQ0OCwtMS4xOTQ5MSAxLjk2OTg1LC0xLjQ3MzczYzEuMTI1NjMsLTAuNDc3OTcgMjIuNzEwOTQsLTAuNjc3MTIgMjIuNzEwOTQsLTAuNjc3MTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjQ3LjMyODgxLDE4MC4wMDAwMXYtMjEuNTg4MTNsMTEuNzA2NTIsMC4wNzk2NmMxMS4wMzExNiwwLjA3OTY2IDExLjc2MjgyLDAuMTE5NSAxMi44ODg0NSwwLjU5NzQ2YzAuNjc1MzcsMC4yNzg4MiAxLjU3NTg3LDAuOTE2MSAxLjk2OTg1LDEuNDczNzNsMC43ODc5MywwLjk1NTkzdjE4LjQ4MTM2djE4LjQ0MTUzbC0wLjc4NzkzLDAuOTU1OTNjLTAuMzkzOTgsMC41NTc2MyAtMS4yOTQ0OCwxLjE5NDkxIC0xLjk2OTg1LDEuNDczNzNjLTEuMTgxOTEsMC41MTc4IC0xLjg1NzI5LDAuNTE3OCAtMTIuODg4NDUsMC41OTc0NmwtMTEuNzA2NTIsMC4wNzk2NnYtMjEuNTQ4M3oiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yNDkuMjEyODQsMTU4LjQxMTg4YzAsMCAyMS41ODUzMiwwLjE5OTE1IDIyLjcxMDk0LDAuNjc3MTJjMC42NzUzNywwLjI3ODgyIDEuNTc1ODcsMC45MTYxIDEuOTY5ODUsMS40NzM3M2wwLjc4NzkzLDAuOTU1OTN2MTguNDgxMzZ2MTguNDQxNTNsLTAuNzg3OTMsMC45NTU5M2MtMC4zOTM5OCwwLjU1NzYzIC0xLjI5NDQ4LDEuMTk0OTEgLTEuOTY5ODUsMS40NzM3M2MtMS4xODE5MSwwLjUxNzggLTIyLjcxMDk0LDAuNjc3MTIgLTIyLjcxMDk0LDAuNjc3MTJ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yMjkuNTk1NTYsMTQxLjA0NTc3bDEwLjgzMzksMC4wMzk4M2MxMC41MTUyNiwwLjA3OTY2IDEwLjgzMzksMC4xMTk0OSAxMS41MTEwMiwwLjU5NzQ1YzIuNDI5NjYsMS44NzIwNCAyLjM4OTgzLDQuOTM4OTkgLTAuMTU5MzMsNi42NTE2OWMtMC43NTY3OCwwLjUxNzggLTEuMTE1MjUsMC41NTc2MyAtNC4zNDE1MiwwLjU1NzYzaC0zLjUwNTA5djMxLjEwNzYzdjMxLjA2Nzc5aDMuNDY1MjZjMy45NDMyMiwwIDQuODk5MTYsMC4zMTg2NSA1LjgxNTI2LDEuOTUxN2MxLjAzNTYsMS44MzIyIDAuNTE3OCwzLjk0MzIzIC0xLjI3NDU4LDUuMjU3NjNjLTAuNjc3MTIsMC41MTc4IC0wLjk5NTc2LDAuNTE3OCAtMTEuNTExMDIsMC41OTc0NWwtMTAuODMzOSwwLjA3OTY2bC0xLjExNTI1LC0wLjU1NzYzYy0xLjE1NTA5LC0wLjYzNzI5IC0yLjE5MDY4LC0yLjE1MDg1IC0yLjE5MDY4LC0zLjM4NTZjMCwtMC44NzYyNyAwLjk5NTc3LC0yLjY2ODY0IDEuNzkyMzcsLTMuMjY2MWMwLjU5NzQ2LC0wLjQ3Nzk3IDEuMTE1MjUsLTAuNTE3OCA0LjM0MTUyLC0wLjU5NzQ1bDMuNjY0NCwtMC4wNzk2N3YtMzEuMDY3Nzl2LTMxLjA2Nzc5bC0zLjY2NDQsLTAuMDc5NjdjLTMuMjI2MjcsLTAuMDc5NjYgLTMuNzQ0MDYsLTAuMTE5NDkgLTQuMzQxNTIsLTAuNTk3NDVjLTAuNzk2NjEsLTAuNTU3NjMgLTEuNzkyMzcsLTIuMzUgLTEuNzkyMzcsLTMuMjY2MWMwLC0xLjIzNDc1IDAuOTk1NzYsLTIuNzg4MTQgMi4xOTA2OCwtMy4zODU2eiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTIyOS41OTU1NiwxNDEuMDQ1NzdsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20const%20formatIcon%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxNTAuOTAzNTUiIGhlaWdodD0iOTUuNSIgdmlld0JveD0iMCwwLDE1MC45MDM1NSw5NS41Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTY0LjU0ODIyLC0xMzIuMjUpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMzkuNzQxOTcsMjAxLjgxODIzYzAsMCAtNDAuMjY2OTcsLTAuMTU5MzIgLTQxLjU1OTI5LC0wLjY3NzEyYy0wLjczODQ2LC0wLjI3ODgyIC0xLjcyMzA5LC0wLjkxNjEgLTIuMTUzODcsLTEuNDczNzNsLTAuODYxNTQsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjg2MTU0LC0wLjk1NTkzYzAuNDMwNzksLTAuNTU3NjMgMS40MTU0MSwtMS4xOTQ5MSAyLjE1Mzg3LC0xLjQ3MzczYzEuMjMwNzksLTAuNDc3OTYgNDEuNTU5MjksLTAuNjc3MTIgNDEuNTU5MjksLTAuNjc3MTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTIzNC4wOTEzNiwxNTguNjgxNzhjMCwwIDQyLjY2MTg0LDAuMTk5MTYgNDMuODkyNjIsMC42NzcxMmMwLjczODQ2LDAuMjc4ODIgMS43MjMwOSwwLjkxNjEgMi4xNTM4NywxLjQ3MzczbDAuODYxNTQsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC44NjE1NCwwLjk1NTkzYy0wLjQzMDc5LDAuNTU3NjMgLTEuNDE1NDEsMS4xOTQ5MSAtMi4xNTM4NywxLjQ3MzczYy0xLjI5MjMyLDAuNTE3OCAtNDMuODkyNjIsMC42NzcxMiAtNDMuODkyNjIsMC42NzcxMnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzYuMTUxNCwxNTguNjgxNzhjMCwwIDQwLjYwMTgxLDAuMTk5MTUgNDEuODMyNTksMC42NzcxMmMwLjczODQ2LDAuMjc4ODIgMS43MjMwOSwwLjkxNjEgMi4xNTM4NywxLjQ3MzczbDAuODYxNTQsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC44NjE1NCwwLjk1NTkzYy0wLjQzMDc5LDAuNTU3NjMgLTEuNDE1NDEsMS4xOTQ5MSAtMi4xNTM4NywxLjQ3MzczYy0xLjI5MjMyLDAuNTE3OCAtNDEuODMyNTksMC42NzcxMiAtNDEuODMyNTksMC42NzcxMnoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTIzNy42ODE5MywyMDEuODE4MjNjMCwwIC0zOC4yMDY5NCwtMC4xNTkzMiAtMzkuNDk5MjYsLTAuNjc3MTJjLTAuNzM4NDYsLTAuMjc4ODIgLTEuNzIzMDksLTAuOTE2MSAtMi4xNTM4NywtMS40NzM3M2wtMC44NjE1NCwtMC45NTU5M3YtMTguNDQxNTN2LTE4LjQ4MTM2bDAuODYxNTQsLTAuOTU1OTNjMC40MzA3OSwtMC41NTc2MyAxLjQxNTQxLC0xLjE5NDkxIDIuMTUzODcsLTEuNDczNzNjMS4yMzA3OCwtMC40Nzc5NyAzOS40OTkyNiwtMC42NzcxMiAzOS40OTkyNiwtMC42NzcxMnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0xNjkuNTQ4MjIsMTU0LjQwNzUydi0xNy4xNTc1MmgxNy4xNTc1MnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0zMTAuNDUxNzgsMjA1LjU5MjQ4djE3LjE1NzUyaC0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMTY5LjU0ODIzLDE1NC40MDc1MnYtMTcuMTU3NTJoMTcuMTU3NTJ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0zMTAuNDUxNzgsMjA1LjU5MjQ4djE3LjE1NzUyaC0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0xODYuNzA1NzYsMjIyLjc1aC0xNy4xNTc1MnYtMTcuMTU3NTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTI5My4yOTQyNSwxMzcuMjVoMTcuMTU3NTJ2MTcuMTU3NTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTE4Ni43MDU3NiwyMjIuNzVoLTE3LjE1NzUydi0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0yOTMuMjk0MjUsMTM3LjI1aDE3LjE1NzUydjE3LjE1NzUyeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwIi8%2BPHBhdGggZD0iTTIzNi4yNjY0NCwxNjUuNjY5ODVjMS4xODI3MiwtMC43MTk5MSAyLjQ4NDMxLC0wLjc3MTMzIDMuNjY3MDMsLTAuMTAyODNjMS4wMjg0NSwwLjUxNDIyIDAuNzc2MzksLTAuMDQwOTQgNy4yMDQyMSwxNC40MDg4YzMuMzkzOSw3LjU1OTEzIDQuODY5NjUsMTEuNDA4NTMgNC44Njk2NSwxMi4yMzEyOWMwLDAuODIyNzYgLTAuMjYyMzgsMS40NDUyOSAtMC45MzA4OCwyLjE2NTIxYy0wLjc3MTM0LDAuODc0MTkgLTEuMTM3ODQsMS4wMzM3NCAtMi4zMjA1NSwxLjAzMzc0Yy0xLjg1MTIxLDAgLTIuODk4MjIsLTAuOTgyNTUgLTMuODIzODIsLTMuNTAyMjdsLTAuNjUyODgsLTEuNzQwOWwtNi4yMDUwNSwwLjAwOTg1bC02LjIwNSwtMC4wMDk5bC0wLjQ5ODQ5LDEuNDgzODZjLTAuMzA4NTQsMC44NzQyIC0wLjk5MDc4LDIuMTE2OTMgLTEuNDAyMTcsMi42MzExNWMtMS4zMzcsMS41OTQwOSAtMy42NjMxMywxLjUzMzU5IC01LjE1NDM5LC0wLjA2MDUxYy0xLjMzNywtMS40Mzk4NCAtMS4wNDcyOSwtMi4zNzMyOCA0LjkxNzczLC0xNS41ODg4OGM0Ljc4MjI5LC0xMC41OTMwNiA1LjcxMTg0LC0xMi40NDQ0MSA2LjUzNDYsLTEyLjk1ODYzeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7bm9Ib3ZlciZxdW90OzpmYWxzZSwmcXVvdDtvcmlnSXRlbSZxdW90OzpbJnF1b3Q7UGF0aCZxdW90Oyx7JnF1b3Q7YXBwbHlNYXRyaXgmcXVvdDs6dHJ1ZSwmcXVvdDtzZWdtZW50cyZxdW90OzpbW1szMzcuMjU1OTQsMTk4LjIzMTY1XSxbMCwwXSxbLTEuMjc0NTgsMC43OTY2XV0sW1szMjcuMjE4NjYsMjE4LjIyNjU3XSxbNy40MDg0NiwtMTYuNDEwMThdLFstOS4yNDA2OCwyMC40NzI4OF1dLFtbMzE5LjU3MTIyLDI0Mi4yODQyMV0sWy0yLjA3MTIsLTIuMjMwNTJdLFsyLjMxMDE4LDIuNDY5NV1dLFtbMzI3LjUzNzMyLDI0Mi4zNjM4N10sWy0yLjA3MTIsMi40Njk0OF0sWzAuNjM3MywtMC43OTY2XV0sW1szMjkuNjA4NSwyMzguNDYwNDddLFstMC40Nzc5OCwxLjM1NDI2XSxbMCwwXV0sWzMzMC40ODQ3OCwyMzUuOTkwOTddLFszNDAuMDQ0MSwyMzUuOTkwOTddLFszNDkuNjAzNDIsMjM1Ljk5MDk3XSxbWzM1MC43MTg2OCwyMzguODU4NzddLFswLDBdLFsxLjQzMzksMy45MDM0XV0sW1szNTYuNTMzOTQsMjQ0LjExNjQxXSxbLTIuODY3OCwwXSxbMS44MzIyLDBdXSxbWzM2MC4xMTg2OCwyNDIuNTIzMTldLFstMS4xOTQ5MiwxLjM1NDI0XSxbMS4wMzU2LC0xLjExNTI2XV0sW1szNjEuNTUyNTgsMjM5LjE3NzQzXSxbMCwxLjI3NDU4XSxbMCwtMS4yNzQ1OF1dLFtbMzUzLjk4NDc4LDIyMC4yOTc3N10sWzUuMjU3NjQsMTEuNzEwMThdLFstOS45NTc2MiwtMjIuMzg0NzRdXSxbWzM0Mi45MTE4OCwxOTguMDcyMzVdLFsxLjU5MzIyLDAuNzk2Nl0sWy0xLjgzMjIsLTEuMDM1Nl1dLFtbMzM3LjI1NTk0LDE5OC4yMzE2N10sWzEuODMyMiwtMS4xMTUyNF0sWzAsMF1dXSwmcXVvdDtjbG9zZWQmcXVvdDs6dHJ1ZSwmcXVvdDtmaWxsQ29sb3ImcXVvdDs6WzAsMCwwLDFdfV19IiBmaWxsPSIjNjkwMGI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMC41Ii8%2BPHBhdGggZD0iTTIzOC4xNzcwNCwxNzUuNjA3MDJjMC4yMDU2OSwwLjIwNTY5IDMuMzQyNDYsNy45MTkwOCAzLjM0MjQ2LDguMTc2MTljMCwwLjIwNTY5IC0xLjU0MjY3LDAuMzA4NTMgLTMuNDk2NzMsMC4zMDg1M2MtMi42NzM5NywwIC0zLjQ0NTMxLC0wLjEwMjg0IC0zLjM0MjQ2LC0wLjQxMTM5YzAuMTAyODQsLTAuMjA1NjkgMC44NzQxOSwtMi4xMDgzMiAxLjc5OTc5LC00LjI2ODA3YzAuOTI1NjEsLTIuMTA4MzIgMS42OTY5NCwtMy44NTY3IDEuNjk2OTQsLTMuODA1Mjd6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20const%20colorIcon%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI3NS41MzUxNyIgaGVpZ2h0PSI3MS40OTc0NiIgdmlld0JveD0iMCwwLDc1LjUzNTE3LDcxLjQ5NzQ2Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAyLjIzMjQxLC0xNDQuMjUxMjcpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMjMuNTM4NTYsMTY1LjcxMjcxYzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMDcuMjMyNDIsMTk0LjI4NzI5YzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwNCwxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzkuODQ0NzEsMTk0LjI4NzI5YzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMjMuNTM4NTYsMTY1LjcxMjcxYzAsLTkuMDkxNDEgNy4zNzAwMywtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNCwwIDE2LjQ2MTQ0LDcuMzcwMDQgMTYuNDYxNDQsMTYuNDYxNDRjMCw5LjA5MTQxIC03LjM3MDAzLDE2LjQ2MTQ0IC0xNi40NjE0NCwxNi40NjE0NGMtOS4wOTE0LDAgLTE2LjQ2MTQ0LC03LjM3MDAzIC0xNi40NjE0NCwtMTYuNDYxNDR6IiBmaWxsPSIjMDBmZjAxIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMDcuMjMyNDEsMTk0LjI4NzI5YzAsLTkuMDkxNCA3LjM3MDA0LC0xNi40NjE0NCAxNi40NjE0NCwtMTYuNDYxNDRjOS4wOTE0LDAgMTYuNDYxNDQsNy4zNzAwNCAxNi40NjE0NCwxNi40NjE0NGMwLDkuMDkxNCAtNy4zNzAwNCwxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNCwwIC0xNi40NjE0NCwtNy4zNzAwNCAtMTYuNDYxNDQsLTE2LjQ2MTQ0eiIgZmlsbD0iI2ZmMDAwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Im5vbmUiLz48cGF0aCBkPSJNMjM5Ljg0NDcxLDE5NC4yODcyOWMwLC05LjA5MTQxIDcuMzcwMDMsLTE2LjQ2MTQ0IDE2LjQ2MTQ0LC0xNi40NjE0NGM5LjA5MTQsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNCwwIC0xNi40NjE0NCwtNy4zNzAwNCAtMTYuNDYxNDQsLTE2LjQ2MTQ0eiIgZmlsbD0iIzAwNzFmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Im5vbmUiLz48L2c%2BPC9nPjwvc3ZnPg%3D%3D%22%3B%0D%0A%0D%0A%20%20const%20effectIcon%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1Ny40NDI0MSIgaGVpZ2h0PSI3MC40NSIgdmlld0JveD0iMCwwLDU3LjQ0MjQxLDcwLjQ1Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEwLjI2NjQ1LC0xNDQuODU2NTUpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMTUuMjY2NDUsMTkzLjkwNDFjLTMuOTg4MTUsLTguMTE3MSAtMy45OTYxMSwtMTguMjQzMDUgMC4xNTIyMSwtMjYuNDExMDNjNC42ODc3OSwtOS41NzQzMSAxMi41NzY5MSwtMTMuODE3OTcgMTUuNzQ3NTYsLTE1LjE5Nzc1YzEuOTA1OCwtMC44ODUwOCAzLjkxMzg4LC0xLjU3NDk3IDYuMDc1MzcsLTIuMDgzMTNsMi4xMjA1OSwtMC40NTc2OGMxLjU1ODA1LC0wLjMxOTcgMy4xMDkyOCwwLjY0NjE0IDMuNDQ2OCwyLjE4NzQ1YzAuMzQwOTMsMS41NDQ2OCAtMC42NTExOCwzLjA2NTggLTIuMjE2MDUsMy40MDIzM2wtMi4wNjI2MywwLjQ0NDIyYy0xLjcxNDg4LDAuNDAzODQgLTMuMzU4MTYsMC45NjkyMSAtNC45NjA1MywxLjcxNjMxYy0yLjA4MzA4LDAuOTAxOSAtOC45NzMyOCw0LjM5MTczIC0xMi45NDg1MiwxMi41MTU2Yy0zLjAxNzIzLDUuOTMzMDUgLTMuOTE3MjksMTUuMzY2MDIgMC44MzE4NywyMy4xNDk5OGM0LjMwMjU0LDcuNDk3OTIgMTMuMTEyMTcsMTIuMDk0OTMgMjEuNDY4MzcsMTEuMzIwOTFjNy45MDI3NiwtMC41Njg3NCAxNS4xNTQzNCwtNS44Mjg3MiAxNy42OTc2OCwtMTIuNzk0OTJjMi41ODA4NCwtNi41NTIyNiAwLjg2NTk2LC0xMy4yNjk0MyAtMS45NjcxNywtMTcuMDUyMDRjLTMuNDEyNzEsLTQuNjYwOTYgLTcuNjYwNywtNi4wOTQ1OCAtOS4zMjc4NSwtNi40OTUwNWMtMC4yNDg4OCwtMC4wNzQwNCAtNi4wODU2LC0xLjgyNzM2IC0xMS4yNDA0NiwwLjc1MzgzYy0yLjIxOTQ1LDEuMDYzNDQgLTUuMDkwMDksMy40NTYxOCAtNi42Mjc2OCw3LjA1MDMzYy0xLjY2MDMzLDMuNzExOTQgLTEuMjMwNzYsOC40ODM5NSAxLjAxOTM4LDExLjY1NDA4YzIuMjYzNzgsMy4zOTg5NyA2LjUzMjIyLDUuMzIzOTIgMTAuMjA0MDQsNC42NzEwNWMzLjY1NDc3LC0wLjU3NTQ3IDYuMTI2NTEsLTMuMjk0NjQgNi43MTI5MSwtNS42ODQwMWMwLjY4ODY4LC0yLjU2NzczIC0wLjM2ODIsLTQuNzM4MzYgLTEuMTkzMjYsLTUuNTE5MTFjLTEuNDAxMjIsLTEuMzgzMTQgLTIuNjExNTIsLTEuNDA2NyAtMi42NjI2NiwtMS40MTAwN2MtMC41NzI3NiwtMC4wMTY4MyAtMC44NTU3MywwLjAyNjkyIC0xLjAyNjIsMC4wNTM4NGMtMC42NTQ1OSwwLjIzODk0IC0xLjU4MTkyLDAuNzYzOTMgLTEuODU0NjYsMS4zMTU4NGMtMC4wNDc3MywwLjA5MDg2IC0wLjE3MDQ3LDAuMzM5OSAwLjA2NDc4LDAuOTYyNDhjMC41NjI1MywxLjQ3NzM3IC0wLjE5Nzc0LDMuMTI5NzQgLTEuNjk0NDIsMy42ODUwMmMtMS40ODk4NiwwLjU1ODY0IC0zLjE2NzI0LC0wLjE5MTgyIC0zLjczMzE4LC0xLjY3MjU2Yy0wLjkzMDc0LC0yLjQ0OTk1IC0wLjQxNTkzLC00LjM2ODE4IDAuMTgwNjksLTUuNTQ2MDNjMS41NTgwNSwtMy4wNjU4IDUuMTc1MzIsLTQuMTc2MzUgNS41ODQ0MywtNC4yOTQxNGMwLjE4NzUxLC0wLjA1NzIxIDAuMzg1MjUsLTAuMDkwODYgMC41Nzk1OCwtMC4xMDc2OWMwLjM5ODg5LC0wLjA2MDU4IDEuMTAxMiwtMC4xNTQ4IDIuMDUyNCwtMC4xMTc3OWMyLjE3ODU0LDAuMDI2OTIgNC42NjA1MSwxLjE2NDQgNi41NjI5LDMuMDQ1NjFjMi4yNDY3MywyLjEyMDE1IDQuMDA1OTMsNi4zODA2MyAyLjc1ODEyLDExLjAxMTNjLTEuMjE3MTIsNC45NTcxIC01Ljg5NDY4LDkuMDU2MDYgLTExLjM1Mjk3LDkuOTE0MjFjLTUuODcwODIsMS4wNDY2MSAtMTIuNDgxNDUsLTEuODQ3NTYgLTE1Ljk3MjU3LC03LjA5NDA4Yy0zLjM2NDk4LC00LjcyODI2IC00LjAwOTM0LC0xMS42NDczNSAtMS41NDc4MiwtMTcuMTM2MTdjMi43MDAxNywtNi4zMjAwNiA3Ljg1ODQ0LC05LjE4MDU3IDkuMzcyMTcsLTkuOTA3NDhjNy4yNzg4NiwtMy42MzQ1NCAxNS4wNTg4OCwtMS4yMzUwNyAxNS4zODYxNywtMS4xMzQxMWMyLjA5MzMxLDAuNDk0NyA3LjkxMjk5LDIuNDQzMjIgMTIuNDM3MTMsOC42MjUyOWMzLjQ3NzQ5LDQuNjUwODYgNi4yOTY5OCwxMy4zMzY3MyAyLjcxMzgsMjIuNDI5ODFjLTMuMjcyOTMsOC45NjE4MyAtMTIuNTkwNTUsMTUuNzY5ODUgLTIyLjYzNzc2LDE2LjQ5MzM5Yy0wLjc4NzU1LDAuMDc0MDQgLTEuNTg1MzIsMC4xMTQ0MiAtMi4zNzk2OSwwLjExNDQyYy05Ljc1MDYsMCAtMTkuNjI3MzQsLTUuNjIwMDcgLTI0LjU4MTA2LC0xNC4yNDg3M2MwLDAgLTAuODIwNDksLTEuNDE4MzQgLTEuMTgxODEsLTIuMTUzNzN6IiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjE2LjQ0ODI3LDE5Ni4wNTc4NGMtNS4xMzQ0MSwtOC40MjAwMSAtNS41NTM3NSwtMTkuNjU2NzkgLTEuMDI5NjEsLTI4LjU2NDc3YzQuNjg3NzksLTkuNTc0MzEgMTIuNTc2OTEsLTEzLjgxNzk3IDE1Ljc0NzU2LC0xNS4xOTc3NWMxLjkwNTgsLTAuODg1MDggMy45MTM4OCwtMS41NzQ5NyA2LjA3NTM3LC0yLjA4MzEzbDIuMTIwNTksLTAuNDU3NjhjMS41NTgwNSwtMC4zMTk3IDMuMTA5MjgsMC42NDYxNCAzLjQ0NjgsMi4xODc0NWMwLjM0MDkzLDEuNTQ0NjggLTAuNjUxMTgsMy4wNjU4IC0yLjIxNjA1LDMuNDAyMzNsLTIuMDYyNjMsMC40NDQyMmMtMS43MTQ4OCwwLjQwMzg0IC0zLjM1ODE2LDAuOTY5MjEgLTQuOTYwNTMsMS43MTYzMWMtMi4wODMwOCwwLjkwMTkgLTguOTczMjgsNC4zOTE3MyAtMTIuOTQ4NTIsMTIuNTE1NmMtMy4wMTcyMyw1LjkzMzA1IC0zLjkxNzI5LDE1LjM2NjAyIDAuODMxODcsMjMuMTQ5OThjNC4zMDI1NCw3LjQ5NzkyIDEzLjExMjE3LDEyLjA5NDkzIDIxLjQ2ODM3LDExLjMyMDkxYzcuOTAyNzYsLTAuNTY4NzQgMTUuMTU0MzQsLTUuODI4NzIgMTcuNjk3NjgsLTEyLjc5NDkyYzIuNTgwODQsLTYuNTUyMjYgMC44NjU5NiwtMTMuMjY5NDMgLTEuOTY3MTcsLTE3LjA1MjA0Yy0zLjQxMjcxLC00LjY2MDk2IC03LjY2MDcsLTYuMDk0NTggLTkuMzI3ODUsLTYuNDk1MDVjLTAuMjQ4ODgsLTAuMDc0MDQgLTYuMDg1NiwtMS44MjczNiAtMTEuMjQwNDYsMC43NTM4M2MtMi4yMTk0NSwxLjA2MzQ0IC01LjA5MDA5LDMuNDU2MTggLTYuNjI3NjgsNy4wNTAzM2MtMS42NjAzMywzLjcxMTk0IC0xLjIzMDc2LDguNDgzOTUgMS4wMTkzOCwxMS42NTQwOGMyLjI2Mzc4LDMuMzk4OTcgNi41MzIyMiw1LjMyMzkyIDEwLjIwNDA0LDQuNjcxMDVjMy42NTQ3NywtMC41NzU0NyA2LjEyNjUxLC0zLjI5NDY0IDYuNzEyOTEsLTUuNjg0MDFjMC42ODg2OCwtMi41Njc3MyAtMC4zNjgyLC00LjczODM2IC0xLjE5MzI2LC01LjUxOTExYy0xLjQwMTIyLC0xLjM4MzE0IC0yLjYxMTUyLC0xLjQwNjcgLTIuNjYyNjYsLTEuNDEwMDdjLTAuNTcyNzYsLTAuMDE2ODMgLTAuODU1NzMsMC4wMjY5MiAtMS4wMjYyLDAuMDUzODRjLTAuNjU0NTksMC4yMzg5NCAtMS41ODE5MiwwLjc2MzkzIC0xLjg1NDY2LDEuMzE1ODRjLTAuMDQ3NzMsMC4wOTA4NiAtMC4xNzA0NywwLjMzOTkgMC4wNjQ3OCwwLjk2MjQ4YzAuNTYyNTMsMS40NzczNyAtMC4xOTc3NCwzLjEyOTc0IC0xLjY5NDQyLDMuNjg1MDJjLTEuNDg5ODYsMC41NTg2NCAtMy4xNjcyNCwtMC4xOTE4MiAtMy43MzMxOCwtMS42NzI1NmMtMC45MzA3NCwtMi40NDk5NSAtMC40MTU5MywtNC4zNjgxOCAwLjE4MDY5LC01LjU0NjAzYzEuNTU4MDUsLTMuMDY1OCA1LjE3NTMyLC00LjE3NjM1IDUuNTg0NDMsLTQuMjk0MTRjMC4xODc1MSwtMC4wNTcyMSAwLjM4NTI1LC0wLjA5MDg2IDAuNTc5NTgsLTAuMTA3NjljMC4zOTg4OSwtMC4wNjA1OCAxLjEwMTIsLTAuMTU0OCAyLjA1MjQsLTAuMTE3NzljMi4xNzg1NCwwLjAyNjkyIDQuNjYwNTEsMS4xNjQ0IDYuNTYyOSwzLjA0NTYxYzIuMjQ2NzMsMi4xMjAxNSA0LjAwNTkzLDYuMzgwNjMgMi43NTgxMiwxMS4wMTEzYy0xLjIxNzEyLDQuOTU3MSAtNS44OTQ2OCw5LjA1NjA2IC0xMS4zNTI5Nyw5LjkxNDIxYy01Ljg3MDgyLDEuMDQ2NjEgLTEyLjQ4MTQ1LC0xLjg0NzU2IC0xNS45NzI1NywtNy4wOTQwOGMtMy4zNjQ5OCwtNC43MjgyNiAtNC4wMDkzNCwtMTEuNjQ3MzUgLTEuNTQ3ODIsLTE3LjEzNjE3YzIuNzAwMTcsLTYuMzIwMDYgNy44NTg0NCwtOS4xODA1NyA5LjM3MjE3LC05LjkwNzQ4YzcuMjc4ODYsLTMuNjM0NTQgMTUuMDU4ODgsLTEuMjM1MDcgMTUuMzg2MTcsLTEuMTM0MTFjMi4wOTMzMSwwLjQ5NDcgNy45MTI5OSwyLjQ0MzIyIDEyLjQzNzEzLDguNjI1MjljMy40Nzc0OSw0LjY1MDg2IDYuMjk2OTgsMTMuMzM2NzMgMi43MTM4LDIyLjQyOTgxYy0zLjI3MjkzLDguOTYxODMgLTEyLjU5MDU1LDE1Ljc2OTg1IC0yMi42Mzc3NiwxNi40OTMzOWMtMC43ODc1NSwwLjA3NDA0IC0xLjU4NTMyLDAuMTE0NDIgLTIuMzc5NjksMC4xMTQ0MmMtOS43NTA2LDAgLTE5LjYyNzM0LC01LjYyMDA3IC0yNC41ODEwNiwtMTQuMjQ4NzN6IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20let%20newColorType%20%3D%20%22%22%3B%0D%0A%20%20let%20overlayImageContainer%20%3D%20%22%22%3B%0D%0A%20%20const%20fontMenu%20%3D%20%5B%0D%0A%20%20%20%20%22Scratch%22%2C%0D%0A%20%20%20%20%22Sans%20Serif%22%2C%0D%0A%20%20%20%20%22Serif%22%2C%0D%0A%20%20%20%20%22Handwriting%22%2C%0D%0A%20%20%20%20%22Marker%22%2C%0D%0A%20%20%20%20%22Curly%22%2C%0D%0A%20%20%20%20%22Pixel%22%0D%0A%20%20%5D%3B%20%20%0D%0A%0D%0A%20%20class%20BetterInputSP%20%7B%0D%0A%20%20%20%20constructor()%20%7B%0D%0A%20%20%20%20%20%20this.activeOverlays%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.activeUI%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.askBoxPromises%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.isWaitingForInput%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.isDropdownOpen%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.userInput%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.askBoxInfo%20%3D%20%5B0%2C%201%5D%3B%0D%0A%20%20%20%20%20%20this.forceInput%20%3D%20%22Disabled%22%3B%0D%0A%20%20%20%20%20%20this.overlayInput%20%3D%20null%3B%0D%0A%0D%0A%20%20%20%20%20%20this.optionList%20%3D%20%5B%22Option%201%22%2C%20%22Option%202%22%2C%20%22Option%203%22%5D%3B%0D%0A%20%20%20%20%20%20this.sliderInfo%20%3D%20%5B0%2C%20100%2C%2050%5D%3B%0D%0A%20%20%20%20%20%20this.Timeout%20%3D%200%3B%0D%0A%0D%0A%20%20%20%20%20%20this.shadowEnabled%20%3D%20true%3B%0D%0A%20%20%20%20%20%20this.isInputEnabled%20%3D%20%22Enabled%22%3B%0D%0A%20%20%20%20%20%20this.DropdownText%20%3D%20%22Dropdown%22%3B%0D%0A%20%20%20%20%20%20this.fontSize%20%3D%20%2214px%22%3B%0D%0A%20%20%20%20%20%20this.textAlign%20%3D%20%22left%22%3B%0D%0A%20%20%20%20%20%20this.fontFamily%20%3D%20%22Sans%20Serif%22%3B%0D%0A%20%20%20%20%20%20this.overlayBorderRadius%20%3D%20%5B5%2C%204%2C%205%5D%3B%0D%0A%20%20%20%20%20%20this.buttonJSON%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%22Submit%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%230074D9%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20textColor%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20name%3A%20%22Submit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20imgScale%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%22Cancel%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%23d9534f%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20textColor%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20name%3A%20%22Cancel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20imgScale%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20%20%20this.questionColor%20%3D%20%22%23000000%22%3B%0D%0A%20%20%20%20%20%20this.inputColor%20%3D%20%22%23000000%22%3B%0D%0A%20%20%20%20%20%20this.textBoxColor%20%3D%20%5B%22%23ffffff%22%5D%3B%0D%0A%20%20%20%20%20%20this.inputFieldColor%20%3D%20%5B%22%23ffffff%22%2C%20%22%23000000%22%5D%3B%0D%0A%20%20%20%20%20%20this.dropdownButtonColor%20%3D%20%5B%22%235f5f5f%22%2C%20%22%23ffffff%22%5D%3B%0D%0A%20%20%20%20%20%20this.overlayImage%20%3D%20%5B%22%20%22%2C%20%22%20%22%2C%20%22%20%22%5D%3B%0D%0A%0D%0A%20%20%20%20%20%20this.Blur%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Brightness%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Opacity%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Invert%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Saturation%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Hue%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Sepia%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Contrast%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Scale%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.SkewX%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.SkewY%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Rotation%20%3D%2090%3B%0D%0A%20%20%20%20%20%20this.imgScale%20%3D%20%5B100%2C%20100%2C%20100%5D%3B%0D%0A%20%20%20%20%20%20this.shadowS%20%3D%20%5B0%2C%200%2C%205%2C%200.3%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getInfo()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20id%3A%20%22BetterInputSP%22%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20%22Better%20Input%22%2C%0D%0A%20%20%20%20%20%20%20%20color1%3A%20%22%239400ff%22%2C%0D%0A%20%20%20%20%20%20%20%20color2%3A%20%22%237600cc%22%2C%0D%0A%20%20%20%20%20%20%20%20color3%3A%20%22%238500e6%22%2C%0D%0A%20%20%20%20%20%20%20%20menuIconURI%2C%0D%0A%20%20%20%20%20%20%20%20blockIconURI%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Text%20Blocks%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22askAndWait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5Bquestion%5D%20and%20wait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20question%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22What%20is%20your%20name%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22askAndWaitForInput%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5Bquestion%5D%20and%20wait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20question%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22What%20is%20your%20name%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getUserInput%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22user%20input%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22removeAskBoxes%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22remove%20all%20ask%20boxes%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Formatting%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFontSize%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20font%20size%20to%20%5BSIZE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SIZE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2014%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setTextAlignment%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20alignment%20to%20%5BALIGNMENT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ALIGNMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22alignmentMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22left%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFontFamily%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20font%20to%20%5BFONT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20FONT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22fontMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Sans%20Serif%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setInputType%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20Input%20Box%20to%20be%20%5BACTION%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22inputActionMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20dropdown%20options%20to%20array%3A%20%5BDROPDOWN%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DROPDOWN%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%5B%5C%22Option%201%5C%22%2C%20%5C%22Option%202%5C%22%2C%20%5C%22Option%203%5C%22%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSlider%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20slider%20to%20min%3A%20%5BMIN%5D%20max%3A%20%5BMAX%5D%20default%3A%20%5BDEFAULT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MIN%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DEFAULT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2050%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setButton%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22%5BBUTTON%5D%20button%20named%20%5BNAME%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22buttonType%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22add%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Submit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setButtonText%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BBUTTON_MENU%5D%20button%20name%20to%20%5BTEXT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON_MENU%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22buttonMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Positioning%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPrePosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22preset%20textbox%20position%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20textbox%20position%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changePosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20textbox%20position%20by%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getXpos%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22x%20position%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getYpos%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22y%20position%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDirection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20direction%20to%20%5BROTATE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROTATE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.ANGLE%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2090%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeDirection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20direction%20by%20%5BROTATE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROTATE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.ANGLE%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2015%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22reportDirection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22direction%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Visual%20Settings%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setColorSettings%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20%5BCOLOR%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22colorSettingsMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23000000%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setGradient%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20gradient%20with%20colors%20%5BCOLOR1%5D%20and%20%5BCOLOR2%5D%20with%20direction%20%5BDIR%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ff0000%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DIR%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.ANGLE%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2090%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setCircleGradient%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20radial%20gradient%20with%20colors%20%5BCOLOR1%5D%20and%20%5BCOLOR2%5D%20with%20position%20x%20%5BX%5D%20y%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ff0000%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22enableShadow%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20box%20shadow%20to%20be%20%5BACTION%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22buttonActionMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Enabled%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setShadow%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20box%20shadow%20%5BSHADOW%5D%20to%20%5BAMT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SHADOW%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22shadowStuff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Size%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setBorderRadius%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20border%20radius%20to%20%5BVALUE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VALUE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setImage%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20image%20to%20%5BIMAGE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20IMAGE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22input-url-or-uri-here%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scaleImage%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scale%20%5BELEMENT%5D%20image%20to%20%5BSCALE%5D%25%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SCALE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Effects%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resetEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22reset%20effects%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20effect%20%5BEFFECT%5D%20to%20%5BAMT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22effectMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20effect%20%5BEFFECT%5D%20by%20%5BAMT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22effectMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22showEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22effect%20%5BEFFECT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22effectMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setTimeout%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20submitted%20delete%20textbox%20after%20%5BTIME%5D%20secs%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TIME%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22reportTimeout%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22current%20textbox%20timeout%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Operations%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isWaitingInput%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20waiting%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isDropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20dropdown%20open%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSubmitEvent%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20force%20input%20to%20%5BENTER%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ENTER%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22enterMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Disabled%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setMaxBoxCount%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20max%20box%20count%20to%3A%20%5BMAX%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getBoxInfo%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22box%20%5BINFO%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INFO%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22boxInfo%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22count%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20alignmentMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22left%22%2C%20%22right%22%2C%20%22center%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20boxInfo%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22count%22%2C%20%22limit%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20buttonType%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22add%22%2C%20%22remove%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20fontMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%22allFonts%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20buttonActionMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Enabled%22%2C%20%22Disabled%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20inputActionMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22None%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Multi-Select%20Dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Horizontal%20Slider%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Vertical%20Slider%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20effectMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Brightness%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Opacity%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Invert%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Saturation%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Hue%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Sepia%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Contrast%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Scale%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SkewX%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SkewY%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20shadowStuff%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Size%22%2C%20%22X%22%2C%20%22Y%22%2C%20%22Opacity%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20buttonMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20false)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20elementMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Box%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20false)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20colorSettingsMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Question%20Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Box%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Outline%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20true)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20enterMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Disabled%22%2C%20%22Enter%20Key%22%2C%20%22Shift%20%2B%20Enter%20Key%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20allFonts()%20%7B%0D%0A%20%20%20%20%20%20const%20customFonts%20%3D%20Scratch.vm.runtime.fontManager%0D%0A%20%20%20%20%20%20%20%20%3F%20Scratch.vm.runtime.fontManager.getFonts().map((i)%20%3D%3E%20(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20i.name%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20i.family%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D))%0D%0A%20%20%20%20%20%20%20%20%3A%20%5B%5D%3B%0D%0A%20%20%20%20%20%20return%20%5B%0D%0A%20%20%20%20%20%20%20%20...fontMenu%2C%0D%0A%20%20%20%20%20%20%20%20...customFonts%2C%0D%0A%20%20%20%20%20%20%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20allButtons(array%2C%20enableText)%20%7B%0D%0A%20%20%20%20%20%20const%20customButtons%20%3D%20Object.keys(this.buttonJSON)%3B%0D%0A%20%20%20%20%20%20if%20(enableText)%20%7B%0D%0A%20%20%20%20%20%20%20%20customButtons.forEach((button)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20customButtons.push(button%20%2B%20%22%20Text%22)%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20%5B%0D%0A%20%20%20%20%20%20%20%20...array%2C%0D%0A%20%20%20%20%20%20%20%20...customButtons%2C%0D%0A%20%20%20%20%20%20%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20updateOverlayPos(overlay)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.Rotation%20%3E%20359)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.Rotation%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.Rotation%20%3C%201)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.Rotation%20%3D%20360%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20if%20(this.textBoxX%20!%3D%3D%20null%20%26%26%20this.textBoxY%20!%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20overlay.style.transform%20%3D%20%60%0D%0A%20%20%20%20%20%20%20%20%20%20translate(-50%25%2C%20-50%25)%0D%0A%20%20%20%20%20%20%20%20%20%20SkewX(%24%7Bthis.SkewX%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20%20%20SkewY(%24%7Bthis.SkewY%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20%20%20rotate(%24%7Bthis.Rotation%20-%2090%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20%20%20scale(%24%7Bthis.Scale%20%2F%20100%7D)%0D%0A%20%20%20%20%20%20%20%20%60%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20updateOverlay(overlay)%20%7B%0D%0A%20%20%20%20%20%20const%20newOpacity%20%3D%20%20this.Opacity%20%2F%20100%3B%0D%0A%20%20%20%20%20%20const%20newBrightness%20%3D%20this.Brightness%20%2B%20100%3B%0D%0A%20%20%20%20%20%20overlay.style.backgroundImage%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20overlay.style%5Bthis.textBoxColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.textBoxColor%5B0%5D%3B%0D%0A%20%20%20%20%20%20overlay.style.boxShadow%20%3D%20this.shadowEnabled%20%3F%20%60%24%7Bthis.shadowS%5B0%5D%7Dpx%20%24%7Bthis.shadowS%5B1%5D%7Dpx%20%24%7Bthis.shadowS%5B2%5D%7Dpx%20rgba(0%2C%200%2C%200%2C%20%24%7Bthis.shadowS%5B3%5D%7D)%60%20%3A%20%22none%22%3B%0D%0A%0D%0A%20%20%20%20%20%20overlay.style.transform%20%3D%20%60%0D%0A%20%20%20%20%20%20%20%20translate(-50%25%2C%20-50%25)%0D%0A%20%20%20%20%20%20%20%20SkewX(%24%7Bthis.SkewX%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20SkewY(%24%7Bthis.SkewY%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20rotate(%24%7Bthis.Rotation%20-%2090%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20scale(%24%7Bthis.Scale%20%2F%20100%7D)%0D%0A%20%20%20%20%20%20%60%3B%0D%0A%20%20%20%20%20%20overlay.style.filter%20%3D%20%60%0D%0A%20%20%20%20%20%20%20%20blur(%24%7Bthis.Blur%7Dpx)%0D%0A%20%20%20%20%20%20%20%20brightness(%24%7BnewBrightness%7D%25)%0D%0A%20%20%20%20%20%20%20%20invert(%24%7Bthis.Invert%7D%25)%0D%0A%20%20%20%20%20%20%20%20saturate(%24%7Bthis.Saturation%7D%25)%0D%0A%20%20%20%20%20%20%20%20hue-rotate(%24%7Bthis.Hue%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20sepia(%24%7Bthis.Sepia%7D%25)%0D%0A%20%20%20%20%20%20%20%20contrast(%24%7Bthis.Contrast%7D%25)%0D%0A%20%20%20%20%20%20%60%3B%0D%0A%20%20%20%20%20%20overlay.style.opacity%20%3D%20newOpacity%3B%0D%0A%20%20%20%20%20%20overlay.style.fontFamily%20%3D%20this.fontFamily%3B%0D%0A%20%20%20%20%20%20overlay.style.textAlign%20%3D%20this.textAlign%3B%0D%0A%20%20%20%20%20%20overlay.style.borderRadius%20%3D%20this.overlayBorderRadius%5B0%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20overlayImageContainer.style.borderRadius%20%3D%20this.overlayBorderRadius%5B0%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20overlayImageContainer.style.background%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20this.setImageStyles(overlayImageContainer%2C%20this.overlayImage%5B0%5D%2C%20this.imgScale%5B0%5D)%3B%0D%0A%20%20%20%20%20%20this.updateButtonImages(overlay)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20updateButtonImages(overlay)%20%7B%0D%0A%20%20%20%20%20%20let%20text%20%3D%20overlay.querySelector(%22.question%22)%3B%0D%0A%20%20%20%20%20%20if%20(text)%20%7B%0D%0A%20%20%20%20%20%20%20%20text.style.color%20%3D%20this.questionColor%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20const%20inputField%20%3D%20overlay.querySelector(%22input%22)%3B%0D%0A%20%20%20%20%20%20if%20(inputField)%20%7B%0D%0A%20%20%20%20%20%20%20%20inputField.style.background%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style%5Bthis.inputFieldColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.inputFieldColor%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style.color%20%3D%20this.inputColor%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style.border%20%3D%20%601px%20solid%20%24%7Bthis.inputFieldColor%5B1%5D%7D%60%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style.borderRadius%20%3D%20this.overlayBorderRadius%5B1%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20%20%20this.setImageStyles(inputField%2C%20this.overlayImage%5B1%5D%2C%20this.imgScale%5B1%5D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20const%20dropdownButton%20%3D%20overlay.querySelector(%22button.dropbtn%22)%3B%0D%0A%20%20%20%20%20%20if%20(dropdownButton)%20%7B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style.backgroundImage%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style.color%20%3D%20this.dropdownButtonColor%5B1%5D%3B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style.borderRadius%20%3D%20this.overlayBorderRadius%5B2%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style%5Bthis.dropdownButtonColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.dropdownButtonColor%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20this.setImageStyles(dropdownButton%2C%20this.overlayImage%5B2%5D%2C%20this.imgScale%5B2%5D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20const%20buttonContainer%20%3D%20overlay.querySelector(%22.button-container%22)%3B%0D%0A%20%20%20%20%20%20if%20(buttonContainer)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttons%20%3D%20buttonContainer.querySelectorAll(%22button%22)%3B%0D%0A%20%20%20%20%20%20%20%20buttons.forEach((button%2C%20index)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20buttonName%20%3D%20Object.keys(this.buttonJSON)%5Bindex%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonName%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(buttonInfo)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.color%20%3D%20buttonInfo.textColor%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.borderRadius%20%3D%20buttonInfo.borderRadius%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.background%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style%5BbuttonInfo.color.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22background%22%5D%20%3D%20buttonInfo.color%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setImageStyles(button%2C%20buttonInfo.image%2C%20buttonInfo.imgScale)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setImageStyles(element%2C%20url%2C%20scale)%20%7B%0D%0A%20%20%20%20%20%20if%20(Scratch.Cast.toString(url).length%20%3E%205)%20%7B%0D%0A%20%20%20%20%20%20%20%20Scratch.canFetch(encodeURI(url)).then((canFetch)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(canFetch)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20element.style.background%20%3D%20%60url(%24%7BencodeURI(url)%7D)%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20element.style.backgroundSize%20%3D%20scale%20%2B%20%22%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20console.log(%22Cannot%20fetch%20content%20from%20the%20URL.%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20showEffect(args)%20%7B%0D%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0D%0A%20%20%20%20%20%20return%20this%5Beffect%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setEffect(args)%20%7B%0D%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0D%0A%20%20%20%20%20%20this%5Beffect%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changeEffect(args)%20%7B%0D%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0D%0A%20%20%20%20%20%20this%5Beffect%5D%20%3D%20this%5Beffect%5D%20%2B%20args.AMT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20resetEffect()%20%7B%0D%0A%20%20%20%20%20%20this.Blur%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Brightness%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Opacity%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Invert%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Saturation%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Hue%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Sepia%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Contrast%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Scale%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.SkewX%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.SkewY%20%3D%200%3B%0D%0A%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setColorSettings(args)%20%7B%0D%0A%20%20%20%20%20%20const%20colorType%20%3D%20args.COLOR_TYPE%3B%0D%0A%20%20%20%20%20%20const%20colorValue%20%3D%20args.COLOR%3B%0D%0A%20%20%20%20%20%20switch%20(colorType)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Question%20Text%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.questionColor%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Text%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.inputColor%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Textbox%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.textBoxColor%5B0%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B0%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Box%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.inputFieldColor%5B0%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B1%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Outline%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.inputFieldColor%5B1%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Button%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.dropdownButtonColor%5B0%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B2%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Text%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.dropdownButtonColor%5B1%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.buttonJSON%5BcolorType%5D%20%7C%7C%20this.buttonJSON%5BcolorType.replace(%22%20Text%22%2C%20%22%22)%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20buttonInfo%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(colorType.includes(%22%20Text%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo%20%3D%20this.buttonJSON%5BcolorType.replace(%22%20Text%22%2C%20%22%22)%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.textColor%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo%20%3D%20this.buttonJSON%5BcolorType%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.image%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20findGradientType(menu)%20%7B%0D%0A%20%20%20%20%20%20const%20colorType%20%3D%20menu%3B%0D%0A%20%20%20%20%20%20switch%20(colorType)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Textbox%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%22textBoxColor%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B0%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Box%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%22inputFieldColor%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B1%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Button%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%22dropdownButtonColor%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B2%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.buttonJSON%5BcolorType%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%5B%22button%22%2C%20colorType%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setGradient(args)%20%7B%0D%0A%20%20%20%20%20%20const%20newColorType%20%3D%20this.findGradientType(args.COLOR_TYPE)%3B%0D%0A%20%20%20%20%20%20const%20gradientColor%20%3D%20%60linear-gradient(%24%7Bargs.DIR%20-%2090%7Ddeg%2C%20%24%7Bargs.COLOR2%7D%2C%20%24%7Bargs.COLOR1%7D)%60%3B%0D%0A%20%20%20%20%20%20if%20(newColorType%5B0%5D%20!%3D%3D%20%22button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this%5BnewColorType%5D%5B0%5D%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BnewColorType%5B1%5D%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setCircleGradient(args)%20%7B%0D%0A%20%20%20%20%20%20const%20newColorType%20%3D%20this.findGradientType(args.COLOR_TYPE)%3B%0D%0A%20%20%20%20%20%20const%20newPos%20%3D%20%5Bargs.X%20%2B%2050%2C%20args.Y%20%2B%2050%5D%3B%0D%0A%20%20%20%20%20%20const%20gradientColor%20%3D%20%60radial-gradient(circle%20at%20%24%7BnewPos%5B0%5D%7D%25%20%24%7BnewPos%5B1%5D%7D%25%2C%20%24%7Bargs.COLOR2%7D%2C%20%24%7Bargs.COLOR1%7D)%60%3B%0D%0A%20%20%20%20%20%20if%20(newColorType%5B0%5D%20!%3D%3D%20%22button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this%5BnewColorType%5D%5B0%5D%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BnewColorType%5B1%5D%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setBorderRadius(args)%20%7B%0D%0A%20%20%20%20%20%20const%20element%20%3D%20args.ELEMENT%3B%0D%0A%20%20%20%20%20%20let%20value%20%3D%20args.VALUE%3B%0D%0A%20%20%20%20%20%20if%20(value%20%3C%200)%20%7B%0D%0A%20%20%20%20%20%20%20%20value%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20switch%20(element)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Textbox%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayBorderRadius%5B0%5D%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Box%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayBorderRadius%5B1%5D%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Button%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayBorderRadius%5B2%5D%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.buttonJSON%5Belement%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5Belement%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.borderRadius%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setShadow(args)%20%7B%0D%0A%20%20%20%20%20%20const%20shadow%20%3D%20args.SHADOW%3B%0D%0A%20%20%20%20%20%20switch%20(shadow)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Size%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B2%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22X%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B0%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Y%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B1%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Opacity%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B3%5D%20%3D%20args.AMT%20%2F%20100%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setImage(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Textbox%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.overlayImage%5B0%5D%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Input%20Box%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.overlayImage%5B1%5D%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Dropdown%20Button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.overlayImage%5B2%5D%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5Bargs.ELEMENT%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5Bargs.ELEMENT%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.image%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20scaleImage(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Textbox%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.imgScale%5B0%5D%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Input%20Box%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.imgScale%5B1%5D%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Dropdown%20Button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.imgScale%5B2%5D%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5Bargs.ELEMENT%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5Bargs.ELEMENT%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.imgScale%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setDirection(args)%20%7B%0D%0A%20%20%20%20%20%20const%20ROTATE%20%3D%20args.ROTATE%3B%0D%0A%20%20%20%20%20%20this.Rotation%20%3D%20Scratch.Cast.toNumber(ROTATE)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changeDirection(args)%20%7B%0D%0A%20%20%20%20%20%20const%20ROTATE%20%3D%20args.ROTATE%3B%0D%0A%20%20%20%20%20%20this.Rotation%20%3D%20this.Rotation%20%2B%20Scratch.Cast.toNumber(ROTATE)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20reportDirection()%20%7B%0D%0A%20%20%20%20%20%20return%20this.Rotation%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setPrePosition(args)%20%7B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setPosition(args)%20%7B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlayPos(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changePosition(args)%20%7B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%20this.textBoxX%20%2B%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%20this.textBoxY%20%2B%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlayPos(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getXpos()%20%7B%0D%0A%20%20%20%20%20%20return%20this.textBoxX%20*%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getYpos()%20%7B%0D%0A%20%20%20%20%20%20return%20this.textBoxY%20*%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setFontSize(args)%20%7B%0D%0A%20%20%20%20%20%20this.fontSize%20%3D%20args.SIZE%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setTextAlignment(args)%20%7B%0D%0A%20%20%20%20%20%20this.textAlign%20%3D%20args.ALIGNMENT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setFontFamily(args)%20%7B%0D%0A%20%20%20%20%20%20this.fontFamily%20%3D%20args.FONT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setSlider(args)%20%7B%0D%0A%20%20%20%20%20%20this.sliderInfo%20%3D%20%5Bargs.MIN%2C%20args.MAX%2C%20args.DEFAULT%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setInputType(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.ACTION%20%3D%3D%3D%20%22Text%22%20%7C%7C%20args.ACTION%20%3D%3D%3D%20%20%22None%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isInputEnabled%20%3D%20args.ACTION%20%3D%3D%3D%20%22Text%22%20%3F%20%22Enabled%22%20%3A%20%22Disabled%22%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isInputEnabled%20%3D%20args.ACTION%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20enableShadow(args)%20%7B%0D%0A%20%20%20%20%20%20this.shadowEnabled%20%3D%20args.ACTION%20%3D%3D%3D%20%22Enabled%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setButtonText(args)%20%7B%0D%0A%20%20%20%20%20%20const%20buttonMenu%20%3D%20args.BUTTON_MENU%3B%0D%0A%20%20%20%20%20%20const%20text%20%3D%20args.TEXT%3B%0D%0A%20%20%20%20%20%20if%20(buttonMenu%20%3D%3D%3D%20%22Dropdown%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.DropdownText%20%3D%20text%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5BbuttonMenu%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonMenu%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.name%20%3D%20text%3B%0D%0A%20%20%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setDropdown(args)%20%7B%0D%0A%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20this.optionList%20%3D%20JSON.parse(args.DROPDOWN)%3B%0D%0A%20%20%20%20%20%20%7D%20catch%20(error)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.optionList%20%3D%20%5B%22Undefined%20Array%20Error%22%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20removeAskBoxes()%20%7B%0D%0A%20%20%20%20%20%20const%20overlaysToRemove%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(overlay%20%26%26%20overlay.parentNode)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.parentNode.removeChild(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlaysToRemove.push(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20if%20(this.askBoxPromises)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20index%20%3D%20this.activeOverlays.indexOf(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(index%20!%3D%3D%20-1)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.askBoxPromises%5Bindex%5D.resolve(%22removed%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20this.askBoxPromises%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.activeOverlays%20%3D%20this.activeOverlays.filter(%0D%0A%20%20%20%20%20%20%20%20(overlay)%20%3D%3E%20!overlaysToRemove.includes(overlay)%0D%0A%20%20%20%20%20%20)%3B%0D%0A%20%20%20%20%20%20this.activeUI%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.askBoxInfo%5B0%5D%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.userInput%20%3D%20%22%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20askAndWaitForInput(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%20this.askBoxInfo%5B1%5D%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20this.askAndWait(args).then(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20this.getUserInput()%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20askAndWait(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%20this.askBoxInfo%5B1%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20question%20%3D%20args.question%3B%0D%0A%20%20%20%20%20%20%20%20this.isWaitingForInput%20%3D%20true%3B%0D%0A%20%20%20%20%20%20%20%20this.userInput%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20this.askBoxInfo%5B0%5D%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20let%20selectedOptions%20%3D%20%5B%5D%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20return%20new%20Promise((resolve)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20askBoxPromise%20%3D%20%7B%20resolve%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.askBoxPromises.push(askBoxPromise)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20overlay%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.classList.add(%22ask-box%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.position%20%3D%20%22fixed%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.zIndex%20%3D%20%229999%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.padding%20%3D%20%2215px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.fontSize%20%3D%20this.fontSize%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.width%20%3D%20'100%25'%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.height%20%3D%20'100%25'%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.position%20%3D%20%22absolute%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.top%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.left%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.zIndex%20%3D%20%22-1%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.forceInput%20!%3D%3D%20%22Disabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20overlayInput%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.forceInput%20%3D%3D%3D%20%22Enter%20Key%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlayInput%20%3D%20%22Enter%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.forceInput%20%3D%3D%3D%20%22Shift%20%2B%20Enter%20Key%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlayInput%20%3D%20%22ShiftEnter%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlayInput%20%3D%20this.forceInput%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20handleKeydown%20%3D%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(overlayInput%20%3D%3D%3D%20%22ShiftEnter%22%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.shiftKey%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.key%20%3D%3D%3D%20%22Enter%22)%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.key%20%3D%3D%3D%20overlayInput%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20inputField.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.closeOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20observer%20%3D%20new%20MutationObserver((mutationsList)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(const%20mutation%20of%20mutationsList)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mutation.type%20%3D%3D%3D%20%22childList%22%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!document.contains(overlay)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22keydown%22%2C%20handleKeydown)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20observer.disconnect()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20observer.observe(document.body%2C%20%7B%20childList%3A%20true%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22keydown%22%2C%20handleKeydown)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20questionText%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.classList.add(%22question%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.style.fontSize%20%3D%20this.fontSize%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.style.marginBottom%20%3D%20%2210px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.textContent%20%3D%20question%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20inputField%20%3D%20document.createElement(%22input%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.display%20%3D%20this.isInputEnabled%20%3F%20%22block%22%20%3A%20%22none%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.width%20%3D%20%2294%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.padding%20%3D%20%225px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.fontSize%20%3D%20this.fontSize%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.margin%20%3D%20%220%20auto%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20buttonContainer%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20buttonContainer.classList.add(%22button-container%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20for%20(const%20buttonName%20in%20this.buttonJSON)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonName%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(buttonInfo.name.includes(%22%3Cnewline%3E%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20lineBreak%20%3D%20document.createElement(%22br%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonContainer.appendChild(lineBreak)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20button%20%3D%20document.createElement(%22button%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.marginTop%20%3D%20%2210px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.marginRight%20%3D%20%225px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.padding%20%3D%20%225px%2010px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.border%20%3D%20%22none%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.cursor%20%3D%20%22pointer%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.textContent%20%3D%20buttonInfo.name%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.display%20%3D%20%22inline-block%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Disabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20buttonInfo.name%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20inputField.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.closeOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonContainer.appendChild(button)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20dropdown%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdown.className%20%3D%20%22dropdown%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20dropdownButton%20%3D%20document.createElement(%22button%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.className%20%3D%20%22dropbtn%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.textContent%20%3D%20this.DropdownText%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.style.padding%20%3D%20%225px%2010px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.style.border%20%3D%20%22none%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20dropdownContent%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.id%20%3D%20%22myDropdown%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.className%20%3D%20%22dropdown-content%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.style.display%20%3D%20%22none%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20optionLabels%20%3D%20this.optionList%3B%0D%0A%20%20%20%20%20%20%20%20%20%20optionLabels.forEach((label%2C%20index)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20optionLabel%20%3D%20document.createElement(%22label%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.style.color%20%3D%20this.questionColor%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.textContent%20%3D%20label%20%2B%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20optionRadio%20%3D%20document.createElement(%22input%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.type%20%3D%20this.isInputEnabled%20%3D%3D%3D%20%22Dropdown%22%20%3F%20%22radio%22%20%3A%20%22checkbox%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.name%20%3D%20%22dropdownOptions%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.value%20%3D%20index%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.classList.add(%22dropdown-radio%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Multi-Select%20Dropdown%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(selectedOptions.includes(label))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20selectedOptions%20%3D%20selectedOptions.filter(item%20%3D%3E%20item%20!%3D%3D%20label)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20selectedOptions.push(label)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(selectedOptions.length%20%3E%200)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20%22%5B%5C%22%22%20%2B%20selectedOptions.join(%22%5C%22%2C%20%5C%22%22)%20%2B%20%22%5C%22%5D%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20label%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(optionRadio)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20dropdownContent.appendChild(optionLabel)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(dropdown)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20dropdownContent.style.display%20%3D%20this.isDropdownOpen%20%3F%20%22none%22%20%3A%20%22block%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.isDropdownOpen%20%3D%20!this.isDropdownOpen%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20sliderContainer%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20sliderContainer.classList.add(%22slider-container%22)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20slider%20%3D%20document.createElement(%22input%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled.includes(%22Vertical%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20slider.style.transform%20%3D%20%22rotate(270deg)%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20slider.type%20%3D%20%22range%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.min%20%3D%20this.sliderInfo%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.max%20%3D%20this.sliderInfo%5B1%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.value%20%3D%20this.sliderInfo%5B2%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled.includes(%22Vertical%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%203%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(slider)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%204%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(slider)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20const%20valueDisplay%20%3D%20document.createElement(%22span%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.classList.add(%22slider-value%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(valueDisplay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.style.color%20%3D%20this.questionColor%3B%0D%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.textContent%20%3D%20slider.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.addEventListener(%22input%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20valueDisplay.textContent%20%3D%20slider.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20valueDisplay.textContent%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(questionText)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20!%3D%3D%20%22Disabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Enabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(inputField)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.isInputEnabled.includes(%22Dropdown%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(dropdownButton)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(dropdownContent)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(sliderContainer)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(valueDisplay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(buttonContainer)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(overlayImageContainer)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.focus()%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20resizeHandler%20%3D%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.textBoxX%20!%3D%3D%20null%20%26%26%20this.textBoxY%20!%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20this.activeOverlays.push(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.activeUI.push(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20overlay%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button%3A%20buttonContainer%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20dropdown%3A%20dropdownButton%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20input%3A%20inputField%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22fullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22webkitfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22mozfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22MSFullscreenChange%22%2C%20resizeHandler)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20overlayParent%20%3D%20overlay.parentNode%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20observer%20%3D%20new%20MutationObserver((mutationsList)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(const%20mutation%20of%20mutationsList)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mutation.type%20%3D%3D%3D%20%22childList%22%20%26%26%20mutation.removedNodes.contains(overlay))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22fullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22webkitfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22mozfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22MSFullscreenChange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20observer.disconnect()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20observer.observe(overlayParent%2C%20%7B%20childList%3A%20true%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.focus()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20closeOverlay(overlay)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%202)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isWaitingForInput%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.isDropdownOpen%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.askBoxInfo%5B0%5D--%3B%0D%0A%20%20%20%20%20%20const%20index%20%3D%20this.activeOverlays.indexOf(overlay)%3B%0D%0A%20%20%20%20%20%20if%20(index%20!%3D%3D%20-1)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.activeOverlays.splice(index%2C%201)%3B%0D%0A%20%20%20%20%20%20%20%20this.askBoxPromises.splice(index%2C%201)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20delete%20this.activeUI%5Boverlay%5D%3B%0D%0A%20%20%20%20%20%20setTimeout(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20document.body.removeChild(overlay)%3B%0D%0A%20%20%20%20%20%20%7D%2C%20this.Timeout%20*%201000)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setButton(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.BUTTON%20%3D%3D%3D%20%22add%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.buttonJSON%5Bargs.NAME%5D%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%230074D9%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20textColor%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20name%3A%20args.NAME%2C%0D%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20imgScale%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20delete%20this.buttonJSON%5Bargs.NAME%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isWaitingInput()%20%7B%0D%0A%20%20%20%20%20%20return%20this.isWaitingForInput%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isDropdown()%20%7B%0D%0A%20%20%20%20%20%20return%20this.isDropdownOpen%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setMaxBoxCount(args)%20%7B%0D%0A%20%20%20%20%20%20this.askBoxInfo%5B1%5D%20%3D%20args.MAX%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setTimeout(args)%20%7B%0D%0A%20%20%20%20%20%20this.Timeout%20%3D%20args.TIME%3B%0D%0A%20%20%20%20%20%20this.Condition%20%3D%20args.CONDITION%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20reportTimeout()%20%7B%0D%0A%20%20%20%20%20%20return%20this.Timeout%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getUserInput()%20%7B%0D%0A%20%20%20%20%20%20return%20this.userInput%20%3D%3D%3D%20null%20%3F%20%22%22%20%3A%20this.userInput%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getBoxInfo(args)%20%7B%0D%0A%20%20%20%20%20%20return%20this.askBoxInfo%5Bargs.INFO%20%3D%3D%3D%20%22count%22%20%3F%200%20%3A%201%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setSubmitEvent(args)%20%7B%0D%0A%20%20%20%20%20%20this.forceInput%20%3D%20args.ENTER%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20BetterInputSP())%3B%0D%0A%7D)(Scratch)%3B%0D%0A%20%7D)(Scratch)%3B"]) {
+ for (const extension of ["data:text/javascript;base64,Ly8gTmFtZTogVGVybWluYWwKLy8gSUQ6IEJyMHRUZXJtaW5hbAovLyBEZXNjcmlwdGlvbjogTWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLiBPcGVuIGEgVGVybWluYWwgYW5kIGNyZWF0ZSBjb21tYW5kcwovLyBCeTogQnIwdGNyYWZ0IDx3d3cuQnIwdGNyYWZ0LmRlPgoKKGZ1bmN0aW9uIChTY3JhdGNoKSB7CiAgInVzZSBzdHJpY3QiCgogIGNvbnN0IG1lbnVJY29uVVJJID0gImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjJaWEp6YVc5dVBTSXhMakVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGRwWkhSb1BTSXhNekl1TWpreU1EY2lJR2hsYVdkb2REMGlNVE15TGpRd09UUXpJaUIyYVdWM1FtOTRQU0l3TERBc01UTXlMakk1TWpBM0xERXpNaTQwTURrME15SStQR2NnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb0xURTNNeTQ0TlRNNU5pd3RNVEV6TGpjNU5USTVLU0krUEdjZ1pHRjBZUzF3WVhCbGNpMWtZWFJoUFNKN0puRjFiM1E3YVhOUVlXbHVkR2x1WjB4aGVXVnlKbkYxYjNRN09uUnlkV1Y5SWlCbWFXeHNMWEoxYkdVOUltNXZibnBsY204aUlITjBjbTlyWlQwaWJtOXVaU0lnYzNSeWIydGxMV3hwYm1WallYQTlJbUoxZEhRaUlITjBjbTlyWlMxc2FXNWxhbTlwYmowaWJXbDBaWElpSUhOMGNtOXJaUzF0YVhSbGNteHBiV2wwUFNJeE1DSWdjM1J5YjJ0bExXUmhjMmhoY25KaGVUMGlJaUJ6ZEhKdmEyVXRaR0Z6YUc5bVpuTmxkRDBpTUNJZ2MzUjViR1U5SW0xcGVDMWliR1Z1WkMxdGIyUmxPaUJ1YjNKdFlXd2lQanh3WVhSb0lHUTlJazB6TURZdU1UUTJNRFFzTVRnd1l6QXNNell1TlRZek56Y2dMVEk1TGpZeE5EVXhMRFkyTGpJd05EY3hJQzAyTmk0eE5EWXdOQ3cyTmk0eU1EUTNNV010TXpZdU5UTXhNellzTUNBdE5qWXVNVFEyTURRc0xUSTVMalkwTURrMElDMDJOaTR4TkRZd05Dd3ROall1TWpBME56RmpNQ3d0TXpZdU5UWXpOemNnTWprdU5qRTBOamdzTFRZMkxqSXdORGN4SURZMkxqRTBOakEwTEMwMk5pNHlNRFEzTVdNek5pNDFNekV6Tml3d0lEWTJMakUwTmpBMExESTVMalkwTURrMElEWTJMakUwTmpBMExEWTJMakl3TkRjeGVpSWdabWxzYkQwaUl6azBPVFE1TkNJZ2MzUnliMnRsTFhkcFpIUm9QU0l3SWk4K1BIQmhkR2dnWkQwaVRURTRPUzR6TURneE5pd3lNVFF1T1RBd05EWjJMVEUzTGpNeU56QXliREUzTGpNd01qQTVMQzB4Tnk0eE5qQXpiQzB4Tnk0ek1ESXdPU3d0TVRndU5ETTJOekoyTFRFMkxqZzNOalUyYkRNMUxqUTFOVEEzTERNMExqWXlPVEk0ZWlJZ1ptbHNiRDBpSXpFMk5UUXhZaUlnYzNSeWIydGxMWGRwWkhSb1BTSXdJaTgrUEhCaGRHZ2daRDBpVFRJeU1TNDNNVGMzTERJeE5DNHdOakUzWXkwd0xqVXpOVGtzTUNBdE1DNDVOekF5TkN3dE1DNDBNelF6TkNBdE1DNDVOekF5TkN3dE1DNDVOekF5TkhZdE1UTXVORGs1TlRoak1Dd3RNQzQxTXpVNUlEQXVORE0wTXpRc0xUQXVPVGN3TWpRZ01DNDVOekF5TkN3dE1DNDVOekF5TkdnMk9DNHdNRE01WXpBdU5UTTFPU3d3SURBdU9UY3dNalFzTUM0ME16UXpOQ0F3TGprM01ESTBMREF1T1Rjd01qUjJNVE11TkRrNU5UaGpNQ3d3TGpVek5Ua2dMVEF1TkRNME16UXNNQzQ1TnpBeU5DQXRNQzQ1TnpBeU5Dd3dMamszTURJMGVpSWdabWxzYkQwaUl6RTJOVFF4WWlJZ2MzUnliMnRsTFhkcFpIUm9QU0l3SWk4K1BIUmxlSFFnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb01qSXpMakUxTXpRNUxESXhNQzQzTmpjeU5Ta2djMk5oYkdVb01DNHpPRE0xT0N3d0xqTTRNelU0S1NJZ1ptOXVkQzF6YVhwbFBTSTBNQ0lnZUcxc09uTndZV05sUFNKd2NtVnpaWEoyWlNJZ1ptbHNiRDBpSXpJeE4yUXlPQ0lnWm1sc2JDMXlkV3hsUFNKdWIyNTZaWEp2SWlCemRISnZhMlU5SW01dmJtVWlJSE4wY205clpTMTNhV1IwYUQwaU1TSWdjM1J5YjJ0bExXeHBibVZqWVhBOUltSjFkSFFpSUhOMGNtOXJaUzFzYVc1bGFtOXBiajBpYldsMFpYSWlJSE4wY205clpTMXRhWFJsY214cGJXbDBQU0l4TUNJZ2MzUnliMnRsTFdSaGMyaGhjbkpoZVQwaUlpQnpkSEp2YTJVdFpHRnphRzltWm5ObGREMGlNQ0lnWm05dWRDMW1ZVzFwYkhrOUlsTmhibk1nVTJWeWFXWWlJR1p2Ym5RdGQyVnBaMmgwUFNKdWIzSnRZV3dpSUhSbGVIUXRZVzVqYUc5eVBTSnpkR0Z5ZENJZ2MzUjViR1U5SW0xcGVDMWliR1Z1WkMxdGIyUmxPaUJ1YjNKdFlXd2lQangwYzNCaGJpQjRQU0l3SWlCa2VUMGlNQ0krUW5Jd2RHTnlZV1owUEM5MGMzQmhiajQ4TDNSbGVIUStQQzluUGp3dlp6NDhMM04yWno0OElTMHRjbTkwWVhScGIyNURaVzUwWlhJNk5qWXVNVFEyTURNMk5qWTJOalkyT1RZNk5qWXVNakEwTnpFek1UWTRNRGd4TWpRdExUND0iOwogIGNvbnN0IHVybCA9ICJodHRwczovL2V4YW1wbGUuY29tIjsKICBjb25zdCBOb3JtYWxNb2RlID0gZmFsc2U7CiAgdmFyIEFwcElEID0gIiI7CiAgdmFyIERlZmF1bHRDb2xvdXIgPSAiIzAwMDAwMCI7CiAgdmFyIERlZmF1bHRXYXJuID0gIiNlMmRhMDAiOwogIHZhciBEZWZhdWx0RXJyb3IgPSAiI2UwMDAwMCI7CiAgdmFyIEVycm9yID0gImZhbHNlIjsKCiAgaWYgKCFTY3JhdGNoLmV4dGVuc2lvbnMudW5zYW5kYm94ZWQpIHsKICAgIHRocm93IG5ldyBFcnJvcignVGhlIHRlcm1pbmFsIGV4dGVuc2lvbiBydW5zIGJldHRlciB3aGVuIHVuc2FuZGJveGVkJyk7CiAgfQogIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ0FQUElEJywgJycpOwoKY2xhc3MgVGVybWluYWwgCnsKICBnZXRJbmZvKCkgCiAgewogICAgcmV0dXJuIHsKICAgICAgaWQ6ICdCcjB0VGVybWluYWwnLAogICAgICBuYW1lOiAnVGVybWluYWwnLAogICAgICBtZW51SWNvblVSSTogbWVudUljb25VUkksCiAgICAgIGJsb2NrSWNvblVSSTogbWVudUljb25VUkksCiAgICAgIGNvbG9yMTogJyNiM2IzYjMnLAogICAgICBjb2xvcjI6ICcjODY4Njg2JywKICAgICAgY29sb3IzOiAnIzVhNWE1YScsCiAgICAgIGJsb2NrczogCiAgICAgIFsKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdTZXRBcHBJRCcsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnc2V0IEFwcElEIHRvIFtJRF0nLAogICAgICAgICAgYXJndW1lbnRzOiAKICAgICAgICAgIHsKICAgICAgICAgICAgSUQ6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICd0ZXJtaW5hbCcsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnW1NIT1ddIHRlcm1pbmFsJywKICAgICAgICAgIGFyZ3VtZW50czogCiAgICAgICAgICB7CiAgICAgICAgICAgIFNIT1c6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICAgIG1lbnU6ICdTSE9XJwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdsb2cnLAogICAgICAgICAgYmxvY2tUeXBlOiBTY3JhdGNoLkJsb2NrVHlwZS5DT01NQU5ELAogICAgICAgICAgdGV4dDogJ2xvZyBbTE9HXScsCiAgICAgICAgICBhcmd1bWVudHM6IAogICAgICAgICAgewogICAgICAgICAgICBMT0c6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICd3YXJuJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICd3YXJuIFtXQVJOXScsCiAgICAgICAgICBhcmd1bWVudHM6IAogICAgICAgICAgewogICAgICAgICAgICBXQVJOOiAKICAgICAgICAgICAgewogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLlNUUklORywKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgb3Bjb2RlOiAnZXJyb3InLAogICAgICAgICAgYmxvY2tUeXBlOiBTY3JhdGNoLkJsb2NrVHlwZS5DT01NQU5ELAogICAgICAgICAgdGV4dDogJ2Vycm9yIFtFUlJPUl0nLAogICAgICAgICAgYXJndW1lbnRzOiAKICAgICAgICAgIHsKICAgICAgICAgICAgRVJST1I6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdXcml0aW5nQ29sb3VyJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdzZXQgZGVmYXVsdCBmb250IGNvbG9yIG9uIFtDT0xPVVJdJywKICAgICAgICAgIGFyZ3VtZW50czogCiAgICAgICAgICB7CiAgICAgICAgICAgIENPTE9VUjogCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB0eXBlOiBTY3JhdGNoLkFyZ3VtZW50VHlwZS5DT0xPUiwKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgb3Bjb2RlOiAnQ29sb3VyTG9nJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdMb2cgW0xPR10gd2l0aCBjb2xvdXIgW0NPTE9VUl0nLAogICAgICAgICAgYXJndW1lbnRzOiAKICAgICAgICAgIHsKICAgICAgICAgICAgTE9HOiAKICAgICAgICAgICAgewogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLlNUUklORywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ09MT1VSOiAKICAgICAgICAgICAgewogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLkNPTE9SLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdjbGVhcicsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnY2xlYXInLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgb3Bjb2RlOiAnV2hlbkNvbW1hbmQnLAogICAgICAgICAgYmxvY2tUeXBlOiBTY3JhdGNoLkJsb2NrVHlwZS5IQVQsCiAgICAgICAgICB0ZXh0OiAnd2hlbiBbQ09NTUFORF0gd2FzIGVudGVyZWQgYXMgYSBjb21tYW5kJywKICAgICAgICAgIGlzRWRnZUFjdGl2YXRlZDogdHJ1ZSwKICAgICAgICAgIGFyZ3VtZW50czogCiAgICAgICAgICB7CiAgICAgICAgICAgIENPTU1BTkQ6IAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdDb21tYW5kJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuUkVQT1JURVIsCiAgICAgICAgICB0ZXh0OiAnY29tbWFuZCcsCiAgICAgICAgICBpc0VkZ2VBY3RpdmF0ZWQ6IHRydWUKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIG9wY29kZTogJ0xvZycsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLlJFUE9SVEVSLAogICAgICAgICAgdGV4dDogJ0xvZycsCiAgICAgICAgICBpc0VkZ2VBY3RpdmF0ZWQ6IHRydWUsCiAgICAgICAgICBoaWRlRnJvbVBhbGV0dGU6IE5vcm1hbE1vZGUsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdTZXRDb21tYW5kJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdzZXQgQ29tbWFuZCBvbiBbVEVYVF0nLAogICAgICAgICAgaXNFZGdlQWN0aXZhdGVkOiB0cnVlLAogICAgICAgICAgaGlkZUZyb21QYWxldHRlOiBOb3JtYWxNb2RlLAogICAgICAgICAgYXJndW1lbnRzOgogICAgICAgICAgewogICAgICAgICAgICBURVhUOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICBvcGNvZGU6ICdjbGVhckxvZycsCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsCiAgICAgICAgICB0ZXh0OiAnY2xlYXIgTG9nJywKICAgICAgICAgIGlzRWRnZUFjdGl2YXRlZDogdHJ1ZSwKICAgICAgICAgIGhpZGVGcm9tUGFsZXR0ZTogTm9ybWFsTW9kZSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgIG9wY29kZTogJ2NsZWFyTG9nJywKICAgICAgICAgIGJsb2NrVHlwZTogU2NyYXRjaC5CbG9ja1R5cGUuQ09NTUFORCwKICAgICAgICAgIHRleHQ6ICdjbGVhciBMb2cnLAogICAgICAgICAgaXNFZGdlQWN0aXZhdGVkOiB0cnVlLAogICAgICAgICAgaGlkZUZyb21QYWxldHRlOiBOb3JtYWxNb2RlLAogICAgICAgIH0KCiAgICAgIF0sCiAgICAgIG1lbnVzOiAKICAgICAgewogICAgICAgIFNIT1c6IAogICAgICAgIHsKICAgICAgICAgIGFjY2VwdFJlcG9ydGVyczogdHJ1ZSwKICAgICAgICAgIGl0ZW1zOiAKICAgICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgIHRleHQ6J3Nob3cnLAogICAgICAgICAgICAgIHZhbHVlOidzaG93JwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdGV4dDogJ2hpZGUnLCAKICAgICAgICAgICAgICB2YWx1ZTogJ2hpZGUnCiAgICAgICAgICAgIH0KICAgICAgICAgIF0KICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfQoKCiAgU2V0QXBwSUQgKGFyZ3MpCiAgewogICAgQXBwSUQgPSBhcmdzLklEOwogIH0KCiAgdGVybWluYWwgKGFyZ3MpCiAgewogICAgCiAgICBpZiAoYXJncy5TSE9XID09ICJoaWRlIikKICAgIHsKICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oIlRlcm1pbmFsX1ByaXZhdGUiICsgQXBwSUQsICJjbG9zZSIpCiAgICB9IAogICAgZWxzZQogICAgewogICAgICBpZiAoYXJncy5TSE9XID09ICJzaG93IikKICAgICAgewogICAgICAgIFNjcmF0Y2gub3BlbldpbmRvdyh1cmwsIndpZHRoPTQwMCxoZWlnaHQ9NDAwIik7CiAgICAgIH0gCiAgICB9CiAgICByZXR1cm47CiAgfQoKICBsb2cgKGFyZ3MpCiAgewogICAgCiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiVGVybWluYWxfTG9nIiArIEFwcElELCAieyIgKyBEZWZhdWx0Q29sb3VyICsgIn0iICsgYXJncy5MT0cpOwogICAgcmV0dXJuOwogIH0KCiAgd2FybiAoYXJncykKICB7CiAgIAogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1Rlcm1pbmFsX0xvZycgKyBBcHBJRCwgInsiICsgRGVmYXVsdFdhcm4gKyAifeKAvCIgKyBhcmdzLldBUk4pOwogICAgcmV0dXJuOwogIH0KCiAgZXJyb3IgKGFyZ3MpCiAgewogICAgCiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnVGVybWluYWxfTG9nJyArIEFwcElELCAieyIgKyBEZWZhdWx0RXJyb3IgKyAifeKaoCIgKyBhcmdzLkVSUk9SKTsKICAgIHJldHVybjsKICB9CgogIFdyaXRpbmdDb2xvdXIgKGFyZ3MpCiAgewogICAgCiAgICBEZWZhdWx0Q29sb3VyID0gYXJncy5DT0xPVVI7CiAgICByZXR1cm47CiAgfQoKICBDb2xvdXJMb2cgKGFyZ3MpCiAgewogIAogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1Rlcm1pbmFsX0xvZycgKyBBcHBJRCwgInsiICsgYXJncy5DT0xPVVIgKyAifSIgKyBhcmdzLkxPRyk7CiAgICByZXR1cm47CiAgfQoKICBjbGVhciAoYXJncykKICB7CiAgICAKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUZXJtaW5hbF9wcml2YXRlJyArIEFwcElELCAiY2xlYXIiKTsKICAgIHJldHVybjsKICB9CgogIFdoZW5Db21tYW5kIChhcmdzKQogIHsKICAgIAogICAgcmV0dXJuIGFyZ3MuQ09NTUFORCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdUZXJtaW5hbF9Db21tYW5kJyArIEFwcElEKTsKICB9CgogIENvbW1hbmQgKGFyZ3MpCiAgewogICAgCiAgICAKICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnVGVybWluYWxfQ29tbWFuZCcgKyBBcHBJRCk7CiAgfQoKICBMb2cgKGFyZ3MpCiAgewogICAgCiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ1Rlcm1pbmFsX0xvZycgKyBBcHBJRCk7CiAgfQoKICBTZXRDb21tYW5kIChhcmdzKQogIHsKICAgIAogICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ1Rlcm1pbmFsX0NvbW1hbmQnICsgQXBwSUQsIGFyZ3MuVEVYVCk7CiAgICByZXR1cm4gOwogIH0KCiAgY2xlYXJMb2cgKGFyZ3MpCiAgewogICAKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdUZXJtaW5hbF9Mb2cnICsgQXBwSUQsICIiKTsKICAgIHJldHVybiA7CiAgfQogIAp9CiAKClNjcmF0Y2guZXh0ZW5zaW9ucy5yZWdpc3RlcihuZXcgVGVybWluYWwoKSk7Cn0pKFNjcmF0Y2gpOw==","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Search%20Params%0A%2F%2F%20ID%3A%20zxmushroom63searchparams%0A%2F%2F%20Description%3A%20Interact%20with%20URL%20search%20parameters%3A%20the%20part%20of%20the%20URL%20after%20a%20question%20mark.%0A%2F%2F%20By%3A%20ZXMushroom63%0A%0A(function%20(Scratch)%20%7B%0A%20%20%22use%20strict%22%3B%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0A%20%20%20%20throw%20new%20Error(%22SearchParams%20must%20be%20run%20unsandboxed.%22)%3B%0A%20%20%7D%0A%0A%20%20class%20SearchApi%20%7B%0A%20%20%20%20getInfo()%20%7B%0A%20%20%20%20%20%20return%20%7B%0A%20%20%20%20%20%20%20%20id%3A%20%22zxmushroom63searchparams%22%2C%0A%20%20%20%20%20%20%20%20name%3A%20%22Search%20Params%22%2C%0A%20%20%20%20%20%20%20%20color1%3A%20%22%23b4b4b4%22%2C%0A%20%20%20%20%20%20%20%20color2%3A%20%22%239c9c9c%22%2C%0A%20%20%20%20%20%20%20%20color3%3A%20%22%23646464%22%2C%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22searchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22value%20of%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22occurencesofsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22occurences%20of%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22indexedsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22index%20%5BI%5D%20of%20search%20parameters%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20I%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20search%20parameter%20%5BID%5D%20to%20%5BVAL%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2215%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22deletesearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22delete%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22appendsearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22append%20search%20parameter%20%5BID%5D%20with%20value%20%5BVAL%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VAL%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%2215%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22hassearchparam%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22has%20search%20parameter%20%5BID%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ID%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22x%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22searchparamslength%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22length%20of%20search%20parameters%22%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22searchparamatindex%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22search%20parameter%20%5BPARAM%5D%20at%20index%20%5BI%5D%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20PARAM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22PARAM%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20I%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20PARAM%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22value%22%2C%20%22name%22%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20searchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20return%20new%20URLSearchParams(location.search).get(ID.toString())%20%7C%7C%20%22%22%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20occurencesofsearchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20new%20URLSearchParams(location.search).getAll(ID.toString()).length%20%7C%7C%200%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20indexedsearchparam(%7B%20ID%2C%20I%20%7D)%20%7B%0A%20%20%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20new%20URLSearchParams(location.search).getAll(ID.toString())%5B%0A%20%20%20%20%20%20%20%20%20%20parseInt(I)%20-%201%0A%20%20%20%20%20%20%20%20%5D%20%7C%7C%20%22%22%0A%20%20%20%20%20%20)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20setsearchparam(%7B%20ID%2C%20VAL%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20s.set(ID.toString()%2C%20VAL.toString())%3B%0A%20%20%20%20%20%20history.replaceState(%22%22%2C%20%22%22%2C%20%22%3F%22%20%2B%20s.toString())%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20searchparamslength()%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20%2F%2F%20%40ts-ignore%0A%20%20%20%20%20%20return%20typeof%20s.size%20!%3D%3D%20%22object%22%20%3F%20s.size%20%3A%200%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20deletesearchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20s.delete(ID.toString())%3B%0A%20%20%20%20%20%20history.replaceState(%22%22%2C%20%22%22%2C%20%22%3F%22%20%2B%20s.toString())%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20appendsearchparam(%7B%20ID%2C%20VAL%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20s.append(ID.toString()%2C%20VAL.toString())%3B%0A%20%20%20%20%20%20history.replaceState(%22%22%2C%20%22%22%2C%20%22%3F%22%20%2B%20s.toString())%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20hassearchparam(%7B%20ID%20%7D)%20%7B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20return%20s.has(ID.toString())%20%7C%7C%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20searchparamatindex(%7B%20PARAM%2C%20I%20%7D)%20%7B%0A%20%20%20%20%20%20var%20index%20%3D%20parseInt(I)%20-%201%20%7C%7C%200%3B%0A%20%20%20%20%20%20index%20%3D%20Math.max(0%2C%20index)%3B%0A%20%20%20%20%20%20var%20s%20%3D%20new%20URLSearchParams(location.search)%3B%0A%20%20%20%20%20%20var%20values%20%3D%20PARAM.toString()%20%3D%3D%3D%20%22value%22%20%3F%20s.values()%20%3A%20s.keys()%3B%0A%20%20%20%20%20%20var%20i%20%3D%200%3B%0A%20%20%20%20%20%20for%20(const%20value%20of%20values)%20%7B%0A%20%20%20%20%20%20%20%20if%20(i%20%3D%3D%3D%20index)%20%7B%0A%20%20%20%20%20%20%20%20%20%20return%20value%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20i%2B%2B%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20Scratch.extensions.register(new%20SearchApi())%3B%0A%7D)(Scratch)%3B%0A%20%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Hyper%20Sense%0D%0A%2F%2F%20ID%3A%20HyperSenseSP%0D%0A%2F%2F%20Description%3A%20Cool%20New%20Sensing%20Blocks%0D%0A%0D%0A%2F%2F%20Version%201.8.2%0D%0A%0D%0A(function%20(Scratch)%20%7B%0D%0A%20%20%22use%20strict%22%3B%0D%0A%0D%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0D%0A%20%20%20%20throw%20new%20Error(%22Hyper%20Sense%20must%20run%20unsandboxed%22)%3B%0D%0A%20%20%7D%0D%0A%0D%0A%20%20const%20menuIconURI%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzguMjE0IiBoZWlnaHQ9IjEzOC4yMTQiIHZpZXdCb3g9IjAsMCwxMzguMjE0LDEzOC4yMTQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xNzAuODkzLC0xMTAuODkzKSI%2BPGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTcwLjg5MywxODBjMCwtMzguMTY2NzQgMzAuOTQwMjYsLTY5LjEwNyA2OS4xMDcsLTY5LjEwN2MzOC4xNjY3NCwwIDY5LjEwNywzMC45NDAyNiA2OS4xMDcsNjkuMTA3YzAsMzguMTY2NzQgLTMwLjk0MDI2LDY5LjEwNyAtNjkuMTA3LDY5LjEwN2MtMzguMTY2NzQsMCAtNjkuMTA3LC0zMC45NDAyNiAtNjkuMTA3LC02OS4xMDd6IiBmaWxsPSIjNWNiMWQ2IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0yNzMuNTY4MTMsMjE2LjIzNjU5Yy0wLjY4MjI5LDAgLTEuMzY0NTcsLTAuMjYwNzQgLTEuODg2MDYsLTAuNzgwMDZsLTY2LjU3ODkzLC02Ni41ODExYy0xLjA0MDgxLC0xLjA0MDgxIC0xLjA0MDgxLC0yLjczMTI5IDAsLTMuNzcyMWMxLjA0MDgxLC0xLjA0MDgxIDIuNzMxMjksLTEuMDQwODEgMy43NzIxLDBsNjYuNTc4OTMsNjYuNTc4OTNjMS4wNDA4MSwxLjA0MDgxIDEuMDQwODEsMi43MzEyOSAwLDMuNzcyMWMtMC41MjE0OSwwLjUxOTMyIC0xLjIwMzc4LDAuNzgyMjMgLTEuODg2MDYsMC43ODIyM3oiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTIzMy4xMDcxMSwxNTguNDM2MDZjMCw4LjEwMjY0IC02LjU2ODU5LDE0LjY3MTIzIC0xNC42NzEyMywxNC42NzEyM2MtOC4xMDI2NCwwIC0xNC42NzEyMywtNi41Njg1OSAtMTQuNjcxMjMsLTE0LjY3MTIzYzAsLTguMTAyNjQgNi41Njg1OSwtMTQuNjcxMjMgMTQuNjcxMjMsLTE0LjY3MTIzYzguMTAyNjQsMCAxNC42NzEyMyw2LjU2ODU5IDE0LjY3MTIzLDE0LjY3MTIzeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjMxLjA3MzQ3LDE4OC43MjQyNmMtNy44ODU4MywtMS44NjIwOSAtMTIuNzY5MDIsLTkuNzY0MzUgLTEwLjkwNjkyLC0xNy42NTAxN2MxLjg2MjA5LC03Ljg4NTgzIDkuNzY0MzUsLTEyLjc2OTAyIDE3LjY1MDE3LC0xMC45MDY5MmM3Ljg4NTgzLDEuODYyMDkgMTIuNzY5MDIsOS43NjQzNSAxMC45MDY5MiwxNy42NTAxN2MtMS44NjIwOSw3Ljg4NTgzIC05Ljc2NDM1LDEyLjc2OTAyIC0xNy42NTAxNywxMC45MDY5MnoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTI2NS4xMjAwMSwxOTAuNDQ2NzljMCw4LjEwMjY0IC02LjU3MDc2LDE0LjY3MzM5IC0xNC42NzMzOSwxNC42NzMzOWMtOC4xMDI2NCwwIC0xNC42NzEyMywtNi41NzA3NiAtMTQuNjcxMjMsLTE0LjY3MzM5YzAsLTguMTAyNjQgNi41Njg1OSwtMTQuNjcxMjMgMTQuNjcxMjMsLTE0LjY3MTIzYzguMTAyNjQsMCAxNC42NzMzOSw2LjU3MDc2IDE0LjY3MzM5LDE0LjY3MTIzeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjczLjU2ODEzLDIxNi4yMzY1OWMtMC42ODIyOSwwIC0xLjM2NDU3LC0wLjI2MDc0IC0xLjg4NjA2LC0wLjc4MDA2bC0xNi4zMzk5OCwtMTYuMzM5OThjLTEuMDQyOTgsLTEuMDQwODEgLTEuMDQyOTgsLTIuNzMxMjkgMCwtMy43NzIxYzEuMDQyOTgsLTEuMDQwODEgMi43MjkxMiwtMS4wNDA4MSAzLjc3MjEsMGwxNi4zMzk5OCwxNi4zMzk5OGMxLjA0MDgxLDEuMDQwODEgMS4wNDA4MSwyLjczMTI5IDAsMy43NzIxYy0wLjUyMTQ5LDAuNTE3MTQgLTEuMjAzNzgsMC43ODAwNiAtMS44ODYwNiwwLjc4MDA2eiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48ZyBmaWxsPSIjZmZmZmZmIiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMS41Ij48cGF0aCBkPSJNMTgyLjY2ODI2LDE4MGwxMi44MDY5MSwtMTIuODA2OTF2MjUuNjEzODF6Ii8%2BPHBhdGggZD0iTTI1Mi44MDY5LDEzNS40NzUxNmgtMjUuNjEzODFsMTIuODA2OSwtMTIuODA2OXoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9Ii8%2BPHBhdGggZD0iTTI5Ny4zMzE3NSwxODBsLTEyLjgwNjksMTIuODA2OXYtMjUuNjEzODF6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIvPjxwYXRoIGQ9Ik0yMjcuMTkzMSwyMjQuNTI0ODRoMjUuNjEzODFsLTEyLjgwNjksMTIuODA2OXoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9Ii8%2BPC9nPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20const%20loudnessArrayLength%20%3D%2020%3B%0D%0A%20%20let%20currentlyPressedKey%20%3D%20null%3B%0D%0A%20%20let%20keyPressTime%20%3D%200%3B%0D%0A%20%20const%20keyHitPass%20%3D%20%7B%7D%3B%0D%0A%0D%0A%20%20const%20renderer%20%3D%20Scratch.renderer%3B%0D%0A%20%20const%20vm%20%3D%20Scratch.vm%3B%0D%0A%20%20const%20runtime%20%3D%20vm.runtime%3B%0D%0A%20%20var%20timer%20%3D%200%3B%0D%0A%20%20%0D%0A%20%20class%20HyperSenseSP%20%7B%0D%0A%20%20%20%20constructor()%20%7B%0D%0A%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20true%3B%0D%0A%20%20%20%20%20%20runtime.on(%22BEFORE_EXECUTE%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20timer%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%20%20runtime.startHats(%22HyperSenseSP_whenKeyPressed%22)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22PROJECT_START%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20timer%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22PROJECT_STOP_ALL%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20timer%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22AFTER_EXECUTE%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20true%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20runtime.on(%22ANSWER%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.wait%20%3D%20%5Bfalse%2C%20%22sprite%22%5D%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20const%20originalGreenFlag%20%3D%20vm.greenFlag%3B%0D%0A%20%20%20%20%20%20vm.greenFlag%20%3D%20function%20()%20%7B%0D%0A%20%20%20%20%20%20%20%20runtime.shouldExecuteStopClicked%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%20%20originalGreenFlag.call(this)%3B%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20%20%20this.scrollDistance%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.oldScroll%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.loudnessArray%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20document.addEventListener(%22wheel%22%2C%20this.handleScroll)%3B%0D%0A%20%20%20%20%20%20this.isMicrophoneEnabled%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.pressedKey%20%3D%20null%3B%0D%0A%20%20%20%20%20%20this.wait%20%3D%20%5Bfalse%2C%20%22sprite%22%5D%3B%0D%0A%0D%0A%20%20%20%20%20%20document.addEventListener(%22keydown%22%2C%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20keyPressTime%20%3D%20keyPressTime%20%2B%200.1%3B%0D%0A%20%20%20%20%20%20%20%20this.pressedKey%20%3D%20event.key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%20%20currentlyPressedKey%20%3D%20event.key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20document.addEventListener(%22keyup%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20keyHitPass%5BcurrentlyPressedKey%5D%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20this.pressedKey%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20currentlyPressedKey%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20keyPressTime%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20document.addEventListener(%22mousemove%22%2C%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20window.mouseX%20%3D%20event.clientX%3B%0D%0A%20%20%20%20%20%20%20%20window.mouseY%20%3D%20event.clientY%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getInfo()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20id%3A%20%22HyperSenseSP%22%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20%22Hyper%20Sense%22%2C%0D%0A%20%20%20%20%20%20%20%20color1%3A%20%22%235cb1d6%22%2C%0D%0A%20%20%20%20%20%20%20%20color2%3A%20%22%232e8eb8%22%2C%0D%0A%20%20%20%20%20%20%20%20menuIconURI%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Scrolling%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22monitorScrollWheel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scroll%20wheel%20distance%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22monitorScrollWheelLimited%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scroll%20wheel%20distance%20limited%20from%20%5BMIN%5D%20to%20%5BMAX%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MIN%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setScrollDistance%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20scroll%20wheel%20distance%20to%20%5BDISTANCE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DISTANCE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeScrollDistance%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20scroll%20wheel%20distance%20by%20%5BDISTANCE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DISTANCE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scrollWheelHat%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20scrolled%20%5BEVENT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EVENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22SCROLL_EVENTS%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22up%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scrollWheelBool%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20scrolling%20%5BEVENT%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EVENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22SCROLL_EVENTS%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22up%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Mouse%20Detection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22mouseClick%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20mouse%20%5BBUTTON%5D%20down%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22mouseButtons%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22realX%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22real%20mouse%20x%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22realY%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22real%20mouse%20y%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Key%20Detection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenKeyHit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20%5BKEY%5D%20key%20hit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Space%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isKeyHit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20key%20%5BKEY%5D%20hit%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Space%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%2F%2Fyes%2C%20these%20blocks%20do%20technically%20exist%2C%20but%20they%20dont%20have%20special%20keys%20like%20Tab%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22whenKeyPressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.HAT%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20%5BKEY%5D%20pressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20isEdgeActivated%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Tab%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isKeyPressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22key%20%5BKEY%5D%20pressed%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Tab%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22currentKey%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22current%20key%20pressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22timeKeyPressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22seconds%20key%20%5BKEY%5D%20pressed%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20KEY%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22keys%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22A%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Touching%20Expanded%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteTouchingSprite%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20%5BSPRITE1%5D%20touching%20%5BSPRITE2%5D%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS3%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteCurrentTouching%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22sprites%20touching%20%5BSPRITE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS2%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getNeighbors%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22get%20neighbors%20of%20%5BSPRITE%5D%20with%20diameter%20%5BDIAMETER%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS4%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DIAMETER%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22colorTouchingSprite%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22color%20touching%20%5BSPRITE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS2%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22colorAtPosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22color%20at%20x%20%5Bx%5D%20y%20%5By%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Strings%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22boolean%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20%5BSTRING%5D%20real%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getAllString%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22get%20%5BTEXT%5D%20in%20string%20%5BSTRING%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STRING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22rotating%20a%206%20makes%20a%209!%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22string_types%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22numbers%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Miscellaneous%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22advancedAsk%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5BQUESTION%5D%20as%20%5BTHING%5D%20and%20%5BWAIT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20THING%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22Asking%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22stage%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20QUESTION%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22what%20is%20your%20name%3F%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20WAIT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22shouldWait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22wait%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setAtt%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20ask%20monitor%20x%3A%20%5Bx%5D%20y%3A%20%5By%5D%20width%3A%20%5Bwidth%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20width%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20480%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getSpriteName%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22my%20sprite%20name%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22allLayers%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22max%20sprite%20layers%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22spriteDragMode%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20drag%20mode%20of%20%5BSPRITE%5D%20to%20%5BDRAG%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPRITE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22TARGETS4%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DRAG%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22DRAG_MODES%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22draggable%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22toggleMicrophone%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22toggle%20microphone%20to%20%5BSTATE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20STATE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22microphoneStates%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22enabled%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22averageMicrophoneLoudness%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22average%20microphone%20loudness%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20microphoneStates%3A%20%5B%22enabled%22%2C%20%22disabled%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(true%2C%20false)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS2%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(true%2C%20true)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS3%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(false%2C%20true)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20TARGETS4%3A%20%7B%20acceptReporters%3A%20true%2C%20items%3A%20this._getTargets(false%2C%20false)%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20Asking%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22stage%22%2C%20%22sprite%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20shouldWait%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22wait%22%2C%20%22continue%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20keys%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Any%22%2C%20%22A%22%2C%20%22B%22%2C%20%22C%22%2C%20%22D%22%2C%20%22E%22%2C%20%22F%22%2C%20%22G%22%2C%20%22H%22%2C%20%22I%22%2C%20%22J%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22K%22%2C%20%22L%22%2C%20%22M%22%2C%20%22N%22%2C%20%22O%22%2C%20%22P%22%2C%20%22Q%22%2C%20%22R%22%2C%20%22S%22%2C%20%22T%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22U%22%2C%20%22V%22%2C%20%22W%22%2C%20%22X%22%2C%20%22Y%22%2C%20%22Z%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%220%22%2C%20%221%22%2C%20%222%22%2C%20%223%22%2C%20%224%22%2C%20%225%22%2C%20%226%22%2C%20%227%22%2C%20%228%22%2C%20%229%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Arrow%20Up%22%2C%20%22Arrow%20Down%22%2C%20%22Arrow%20Left%22%2C%20%22Arrow%20Right%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Space%22%2C%20%22Enter%22%2C%20%22Shift%22%2C%20%22Control%22%2C%20%22Alt%22%2C%20%22Escape%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Backspace%22%2C%20%22Tab%22%2C%20%22Caps%20Lock%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Insert%22%2C%20%22Page%20Up%22%2C%20%22Page%20Down%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20SCROLL_EVENTS%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20false%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22up%22%2C%20%22down%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20DRAG_MODES%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22draggable%22%2C%20%22not%20draggable%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20string_types%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22numbers%22%2C%20%22letters%22%2C%20%22special%20characters%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20mouseButtons%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22left%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%200%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scroll%20wheel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%201%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22right%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%202%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22back%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%203%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22foward%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20value%3A%204%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20allLayers()%20%7B%0D%0A%20%20%20%20%20%20return%20renderer._drawList.length%20-%201%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20monitorScrollWheel()%20%7B%0D%0A%20%20%20%20%20%20return%20this.scrollDistance%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20monitorScrollWheelLimited(args)%20%7B%0D%0A%20%20%20%20%20%20const%20min%20%3D%20Scratch.Cast.toNumber(args.MIN)%3B%0D%0A%20%20%20%20%20%20const%20max%20%3D%20Scratch.Cast.toNumber(args.MAX)%3B%0D%0A%20%20%20%20%20%20return%20Math.max(Math.min(this.scrollDistance%2C%20max)%2C%20min)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setScrollDistance(args)%20%7B%0D%0A%20%20%20%20%20%20this.scrollDistance%20%3D%20Scratch.Cast.toNumber(args.DISTANCE)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changeScrollDistance(args)%20%7B%0D%0A%20%20%20%20%20%20this.scrollDistance%20%3D%20this.scrollDistance%20%2B%20Scratch.Cast.toNumber(args.DISTANCE)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20handleScroll%20%3D%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20this.scrollDistance%20%2B%3D%20event.deltaY%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20getSpriteName(_%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20return%20util.target.getName()%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20initMicrophone()%20%7B%0D%0A%20%20%20%20%20%20if%20(this.isMicrophoneEnabled)%20%7B%0D%0A%20%20%20%20%20%20%20%20navigator.mediaDevices.getUserMedia(%7B%20audio%3A%20true%20%7D)%0D%0A%20%20%20%20%20%20%20%20%20%20.then(this.handleMicrophoneSuccess)%0D%0A%20%20%20%20%20%20%20%20%20%20.catch(this.handleMicrophoneError)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20handleMicrophoneSuccess%20%3D%20(stream)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20this.audioContext%20%3D%20new%20(window.AudioContext%20%7C%7C%20window.webkitAudioContext)()%3B%0D%0A%20%20%20%20%20%20const%20microphone%20%3D%20this.audioContext.createMediaStreamSource(stream)%3B%0D%0A%20%20%20%20%20%20const%20analyser%20%3D%20this.audioContext.createAnalyser()%3B%0D%0A%20%20%20%20%20%20analyser.fftSize%20%3D%20256%3B%0D%0A%0D%0A%20%20%20%20%20%20microphone.connect(analyser)%3B%0D%0A%20%20%20%20%20%20this.updateMicrophoneLoudness(analyser)%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20handleMicrophoneError%20%3D%20(error)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20console.error(%22Error%20accessing%20microphone%3A%22%2C%20error)%3B%0D%0A%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20updateMicrophoneLoudness(analyser)%20%7B%0D%0A%20%20%20%20%20%20const%20dataArray%20%3D%20new%20Uint8Array(analyser.frequencyBinCount)%3B%0D%0A%0D%0A%20%20%20%20%20%20setInterval(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20analyser.getByteFrequencyData(dataArray)%3B%0D%0A%20%20%20%20%20%20%20%20const%20loudness%20%3D%20this.calculateLoudness(dataArray)%3B%0D%0A%20%20%20%20%20%20%20%20this.loudnessArray.push(loudness)%3B%0D%0A%20%20%20%20%20%20%20%20if%20(this.loudnessArray.length%20%3E%3D%20loudnessArrayLength)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20this.loudnessArray.shift()%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%2C%20100)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20calculateLoudness(dataArray)%20%7B%0D%0A%20%20%20%20%20%20let%20sum%20%3D%200%3B%0D%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20dataArray.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20sum%20%2B%3D%20dataArray%5Bi%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20sum%20%2F%20dataArray.length%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20averageMicrophoneLoudness()%20%7B%0D%0A%20%20%20%20%20%20let%20loudness%20%3D%20this.calculateAverageLoudness(this.loudnessArray)%3B%0D%0A%20%20%20%20%20%20if%20(isNaN(loudness))%20%7B%0D%0A%20%20%20%20%20%20%20%20loudness%20%3D%20%22Microphone%20is%20Disabled!%22%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20loudness%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20calculateAverageLoudness(loudnessArray)%20%7B%0D%0A%20%20%20%20%20%20return%20loudnessArray.reduce((acc%2C%20loudness)%20%3D%3E%20acc%20%2B%20loudness%2C%200)%20%2F%20loudnessArray.length%20%2B1%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20toggleMicrophone(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.STATE%20%3D%3D%3D%20%22enabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isMicrophoneEnabled%20%3D%20true%3B%0D%0A%20%20%20%20%20%20%20%20this.initMicrophone()%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isMicrophoneEnabled%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%20%20this.disableMicrophone()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20disableMicrophone()%20%7B%0D%0A%20%20%20%20%20%20if%20(this.audioContext)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.audioContext.close().then(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20this.audioContext%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.loudnessArray%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20%20%20%7D).catch(error%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20console.error(%22Error%20while%20closing%20audio%20context%3A%22%2C%20error)%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20handleKeyPress(key%2C%20loop)%20%7B%0D%0A%20%20%20%20%20%20if%20(key%20%3D%3D%3D%20%22Any%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(currentlyPressedKey%20%3D%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20false%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20currentlyPressedKey%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(isNaN(parseFloat(key)))%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20pressedKey%20%3D%20this.pressedKey%20%7C%7C%20null%3B%0D%0A%0D%0A%20%20%20%20%20%20if%20(%0D%0A%20%20%20%20%20%20%20%20((key%20%3D%3D%3D%20%22SPACE%22%20%26%26%20pressedKey%20%3D%3D%3D%20%22%20%22)%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20(key%20%3D%3D%3D%20pressedKey)%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20(key.startsWith(%22DIGIT%22)%20%26%26%20key.slice(5)%20%3D%3D%3D%20pressedKey))%0D%0A%20%20%20%20%20%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20(key%20%3D%3D%3D%20%22SPACE%22)%20%3F%20%22%20%22%20%3A%20key%3B%0D%0A%20%20%20%20%20%20%20%20if%20(isNaN(keyHitPass%5Bkey%5D))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20keyHitPass%5Bkey%5D%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20keyHitPass%5Bkey%5D%20%3D%20keyHitPass%5Bkey%5D%20%2B%201%3B%0D%0A%20%20%20%20%20%20%20%20return%20(loop)%20%3F%20true%20%3A%20(keyHitPass%5Bkey%5D%20%3C%202)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20false%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isKeyHit(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20false%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20whenKeyHit(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20false%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20whenKeyPressed(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20true%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isKeyPressed(args)%20%7B%0D%0A%20%20%20%20%20%20const%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20const%20loop%20%3D%20true%3B%0D%0A%20%20%20%20%20%20return%20this.handleKeyPress%20(key%2C%20loop)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20currentKey()%20%7B%0D%0A%20%20%20%20%20%20if%20(currentlyPressedKey%20%3D%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20%22No%20Keys%20Pressed%22%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(currentlyPressedKey.includes(%22ARROW%22)%20%7C%7C%20currentlyPressedKey%20%3D%3D%3D%20%22CAPSLOCK%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20(currentlyPressedKey%20%3D%3D%3D%20%22CAPSLOCK%22)%20%3F%20%22Caps%20Lock%22%20%3A%20%22Arrow%20%22%20%2B%20currentlyPressedKey.charAt(5).toUpperCase()%20%2B%20currentlyPressedKey.slice(6).toLowerCase()%3B%20%2F%2Fmakes%20it%20%22Arrow%20Left%22%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20currentlyPressedKey.charAt(0).toUpperCase()%20%2B%20currentlyPressedKey.slice(1).toLowerCase()%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20timeKeyPressed(args)%20%7B%0D%0A%20%20%20%20%20%20let%20key%20%3D%20Scratch.Cast.toString(args.KEY).replace(%22%20%22%2C%20%22%22)%3B%0D%0A%20%20%20%20%20%20if%20(isNaN(parseFloat(key)))%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20key.toUpperCase()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(key%20%3D%3D%3D%20%22SPACE%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20key%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(key%20%3D%3D%3D%20this.pressedKey%20%7C%7C%20args.KEY%20%3D%3D%3D%20%22Any%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20keyPressTime%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20return%200%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteTouchingSprite(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20sprite1%20%3D%20args.SPRITE1%3B%0D%0A%20%20%20%20%20%20const%20sprite2%20%3D%20args.SPRITE2%3B%0D%0A%20%20%20%20%20%20const%20target%20%3D%20sprite2%20%3D%3D%3D%20%22_myself_%22%20%3F%20util.target%20%3A%20runtime.getSpriteTargetByName(sprite2)%3B%0D%0A%20%20%20%20%20%20if%20(!target)%20return%20false%3B%0D%0A%20%20%20%20%20%20return%20target.isTouchingObject(sprite1)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteCurrentTouching(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20list%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20this._getTargets()%3B%0D%0A%20%20%20%20%20%20if%20(args.SPRITE%20%3D%3D%3D%20%22_myself_%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20this.spriteCurrentTouchingMyself(util)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20thisSprite%20%3D%20args.SPRITE%20%3D%3D%3D%20%22_mouse_%22%20%3F%20%22_mouse_%22%20%3A%20args.SPRITE%3B%0D%0A%20%20%20%20%20%20if%20(!thisSprite)%20return%20%22%5B%5D%22%3B%0D%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20spriteNames.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20runtime.getSpriteTargetByName(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20let%20caseTouch%20%3D%20target.isTouchingObject(thisSprite)%3B%0D%0A%20%20%20%20%20%20%20%20if%20(caseTouch)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(spriteNames%5Bi%5D.value%20!%3D%3D%20thisSprite)%20list.push(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20JSON.stringify(list)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteCurrentTouchingMyself(util)%20%7B%0D%0A%20%20%20%20%20%20const%20list%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20this._getTargets()%3B%0D%0A%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20spriteNames.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20sprite1%20%3D%20spriteNames%5Bi%5D.value%3B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20util.target%3B%0D%0A%20%20%20%20%20%20%20%20let%20caseTouch%3B%0D%0A%20%20%20%20%20%20%20%20caseTouch%20%3D%20target.isTouchingObject(sprite1)%3B%0D%0A%20%20%20%20%20%20%20%20if%20(caseTouch)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20list.push(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20JSON.stringify(list)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getNeighbors(args)%20%7B%0D%0A%20%20%20%20%20%20const%20list%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20this._getTargets()%3B%0D%0A%20%20%20%20%20%20const%20target%20%3D%20runtime.getSpriteTargetByName(args.SPRITE)%3B%0D%0A%20%20%20%20%20%20if%20(!target)%20return%20%22%5B%5D%22%3B%0D%0A%20%20%20%20%20%20const%20old%20%3D%20%5Btarget.size%2C%20target.direction%5D%3B%0D%0A%20%20%20%20%20%20target.setDirection(-179)%2C%20target.setSize(Math.abs(Scratch.Cast.toNumber(args.DIAMETER)))%3B%0D%0A%20%20%20%20%20%20for%20(let%20l%20%3D%200%3B%20l%20%3C%2090%3B%20l%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%20spriteNames.length%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20sprite1%20%3D%20spriteNames%5Bi%5D.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20let%20caseTouch%20%3D%20target.isTouchingObject(sprite1)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(caseTouch%20%26%26%20!list.includes(sprite1))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(target.sprite.name%20!%3D%3D%20sprite1)%20list.push(spriteNames%5Bi%5D.value)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20target.setDirection(target.direction%20%2B%202)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20formattedList%20%3D%20JSON.stringify(list)%3B%0D%0A%20%20%20%20%20%20target.setSize(old%5B0%5D)%2C%20target.setDirection(old%5B1%5D)%3B%0D%0A%20%20%20%20%20%20return%20formattedList%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20colorAtPosition(args)%20%7B%0D%0A%20%20%20%20%20%20return%20this.colorTouching(Scratch.Cast.toNumber(args.x)%2C%20Scratch.Cast.toNumber(args.y))%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%20%20%0D%0A%20%20%20%20colorTouchingSprite(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20let%20hex%3B%0D%0A%20%20%20%20%20%20if%20(args.SPRITE%20%3D%3D%3D%20%22_mouse_%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20hex%20%3D%20this.colorTouching(util.ioQuery(%22mouse%22%2C%20%22getScratchX%22)%2C%20util.ioQuery(%22mouse%22%2C%20%22getScratchY%22))%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20args.SPRITE%20%3D%3D%3D%20%22_myself_%22%20%3F%20util.target%20%3A%20runtime.getSpriteTargetByName(args.SPRITE)%3B%0D%0A%20%20%20%20%20%20%20%20const%20wasVisible%20%3D%20target.visible%3B%0D%0A%20%20%20%20%20%20%20%20target.setVisible(false)%3B%0D%0A%20%20%20%20%20%20%20%20hex%20%3D%20this.colorTouching(target.x%2C%20target.y)%3B%0D%0A%20%20%20%20%20%20%20%20target.setVisible(wasVisible)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20hex%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20colorTouching(x%2C%20y)%20%7B%0D%0A%20%20%20%20%20%20const%20clientX%20%3D%20Math.round((((runtime.stageWidth%20%2F%202)%20%2B%20x)%20%2F%20runtime.stageWidth)%20*%20renderer._gl.canvas.clientWidth)%3B%0D%0A%20%20%20%20%20%20const%20clientY%20%3D%20Math.round((((runtime.stageHeight%20%2F%202)%20-%20y)%20%2F%20runtime.stageHeight)%20*%20renderer._gl.canvas.clientHeight)%3B%0D%0A%20%20%20%20%20%20const%20colorInfo%20%3D%20renderer.extractColor(clientX%2C%20clientY%2C%2020)%3B%0D%0A%20%20%20%20%20%20const%20r%20%3D%20colorInfo.color.r.toString(16).padStart(2%2C%20%220%22)%3B%0D%0A%20%20%20%20%20%20const%20g%20%3D%20colorInfo.color.g.toString(16).padStart(2%2C%20%220%22)%3B%0D%0A%20%20%20%20%20%20const%20b%20%3D%20colorInfo.color.b.toString(16).padStart(2%2C%20%220%22)%3B%0D%0A%20%20%20%20%20%20return%20%60%23%24%7Br%7D%24%7Bg%7D%24%7Bb%7D%60%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20scrollWheelHat(args)%20%7B%0D%0A%20%20%20%20%20%20let%20status%3B%0D%0A%20%20%20%20%20%20if%20(args.EVENT%20%3D%3D%3D%20%22down%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3E%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3C%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(status)%20this.oldScroll%20%3D%20this.scrollDistance%3B%0D%0A%20%20%20%20%20%20return%20(status)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20scrollWheelBool(args)%20%7B%0D%0A%20%20%20%20%20%20let%20status%3B%0D%0A%20%20%20%20%20%20if%20(args.EVENT%20%3D%3D%3D%20%22down%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3E%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20status%20%3D%20this.scrollDistance%20%3C%20this.oldScroll%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(status)%20this.oldScroll%20%3D%20this.scrollDistance%3B%0D%0A%20%20%20%20%20%20return%20(!!status)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20spriteDragMode(args)%20%7B%0D%0A%20%20%20%20%20%20const%20target%20%3D%20runtime.getSpriteTargetByName(args.SPRITE)%3B%0D%0A%20%20%20%20%20%20target.setDraggable(args.DRAG%20%3D%3D%3D%20%22draggable%22)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20boolean(args)%20%7B%0D%0A%20%20%20%20%20%20const%20string%20%3D%20Scratch.Cast.toString(args.STRING)%3B%0D%0A%20%20%20%20%20%20return%20(!!string%20%26%26%20args.STRING%20!%3D%3D%20undefined)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setAtt(args)%20%7B%0D%0A%20%20%20%20%20%20let%20box%20%3D%20document.querySelectorAll(%60%5Bclass%5E%3D%22question%22%5D%60)%5B0%5D%3B%0D%0A%20%20%20%20%20%20if%20(!box)%20return%3B%0D%0A%20%20%20%20%20%20const%20canvas%20%3D%20getComputedStyle(document.querySelector(%22canvas%22))%3B%0D%0A%20%20%20%20%20%20if%20(args.width)%20%7B%0D%0A%20%20%20%20%20%20%20%20box.style.width%20%3D%20%60%24%7Bargs.width%20*%20(parseInt(canvas.width)%20%2F%20480)%7Dpx%60%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(args.x%20!%3D%3D%20%22%22%20%26%26%20args.y%20!%3D%3D%20%22%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20x%20%3D%20args.x%20%2B%20(parseInt(canvas.width)%20%2F%202)%20-%20(args.width%20*%20(parseInt(canvas.width)%20%2F%20480)%20%2F%202)%3B%0D%0A%20%20%20%20%20%20%20%20const%20y%20%3D%20args.y%20%2B%20(parseInt(canvas.height)%20%2F%202)%20-%20(this.wait%5B1%5D%20%3D%3D%3D%20%22stage%22%20%3F%2053%20%3A%2039)%3B%0D%0A%20%20%20%20%20%20%20%20box.style.transform%20%3D%20%60translate(%24%7Bx%7Dpx%2C%20%24%7By%20*%20-1%7Dpx)%60%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20advancedAsk(args%2C%20util)%20%7B%0D%0A%20%20%20%20%20%20const%20wasVisible%20%3D%20util.target.visible%3B%0D%0A%20%20%20%20%20%20if%20(!util.target.isStage%20%26%26%20args.THING%20%3D%3D%3D%20%22stage%22)%20%7Butil.target.setVisible(false)%7D%0D%0A%20%20%20%20%20%20this.wait%20%3D%20%5Btrue%2C%20args.THING%5D%3B%0D%0A%20%20%20%20%20%20runtime.ext_scratch3_sensing.askAndWait(args%2C%20util)%3B%0D%0A%20%20%20%20%20%20if%20(!util.target.isStage%20%26%26%20wasVisible)%20%7Butil.target.setVisible(true)%7D%0D%0A%20%20%20%20%20%20if%20(args.WAIT%20%3D%3D%3D%20%22wait%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20new%20Promise(resolve%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20checkWait%20%3D%20()%20%3D%3E%20this.wait%5B0%5D%20%3F%20setTimeout(checkWait%2C%20100)%20%3A%20resolve()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20checkWait()%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20mouseClick(args%2C%20util)%20%7Breturn%20util.ioQuery(%22mouse%22%2C%20%22getButtonIsDown%22%2C%20%5BScratch.Cast.toNumber(args.BUTTON)%5D)%7D%0D%0A%20%20%20%20realX()%20%7Breturn%20window.mouseX%7D%0D%0A%20%20%20%20realY()%20%7Breturn%20window.mouseY%7D%0D%0A%0D%0A%20%20%20%20getAllString(args)%20%7B%0D%0A%20%20%20%20%20%20let%20regex%3B%0D%0A%20%20%20%20%20%20if%20(args.TEXT%20%3D%3D%3D%20%22letters%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20regex%20%3D%20%2F%5B%5EA-Za-z%5D%2Fg%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.TEXT%20%3D%3D%3D%20%22numbers%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20regex%20%3D%20%2F%5B%5E0-9%5D%2Fg%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20regex%20%3D%20%2F%5BA-Za-z0-9%5D%2Fg%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20args.STRING.replace(regex%2C%20%22%22)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20_getTargets(mouse%2C%20myself)%20%7B%0D%0A%20%20%20%20%20%20const%20spriteNames%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20if%20(mouse)%20%7B%0D%0A%20%20%20%20%20%20%20%20spriteNames.push(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22mouse-pointer%22%2C%20value%3A%20%22_mouse_%22%2C%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(myself)%20%7B%0D%0A%20%20%20%20%20%20%20%20spriteNames.push(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20text%3A%20%22myself%22%2C%20value%3A%20%22_myself_%22%2C%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20const%20targets%20%3D%20Scratch.vm.runtime.targets%3B%0D%0A%20%20%20%20%20%20for%20(let%20index%20%3D%201%3B%20index%20%3C%20targets.length%3B%20index%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20target%20%3D%20targets%5Bindex%5D%3B%0D%0A%20%20%20%20%20%20%20%20if%20(target.isOriginal)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20targetName%20%3D%20target.getName()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20spriteNames.push(%7B%20text%3A%20targetName%2C%20value%3A%20targetName%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20if%20(spriteNames.length%20%3E%200)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20spriteNames%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20%5B%22%22%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20HyperSenseSP())%3B%0D%0A%7D)(Scratch)%3B%0D%0A%20%7D)(Scratch)%3B","data:text/javascript;,(function(Scratch)%20%7B%20%2F%2F%20Name%3A%20Better%20Input%0D%0A%2F%2F%20ID%3A%20BetterInputSP%0D%0A%2F%2F%20Description%3A%20Expansion%20of%20the%20%22ask%20and%20wait%22%20Blocks%0D%0A%2F%2F%20By%3A%20SharkPool%20%3Chttps%3A%2F%2Fgithub.com%2FSharkPool-SP%3E%0D%0A%0D%0A%2F%2F%20Version%20V.3.0.0%20(Infinite%20Buttons%20%2B%20More%20Live%20Updated%20Elements%20%2B%20Image%20setting%20for%20Buttons)%0D%0A%0D%0A(function%20(Scratch)%20%7B%0D%0A%20%20%22use%20strict%22%3B%0D%0A%0D%0A%20%20if%20(!Scratch.extensions.unsandboxed)%20%7B%0D%0A%20%20%20%20throw%20new%20Error(%22Better%20Input%20must%20run%20unsandboxed%22)%3B%0D%0A%20%20%7D%0D%0A%0D%0A%20%20const%20menuIconURI%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxMzQuMTc2MjgiIGhlaWdodD0iMTM0LjE3NjI4IiB2aWV3Qm94PSIwLDAsMTM0LjE3NjI4LDEzNC4xNzYyOCI%2BPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTE3Mi45MTE4NiwtMTEyLjkxMTg2KSI%2BPGcgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aXNQYWludGluZ0xheWVyJnF1b3Q7OnRydWV9IiBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZS1saW5lY2FwPSJidXR0IiBzdHJva2UtbGluZWpvaW49Im1pdGVyIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHN0cm9rZS1kYXNoYXJyYXk9IiIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAiIHN0eWxlPSJtaXgtYmxlbmQtbW9kZTogbm9ybWFsIj48cGF0aCBkPSJNMTcyLjkxMTg2LDE4MGMwLC0zNy4wNTE3NiAzMC4wMzYzOCwtNjcuMDg4MTQgNjcuMDg4MTQsLTY3LjA4ODE0YzM3LjA1MTc2LDAgNjcuMDg4MTQsMzAuMDM2MzggNjcuMDg4MTQsNjcuMDg4MTRjMCwzNy4wNTE3NiAtMzAuMDM2MzgsNjcuMDg4MTQgLTY3LjA4ODE0LDY3LjA4ODE0Yy0zNy4wNTE3NiwwIC02Ny4wODgxNCwtMzAuMDM2MzggLTY3LjA4ODE0LC02Ny4wODgxNHoiIGZpbGw9IiM5NDAwZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwIi8%2BPHBhdGggZD0iTTI0OS42Nzg4MiwxNDEuMDQ1NzZsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjI0LjY2NTI2LDE1OC40NTE3aDI4LjA0MDY3djIxLjU0ODMxdjIxLjUwODQ4bC0yOC40Mzg5OCwtMC4wMzk4M2MtMjguMiwtMC4wNzk2NiAtMjguNDM4OTksLTAuMDc5NjcgLTI5LjMxNTI2LC0wLjU5NzQ2Yy0wLjQ3Nzk3LC0wLjI3ODgyIC0xLjExNTI1LC0wLjkxNjEgLTEuMzk0MDcsLTEuNDczNzNsLTAuNTU3NjMsLTAuOTU1OTN2LTE4LjQ0MTUzYzAsLTE3LjcyNDU4IDAuMDM5ODMsLTE4LjQ0MTUzIDAuNDc3OTcsLTE5LjM1NzYzYzAuNTk3NDYsLTEuMDc1NDIgMC45NTU5MywtMS40MzM5IDIuMTUwODUsLTEuODcyMDNjMC43NTY3OCwtMC4yMzg5OSA2LjE3MzczLC0wLjMxODY1IDI5LjAzNjQ0LC0wLjMxODY1ek0yMTQuNjI3OTcsMTY4LjQ0OTE2Yy0wLjYzNzI5LDAuMzk4MyAtMS4zMTQ0MSwxLjc5MjM3IC01LjAxODY0LDkuOTk3NDZjLTQuNjIwMzQsMTAuMjM2NDQgLTQuODU5MzIsMTAuOTEzNTYgLTMuODIzNzIsMTIuMDI4ODJjMS4xNTUwOSwxLjIzNDc1IDIuOTQ3NDUsMS4yNzQ1NyAzLjk4MzA1LDAuMDM5ODNjMC4zMTg2NSwtMC4zOTgzIDAuNzk2NiwtMS4yNzQ1NyAxLjAzNTU5LC0xLjk1MTdsMC40MzgxNCwtMS4yMzQ3NWg0Ljc3OTY2aDQuNzc5NjZsMC41NTc2MywxLjQzMzljMC43MTY5NSwxLjk1MTcgMS40NzM3MywyLjYyODgyIDIuOTA3NjMsMi42Mjg4MmMwLjkxNjEsMCAxLjE5NDkxLC0wLjExOTQ5IDEuNzkyMzcsLTAuNzk2NjFjMC41MTc4LC0wLjU1NzYzIDAuNzE2OTUsLTEuMDM1NTkgMC43MTY5NSwtMS42NzI4OGMwLC0wLjYzNzI5IC0xLjE1NTA4LC0zLjU4NDc0IC0zLjc4MzksLTkuNDM5ODNjLTQuOTc4ODEsLTExLjE5MjM3IC00LjczOTg0LC0xMC43MTQ0MSAtNS41MzY0NSwtMTEuMTEyNzFjLTAuOTE2MSwtMC41MTc4IC0xLjkxMTg3LC0wLjQ3Nzk2IC0yLjgyNzk3LDAuMDc5NjZ6IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjE2LjEwMTcsMTc2LjA5NjYxYzAuMTU5MzIsMC4xNTkzMiAyLjU4ODk4LDYuMTMzOSAyLjU4ODk4LDYuMzMzMDVjMCwwLjE1OTMyIC0xLjE5NDkxLDAuMjM4OTggLTIuNzA4NDcsMC4yMzg5OGMtMi4wNzExOCwwIC0yLjY2ODY0LC0wLjA3OTY2IC0yLjU4ODk4LC0wLjMxODY1YzAuMDc5NjYsLTAuMTU5MzIgMC42NzcxMiwtMS42MzMwNSAxLjM5NDA3LC0zLjMwNTkzYzAuNzE2OTUsLTEuNjMzMDUgMS4zMTQ0LC0yLjk4NzI5IDEuMzE0NCwtMi45NDc0NnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yNjcuNjQyMzgsMTgwdi0yMS41ODgxM2w4LjI4NDc0LDAuMDc5NjZjNy44MDY3OCwwLjA3OTY2IDguMzI0NTgsMC4xMTk1IDkuMTIxMTksMC41OTc0NmMwLjQ3Nzk2LDAuMjc4ODIgMS4xMTUyNSwwLjkxNjEgMS4zOTQwNywxLjQ3MzczbDAuNTU3NjIsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC41NTc2MiwwLjk1NTkzYy0wLjI3ODgyLDAuNTU3NjMgLTAuOTE2MTEsMS4xOTQ5MSAtMS4zOTQwNywxLjQ3MzczYy0wLjgzNjQ0LDAuNTE3OCAtMS4zMTQ0MSwwLjUxNzggLTkuMTIxMTksMC41OTc0NmwtOC4yODQ3NCwwLjA3OTY2di0yMS41NDgzeiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTI0OS42Nzg4MiwxNDEuMDQ1NzZsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yNTEuMzcyNiwxNTguNDUxN3Y0My4wNTY3OGMwLDAgLTU1LjU0NDYzLC0wLjExOTUgLTU2LjQyMDksLTAuNjM3MjljLTAuNDc3OTcsLTAuMjc4ODIgLTEuMTE1MjUsLTAuOTE2MSAtMS4zOTQwNywtMS40NzM3M2wtMC41NTc2MywtMC45NTU5M3YtMTguNDQxNTNjMCwtMTcuNzI0NTggMC4wMzk4MywtMTguNDQxNTMgMC40Nzc5NywtMTkuMzU3NjNjMC41OTc0NiwtMS4wNzU0MiAwLjk1NTkzLC0xLjQzMzkgMi4xNTA4NSwtMS44NzIwM2MwLjc1Njc4LC0wLjIzODk5IDU1Ljc0Mzc4LC0wLjMxODY1IDU1Ljc0Mzc4LC0wLjMxODY1ek0yMTQuNjI3OTcsMTY4LjQ0OTE2Yy0wLjYzNzI5LDAuMzk4MyAtMS4zMTQ0MSwxLjc5MjM3IC01LjAxODY0LDkuOTk3NDZjLTQuNjIwMzQsMTAuMjM2NDQgLTQuODU5MzIsMTAuOTEzNTYgLTMuODIzNzIsMTIuMDI4ODJjMS4xNTUwOSwxLjIzNDc1IDIuOTQ3NDUsMS4yNzQ1NyAzLjk4MzA1LDAuMDM5ODNjMC4zMTg2NSwtMC4zOTgzIDAuNzk2NiwtMS4yNzQ1NyAxLjAzNTU5LC0xLjk1MTdsMC40MzgxNCwtMS4yMzQ3NWg0Ljc3OTY2aDQuNzc5NjZsMC41NTc2MywxLjQzMzljMC43MTY5NSwxLjk1MTcgMS40NzM3MywyLjYyODgyIDIuOTA3NjMsMi42Mjg4MmMwLjkxNjEsMCAxLjE5NDkxLC0wLjExOTQ5IDEuNzkyMzcsLTAuNzk2NjFjMC41MTc4LC0wLjU1NzYzIDAuNzE2OTUsLTEuMDM1NTkgMC43MTY5NSwtMS42NzI4OGMwLC0wLjYzNzI5IC0xLjE1NTA4LC0zLjU4NDc0IC0zLjc4MzksLTkuNDM5ODNjLTQuOTc4ODEsLTExLjE5MjM3IC00LjczOTg0LC0xMC43MTQ0MSAtNS41MzY0NSwtMTEuMTEyNzFjLTAuOTE2MSwtMC41MTc4IC0xLjkxMTg3LC0wLjQ3Nzk2IC0yLjgyNzk3LDAuMDc5NjZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yMTYuMTAxNywxNzYuMDk2NjFjMC4xNTkzMiwwLjE1OTMyIDIuNTg4OTgsNi4xMzM5IDIuNTg4OTgsNi4zMzMwNWMwLDAuMTU5MzIgLTEuMTk0OTEsMC4yMzg5OCAtMi43MDg0NywwLjIzODk4Yy0yLjA3MTE4LDAgLTIuNjY4NjQsLTAuMDc5NjYgLTIuNTg4OTgsLTAuMzE4NjVjMC4wNzk2NiwtMC4xNTkzMiAwLjY3NzEyLC0xLjYzMzA1IDEuMzk0MDcsLTMuMzA1OTNjMC43MTY5NSwtMS42MzMwNSAxLjMxNDQsLTIuOTg3MjkgMS4zMTQ0LC0yLjk0NzQ2eiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjY4Ljk3NTcxLDE1OC40MTE4N2MwLDAgMTUuMjc1OTksMC4xOTkxNSAxNi4wNzI2LDAuNjc3MTJjMC40Nzc5NiwwLjI3ODgyIDEuMTE1MjUsMC45MTYxIDEuMzk0MDcsMS40NzM3M2wwLjU1NzYyLDAuOTU1OTN2MTguNDgxMzZ2MTguNDQxNTNsLTAuNTU3NjIsMC45NTU5M2MtMC4yNzg4MiwwLjU1NzYzIC0wLjkxNjExLDEuMTk0OTEgLTEuMzk0MDcsMS40NzM3M2MtMC44MzY0NCwwLjUxNzggLTE2LjA3MjYsMC42NzcxMiAtMTYuMDcyNiwwLjY3NzEyeiIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48L2c%2BPC9nPjwvc3ZnPg%3D%3D%22%3B%0D%0A%0D%0A%20%20const%20blockIconURI%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI3OS4zNjMxMyIgaGVpZ2h0PSI4Ny45MjE0OSIgdmlld0JveD0iMCwwLDc5LjM2MzEzLDg3LjkyMTQ5Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwLjMxODQzLC0xMzYuMDQxNDMpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMzIuNjcxMTksMTgwLjAwMDAzdjIxLjU0ODNsLTExLjcwNjUyLC0wLjA3OTY2Yy0xMS4wMzExNiwtMC4wNzk2NiAtMTEuNzA2NTQsLTAuMDc5NjYgLTEyLjg4ODQ1LC0wLjU5NzQ2Yy0wLjY3NTM3LC0wLjI3ODgyIC0xLjU3NTg3LC0wLjkxNjEgLTEuOTY5ODUsLTEuNDczNzNsLTAuNzg3OTMsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjc4NzkzLC0wLjk1NTkzYzAuMzkzOTgsLTAuNTU3NjMgMS4yOTQ0OCwtMS4xOTQ5MSAxLjk2OTg1LC0xLjQ3MzczYzEuMTI1NjMsLTAuNDc3OTYgMS44NTcyOSwtMC41MTc4IDEyLjg4ODQ1LC0wLjU5NzQ2bDExLjcwNjUyLC0wLjA3OTY2djIxLjU4ODEzeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzAuNzg3MTYsMjAxLjU0ODMzYzAsMCAtMjEuNTI5MDQsLTAuMTU5MzIgLTIyLjcxMDk0LC0wLjY3NzEyYy0wLjY3NTM3LC0wLjI3ODgyIC0xLjU3NTg3LC0wLjkxNjEgLTEuOTY5ODUsLTEuNDczNzNsLTAuNzg3OTMsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjc4NzkzLC0wLjk1NTkzYzAuMzkzOTgsLTAuNTU3NjMgMS4yOTQ0OCwtMS4xOTQ5MSAxLjk2OTg1LC0xLjQ3MzczYzEuMTI1NjMsLTAuNDc3OTcgMjIuNzEwOTQsLTAuNjc3MTIgMjIuNzEwOTQsLTAuNjc3MTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0iI2ZmZmZmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMjQ3LjMyODgxLDE4MC4wMDAwMXYtMjEuNTg4MTNsMTEuNzA2NTIsMC4wNzk2NmMxMS4wMzExNiwwLjA3OTY2IDExLjc2MjgyLDAuMTE5NSAxMi44ODg0NSwwLjU5NzQ2YzAuNjc1MzcsMC4yNzg4MiAxLjU3NTg3LDAuOTE2MSAxLjk2OTg1LDEuNDczNzNsMC43ODc5MywwLjk1NTkzdjE4LjQ4MTM2djE4LjQ0MTUzbC0wLjc4NzkzLDAuOTU1OTNjLTAuMzkzOTgsMC41NTc2MyAtMS4yOTQ0OCwxLjE5NDkxIC0xLjk2OTg1LDEuNDczNzNjLTEuMTgxOTEsMC41MTc4IC0xLjg1NzI5LDAuNTE3OCAtMTIuODg4NDUsMC41OTc0NmwtMTEuNzA2NTIsMC4wNzk2NnYtMjEuNTQ4M3oiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yNDkuMjEyODQsMTU4LjQxMTg4YzAsMCAyMS41ODUzMiwwLjE5OTE1IDIyLjcxMDk0LDAuNjc3MTJjMC42NzUzNywwLjI3ODgyIDEuNTc1ODcsMC45MTYxIDEuOTY5ODUsMS40NzM3M2wwLjc4NzkzLDAuOTU1OTN2MTguNDgxMzZ2MTguNDQxNTNsLTAuNzg3OTMsMC45NTU5M2MtMC4zOTM5OCwwLjU1NzYzIC0xLjI5NDQ4LDEuMTk0OTEgLTEuOTY5ODUsMS40NzM3M2MtMS4xODE5MSwwLjUxNzggLTIyLjcxMDk0LDAuNjc3MTIgLTIyLjcxMDk0LDAuNjc3MTJ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0yMjkuNTk1NTYsMTQxLjA0NTc3bDEwLjgzMzksMC4wMzk4M2MxMC41MTUyNiwwLjA3OTY2IDEwLjgzMzksMC4xMTk0OSAxMS41MTEwMiwwLjU5NzQ1YzIuNDI5NjYsMS44NzIwNCAyLjM4OTgzLDQuOTM4OTkgLTAuMTU5MzMsNi42NTE2OWMtMC43NTY3OCwwLjUxNzggLTEuMTE1MjUsMC41NTc2MyAtNC4zNDE1MiwwLjU1NzYzaC0zLjUwNTA5djMxLjEwNzYzdjMxLjA2Nzc5aDMuNDY1MjZjMy45NDMyMiwwIDQuODk5MTYsMC4zMTg2NSA1LjgxNTI2LDEuOTUxN2MxLjAzNTYsMS44MzIyIDAuNTE3OCwzLjk0MzIzIC0xLjI3NDU4LDUuMjU3NjNjLTAuNjc3MTIsMC41MTc4IC0wLjk5NTc2LDAuNTE3OCAtMTEuNTExMDIsMC41OTc0NWwtMTAuODMzOSwwLjA3OTY2bC0xLjExNTI1LC0wLjU1NzYzYy0xLjE1NTA5LC0wLjYzNzI5IC0yLjE5MDY4LC0yLjE1MDg1IC0yLjE5MDY4LC0zLjM4NTZjMCwtMC44NzYyNyAwLjk5NTc3LC0yLjY2ODY0IDEuNzkyMzcsLTMuMjY2MWMwLjU5NzQ2LC0wLjQ3Nzk3IDEuMTE1MjUsLTAuNTE3OCA0LjM0MTUyLC0wLjU5NzQ1bDMuNjY0NCwtMC4wNzk2N3YtMzEuMDY3Nzl2LTMxLjA2Nzc5bC0zLjY2NDQsLTAuMDc5NjdjLTMuMjI2MjcsLTAuMDc5NjYgLTMuNzQ0MDYsLTAuMTE5NDkgLTQuMzQxNTIsLTAuNTk3NDVjLTAuNzk2NjEsLTAuNTU3NjMgLTEuNzkyMzcsLTIuMzUgLTEuNzkyMzcsLTMuMjY2MWMwLC0xLjIzNDc1IDAuOTk1NzYsLTIuNzg4MTQgMi4xOTA2OCwtMy4zODU2eiIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTIyOS41OTU1NiwxNDEuMDQ1NzdsMTAuODMzOSwwLjAzOTgzYzEwLjUxNTI2LDAuMDc5NjYgMTAuODMzOSwwLjExOTQ5IDExLjUxMTAyLDAuNTk3NDVjMi40Mjk2NiwxLjg3MjA0IDIuMzg5ODMsNC45Mzg5OSAtMC4xNTkzMyw2LjY1MTY5Yy0wLjc1Njc4LDAuNTE3OCAtMS4xMTUyNSwwLjU1NzYzIC00LjM0MTUyLDAuNTU3NjNoLTMuNTA1MDl2MzEuMTA3NjN2MzEuMDY3NzloMy40NjUyNmMzLjk0MzIyLDAgNC44OTkxNiwwLjMxODY1IDUuODE1MjYsMS45NTE3YzEuMDM1NiwxLjgzMjIgMC41MTc4LDMuOTQzMjMgLTEuMjc0NTgsNS4yNTc2M2MtMC42NzcxMiwwLjUxNzggLTAuOTk1NzYsMC41MTc4IC0xMS41MTEwMiwwLjU5NzQ1bC0xMC44MzM5LDAuMDc5NjZsLTEuMTE1MjUsLTAuNTU3NjNjLTEuMTU1MDksLTAuNjM3MjkgLTIuMTkwNjgsLTIuMTUwODUgLTIuMTkwNjgsLTMuMzg1NmMwLC0wLjg3NjI3IDAuOTk1NzcsLTIuNjY4NjQgMS43OTIzNywtMy4yNjYxYzAuNTk3NDYsLTAuNDc3OTcgMS4xMTUyNSwtMC41MTc4IDQuMzQxNTIsLTAuNTk3NDVsMy42NjQ0LC0wLjA3OTY3di0zMS4wNjc3OXYtMzEuMDY3NzlsLTMuNjY0NCwtMC4wNzk2N2MtMy4yMjYyNywtMC4wNzk2NiAtMy43NDQwNiwtMC4xMTk0OSAtNC4zNDE1MiwtMC41OTc0NWMtMC43OTY2MSwtMC41NTc2MyAtMS43OTIzNywtMi4zNSAtMS43OTIzNywtMy4yNjYxYzAsLTEuMjM0NzUgMC45OTU3NiwtMi43ODgxNCAyLjE5MDY4LC0zLjM4NTZ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20const%20formatIcon%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIxNTAuOTAzNTUiIGhlaWdodD0iOTUuNSIgdmlld0JveD0iMCwwLDE1MC45MDM1NSw5NS41Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTY0LjU0ODIyLC0xMzIuMjUpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMzkuNzQxOTcsMjAxLjgxODIzYzAsMCAtNDAuMjY2OTcsLTAuMTU5MzIgLTQxLjU1OTI5LC0wLjY3NzEyYy0wLjczODQ2LC0wLjI3ODgyIC0xLjcyMzA5LC0wLjkxNjEgLTIuMTUzODcsLTEuNDczNzNsLTAuODYxNTQsLTAuOTU1OTN2LTE4LjQ0MTUzdi0xOC40ODEzNmwwLjg2MTU0LC0wLjk1NTkzYzAuNDMwNzksLTAuNTU3NjMgMS40MTU0MSwtMS4xOTQ5MSAyLjE1Mzg3LC0xLjQ3MzczYzEuMjMwNzksLTAuNDc3OTYgNDEuNTU5MjksLTAuNjc3MTIgNDEuNTU5MjksLTAuNjc3MTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTIzNC4wOTEzNiwxNTguNjgxNzhjMCwwIDQyLjY2MTg0LDAuMTk5MTYgNDMuODkyNjIsMC42NzcxMmMwLjczODQ2LDAuMjc4ODIgMS43MjMwOSwwLjkxNjEgMi4xNTM4NywxLjQ3MzczbDAuODYxNTQsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC44NjE1NCwwLjk1NTkzYy0wLjQzMDc5LDAuNTU3NjMgLTEuNDE1NDEsMS4xOTQ5MSAtMi4xNTM4NywxLjQ3MzczYy0xLjI5MjMyLDAuNTE3OCAtNDMuODkyNjIsMC42NzcxMiAtNDMuODkyNjIsMC42NzcxMnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzYuMTUxNCwxNTguNjgxNzhjMCwwIDQwLjYwMTgxLDAuMTk5MTUgNDEuODMyNTksMC42NzcxMmMwLjczODQ2LDAuMjc4ODIgMS43MjMwOSwwLjkxNjEgMi4xNTM4NywxLjQ3MzczbDAuODYxNTQsMC45NTU5M3YxOC40ODEzNnYxOC40NDE1M2wtMC44NjE1NCwwLjk1NTkzYy0wLjQzMDc5LDAuNTU3NjMgLTEuNDE1NDEsMS4xOTQ5MSAtMi4xNTM4NywxLjQ3MzczYy0xLjI5MjMyLDAuNTE3OCAtNDEuODMyNTksMC42NzcxMiAtNDEuODMyNTksMC42NzcxMnoiIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIi8%2BPHBhdGggZD0iTTIzNy42ODE5MywyMDEuODE4MjNjMCwwIC0zOC4yMDY5NCwtMC4xNTkzMiAtMzkuNDk5MjYsLTAuNjc3MTJjLTAuNzM4NDYsLTAuMjc4ODIgLTEuNzIzMDksLTAuOTE2MSAtMi4xNTM4NywtMS40NzM3M2wtMC44NjE1NCwtMC45NTU5M3YtMTguNDQxNTN2LTE4LjQ4MTM2bDAuODYxNTQsLTAuOTU1OTNjMC40MzA3OSwtMC41NTc2MyAxLjQxNTQxLC0xLjE5NDkxIDIuMTUzODcsLTEuNDczNzNjMS4yMzA3OCwtMC40Nzc5NyAzOS40OTkyNiwtMC42NzcxMiAzOS40OTkyNiwtMC42NzcxMnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjxwYXRoIGQ9Ik0xNjkuNTQ4MjIsMTU0LjQwNzUydi0xNy4xNTc1MmgxNy4xNTc1MnoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0zMTAuNDUxNzgsMjA1LjU5MjQ4djE3LjE1NzUyaC0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSJub25lIiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMTY5LjU0ODIzLDE1NC40MDc1MnYtMTcuMTU3NTJoMTcuMTU3NTJ6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0zMTAuNDUxNzgsMjA1LjU5MjQ4djE3LjE1NzUyaC0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0xODYuNzA1NzYsMjIyLjc1aC0xNy4xNTc1MnYtMTcuMTU3NTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTI5My4yOTQyNSwxMzcuMjVoMTcuMTU3NTJ2MTcuMTU3NTJ6IiBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpbmRleCZxdW90OzpudWxsfSIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNjkwMGI0IiBzdHJva2Utd2lkdGg9IjEwIi8%2BPHBhdGggZD0iTTE4Ni43MDU3NiwyMjIuNzVoLTE3LjE1NzUydi0xNy4xNTc1MnoiIGRhdGEtcGFwZXItZGF0YT0ieyZxdW90O2luZGV4JnF1b3Q7Om51bGx9IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMCIvPjxwYXRoIGQ9Ik0yOTMuMjk0MjUsMTM3LjI1aDE3LjE1NzUydjE3LjE1NzUyeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7aW5kZXgmcXVvdDs6bnVsbH0iIGZpbGw9IiNmZmZmZmYiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIwIi8%2BPHBhdGggZD0iTTIzNi4yNjY0NCwxNjUuNjY5ODVjMS4xODI3MiwtMC43MTk5MSAyLjQ4NDMxLC0wLjc3MTMzIDMuNjY3MDMsLTAuMTAyODNjMS4wMjg0NSwwLjUxNDIyIDAuNzc2MzksLTAuMDQwOTQgNy4yMDQyMSwxNC40MDg4YzMuMzkzOSw3LjU1OTEzIDQuODY5NjUsMTEuNDA4NTMgNC44Njk2NSwxMi4yMzEyOWMwLDAuODIyNzYgLTAuMjYyMzgsMS40NDUyOSAtMC45MzA4OCwyLjE2NTIxYy0wLjc3MTM0LDAuODc0MTkgLTEuMTM3ODQsMS4wMzM3NCAtMi4zMjA1NSwxLjAzMzc0Yy0xLjg1MTIxLDAgLTIuODk4MjIsLTAuOTgyNTUgLTMuODIzODIsLTMuNTAyMjdsLTAuNjUyODgsLTEuNzQwOWwtNi4yMDUwNSwwLjAwOTg1bC02LjIwNSwtMC4wMDk5bC0wLjQ5ODQ5LDEuNDgzODZjLTAuMzA4NTQsMC44NzQyIC0wLjk5MDc4LDIuMTE2OTMgLTEuNDAyMTcsMi42MzExNWMtMS4zMzcsMS41OTQwOSAtMy42NjMxMywxLjUzMzU5IC01LjE1NDM5LC0wLjA2MDUxYy0xLjMzNywtMS40Mzk4NCAtMS4wNDcyOSwtMi4zNzMyOCA0LjkxNzczLC0xNS41ODg4OGM0Ljc4MjI5LC0xMC41OTMwNiA1LjcxMTg0LC0xMi40NDQ0MSA2LjUzNDYsLTEyLjk1ODYzeiIgZGF0YS1wYXBlci1kYXRhPSJ7JnF1b3Q7bm9Ib3ZlciZxdW90OzpmYWxzZSwmcXVvdDtvcmlnSXRlbSZxdW90OzpbJnF1b3Q7UGF0aCZxdW90Oyx7JnF1b3Q7YXBwbHlNYXRyaXgmcXVvdDs6dHJ1ZSwmcXVvdDtzZWdtZW50cyZxdW90OzpbW1szMzcuMjU1OTQsMTk4LjIzMTY1XSxbMCwwXSxbLTEuMjc0NTgsMC43OTY2XV0sW1szMjcuMjE4NjYsMjE4LjIyNjU3XSxbNy40MDg0NiwtMTYuNDEwMThdLFstOS4yNDA2OCwyMC40NzI4OF1dLFtbMzE5LjU3MTIyLDI0Mi4yODQyMV0sWy0yLjA3MTIsLTIuMjMwNTJdLFsyLjMxMDE4LDIuNDY5NV1dLFtbMzI3LjUzNzMyLDI0Mi4zNjM4N10sWy0yLjA3MTIsMi40Njk0OF0sWzAuNjM3MywtMC43OTY2XV0sW1szMjkuNjA4NSwyMzguNDYwNDddLFstMC40Nzc5OCwxLjM1NDI2XSxbMCwwXV0sWzMzMC40ODQ3OCwyMzUuOTkwOTddLFszNDAuMDQ0MSwyMzUuOTkwOTddLFszNDkuNjAzNDIsMjM1Ljk5MDk3XSxbWzM1MC43MTg2OCwyMzguODU4NzddLFswLDBdLFsxLjQzMzksMy45MDM0XV0sW1szNTYuNTMzOTQsMjQ0LjExNjQxXSxbLTIuODY3OCwwXSxbMS44MzIyLDBdXSxbWzM2MC4xMTg2OCwyNDIuNTIzMTldLFstMS4xOTQ5MiwxLjM1NDI0XSxbMS4wMzU2LC0xLjExNTI2XV0sW1szNjEuNTUyNTgsMjM5LjE3NzQzXSxbMCwxLjI3NDU4XSxbMCwtMS4yNzQ1OF1dLFtbMzUzLjk4NDc4LDIyMC4yOTc3N10sWzUuMjU3NjQsMTEuNzEwMThdLFstOS45NTc2MiwtMjIuMzg0NzRdXSxbWzM0Mi45MTE4OCwxOTguMDcyMzVdLFsxLjU5MzIyLDAuNzk2Nl0sWy0xLjgzMjIsLTEuMDM1Nl1dLFtbMzM3LjI1NTk0LDE5OC4yMzE2N10sWzEuODMyMiwtMS4xMTUyNF0sWzAsMF1dXSwmcXVvdDtjbG9zZWQmcXVvdDs6dHJ1ZSwmcXVvdDtmaWxsQ29sb3ImcXVvdDs6WzAsMCwwLDFdfV19IiBmaWxsPSIjNjkwMGI0IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMC41Ii8%2BPHBhdGggZD0iTTIzOC4xNzcwNCwxNzUuNjA3MDJjMC4yMDU2OSwwLjIwNTY5IDMuMzQyNDYsNy45MTkwOCAzLjM0MjQ2LDguMTc2MTljMCwwLjIwNTY5IC0xLjU0MjY3LDAuMzA4NTMgLTMuNDk2NzMsMC4zMDg1M2MtMi42NzM5NywwIC0zLjQ0NTMxLC0wLjEwMjg0IC0zLjM0MjQ2LC0wLjQxMTM5YzAuMTAyODQsLTAuMjA1NjkgMC44NzQxOSwtMi4xMDgzMiAxLjc5OTc5LC00LjI2ODA3YzAuOTI1NjEsLTIuMTA4MzIgMS42OTY5NCwtMy44NTY3IDEuNjk2OTQsLTMuODA1Mjd6IiBmaWxsPSIjZmZmZmZmIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20const%20colorIcon%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI3NS41MzUxNyIgaGVpZ2h0PSI3MS40OTc0NiIgdmlld0JveD0iMCwwLDc1LjUzNTE3LDcxLjQ5NzQ2Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAyLjIzMjQxLC0xNDQuMjUxMjcpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMjMuNTM4NTYsMTY1LjcxMjcxYzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMDcuMjMyNDIsMTk0LjI4NzI5YzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwNCwxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMzkuODQ0NzEsMTk0LjI4NzI5YzAsLTkuMDkxNDEgNy4zNzAwNCwtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNDEsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNDEsMCAtMTYuNDYxNDQsLTcuMzcwMDMgLTE2LjQ2MTQ0LC0xNi40NjE0NHoiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzY5MDBiNCIgc3Ryb2tlLXdpZHRoPSIxMCIvPjxwYXRoIGQ9Ik0yMjMuNTM4NTYsMTY1LjcxMjcxYzAsLTkuMDkxNDEgNy4zNzAwMywtMTYuNDYxNDQgMTYuNDYxNDQsLTE2LjQ2MTQ0YzkuMDkxNCwwIDE2LjQ2MTQ0LDcuMzcwMDQgMTYuNDYxNDQsMTYuNDYxNDRjMCw5LjA5MTQxIC03LjM3MDAzLDE2LjQ2MTQ0IC0xNi40NjE0NCwxNi40NjE0NGMtOS4wOTE0LDAgLTE2LjQ2MTQ0LC03LjM3MDAzIC0xNi40NjE0NCwtMTYuNDYxNDR6IiBmaWxsPSIjMDBmZjAxIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0ibm9uZSIvPjxwYXRoIGQ9Ik0yMDcuMjMyNDEsMTk0LjI4NzI5YzAsLTkuMDkxNCA3LjM3MDA0LC0xNi40NjE0NCAxNi40NjE0NCwtMTYuNDYxNDRjOS4wOTE0LDAgMTYuNDYxNDQsNy4zNzAwNCAxNi40NjE0NCwxNi40NjE0NGMwLDkuMDkxNCAtNy4zNzAwNCwxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNCwwIC0xNi40NjE0NCwtNy4zNzAwNCAtMTYuNDYxNDQsLTE2LjQ2MTQ0eiIgZmlsbD0iI2ZmMDAwMCIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Im5vbmUiLz48cGF0aCBkPSJNMjM5Ljg0NDcxLDE5NC4yODcyOWMwLC05LjA5MTQxIDcuMzcwMDMsLTE2LjQ2MTQ0IDE2LjQ2MTQ0LC0xNi40NjE0NGM5LjA5MTQsMCAxNi40NjE0NCw3LjM3MDA0IDE2LjQ2MTQ0LDE2LjQ2MTQ0YzAsOS4wOTE0MSAtNy4zNzAwMywxNi40NjE0NCAtMTYuNDYxNDQsMTYuNDYxNDRjLTkuMDkxNCwwIC0xNi40NjE0NCwtNy4zNzAwNCAtMTYuNDYxNDQsLTE2LjQ2MTQ0eiIgZmlsbD0iIzAwNzFmZiIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9Im5vbmUiLz48L2c%2BPC9nPjwvc3ZnPg%3D%3D%22%3B%0D%0A%0D%0A%20%20const%20effectIcon%20%3D%0D%0A%22data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSI1Ny40NDI0MSIgaGVpZ2h0PSI3MC40NSIgdmlld0JveD0iMCwwLDU3LjQ0MjQxLDcwLjQ1Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjEwLjI2NjQ1LC0xNDQuODU2NTUpIj48ZyBkYXRhLXBhcGVyLWRhdGE9InsmcXVvdDtpc1BhaW50aW5nTGF5ZXImcXVvdDs6dHJ1ZX0iIGZpbGw9IiNmZmZmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgc3Ryb2tlLWRhc2hhcnJheT0iIiBzdHJva2UtZGFzaG9mZnNldD0iMCIgc3R5bGU9Im1peC1ibGVuZC1tb2RlOiBub3JtYWwiPjxwYXRoIGQ9Ik0yMTUuMjY2NDUsMTkzLjkwNDFjLTMuOTg4MTUsLTguMTE3MSAtMy45OTYxMSwtMTguMjQzMDUgMC4xNTIyMSwtMjYuNDExMDNjNC42ODc3OSwtOS41NzQzMSAxMi41NzY5MSwtMTMuODE3OTcgMTUuNzQ3NTYsLTE1LjE5Nzc1YzEuOTA1OCwtMC44ODUwOCAzLjkxMzg4LC0xLjU3NDk3IDYuMDc1MzcsLTIuMDgzMTNsMi4xMjA1OSwtMC40NTc2OGMxLjU1ODA1LC0wLjMxOTcgMy4xMDkyOCwwLjY0NjE0IDMuNDQ2OCwyLjE4NzQ1YzAuMzQwOTMsMS41NDQ2OCAtMC42NTExOCwzLjA2NTggLTIuMjE2MDUsMy40MDIzM2wtMi4wNjI2MywwLjQ0NDIyYy0xLjcxNDg4LDAuNDAzODQgLTMuMzU4MTYsMC45NjkyMSAtNC45NjA1MywxLjcxNjMxYy0yLjA4MzA4LDAuOTAxOSAtOC45NzMyOCw0LjM5MTczIC0xMi45NDg1MiwxMi41MTU2Yy0zLjAxNzIzLDUuOTMzMDUgLTMuOTE3MjksMTUuMzY2MDIgMC44MzE4NywyMy4xNDk5OGM0LjMwMjU0LDcuNDk3OTIgMTMuMTEyMTcsMTIuMDk0OTMgMjEuNDY4MzcsMTEuMzIwOTFjNy45MDI3NiwtMC41Njg3NCAxNS4xNTQzNCwtNS44Mjg3MiAxNy42OTc2OCwtMTIuNzk0OTJjMi41ODA4NCwtNi41NTIyNiAwLjg2NTk2LC0xMy4yNjk0MyAtMS45NjcxNywtMTcuMDUyMDRjLTMuNDEyNzEsLTQuNjYwOTYgLTcuNjYwNywtNi4wOTQ1OCAtOS4zMjc4NSwtNi40OTUwNWMtMC4yNDg4OCwtMC4wNzQwNCAtNi4wODU2LC0xLjgyNzM2IC0xMS4yNDA0NiwwLjc1MzgzYy0yLjIxOTQ1LDEuMDYzNDQgLTUuMDkwMDksMy40NTYxOCAtNi42Mjc2OCw3LjA1MDMzYy0xLjY2MDMzLDMuNzExOTQgLTEuMjMwNzYsOC40ODM5NSAxLjAxOTM4LDExLjY1NDA4YzIuMjYzNzgsMy4zOTg5NyA2LjUzMjIyLDUuMzIzOTIgMTAuMjA0MDQsNC42NzEwNWMzLjY1NDc3LC0wLjU3NTQ3IDYuMTI2NTEsLTMuMjk0NjQgNi43MTI5MSwtNS42ODQwMWMwLjY4ODY4LC0yLjU2NzczIC0wLjM2ODIsLTQuNzM4MzYgLTEuMTkzMjYsLTUuNTE5MTFjLTEuNDAxMjIsLTEuMzgzMTQgLTIuNjExNTIsLTEuNDA2NyAtMi42NjI2NiwtMS40MTAwN2MtMC41NzI3NiwtMC4wMTY4MyAtMC44NTU3MywwLjAyNjkyIC0xLjAyNjIsMC4wNTM4NGMtMC42NTQ1OSwwLjIzODk0IC0xLjU4MTkyLDAuNzYzOTMgLTEuODU0NjYsMS4zMTU4NGMtMC4wNDc3MywwLjA5MDg2IC0wLjE3MDQ3LDAuMzM5OSAwLjA2NDc4LDAuOTYyNDhjMC41NjI1MywxLjQ3NzM3IC0wLjE5Nzc0LDMuMTI5NzQgLTEuNjk0NDIsMy42ODUwMmMtMS40ODk4NiwwLjU1ODY0IC0zLjE2NzI0LC0wLjE5MTgyIC0zLjczMzE4LC0xLjY3MjU2Yy0wLjkzMDc0LC0yLjQ0OTk1IC0wLjQxNTkzLC00LjM2ODE4IDAuMTgwNjksLTUuNTQ2MDNjMS41NTgwNSwtMy4wNjU4IDUuMTc1MzIsLTQuMTc2MzUgNS41ODQ0MywtNC4yOTQxNGMwLjE4NzUxLC0wLjA1NzIxIDAuMzg1MjUsLTAuMDkwODYgMC41Nzk1OCwtMC4xMDc2OWMwLjM5ODg5LC0wLjA2MDU4IDEuMTAxMiwtMC4xNTQ4IDIuMDUyNCwtMC4xMTc3OWMyLjE3ODU0LDAuMDI2OTIgNC42NjA1MSwxLjE2NDQgNi41NjI5LDMuMDQ1NjFjMi4yNDY3MywyLjEyMDE1IDQuMDA1OTMsNi4zODA2MyAyLjc1ODEyLDExLjAxMTNjLTEuMjE3MTIsNC45NTcxIC01Ljg5NDY4LDkuMDU2MDYgLTExLjM1Mjk3LDkuOTE0MjFjLTUuODcwODIsMS4wNDY2MSAtMTIuNDgxNDUsLTEuODQ3NTYgLTE1Ljk3MjU3LC03LjA5NDA4Yy0zLjM2NDk4LC00LjcyODI2IC00LjAwOTM0LC0xMS42NDczNSAtMS41NDc4MiwtMTcuMTM2MTdjMi43MDAxNywtNi4zMjAwNiA3Ljg1ODQ0LC05LjE4MDU3IDkuMzcyMTcsLTkuOTA3NDhjNy4yNzg4NiwtMy42MzQ1NCAxNS4wNTg4OCwtMS4yMzUwNyAxNS4zODYxNywtMS4xMzQxMWMyLjA5MzMxLDAuNDk0NyA3LjkxMjk5LDIuNDQzMjIgMTIuNDM3MTMsOC42MjUyOWMzLjQ3NzQ5LDQuNjUwODYgNi4yOTY5OCwxMy4zMzY3MyAyLjcxMzgsMjIuNDI5ODFjLTMuMjcyOTMsOC45NjE4MyAtMTIuNTkwNTUsMTUuNzY5ODUgLTIyLjYzNzc2LDE2LjQ5MzM5Yy0wLjc4NzU1LDAuMDc0MDQgLTEuNTg1MzIsMC4xMTQ0MiAtMi4zNzk2OSwwLjExNDQyYy05Ljc1MDYsMCAtMTkuNjI3MzQsLTUuNjIwMDcgLTI0LjU4MTA2LC0xNC4yNDg3M2MwLDAgLTAuODIwNDksLTEuNDE4MzQgLTEuMTgxODEsLTIuMTUzNzN6IiBzdHJva2U9IiM2OTAwYjQiIHN0cm9rZS13aWR0aD0iMTAiLz48cGF0aCBkPSJNMjE2LjQ0ODI3LDE5Ni4wNTc4NGMtNS4xMzQ0MSwtOC40MjAwMSAtNS41NTM3NSwtMTkuNjU2NzkgLTEuMDI5NjEsLTI4LjU2NDc3YzQuNjg3NzksLTkuNTc0MzEgMTIuNTc2OTEsLTEzLjgxNzk3IDE1Ljc0NzU2LC0xNS4xOTc3NWMxLjkwNTgsLTAuODg1MDggMy45MTM4OCwtMS41NzQ5NyA2LjA3NTM3LC0yLjA4MzEzbDIuMTIwNTksLTAuNDU3NjhjMS41NTgwNSwtMC4zMTk3IDMuMTA5MjgsMC42NDYxNCAzLjQ0NjgsMi4xODc0NWMwLjM0MDkzLDEuNTQ0NjggLTAuNjUxMTgsMy4wNjU4IC0yLjIxNjA1LDMuNDAyMzNsLTIuMDYyNjMsMC40NDQyMmMtMS43MTQ4OCwwLjQwMzg0IC0zLjM1ODE2LDAuOTY5MjEgLTQuOTYwNTMsMS43MTYzMWMtMi4wODMwOCwwLjkwMTkgLTguOTczMjgsNC4zOTE3MyAtMTIuOTQ4NTIsMTIuNTE1NmMtMy4wMTcyMyw1LjkzMzA1IC0zLjkxNzI5LDE1LjM2NjAyIDAuODMxODcsMjMuMTQ5OThjNC4zMDI1NCw3LjQ5NzkyIDEzLjExMjE3LDEyLjA5NDkzIDIxLjQ2ODM3LDExLjMyMDkxYzcuOTAyNzYsLTAuNTY4NzQgMTUuMTU0MzQsLTUuODI4NzIgMTcuNjk3NjgsLTEyLjc5NDkyYzIuNTgwODQsLTYuNTUyMjYgMC44NjU5NiwtMTMuMjY5NDMgLTEuOTY3MTcsLTE3LjA1MjA0Yy0zLjQxMjcxLC00LjY2MDk2IC03LjY2MDcsLTYuMDk0NTggLTkuMzI3ODUsLTYuNDk1MDVjLTAuMjQ4ODgsLTAuMDc0MDQgLTYuMDg1NiwtMS44MjczNiAtMTEuMjQwNDYsMC43NTM4M2MtMi4yMTk0NSwxLjA2MzQ0IC01LjA5MDA5LDMuNDU2MTggLTYuNjI3NjgsNy4wNTAzM2MtMS42NjAzMywzLjcxMTk0IC0xLjIzMDc2LDguNDgzOTUgMS4wMTkzOCwxMS42NTQwOGMyLjI2Mzc4LDMuMzk4OTcgNi41MzIyMiw1LjMyMzkyIDEwLjIwNDA0LDQuNjcxMDVjMy42NTQ3NywtMC41NzU0NyA2LjEyNjUxLC0zLjI5NDY0IDYuNzEyOTEsLTUuNjg0MDFjMC42ODg2OCwtMi41Njc3MyAtMC4zNjgyLC00LjczODM2IC0xLjE5MzI2LC01LjUxOTExYy0xLjQwMTIyLC0xLjM4MzE0IC0yLjYxMTUyLC0xLjQwNjcgLTIuNjYyNjYsLTEuNDEwMDdjLTAuNTcyNzYsLTAuMDE2ODMgLTAuODU1NzMsMC4wMjY5MiAtMS4wMjYyLDAuMDUzODRjLTAuNjU0NTksMC4yMzg5NCAtMS41ODE5MiwwLjc2MzkzIC0xLjg1NDY2LDEuMzE1ODRjLTAuMDQ3NzMsMC4wOTA4NiAtMC4xNzA0NywwLjMzOTkgMC4wNjQ3OCwwLjk2MjQ4YzAuNTYyNTMsMS40NzczNyAtMC4xOTc3NCwzLjEyOTc0IC0xLjY5NDQyLDMuNjg1MDJjLTEuNDg5ODYsMC41NTg2NCAtMy4xNjcyNCwtMC4xOTE4MiAtMy43MzMxOCwtMS42NzI1NmMtMC45MzA3NCwtMi40NDk5NSAtMC40MTU5MywtNC4zNjgxOCAwLjE4MDY5LC01LjU0NjAzYzEuNTU4MDUsLTMuMDY1OCA1LjE3NTMyLC00LjE3NjM1IDUuNTg0NDMsLTQuMjk0MTRjMC4xODc1MSwtMC4wNTcyMSAwLjM4NTI1LC0wLjA5MDg2IDAuNTc5NTgsLTAuMTA3NjljMC4zOTg4OSwtMC4wNjA1OCAxLjEwMTIsLTAuMTU0OCAyLjA1MjQsLTAuMTE3NzljMi4xNzg1NCwwLjAyNjkyIDQuNjYwNTEsMS4xNjQ0IDYuNTYyOSwzLjA0NTYxYzIuMjQ2NzMsMi4xMjAxNSA0LjAwNTkzLDYuMzgwNjMgMi43NTgxMiwxMS4wMTEzYy0xLjIxNzEyLDQuOTU3MSAtNS44OTQ2OCw5LjA1NjA2IC0xMS4zNTI5Nyw5LjkxNDIxYy01Ljg3MDgyLDEuMDQ2NjEgLTEyLjQ4MTQ1LC0xLjg0NzU2IC0xNS45NzI1NywtNy4wOTQwOGMtMy4zNjQ5OCwtNC43MjgyNiAtNC4wMDkzNCwtMTEuNjQ3MzUgLTEuNTQ3ODIsLTE3LjEzNjE3YzIuNzAwMTcsLTYuMzIwMDYgNy44NTg0NCwtOS4xODA1NyA5LjM3MjE3LC05LjkwNzQ4YzcuMjc4ODYsLTMuNjM0NTQgMTUuMDU4ODgsLTEuMjM1MDcgMTUuMzg2MTcsLTEuMTM0MTFjMi4wOTMzMSwwLjQ5NDcgNy45MTI5OSwyLjQ0MzIyIDEyLjQzNzEzLDguNjI1MjljMy40Nzc0OSw0LjY1MDg2IDYuMjk2OTgsMTMuMzM2NzMgMi43MTM4LDIyLjQyOTgxYy0zLjI3MjkzLDguOTYxODMgLTEyLjU5MDU1LDE1Ljc2OTg1IC0yMi42Mzc3NiwxNi40OTMzOWMtMC43ODc1NSwwLjA3NDA0IC0xLjU4NTMyLDAuMTE0NDIgLTIuMzc5NjksMC4xMTQ0MmMtOS43NTA2LDAgLTE5LjYyNzM0LC01LjYyMDA3IC0yNC41ODEwNiwtMTQuMjQ4NzN6IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIvPjwvZz48L2c%2BPC9zdmc%2B%22%3B%0D%0A%0D%0A%20%20let%20newColorType%20%3D%20%22%22%3B%0D%0A%20%20let%20overlayImageContainer%20%3D%20%22%22%3B%0D%0A%20%20const%20fontMenu%20%3D%20%5B%0D%0A%20%20%20%20%22Scratch%22%2C%0D%0A%20%20%20%20%22Sans%20Serif%22%2C%0D%0A%20%20%20%20%22Serif%22%2C%0D%0A%20%20%20%20%22Handwriting%22%2C%0D%0A%20%20%20%20%22Marker%22%2C%0D%0A%20%20%20%20%22Curly%22%2C%0D%0A%20%20%20%20%22Pixel%22%0D%0A%20%20%5D%3B%20%20%0D%0A%0D%0A%20%20class%20BetterInputSP%20%7B%0D%0A%20%20%20%20constructor()%20%7B%0D%0A%20%20%20%20%20%20this.activeOverlays%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.activeUI%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.askBoxPromises%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.isWaitingForInput%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.isDropdownOpen%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.userInput%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.askBoxInfo%20%3D%20%5B0%2C%201%5D%3B%0D%0A%20%20%20%20%20%20this.forceInput%20%3D%20%22Disabled%22%3B%0D%0A%20%20%20%20%20%20this.overlayInput%20%3D%20null%3B%0D%0A%0D%0A%20%20%20%20%20%20this.optionList%20%3D%20%5B%22Option%201%22%2C%20%22Option%202%22%2C%20%22Option%203%22%5D%3B%0D%0A%20%20%20%20%20%20this.sliderInfo%20%3D%20%5B0%2C%20100%2C%2050%5D%3B%0D%0A%20%20%20%20%20%20this.Timeout%20%3D%200%3B%0D%0A%0D%0A%20%20%20%20%20%20this.shadowEnabled%20%3D%20true%3B%0D%0A%20%20%20%20%20%20this.isInputEnabled%20%3D%20%22Enabled%22%3B%0D%0A%20%20%20%20%20%20this.DropdownText%20%3D%20%22Dropdown%22%3B%0D%0A%20%20%20%20%20%20this.fontSize%20%3D%20%2214px%22%3B%0D%0A%20%20%20%20%20%20this.textAlign%20%3D%20%22left%22%3B%0D%0A%20%20%20%20%20%20this.fontFamily%20%3D%20%22Sans%20Serif%22%3B%0D%0A%20%20%20%20%20%20this.overlayBorderRadius%20%3D%20%5B5%2C%204%2C%205%5D%3B%0D%0A%20%20%20%20%20%20this.buttonJSON%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%22Submit%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%230074D9%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20textColor%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20name%3A%20%22Submit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20imgScale%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%22Cancel%22%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%23d9534f%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20textColor%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20name%3A%20%22Cancel%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20imgScale%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20%20%20this.questionColor%20%3D%20%22%23000000%22%3B%0D%0A%20%20%20%20%20%20this.inputColor%20%3D%20%22%23000000%22%3B%0D%0A%20%20%20%20%20%20this.textBoxColor%20%3D%20%5B%22%23ffffff%22%5D%3B%0D%0A%20%20%20%20%20%20this.inputFieldColor%20%3D%20%5B%22%23ffffff%22%2C%20%22%23000000%22%5D%3B%0D%0A%20%20%20%20%20%20this.dropdownButtonColor%20%3D%20%5B%22%235f5f5f%22%2C%20%22%23ffffff%22%5D%3B%0D%0A%20%20%20%20%20%20this.overlayImage%20%3D%20%5B%22%20%22%2C%20%22%20%22%2C%20%22%20%22%5D%3B%0D%0A%0D%0A%20%20%20%20%20%20this.Blur%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Brightness%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Opacity%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Invert%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Saturation%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Hue%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Sepia%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Contrast%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Scale%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.SkewX%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.SkewY%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Rotation%20%3D%2090%3B%0D%0A%20%20%20%20%20%20this.imgScale%20%3D%20%5B100%2C%20100%2C%20100%5D%3B%0D%0A%20%20%20%20%20%20this.shadowS%20%3D%20%5B0%2C%200%2C%205%2C%200.3%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getInfo()%20%7B%0D%0A%20%20%20%20%20%20return%20%7B%0D%0A%20%20%20%20%20%20%20%20id%3A%20%22BetterInputSP%22%2C%0D%0A%20%20%20%20%20%20%20%20name%3A%20%22Better%20Input%22%2C%0D%0A%20%20%20%20%20%20%20%20color1%3A%20%22%239400ff%22%2C%0D%0A%20%20%20%20%20%20%20%20color2%3A%20%22%237600cc%22%2C%0D%0A%20%20%20%20%20%20%20%20color3%3A%20%22%238500e6%22%2C%0D%0A%20%20%20%20%20%20%20%20menuIconURI%2C%0D%0A%20%20%20%20%20%20%20%20blockIconURI%2C%0D%0A%20%20%20%20%20%20%20%20blocks%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Text%20Blocks%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22askAndWait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5Bquestion%5D%20and%20wait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20question%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22What%20is%20your%20name%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22askAndWaitForInput%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22ask%20%5Bquestion%5D%20and%20wait%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20question%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22What%20is%20your%20name%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getUserInput%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22user%20input%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22removeAskBoxes%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22remove%20all%20ask%20boxes%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Formatting%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFontSize%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20font%20size%20to%20%5BSIZE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SIZE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2014%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setTextAlignment%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20alignment%20to%20%5BALIGNMENT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ALIGNMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22alignmentMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22left%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setFontFamily%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20font%20to%20%5BFONT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20FONT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22fontMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Sans%20Serif%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setInputType%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20Input%20Box%20to%20be%20%5BACTION%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22inputActionMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20dropdown%20options%20to%20array%3A%20%5BDROPDOWN%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DROPDOWN%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%5B%5C%22Option%201%5C%22%2C%20%5C%22Option%202%5C%22%2C%20%5C%22Option%203%5C%22%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSlider%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20slider%20to%20min%3A%20%5BMIN%5D%20max%3A%20%5BMAX%5D%20default%3A%20%5BDEFAULT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MIN%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DEFAULT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2050%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setButton%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22%5BBUTTON%5D%20button%20named%20%5BNAME%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22buttonType%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22add%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20NAME%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Submit%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setButtonText%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BBUTTON_MENU%5D%20button%20name%20to%20%5BTEXT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20BUTTON_MENU%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22buttonMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TEXT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22my%20dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Positioning%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPrePosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22preset%20textbox%20position%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setPosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20textbox%20position%20to%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changePosition%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20textbox%20position%20by%20x%3A%20%5BX%5D%20y%3A%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getXpos%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22x%20position%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getYpos%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22y%20position%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setDirection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20direction%20to%20%5BROTATE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROTATE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.ANGLE%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2090%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeDirection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20direction%20by%20%5BROTATE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ROTATE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.ANGLE%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2015%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22reportDirection%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22direction%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20formatIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Visual%20Settings%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setColorSettings%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20%5BCOLOR%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22colorSettingsMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23000000%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setGradient%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20gradient%20with%20colors%20%5BCOLOR1%5D%20and%20%5BCOLOR2%5D%20with%20direction%20%5BDIR%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ff0000%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20DIR%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.ANGLE%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%2090%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setCircleGradient%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BCOLOR_TYPE%5D%20color%20to%20radial%20gradient%20with%20colors%20%5BCOLOR1%5D%20and%20%5BCOLOR2%5D%20with%20position%20x%20%5BX%5D%20y%20%5BY%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR_TYPE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR1%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20COLOR2%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.COLOR%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22%23ff0000%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20X%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Y%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%200%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22enableShadow%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20box%20shadow%20to%20be%20%5BACTION%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ACTION%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22buttonActionMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Enabled%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setShadow%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20box%20shadow%20%5BSHADOW%5D%20to%20%5BAMT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SHADOW%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22shadowStuff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Size%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setBorderRadius%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20border%20radius%20to%20%5BVALUE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20VALUE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setImage%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20%5BELEMENT%5D%20image%20to%20%5BIMAGE%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20IMAGE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22input-url-or-uri-here%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22scaleImage%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22scale%20%5BELEMENT%5D%20image%20to%20%5BSCALE%5D%25%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20colorIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ELEMENT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22elementMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20SCALE%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Effects%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22resetEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22reset%20effects%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20effect%20%5BEFFECT%5D%20to%20%5BAMT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22effectMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22changeEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22change%20effect%20%5BEFFECT%5D%20by%20%5BAMT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22effectMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20AMT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22showEffect%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22effect%20%5BEFFECT%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20EFFECT%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22effectMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%22---%22%2C%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setTimeout%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22when%20submitted%20delete%20textbox%20after%20%5BTIME%5D%20secs%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20TIME%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22reportTimeout%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22current%20textbox%20timeout%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockIconURI%3A%20effectIcon%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.LABEL%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22Operations%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isWaitingInput%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20waiting%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22isDropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.BOOLEAN%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22is%20dropdown%20open%3F%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setSubmitEvent%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20force%20input%20to%20%5BENTER%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20ENTER%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22enterMenu%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22Disabled%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22setMaxBoxCount%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.COMMAND%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22set%20max%20box%20count%20to%3A%20%5BMAX%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20MAX%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.NUMBER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%201%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20opcode%3A%20%22getBoxInfo%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20blockType%3A%20Scratch.BlockType.REPORTER%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20%22box%20%5BINFO%5D%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20arguments%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20INFO%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20Scratch.ArgumentType.STRING%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20menu%3A%20%22boxInfo%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20defaultValue%3A%20%22count%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20menus%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20alignmentMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22left%22%2C%20%22right%22%2C%20%22center%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20boxInfo%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22count%22%2C%20%22limit%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20buttonType%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22add%22%2C%20%22remove%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20fontMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%22allFonts%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20buttonActionMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Enabled%22%2C%20%22Disabled%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20inputActionMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22None%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Multi-Select%20Dropdown%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Horizontal%20Slider%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Vertical%20Slider%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20effectMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Blur%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Brightness%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Opacity%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Invert%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Saturation%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Hue%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Sepia%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Contrast%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Scale%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SkewX%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22SkewY%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20shadowStuff%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Size%22%2C%20%22X%22%2C%20%22Y%22%2C%20%22Opacity%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20buttonMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%22%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20false)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20elementMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Box%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20false)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20colorSettingsMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20this.allButtons(%5B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Textbox%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Question%20Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Box%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Input%20Outline%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Button%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Dropdown%20Text%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%20true)%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20enterMenu%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20acceptReporters%3A%20true%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20items%3A%20%5B%22Disabled%22%2C%20%22Enter%20Key%22%2C%20%22Shift%20%2B%20Enter%20Key%22%5D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20allFonts()%20%7B%0D%0A%20%20%20%20%20%20const%20customFonts%20%3D%20Scratch.vm.runtime.fontManager%0D%0A%20%20%20%20%20%20%20%20%3F%20Scratch.vm.runtime.fontManager.getFonts().map((i)%20%3D%3E%20(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3A%20i.name%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3A%20i.family%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D))%0D%0A%20%20%20%20%20%20%20%20%3A%20%5B%5D%3B%0D%0A%20%20%20%20%20%20return%20%5B%0D%0A%20%20%20%20%20%20%20%20...fontMenu%2C%0D%0A%20%20%20%20%20%20%20%20...customFonts%2C%0D%0A%20%20%20%20%20%20%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20allButtons(array%2C%20enableText)%20%7B%0D%0A%20%20%20%20%20%20const%20customButtons%20%3D%20Object.keys(this.buttonJSON)%3B%0D%0A%20%20%20%20%20%20if%20(enableText)%20%7B%0D%0A%20%20%20%20%20%20%20%20customButtons.forEach((button)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20customButtons.push(button%20%2B%20%22%20Text%22)%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20return%20%5B%0D%0A%20%20%20%20%20%20%20%20...array%2C%0D%0A%20%20%20%20%20%20%20%20...customButtons%2C%0D%0A%20%20%20%20%20%20%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20updateOverlayPos(overlay)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.Rotation%20%3E%20359)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.Rotation%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.Rotation%20%3C%201)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.Rotation%20%3D%20360%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20if%20(this.textBoxX%20!%3D%3D%20null%20%26%26%20this.textBoxY%20!%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20overlay.style.transform%20%3D%20%60%0D%0A%20%20%20%20%20%20%20%20%20%20translate(-50%25%2C%20-50%25)%0D%0A%20%20%20%20%20%20%20%20%20%20SkewX(%24%7Bthis.SkewX%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20%20%20SkewY(%24%7Bthis.SkewY%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20%20%20rotate(%24%7Bthis.Rotation%20-%2090%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20%20%20scale(%24%7Bthis.Scale%20%2F%20100%7D)%0D%0A%20%20%20%20%20%20%20%20%60%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20updateOverlay(overlay)%20%7B%0D%0A%20%20%20%20%20%20const%20newOpacity%20%3D%20%20this.Opacity%20%2F%20100%3B%0D%0A%20%20%20%20%20%20const%20newBrightness%20%3D%20this.Brightness%20%2B%20100%3B%0D%0A%20%20%20%20%20%20overlay.style.backgroundImage%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20overlay.style%5Bthis.textBoxColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.textBoxColor%5B0%5D%3B%0D%0A%20%20%20%20%20%20overlay.style.boxShadow%20%3D%20this.shadowEnabled%20%3F%20%60%24%7Bthis.shadowS%5B0%5D%7Dpx%20%24%7Bthis.shadowS%5B1%5D%7Dpx%20%24%7Bthis.shadowS%5B2%5D%7Dpx%20rgba(0%2C%200%2C%200%2C%20%24%7Bthis.shadowS%5B3%5D%7D)%60%20%3A%20%22none%22%3B%0D%0A%0D%0A%20%20%20%20%20%20overlay.style.transform%20%3D%20%60%0D%0A%20%20%20%20%20%20%20%20translate(-50%25%2C%20-50%25)%0D%0A%20%20%20%20%20%20%20%20SkewX(%24%7Bthis.SkewX%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20SkewY(%24%7Bthis.SkewY%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20rotate(%24%7Bthis.Rotation%20-%2090%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20scale(%24%7Bthis.Scale%20%2F%20100%7D)%0D%0A%20%20%20%20%20%20%60%3B%0D%0A%20%20%20%20%20%20overlay.style.filter%20%3D%20%60%0D%0A%20%20%20%20%20%20%20%20blur(%24%7Bthis.Blur%7Dpx)%0D%0A%20%20%20%20%20%20%20%20brightness(%24%7BnewBrightness%7D%25)%0D%0A%20%20%20%20%20%20%20%20invert(%24%7Bthis.Invert%7D%25)%0D%0A%20%20%20%20%20%20%20%20saturate(%24%7Bthis.Saturation%7D%25)%0D%0A%20%20%20%20%20%20%20%20hue-rotate(%24%7Bthis.Hue%7Ddeg)%0D%0A%20%20%20%20%20%20%20%20sepia(%24%7Bthis.Sepia%7D%25)%0D%0A%20%20%20%20%20%20%20%20contrast(%24%7Bthis.Contrast%7D%25)%0D%0A%20%20%20%20%20%20%60%3B%0D%0A%20%20%20%20%20%20overlay.style.opacity%20%3D%20newOpacity%3B%0D%0A%20%20%20%20%20%20overlay.style.fontFamily%20%3D%20this.fontFamily%3B%0D%0A%20%20%20%20%20%20overlay.style.textAlign%20%3D%20this.textAlign%3B%0D%0A%20%20%20%20%20%20overlay.style.borderRadius%20%3D%20this.overlayBorderRadius%5B0%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20overlayImageContainer.style.borderRadius%20%3D%20this.overlayBorderRadius%5B0%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20overlayImageContainer.style.background%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20this.setImageStyles(overlayImageContainer%2C%20this.overlayImage%5B0%5D%2C%20this.imgScale%5B0%5D)%3B%0D%0A%20%20%20%20%20%20this.updateButtonImages(overlay)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20updateButtonImages(overlay)%20%7B%0D%0A%20%20%20%20%20%20let%20text%20%3D%20overlay.querySelector(%22.question%22)%3B%0D%0A%20%20%20%20%20%20if%20(text)%20%7B%0D%0A%20%20%20%20%20%20%20%20text.style.color%20%3D%20this.questionColor%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20const%20inputField%20%3D%20overlay.querySelector(%22input%22)%3B%0D%0A%20%20%20%20%20%20if%20(inputField)%20%7B%0D%0A%20%20%20%20%20%20%20%20inputField.style.background%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style%5Bthis.inputFieldColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.inputFieldColor%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style.color%20%3D%20this.inputColor%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style.border%20%3D%20%601px%20solid%20%24%7Bthis.inputFieldColor%5B1%5D%7D%60%3B%0D%0A%20%20%20%20%20%20%20%20inputField.style.borderRadius%20%3D%20this.overlayBorderRadius%5B1%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20%20%20this.setImageStyles(inputField%2C%20this.overlayImage%5B1%5D%2C%20this.imgScale%5B1%5D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20const%20dropdownButton%20%3D%20overlay.querySelector(%22button.dropbtn%22)%3B%0D%0A%20%20%20%20%20%20if%20(dropdownButton)%20%7B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style.backgroundImage%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style.color%20%3D%20this.dropdownButtonColor%5B1%5D%3B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style.borderRadius%20%3D%20this.overlayBorderRadius%5B2%5D%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20%20%20dropdownButton.style%5Bthis.dropdownButtonColor%5B0%5D.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22backgroundColor%22%5D%20%3D%20this.dropdownButtonColor%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20this.setImageStyles(dropdownButton%2C%20this.overlayImage%5B2%5D%2C%20this.imgScale%5B2%5D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20const%20buttonContainer%20%3D%20overlay.querySelector(%22.button-container%22)%3B%0D%0A%20%20%20%20%20%20if%20(buttonContainer)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttons%20%3D%20buttonContainer.querySelectorAll(%22button%22)%3B%0D%0A%20%20%20%20%20%20%20%20buttons.forEach((button%2C%20index)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20buttonName%20%3D%20Object.keys(this.buttonJSON)%5Bindex%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonName%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(buttonInfo)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.color%20%3D%20buttonInfo.textColor%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.borderRadius%20%3D%20buttonInfo.borderRadius%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style.background%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20button.style%5BbuttonInfo.color.includes(%22gradient%22)%20%3F%20%22backgroundImage%22%20%3A%20%22background%22%5D%20%3D%20buttonInfo.color%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.setImageStyles(button%2C%20buttonInfo.image%2C%20buttonInfo.imgScale)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setImageStyles(element%2C%20url%2C%20scale)%20%7B%0D%0A%20%20%20%20%20%20if%20(Scratch.Cast.toString(url).length%20%3E%205)%20%7B%0D%0A%20%20%20%20%20%20%20%20Scratch.canFetch(encodeURI(url)).then((canFetch)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(canFetch)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20element.style.background%20%3D%20%60url(%24%7BencodeURI(url)%7D)%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20element.style.backgroundSize%20%3D%20scale%20%2B%20%22%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20console.log(%22Cannot%20fetch%20content%20from%20the%20URL.%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20showEffect(args)%20%7B%0D%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0D%0A%20%20%20%20%20%20return%20this%5Beffect%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setEffect(args)%20%7B%0D%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0D%0A%20%20%20%20%20%20this%5Beffect%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changeEffect(args)%20%7B%0D%0A%20%20%20%20%20%20const%20effect%20%3D%20args.EFFECT%3B%0D%0A%20%20%20%20%20%20this%5Beffect%5D%20%3D%20this%5Beffect%5D%20%2B%20args.AMT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20resetEffect()%20%7B%0D%0A%20%20%20%20%20%20this.Blur%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Brightness%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Opacity%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Invert%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Saturation%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Hue%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Sepia%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.Contrast%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.Scale%20%3D%20100%3B%0D%0A%20%20%20%20%20%20this.SkewX%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.SkewY%20%3D%200%3B%0D%0A%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setColorSettings(args)%20%7B%0D%0A%20%20%20%20%20%20const%20colorType%20%3D%20args.COLOR_TYPE%3B%0D%0A%20%20%20%20%20%20const%20colorValue%20%3D%20args.COLOR%3B%0D%0A%20%20%20%20%20%20switch%20(colorType)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Question%20Text%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.questionColor%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Text%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.inputColor%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Textbox%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.textBoxColor%5B0%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B0%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Box%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.inputFieldColor%5B0%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B1%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Outline%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.inputFieldColor%5B1%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Button%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.dropdownButtonColor%5B0%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B2%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Text%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.dropdownButtonColor%5B1%5D%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.buttonJSON%5BcolorType%5D%20%7C%7C%20this.buttonJSON%5BcolorType.replace(%22%20Text%22%2C%20%22%22)%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20buttonInfo%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(colorType.includes(%22%20Text%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo%20%3D%20this.buttonJSON%5BcolorType.replace(%22%20Text%22%2C%20%22%22)%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.textColor%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo%20%3D%20this.buttonJSON%5BcolorType%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20colorValue%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.image%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20findGradientType(menu)%20%7B%0D%0A%20%20%20%20%20%20const%20colorType%20%3D%20menu%3B%0D%0A%20%20%20%20%20%20switch%20(colorType)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Textbox%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%22textBoxColor%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B0%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Box%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%22inputFieldColor%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B1%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Button%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%22dropdownButtonColor%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayImage%5B2%5D%20%3D%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.buttonJSON%5BcolorType%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20newColorType%20%3D%20%5B%22button%22%2C%20colorType%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20return%20newColorType%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setGradient(args)%20%7B%0D%0A%20%20%20%20%20%20const%20newColorType%20%3D%20this.findGradientType(args.COLOR_TYPE)%3B%0D%0A%20%20%20%20%20%20const%20gradientColor%20%3D%20%60linear-gradient(%24%7Bargs.DIR%20-%2090%7Ddeg%2C%20%24%7Bargs.COLOR2%7D%2C%20%24%7Bargs.COLOR1%7D)%60%3B%0D%0A%20%20%20%20%20%20if%20(newColorType%5B0%5D%20!%3D%3D%20%22button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this%5BnewColorType%5D%5B0%5D%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BnewColorType%5B1%5D%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setCircleGradient(args)%20%7B%0D%0A%20%20%20%20%20%20const%20newColorType%20%3D%20this.findGradientType(args.COLOR_TYPE)%3B%0D%0A%20%20%20%20%20%20const%20newPos%20%3D%20%5Bargs.X%20%2B%2050%2C%20args.Y%20%2B%2050%5D%3B%0D%0A%20%20%20%20%20%20const%20gradientColor%20%3D%20%60radial-gradient(circle%20at%20%24%7BnewPos%5B0%5D%7D%25%20%24%7BnewPos%5B1%5D%7D%25%2C%20%24%7Bargs.COLOR2%7D%2C%20%24%7Bargs.COLOR1%7D)%60%3B%0D%0A%20%20%20%20%20%20if%20(newColorType%5B0%5D%20!%3D%3D%20%22button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this%5BnewColorType%5D%5B0%5D%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BnewColorType%5B1%5D%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.color%20%3D%20gradientColor%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setBorderRadius(args)%20%7B%0D%0A%20%20%20%20%20%20const%20element%20%3D%20args.ELEMENT%3B%0D%0A%20%20%20%20%20%20let%20value%20%3D%20args.VALUE%3B%0D%0A%20%20%20%20%20%20if%20(value%20%3C%200)%20%7B%0D%0A%20%20%20%20%20%20%20%20value%20%3D%200%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20switch%20(element)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Textbox%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayBorderRadius%5B0%5D%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Input%20Box%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayBorderRadius%5B1%5D%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Dropdown%20Button%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.overlayBorderRadius%5B2%5D%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20default%3A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.buttonJSON%5Belement%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5Belement%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20buttonInfo.borderRadius%20%3D%20value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setShadow(args)%20%7B%0D%0A%20%20%20%20%20%20const%20shadow%20%3D%20args.SHADOW%3B%0D%0A%20%20%20%20%20%20switch%20(shadow)%20%7B%0D%0A%20%20%20%20%20%20%20%20case%20%22Size%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B2%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22X%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B0%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Y%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B1%5D%20%3D%20args.AMT%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%20%20case%20%22Opacity%22%3A%0D%0A%20%20%20%20%20%20%20%20%20%20this.shadowS%5B3%5D%20%3D%20args.AMT%20%2F%20100%3B%0D%0A%20%20%20%20%20%20%20%20%20%20break%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setImage(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Textbox%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.overlayImage%5B0%5D%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Input%20Box%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.overlayImage%5B1%5D%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Dropdown%20Button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.overlayImage%5B2%5D%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5Bargs.ELEMENT%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5Bargs.ELEMENT%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.image%20%3D%20args.IMAGE%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20scaleImage(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Textbox%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.imgScale%5B0%5D%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Input%20Box%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.imgScale%5B1%5D%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(args.ELEMENT%20%3D%3D%3D%20%22Dropdown%20Button%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.imgScale%5B2%5D%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5Bargs.ELEMENT%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5Bargs.ELEMENT%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.imgScale%20%3D%20args.SCALE%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setDirection(args)%20%7B%0D%0A%20%20%20%20%20%20const%20ROTATE%20%3D%20args.ROTATE%3B%0D%0A%20%20%20%20%20%20this.Rotation%20%3D%20Scratch.Cast.toNumber(ROTATE)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changeDirection(args)%20%7B%0D%0A%20%20%20%20%20%20const%20ROTATE%20%3D%20args.ROTATE%3B%0D%0A%20%20%20%20%20%20this.Rotation%20%3D%20this.Rotation%20%2B%20Scratch.Cast.toNumber(ROTATE)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20reportDirection()%20%7B%0D%0A%20%20%20%20%20%20return%20this.Rotation%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setPrePosition(args)%20%7B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setPosition(args)%20%7B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlayPos(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20changePosition(args)%20%7B%0D%0A%20%20%20%20%20%20this.textBoxX%20%3D%20this.textBoxX%20%2B%20Scratch.Cast.toNumber(args.X)%20%2F%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%20%20this.textBoxY%20%3D%20this.textBoxY%20%2B%20Scratch.Cast.toNumber(args.Y)%20%2F%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlayPos(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getXpos()%20%7B%0D%0A%20%20%20%20%20%20return%20this.textBoxX%20*%20(screen.width%20%2F%20400)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getYpos()%20%7B%0D%0A%20%20%20%20%20%20return%20this.textBoxY%20*%20(screen.height%20%2F%20-300)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setFontSize(args)%20%7B%0D%0A%20%20%20%20%20%20this.fontSize%20%3D%20args.SIZE%20%2B%20%22px%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setTextAlignment(args)%20%7B%0D%0A%20%20%20%20%20%20this.textAlign%20%3D%20args.ALIGNMENT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setFontFamily(args)%20%7B%0D%0A%20%20%20%20%20%20this.fontFamily%20%3D%20args.FONT%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setSlider(args)%20%7B%0D%0A%20%20%20%20%20%20this.sliderInfo%20%3D%20%5Bargs.MIN%2C%20args.MAX%2C%20args.DEFAULT%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setInputType(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.ACTION%20%3D%3D%3D%20%22Text%22%20%7C%7C%20args.ACTION%20%3D%3D%3D%20%20%22None%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isInputEnabled%20%3D%20args.ACTION%20%3D%3D%3D%20%22Text%22%20%3F%20%22Enabled%22%20%3A%20%22Disabled%22%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isInputEnabled%20%3D%20args.ACTION%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20enableShadow(args)%20%7B%0D%0A%20%20%20%20%20%20this.shadowEnabled%20%3D%20args.ACTION%20%3D%3D%3D%20%22Enabled%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setButtonText(args)%20%7B%0D%0A%20%20%20%20%20%20const%20buttonMenu%20%3D%20args.BUTTON_MENU%3B%0D%0A%20%20%20%20%20%20const%20text%20%3D%20args.TEXT%3B%0D%0A%20%20%20%20%20%20if%20(buttonMenu%20%3D%3D%3D%20%22Dropdown%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.DropdownText%20%3D%20text%3B%0D%0A%20%20%20%20%20%20%7D%20else%20if%20(this.buttonJSON%5BbuttonMenu%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonMenu%5D%3B%0D%0A%20%20%20%20%20%20%20%20buttonInfo.name%20%3D%20text%3B%0D%0A%20%20%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setDropdown(args)%20%7B%0D%0A%20%20%20%20%20%20try%20%7B%0D%0A%20%20%20%20%20%20%20%20this.optionList%20%3D%20JSON.parse(args.DROPDOWN)%3B%0D%0A%20%20%20%20%20%20%7D%20catch%20(error)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.optionList%20%3D%20%5B%22Undefined%20Array%20Error%22%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20removeAskBoxes()%20%7B%0D%0A%20%20%20%20%20%20const%20overlaysToRemove%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.activeOverlays.forEach((overlay)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20if%20(overlay%20%26%26%20overlay.parentNode)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.parentNode.removeChild(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlaysToRemove.push(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20if%20(this.askBoxPromises)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20index%20%3D%20this.activeOverlays.indexOf(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(index%20!%3D%3D%20-1)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.askBoxPromises%5Bindex%5D.resolve(%22removed%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20this.askBoxPromises%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.activeOverlays%20%3D%20this.activeOverlays.filter(%0D%0A%20%20%20%20%20%20%20%20(overlay)%20%3D%3E%20!overlaysToRemove.includes(overlay)%0D%0A%20%20%20%20%20%20)%3B%0D%0A%20%20%20%20%20%20this.activeUI%20%3D%20%5B%5D%3B%0D%0A%20%20%20%20%20%20this.askBoxInfo%5B0%5D%20%3D%200%3B%0D%0A%20%20%20%20%20%20this.userInput%20%3D%20%22%22%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20askAndWaitForInput(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%20this.askBoxInfo%5B1%5D%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20return%20this.askAndWait(args).then(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20return%20this.getUserInput()%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20askAndWait(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%20this.askBoxInfo%5B1%5D)%20%7B%0D%0A%20%20%20%20%20%20%20%20const%20question%20%3D%20args.question%3B%0D%0A%20%20%20%20%20%20%20%20this.isWaitingForInput%20%3D%20true%3B%0D%0A%20%20%20%20%20%20%20%20this.userInput%20%3D%20null%3B%0D%0A%20%20%20%20%20%20%20%20this.askBoxInfo%5B0%5D%2B%2B%3B%0D%0A%20%20%20%20%20%20%20%20let%20selectedOptions%20%3D%20%5B%5D%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20return%20new%20Promise((resolve)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20askBoxPromise%20%3D%20%7B%20resolve%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.askBoxPromises.push(askBoxPromise)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20overlay%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.classList.add(%22ask-box%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.position%20%3D%20%22fixed%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.zIndex%20%3D%20%229999%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.padding%20%3D%20%2215px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.fontSize%20%3D%20this.fontSize%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.width%20%3D%20'100%25'%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.height%20%3D%20'100%25'%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.position%20%3D%20%22absolute%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.top%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.left%20%3D%200%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlayImageContainer.style.zIndex%20%3D%20%22-1%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.forceInput%20!%3D%3D%20%22Disabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20let%20overlayInput%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.forceInput%20%3D%3D%3D%20%22Enter%20Key%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlayInput%20%3D%20%22Enter%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.forceInput%20%3D%3D%3D%20%22Shift%20%2B%20Enter%20Key%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlayInput%20%3D%20%22ShiftEnter%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlayInput%20%3D%20this.forceInput%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20handleKeydown%20%3D%20(event)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(overlayInput%20%3D%3D%3D%20%22ShiftEnter%22%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.shiftKey%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.key%20%3D%3D%3D%20%22Enter%22)%20%7C%7C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.key%20%3D%3D%3D%20overlayInput%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20inputField.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.closeOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20observer%20%3D%20new%20MutationObserver((mutationsList)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20for%20(const%20mutation%20of%20mutationsList)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mutation.type%20%3D%3D%3D%20%22childList%22%20%26%26%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20!document.contains(overlay)%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22keydown%22%2C%20handleKeydown)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20observer.disconnect()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20observer.observe(document.body%2C%20%7B%20childList%3A%20true%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22keydown%22%2C%20handleKeydown)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20questionText%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.classList.add(%22question%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.style.fontSize%20%3D%20this.fontSize%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.style.marginBottom%20%3D%20%2210px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20questionText.textContent%20%3D%20question%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20inputField%20%3D%20document.createElement(%22input%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.display%20%3D%20this.isInputEnabled%20%3F%20%22block%22%20%3A%20%22none%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.width%20%3D%20%2294%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.padding%20%3D%20%225px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.fontSize%20%3D%20this.fontSize%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.style.margin%20%3D%20%220%20auto%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20buttonContainer%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20buttonContainer.classList.add(%22button-container%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20for%20(const%20buttonName%20in%20this.buttonJSON)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20buttonInfo%20%3D%20this.buttonJSON%5BbuttonName%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(buttonInfo.name.includes(%22%3Cnewline%3E%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20lineBreak%20%3D%20document.createElement(%22br%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonContainer.appendChild(lineBreak)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20button%20%3D%20document.createElement(%22button%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.marginTop%20%3D%20%2210px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.marginRight%20%3D%20%225px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.padding%20%3D%20%225px%2010px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.border%20%3D%20%22none%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.cursor%20%3D%20%22pointer%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.textContent%20%3D%20buttonInfo.name%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.style.display%20%3D%20%22inline-block%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Disabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20buttonInfo.name%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.userInput%20%3D%20inputField.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.closeOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20resolve()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20buttonContainer.appendChild(button)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20dropdown%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdown.className%20%3D%20%22dropdown%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20dropdownButton%20%3D%20document.createElement(%22button%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.className%20%3D%20%22dropbtn%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.textContent%20%3D%20this.DropdownText%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.style.padding%20%3D%20%225px%2010px%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.style.border%20%3D%20%22none%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20dropdownContent%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.id%20%3D%20%22myDropdown%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.className%20%3D%20%22dropdown-content%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownContent.style.display%20%3D%20%22none%22%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20optionLabels%20%3D%20this.optionList%3B%0D%0A%20%20%20%20%20%20%20%20%20%20optionLabels.forEach((label%2C%20index)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20optionLabel%20%3D%20document.createElement(%22label%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.style.color%20%3D%20this.questionColor%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.textContent%20%3D%20label%20%2B%20%22%20%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20const%20optionRadio%20%3D%20document.createElement(%22input%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.type%20%3D%20this.isInputEnabled%20%3D%3D%3D%20%22Dropdown%22%20%3F%20%22radio%22%20%3A%20%22checkbox%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.name%20%3D%20%22dropdownOptions%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.value%20%3D%20index%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.classList.add(%22dropdown-radio%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionRadio.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Multi-Select%20Dropdown%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(selectedOptions.includes(label))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20selectedOptions%20%3D%20selectedOptions.filter(item%20%3D%3E%20item%20!%3D%3D%20label)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20selectedOptions.push(label)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(selectedOptions.length%20%3E%200)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20%22%5B%5C%22%22%20%2B%20selectedOptions.join(%22%5C%22%2C%20%5C%22%22)%20%2B%20%22%5C%22%5D%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20%22%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20label%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(optionRadio)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20optionLabel.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20dropdownContent.appendChild(optionLabel)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(dropdown)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20dropdownButton.addEventListener(%22click%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20dropdownContent.style.display%20%3D%20this.isDropdownOpen%20%3F%20%22none%22%20%3A%20%22block%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20this.isDropdownOpen%20%3D%20!this.isDropdownOpen%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20sliderContainer%20%3D%20document.createElement(%22div%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20sliderContainer.classList.add(%22slider-container%22)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20slider%20%3D%20document.createElement(%22input%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled.includes(%22Vertical%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20slider.style.transform%20%3D%20%22rotate(270deg)%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20slider.type%20%3D%20%22range%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.min%20%3D%20this.sliderInfo%5B0%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.max%20%3D%20this.sliderInfo%5B1%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.value%20%3D%20this.sliderInfo%5B2%5D%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled.includes(%22Vertical%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%203%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(slider)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(let%20i%20%3D%200%3B%20i%20%3C%204%3B%20i%2B%2B)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(slider)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20const%20valueDisplay%20%3D%20document.createElement(%22span%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.classList.add(%22slider-value%22)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20sliderContainer.appendChild(valueDisplay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.style.color%20%3D%20this.questionColor%3B%0D%0A%20%20%20%20%20%20%20%20%20%20valueDisplay.textContent%20%3D%20slider.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20slider.addEventListener(%22input%22%2C%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20valueDisplay.textContent%20%3D%20slider.value%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20inputField.value%20%3D%20valueDisplay.textContent%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(questionText)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20!%3D%3D%20%22Disabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.isInputEnabled%20%3D%3D%3D%20%22Enabled%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(inputField)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if%20(this.isInputEnabled.includes(%22Dropdown%22))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(dropdownButton)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(dropdownContent)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(sliderContainer)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(valueDisplay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.appendChild(document.createElement(%22br%22))%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(buttonContainer)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20overlay.appendChild(overlayImageContainer)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.focus()%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20resizeHandler%20%3D%20()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(this.textBoxX%20!%3D%3D%20null%20%26%26%20this.textBoxY%20!%3D%3D%20null)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%60%24%7B50%20%2B%20this.textBoxX%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%60%24%7B50%20%2B%20this.textBoxY%7D%25%60%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.left%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20overlay.style.top%20%3D%20%2250%25%22%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20this.activeOverlays.push(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.activeUI.push(%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20overlay%3A%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20button%3A%20buttonContainer%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20dropdown%3A%20dropdownButton%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20input%3A%20inputField%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22fullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22webkitfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22mozfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.addEventListener(%22MSFullscreenChange%22%2C%20resizeHandler)%3B%0D%0A%0D%0A%20%20%20%20%20%20%20%20%20%20const%20overlayParent%20%3D%20overlay.parentNode%3B%0D%0A%20%20%20%20%20%20%20%20%20%20const%20observer%20%3D%20new%20MutationObserver((mutationsList)%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20(const%20mutation%20of%20mutationsList)%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20(mutation.type%20%3D%3D%3D%20%22childList%22%20%26%26%20mutation.removedNodes.contains(overlay))%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22fullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22webkitfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22mozfullscreenchange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.removeEventListener(%22MSFullscreenChange%22%2C%20resizeHandler)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20observer.disconnect()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20observer.observe(overlayParent%2C%20%7B%20childList%3A%20true%20%7D)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20document.body.appendChild(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%20%20inputField.focus()%3B%0D%0A%20%20%20%20%20%20%20%20%20%20this.updateOverlay(overlay)%3B%0D%0A%20%20%20%20%20%20%20%20%7D)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20closeOverlay(overlay)%20%7B%0D%0A%20%20%20%20%20%20if%20(this.askBoxInfo%5B0%5D%20%3C%202)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.isWaitingForInput%20%3D%20false%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20this.isDropdownOpen%20%3D%20false%3B%0D%0A%20%20%20%20%20%20this.askBoxInfo%5B0%5D--%3B%0D%0A%20%20%20%20%20%20const%20index%20%3D%20this.activeOverlays.indexOf(overlay)%3B%0D%0A%20%20%20%20%20%20if%20(index%20!%3D%3D%20-1)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.activeOverlays.splice(index%2C%201)%3B%0D%0A%20%20%20%20%20%20%20%20this.askBoxPromises.splice(index%2C%201)%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20delete%20this.activeUI%5Boverlay%5D%3B%0D%0A%20%20%20%20%20%20setTimeout(()%20%3D%3E%20%7B%0D%0A%20%20%20%20%20%20%20%20document.body.removeChild(overlay)%3B%0D%0A%20%20%20%20%20%20%7D%2C%20this.Timeout%20*%201000)%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setButton(args)%20%7B%0D%0A%20%20%20%20%20%20if%20(args.BUTTON%20%3D%3D%3D%20%22add%22)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.buttonJSON%5Bargs.NAME%5D%20%3D%20%7B%0D%0A%20%20%20%20%20%20%20%20%20%20borderRadius%3A%205%2C%0D%0A%20%20%20%20%20%20%20%20%20%20color%3A%20%22%230074D9%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20textColor%3A%20%22%23ffffff%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20name%3A%20args.NAME%2C%0D%0A%20%20%20%20%20%20%20%20%20%20image%3A%20%22%22%2C%0D%0A%20%20%20%20%20%20%20%20%20%20imgScale%3A%20100%2C%0D%0A%20%20%20%20%20%20%20%20%7D%3B%0D%0A%20%20%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20delete%20this.buttonJSON%5Bargs.NAME%5D%3B%0D%0A%20%20%20%20%20%20%7D%0D%0A%20%20%20%20%20%20Scratch.vm.extensionManager.refreshBlocks()%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isWaitingInput()%20%7B%0D%0A%20%20%20%20%20%20return%20this.isWaitingForInput%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20isDropdown()%20%7B%0D%0A%20%20%20%20%20%20return%20this.isDropdownOpen%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setMaxBoxCount(args)%20%7B%0D%0A%20%20%20%20%20%20this.askBoxInfo%5B1%5D%20%3D%20args.MAX%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setTimeout(args)%20%7B%0D%0A%20%20%20%20%20%20this.Timeout%20%3D%20args.TIME%3B%0D%0A%20%20%20%20%20%20this.Condition%20%3D%20args.CONDITION%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20reportTimeout()%20%7B%0D%0A%20%20%20%20%20%20return%20this.Timeout%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getUserInput()%20%7B%0D%0A%20%20%20%20%20%20return%20this.userInput%20%3D%3D%3D%20null%20%3F%20%22%22%20%3A%20this.userInput%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20getBoxInfo(args)%20%7B%0D%0A%20%20%20%20%20%20return%20this.askBoxInfo%5Bargs.INFO%20%3D%3D%3D%20%22count%22%20%3F%200%20%3A%201%5D%3B%0D%0A%20%20%20%20%7D%0D%0A%0D%0A%20%20%20%20setSubmitEvent(args)%20%7B%0D%0A%20%20%20%20%20%20this.forceInput%20%3D%20args.ENTER%3B%0D%0A%20%20%20%20%7D%0D%0A%20%20%7D%0D%0A%0D%0A%20%20Scratch.extensions.register(new%20BetterInputSP())%3B%0D%0A%7D)(Scratch)%3B%0D%0A%20%7D)(Scratch)%3B"]) {
vm.extensionManager.loadExtensionURL(extension);
}
+ vm.runtime.on('PROJECT_RUN_STOP', () => {
+ if (!vm.isPaused || !vm.isPaused()) {
+ window.close();
+ }
+ });
vm.runtime.isProjectPermissionManagerDisabled = true;
} catch (e) {
@@ -364,7 +369,7 @@ version 0.6.9
}
-
+