From mboxrd@z Thu Jan 1 00:00:00 1970 From: Max Mikhanosha Subject: RFQ - new contribution - org-screenshot.el Date: Thu, 16 May 2013 23:21:56 -0400 Message-ID: <87mwru8f57.wl%max@openchat.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: multipart/mixed; boundary="Multipart_Thu_May_16_23:21:56_2013-1" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:48534) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UdBF5-000593-K3 for emacs-orgmode@gnu.org; Thu, 16 May 2013 23:22:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UdBF0-0005Vf-RR for emacs-orgmode@gnu.org; Thu, 16 May 2013 23:22:03 -0400 Received: from openchat.com ([75.99.81.170]:42947 helo=momoland.openchat.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UdBF0-0005VL-Iw for emacs-orgmode@gnu.org; Thu, 16 May 2013 23:21:58 -0400 Received: from momoland.openchat.com (localhost [127.0.0.1]) by momoland.openchat.com (Postfix) with ESMTP id E328DE4590 for ; Thu, 16 May 2013 23:21:56 -0400 (EDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --Multipart_Thu_May_16_23:21:56_2013-1 Content-Type: text/plain; charset=US-ASCII Hi All, I've been writing some documentation in OrgMode with screenshots, and as with any screenshot taking, it takes a while to get one just right. A few tiny helper utilities, quickly snowballed into this :-) It may need some cleanup, but IMHO its too awesome not to share it with the list. To try it out, you'll need /usr/bin/scrot which is available as "scrot" package on most distributions. Then (require 'org-screenshot) and try C-c M-s (org-screenshot-take) in an Org File. Make sure to turn on inline image display (C-c C-x C-v) after taking the first screenshot. Regards, Max --Multipart_Thu_May_16_23:21:56_2013-1 Content-Type: application/octet-stream; type=emacs-lisp Content-Disposition: attachment; filename="org-screenshot.el" Content-Transfer-Encoding: base64 Ozs7IG9yZy1zY3JlZW5zaG90LmVsIC0tLSB0YWtlIGFuZCBtYW5hZ2Ugc2NyZWVuc2hvdHMgZnJv bSBPcmcgYnVmZmVyCjs7Cjs7IENvcHlyaWdodCAoQykgMjAwOS0yMDEzCjs7ICAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCjs7Cjs7IEF1dGhvcjogTWF4IE1pa2hhbm9zaGEgPG1heEBv cGVuY2hhdC5jb20+Cjs7IEtleXdvcmRzOiBvdXRsaW5lcywgaHlwZXJtZWRpYSwgY2FsZW5kYXIs IHdwCjs7IEhvbWVwYWdlOiBodHRwOi8vb3JnbW9kZS5vcmcKOzsgVmVyc2lvbjogOC4wCjs7Cjs7 IFJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMK Ozsgc2VlOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sCjs7Cjs7IFRo aXMgZmlsZSBpcyBub3QgcGFydCBvZiBHTlUgRW1hY3MuCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cjs7IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Cjs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCjs7IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCgo7OyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKOzsgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1h Y3MuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCjs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Cjs7Cjs7OyBDb21tZW50YXJ5Ogo7Owo7OyBOT1RFOiBUaGlzIGxpYnJhcnkg cmVxdWlyZXMgZXh0ZXJuYWwgc2NyZWVuc2hvdCB0YWtpbmcgZXhlY3V0YWJsZSAic2Nyb3QiLAo7 OyB3aGljaCBpcyBhdmFpbGFibGUgYXMgYSBwYWNrYWdlIGZyb20gYWxsIG1ham9yIExpbnV4IGRp c3RyaWJ1dGlvbi4gSWYgeW91cgo7OyBkaXN0cmlidXRpb24gZG9lcyBub3QgaGF2ZSBpdCwgc291 cmNlIGNhbiBiZSBmb3VuZCBhdDoKOzsgCjs7IGh0dHA6Ly9mcmVlY29kZS5jb20vcHJvamVjdHMv c2Nyb3QKOzsKOzsgb3JnLXNjcmVlbnNob3QuZWwgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIHNjcm90 IHZlcnNpb24gMC44Lgo7OyAKOzsgVXNhZ2U6Cjs7Cjs7ICAgKHJlcXVpcmUgJ29yZy1zY3JlZW5z aG90KQo7Owo7OyAgQXZhaWxhYmxlIGNvbW1hbmRzIHdpdGggZGVmYXVsdCBiaW5kaW5ncwo7Owo7 OyAgYG9yZy1zY3JlZW5zaG90LXRha2UnICAgICAgICAgICAgICBDLWMgTS1zIE0tcyAgIGFuZAo7 OyAgCjs7ICAgICAgICBUYWtlcyB0aGUgc2NyZWVuc2hvdAo7OyAgICAgICAgCjs7ICBgb3JnLXNj cmVlbnNob3Qtcm90YXRlLXByZXYnICAgICAgIEMtYyBNLXMgTS1wICAgYW5kIEMtYyBNLXMgQy1w Cjs7ICAKOzsgICAgICAgIFJvdGF0ZSBzY3JlZW5zaG90IGJlZm9yZSB0aGUgcG9pbnQgdG8gb25l IGJlZm9yZSBpdAo7OyAgICAgICAgCjs7ICBgb3JnLXNjcmVlbnNob3Qtcm90YXRlLW5leHQnICAg ICAgIEMtYyBNLXMgTS1uICAgYW5kIEMtYyBNLXMgQy1uCjs7Cjs7ICAgICAgICBSb3RhdGUgc2Ny ZWVuc2hvdCBiZWZvcmUgdGhlIHBvaW50IHRvIG9uZSBhZnRlciBpdAo7Owo7OyAgYG9yZy1zY3Jl ZW5zaG90LXNob3ctdW51c2VkJyAgICAgICBDLWMgTS1zIE0tdSAgIGFuZCBDLWMgTS1zIHUKOzsK OzsgICAgICAgIE9wZW4gZGlyZWQgYnVmZmVyIHdpdGggc2NyZWVuc2hvdHMgdGhhdCBhcmUgbm90 IHVzZWQgaW4gY3VycmVudAo7OyAgICAgICAgT3JnIGJ1ZmZlciBtYXJrZWQKOzsKOzsgVGhlIHNj cmVlbnNob3QgdGFrZSBhbmQgcm90YXRlIGNvbW1hbmRzIHdpbGwgdXBkYXRlIHRoZSBpbmxpbmUg aW1hZ2VzCjs7IGlmIHRoZXkgYXJlIGFscmVhZHkgc2hvd24sIGlmIHlvdSBhcmUgaW5zZXJ0aW5n IGZpcnN0IHNjcmVlbnNob3QgaW4gdGhlIE9yZwo7OyBCdWZmZXIgKGFuZCB0aGVyZSBhcmUgbm8g b3RoZXIgaW1hZ2VzIHNob3duKSwgeW91IG5lZWQgdG8gbWFudWFsbHkgZGlzcGxheQo7OyBpbmxp bmUgaW1hZ2VzIHdpdGggQy1jIEMteCBDLXYKOzsKOzsgU2NyZWVuc2hvdCB0YWtlIGFuZCByb3Rh dGUgY29tbWFuZHMgb2ZmZXIgdXNlciB0byBjb250aW51ZSBieSBieSB1c2luZyBzaW5nbGUKOzsg a2V5cywgaW4gYSBtYW5uZXIgc2ltaWxhciB0byB0byAicmVwZWF0LWNoYXIiIG9mIGtleWJvYXJk IG1hY3JvcywgdXNlciBjYW4KOzsgY29udGludWUgcm90YXRpbmcgc2NyZWVuc2hvdHMgYnkgcHJl c3NpbmcganVzdCB0aGUgbGFzdCBrZXkgb2YgdGhlIGJpbmRpbmcKOzsKOzsgRm9yIGV4YW1wbGU6 IEMtYyBNLXMgTS10ICAgIGNyZWF0ZXMgdGhlIHNjcmVlbnNob3QKOzsgYW5kIHRoZW4gdXNlciBj YW4gcmVwZWF0ZWRseSBwcmVzcyBNLXAgb3IgTS1uIHRvIHJvdGF0ZSBpdCBiYWNrIGFuZCBmb3J0 aAo7OyB3aXRoIHByZXZpb3VzbHkgdGFrZW4gb25lcy4KOzsKCihyYW5kb20gdCkKCihkZWZ1biBv cmctc2NyZWVuc2hvdC1yYW5kb20tc3RyaW5nIChsZW5ndGgpCiAgIlJldHVybiBzdHJpbmcgb2Yg TEVOR1RIIGNvbnNpc3Rpbmcgb2YgcmFuZG9tIHVwcGVyIGNhc2UgYW5kCmxvd2VyIGNhc2UgbGV0 dGVycy4iCiAgKGxldCAoKG5hbWUgKG1ha2Utc3RyaW5nIGxlbmd0aCA/eCkpKQogICAgKGRvdGlt ZXMgKGkgbGVuZ3RoKQogICAgICAobGV0ICgobiAocmFuZG9tIDUyKSkpCiAgICAgICAgKGFzZXQg bmFtZSBpIChpZiAoPCBuIDI2KQogICAgICAgICAgICAgICAgICAgICAgICAgKCsgP2EgbikKICAg ICAgICAgICAgICAgICAgICAgICAoKyA/QSBuIC0yNikpKSkpIAogICAgbmFtZSkpCgooZGVmdmFy IG9yZy1zY3JlZW5zaG90LXByb2Nlc3MgbmlsCiAgIkN1cnJlbnRseSBydW5uaW5nIHNjcmVlbnNo b3QgcHJvY2VzcyIpCgooZGVmdmFyIG9yZy1zY3JlZW5zaG90LWltYWdlLWRpcmVjdG9yeSAiLi9p bWFnZXMvIgogICJEaXJlY3Rvcnkgd2hlcmUgdG8gc3RvcmUgaW1hZ2VzLCB3aWxsIGJlIGNyZWF0 ZWQgaWYgZG9lcyBub3QgZXhpc3QiKQoKKGRlZnZhciBvcmctc2NyZWVuc2hvdC1maWxlLW5hbWUt Zm9ybWF0ICJzY3JlZW5zaG90LSUyLjJkLnBuZyIKICAiVGhlIHN0cmluZyB1c2VkIHRvIGZvciBz Y3JlZW5zaG90IGZpbGUgbmFtZS4KCklmIGl0IGNvbnRhaW5zIHRoZSAlZCBpdCB3aWxsIGJlIHJl cGxhY2VkIHdpdGggYSBzZXF1ZW5jZQpudW1iZXIgKGZvcm1hdHRlZCBieSAlZCBwYXNzZWQgdG8g YGZvcm1hdCcgZnVuY3Rpb24gd2l0aCBzZXF1ZW5jZQpudW1iZXIgYXMgYXJndW1lbnQpCgpJZiBp dCBjb250YWlucyAlWFhYWCB0aGVuIGl0IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCByYW5kb20gc3Ry aW5nCmVhY2ggWCBiZWluZyBhIHJhbmRvbSB1cHBlciBvciBsb3dlciBjYXNlIGNoYXJhY3Rlci4i KQoKKGRlZnZhciBvcmctc2NyZWVuc2hvdC1kaXJlY3Rvcnktc2VxLW51bWJlcnMgKG1ha2UtaGFz aC10YWJsZSA6dGVzdCAnZXF1YWwpKQoKKGRlZnZhciBvcmctc2NyZWVuc2hvdC1tYXgtdHJpZXMg MTAwCiAgIk51bWJlciBvZiB0aW1lIHNjcmVlbnNob3QgbmFtZSBnZW5lcmF0aW9uIHdpbGwgYmUg cmUtdHJpZWQgaWYKZmlsZSBoYXBwZW4gdG8gZXhpc3QgaW4gYSBkaXJlY3RvcnkuIFdpdGggZGVm YXVsdCBgb3JnLXNjcmVlbnNob3QtbmFtZS1mb3JtYXQnCml0cyBhcyBtYW55IHNjcmVlbnNob3Rz IHRoYXQgY2FuIGV4aXN0IGluIGEgZGlyZWN0b3J5IGFzICIpCgooZGVmdW4gb3JnLXNjcmVlbnNo b3QtdXBkYXRlLXNlcS1udW1iZXIgKGRpcmVjdG9yeSAmb3B0aW9uYWwgcmVzZXQpCiAgIlNldCBg b3JnLXNjcmVlbnNob3QtZmlsZS1uYW1lLWZvcm1hdCcgc2VxdWVuY2UgbnVtYmVyIGZvciB0aGUg ZGlyZWN0b3J5LgpXaGVuIFJFU0VUIGlzIE5JTCwgaW5jcmVtZW50cyB0aGUgbnVtYmVyIHN0b3Jl ZCwgb3RoZXJ3aXNlIHNldHMKUkVTRVQgYXMgYSBuZXcgbnVtYmVyLiBJbnRlbmRlZCB0byBiZSBj YWxsZWQgaWYgc2NyZWVuc2hvdCB3YXMKc3VjY2Vzc2Z1bC4gIFVwZGF0aW5nIG9mIHNlcXVlbmNl IG51bWJlciBpcyBkb25lIGluIHR3byBzdGVwcywgc28KYWJvcnRlZC9jYW5jZWxlZCBzY3JlZW5z aG90IGF0dGVtcHRzIGRvbid0IGluY3JlYXNlIHRoZSBudW1iZXIiCgogIChzZXRxIGRpcmVjdG9y eSAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBkaXJlY3RvcnkpKQogIChwdXRoYXNoIGRpcmVjdG9y eSAoaWYgcmVzZXQKICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobnVtYmVycCByZXNldCkg cmVzZXQgMSkKICAgICAgICAgICAgICAgICAgICAgICAoMSsgKGdldGhhc2ggZGlyZWN0b3J5CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1zY3JlZW5zaG90LWRpcmVjdG9y eS1zZXEtbnVtYmVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkpCiAg ICAgICAgICAgb3JnLXNjcmVlbnNob3QtZGlyZWN0b3J5LXNlcS1udW1iZXJzKSkKCihkZWZ1biBv cmctc2NyZWVuc2hvdC1nZW5lcmF0ZS1maWxlLW5hbWUgKGRpcmVjdG9yeSkKICAiUmV0dXJuIHRo ZSBnZW5lcmF0ZWQgc2NyZWVuc2hvdCBmaWxlIG5hbWUuIEtlZXBzIHJlLWdlbmVyYXRpbmcKbmFt ZXMgaWYgdGhleSBleGlzdCBpbiB0aGUgRElSRUNUT1JZLCB1cCB0bwpgb3JnLXNjcmVlbnNob3Qt bWF4LXRyaWVzJyB0aW1lcy4gIFJldHVybnMganVzdCB0aGUgZmlsZW5hbWUsCndpdGhvdXQgZGly ZWN0b3J5IgogIChzZXRxIGRpcmVjdG9yeSAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBkaXJlY3Rv cnkpKQogICh3aGVuIChmaWxlLWV4aXN0cy1wIGRpcmVjdG9yeSkKICAgIChsZXQgKCh0cmllcyAw KQogICAgICAgICAgbmFtZQogICAgICAgICAgaGFkLXNlcQogICAgICAgICAgKGNhc2UtZm9sZC1z ZWFyY2ggbmlsKSkKICAgICAgKHdoaWxlIChhbmQgKDwgdHJpZXMgb3JnLXNjcmVlbnNob3QtbWF4 LXRyaWVzKQogICAgICAgICAgICAgICAgICAobm90IG5hbWUpKQogICAgICAgIChpbmNmIHRyaWVz KQogICAgICAgIChsZXQgKCh0bXAgb3JnLXNjcmVlbnNob3QtZmlsZS1uYW1lLWZvcm1hdCkKICAg ICAgICAgICAgICAoc2VxLXJlICIlWy0wLTkuXSpkIikKICAgICAgICAgICAgICAocmFuZC1yZSAi JVgrIikpCiAgICAgICAgICAod2hlbiAoc3RyaW5nLW1hdGNoIHNlcS1yZSB0bXApCiAgICAgICAg ICAgIChsZXQgKChzZXEgKGdldGhhc2gKICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5 CiAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1zY3JlZW5zaG90LWRpcmVjdG9yeS1zZXEtbnVt YmVycyAxKSkpIAogICAgICAgICAgICAgIChzZXRxIHRtcCAKICAgICAgICAgICAgICAgICAgICAo cmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgIHNlcS1yZSAoZm9y bWF0IChtYXRjaC1zdHJpbmcgMCB0bXApIHNlcSkKICAgICAgICAgICAgICAgICAgICAgdG1wKQog ICAgICAgICAgICAgICAgICAgIGhhZC1zZXEgdCkpKQogICAgICAgICAgKHdoZW4gKHN0cmluZy1t YXRjaCByYW5kLXJlIHRtcCkKICAgICAgICAgICAgKHNldHEgdG1wCiAgICAgICAgICAgICAgICAg IChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKICAgICAgICAgICAgICAgICAgIHJhbmQtcmUgKG9y Zy1zY3JlZW5zaG90LXJhbmRvbS1zdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgx LSAobGVuZ3RoIChtYXRjaC1zdHJpbmcgMCB0bXApKSkpCiAgICAgICAgICAgICAgICAgICB0bXAg dCkpKQogICAgICAgICAgKGxldCAoKGZ1bGxuYW1lIChjb25jYXQgZGlyZWN0b3J5IHRtcCkpKSAK ICAgICAgICAgICAgKGlmIChmaWxlLWV4aXN0cy1wIGZ1bGxuYW1lKQogICAgICAgICAgICAgICAg KHdoZW4gaGFkLXNlcSAob3JnLXNjcmVlbnNob3QtdXBkYXRlLXNlcS1udW1iZXIgZGlyZWN0b3J5 KSkKICAgICAgICAgICAgICAoc2V0cSBuYW1lIHRtcCkpKSkpCiAgICAgIG5hbWUpKSkKCihkZWZ1 biBvcmctc2NyZWVuc2hvdC1pbWFnZS1kaXJlY3RvcnkgKCkKICAiUmV0dXJuIHRoZSBpbWFnZXMg ZGlyZWN0b3J5LCBlbnN1cmluZyB0aGVyZSBpcyB0cmFpbGluZwpzbGFzaC4gQ3JlYXRlcyBpdCBp ZiBuZWNlc3NhcnkiCiAgKGxldCAoKGRpciAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSBvcmctc2Ny ZWVuc2hvdC1pbWFnZS1kaXJlY3RvcnkpKSkKICAgIChpZiAoZmlsZS1leGlzdHMtcCBkaXIpCiAg ICAgICAgZGlyCiAgICAgIChtYWtlLWRpcmVjdG9yeSBkaXIgdCkKICAgICAgZGlyKSkpCgooZGVm dmFyIG9yZy1zY3JlZW5zaG90LWxhc3QtZmlsZSBuaWwgIkZpbGUgbmFtZSBvZiB0aGUgbGFzdApz Y3JlZW5zaG90LCB3aXRob3V0IGRpcmVjdG9yeSIpCgooZGVmdW4gb3JnLXNjcmVlbnNob3QtcHJv Y2Vzcy1kb25lIChwcm9jZXNzIGV2ZW50IGZpbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvcmlnLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG9yaWctZGVsYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvcmlnLWV2ZW50KQogIChzZXRxIG9yZy1zY3JlZW5zaG90LXByb2Nlc3Mg bmlsKQogICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNzKSAKICAg IChpZiAobm90IChlcXVhbCBldmVudCAiZmluaXNoZWRcbiIpKQogICAgICAgIChwcm9nbiAKICAg ICAgICAgIChpbnNlcnQgZXZlbnQpIAogICAgICAgICAgKGNvbmQgKChzYXZlLWV4Y3Vyc2lvbgog ICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAgICAgICAg ICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiS2V5IHdhcyBwcmVzc2VkIiBuaWwgdCkpCiAgICAgICAg ICAgICAgICAgKGRpbmcpCiAgICAgICAgICAgICAgICAgKG1lc3NhZ2UgIktleSB3YXMgcHJlc3Nl ZCwgc2NyZWVuc2hvdCBhYm9ydGVkIikpCiAgICAgICAgICAgICAgICAodCAKICAgICAgICAgICAg ICAgICAoZGlzcGxheS1idWZmZXIgKHByb2Nlc3MtYnVmZmVyIHByb2Nlc3MpKQogICAgICAgICAg ICAgICAgIChtZXNzYWdlICJFcnJvciBydW5uaW5nIFwic2Nyb3RcIiBwcm9ncmFtIikKICAgICAg ICAgICAgICAgICAoZGluZykpKSkKICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgb3JpZy1idWZm ZXIgCiAgICAgICAgKGxldCAoKGxpbmsgKGZvcm1hdCAiW1tmaWxlOiVzXV0iIGZpbGUpKSkgCiAg ICAgICAgICAoc2V0cSBvcmctc2NyZWVuc2hvdC1sYXN0LWZpbGUgKGZpbGUtbmFtZS1ub25kaXJl Y3RvcnkgZmlsZSkpCiAgICAgICAgICAobGV0ICgoYmVnIChwb2ludCkpKQogICAgICAgICAgICAo aW5zZXJ0IGxpbmspIAogICAgICAgICAgICAod2hlbiBvcmctaW5saW5lLWltYWdlLW92ZXJsYXlz CiAgICAgICAgICAgICAgKG9yZy1kaXNwbGF5LWlubGluZS1pbWFnZXMgbmlsIHQgYmVnIChwb2lu dCkpKSkKICAgICAgICAgICh1bmxlc3MgKDwgb3JpZy1kZWxheSAzKQogICAgICAgICAgICAoZGlu ZykpCiAgICAgICAgICAob3JnLXNjcmVlbnNob3Qtcm90YXRlLWNvbnRpbnVlIHQgb3JpZy1ldmVu dCkpKSkpKQoKKGRlZnVuIG9yZy1zY3JlZW5zaG90LXRha2UgKCZvcHRpb25hbCBkZWxheSkKICAi VGFrZSBhIHNjcmVlbnNob3QgYW5kIGluc2VydCBsaW5rIHRvIGl0IGF0IHBvaW50LCBpZiBkaXNw bGF5CmlubGluZSBpbWFnZXMgaXMgb24sIHNjcmVlbnNob3Qgd2lsbCBiZSBpbW1lZGlhdGVseSBk aXNwbGF5ZWQgYXMKYSBwaWN0dXJlLgoKU2NyZWVuIGFyZWEgZm9yIHRoZSBzY3JlZW5zaG90IGlz IHNlbGVjdGVkIHdpdGggdGhlIG1vdXNlLCBsZWZ0CmNsaWNrIG9uIGEgd2luZG93IHNjcmVlbnNo b3RzIHRoYXQgd2luZG93LCB3aGlsZSBsZWZ0IGNsaWNrIGFuZApkcmFnIHNlbGVjdHMgYSByZWdp b24uIFByZXNzaW5nIGFueSBrZXkgY2FuY2VscyB0aGUgc2NyZWVuIHNob3QKCldpdGggYEMtdScg d2FpdCBvbmUgc2Vjb25kIGFmdGVyIHRhcmdldCBpcyBzZWxlY3RlZCBiZWZvcmUgdGFraW5nCnRo ZSBzY3JlZW5zaG90LiBXaXRoIGRvdWJsZSBgQy11JyB3YWl0IHR3byBzZWNvbmRzLgoKV2l0aCB0 cmlwbGUgYEMtdScgd2FpdCAzIHNlY29uZHMsIGFuZCBhbHNvIGBkaW5nJyB3aGVuIHNjcmVlbnNo b3QKaXMgZG9uZSwgYW55IG1vcmUgYEMtdScgYWZ0ZXIgdGhhdCBpbmNyZWFzZXMgZGVsYXkgYnkg MiBzZWNvbmRzLgoKV2hlbiBjYWxsZWQgbm9uLWludGVyYWN0aXZlbHkgZGVsYXkgY291bGQgYmUg IgogIChpbnRlcmFjdGl2ZSAiUCIpCgogIDs7IHByb2JhYmx5IGVhc2llciB3YXkgdG8gY291bnQg bnVtYmVyIG9mIEMtdSBDLXUgb3V0IHRoZXJlCiAgKHNldHEgZGVsYXkKICAgICAgICAoY29uZCAo KG51bGwgZGVsYXkpIDApCiAgICAgICAgICAgICAgKChpbnRlZ2VycCBkZWxheSkgZGVsYXkpCiAg ICAgICAgICAgICAgKChhbmQgKGNvbnNwIGRlbGF5KQogICAgICAgICAgICAgICAgICAgIChpbnRl Z2VycCAoY2FyIGRlbGF5KSkKICAgICAgICAgICAgICAgICAgICAocGx1c3AgKGNhciBkZWxheSkp KQogICAgICAgICAgICAgICAobGV0ICgobnVtIDEpCiAgICAgICAgICAgICAgICAgICAgIChsaW1p dCAoY2FyIGRlbGF5KSkKICAgICAgICAgICAgICAgICAgICAgKGNudCAwKSkKICAgICAgICAgICAg ICAgICAod2hpbGUgKDwgbnVtIGxpbWl0KQogICAgICAgICAgICAgICAgICAgKHNldHEgbnVtICgq IG51bSA0KQogICAgICAgICAgICAgICAgICAgICAgICAgY250ICgrIGNudCAoaWYgKDwgY250IDMp IDEgMikpKSkKICAgICAgICAgICAgICAgICBjbnQpKQogICAgICAgICAgICAgICh0IChlcnJvciAi SW52YWxkIGRlbGF5IikpKSkKICAod2hlbiAoYW5kIG9yZy1zY3JlZW5zaG90LXByb2Nlc3MKICAg ICAgICAgICAgIChtZW1iZXIgKHByb2Nlc3Mtc3RhdHVzIG9yZy1zY3JlZW5zaG90LXByb2Nlc3Mp CiAgICAgICAgICAgICAgICAgICAgICcocnVuIHN0b3ApKSkKICAgIChlcnJvciAic2Nyb3QgcHJv Y2VzcyBpcyBzdGlsbCBydW5uaW5nIikpCiAgKGxldCogKChuYW1lIChvcmctc2NyZWVuc2hvdC1n ZW5lcmF0ZS1maWxlLW5hbWUgKG9yZy1zY3JlZW5zaG90LWltYWdlLWRpcmVjdG9yeSkpKQogICAg ICAgICAoZmlsZSAoZm9ybWF0ICIlcyVzIiAob3JnLXNjcmVlbnNob3QtaW1hZ2UtZGlyZWN0b3J5 KQogICAgICAgICAgICAgICAgICAgICAgIG5hbWUpKQogICAgICAgICAocGF0aCAoZXhwYW5kLWZp bGUtbmFtZSBmaWxlKSkpCiAgICAod2hlbiAoZ2V0LWJ1ZmZlciAiKnNjcm90KiIpCiAgICAgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyICIqc2Nyb3QqIikKICAgICAgICAoZXJhc2Ut YnVmZmVyKSkpCiAgICAoc2V0cSBvcmctc2NyZWVuc2hvdC1wcm9jZXNzCiAgICAgICAgICAob3Ig CiAgICAgICAgICAgKGFwcGx5ICdzdGFydC1wcm9jZXNzCiAgICAgICAgICAgICAgICAgIChhcHBl bmQKICAgICAgICAgICAgICAgICAgIChsaXN0ICJzY3JvdCIgIipzY3JvdCoiICJzY3JvdCIgIi1z IiBwYXRoKQogICAgICAgICAgICAgICAgICAgKHdoZW4gKHBsdXNwIGRlbGF5KQogICAgICAgICAg ICAgICAgICAgICAobGlzdCAiLWQiIChmb3JtYXQgIiVkIiBkZWxheSkpKSkpCiAgICAgICAgICAg KGVycm9yICJVbmFibGUgdG8gc3RhcnQgc2Nyb3QgcHJvY2VzcyIpKSkKICAgICh3aGVuIG9yZy1z Y3JlZW5zaG90LXByb2Nlc3MgCiAgICAgIChpZiAocGx1c3AgZGVsYXkpIAogICAgICAgICAgKG1l c3NhZ2UgIkNsaWNrIG9uIGEgd2luZG93LCBvciBzZWxlY3QgYSByZWN0YW5nbGUgKGRlbGF5IGlz ICVkIHNlYykuLi4iCiAgICAgICAgICAgICAgICAgICBkZWxheSkKICAgICAgICAobWVzc2FnZSAi Q2xpY2sgb24gYSB3aW5kb3csIG9yIHNlbGVjdCBhIHJlY3RhbmdsZS4uLiIpKQogICAgICAoc2V0 LXByb2Nlc3Mtc2VudGluZWwKICAgICAgIG9yZy1zY3JlZW5zaG90LXByb2Nlc3MKICAgICAgIGAo bGFtYmRhIChwcm9jZXNzIGV2ZW50KQogICAgICAgICAgKG9yZy1zY3JlZW5zaG90LXByb2Nlc3Mt ZG9uZQogICAgICAgICAgIHByb2Nlc3MgZXZlbnQgLGZpbGUgLChjdXJyZW50LWJ1ZmZlcikgLGRl bGF5ICxsYXN0LWlucHV0LWV2ZW50KSkpKSkpCgooZGVmdmFyIG9yZy1zY3JlZW5zaG90LW1hcCAo bWFrZS1zcGFyc2Uta2V5bWFwKQogICJNYXAgZm9yIE9yZ01vZGUgc2NyZWVuc2hvdCByZWxhdGVk IGNvbW1hbmRzIikKKG9yZy1kZWZrZXkgb3JnLW1vZGUtbWFwIChrYmQgIkMtYyBNLXMiKSBvcmct c2NyZWVuc2hvdC1tYXApCjs7IG1uZW1vbmljIChzKWNyZWVuKHMpc2hvdCBvciAocyljcmVlbnNo b3QgKHQpYWtlCihvcmctZGVma2V5IG9yZy1zY3JlZW5zaG90LW1hcCAoa2JkICJNLXQiKSAnb3Jn LXNjcmVlbnNob3QtdGFrZSkKKG9yZy1kZWZrZXkgb3JnLXNjcmVlbnNob3QtbWFwIChrYmQgIk0t cyIpICdvcmctc2NyZWVuc2hvdC10YWtlKQo7OyBObyByZWFzb24gdG8gcmVxdWlyZSBtZXRhIGtl eQoob3JnLWRlZmtleSBvcmctc2NyZWVuc2hvdC1tYXAgInMiICdvcmctc2NyZWVuc2hvdC10YWtl KQoob3JnLWRlZmtleSBvcmctc2NyZWVuc2hvdC1tYXAgInQiICdvcmctc2NyZWVuc2hvdC10YWtl KQoKKG9yZy1kZWZrZXkgb3JnLXNjcmVlbnNob3QtbWFwIChrYmQgIk0tbiIpICdvcmctc2NyZWVu c2hvdC1yb3RhdGUtbmV4dCkKKG9yZy1kZWZrZXkgb3JnLXNjcmVlbnNob3QtbWFwIChrYmQgIk0t cCIpICdvcmctc2NyZWVuc2hvdC1yb3RhdGUtcHJldikKKG9yZy1kZWZrZXkgb3JnLXNjcmVlbnNo b3QtbWFwIChrYmQgIkMtbiIpICdvcmctc2NyZWVuc2hvdC1yb3RhdGUtbmV4dCkKKG9yZy1kZWZr ZXkgb3JnLXNjcmVlbnNob3QtbWFwIChrYmQgIkMtcCIpICdvcmctc2NyZWVuc2hvdC1yb3RhdGUt cHJldikKCgoob3JnLWRlZmtleSBvcmctc2NyZWVuc2hvdC1tYXAgKGtiZCAiTS11IikgJ29yZy1z Y3JlZW5zaG90LXNob3ctdW51c2VkKQoob3JnLWRlZmtleSBvcmctc2NyZWVuc2hvdC1tYXAgKGti ZCAidSIpICdvcmctc2NyZWVuc2hvdC1zaG93LXVudXNlZCkKCihkZWZ2YXIgb3JnLXNjcmVlbnNo b3QtZmlsZS1saXN0IG5pbAogICJMaXN0IG9mIGZpbGVzIGluIGBvcmctc2NyZWVuc2hvdC1pbWFn ZS1kaXJlY3RvcnknIHVzZWQgYnkKYG9yZy1zY3JlZW5zaG90LXJvdGF0ZS1wcmV2JyBhbmQgYG9y Zy1zY3JlZW5zaG90LXJvdGF0ZS1uZXh0JyIpCgooZGVmdmFyIG9yZy1zY3JlZW5zaG90LXJvdGF0 aW9uLWluZGV4IC0xKQoKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdvcmctc2NyZWVuc2hv dC1maWxlLWxpc3QpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnb3JnLXNjcmVlbnNob3Qt cm90YXRpb24taW5kZXgpCgooZGVmdW4gb3JnLXNjcmVlbnNob3Qtcm90YXRpb24taW5pdCAobGFz dGZpbGUpCiAgIkluaXRpYWxpemUgdmFyaWFibGUgYG9yZy1zY3JlZW5zaG90LWZpbGUtbGlzdCcg dmFyaWFiZWwgd2l0aAp0aGUgbGlzdCBvZiBQTkcgZmlsZXMgaW4gYG9yZy1zY3JlZW5zaG90LWlt YWdlLWRpcmVjdG9yeScgc29ydGVkCmJ5IG1vc3QgcmVjZW50IGZpcnN0IgogIChzZXRxCiAgIG9y Zy1zY3JlZW5zaG90LXJvdGF0aW9uLWluZGV4IC0xCiAgIG9yZy1zY3JlZW5zaG90LWZpbGUtbGlz dAogICAobGV0ICgoZmlsZXMgKGRpcmVjdG9yeS1maWxlcyBvcmctc2NyZWVuc2hvdC1pbWFnZS1k aXJlY3RvcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCAob3JnLWltYWdlLWZp bGUtbmFtZS1yZWdleHApIHQpKSkKICAgICAobWFwY2FyICdmaWxlLW5hbWUtbm9uZGlyZWN0b3J5 IAogICAgICAgICAgICAgKHNvcnQgZmlsZXMKICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGZp bGUxIGZpbGUyKQogICAgICAgICAgICAgICAgICAgICAobGV0ICgobXRpbWUxIChudGggNSAoZmls ZS1hdHRyaWJ1dGVzIGZpbGUxKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtdGltZTIg KG50aCA1IChmaWxlLWF0dHJpYnV0ZXMgZmlsZTIpKSkpCiAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgbXRpbWUxICgrIChhc2ggKGZpcnN0IG10aW1lMSkgMTYpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzZWNvbmQgbXRpbWUxKSkpCiAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgbXRpbWUyICgrIChhc2ggKGZpcnN0IG10aW1lMikgMTYpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWNvbmQgbXRpbWUyKSkpCiAgICAgICAgICAg ICAgICAgICAgICAgKD4gbXRpbWUxIG10aW1lMikpKSkpKSkKICAobGV0ICgobiAtMSkgKGxpc3Qg b3JnLXNjcmVlbnNob3QtZmlsZS1saXN0KSkKICAgICh3aGlsZSAoYW5kIGxpc3QgKG5vdCAoZXF1 YWwgKHBvcCBsaXN0KSBsYXN0ZmlsZSkpKQogICAgICAoaW5jZiBuKSkKICAgIChzZXRxIG9yZy1z Y3JlZW5zaG90LXJvdGF0aW9uLWluZGV4IG4pKSkKCihkZWZ1biBvcmctc2NyZWVuc2hvdC1kby1y b3RhdGUgKGRpciBmcm9tLWNvbnRpbnVlLXJvdGF0aW5nKQogICJSb3RhdGUgbGFzdCBzY3JlZW5z aG90IHdpdGggb25lIG9mIHRoZSBwcmV2aW91c2x5IHRha2VuCnNjcmVlbnNob3RzIGZyb20gdGhl IHNhbWUgZGlyZWN0b3J5LiBJZiBESVIgaXMgbmVnYXRpdmUsIGluIHRoZQpvdGhlciBkaXJlY3Rp b24iCiAgKHNldHEgb3JnLXNjcmVlbnNob3QtbGFzdC1maWxlIG5pbCkKICAobGV0KiAoKG91cmRp ciAoZmlsZS1uYW1lLWFzLWRpcmVjdG9yeSAob3JnLXNjcmVlbnNob3QtaW1hZ2UtZGlyZWN0b3J5 KSkpCiAgICAgICAgIGRvbmUKICAgICAgICAgKGxpbmstcmUgCiAgICAgICAgICA7OyB0YWtlbiBm cm9tIGBvcmctZGlzcGxheS1pbmxpbmUtaW1hZ2VzJwogICAgICAgICAgKGNvbmNhdCAiXFxbXFxb XFwoXFwoZmlsZTpcXClcXHxcXChbLi9+XVxcKVxcKVxcKFteXVxuXSs/IgogICAgICAgICAgICAg ICAgICAoc3Vic3RyaW5nIChvcmctaW1hZ2UtZmlsZS1uYW1lLXJlZ2V4cCkgMCAtMikKICAgICAg ICAgICAgICAgICAgIlxcKVxcXSIpKQogICAgICAgICBuZXdmaWxlIG9sZGZpbGUpCiAgICAoc2F2 ZS1leGN1cnNpb24gCiAgICAgIDs7IFNlYXJjaCBmb3IgbGluayB0byBpbWFnZSBmaWxlIGluIHRo ZSBzYW1lIGRpcmVjdG9yeSBiZWZvcmUgdGhlIHBvaW50CiAgICAgICh3aGlsZSAobm90IGRvbmUp CiAgICAgICAgKGlmIChub3QgKHJlLXNlYXJjaC1iYWNrd2FyZCBsaW5rLXJlIChwb2ludC1taW4p IHQpKQogICAgICAgICAgICAoZXJyb3IgIlVuYWJsZSB0byBmaW5kIGxpbmsgdG8gaW1hZ2UgZnJv bSAlUyBkaXJlY3RvcnkgYmVmb3JlIHBvaW50IiBvdXJkaXIpCiAgICAgICAgICAobGV0ICgoZmls ZSAoY29uY2F0IChvciAobWF0Y2gtc3RyaW5nIDMpICIiKSAobWF0Y2gtc3RyaW5nIDQpKSkpCiAg ICAgICAgICAgICh3aGVuIChlcXVhbCAoZmlsZS1uYW1lLWRpcmVjdG9yeSBmaWxlKQogICAgICAg ICAgICAgICAgICAgICAgICAgb3VyZGlyKQogICAgICAgICAgICAgIChzZXRxIGRvbmUgdAogICAg ICAgICAgICAgICAgICAgIG9sZGZpbGUgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgZmlsZSkpKSkp KQogICAgICAod2hlbiAob3IgKG51bGwgb3JnLXNjcmVlbnNob3QtZmlsZS1saXN0KQogICAgICAg ICAgICAgICAgKGFuZCAobm90IGZyb20tY29udGludWUtcm90YXRpbmcpIAogICAgICAgICAgICAg ICAgICAgICAobm90IChtZW1iZXIgbGFzdC1jb21tYW5kCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnKG9yZy1zY3JlZW5zaG90LXJvdGF0ZS1wcmV2CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9yZy1zY3JlZW5zaG90LXJvdGF0ZS1uZXh0KSkpKSkKICAgICAg ICAob3JnLXNjcmVlbnNob3Qtcm90YXRpb24taW5pdCBvbGRmaWxlKSkKICAgICAgKHVubGVzcyAo PiAobGVuZ3RoIG9yZy1zY3JlZW5zaG90LWZpbGUtbGlzdCkgMSkKICAgICAgICAoZXJyb3IgIkNh bid0IHJvdGF0ZSBhIHNpbmdsZSBpbWFnZSBmaWxlIikpCiAgICAgIChyZXBsYWNlLW1hdGNoICIi IG5pbCBuaWwgbmlsIDEpCgogICAgICAoc2V0cSBvcmctc2NyZWVuc2hvdC1yb3RhdGlvbi1pbmRl eAogICAgICAgICAgICAobW9kICgrIG9yZy1zY3JlZW5zaG90LXJvdGF0aW9uLWluZGV4IGRpcikK ICAgICAgICAgICAgICAgICAobGVuZ3RoIG9yZy1zY3JlZW5zaG90LWZpbGUtbGlzdCkpIAogICAg ICAgICAgICBuZXdmaWxlIChudGggb3JnLXNjcmVlbnNob3Qtcm90YXRpb24taW5kZXgKICAgICAg ICAgICAgICAgICAgICAgICAgIG9yZy1zY3JlZW5zaG90LWZpbGUtbGlzdCkpCiAgICAgIDs7IGlu IGNhc2Ugd2Ugc3RhcnRlZCByb3RhdGluZyBmcm9tIHRoZSBmaWxlIHdlIGp1c3QgaW5zZXJ0ZWQs CiAgICAgIDs7IGFkdmFuY2Ugb25lIG1vcmUgdGltZQogICAgICAod2hlbiAoZXF1YWwgb2xkZmls ZSBuZXdmaWxlKQogICAgICAgIChzZXRxIG9yZy1zY3JlZW5zaG90LXJvdGF0aW9uLWluZGV4CiAg ICAgICAgICAgICAgKG1vZCAoKyBvcmctc2NyZWVuc2hvdC1yb3RhdGlvbi1pbmRleCAoaWYgKHBs dXNwIGRpcikgMSAtMSkpCiAgICAgICAgICAgICAgICAgICAobGVuZ3RoIG9yZy1zY3JlZW5zaG90 LWZpbGUtbGlzdCkpCiAgICAgICAgICAgICAgbmV3ZmlsZSAobnRoIG9yZy1zY3JlZW5zaG90LXJv dGF0aW9uLWluZGV4CiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZy1zY3JlZW5zaG90LWZp bGUtbGlzdCkpKQogICAgICAocmVwbGFjZS1tYXRjaCAoY29uY2F0ICJmaWxlOiIgb3VyZGlyCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3ZmlsZSkKICAgICAgICAgICAgICAgICAgICAg dCB0IG5pbCA0KSkKICAgIDs7IG91dCBvZiBzYXZlLWV4Y3Vyc2lvbgogICAgKHNldHEgb3JnLXNj cmVlbnNob3QtbGFzdC1maWxlIG5ld2ZpbGUpCiAgICAod2hlbiBvcmctaW5saW5lLWltYWdlLW92 ZXJsYXlzCiAgICAgIChvcmctZGlzcGxheS1pbmxpbmUtaW1hZ2VzIG5pbCB0IChtYXRjaC1iZWdp bm5pbmcgMCkgKHBvaW50KSkpKSkKCihkZWZ1biBvcmctc2NyZWVuc2hvdC1yb3RhdGUtcHJldiAo ZGlyKQogICJSb3RhdGUgbGFzdCBzY3JlZW5zaG90IHdpdGggb25lIG9mIHRoZSBwcmV2aW91c2x5 IHRha2VuCnNjcmVlbnNob3RzIGZyb20gdGhlIHNhbWUgZGlyZWN0b3J5LiBJZiBESVIgaXMgbmVn YXRpdmUsIHJvdGF0ZQppbiB0aGUgb3RoZXIgZGlyZWN0aW9uIgogIChpbnRlcmFjdGl2ZSAicCIp CiAgKG9yZy1zY3JlZW5zaG90LWRvLXJvdGF0ZSBkaXIgbmlsKQogICh3aGVuIG9yZy1zY3JlZW5z aG90LWxhc3QtZmlsZSAKICAgIChvcmctc2NyZWVuc2hvdC1yb3RhdGUtY29udGludWUgbmlsIG5p bCkpKQoKKGRlZnVuIG9yZy1zY3JlZW5zaG90LXJvdGF0ZS1uZXh0IChkaXIpCiAgIlJvdGF0ZSBs YXN0IHNjcmVlbnNob3Qgd2l0aCBvbmUgb2YgdGhlIHByZXZpb3VzbHkgdGFrZW4Kc2NyZWVuc2hv dHMgZnJvbSB0aGUgc2FtZSBkaXJlY3RvcnkuIElmIERJUiBpcyBuZWdhdGl2ZSwgcm90YXRlCmlu IHRoZSBvdGhlciBkaXJlY3Rpb24iCiAgKGludGVyYWN0aXZlICJwIikKICAob3JnLXNjcmVlbnNo b3QtZG8tcm90YXRlICgtIGRpcikgbmlsKQogICh3aGVuIG9yZy1zY3JlZW5zaG90LWxhc3QtZmls ZSAKICAgIChvcmctc2NyZWVuc2hvdC1yb3RhdGUtY29udGludWUgbmlsIG5pbCkpKQoKKGRlZnVu IG9yZy1zY3JlZW5zaG90LXByZWZlci1zYW1lLW1vZGlmaWVycyAobGlzdCBldmVudCkKICAoaWYg KG5vdCAoZXZlbnRwIG5pbCkpIChjYXIgbGlzdCkgCiAgICAobGV0IChyZXQgKGtleXMgbGlzdCkp CiAgICAgICh3aGlsZSAoYW5kIChudWxsIHJldCkga2V5cykKICAgICAgICAobGV0ICgoa2V5IChj YXIga2V5cykpKSAKICAgICAgICAgIChpZiAoYW5kICg9IDEgKGxlbmd0aCBrZXkpKSAKICAgICAg ICAgICAgICAgICAgIChlcXVhbCAoZXZlbnQtbW9kaWZpZXJzIGV2ZW50KQogICAgICAgICAgICAg ICAgICAgICAgICAgIChldmVudC1tb2RpZmllcnMgKGVsdCBrZXkgMCkpKSkKICAgICAgICAgICAg ICAoc2V0cSByZXQgKGNhciBrZXlzKSkKICAgICAgICAgICAgKHNldHEga2V5cyAoY2RyIGtleXMp KSkpKQogICAgICAob3IgcmV0IChjYXIgbGlzdCkpKSkpCgooZGVmdW4gb3JnLXNjcmVlbnNob3Qt cm90YXRlLWNvbnRpbnVlIChmcm9tLXRha2Utc2NyZWVuc2hvdCBvcmlnLWV2ZW50KQogICJEaXNw bGF5IHRoZSBtZXNzYWdlIHdpdGggdGhlIG5hbWUgb2YgdGhlIGxhc3QgY2hhbmdlZAppbWFnZS1m aWxlIGFuZCBpbmZvcm0gdXNlciB0aGF0IHRoZXkgY2FuIHJvdGF0ZSBieSBwcmVzc2luZyBrZXlz CmJvdW5kIHRvIGBvcmctc2NyZWVuc2hvdC1yb3RhdGUtbmV4dCcgYW5kCmBvcmctc2NyZWVuc2hv dC1yb3RhdGUtcHJldicgaW4gYG9yZy1zY3JlZW5zaG90LW1hcCcKClRoaXMgd29ya3Mgc2ltaWxh cmx5IHRvIGBrbWFjcm8tZW5kLW9yLWNhbGwtbWFjcm8nIHNvIHRoYXQgdXNlcgpjYW4gcHJlc3Mg YSBsb25nIGtleSBzZXF1ZW5jZSB0byBpbnZva2UgdGhlIGZpcnN0IGNvbW1hbmQsIGFuZAp0aGVu IHVzZXMgc2luZ2xlIGtleXMgdG8gcm90YXRlLCB1bnRpbCB1bnJlZ29nbml6ZWQga2V5IGlzCmVu dGVyZWQsIGF0IHdoaWNoIHBvaW50IGV2ZW50IHdpbGwgYmUgdW5yZWFkIgoKICAobGV0KiAoKGV2 ZW50IChpZiBmcm9tLXRha2Utc2NyZWVuc2hvdCBvcmlnLWV2ZW50CiAgICAgICAgICAgICAgICAg IGxhc3QtaW5wdXQtZXZlbnQpKQogICAgICAgICBkb25lCiAgICAgICAgIChwcmV2LWtleQogICAg ICAgICAgKG9yZy1zY3JlZW5zaG90LXByZWZlci1zYW1lLW1vZGlmaWVycwogICAgICAgICAgICh3 aGVyZS1pcy1pbnRlcm5hbCAnb3JnLXNjcmVlbnNob3Qtcm90YXRlLXByZXYKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb3JnLXNjcmVlbnNob3QtbWFwIG5pbCkKICAgICAgICAgICBldmVu dCkpCiAgICAgICAgIChuZXh0LWtleQogICAgICAgICAgKG9yZy1zY3JlZW5zaG90LXByZWZlci1z YW1lLW1vZGlmaWVycwogICAgICAgICAgICh3aGVyZS1pcy1pbnRlcm5hbCAnb3JnLXNjcmVlbnNo b3Qtcm90YXRlLW5leHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnLXNjcmVlbnNo b3QtbWFwIG5pbCkKICAgICAgICAgICBldmVudCkpCiAgICAgICAgIHByZXYta2V5LXN0ciBuZXh0 LWtleS1zdHIpCiAgICAod2hlbiAoYW5kICg9IChsZW5ndGggcHJldi1rZXkpIDEpCiAgICAgICAg ICAgICAgICg9IChsZW5ndGggbmV4dC1rZXkpIDEpKSAKICAgICAgKHNldHEKICAgICAgIHByZXYt a2V5LXN0ciAoZm9ybWF0LWtiZC1tYWNybyBwcmV2LWtleSBuaWwpCiAgICAgICBuZXh0LWtleS1z dHIgKGZvcm1hdC1rYmQtbWFjcm8gbmV4dC1rZXkgbmlsKQogICAgICAgcHJldi1rZXkgKGVsdCBw cmV2LWtleSAwKQogICAgICAgbmV4dC1rZXkgKGVsdCBuZXh0LWtleSAwKSkKICAgICAgKHdoaWxl IChub3QgZG9uZSkKICAgICAgICAobWVzc2FnZSAiJVMgLSAnJXMnIGFuZCAnJXMnIHRvIHJvdGF0 ZSIKICAgICAgICAgICAgICAgICBvcmctc2NyZWVuc2hvdC1sYXN0LWZpbGUgcHJldi1rZXktc3Ry IG5leHQta2V5LXN0cikKICAgICAgICAoc2V0cSBldmVudCAocmVhZC1ldmVudCkpCiAgICAgICAg KGNvbmQgKChlcXVhbCBldmVudCBwcmV2LWtleSkKICAgICAgICAgICAgICAgKGNsZWFyLXRoaXMt Y29tbWFuZC1rZXlzIHQpCiAgICAgICAgICAgICAgIChvcmctc2NyZWVuc2hvdC1kby1yb3RhdGUg MSB0KQogICAgICAgICAgICAgICAoc2V0cSBsYXN0LWlucHV0LWV2ZW50IG5pbCkpCiAgICAgICAg ICAgICAgKChlcXVhbCBldmVudCBuZXh0LWtleSkKICAgICAgICAgICAgICAgKGNsZWFyLXRoaXMt Y29tbWFuZC1rZXlzIHQpCiAgICAgICAgICAgICAgIChvcmctc2NyZWVuc2hvdC1kby1yb3RhdGUg LTEgdCkKICAgICAgICAgICAgICAgKHNldHEgbGFzdC1pbnB1dC1ldmVudCBuaWwpKQogICAgICAg ICAgICAgICh0IChzZXRxIGRvbmUgdCkpKSkgCiAgICAgICh3aGVuIGxhc3QtaW5wdXQtZXZlbnQK ICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMgdCkKICAgICAgICAoc2V0cSB1bnJlYWQt Y29tbWFuZC1ldmVudHMgKGxpc3QgbGFzdC1pbnB1dC1ldmVudCkpKSkpKQoKKGRlZnVuIG9yZy1z Y3JlZW5zaG90LXNob3ctdW51c2VkICgpCiAgIk9wZW4gQSBEaXJlZCBidWZmZXIgd2l0aCB1bnVz ZWQgc2NyZWVuc2hvdHMgbWFya2VkIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgoZmlsZXMtaW4t YnVmZmVyKQoJZGlyZWQtYnVmZmVyCgloYWQtYW55CgkoaW1hZ2UtcmUgKG9yZy1pbWFnZS1maWxl LW5hbWUtcmVnZXhwKSkKCWJlZyBlbmQpCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHNhdmUt cmVzdHJpY3Rpb24KCSh3aWRlbikKCShzZXRxIGJlZyAob3IgYmVnIChwb2ludC1taW4pKSBlbmQg KG9yIGVuZCAocG9pbnQtbWF4KSkpCgkoZ290by1jaGFyIGJlZykKCShsZXQgKChyZSAoY29uY2F0 ICJcXFtcXFtcXChcXChmaWxlOlxcKVxcfFxcKFsuL35dXFwpXFwpXFwoW15dXG5dKz8iCgkJCSAg KHN1YnN0cmluZyAob3JnLWltYWdlLWZpbGUtbmFtZS1yZWdleHApIDAgLTIpCgkJCSAgIlxcKVxc XSIpKQoJICAgICAgKGNhc2UtZm9sZC1zZWFyY2ggdCkKCSAgICAgIG9sZCBmaWxlIG92IGltZyB0 eXBlIGF0dHJ3aWR0aCB3aWR0aCkKCSAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCByZSBlbmQg dCkKCSAgICAoc2V0cSBmaWxlIChjb25jYXQgKG9yIChtYXRjaC1zdHJpbmcgMykgIiIpIChtYXRj aC1zdHJpbmcgNCkpKQoJICAgICh3aGVuIChhbmQgKGZpbGUtZXhpc3RzLXAgZmlsZSkKCQkgICAg ICAgKGVxdWFsIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpCgkJCSAgICAgIChvcmctc2NyZWVu c2hvdC1pbWFnZS1kaXJlY3RvcnkpKSkKCSAgICAgIChwdXNoIChmaWxlLW5hbWUtbm9uZGlyZWN0 b3J5IGZpbGUpCgkJICAgIGZpbGVzLWluLWJ1ZmZlcikpKSkpKQogICAgKHNldHEgZGlyZWQtYnVm ZmVyIChkaXJlZC1ub3NlbGVjdCAob3JnLXNjcmVlbnNob3QtaW1hZ2UtZGlyZWN0b3J5KSkpCiAg ICAod2l0aC1jdXJyZW50LWJ1ZmZlciBkaXJlZC1idWZmZXIKICAgICAgKGRpcmVkLXVubWFyay1h bGwtZmlsZXMgP1xyKQogICAgICAoZGlyZWQtbWFyay1pZgogICAgICAgKGxldCAoKGZpbGUgKGRp cmVkLWdldC1maWxlbmFtZSAnbm8tZGlyIHQpKSkgCgkgKGFuZCBmaWxlIChzdHJpbmctbWF0Y2gg aW1hZ2UtcmUgZmlsZSkKCSAgICAgIChub3QgKG1lbWJlciBmaWxlIGZpbGVzLWluLWJ1ZmZlcikp CgkgICAgICAoc2V0cSBoYWQtYW55IHQpKSkKICAgICAgICJVbnVzZWQgc2NyZWVuc2hvdCIpKQog ICAgKHdoZW4gaGFkLWFueSAocG9wLXRvLWJ1ZmZlciBkaXJlZC1idWZmZXIpKSkpCgoocHJvdmlk ZSAnb3JnLXNjcmVlbnNob3QpCg== --Multipart_Thu_May_16_23:21:56_2013-1--