# Name: smd_article_stats v0.23 # Type: Admin/Client side plugin # Get article/excerpt statistics and display them to visitors # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE3OiJzbWRfYXJ0aWNsZV9zdGF0cyI7czo2OiJhdXRob3Ii O3M6MTE6IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3Rl ZmRhd3Nvbi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC4yMyI7czoxMToiZGVzY3JpcHRp b24iO3M6NTk6IkdldCBhcnRpY2xlL2V4Y2VycHQgc3RhdGlzdGljcyBhbmQgZGlzcGxheSB0 aGVtIHRvIHZpc2l0b3JzIjtzOjQ6ImhlbHAiO3M6NDIyMDoiPGRpdiBpZD0ic21kX2hlbHAi PgoKCTxoMT5zbWRfYXJ0aWNsZV9zdGF0czwvaDE+CgoJPHA+UHV0IHRoaXMgdGFnIGluIHlv dXIgYXJ0aWNsZSBmb3JtIHRvIGRpc3BsYXkgaW5mbyBhYm91dCB0aGUgY3VycmVudCBhcnRp Y2xlLiBUYWdzIGFyZSBpZ25vcmVkLiBOb3RlIHRoYXQgaXQgb25seSBkaXNwbGF5cyB0aGUg YWN0dWFsIG51bWJlciBvZiB3b3JkcyBlbnRlcmVkIGluIHRoZSBhcnRpY2xlIGl0c2VsZiAm IzgyMTI7IGlmIHNvbWUgb2YgdGhlIGNvbnRlbnQgaXMgZGVyaXZlZCBmcm9tIG90aGVyIGZv cm1zLCBpdCB3aWxsIG5vdCBiZSBpbmNsdWRlZC48L3A+CgoJPGgyPkF0dHJpYnV0ZXM8L2gy PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPml0ZW08L3NwYW4+IDogbGlzdCBv ZiBpdGVtcyB5b3Ugd2FudCB0byBkaXNwbGF5LiBDdXJyZW50bHkgY2hvb3NlIGZyb20gPGNv ZGU+Ym9keTwvY29kZT4sIDxjb2RlPmV4Y2VycHQ8L2NvZGU+IG9yIDxjb2RlPnRpdGxlPC9j b2RlPiB0byBnZXQgdGhlIG51bWJlciBvZiB3b3JkcyBpbiB0aGUgcmVsZXZhbnQgZmllbGRz PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxhYmVsPC9zcGFuPiA6IGxhYmVsIHRl eHQgdG8gb3V0cHV0IGJlZm9yZSB0aGUgcmVxdWVzdGVkIGluZm88L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+bGFiZWx0YWc8L3NwYW4+IDogKFgpSFRNTCB0YWcgd2l0aG91dCBi cmFja2V0cyB0byB3cmFwIGFyb3VuZCB0aGUgbGFiZWw8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiAoWClIVE1MIHRhZyB3aXRob3V0IGJyYWNrZXRz IHRvIHdyYXAgYXJvdW5kIHRoZSBvdXRwdXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Y2xhc3M8L3NwYW4+IDogPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3Nu YW1lIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnPC9saT4KCTwvdWw+CgoJPGgyPkFkbWluIHNp ZGU8L2gyPgoKCTxwPk9uIHRoZSBXcml0ZSB0YWIsIHRoZSBudW1iZXIgb2Ygd29yZHMgaW4g dGhlIGJvZHkgLyBleGNlcnB0IGFyZSBkaXNwbGF5ZWQgaW4gYSBzdGF0cyBwYW5lbC4gSXQg aXMgdXBkYXRlZCBpbiByZWFsIHRpbWUgYXMgd29yZHMgYXJlIGVudGVyZWQuIFRoZSBhcnRp Y2xlIElEIGlzIGFsc28gZGlzcGxheWVkOyBoeXBlcmxpbmtlZCB0byB0aGUgYXJ0aWNsZSBp dHNlbGYgaWYgaXQgaXMgbGl2ZSBvciBzdGlja3kuPC9wPgoKCTxwPklmIHlvdSB3aXNoIHRv IG1vdmUgdGhlIHBhbmVsIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIG9uIHRoZSBXcml0ZSB0 YWIgeW91IGNhbiBtYW5pcHVsYXRlIGEgaGlkZGVuIHByZWZlcmVuY2UgKHlvdSBjb3VsZCB1 c2UgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zbWRfcHJlZmFsaXplciI+ c21kX3ByZWZhbGl6ZXI8L2E+IHBsdWdpbiBmb3IgdGhpcyB0YXNrKS4gQ3JlYXRlIGEgSGlk ZGVuIHByZWZlcmVuY2UgZm9yIHlvdXIgdXNlciBuYW1lIGNhbGxlZCA8Y29kZT5zbWRfYXJ0 aWNsZV9zdGF0c19wb3M8L2NvZGU+IGFuZCBnaXZlIGl0IG9uZSBvZiB0aGUgZm9sbG93aW5n IHZhbHVlczo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVzX2Fi b3ZlPC9zcGFuPiA6IChkZWZhdWx0IGxvY2F0aW9uKSBhYm92ZSB0aGUgU3RhdHVzIGJveDwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5leGNlcnB0X2JlbG93PC9zcGFuPiA6IElt bWVkaWF0ZWx5IGJlbmVhdGggdGhlIEV4Y2VycHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+YXV0aG9yX2JlbG93PC9zcGFuPiA6IEJlbmVhdGggdGhlIGF1dGhvciBpbmZvICh1 bmRlciB0aGUgRXhjZXJwdCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGl0bGVf YWJvdmU8L3NwYW4+IDogYWJvdmUgdGhlIFRpdGxlIGJveDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj50ZXh0aWxlX2hlbHBfYWJvdmU8L3NwYW4+IDogYWJvdmUgdGhlIFRleHRp bGUgSGVscCB0d2lzdHk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGV4dGlsZV9o ZWxwX2JlbG93PC9zcGFuPiA6IGJlbG93IHRoZSBUZXh0aWxlIEhlbHAgdHdpc3R5PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5vbmU8L3NwYW4+IDogZGlzYWJsZSB0aGUgcGFu ZWw8L2xpPgoJPC91bD4KCgk8aDI+Q2hhbmdlbG9nPC9oMj4KCgk8dWw+CgkJPGxpPjI0IEF1 ZyAyMDA5IHwgMC4xMCB8IEluaXRpYWwgcmVsZWFzZTwvbGk+CgkJPGxpPjA3IE5vdiAyMDA5 IHwgMC4yMCB8IEltcHJvdmVkIGNvdW50aW5nIHRvIGlnbm9yZSB0YWdzIGFuZCBhZGRlZCBy ZWFsLXRpbWUgYWRtaW4tc2lkZSBjb3VudGVyIChib3RoIHRoYW5rcyBzcGVla2UpPC9saT4K CQk8bGk+MjIgRmViIDIwMTAgfCAwLjIxIHwgUHJldmVudGVkIGVycm9yIG1lc3NhZ2UgaWYg c3RlcCBtYW5nbGVkPC9saT4KCQk8bGk+MDYgSnVuIDIwMTEgfCAwLjIyIHwgQWRkZWQgcGFy YWdyYXBoIHdyYXBwZXIgdG8gZmllbGRzZXQgZm9yIGNvbnNpc3RlbmN5IHdpdGggPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7cyBsYXlvdXQgKHRoYW5rcyBwaGlsd2Fy ZWhhbSk8L2xpPgoJCTxsaT4xNCBGZWIgMjAxMiB8IDAuMjMgfCBGaXhlZCBleGNlcnB0X2Jl bG93IGF1dG8tdXBkYXRlIG1lY2hhbmlzbSA7IGFkZGVkIGF1dGhvcl9iZWxvdyBwb3NpdGlv bjwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRob3IgLyBjcmVkaXRzPC9oMj4KCgk8cD5Xcml0dGVu IGJ5IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3Nv bjwvYT4uIFRoYW5rcyB0byBib3RoIHplbSBhbmQgaWJsYXN0b2ZmIGZvciB0aGUgb3JpZ2lu YWwgd29ya3MgdGhhdCB0aGlzIHBsdWdpbiBib3Jyb3dzIGFzIGl0cyBmb3VuZGF0aW9uLjwv cD4KCjwvZGl2Pgo8IS0tICoqKiBCRUdJTiBQTFVHSU4gQ1NTICoqKiAtLT4KPHN0eWxlIHR5 cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVs cCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5l dyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNz bWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRv dHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBt YXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgaDEgeyBj b2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7 IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAx cHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAx N3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3NtZF9oZWxwIGgzIHsgY29sb3I6ICMyNzU2 ODU7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6 IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB0ZXh0 LWRlY29yYXRpb246dW5kZXJsaW5lO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4 IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHgg MCAwIDt0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXRubSB7IGZv bnQtd2VpZ2h0OmJvbGQ7IGNvbG9yOiMzM2Q7IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dy b3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7 d2lkdGg6OTAlOyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZy1ib3R0b206MWVtO30KI3Nt ZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2JvcmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGlu ZzouNWVtIDA7fQojc21kX2hlbHAgdWwgeyBsaXN0LXN0eWxlLXR5cGU6c3F1YXJlOyB9CiNz bWRfaGVscCAucmVxdWlyZWQge2NvbG9yOnJlZDt9CiNzbWRfaGVscCBsaSB7IG1hcmdpbjo1 cHggMjBweCA1cHggMzBweDsgfQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1cHg7 IH0KPC9zdHlsZT4KPCEtLSAqKiogRU5EIFBMVUdJTiBDU1MgKioqIC0tPgoiO3M6NDoiY29k ZSI7czozOTE0OiJpZiAoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJcmVnaXN0ZXJf Y2FsbGJhY2soInNtZF9hcnRpY2xlX2luZm8iLCAiYXJ0aWNsZSIpOw0KfQ0KDQovLyBDbGll bnQtc2lkZSBpbmZvDQpmdW5jdGlvbiBzbWRfYXJ0aWNsZV9zdGF0cygkYXR0cywgJHRoaW5n PU5VTEwpIHsNCglnbG9iYWwgJHRoaXNhcnRpY2xlOw0KDQoJYXNzZXJ0X2FydGljbGUoKTsN Cg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2NsYXNz JyA9PiBfX0ZVTkNUSU9OX18sDQoJCSdicmVhaycgPT4gJycsDQoJCSdsYWJlbCcgPT4gJycs DQoJCSdsYWJlbHRhZycgPT4gJycsDQoJCSdpdGVtJyA9PiAnJywNCgkpLCAkYXR0cykpOw0K DQoJJG91dCA9IGFycmF5KCk7DQoJJGl0ZW0gPSBkb19saXN0KCRpdGVtKTsNCgkkb3V0W10g PSBzbWRfYXJ0aWNsZV9pbmZvX2NvdW50KCRpdGVtLCAkdGhpc2FydGljbGVbJ2JvZHknXSwg JHRoaXNhcnRpY2xlWydleGNlcnB0J10sICR0aGlzYXJ0aWNsZVsndGl0bGUnXSk7DQoNCgly ZXR1cm4gZG9MYWJlbCgkbGFiZWwsICRsYWJlbHRhZykuZG9XcmFwKCRvdXQsICR3cmFwdGFn LCAkYnJlYWssICRjbGFzcyk7DQp9DQoNCi8vIEFkbWluLXNpZGUgaW5mbyAtLSBhdXRvLXVw ZGF0ZWQgdmlhIGpRdWVyeQ0KZnVuY3Rpb24gc21kX2FydGljbGVfaW5mbygkZXZlbnQsICRz dGVwKSB7DQoJZXh0cmFjdChncHNhKGFycmF5KCd2aWV3JykpKTsNCg0KCWluY2x1ZGVfb25j ZSB0eHBhdGguJy9wdWJsaXNoL3RhZ2hhbmRsZXJzLnBocCc7DQoJaWYoISR2aWV3IHx8IGdw cygnc2F2ZScpIHx8IGdwcygncHVibGlzaCcpKSB7DQoJCSR2aWV3ID0gJ3RleHQnOw0KCX0N Cg0KCWlmICgkdmlldyA9PSAndGV4dCcpIHsNCgkJJHNjcmVlbl9sb2NzID0gYXJyYXkoDQoJ CQknbm9uZScgPT4gJycsDQoJCQknZXhjZXJwdF9iZWxvdycgPT4gJ2pxfC5leGNlcnB0fGFm dGVyJywNCgkJCSdhdXRob3JfYmVsb3cnID0+ICdqcXwuYXV0aG9yfGFmdGVyJywNCgkJCSdz dGF0dXNfYWJvdmUnID0+ICdqcXwjd3JpdGUtc3RhdHVzfGJlZm9yZScsDQoJCQkndGl0bGVf YWJvdmUnID0+ICdqcXwjYXJ0aWNsZS1tYWlufHByZXBlbmQnLA0KCQkJJ3RleHRpbGVfaGVs cF9hYm92ZScgPT4gJ2pxfCNhcnRpY2xlLWNvbC0xfHByZXBlbmQnLA0KCQkJJ3RleHRpbGVf aGVscF9iZWxvdycgPT4gJ2pxfCN0ZXh0aWxlX2hlbHB8YWZ0ZXInLA0KCQkpOw0KDQoJCS8v IENoZWNrIGhpZGRlbiBwcmVmIGFuZCBzYW5pdGl6ZQ0KCQkkcG9zbiA9IGdldF9wcmVmKCdz bWRfYXJ0aWNsZV9zdGF0c19wb3MnLCAnc3RhdHVzX2Fib3ZlJyk7DQoJCSRwb3NuID0gKGFy cmF5X2tleV9leGlzdHMoJHBvc24sICRzY3JlZW5fbG9jcykpID8gJHBvc24gOiAnc3RhdHVz X2Fib3ZlJzsNCgkJJHBsYWNlciA9IGV4cGxvZGUoJ3wnLCAkc2NyZWVuX2xvY3NbJHBvc25d KTsNCg0KCQkkaWQgPSAoZW1wdHkoJEdMT0JBTFNbJ0lEJ10pID8gZ3BzKCdJRCcpIDogJEdM T0JBTFNbJ0lEJ10pOw0KCQkkaXRlbSA9IGFycmF5KCdleGNlcnB0JywgJ2JvZHknKTsNCgkJ aWYgKGVtcHR5KCRpZCkpIHsNCgkJCSRycyA9IGFycmF5KCdCb2R5JyA9PiAnJywgJ0V4Y2Vy cHQnID0+ICcnLCAnU3RhdHVzJyA9PiAnJyk7DQoJCX0gZWxzZSB7DQoJCQkkcnMgPSBzYWZl X3JvdygnQm9keSwgRXhjZXJwdCwgU3RhdHVzJywgJ3RleHRwYXR0ZXJuJywgJ0lEPScuZG9T bGFzaCgkaWQpKTsNCgkJfQ0KDQoJCSRid2MgPSBzbWRfYXJ0aWNsZV9pbmZvX2NvdW50KCRp dGVtLCAkcnNbJ0JvZHknXSwgJycsICcnKTsNCgkJJGV3YyA9IHNtZF9hcnRpY2xlX2luZm9f Y291bnQoJGl0ZW0sICcnLCAkcnNbJ0V4Y2VycHQnXSwgJycpOw0KCQkkd29yZHMgPSAkYndj ICsgJGV3YzsNCgkJJGlkbGluayA9ICgkaWQgJiYgaW5fYXJyYXkoJHJzWydTdGF0dXMnXSwg YXJyYXkoNCw1KSkpID8gJzxhIGhyZWY9IicgLnBlcm1saW5rdXJsX2lkKCRpZCkuJyI+JyAu JGlkLiAnPC9hPicgOiAkaWQ7DQoJCSRvdXQxID0gJzxmaWVsZHNldD48bGVnZW5kPkFydGlj bGUgU3RhdHM8L2xlZ2VuZD48cD48c3BhbiBjbGFzcz0ic21kX2FydGljbGVfc3RhdHNfd2Mi PicuJHdvcmRzLic8L3NwYW4+IHdvcmQ8c3BhbiBjbGFzcz0ic21kX2FydGljbGVfc3RhdHNf d2QiPicuKCgkd29yZHM9PTEpPycnOidzJykuJzwvc3Bhbj46ICggPHNwYW4gY2xhc3M9InNt ZF9hcnRpY2xlX3N0YXRzX2JjIj4nLiRid2MuJzwvc3Bhbj4gLyA8c3BhbiBjbGFzcz0ic21k X2FydGljbGVfc3RhdHNfZWMiPicuJGV3Yy4nPC9zcGFuPiApJy4oKCRpZCkgPyAnIHwgaWQ6 ICcgLiRpZGxpbmsgOiAnJykuJzwvcD48L2ZpZWxkc2V0Pic7DQoJCSRvdXQyID0gPDw8RU9K Uw0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KalF1ZXJ5KGZ1bmN0aW9uKCkg ew0KCWpRdWVyeSgiI2JvZHksICNleGNlcnB0Iikua2V5dXAoZnVuY3Rpb24oKSB7DQoJCXZh ciBiZHkgPSBqUXVlcnkoIiNib2R5IikudmFsKCk7DQoJCWJkeSArPSAoYmR5Lmxlbmd0aD4w KSA/ICIgIiA6ICIiOw0KCQl2YXIgZXhjID0galF1ZXJ5KCIjZXhjZXJwdCIpLnZhbCgpOw0K CQlleGMgKz0gKGV4Yy5sZW5ndGg+MCkgPyAiICIgOiAiIjsNCgkJdmFyIGJ3YyA9IGJkeS5y ZXBsYWNlKC8oPChbXj5dKyk+KS9pZywiIikuc3BsaXQoL1xzKy8pLmxlbmd0aC0xOw0KCQl2 YXIgZXdjID0gZXhjLnJlcGxhY2UoLyg8KFtePl0rKT4pL2lnLCIiKS5zcGxpdCgvXHMrLyku bGVuZ3RoLTE7DQoJCXZhciB3ZHMgPSBid2MrZXdjOw0KCQlqUXVlcnkoIi5zbWRfYXJ0aWNs ZV9zdGF0c193YyIpLnRleHQod2RzKTsNCgkJalF1ZXJ5KCIuc21kX2FydGljbGVfc3RhdHNf d2QiKS50ZXh0KCgod2RzPT0xKT8iIjoicyIpKTsNCgkJalF1ZXJ5KCIuc21kX2FydGljbGVf c3RhdHNfYmMiKS50ZXh0KGJ3Yyk7DQoJCWpRdWVyeSgiLnNtZF9hcnRpY2xlX3N0YXRzX2Vj IikudGV4dChld2MpOw0KCX0pOw0KfSk7DQo8L3NjcmlwdD4NCkVPSlM7DQoJCWlmICgkcGxh Y2VyWzBdID09ICdqcScpIHsNCgkJCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny aXB0Ij5qUXVlcnkoZnVuY3Rpb24oKSB7IGpRdWVyeSgiJy4kcGxhY2VyWzFdLiciKS4nLiRw bGFjZXJbMl0uJyhcJycuJG91dDEuJ1wnKTsgfSk7PC9zY3JpcHQ+Jy4kb3V0MjsNCgkJfQ0K CX0NCn0NCg0KLy8gTGlicmFyeSBmdW5jdGlvbg0KZnVuY3Rpb24gc21kX2FydGljbGVfaW5m b19jb3VudCgkaXRlbSwgJGJvZHksICRleGNlcnB0LCAkdGl0bGUpIHsNCgkkd29yZHMgPSAw Ow0KCSRub3RhZ3MgPSAnLyg8KFtePl0rPyk+KS8nOw0KCSRib2R5ID0gcHJlZ19yZXBsYWNl KCRub3RhZ3MsICcnLCB0cmltKCRib2R5KSkgLiAoKHN0cmxlbigkYm9keSk9PTApID8gJycg OiAnICcpOw0KCSRleGNlcnB0ID0gcHJlZ19yZXBsYWNlKCRub3RhZ3MsICcnLCB0cmltKCRl eGNlcnB0KSkgLiAoKHN0cmxlbigkZXhjZXJwdCk9PTApID8gJycgOiAnICcpOw0KCSR0aXRs ZSA9IHByZWdfcmVwbGFjZSgkbm90YWdzLCAnJywgdHJpbSgkdGl0bGUpKSAuICgoc3RybGVu KCR0aXRsZSk9PTApID8gJycgOiAnICcpOw0KDQoJZm9yZWFjaCAoJGl0ZW0gYXMgJHdoYXRu b3QpIHsNCgkJc3dpdGNoICgkd2hhdG5vdCkgew0KCQkJY2FzZSAiYm9keSI6DQoJCQkJJHdv cmRzICs9IHByZWdfbWF0Y2hfYWxsKCdAXHMrQCcsICRib2R5LCAkbSk7DQoJCQkJYnJlYWs7 DQoJCQljYXNlICJleGNlcnB0IjoNCgkJCQkkd29yZHMgKz0gcHJlZ19tYXRjaF9hbGwoJ0Bc cytAJywgJGV4Y2VycHQsICRtKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgInRpdGxlIjoNCgkJ CQkkd29yZHMgKz0gcHJlZ19tYXRjaF9hbGwoJ0BccytAJywgJHRpdGxlLCAkbSk7DQoJCQkJ YnJlYWs7DQoJCX0NCgl9DQoJcmV0dXJuICR3b3JkczsNCn0NCiI7czo0OiJ0eXBlIjtzOjE6 IjEiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6Im1kNSI7 czozMjoiMTg4YWRiNzk5M2RmYWVjMjk5MGY1N2FlNmMxZTU5N2EiO30=