# upm_plugin_restore v.0.1 # Restore modified plugins to their original contents. # Mary Fredborg # http://utterplush.com/txp-plugins/upm-plugin-restore # .......................................................................... # A plugin for Textpattern # http://textpattern.com/ # # Adding Plugins to Your Textpattern Installation # http://textpattern.net/wiki/index.php?title=Intermediate_Weblog_Model#Adding_Plugins_to_Your_Textpattern_Installation # .......................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE4OiJ1cG1fcGx1Z2luX3Jlc3RvcmUiO3M6MTE6ImRlc2Ny aXB0aW9uIjtzOjUyOiJSZXN0b3JlIG1vZGlmaWVkIHBsdWdpbnMgdG8gdGhlaXIgb3JpZ2lu YWwgY29udGVudHMuIjtzOjc6InZlcnNpb24iO3M6MzoiMC4xIjtzOjQ6InR5cGUiO2k6MTtz OjY6ImF1dGhvciI7czoxMzoiTWFyeSBGcmVkYm9yZyI7czoxMDoiYXV0aG9yX3VyaSI7czo1 MjoiaHR0cDovL3V0dGVycGx1c2guY29tL3R4cC1wbHVnaW5zL3VwbS1wbHVnaW4tcmVzdG9y ZSI7czo0OiJjb2RlIjtzOjM0NDY6ImlmICh0eHBpbnRlcmZhY2UgPT0gJ2FkbWluJykKCXsK CQlhZGRfcHJpdnMoJ3VwbV9wbHVnaW5fcmVzdG9yZScsICcxLDInKTsKCQlyZWdpc3Rlcl90 YWIoJ2FkbWluJywgJ3VwbV9wbHVnaW5fcmVzdG9yZScsIHVwbV9wbHVnaW5fcmVzdG9yZV9n VHh0KCdwbHVnaW5fcmVzdG9yZScpKTsKCQlyZWdpc3Rlcl9jYWxsYmFjaygndXBtX3BsdWdp bl9yZXN0b3JlJywgJ3VwbV9wbHVnaW5fcmVzdG9yZScpOwoJfQoKLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCWZ1 bmN0aW9uIHVwbV9wbHVnaW5fcmVzdG9yZSgkZXZlbnQsICRzdGVwKQoJewoJCXN3aXRjaCAo JHN0ZXApCgkJewoJCQljYXNlICdyZXN0b3JlJzoKCQkJCXVwbV9wbHVnaW5fcmVzdG9yZV9y ZXN0b3JlKCk7CgkJCWJyZWFrOwoKCQkJY2FzZSAnbGlzdCc6CgkJCWRlZmF1bHQ6CgkJCQl1 cG1fcGx1Z2luX3Jlc3RvcmVfbGlzdCgpOwoJCQlicmVhazsKCQl9Cgl9CgovLyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CgoJZnVuY3Rpb24gdXBtX3BsdWdpbl9yZXN0b3JlX2xpc3QoJG1lc3NhZ2UgPSAnJykKCXsK CQlwYWdldG9wKHVwbV9wbHVnaW5fcmVzdG9yZV9nVHh0KCdwbHVnaW5fcmVzdG9yZScpLCAk bWVzc2FnZSk7CgoJCWVjaG8gbi5uLic8ZGl2IHN0eWxlPSJtYXJnaW46IDAgYXV0byAxMHB4 OyB3aWR0aDogMzhlbTsiPicuCgoJCQluLm4uaGVkKHVwbV9wbHVnaW5fcmVzdG9yZV9nVHh0 KCdwbHVnaW5fcmVzdG9yZScpLCAxKTsKCgkJJHJzID0gc2FmZV9yb3dzX3N0YXJ0KCduYW1l LCBkZXNjcmlwdGlvbicsICd0eHBfcGx1Z2luJywgIm1kNShjb2RlKSAhPSBjb2RlX21kNSBv cmRlciBieSBuYW1lIik7CgoJCWlmICgkcnMgYW5kIG51bVJvd3MoJHJzKSA+IDApCgkJewoJ CQllY2hvIG4ubi5ncmFmKHVwbV9wbHVnaW5fcmVzdG9yZV9nVHh0KCdzdW1tYXJ5JykpLgoK CQkJCW4ubi5ncmFmKHVwbV9wbHVnaW5fcmVzdG9yZV9nVHh0KCd3YXJuaW5nJykpLgoKCQkJ CW4ubi5zdGFydFRhYmxlKCdsaXN0JykuCgkJCQluLmFzc0hlYWQoJ3BsdWdpbicsICdkZXNj cmlwdGlvbicsICcnKTsKCgkJCXdoaWxlICgkYSA9IG5leHRSb3coJHJzKSkKCQkJewoJCQkJ ZXh0cmFjdCgkYSk7CgoJCQkJJG5hbWUgICAgICAgID0gaHRtbHNwZWNpYWxjaGFycygkbmFt ZSk7CgkJCQkkZGVzY3JpcHRpb24gPSBodG1sc3BlY2lhbGNoYXJzKCRkZXNjcmlwdGlvbik7 CgoJCQkJLy8gRml4IHVwIHRoZSBkZXNjcmlwdGlvbiBmb3IgY2xlYW4gY2FzZXMKCQkJCSRk ZXNjcmlwdGlvbiA9IHByZWdfcmVwbGFjZSgKCQkJCQlhcnJheSgKCQkJCQkJJyMmbHQ7YnIg LyZndDsjJywKCQkJCQkJJyMmbHQ7KC8/KGF8YnxpfGVtfHN0cm9uZykpJmd0OyMnLAoJCQkJ CQknIyZsdDthIGhyZWY9JnF1b3Q7KGh0dHBzP3xcLnxcL3xmdHApKFtBLVphLXowLTk6Lz8u PV9dKz8pJnF1b3Q7Jmd0OyMnCgkJCQkJKSwKCQkJCQlhcnJheSgnPGJyIC8+JywgJzwkMT4n LCAnPGEgaHJlZj0iJDEkMiI+JyksCgkJCQkJJGRlc2NyaXB0aW9uCgkJCQkpOwoKCQkJCWVj aG8gdHIoCgkJCQkJbi50ZCgkbmFtZSkuCgkJCQkJdGQoJGRlc2NyaXB0aW9uLCAyNjApLgoJ CQkJCXRkKAoJCQkJCQknPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249ImluZGV4LnBocCIg b25jbGljaz0icmV0dXJuIHZlcmlmeShcJycuZ1R4dCgnYXJlX3lvdV9zdXJlJykuJ1wnKTsi PicuCgkJCQkJCQknPGRpdj4nLgoJCQkJCQkJCSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1l PSJldmVudCIgdmFsdWU9InVwbV9wbHVnaW5fcmVzdG9yZSIgLz4nLgoJCQkJCQkJCSc8aW5w dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdGVwIiB2YWx1ZT0icmVzdG9yZSIgLz4nLgoJCQkJ CQkJCSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJuYW1lIiB2YWx1ZT0iJy4kbmFtZS4n IiAvPicuCgkJCQkJCQkJJzxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJzbWFsbGVyYm94 IiB2YWx1ZT0iJy51cG1fcGx1Z2luX3Jlc3RvcmVfZ1R4dCgncmVzdG9yZScpLiciIC8+Jy4K CQkJCQkJCSc8L2Rpdj4nLgoJCQkJCQknPC9mb3JtPicKCQkJCQkpCgkJCQkpOwoJCQl9CgoJ CQllY2hvIGVuZFRhYmxlKCk7CgkJfQoKCQllbHNlCgkJewoJCQllY2hvIG4ubi5ncmFmKHVw bV9wbHVnaW5fcmVzdG9yZV9nVHh0KCdub25lX21vZGlmaWVkJykpOwoJCX0KCgkJZWNobyBu Lm4uJzwvZGl2Pic7Cgl9CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJZnVuY3Rpb24gdXBtX3BsdWdpbl9yZXN0 b3JlX3Jlc3RvcmUoKQoJewoJCSRuYW1lID0gcHMoJ25hbWUnKTsKCgkJaWYgKHNhZmVfdXBk YXRlKCd0eHBfcGx1Z2luJywgImNvZGUgPSBjb2RlX3Jlc3RvcmUiLCAibmFtZSA9ICciLmRv U2xhc2goJG5hbWUpLiInIikpCgkJewoJCQkkbWVzc2FnZSA9IHVwbV9wbHVnaW5fcmVzdG9y ZV9nVHh0KCdyZXN0b3JlX3N1Y2Nlc3MnLCBhcnJheSgne25hbWV9JyA9PiAkbmFtZSkpOwoJ CX0KCgkJZWxzZQoJCXsKCQkJJG1lc3NhZ2UgPSB1cG1fcGx1Z2luX3Jlc3RvcmVfZ1R4dCgn cmVzdG9yZV9mYWlsdXJlJywgYXJyYXkoJ3tuYW1lfScgPT4gJG5hbWUpKTsKCQl9CgoJCXVw bV9wbHVnaW5fcmVzdG9yZV9saXN0KCRtZXNzYWdlKTsKCX0KCi8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCglmdW5j dGlvbiB1cG1fcGx1Z2luX3Jlc3RvcmVfZ1R4dCgkd2hhdCwgJGF0dHMgPSBhcnJheSgpKQoJ ewoJCSRsYW5nID0gYXJyYXkoCgkJCSdub25lX21vZGlmaWVkJyAgID0+ICdOb25lIG9mIHlv dXIgcGx1Z2lucyBoYXZlIGJlZW4gbW9kaWZpZWQgZnJvbSB0aGUgb3JpZ2luYWwuJywKCQkJ J3BsdWdpbl9yZXN0b3JlJyAgPT4gJ1BsdWdpbiBSZXN0b3JlJywKCQkJJ3Jlc3RvcmUnCSAg ICAgICAgPT4gJ1Jlc3RvcmUnLAoJCQkncmVzdG9yZV9mYWlsdXJlJyA9PiAnUGx1Z2luIDxz dHJvbmc+e25hbWV9PC9zdHJvbmc+IGNvdWxkIG5vdCBiZSByZXN0b3JlZC4nLAoJCQkncmVz dG9yZV9zdWNjZXNzJyA9PiAnUGx1Z2luIDxzdHJvbmc+e25hbWV9PC9zdHJvbmc+IHJlc3Rv cmVkLicsCgkJCSdzdW1tYXJ5JyAgICAgICAgID0+ICdUaGUgZm9sbG93aW5nIHBsdWdpbnMg aGF2ZSBiZWVuIG1vZGlmaWVkIGZyb20gdGhlIG9yaWdpbmFsLicsCgkJCSd3YXJuaW5nJyAg ICAgICAgID0+ICc8c3Ryb25nPk5vdGU6PC9zdHJvbmc+IE9uY2UgYSBwbHVnaW4gaGFzIGJl ZW4gcmVzdG9yZWQsIHRoZXJlIGlzIG5vIHdheSB0byByZWNvdmVyIHRoZSBwcmV2aW91cyBt b2RpZmljYXRpb25zIG1hZGUuJywKCQkpOwoKCQlyZXR1cm4gc3RydHIoJGxhbmdbJHdoYXRd LCAkYXR0cyk7Cgl9IjtzOjQ6ImhlbHAiO3M6NTY2OiJoMS4gdXBtX3BsdWdpbl9yZXN0b3Jl CgpUaGlzIHBsdWdpbiBhbGxvd3MgeW91IHRvIHJlc3RvcmUgeW91ciBtb2RpZmllZCBwbHVn aW5zIHRvIHRoZWlyIG9yaWdpbmFsIGNvbnRlbnRzLiBUbyB1c2UgaXQsIGFjdGl2YXRlIHRo ZSBwbHVnaW4sIGFuZCBhIG5ldyAiUGx1Z2luIFJlc3RvcmUiIHRhYiB3aWxsIGFwcGVhciB1 bmRlciB0aGUgQWRtaW4gdGFiLiBUaGUgcmVzdCBzaG91bGQgYmUgZmFpcmx5IG9idmlvdXMu CgpXaHkgZG9lcyB0aGUgcGx1Z2luIG5vdCBzaW1wbHkgYWRkIGEgbmV3IGxpbmsgdG8gdGhl IGV4aXN0aW5nIFBsdWdpbnMgdGFiPyBRdWl0ZSBzaW1wbHksIFRleHRwYXR0ZXJuIGRvZXMg bm90IGxvYWQgcGx1Z2lucyBvZiBhbnkga2luZCBvbiB0aGUgcGx1Z2lucyBwYWdlLiBUaGUg cmVhc29uIGZvciB0aGlzIGlzIHRvIHByZXZlbnQgYSBzaXR1YXRpb24gd2hlcmUgYSBwbHVn aW4gYnJlYWtzIHRoZSBwbHVnaW5zIHBhZ2UgKGVpdGhlciBpbnRlbnRpb25hbGx5IG9yIG90 aGVyd2lzZSkgYW5kIHN0b3BzIHlvdSBmcm9tIHVuaW5zdGFsbGluZyB0aGUgcm9ndWUgcGx1 Z2luLiI7czo4OiJoZWxwX3JhdyI7czo1NjY6ImgxLiB1cG1fcGx1Z2luX3Jlc3RvcmUKClRo aXMgcGx1Z2luIGFsbG93cyB5b3UgdG8gcmVzdG9yZSB5b3VyIG1vZGlmaWVkIHBsdWdpbnMg dG8gdGhlaXIgb3JpZ2luYWwgY29udGVudHMuIFRvIHVzZSBpdCwgYWN0aXZhdGUgdGhlIHBs dWdpbiwgYW5kIGEgbmV3ICJQbHVnaW4gUmVzdG9yZSIgdGFiIHdpbGwgYXBwZWFyIHVuZGVy IHRoZSBBZG1pbiB0YWIuIFRoZSByZXN0IHNob3VsZCBiZSBmYWlybHkgb2J2aW91cy4KCldo eSBkb2VzIHRoZSBwbHVnaW4gbm90IHNpbXBseSBhZGQgYSBuZXcgbGluayB0byB0aGUgZXhp c3RpbmcgUGx1Z2lucyB0YWI/IFF1aXRlIHNpbXBseSwgVGV4dHBhdHRlcm4gZG9lcyBub3Qg bG9hZCBwbHVnaW5zIG9mIGFueSBraW5kIG9uIHRoZSBwbHVnaW5zIHBhZ2UuIFRoZSByZWFz b24gZm9yIHRoaXMgaXMgdG8gcHJldmVudCBhIHNpdHVhdGlvbiB3aGVyZSBhIHBsdWdpbiBi cmVha3MgdGhlIHBsdWdpbnMgcGFnZSAoZWl0aGVyIGludGVudGlvbmFsbHkgb3Igb3RoZXJ3 aXNlKSBhbmQgc3RvcHMgeW91IGZyb20gdW5pbnN0YWxsaW5nIHRoZSByb2d1ZSBwbHVnaW4u IjtzOjE1OiJhbGxvd19odG1sX2hlbHAiO2k6MDtzOjM6Im1kNSI7czozMjoiYTRkMThhYTll MmMzNmNkMjUxOTVjYzg2N2ExNjAwMjQiO30=