From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.emacs.gnus.general/18334 Path: main.gmane.org!not-for-mail From: wmperry@aventail.com (William M. Perry) Newsgroups: gmane.emacs.gnus.general Subject: Re: all you MP3 people out there... a fix for lars! Date: 30 Oct 1998 13:10:26 -0500 Sender: owner-ding@hpc.uh.edu Message-ID: <86zpad53al.fsf@kramer-fast.bp.aventail.com> References: <86vhl48scz.fsf@kramer-fast.bp.aventail.com> <87g1c7o795.fsf@perv.daft.com> <8iww5j3x6e.fsf@broca.biostr.washington.edu> <86d87a58uo.fsf@kramer-fast.bp.aventail.com> Reply-To: wmperry@aventail.com NNTP-Posting-Host: coloc-standby.netfonds.no Mime-Version: 1.0 (generated by tm-edit 7.108) Content-Type: multipart/mixed; boundary="Multipart_Fri_Oct_30_13:10:26_1998-1" Content-Transfer-Encoding: 7bit X-Trace: main.gmane.org 1035156875 5592 80.91.224.250 (20 Oct 2002 23:34:35 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Sun, 20 Oct 2002 23:34:35 +0000 (UTC) Cc: Wes Hardaker , ding@gnus.org Return-Path: Original-Received: from fisher.math.uh.edu (fisher.math.uh.edu [129.7.128.35]) by sclp3.sclp.com (8.8.5/8.8.5) with ESMTP id NAA09343 for ; Fri, 30 Oct 1998 13:16:24 -0500 (EST) Original-Received: from sina.hpc.uh.edu (lists@Sina.HPC.UH.EDU [129.7.3.5]) by fisher.math.uh.edu (8.9.1/8.9.1) with ESMTP id MAB20378; Fri, 30 Oct 1998 12:10:34 -0600 (CST) Original-Received: by sina.hpc.uh.edu (TLB v0.09a (1.20 tibbs 1996/10/09 22:03:07)); Fri, 30 Oct 1998 12:10:22 -0600 (CST) Original-Received: from sclp3.sclp.com (root@sclp3.sclp.com [209.195.19.139]) by sina.hpc.uh.edu (8.7.3/8.7.3) with ESMTP id MAA19356 for ; Fri, 30 Oct 1998 12:10:05 -0600 (CST) Original-Received: from slow.bp.aventail.com (vind11.cntwk.net [207.205.120.185]) by sclp3.sclp.com (8.8.5/8.8.5) with ESMTP id NAA09288 for ; Fri, 30 Oct 1998 13:09:55 -0500 (EST) Original-Received: from kramer-fast.bp.aventail.com (kramer-fast.bp.aventail.com [192.168.200.2]) by slow.bp.aventail.com (8.8.5/8.8.5) with ESMTP id JAA01121; Fri, 30 Oct 1998 09:08:38 -0800 Original-Received: (from wmperry@localhost) by kramer-fast.bp.aventail.com (8.8.5/8.8.5) id NAA09471; Fri, 30 Oct 1998 13:10:26 -0500 Original-To: torin@daft.com X-Face: O~Rn;(l][/-o1sALg4A@xpE:9-"'IR[%;,,!m7 Darren Stalder writes: > > > -----BEGIN PGP SIGNED MESSAGE----- > > > > Wes Hardaker, in an immanent manifestation of deity, wrote: > > >Willing? Heck, thats what my "cdrec" script is currently written in. > > >Was there another alternative??? > > > > Okay. I've gotten the impression on ding that if it ain't e-lisp, it > > ain't nuthin. I need to make a recent change to cd->query and then I > > can send a snapshot to anyone that wants it. > > And for those that really do think if it aint-e-lisp, its crap, here's a > first pass at cddb.el. It can use cdda2wav or cdparanoia to get the TOC > from the CD, computes the discid, and can either look up the CD in a local > CDDB database, or do it remotely. It even works through my socks.el stuff, > wheee. :) > > Try evaluating (cddb-get-entry) when you have a CD in the drive. It will > pull back the XMCD style info. Next on the list is actually parsing this > out. I want to eventually have a suite of elisp scripts that will just > take a CD, convert the whole damn thing to mp3, and create an appropriate > .XAM file (the xaudio album format). > > Or perhaps just go all the way and write an MP3 player in elisp and make > the playlists, etc, controllable via custom, and album files in a nice easy > to (read ...) format. > > Any interest? :) Duh, here's the attachment. -bp --Multipart_Fri_Oct_30_13:10:26_1998-1 Content-Type: text/plain; type=emacs-lisp; charset=US-ASCII Content-Disposition: attachment; filename="cddb.el" Content-Transfer-Encoding: base64 Ozs7IGNkZGIuZWwgLS0tIENEIERhdGFCYXNlIGludGVyZmFjZQo7OyBBdXRob3I6IFdpbGxp YW0gTS4gUGVycnkgPHdtcGVycnlAYXZlbnRhaWwuY29tPgo7OyBDcmVhdGVkOiBPY3RvYmVy IDI5LCAxOTk4Cjs7IFZlcnNpb246IDAuMQo7OyBLZXl3b3JkczogbXVsdGltZWRpYQoKOzs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgQ29weXJpZ2h0IChjKSAxOTk4IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgo7OzsKOzs7IFRoaXMgZmlsZSBpcyBub3QgcGFydCBv ZiBHTlUgRW1hY3MsIGJ1dCB0aGUgc2FtZSBwZXJtaXNzaW9ucyBhcHBseS4KOzs7Cjs7OyBH TlUgRW1hY3MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQo7OzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKOzs7IGFu eSBsYXRlciB2ZXJzaW9uLgo7OzsKOzs7IEdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OzsgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKOzs7IE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKOzs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCjs7 Owo7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKOzs7IGFsb25nIHdpdGggR05VIEVtYWNzOyBzZWUgdGhlIGZp bGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlCjs7OyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKOzs7IEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLgo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CgooZGVm Y29uc3QgY2RkYi12ZXJzaW9uICIwLjEiCiAgIlZlcnNpb24gIyBvZiBDRERCIHBhY2thZ2Uu IikKCihkZWZ2YXIgY2RkYi1jZHBhcmFub2lhLXByb2dyYW0gImNkcGFyYW5vaWEiCiAgIipX aGVyZSB0byBmaW5kIHRoZSBjZHBhcmFub2lhIHByb2dyYW0uIikKCihkZWZ2YXIgY2RkYi1j ZGRhMndhdi1wcm9ncmFtICJjZGRhMndhdiIKICAiKldoZXJlIHRvIGZpbmQgdGhlIGNkZGEy d2F2IHByb2dyYW0uIikKCihkZWZ2YXIgY2RkYi1jZGRhMndhdi1hcmd1bWVudHMgJygiLU4i ICItdCIgIjEiICItZCIgIjEiKQogICIqQXJndW1lbnRzIHRvIHBhc3MgdG8gY2RkYTJ3YXYg dG8gZ2V0IENEIHRyYWNrIGluZm9ybWF0aW9uLiIpCgooZGVmdmFyIGNkZGItY2QtcXVlcnkt ZnVuY3Rpb24gbmlsCiAgIipGdW5jdGlvbiB0byBjYWxsIHRvIGdldCBDRCB0cmFjayBpbmZv cm1hdGlvbiBmb3IgYSBkZXZpY2UuIikKICAKKGRlZnZhciBjZGRiLWhvc3RzICcoIi9vcHQv a2RlL3NoYXJlL2FwcHMva3NjZC9jZGRiLyIKCQkgICAgICIvdXNyL2xvY2FsL3NoYXJlL2Fw cHMva3NjZC9jZGRiLyIJCSAgICAgCgkJICAgICAiL3Vzci9zaGFyZS9hcHBzL2tzY2QvY2Rk Yi8iCgkJICAgICAoImNkZGIubW9vbnNvZnQuY29tIiA4ODgwKQoJCSAgICAgKCJjZGRiLnNv bmljLm5ldCIgODg4KQoJCSAgICAgKCJzdW5zaXRlLnVuYy5lZHUiIDg4ODApCgkJICAgICAo Ind3dy5jZGRiLmNvbSIgODg4MCkKCQkgICAgICgiY2RkYi5uZXRhZHMuY29tIiA4ODgwKQoJ CSAgICAgKCJjZGRiLmthZ29taS5jb20iIDg4ODApCgkJICAgICAoImNkZGIuY2VsZXN0aWFs LmNvbSIgODg4KSkKICAiKkEgbGlzdCBvZiBDRERCIGRhdGFiYXNlIGxvY2F0aW9ucyB0byBz ZWFyY2guCkVudHJpZXMgaW4gdGhpcyBsaXN0IGNhbiBiZSBzdHJpbmdzIHRvIHNwZWNpZnkg YSBsb2NhbCBkaXJlY3RvcnkKc3RydWN0dXJlIHRvIHNlYXJjaCwgb3IgYSBsaXN0IG9mICho b3N0bmFtZSBwb3J0bnVtYmVyKSB0byBzcGVjaWZ5IGEKcmVtb3RlIENEREIgc2VydmVyLgoi KQoKKGRlZnZhciBjZGRiLXBvc3NpYmxlLXByb2JlLXByb2dyYW1zCiAgJygoY2RkYi1jZHBh cmFub2lhLXByb2dyYW0gLiBjZGRiLWNkcGFyYW5vaWEtZ2V0LWluZm8pCiAgICAoY2RkYi1j ZGRhMndhdi1wcm9ncmFtIC4gY2RkYi1jZGRhMndhdi1nZXQtaW5mbykpCiAgIipQb3NzaWJs ZSBwcm9ncmFtcyB0byBwcm9iZSBmb3IgQ0QgY2hhcmFjdGVyaXN0aWNzLgpUaGlzIGlzIHVz ZWQgaWYgeW91IGhhdmUgbm90IGV4cGxpY2l0bHkgc2V0IGBjZGRiLWNkLXF1ZXJ5LWZ1bmN0 aW9uJy4KCkl0IGlzIGFuIGFzc29jIGxpc3QuICBUaGUgY2FyIG9mIGVhY2ggZW50cnkgaXMg YSBzeW1ib2wgbmFtZSB0aGF0CmhvbGRzIHRoZSBwcm9ncmFtIG5hbWUuICBUaGUgY2RyIG9m IGVhY2ggZW50cnkgaXMgYSBmdW5jdGlvbiBuYW1lIHRoYXQKc2hvdWxkIGJlIHVzZWQgYXMg dGhlIHZhbHVlIG9mIGBjZGRiLWNkLXF1ZXJ5LWZ1bmN0aW9uJyBpZiB0aGUgcHJvZ3JhbQpp cyBmb3VuZC4iKQoKCihkZWZzdWJzdCBjZGRiLXN1bS1kaWdpdCAoaSkKICAobGV0ICgoc3Vt IDApKQogICAgKG1hcGMgKGxhbWJkYSAoY2hhcikKCSAgICAoc2V0cSBzdW0gKCsgc3VtIChz dHJpbmctdG8taW50IChjaGFyLXRvLXN0cmluZyBjaGFyKSkpKSkKCSAgKGludC10by1zdHJp bmcgaSkpCiAgICBzdW0pKQoKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgVmFyaW91 cyB3YXlzIHRvIGV4dHJhY3QgdGhlIGluZm9ybWF0aW9uIHdlIG5lZWQgdG8gZG8gQ0REQiBx dWVyaWVzIHVzaW5nCjs7OyBleHRlcm5hbCBwcm9ncmFtcy4KOzs7Cjs7OyBQbGVhc2UgZmVl bCBmcmVlIHRvIGFkZCBtb3JlISAgSnVzdCBwbGVhc2UgZW1haWwgdGhlbSB0byB0aGUgbWFp bnRhaW5lcgo7Ozsgc28gb3RoZXIgcGVvcGxlIGNhbiBlbmpveSB0aGVtIGFzIHdlbGwuCjs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKGRlZnVuIGNkZGItY2RwYXJhbm9pYS1nZXQtaW5m byAoJm9wdGlvbmFsIGRldmljZSkKICAiRXh0cmFjdGluZm9ybWF0aW9uIGFib3V0IGEgY2Qg dXNpbmcgY2RwYXJhbm9pYS4KUmV0dXJucyBhIGxpc3Qgb2YgKERJU0NJRCBUUkFDS1MgTEVO R1RIIFRSQUNLSU5GTykKCkRJU0NJRCAtIHRoZSBDRERCIGRpc2NpZCBvZiB0aGUgY2QKVFJB Q0tTIC0gdGhlICMgb2YgdHJhY2tzIG9uIHRoZSBjZApMRU5HVEggLSB0aGUgdG90YWwgcnVu bmluZyB0aW1lIG9mIHRoZSBjZApUUkFDS0lORk8gLSBhIGxpc3Qgb2YgdGhlIGZyYW1lIG9m ZnNldHMgb2YgZWFjaCB0cmFjawoiCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2V0LWJ1ZmZl ciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIiAqY2RwYXJhbm9pYSoiKSkKICAgIChlcmFzZS1idWZm ZXIpCiAgICAobGV0ICgoZXhpdC1zdGF0dXMgKGlmIGRldmljZQoJCQkgICAoY2FsbC1wcm9j ZXNzIGNkZGItY2RwYXJhbm9pYS1wcm9ncmFtIG5pbCB0IG5pbCAiLWQiIGRldmljZSAiLVEi KQoJCQkgKGNhbGwtcHJvY2VzcyBjZGRiLWNkcGFyYW5vaWEtcHJvZ3JhbSBuaWwgdCBuaWwg Ii1RIikpKQoJICAodHJhY2staW5mbyBuaWwpCgkgICh0cmFjay10aW1lLWluZm8gbmlsKQoJ ICAoc3VtcyAwKQoJICAodHJhY2tzIDApCgkgIChsZW5ndGggMCkKCSAgKGxhc3Qtb2Zmc2V0 IDApKQogICAgICAoaWYgKC89IGV4aXQtc3RhdHVzIDApCgkgIChlcnJvciAiQ291bGQgbm90 IGdldCBleGVjdXRlIGAlcyciIGNkZGItY2RwYXJhbm9pYS1wcm9ncmFtKSkKICAgICAgKGdv dG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCAi XFwoWzAtOV0rXFwpW14wLTldK1swLTldWzAtOV06WzAtOV1bMC05XVxcLlswLTldWzAtOV0u XFxzLStcXChbMC05XStcXCkiIG5pbCB0KQoJKHB1c2ggKHN0cmluZy10by1pbnQgKG1hdGNo LXN0cmluZyAyKSkgdHJhY2staW5mbykKCShzZXRxIGxhc3Qtb2Zmc2V0ICgrIChzdHJpbmct dG8taW50IChtYXRjaC1zdHJpbmcgMSkpIChzdHJpbmctdG8taW50IChtYXRjaC1zdHJpbmcg MikpKSkpCiAgICAgIChzZXRxIHRyYWNrLWluZm8gKHJldmVyc2UgdHJhY2staW5mbykKCSAg ICB0cmFja3MgKGxlbmd0aCB0cmFjay1pbmZvKQoJICAgIHRyYWNrLXRpbWUtaW5mbyAobWFw Y2FyIChsYW1iZGEgKG9mZnNldCkgKCsgMiAoLyBvZmZzZXQgNzUpKSkgdHJhY2staW5mbykK CSAgICBsZW5ndGggKC0gKCsgMiAoLyBsYXN0LW9mZnNldCA3NSkpIChjYXIgdHJhY2stdGlt ZS1pbmZvKSkKCSAgICBzdW1zIChhcHBseSAocXVvdGUgKykgKG1hcGNhciAocXVvdGUgY2Rk Yi1zdW0tZGlnaXQpIHRyYWNrLXRpbWUtaW5mbykpKQogICAgICAobGlzdCAoZm9ybWF0ICIl MDJ4JTA0eCUwMngiIHN1bXMgbGVuZ3RoIHRyYWNrcykKCSAgICB0cmFja3MKCSAgICBsZW5n dGgKCSAgICB0cmFjay1pbmZvKSkpKQoKKGRlZnVuIGNkZGItY2RkYTJ3YXYtZ2V0LWluZm8g KCZvcHRpb25hbCBkZXZpY2UpCiAgIkV4dHJhY3RpbmZvcm1hdGlvbiBhYm91dCBhIGNkIHVz aW5nIGNkZGEyd2F2LgpSZXR1cm5zIGEgbGlzdCBvZiAoRElTQ0lEIFRSQUNLUyBMRU5HVEgg VFJBQ0tJTkZPKQoKRElTQ0lEIC0gdGhlIENEREIgZGlzY2lkIG9mIHRoZSBjZApUUkFDS1Mg LSB0aGUgIyBvZiB0cmFja3Mgb24gdGhlIGNkCkxFTkdUSCAtIHRoZSB0b3RhbCBydW5uaW5n IHRpbWUgb2YgdGhlIGNkClRSQUNLSU5GTyAtIGEgbGlzdCBvZiB0aGUgZnJhbWUgb2Zmc2V0 cyBvZiBlYWNoIHRyYWNrCiIKCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2V0LWJ1ZmZlciAo Z2V0LWJ1ZmZlci1jcmVhdGUgIiAqY2RkYTJ3YXYqIikpCiAgICAoZXJhc2UtYnVmZmVyKQog ICAgKGxldCogKChleGl0LXN0YXR1cyAoaWYgZGV2aWNlCgkJCSAgICAoYXBwbHkgJ2NhbGwt cHJvY2VzcwoJCQkJICAgY2RkYi1jZGRhMndhdi1wcm9ncmFtIG5pbCB0IG5pbCAKCQkJCSAg ICItRCIgZGV2aWNlCgkJCQkgICBjZGRiLWNkZGEyd2F2LWFyZ3VtZW50cykKCQkJICAoYXBw bHkgJ2NhbGwtcHJvY2VzcwoJCQkJIGNkZGItY2RkYTJ3YXYtcHJvZ3JhbSBuaWwgdCBuaWwK CQkJCSBjZGRiLWNkZGEyd2F2LWFyZ3VtZW50cykpKQoJICAodHJhY2staW5mbyBuaWwpCgkg ICh0cmFjay10aW1lLWluZm8gbmlsKQoJICAoc3VtcyAwKQoJICAodHJhY2tzIDApCgkgIChs ZW5ndGggMCkKCSAgKGxhc3Qtb2Zmc2V0IDApKQogICAgICAoaWYgKC89IGV4aXQtc3RhdHVz IDApCgkgIChlcnJvciAiQ291bGQgbm90IGdldCBleGVjdXRlIGAlcyciIGNkZGItY2RkYTJ3 YXYtcHJvZ3JhbSkpCiAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAgIChpZiAo bm90IChyZS1zZWFyY2gtZm9yd2FyZCAic3RhcnRpbmcgc2VjdG9ycy4qIiBuaWwgdCkpCgkg IChlcnJvciAiQ291bGQgbm90IHVuZGVyc3RhbmQgb3V0cHV0IG9mIGAlcyciIGNkZGItY2Rk YTJ3YXYtcHJvZ3JhbSkpCiAgICAgIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChtYXRj aC1lbmQgMCkpCiAgICAgICh3aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIlxccy0qXFwoW15c KF0rXFwpXChcXHMtKlxcKFswLTldK1xcKVwpLD8iIG5pbCB0KQoJKHB1c2ggKHN0cmluZy10 by1pbnQgKG1hdGNoLXN0cmluZyAyKSkgdHJhY2staW5mbykpCiAgICAgIChzZXRxIGxhc3Qt b2Zmc2V0IChwb3AgdHJhY2staW5mbykpCiAgICAgIChzZXRxIHRyYWNrLWluZm8gKHJldmVy c2UgdHJhY2staW5mbykKCSAgICB0cmFja3MgKGxlbmd0aCB0cmFjay1pbmZvKQoJICAgIHRy YWNrLXRpbWUtaW5mbyAobWFwY2FyIChsYW1iZGEgKG9mZnNldCkgKCsgMiAoLyBvZmZzZXQg NzUpKSkgdHJhY2staW5mbykKCSAgICBsZW5ndGggKC0gKCsgMiAoLyBsYXN0LW9mZnNldCA3 NSkpIChjYXIgdHJhY2stdGltZS1pbmZvKSkKCSAgICBzdW1zIChhcHBseSAocXVvdGUgKykg KG1hcGNhciAocXVvdGUgY2RkYi1zdW0tZGlnaXQpIHRyYWNrLXRpbWUtaW5mbykpKQogICAg ICAobGlzdCAoZm9ybWF0ICIlMDJ4JTA0eCUwMngiIHN1bXMgbGVuZ3RoIHRyYWNrcykKCSAg ICB0cmFja3MKCSAgICBsZW5ndGgKCSAgICB0cmFjay1pbmZvKSkpKSAgICAKCgwKOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Owo7OzsgWE1DRCBmaWxlIHBhcnNpbmcKOzs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7OwooZGVmc3Vic3QgY2RkYi1wYXJzZS12YWxpZC1wICgpCiAgKHNhdmUt ZXhjdXJzaW9uCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgKGxvb2tpbmctYXQg IiMgeG1jZCIpKSkKCihkZWZ1biBjZGRiLXBhcnNlLWdldC1pdGVtIChuYW1lKQogIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpCiAgKGxldCAoKHJlZ2V4cCAoZm9ybWF0ICJeXFxzLSolcz1c XCguKlxcKSIgbmFtZSkpCgkodmFsdWUgIiIpKQogICAgKHdoaWxlIChyZS1zZWFyY2gtZm9y d2FyZCByZWdleHAgbmlsIHQpCiAgICAgIChzZXRxIHZhbHVlIChjb25jYXQgdmFsdWUgKG1h dGNoLXN0cmluZyAxKSkpKQogICAgdmFsdWUpKQoKKGRlZnVuIGNkZGItcGFyc2UtaW5mbyAo Jm9wdGlvbmFsIGJ1ZmZlcikKICAoc2F2ZS1leGN1cnNpb24KICAgIChzZXQtYnVmZmVyIChv ciBidWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAoaWYgKG5vdCAoY2RkYi1wYXJzZS12 YWxpZC1wKSkKCW5pbAogICAgICApKSkKCQoMCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsK Ozs7IExvY2FsIHNlYXJjaGluZwo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CihkZWZ1biBj ZGRiLWxvY2FsLXNlYXJjaC1pbnRlcm5hbCAoZGlzY2lkIGRpcikKICAobGV0ICgoc3ViZGly cyAoZGlyZWN0b3J5LWZpbGVzIGRpciBuaWwgbmlsIG5pbCA1KSkKCShzdWJkaXIgbmlsKQoJ KG1hdGNoZXMgbmlsKQoJKGVudHJ5IG5pbCkpCiAgICAoaWYgKGZpbGUtZXhpc3RzLXAgKGV4 cGFuZC1maWxlLW5hbWUgZGlzY2lkIGRpcikpCgkocHVzaCAoZXhwYW5kLWZpbGUtbmFtZSBk aXNjaWQgZGlyKSBtYXRjaGVzKSkKICAgICh3aGlsZSBzdWJkaXJzCiAgICAgIChzZXRxIHN1 YmRpciAocG9wIHN1YmRpcnMpKQogICAgICAoaWYgKG9yIChzdHJpbmc9ICIuIiBzdWJkaXIp IChzdHJpbmc9ICIuLiIgc3ViZGlyKSkKCSAgbmlsCgkoc2V0cSBlbnRyeSAoY2RkYi1sb2Nh bC1zZWFyY2gtaW50ZXJuYWwgZGlzY2lkIChleHBhbmQtZmlsZS1uYW1lIHN1YmRpciBkaXIp KSkKCShpZiBlbnRyeQoJICAgIChzZXRxIG1hdGNoZXMgKGFwcGVuZCBtYXRjaGVzIGVudHJ5 KSkpKSkKICAgIG1hdGNoZXMpKQoKKGRlZnVuIGNkZGItbG9jYWwtc2VhcmNoIChpbmZvIGRp cikKICAoaWYgKG5vdCAoZmlsZS1leGlzdHMtcCBkaXIpKQogICAgICBuaWwKICAgIChtZXNz YWdlICJTZWFyY2hpbmcgbG9jYWxseTogJXMiIGRpcikKICAgIChsZXQgKChtYXRjaGVzIChj ZGRiLWxvY2FsLXNlYXJjaC1pbnRlcm5hbCAoY2FyIGluZm8pIGRpcikpCgkgIChkaXNjaWQg bmlsKQoJICAoZmlsZW5hbWUgbmlsKQoJICAodGl0bGUgbmlsKSkKICAgICAgKGlmIChub3Qg bWF0Y2hlcykKCSAgbmlsCgkoc2F2ZS1leGN1cnNpb24KCSAgKHNldC1idWZmZXIgKGdldC1i dWZmZXItY3JlYXRlICIgKmNkZGIqIikpCgkgICh3aGlsZSBtYXRjaGVzCgkgICAgKGVyYXNl LWJ1ZmZlcikKCSAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgKGNhciBtYXRjaGVzKSkKCSAg ICAocHVzaCAoY2FyIG1hdGNoZXMpIGZpbGVuYW1lKQoJICAgIChwdXNoIChjZGRiLXBhcnNl LWdldC1pdGVtICJESVNDSUQiKSBkaXNjaWQpCgkgICAgKHB1c2ggKGNkZGItcGFyc2UtZ2V0 LWl0ZW0gIkRUSVRMRSIpIHRpdGxlKQoJICAgIChwb3AgbWF0Y2hlcykpKQoKCShpZiAoPSAo bGVuZ3RoIGRpc2NpZCkgMSkKCSAgICAoc2V0cSBkaXNjaWQgKGNhciBkaXNjaWQpCgkJICB0 aXRsZSAoY2FyIHRpdGxlKQoJCSAgZmlsZW5hbWUgKGNhciBmaWxlbmFtZSkpKQoKCShpZiAo bGlzdHAgZGlzY2lkKQoJICAgIChsZXQgKChjaG9pY2VzIG5pbCkKCQkgIChjb21wbGV0aW9u LWlnbm9yZS1jYXNlIHQpKQoJICAgICAgKHdoaWxlIHRpdGxlCgkJKHB1c2ggKGNvbnMgKHBv cCB0aXRsZSkgKGNvbnMgKHBvcCBmaWxlbmFtZSkgKHBvcCBkaXNjaWQpKSkgY2hvaWNlcykp CgkgICAgICAoc2V0cSB0aXRsZSAoY29tcGxldGluZy1yZWFkICJNdWx0aXBsZSBtYXRjaGVz LCBjaG9vc2U6ICIgY2hvaWNlcyBuaWwgdCkpCgkgICAgICAoaWYgKG5vdCB0aXRsZSkKCQkg IChlcnJvciAiTXVzdCBjaG9vc2UgYW4gaXRlbSBmcm9tIHRoZSBsaXN0LiIpKQoJICAgICAg KHNldHEgZmlsZW5hbWUgKGNhciAoY2FyIChhc3NvYyB0aXRsZSBjaG9pY2VzKSkpCgkJICAg IGRpc2NpZCAoY2RyIChjYXIgKGFzc29jIHRpdGxlIGNob2ljZXMpKSkpKSkKCShzYXZlLWV4 Y3Vyc2lvbgoJICAoc2V0LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIiAqY2RkYioiKSkK CSAgKGVyYXNlLWJ1ZmZlcikKCSAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGVuYW1lKQoJ ICAoYnVmZmVyLXN0cmluZykpKSkpKQoKDAo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Cjs7 OyBSZW1vdGUgc2VhcmNoaW5nCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKGRlZnVuIGNk ZGItYnVpbGQtcXVlcnktc3RyaW5nIChpbmZvKQogIChmb3JtYXQgImNkZGIgcXVlcnkgJXMg JWQgJXMgJWRcclxuIgoJICAobnRoIDAgaW5mbykKCSAgKG50aCAxIGluZm8pCgkgIChtYXBj b25jYXQgJ2ludC10by1zdHJpbmcgKG50aCAzIGluZm8pICIgIikKCSAgKG50aCAyIGluZm8p KSkKCihkZWZzdWJzdCBjZGRiLXByb2Nlc3MtbGl2ZS1wIChwcm9jZXNzKQogIChtZW1xIChw cm9jZXNzLXN0YXR1cyBwcm9jZXNzKSAnKHJ1biBvcGVuKSkpCgkKKGRlZnN1YnN0IGNkZGIt Z2V0LW11bHRpcGxlLWRhdGEgKHByb2Nlc3MpCiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkK ICAod2hpbGUgKG5vdCAocmUtc2VhcmNoLWZvcndhcmQgIl5cXC5ccj8kIiBuaWwgdCkpCiAg ICAoaWYgKG5vdCAoY2RkYi1wcm9jZXNzLWxpdmUtcCBwcm9jZXNzKSkKCShlcnJvciAiQ0RE QiBDb25uZWN0aW9uIHVuZXhwZWN0ZWRseSBjbG9zZWQuIikpCiAgICAoYWNjZXB0LXByb2Nl c3Mtb3V0cHV0IHByb2Nlc3MpKQogIChyZXBsYWNlLW1hdGNoICIiKQogIChwcm9nMQogICAg ICAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQtbWluKSAobWF0Y2gtYmVnaW5uaW5nIDApKQog ICAgKGRlbGV0ZS1yZWdpb24gKHBvaW50LW1pbikgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQoK KGRlZnVuIGNkZGItZ2V0LXJlc3BvbnNlIChwcm9jZXNzICZvcHRpb25hbCBlcnJvci1zdHJp bmcpCiAgIkhhbmRsZXMgZ2V0dGluZyBhIHJlc3BvbnNlIGZyb20gYSBDRERCIHNlcnZlci4K UmV0dXJuIHZhbHVlIGlzIGEgbGlzdCBvZiAoQ09ERSBEQVRBIEVYVEVOREVEREFUQSkKCkNP REUgaXMgdGhlIG51bWVyaWNhbCByZXNwb25zZSBjb2RlCkRBVEEgaXMgdGhlIHNpbmdsZS1s aW5lIHRleHR1YWwgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyCkVYVEVOREVEREFUQSBpcyB0 aGUgZXh0cmEgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgKGZvciB4MXggcmVzcG9uc2VzKQoiCiAg KGxldCAoKHJlc3BvbnNlLWNvZGUgbmlsKQoJKHJlc3BvbnNlLWRhdGEgbmlsKQoJKGV4dGVu ZGVkLWRhdGEgbmlsKQoJKG1ham9yLWNvZGUgbmlsKQoJKG1pbm9yLWNvZGUgbmlsKSkKICAg IChnb3RvLWNoYXIgKHBvaW50LW1pbikpCiAgICAod2hpbGUgKG5vdCAocmUtc2VhcmNoLWZv cndhcmQgIl5cXChbMC05XStcXClcXHMtK1xcKFteXHJcbl0qXFwpXHIqXG4iIG5pbCB0KSkK ICAgICAgKGlmIChub3QgKGNkZGItcHJvY2Vzcy1saXZlLXAgcHJvY2VzcykpCgkgIChlcnJv ciAob3IgZXJyb3Itc3RyaW5nICJFcnJvcjogJXMiKSAiQ29ubmVjdGlvbiB1bmV4cGVjdGVk bHkgY2xvc2VkLiIpKQogICAgICAoYWNjZXB0LXByb2Nlc3Mtb3V0cHV0IHByb2Nlc3MpCiAg ICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpKQoKICAgIChzZXRxIHJlc3BvbnNlLWNvZGUg KHN0cmluZy10by1pbnQgKG1hdGNoLXN0cmluZyAxKSkKCSAgcmVzcG9uc2UtZGF0YSAobWF0 Y2gtc3RyaW5nIDIpCgkgIG1ham9yLWNvZGUgKC8gcmVzcG9uc2UtY29kZSAxMDApCgkgIG1p bm9yLWNvZGUgKC8gKC0gKCUgcmVzcG9uc2UtY29kZSAxMDApICglICglIHJlc3BvbnNlLWNv ZGUgMTAwKSAxMCkpIDEwKSkKICAgIChyZXBsYWNlLW1hdGNoICIiKQogICAgKGNhc2UgbWFq b3ItY29kZQogICAgICAoMSBuaWwpCQkJCTsgSW5mb3JtYXRpdmUgbWVzc2FnZQogICAgICAo MiBuaWwpCQkJCTsgQ29tbWFuZCBPSwogICAgICAoMyBuaWwpCQkJCTsgQ29tbWFuZCBPSyBz byBmYXIsIGNvbnRpbnVlCiAgICAgICg0CQkJCTsgQ29tbWFuZCBPaywgYnV0IGNhbm5vdCBi ZSBwZXJmb3JtZWQKICAgICAgIChlcnJvciAob3IgZXJyb3Itc3RyaW5nICJDYW5ub3QgcGVy Zm9ybSBjb21tYW5kOiAlcyIpIHJlc3BvbnNlLWRhdGEpKQogICAgICAoNQkJCQk7IENvbW1h bmQgdW5pbXBsZW1lbnRlZCwgaW5jb3JyZWN0LCBvciBwcm9ncmFtIGVycm9yCiAgICAgICAo ZXJyb3IgKG9yIGVycm9yLXN0cmluZyAiRXJyb3I6ICVzIikgcmVzcG9uc2UtZGF0YSkpCiAg ICAgIChvdGhlcndpc2UJCQk7IFVua25vd24gbWFqb3IgcmVzcG9uc2UgY29kZSEKICAgICAg IChlcnJvciAiVW5rbm93biBtYWpvciByZXNwb25zZSBjb2RlOiAlZCIgcmVzcG9uc2UtY29k ZSkpKQoKICAgIChjYXNlIG1pbm9yLWNvZGUKICAgICAgKDAgbmlsKQkJCQk7IFJlYWR5IGZv ciBmdXJ0aGVyIGNvbW1hbmRzCiAgICAgICgxCQkJCTsgTW9yZSBzZXJ2ZXItdG8tY2xpZW50 IG91dHB1dCBmb2xsb3dzCiAgICAgICAoc2V0cSBleHRlbmRlZC1kYXRhIChjZGRiLWdldC1t dWx0aXBsZS1kYXRhIHByb2Nlc3MpKSkKICAgICAgKDIgbmlsKQkJCQk7IE1vcmUgY2xpZW50 LXRvLXNlcnZlciBpbnB1dCBmb2xsb3dzCiAgICAgICgzIG5pbCkJCQkJOyBDb25uZWN0aW9u IHdpbGwgY2xvc2UKICAgICAgKG90aGVyd2lzZSBuaWwpKQkJCTsgVW5rbm93biBtaW5vciBj b2RlIGlzIG9rPwoKICAgIChsaXN0IHJlc3BvbnNlLWNvZGUgcmVzcG9uc2UtZGF0YSBleHRl bmRlZC1kYXRhKSkpCgooZGVmdW4gY2RkYi1yZW1vdGUtc2VhcmNoIChxdWVyeSBob3N0IHBv cnQpCiAgIlBlcmZvcm0gYSBzZWFyY2ggb24gYSByZW1vdGUgSE9TVCBmb3IgYSBnaXZlbiBj ZGRiIHF1ZXJ5IFFVRVJZIgogIChtZXNzYWdlICJTZWFyY2hpbmcgcmVtb3RlbHk6ICVzOiVk IiBob3N0IHBvcnQpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoc2V0LWJ1ZmZlciAoZ2V0LWJ1 ZmZlci1jcmVhdGUgIiAqY2RkYioiKSkKICAgIChlcmFzZS1idWZmZXIpCiAgICAobGV0ICgo cHJvY2VzcyAob3Blbi1uZXR3b3JrLXN0cmVhbSAiY2RkYiIgKGN1cnJlbnQtYnVmZmVyKSBo b3N0IHBvcnQpKQoJICAocmVzcG9uc2UgbmlsKQoJICAoY2F0ZWdvcnkgbmlsKQoJICAoZGlz Y2lkIG5pbCkKCSAgKHRpdGxlIG5pbCkKCSAgKGVudHJ5IG5pbCkpCgogICAgICA7OyBUaGlz IGlzIGp1c3Qgc28gd2UgZG9uJ3Qgc2VlIHRoZSBhbm5veWluZyAodG8gbWUpCiAgICAgIDs7 ICdQcm9jZXNzIGZvbyBleGl0ZWQgYWJub3JtYWxseSB3aXRoIGNvZGUgIyMjJwogICAgICA7 OyBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGNvbm5lY3Rpb24uCiAgICAgIChzZXQtcHJvY2Vzcy1z ZW50aW5lbCBwcm9jZXNzICdpZ25vcmUpCgogICAgICA7OyBTbHVycCBpbiB0aGUgb3Blbmlu ZyBiYW5uZXIKICAgICAgKGNkZGItZ2V0LXJlc3BvbnNlIHByb2Nlc3MgIkNhbm5vdCBjb25u ZWN0IHRvIHNlcnZlcjogJXMiKQoKICAgICAgOzsgU2VuZC9yZWNlaXZlIHRoZSBoZWxsbwog ICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyBwcm9jZXNzCgkJCSAgIChmb3JtYXQgImNkZGIg aGVsbG8gJXMgJXMgY2RkYi5lbCAlc1xyXG4iCgkJCQkgICAodXNlci1yZWFsLWxvZ2luLW5h bWUpCgkJCQkgICAoc3lzdGVtLW5hbWUpCgkJCQkgICBjZGRiLXZlcnNpb24pKQogICAgICAo Y2RkYi1nZXQtcmVzcG9uc2UgcHJvY2VzcykKCiAgICAgIDs7IEFjdHVhbGx5IHNlbmQgdGhl IHF1ZXJ5CiAgICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIHByb2Nlc3MgcXVlcnkpCiAgICAg IChzZXRxIHJlc3BvbnNlIChjZGRiLWdldC1yZXNwb25zZSBwcm9jZXNzICJDb3VsZCBub3Qg c2VuZCBxdWVyeSB0byBzZXJ2ZXI6ICVzIikpCgogICAgICAobGV0ICgocXVlcnktcmVzcG9u c2UtcmVnZXhwICJcXChcXHcrXFwpXFxzLStcXCguLi4uLi4uLlxcKVxccy1cXCguKlxcKSIp KQoJKGNhc2UgKGNhciByZXNwb25zZSkKCSAgKDIwMAoJICAgOzsgRm91bmQgZXhhY3QgbWF0 Y2gKCSAgIChpZiAoc3RyaW5nLW1hdGNoIHF1ZXJ5LXJlc3BvbnNlLXJlZ2V4cCAobnRoIDEg cmVzcG9uc2UpKQoJICAgICAgIChzZXRxIGNhdGVnb3J5IChtYXRjaC1zdHJpbmcgMSAobnRo IDEgcmVzcG9uc2UpKQoJCSAgICAgZGlzY2lkIChtYXRjaC1zdHJpbmcgMiAobnRoIDEgcmVz cG9uc2UpKQoJCSAgICAgdGl0bGUgKG1hdGNoLXN0cmluZyAzIChudGggMSByZXNwb25zZSkp KSkpCgkgICgyMDIKCSAgIDs7IE5vIG1hdGNoZXMgZm91bmQKCSAgICkKCSAgKCgyMTAgMjEx KQoJICAgOzsgMjEwID0gRm91bmQgbXVsdGlwbGUgZXhhY3QgbWF0Y2hlcywgbGlzdCBmb2xs b3dzCgkgICA7OyAyMTEgPSBGb3VuZCBpbmV4YWN0IG1hdGNoZXMsIGxpc3QgZm9sbG93cwoJ ICAgKHNldHEgcmVzcG9uc2UgKHNwbGl0LXN0cmluZyAiXHI/XG4iIChudGggMiByZXNwb25z ZSkpKQoJICAgKHdoaWxlIHJlc3BvbnNlCgkgICAgIChpZiAoc3RyaW5nLW1hdGNoIHF1ZXJ5 LXJlc3BvbnNlLXJlZ2V4cCAoY2FyIHJlc3BvbnNlKSkKCQkgKHByb2duCgkJICAgKHB1c2gg KG1hdGNoLXN0cmluZyAxIChjYXIgcmVzcG9uc2UpKSBjYXRlZ29yeSkKCQkgICAocHVzaCAo bWF0Y2gtc3RyaW5nIDIgKGNhciByZXNwb25zZSkpIGRpc2NpZCkKCQkgICAocHVzaCAobWF0 Y2gtc3RyaW5nIDMgKGNhciByZXNwb25zZSkpIHRpdGxlKSkKCSAgICAgICAoZXJyb3IgIkNh biBub3QgdW5kZXJzdGFuZCBxdWVyeSByZXNwb25zZTogJXMiIChjYXIgcmVzcG9uc2UpKSkK CSAgICAgKHBvcCByZXNwb25zZSkpKSkpCiAgICAgIChpZiAobGlzdHAgY2F0ZWdvcnkpCgkg IChsZXQgKChjaG9pY2VzIG5pbCkKCQkoY29tcGxldGlvbi1pZ25vcmUtY2FzZSB0KSkKCSAg ICAod2hpbGUgdGl0bGUKCSAgICAgIChwdXNoIChjb25zIChwb3AgdGl0bGUpIChjb25zIChw b3AgY2F0ZWdvcnkpIChwb3AgZGlzY2lkKSkpIGNob2ljZXMpKQoJICAgIChzZXRxIHRpdGxl IChjb21wbGV0aW5nLXJlYWQgIk11bHRpcGxlIG1hdGNoZXMsIGNob29zZTogIiBjaG9pY2Vz IG5pbCB0KSkKCSAgICAoaWYgKG5vdCB0aXRsZSkKCQkoZXJyb3IgIk11c3QgY2hvb3NlIGFu IGl0ZW0gZnJvbSB0aGUgbGlzdC4iKSkKCSAgICAoc2V0cSBjYXRlZ29yeSAoY2FyIChjYXIg KGFzc29jIHRpdGxlIGNob2ljZXMpKSkKCQkgIGRpc2NpZCAoY2RyIChjYXIgKGFzc29jIHRp dGxlIGNob2ljZXMpKSkpKSkKICAgICAgKGlmIChub3QgY2F0ZWdvcnkpCgkgIDs7IERpZG4n dCBmaW5kIF9hbnlfIG1hdGNoZXMsIG9yIHRoZSB1c2VyIGRpZG4ndCBsaWtlIHdoYXQgdGhl eSBmb3VuZAoJICA7OyBsZXQncyBtb3ZlIG9uIHRvIHRoZSBuZXh0IHNlcnZlci4KCSAgbmls CgkocHJvY2Vzcy1zZW5kLXN0cmluZyBwcm9jZXNzIChmb3JtYXQgImNkZGIgcmVhZCAlcyAl c1xyXG4iIGNhdGVnb3J5IGRpc2NpZCkpCgkoc2V0cSByZXNwb25zZSAoY2RkYi1nZXQtcmVz cG9uc2UgcHJvY2VzcyAiRXJyb3IgZHVyaW5nIGBjZGRiIHJlYWQnOiAlcyIpCgkgICAgICBl bnRyeSAobnRoIDIgcmVzcG9uc2UpKSkKICAgICAgKHByb2Nlc3Mtc2VuZC1zdHJpbmcgcHJv Y2VzcyAicXVpdFxyXG4iKQogICAgICAoY2RkYi1nZXQtcmVzcG9uc2UgcHJvY2VzcyAiUHJv YmxlbSBkaXNjb25uZWN0aW5nIGZyb20gc2VydmVyOiAlcyIpCiAgICAgIChpZiAoYW5kIGVu dHJ5IChzdHJpbmctbWF0Y2ggIlxyXG4iIGVudHJ5KSkKCSAgKHByb2duCgkgICAgOzsgSGFz IFxyXG4gY3JhcCwgY2xlYW4gaXQgdXAKCSAgICAoZXJhc2UtYnVmZmVyKQoJICAgIChpbnNl cnQgZW50cnkpCgkgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKCSAgICAod2hpbGUgKHJl LXNlYXJjaC1mb3J3YXJkICJcclxuIiBuaWwgdCkKCSAgICAgIChyZXBsYWNlLW1hdGNoICJc biIpKQoJICAgIChzZXRxIGVudHJ5IChidWZmZXItc3RyaW5nKSkKCSAgICAoZXJhc2UtYnVm ZmVyKSkpCiAgICAgIGVudHJ5KSkpCgoMCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKOzs7 IE1haW4gZW50cnkgcG9pbnRzCjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsKKGRlZnVuIGNk ZGItaW5pdCAoKQogIChpZiAobm90IGNkZGItY2QtcXVlcnktZnVuY3Rpb24pCiAgICAgIChs ZXQgKChwYXRocyBuaWwpCgkgICAgKHBvc3NpYmxlLXByb2JlcyBjZGRiLXBvc3NpYmxlLXBy b2JlLXByb2dyYW1zKQoJICAgIChwcm9iZSBuaWwpCgkgICAgKHByb2dyYW0tbmFtZSBuaWwp KQoKCSh3aGlsZSBwb3NzaWJsZS1wcm9iZXMKCSAgKHNldHEgcHJvYmUgKGNhciBwb3NzaWJs ZS1wcm9iZXMpCgkJcG9zc2libGUtcHJvYmVzIChjZHIgcG9zc2libGUtcHJvYmVzKQoJCXBh dGhzIGV4ZWMtcGF0aAoJCXByb2dyYW0tbmFtZSAoc3ltYm9sLXZhbHVlIChjYXIgcHJvYmUp KSkKCSAgKHdoaWxlIHBhdGhzCgkgICAgKGlmIChhbmQgKGZpbGUtZXhpc3RzLXAgKGV4cGFu ZC1maWxlLW5hbWUgcHJvZ3JhbS1uYW1lIChjYXIgcGF0aHMpKSkKCQkgICAgIChmaWxlLWV4 ZWN1dGFibGUtcCAoZXhwYW5kLWZpbGUtbmFtZSBwcm9ncmFtLW5hbWUgKGNhciBwYXRocykp KSkKCQkoc2V0cSBwYXRocyBuaWwKCQkgICAgICBwb3NzaWJsZS1wcm9iZXMgbmlsCgkJICAg ICAgY2RkYi1jZC1xdWVyeS1mdW5jdGlvbiAoY2RyIHByb2JlKSkpCgkgICAgKHNldHEgcGF0 aHMgKGNkciBwYXRocykpKSkpKQogIChpZiAobm90IGNkZGItY2QtcXVlcnktZnVuY3Rpb24p CiAgICAgIChzYXZlLXdpbmRvdy1leGN1cnNpb24KCShzZXQtYnVmZmVyIChnZXQtYnVmZmVy LWNyZWF0ZSAiKkNEREIgRXJyb3IqIikpCgkoZXJhc2UtYnVmZmVyKQoJKGluc2VydCAiKioq IEVSUk9SICoqKlxuXG4iCgkJIkFuIGVycm9yIG9jY3VyZWQgd2hpbGUgdHJ5aW5nIHRvIGRl dGVybWluZSBob3cgdG8gZ2V0IENEIHRyYWNrICIKCQkiaW5mb3JtYXRpb24gb24geW91ciBz eXN0ZW0uXG5cbiIKCQkiTm9uZSBvZiB0aGUgZm9sbG93aW5nIHByb2dyYW1zIHdhcyBmb3Vu ZCBvbiB5b3VyIHN5c3RlbS4gICIKCQkiUGxlYXNlIGN1c3RvbWl6ZSBvbmUgb2YgdGhlIHZh cmlhYmxlcyBhbmQgdHJ5IGFnYWluLiIpCgkoZmlsbC1yZWdpb24gKHBvaW50LW1pbikgKHBv aW50LW1heCkpCgkoaW5zZXJ0ICJcbiIpCgkobWFwY2FyIChsYW1iZGEgKHYpCgkJICAoaW5z ZXJ0IChzeW1ib2wtbmFtZSAoY2FyIHYpKSAiIC0tICIgKHN5bWJvbC12YWx1ZSAoY2FyIHYp KSAiXG4iKSkKCQljZGRiLXBvc3NpYmxlLXByb2JlLXByb2dyYW1zKQoJKGRpc3BsYXktYnVm ZmVyIChjdXJyZW50LWJ1ZmZlcikpCgkocmVhZC1zdHJpbmcgIkFuIGVycm9yIG9jY3VyZWQg LSBwcmVzcyBSRVRVUk4gdG8gY29udGludWUuLi4iKQoJKGVycm9yICJBYm9ydGluZyIpKSkp CgooZGVmdW4gY2RkYi1nZXQtZW50cnkgKCZvcHRpb25hbCBkZXZpY2UpCiAgKGNkZGItaW5p dCkKICAobGV0KiAoKGN1cnJlbnQtaG9zdCBuaWwpCgkgKGhvc3RzIGNkZGItaG9zdHMpCgkg KGluZm8gKGZ1bmNhbGwgY2RkYi1jZC1xdWVyeS1mdW5jdGlvbiBkZXZpY2UpKQoJIChlbnRy eSBuaWwpCgkgKHF1ZXJ5IChjZGRiLWJ1aWxkLXF1ZXJ5LXN0cmluZyBpbmZvKSkpCiAgICAo d2hpbGUgKGFuZCBob3N0cyAobm90IGVudHJ5KSkKICAgICAgKHNldHEgY3VycmVudC1ob3N0 IChjYXIgaG9zdHMpCgkgICAgaG9zdHMgKGNkciBob3N0cykpCiAgICAgIChpZiAoc3RyaW5n cCBjdXJyZW50LWhvc3QpCgkgIChzZXRxIGVudHJ5IChjZGRiLWxvY2FsLXNlYXJjaCBpbmZv IGN1cnJlbnQtaG9zdCkpCgkoc2V0cSBlbnRyeSAoYXBwbHkgJ2NkZGItcmVtb3RlLXNlYXJj aCBxdWVyeSBjdXJyZW50LWhvc3QpKSkpCiAgICBlbnRyeSkpCg== --Multipart_Fri_Oct_30_13:10:26_1998-1--