# wet_plugout v0.2 # One button plugin state save and restore. # Robert Wetzlmayr # http://awasteofwords.com/software/wet_plugout-textpattern-plugin # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMDp7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuMiI7czo2OiJhdXRob3IiO3M6MTY6IlJvYmVy dCBXZXR6bG1heXIiO3M6MTA6ImF1dGhvcl91cmkiO3M6NjQ6Imh0dHA6Ly9hd2FzdGVvZndv cmRzLmNvbS9zb2Z0d2FyZS93ZXRfcGx1Z291dC10ZXh0cGF0dGVybi1wbHVnaW4iO3M6MTE6 ImRlc2NyaXB0aW9uIjtzOjQxOiJPbmUgYnV0dG9uIHBsdWdpbiBzdGF0ZSBzYXZlIGFuZCBy ZXN0b3JlLiI7czo0OiJ0eXBlIjtpOjE7czo0OiJuYW1lIjtzOjExOiJ3ZXRfcGx1Z291dCI7 czo0OiJoZWxwIjtzOjM5NDA6IgoJPGgzPkZpbmQgY29uZmxpY3RpbmcgcGx1Z2lucyB3aXRo IGVhc2U8L2gzPgoKCTxwPjxzdHJvbmc+d2V0X3BsdWdvdXQ8L3N0cm9uZz4gc2F2ZXMgYW5k IHJlc3RvcmVzIGFsbCBwbHVnaW5zJiM4MjE3OyAmIzgyMTY7YWN0aXZlJiM4MjE3OyBzdGF0 ZSBhdCB0aGUgY2xpY2sgb2Ygb25lIGJ1dHRvbi48L3A+CgoJPGg0PnVzYWdlOjwvaDQ+CgoJ PG9sPgoJPGxpPkluc3RhbGwsIGVuYWJsZSwgZW5qb3kgJiM4MjExOyBubyBjb25maWd1cmF0 aW9uIHJlcXVpcmVkLiBEaXNhYmxlIGFuZCByZS1lbmFibGUgYWxsIGFjdGl2ZSBwbHVnaW5z IG9uIHRoZSBleHRlbnNpb24gdGFiIGxhYmVsbGVkIDxhIGhyZWY9Ij9ldmVudD13ZXRfcGx1 Z291dCI+UGx1Z291dDwvYT4uPC9saT4KCTwvb2w+CgoJPGg0PkxpY2VuY2UgYW5kIERpc2Ns YWltZXI8L2g0PgoKCTxwPlRoaXMgcGx1Zy1pbiBpcyByZWxlYXNlZCB1bmRlciB0aGUgPGEg aHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC50eHQiPkdudSBHZW5lcmFs IFB1YmxpYyBMaWNlbmNlPC9hPi48L3A+CgoKCiAKJHBsdWdpblsndmVyc2lvbiddID0gJzAu Mic7CiRwbHVnaW5bJ2F1dGhvciddID0gJ1JvYmVydCBXZXR6bG1heXInOwokcGx1Z2luWydh dXRob3JfdXJpJ10gPSAnaHR0cDovL2F3YXN0ZW9md29yZHMuY29tL3NvZnR3YXJlL3dldF9w bHVnb3V0LXRleHRwYXR0ZXJuLXBsdWdpbic7CiRwbHVnaW5bJ2Rlc2NyaXB0aW9uJ10gPSAn T25lIGJ1dHRvbiBwbHVnaW4gc3RhdGUgc2F2ZSBhbmQgcmVzdG9yZS4nOwokcGx1Z2luWyd0 eXBlJ10gPSAxOwoKaWYgKCFkZWZpbmVkKCd0eHBpbnRlcmZhY2UnKSkKICBAaW5jbHVkZV9v bmNlKCd6ZW1fdHBsLnBocCcpOwoKaWYgKDApIHsKPz4KIyAtLS0gQkVHSU4gUExVR0lOIEhF TFAgLS0tCgpoMy4gRmluZCBjb25mbGljdGluZyBwbHVnaW5zIHdpdGggZWFzZQoKKndldF9w bHVnb3V0KiBzYXZlcyBhbmQgcmVzdG9yZXMgYWxsIHBsdWdpbnMnICdhY3RpdmUnIHN0YXRl IGF0IHRoZSBjbGljayBvZiBvbmUgYnV0dG9uLgoKaDQuIHVzYWdlOgoKIyBJbnN0YWxsLCBl bmFibGUsIGVuam95IC0gbm8gY29uZmlndXJhdGlvbiByZXF1aXJlZC4gRGlzYWJsZSBhbmQg cmUtZW5hYmxlIGFsbCBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgZXh0ZW5zaW9uIHRhYiBsYWJl bGxlZCAiUGx1Z291dCI6P2V2ZW50PXdldF9wbHVnb3V0LgoKaDQuIExpY2VuY2UgYW5kIERp c2NsYWltZXIKClRoaXMgcGx1Zy1pbiBpcyByZWxlYXNlZCB1bmRlciB0aGUgIkdudSBHZW5l cmFsIFB1YmxpYyBMaWNlbmNlIjpodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLnR4 dC4KCiMgLS0tIEVORCBQTFVHSU4gSEVMUCAtLS0KCjw/cGhwCn0KCiMgLS0tIEJFR0lOIFBM VUdJTiBDT0RFIC0tLQoKaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykgewogIGFkZF9w cml2cygnd2V0X3BsdWdvdXQnLCAnMSwyJyk7CiAgcmVnaXN0ZXJfdGFiKCdleHRlbnNpb25z JywgJ3dldF9wbHVnb3V0JywgJ1BsdWdvdXQnKTsKICByZWdpc3Rlcl9jYWxsYmFjaygnd2V0 X3BsdWdvdXQnLCAnd2V0X3BsdWdvdXQnKTsKfQoKZnVuY3Rpb24gd2V0X3BsdWdvdXQoJGV2 ZW50LCAkc3RlcCkKewogIGdsb2JhbCAkcHJlZnM7CiAgZnVuY3Rpb24gbXlfZ1R4dCgkdGV4 dCkKICB7CiAgICAkZ1R4dCA9IGFycmF5ICgKCSAgICAnZGlzYWJsZScgPT4gJ0Rpc2FibGUn LAoJICAgICdlbmFibGUnID0+ICdFbmFibGUnLAoJICAgICdub19hY3RpdmVfcGx1Z2lucycg PT4gJ05vIGFjdGl2ZSBwbHVnaW5zLicsCgkgICAgJ2Fib3V0X3RvX2Rpc2FibGUnID0+ICdU aGVzZSBwbHVnaW5zIHdpbGwgYmUgZGlzYWJsZWQ6JywKCSAgICAnYWJvdXRfdG9fZW5hYmxl JyA9PiAnVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGVuYWJsZWQ6JywKICAgIAknZmlsZV9lcnJv cicgPT4gJ0EgcHJvYmxlbSBvY2N1cmVkIHdoaWxlIHdyaXRpbmcgdG8gZmlsZSAnLAogICAg CSdtYW5hZ2VfcGx1Z2lucycgPT4gJ01hbmFnZSBwbHVnaW5zJwogICAgKTsKICAgIHJldHVy biAkZ1R4dFskdGV4dF07CiAgfQoKICBmdW5jdGlvbiBmb3V0KCRmLCAkcykgewogIAkkciA9 IGZvcGVuKCRmLCAndycpOwogIAlpZighJHIpIHJldHVybiBmYWxzZTsKICAJJG91dCA9IGZw dXRzKCRyLCAkcyk7CiAgCWZjbG9zZSgkcik7CiAgCXJldHVybiAkb3V0OwogIH0KICBmdW5j dGlvbiBmaW4oJGYpIHsKICAJJHIgPSBmb3BlbigkZiwgJ3InKTsKICAJaWYoISRyKSByZXR1 cm4gZmFsc2U7CiAgCSRvdXQgPSBmZ2V0cygkcik7CiAgCWZjbG9zZSgkZik7CiAgCXJldHVy biAkb3V0OwogIH0KCiAgJGYgPSAkcHJlZnNbJ3RlbXBkaXInXS4nLycuX19GVU5DVElPTl9f LicudHh0JzsKICAkZmlsZWVycm9yID0gZmFsc2U7CgogIHBhZ2V0b3AoJ1BsdWdvdXQnLCAo IWVtcHR5KCRzdGVwKSA/IGdUeHQoJ3ByZWZlcmVuY2VzX3NhdmVkJykgOiAnJykpOwoKICBp ZiAoJHN0ZXAgPT0gJ2Rpc2FibGUnKQl7CiAgCS8vIGN1cnJlbnRseSBhY3RpdmUgcGx1Z2lu cz8KCSRwbHVnaW5zID0gc2FmZV9jb2x1bW4oJ25hbWUnLCAndHhwX3BsdWdpbicsICJzdGF0 dXM9JzEnIGFuZCBuYW1lIDw+ICciLl9fRlVOQ1RJT05fXy4iJyBvcmRlciBieSBuYW1lIik7 CiAgICBzYWZlX3VwZGF0ZSgndHhwX3BsdWdpbicsICdzdGF0dXMgPSBcJzBcJycsICduYW1l IGluIChcJycuam9pbigiJywgJyIsICRwbHVnaW5zKS4nXCcpJyk7CiAgICAkcGx1Z2lucyA9 IGpvaW4oJ3wnLCAkcGx1Z2lucyk7CiAgICBpZighZm91dCgkZiwgJHBsdWdpbnMpKSAkZmls ZXJyb3IgPSB0cnVlOwogIH0KICBlbHNlaWYgKCRzdGVwID09ICdlbmFibGUnKSB7CiAgICAv LyBwcmV2aW91c2x5IHNhdmVkIHBsdWdpbiBzdGF0ZT8KICAgICRwbHVnaW5zID0gQGZpbigk Zik7CiAgICBpZighZW1wdHkoJHBsdWdpbnMpKSB7CiAgICAJJHBsdWdpbnMgPSBleHBsb2Rl KCd8JywgJHBsdWdpbnMpOwogICAgCXNhZmVfdXBkYXRlKCd0eHBfcGx1Z2luJywgJ3N0YXR1 cyA9IFwnMVwnJywgJ25hbWUgaW4gKFwnJy5qb2luKCRwbHVnaW5zLCInLCAnIikuJ1wnKScp OwogICAgCXVubGluaygkZik7CiAgICB9CiAgfQoKICAkcGx1Z2lucyA9IEBmaW4oJGYpOwog IGlmIChlbXB0eSgkcGx1Z2lucykpIHsKICAgICRzdGVwID0gJ2Rpc2FibGUnOwogICAgJHBs dWdpbnMgPSBzYWZlX2NvbHVtbignbmFtZScsICd0eHBfcGx1Z2luJywgInN0YXR1cz0nMScg YW5kIG5hbWUgPD4gJyIuX19GVU5DVElPTl9fLiInIG9yZGVyIGJ5IG5hbWUiKTsKICAgICRw bHVnaW5zID0gam9pbignLCAnLCAkcGx1Z2lucyk7CiAgfSBlbHNlIHsKICAJICRzdGVwID0g J2VuYWJsZSc7CiAgCSAkcGx1Z2lucyA9IGpvaW4oJywgJywgZXhwbG9kZSgnfCcsICRwbHVn aW5zKSk7CiAgfQoKICBlY2hvCiAgJzxkaXYgc3R5bGU9Im1hcmdpbjphdXRvO3dpZHRoOjMw ZW0iPic7CgogIGlmIChlbXB0eSgkcGx1Z2lucykpIHsKCWVjaG8gbXlfZ1R4dCgnbm9fYWN0 aXZlX3BsdWdpbnMnKTsKICB9IGVsc2VpZiAoJGZpbGVlcnJvcikgewogIAllY2hvIG15X2dU eHQoJ2ZpbGVfZXJyb3InKS4kZjsKICB9IGVsc2UgewogIAllY2hvIGZvcm0oCiAgCQluLmhl ZCgoJHN0ZXAgPT0gJ2Rpc2FibGUnKSA/IG15X2dUeHQoJ2Fib3V0X3RvX2Rpc2FibGUnKSA6 IG15X2dUeHQoJ2Fib3V0X3RvX2VuYWJsZScpLCAzKS4KCSAgCW4uZ3JhZigkcGx1Z2lucyku CgkgICAgbi5lSW5wdXQoX19GVU5DVElPTl9fKS4KCSAgICBuLnNJbnB1dCgkc3RlcCkuCgkg ICAgbi5ncmFmKGZJbnB1dCgnc3VibWl0JywgJycsIG15X2dUeHQoJHN0ZXApLCAnc21hbGxl cmJveCcpKS4KCSAgICBuLmdyYWYoaHJlZihteV9nVHh0KCdtYW5hZ2VfcGx1Z2lucycpLCc/ ZXZlbnQ9cGx1Z2luJykpCgkgICk7CiAgfQogIGVjaG8gJzwvZGl2Pic7Cn0KIyAtLS0gRU5E IFBMVUdJTiBDT0RFIC0tLQoiO3M6NDoiY29kZSI7czoyNTE0OiIKaWYgKEB0eHBpbnRlcmZh Y2UgPT0gJ2FkbWluJykgewogIGFkZF9wcml2cygnd2V0X3BsdWdvdXQnLCAnMSwyJyk7CiAg cmVnaXN0ZXJfdGFiKCdleHRlbnNpb25zJywgJ3dldF9wbHVnb3V0JywgJ1BsdWdvdXQnKTsK ICByZWdpc3Rlcl9jYWxsYmFjaygnd2V0X3BsdWdvdXQnLCAnd2V0X3BsdWdvdXQnKTsKfQoK ZnVuY3Rpb24gd2V0X3BsdWdvdXQoJGV2ZW50LCAkc3RlcCkKewogIGdsb2JhbCAkcHJlZnM7 CiAgZnVuY3Rpb24gbXlfZ1R4dCgkdGV4dCkKICB7CiAgICAkZ1R4dCA9IGFycmF5ICgKCSAg ICAnZGlzYWJsZScgPT4gJ0Rpc2FibGUnLAoJICAgICdlbmFibGUnID0+ICdFbmFibGUnLAoJ ICAgICdub19hY3RpdmVfcGx1Z2lucycgPT4gJ05vIGFjdGl2ZSBwbHVnaW5zLicsCgkgICAg J2Fib3V0X3RvX2Rpc2FibGUnID0+ICdUaGVzZSBwbHVnaW5zIHdpbGwgYmUgZGlzYWJsZWQ6 JywKCSAgICAnYWJvdXRfdG9fZW5hYmxlJyA9PiAnVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGVu YWJsZWQ6JywKICAgIAknZmlsZV9lcnJvcicgPT4gJ0EgcHJvYmxlbSBvY2N1cmVkIHdoaWxl IHdyaXRpbmcgdG8gZmlsZSAnLAogICAgCSdtYW5hZ2VfcGx1Z2lucycgPT4gJ01hbmFnZSBw bHVnaW5zJwogICAgKTsKICAgIHJldHVybiAkZ1R4dFskdGV4dF07CiAgfQoKICBmdW5jdGlv biBmb3V0KCRmLCAkcykgewogIAkkciA9IGZvcGVuKCRmLCAndycpOwogIAlpZighJHIpIHJl dHVybiBmYWxzZTsKICAJJG91dCA9IGZwdXRzKCRyLCAkcyk7CiAgCWZjbG9zZSgkcik7CiAg CXJldHVybiAkb3V0OwogIH0KICBmdW5jdGlvbiBmaW4oJGYpIHsKICAJJHIgPSBmb3Blbigk ZiwgJ3InKTsKICAJaWYoISRyKSByZXR1cm4gZmFsc2U7CiAgCSRvdXQgPSBmZ2V0cygkcik7 CiAgCWZjbG9zZSgkZik7CiAgCXJldHVybiAkb3V0OwogIH0KCiAgJGYgPSAkcHJlZnNbJ3Rl bXBkaXInXS4nLycuX19GVU5DVElPTl9fLicudHh0JzsKICAkZmlsZWVycm9yID0gZmFsc2U7 CgogIHBhZ2V0b3AoJ1BsdWdvdXQnLCAoIWVtcHR5KCRzdGVwKSA/IGdUeHQoJ3ByZWZlcmVu Y2VzX3NhdmVkJykgOiAnJykpOwoKICBpZiAoJHN0ZXAgPT0gJ2Rpc2FibGUnKQl7CiAgCS8v IGN1cnJlbnRseSBhY3RpdmUgcGx1Z2lucz8KCSRwbHVnaW5zID0gc2FmZV9jb2x1bW4oJ25h bWUnLCAndHhwX3BsdWdpbicsICJzdGF0dXM9JzEnIGFuZCBuYW1lIDw+ICciLl9fRlVOQ1RJ T05fXy4iJyBvcmRlciBieSBuYW1lIik7CiAgICBzYWZlX3VwZGF0ZSgndHhwX3BsdWdpbics ICdzdGF0dXMgPSBcJzBcJycsICduYW1lIGluIChcJycuam9pbigiJywgJyIsICRwbHVnaW5z KS4nXCcpJyk7CiAgICAkcGx1Z2lucyA9IGpvaW4oJ3wnLCAkcGx1Z2lucyk7CiAgICBpZigh Zm91dCgkZiwgJHBsdWdpbnMpKSAkZmlsZXJyb3IgPSB0cnVlOwogIH0KICBlbHNlaWYgKCRz dGVwID09ICdlbmFibGUnKSB7CiAgICAvLyBwcmV2aW91c2x5IHNhdmVkIHBsdWdpbiBzdGF0 ZT8KICAgICRwbHVnaW5zID0gQGZpbigkZik7CiAgICBpZighZW1wdHkoJHBsdWdpbnMpKSB7 CiAgICAJJHBsdWdpbnMgPSBleHBsb2RlKCd8JywgJHBsdWdpbnMpOwogICAgCXNhZmVfdXBk YXRlKCd0eHBfcGx1Z2luJywgJ3N0YXR1cyA9IFwnMVwnJywgJ25hbWUgaW4gKFwnJy5qb2lu KCRwbHVnaW5zLCInLCAnIikuJ1wnKScpOwogICAgCXVubGluaygkZik7CiAgICB9CiAgfQoK ICAkcGx1Z2lucyA9IEBmaW4oJGYpOwogIGlmIChlbXB0eSgkcGx1Z2lucykpIHsKICAgICRz dGVwID0gJ2Rpc2FibGUnOwogICAgJHBsdWdpbnMgPSBzYWZlX2NvbHVtbignbmFtZScsICd0 eHBfcGx1Z2luJywgInN0YXR1cz0nMScgYW5kIG5hbWUgPD4gJyIuX19GVU5DVElPTl9fLiIn IG9yZGVyIGJ5IG5hbWUiKTsKICAgICRwbHVnaW5zID0gam9pbignLCAnLCAkcGx1Z2lucyk7 CiAgfSBlbHNlIHsKICAJICRzdGVwID0gJ2VuYWJsZSc7CiAgCSAkcGx1Z2lucyA9IGpvaW4o JywgJywgZXhwbG9kZSgnfCcsICRwbHVnaW5zKSk7CiAgfQoKICBlY2hvCiAgJzxkaXYgc3R5 bGU9Im1hcmdpbjphdXRvO3dpZHRoOjMwZW0iPic7CgogIGlmIChlbXB0eSgkcGx1Z2lucykp IHsKCWVjaG8gbXlfZ1R4dCgnbm9fYWN0aXZlX3BsdWdpbnMnKTsKICB9IGVsc2VpZiAoJGZp bGVlcnJvcikgewogIAllY2hvIG15X2dUeHQoJ2ZpbGVfZXJyb3InKS4kZjsKICB9IGVsc2Ug ewogIAllY2hvIGZvcm0oCiAgCQluLmhlZCgoJHN0ZXAgPT0gJ2Rpc2FibGUnKSA/IG15X2dU eHQoJ2Fib3V0X3RvX2Rpc2FibGUnKSA6IG15X2dUeHQoJ2Fib3V0X3RvX2VuYWJsZScpLCAz KS4KCSAgCW4uZ3JhZigkcGx1Z2lucykuCgkgICAgbi5lSW5wdXQoX19GVU5DVElPTl9fKS4K CSAgICBuLnNJbnB1dCgkc3RlcCkuCgkgICAgbi5ncmFmKGZJbnB1dCgnc3VibWl0JywgJycs IG15X2dUeHQoJHN0ZXApLCAnc21hbGxlcmJveCcpKS4KCSAgICBuLmdyYWYoaHJlZihteV9n VHh0KCdtYW5hZ2VfcGx1Z2lucycpLCc/ZXZlbnQ9cGx1Z2luJykpCgkgICk7CiAgfQogIGVj aG8gJzwvZGl2Pic7Cn0iO3M6ODoiaGVscF9yYXciO3M6NDI4OiIKaDMuIEZpbmQgY29uZmxp Y3RpbmcgcGx1Z2lucyB3aXRoIGVhc2UKCip3ZXRfcGx1Z291dCogc2F2ZXMgYW5kIHJlc3Rv cmVzIGFsbCBwbHVnaW5zJyAnYWN0aXZlJyBzdGF0ZSBhdCB0aGUgY2xpY2sgb2Ygb25lIGJ1 dHRvbi4KCmg0LiB1c2FnZToKCiMgSW5zdGFsbCwgZW5hYmxlLCBlbmpveSAtIG5vIGNvbmZp Z3VyYXRpb24gcmVxdWlyZWQuIERpc2FibGUgYW5kIHJlLWVuYWJsZSBhbGwgYWN0aXZlIHBs dWdpbnMgb24gdGhlIGV4dGVuc2lvbiB0YWIgbGFiZWxsZWQgIlBsdWdvdXQiOj9ldmVudD13 ZXRfcGx1Z291dC4KCmg0LiBMaWNlbmNlIGFuZCBEaXNjbGFpbWVyCgpUaGlzIHBsdWctaW4g aXMgcmVsZWFzZWQgdW5kZXIgdGhlICJHbnUgR2VuZXJhbCBQdWJsaWMgTGljZW5jZSI6aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC50eHQuCiI7czozOiJtZDUiO3M6MzI6ImU0 MWYxNzhkZGY3NmJkNDcyOWE2YTllZTU5ZTBkNmYwIjt9