pcp updates: pcp-tapestat initial checkin
"Nikhil Kshirsagar" <[email protected]> Tue, 28 Feb 2017 11:22:47 +0530
| Newsgroups | gmane.comp.sysutils.pcp |
|---|---|
| Message-ID | <[email protected]> |
--001a114dade047e240054990ce00 Content-Type: multipart/alternative; boundary=001a114dade047e23a054990cefe --001a114dade047e23a054990cefe Content-Type: text/plain; charset=UTF-8 Hi Nathan, Here is the initial commit for pcp-tapestat. I'm attaching the pcp-tapestat.py file along with the man page. These are good to merge. Mark Goodwin and I have tested this on a device with a real tape, and the figures looked correct. We have an archive to use for qa tests against pmrep and other pcp tools. I will be working on the qa tests after this commit. Regards, Nikhil. --001a114dade047e23a054990cefe Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hi Nathan,<div><br></div><div>Here is the initial commit f= or pcp-tapestat. I'm attaching the pcp-tapestat.py file along with the = man page. These are good to merge.</div><div><br></div><div>Mark Goodwin an= d I have tested this on a device with a real tape, and the figures looked c= orrect.</div><div><br></div><div>We have an archive to use for qa tests aga= inst pmrep and other pcp tools. I will be working on the qa tests after thi= s commit.</div><div><br></div><div>Regards,</div><div>Nikhil.</div><div><br= ></div></div> <div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div> <hr> Groups.io Links:<p> You receive all messages sent to this group. <p> <a target=3D"_blank" href=3D"https://groups.io/g/pcp/message/15274">View/R= eply Online (#15274)</a> | <a target=3D"_blank" href=3D"mailto:[email protected]?subject=3DRe:%20%5Bpcp= %5D%20pcp%20updates%3A%20pcp-tapestat%20initial%20checkin">Reply To Group</= a> | <a target=3D"_blank" href=3D"mailto:[email protected]?subject=3DRe= :%20%5Bpcp%5D%20pcp%20updates%3A%20pcp-tapestat%20initial%20checkin">Reply = To Sender</a> | <a target=3D"_blank" href=3D"https://groups.io/mt/4429952?uid=3D174580">= Mute This Topic</a> =20 | <a href=3D"https://groups.io/g/pcp/post">New Topic</a><br> <p>pcp mailing list<br />[email protected]<br /><a href=3D"https://groups.io/g= /pcp/messages" target=3D"_blank">https://groups.io/g/pcp/messages</a></p> <a href=3D"https://groups.io/g/pcp/editsub?uid=3D174580">Change Your Subsc= ription</a><br> <a href=3D"https://groups.io/g/pcp">Group Home</a><br> <a href=3D"mailto:[email protected]">Contact Group Owner</a><br> <a href=3D"https://groups.io/static/tos">Terms Of Service</a><br> <a href=3D"https://groups.io/g/pcp/leave/354243/563757577/xyzzy">Unsubscri= be From This Group</a><br> <div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div> --001a114dade047e23a054990cefe-- --001a114dade047e240054990ce00 Content-Type: text/x-python; charset=US-ASCII; name="pcp-tapestat.py" Content-Disposition: attachment; filename="pcp-tapestat.py" Content-Transfer-Encoding: base64 X-Attachment-Id: f_izp45xix0 IyEvdXNyL2Jpbi9lbnYgcG1weXRob24KIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBSZWQgSGF0 LgojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkgaXQKIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKIyB0YXBlc3RhdCBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgoj IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiMgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC SUxJVFkKIyBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBmb3IgbW9yZSBkZXRhaWxzLgojCiMgcHlsaW50OiBk aXNhYmxlPUMwMTAzLFIwOTE0LFIwOTAyCiIiIiBEaXNwbGF5IHRhcGUgSS9PIHN0YXRpc3RpY3Mg IiIiCgppbXBvcnQgcmUKaW1wb3J0IHN5cwppbXBvcnQgc2lnbmFsCmZyb20gcGNwIGltcG9ydCBw bWFwaSwgcG1jYwpmcm9tIGNwbWFwaSBpbXBvcnQgUE1fVFlQRV9VNjQsIFBNX0NPTlRFWFRfQVJD SElWRSwgUE1fU1BBQ0VfS0JZVEUsIFBNX01PREVfRk9SVwoKIyB1c2UgZGVmYXVsdCBTSUdQSVBF IGhhbmRsZXIgdG8gYXZvaWQgYnJva2VuIHBpcGUgZXhjZXB0aW9ucwpzaWduYWwuc2lnbmFsKHNp Z25hbC5TSUdQSVBFLCBzaWduYWwuU0lHX0RGTCkKCiMgVGFwZTogci9zIHcvcyBrQl9yZWFkL3Mg a0Jfd3J0bi9zICVSZCAlV3IgJU9hIFJzL3MgT3QvcwojIFRoZXNlIGFyZSB0aGUgbWV0cmljcyB0 YXBlc3RhdCAoc3lzc3RhdCkgc2hvd3MgYW5kIHdlIHdpbGwgZG8gdGhlIHNhbWUKIyBmb3Igc3Rh cnRlcnMKCgojICAgICAgIFtyb290QG5rc2hpcnNhIHN5c3N0YXRdIyBscyAvc3lzL2NsYXNzL3Nj c2lfdGFwZS9zdDAvc3RhdHMvIC1sCiMgICAgICAgdG90YWwgMAojICAgICAgIGluX2ZsaWdodAoj ICAgICAgIGlvX25zCiMgICAgICAgb3RoZXJfY250CiMgICAgICAgcmVhZF9ieXRlX2NudAojICAg ICAgIHJlYWRfY250CiMgICAgICAgcmVhZF9ucwojICAgICAgIHJlc2lkX2NudAojICAgICAgIHdy aXRlX2J5dGVfY250CiMgICAgICAgd3JpdGVfY250CiMgICAgICAgd3JpdGVfbnMKCgpUQVBFU1RB VF9NRVRSSUNTID0gWyAndGFwZS5kZXYuaW5fZmxpZ2h0JywgJ3RhcGUuZGV2LmlvX25zJywKICAg ICAgICAgICAgICAgICAndGFwZS5kZXYub3RoZXJfY250JywgJ3RhcGUuZGV2LnJlYWRfYnl0ZV9j bnQnLAogICAgICAgICAgICAgICAgICd0YXBlLmRldi5yZWFkX2NudCcsICd0YXBlLmRldi5yZWFk X25zJywKICAgICAgICAgICAgICAgICAndGFwZS5kZXYucmVzaWRfY250JywgJ3RhcGUuZGV2Lndy aXRlX2J5dGVfY250JywKICAgICAgICAgICAgICAgICAndGFwZS5kZXYud3JpdGVfY250JywgJ3Rh cGUuZGV2LndyaXRlX25zJ10KCgpkZWYgYWdncmVnYXRlKG1ldGhvZCwgYWdncl92YWx1ZSwgdmFs dWUpOgogICAgaWYgbWV0aG9kID09ICdzdW0nOgogICAgICAgIGFnZ3JfdmFsdWUgKz0gdmFsdWUK ICAgIGVsaWYgbWV0aG9kID09ICdhdmcnOgogICAgICAgIGFnZ3JfdmFsdWUgKz0gdmFsdWUKICAg IGVsaWYgbWV0aG9kID09ICdtaW4nOgogICAgICAgIGlmIGFnZ3JfdmFsdWUgPiB2YWx1ZToKICAg ICAgICAgICAgYWdncl92YWx1ZSA9IHZhbHVlCiAgICBlbGlmIG1ldGhvZCA9PSAnbWF4JzoKICAg ICAgICBpZiBhZ2dyX3ZhbHVlIDwgdmFsdWU6CiAgICAgICAgICAgIGFnZ3JfdmFsdWUgPSB2YWx1 ZQogICAgZWxzZToKICAgICAgIHJhaXNlIHBtYXBpLnBtVXNhZ2VFcnIKICAgIHJldHVybiBhZ2dy X3ZhbHVlCgpjbGFzcyBUYXBlc3RhdFJlcG9ydChwbWNjLk1ldHJpY0dyb3VwUHJpbnRlcik6CiAg ICBIY291bnQgPSAwCiAgICBkZWYgdGltZVN0YW1wRGVsdGEoc2VsZiwgZ3JvdXApOgogICAgICAg IHMgPSBncm91cC50aW1lc3RhbXAudHZfc2VjIC0gZ3JvdXAucHJldlRpbWVzdGFtcC50dl9zZWMK ICAgICAgICB1ID0gZ3JvdXAudGltZXN0YW1wLnR2X3VzZWMgLSBncm91cC5wcmV2VGltZXN0YW1w LnR2X3VzZWMKICAgICAgICAjIHUgbWF5IGJlIG5lZ2F0aXZlIGhlcmUsIGNhbGN1bGF0aW9uIGlz IHN0aWxsIGNvcnJlY3QuCiAgICAgICAgcmV0dXJuIChzICsgdSAvIDEwMDAwMDAuMCkKICAgIGRl ZiBpbnN0bGlzdChzZWxmLCBncm91cCwgbmFtZSk6CiAgICAgICAgcmV0dXJuIGRpY3QobWFwKGxh bWJkYSB4OiAoeFsxXSwgeFsyXSksIGdyb3VwW25hbWVdLm5ldFZhbHVlcykpLmtleXMoKQoKICAg IGRlZiBjdXJWYWxzKHNlbGYsIGdyb3VwLCBuYW1lKToKICAgICAgICByZXR1cm4gZGljdChtYXAo bGFtYmRhIHg6ICh4WzFdLCB4WzJdKSwgZ3JvdXBbbmFtZV0ubmV0VmFsdWVzKSkKCiAgICBkZWYg cHJldlZhbHMoc2VsZiwgZ3JvdXAsIG5hbWUpOgogICAgICAgIHJldHVybiBkaWN0KG1hcChsYW1i ZGEgeDogKHhbMV0sIHhbMl0pLCBncm91cFtuYW1lXS5uZXRQcmV2VmFsdWVzKSkKICAgIGRlZiBy ZXBvcnQoc2VsZiwgbWFuYWdlcik6CiAgICAgICAgcmVnZXggPSBUYXBlc3RhdE9wdGlvbnMuUmZs YWcKICAgICAgICBpZiByZWdleCA9PSAnJzoKICAgICAgICAgICAgcmVnZXggPSAnLionCgogICAg ICAgIGFnZ3IgPSBUYXBlc3RhdE9wdGlvbnMuR2ZsYWcKICAgICAgICBpZiBhZ2dyIGFuZCBhZ2dy IG5vdCBpbiAoJ3N1bScsICdhdmcnLCAnbWluJywgJ21heCcpOgogICAgICAgICAgIHByaW50KCJF cnJvciwgLUcgYWdncmVnYXRpb24gbWV0aG9kIG11c3QgYmUgb25lIG9mICdzdW0nLCAnYXZnJywg J21pbicgb3IgJ21heCciKQogICAgICAgICAgIHJhaXNlIHBtYXBpLnBtVXNhZ2VFcnIKCiAgICAg ICAgcHJlY2lzaW9uID0gVGFwZXN0YXRPcHRpb25zLlBmbGFnCiAgICAgICAgaWYgcHJlY2lzaW9u IDwgMCBvciBwcmVjaXNpb24gPiAxMCA6CiAgICAgICAgICAgcHJpbnQoIlByZWNpc2lvbiB2YWx1 ZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAiKQogICAgICAgICAgIHJhaXNlIHBtYXBpLnBtVXNh Z2VFcnIKCiAgICAgICAgc3VidHJlZSA9ICd0YXBlLmRldicKICAgICAgICBncm91cCA9IG1hbmFn ZXJbInRhcGVzdGF0Il0KCiAgICAgICAgaWYgZ3JvdXBbc3VidHJlZSArICcucmVhZF9jbnQnXS5u ZXRQcmV2VmFsdWVzID09IE5vbmU6CiAgICAgICAgICAgICMgbmVlZCB0d28gZmV0Y2hlcyB0byBy ZXBvcnQgcmF0ZSBjb252ZXJ0ZWQgY291bnRlciBtZXRyaWNzCiAgICAgICAgICAgICNwcmludCAi Zm91bmQgbm9uZSwgcmV0dXJuaW5nIgogICAgICAgICAgICByZXR1cm4KICAgICAgICBpbnN0bGlz dCA9IHNlbGYuaW5zdGxpc3QoZ3JvdXAsIHN1YnRyZWUgKyAnLnJlYWRfY250JykKICAgICAgICBk dCA9IHNlbGYudGltZVN0YW1wRGVsdGEoZ3JvdXApCiAgICAgICAgdGltZXN0YW1wID0gZ3JvdXAu Y29udGV4dENhY2hlLnBtQ3RpbWUoaW50KGdyb3VwLnRpbWVzdGFtcCkpLnJzdHJpcCgpCgogICAg ICAgIGNfciA9IHNlbGYuY3VyVmFscyhncm91cCwgc3VidHJlZSArICcucmVhZF9jbnQnKQogICAg ICAgIHBfciA9IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLnJlYWRfY250JykKCiAg ICAgICAgY193ID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBzdWJ0cmVlICsgJy53cml0ZV9jbnQnKQog ICAgICAgIHBfdyA9IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLndyaXRlX2NudCcp CgogICAgICAgIGNfcmtiID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBzdWJ0cmVlICsgJy5yZWFkX2J5 dGVfY250JykKICAgICAgICBwX3JrYiA9IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAn LnJlYWRfYnl0ZV9jbnQnKQogICAgICAgIGNfd2tiID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBzdWJ0 cmVlICsgJy53cml0ZV9ieXRlX2NudCcpCiAgICAgICAgcF93a2IgPSBzZWxmLnByZXZWYWxzKGdy b3VwLCBzdWJ0cmVlICsgJy53cml0ZV9ieXRlX2NudCcpCiAKICAgICAgICAjIGNhbGN1bGF0ZSB0 aGUgcGVyY2VudGFnZSB3YWl0cwogICAgICAgIGNfcnB3ID0gc2VsZi5jdXJWYWxzKGdyb3VwLCBz dWJ0cmVlICsgJy5yZWFkX25zJykKICAgICAgICBwX3JwdyA9IHNlbGYucHJldlZhbHMoZ3JvdXAs IHN1YnRyZWUgKyAnLnJlYWRfbnMnKQogICAgICAgIGNfd3B3ID0gc2VsZi5jdXJWYWxzKGdyb3Vw LCBzdWJ0cmVlICsgJy53cml0ZV9ucycpCiAgICAgICAgcF93cHcgPSBzZWxmLnByZXZWYWxzKGdy b3VwLCBzdWJ0cmVlICsgJy53cml0ZV9ucycpCiAgICAgICAgY19vcHcgPSAgc2VsZi5jdXJWYWxz KGdyb3VwLCBzdWJ0cmVlICsgJy5pb19ucycpCiAgICAgICAgcF9vcHcgPSBzZWxmLnByZXZWYWxz KGdyb3VwLCBzdWJ0cmVlICsgJy5pb19ucycpCgogICAgICAgIHBfcmVzaWQgPSBzZWxmLnByZXZW YWxzKGdyb3VwLCBzdWJ0cmVlICsgJy5yZXNpZF9jbnQnKQogICAgICAgIGNfcmVzaWQgPSBzZWxm LmN1clZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLnJlc2lkX2NudCcpCiAgICAgICAgcF9vdGhlciA9 IHNlbGYucHJldlZhbHMoZ3JvdXAsIHN1YnRyZWUgKyAnLm90aGVyX2NudCcpCiAgICAgICAgY19v dGhlciA9IHNlbGYuY3VyVmFscyhncm91cCwgc3VidHJlZSArICcub3RoZXJfY250JykKCgoKICAg ICAgICBpZiBwcmVjaXNpb24gPT0gMToKICAgICAgICAgICB1dGlsc3BhY2U9cHJlY2lzaW9uKzUK ICAgICAgICAgICBhdmdycXN6c3BhY2U9cHJlY2lzaW9uKzcKICAgICAgICAgICBhd2FpdHNwYWNl PXByZWNpc2lvbis2CiAgICAgICAgICAgcnJxbXNwYWNlPXByZWNpc2lvbis1CiAgICAgICAgICAg d3JxbXNwYWNlPXByZWNpc2lvbis1CiAgICAgICAgICAgaGVhZGZtdGF2Z3NwYWNlPXByZWNpc2lv bis3CiAgICAgICAgICAgaGVhZGZtdHF1c3BhY2U9cHJlY2lzaW9uKzcKICAgICAgICBlbGlmIHBy ZWNpc2lvbiA9PSAwOgogICAgICAgICAgIHV0aWxzcGFjZT1wcmVjaXNpb24rNQogICAgICAgICAg IGF2Z3Jxc3pzcGFjZT1wcmVjaXNpb24rOAogICAgICAgICAgIGF3YWl0c3BhY2U9cHJlY2lzaW9u KzcKICAgICAgICAgICBycnFtc3BhY2U9cHJlY2lzaW9uKzYKICAgICAgICAgICB3cnFtc3BhY2U9 cHJlY2lzaW9uKzYKICAgICAgICAgICBoZWFkZm10YXZnc3BhY2U9YXZncnFzenNwYWNlCiAgICAg ICAgICAgaGVhZGZtdHF1c3BhY2U9cHJlY2lzaW9uKzgKICAgICAgICBlbHNlOgogICAgICAgICAg IHV0aWxzcGFjZT1wcmVjaXNpb24rNQogICAgICAgICAgIGF2Z3Jxc3pzcGFjZT1wcmVjaXNpb24r NgogICAgICAgICAgIGF3YWl0c3BhY2U9cHJlY2lzaW9uKzUKICAgICAgICAgICBycnFtc3BhY2U9 cHJlY2lzaW9uKzUKICAgICAgICAgICB3cnFtc3BhY2U9cHJlY2lzaW9uKzUKICAgICAgICAgICBo ZWFkZm10YXZnc3BhY2U9YXZncnFzenNwYWNlCiAgICAgICAgICAgaGVhZGZtdHF1c3BhY2U9cHJl Y2lzaW9uKzYKCiAgICAgICAgaWYgInQiIGluIFRhcGVzdGF0T3B0aW9ucy54ZmxhZzoKICAgICAg ICAgICAgaGVhZGZtdCA9ICIlLTI0cyAlLTEycyAgJSpzICUqcyAlKnMgJSpzICUqcyAlKnMgJSpz ICUqcyAlKnMiCiAgICAgICAgICAgIHZhbGZtdCA9ICIlLTI0cyAlLTEycyAlKi4qZiAlKi4qZiAl KmQgJSpkICUqLipmICUqLipmICUqLipmICUqLipmICUqLipmIgogICAgICAgIGVsc2U6CiAgICAg ICAgICAgIGhlYWRmbXQgPSAiJS0xMnMgJSpzICUqcyAlKnMgJSpzICUqcyAlKnMgJSpzICUqcyAl KnMiCiAgICAgICAgICAgIHZhbGZtdCA9ICIlLTEycyAlKi4qZiAlKi4qZiAlKmQgJSpkICUqLipm ICUqLipmICUqLipmICUqLipmICUqLipmIgoKCiAgICAgICAgdG1wc3BhY2UgPSBwcmVjaXNpb24r NQogCiAgICAgICAgaWYgcHJlY2lzaW9uID09IDAgOgogICAgICAgICAgdG1wc3BhY2UgPSB0bXBz cGFjZSAgKzEKCiAgICAgICAgaWYgImgiIG5vdCBpbiBUYXBlc3RhdE9wdGlvbnMueGZsYWc6CiAg ICAgICAgICAgIHNlbGYuSGNvdW50ICs9IDEKICAgICAgICAgICAgaWYgc2VsZi5IY291bnQgPT0g MjQ6CiAgICAgICAgICAgICAgICBzZWxmLkhjb3VudCA9IDEKICAgICAgICAgICAgaWYgc2VsZi5I Y291bnQgPT0gMToKICAgICAgICAgICAgICAgIGlmICJ0IiBpbiBUYXBlc3RhdE9wdGlvbnMueGZs YWc6CiAgICAgICAgICAgICAgICAgICAgaGVhZGluZyA9ICgnIyBUaW1lc3RhbXAnLCAnRGV2aWNl Jyx0bXBzcGFjZSAtIDEsICdyL3MnLHRtcHNwYWNlLCAndy9zJyx0bXBzcGFjZSwgJ2tiX3Ivcycs dG1wc3BhY2UsICdrYl93L3MnLCB0bXBzcGFjZSwgJ3JfcGN0Jyx0bXBzcGFjZSwnd19wY3QnLHRt cHNwYWNlLCAnb19wY3QnLHRtcHNwYWNlLCdScy9zJyx0bXBzcGFjZSwnb19jbnQnKQogICAgICAg ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBoZWFkaW5nID0gKCcjIERldmljZScs dG1wc3BhY2UsICdyL3MnLHRtcHNwYWNlLCAndy9zJyx0bXBzcGFjZSwgJ2tiX3IvcycsdG1wc3Bh Y2UsICdrYl93L3MnLCB0bXBzcGFjZSwgJ3JfcGN0Jyx0bXBzcGFjZSwnd19wY3QnLHRtcHNwYWNl LCAnb19wY3QnLHRtcHNwYWNlLCdScy9zJyx0bXBzcGFjZSwnb19jbnQnKQogICAgICAgICAgICAg ICAgcHJpbnQoaGVhZGZtdCAlIGhlYWRpbmcpCgogICAgICAgIGlmIHBfciA9PSB7fSBvciBwX3cg PT0ge30gb3IgcF9ya2IgPT0ge30gb3IgcF93a2IgPT0ge30gb3IgXAogICAgICAgICAgIHBfcnB3 ID09IHt9IG9yIHBfd3B3ID09IHt9IG9yIHBfb3B3ID09IHt9IG9yIFwKICAgICAgICAgICBwX3Jl c2lkID09IHt9IG9yIHBfb3RoZXIgPT0ge306CiAgICAgICAgICAgICMgbm8gdmFsdWVzIGZvciBz b21lIG1ldHJpYyAoZS5nLiBuZWFyIHN0YXJ0IG9mIGFyY2hpdmUpCiAgICAgICAgICAgIGlmICJ0 IiBpbiBUYXBlc3RhdE9wdGlvbnMueGZsYWc6CiAgICAgICAgICAgICAgICBwcmludChoZWFkZm10 ICUgKHRpbWVzdGFtcCwgJ05PREFUQScscnJxbXNwYWNlIC0xLCAnPycsd3JxbXNwYWNlLCAnPycs cHJlY2lzaW9uKzUsICc/JyxwcmVjaXNpb24rNSwgJz8nLHByZWNpc2lvbis1LFwKICAgICAgICAg ICAgICAgJz8nLHByZWNpc2lvbis1LCAnPycsaGVhZGZtdGF2Z3NwYWNlIC0xICwgJz8nLGhlYWRm bXRxdXNwYWNlIC0xLCAnPycsIHByZWNpc2lvbis1LCAnPycpKQogICAgICAgICAgICByZXR1cm4K ICAgIAogICAgICAgICAgICAjZG9uJ3Qgd2UgbmVlZCBhbiBlbHNlIGhlcmUgdG8gcHJpbnQgPydz IGZvciBub24gdGltZXN0YW1wIGZsYWcgdG9vID8KCiAgICAgICAgdHJ5OgogICAgICAgICAgICBp ZiBUYXBlc3RhdE9wdGlvbnMuR2ZsYWc6CiAgICAgICAgICAgICAgICBhZ2dyX3IgPSBhZ2dyX3cg PSBhZ2dyX3JrYiA9IGFnZ3Jfd2tiID0gYWdncl9hY3R1YWxfcnB3ID0gYWdncl9hY3R1YWxfd3B3 ID0gIDAuMAogICAgICAgICAgICAgICAgYWdncl9hY3R1YWxfb3B3ID0gYWdncl9yZXNpZF9jbnQg PSBhZ2dyX29fY250ID0gMC4wCiAgICAgICAgICAgICAgICBhZ2dyX2NvdW50ID0gMAoKICAgICAg ICAgICAgZm9yIGluc3QgaW4gc29ydGVkKGluc3RsaXN0KToKICAgICAgICAgICAgICAgICMgYmFz aWMgc3RhdHMKICAgICAgICAgICAgICAgIHIgPSAoY19yW2luc3RdIC0gcF9yW2luc3RdKSAvIGR0 CiAgICAgICAgICAgICAgICB3ID0gKGNfd1tpbnN0XSAtIHBfd1tpbnN0XSkgLyBkdAogICAgICAg ICAgICAgICAgcmtiID0gKGNfcmtiW2luc3RdIC0gcF9ya2JbaW5zdF0pIC8gZHQgLyAxMDAwICMg Ynl0ZXMgdG8ga2IKICAgICAgICAgICAgICAgIHdrYiA9IChjX3drYltpbnN0XSAtIHBfd2tiW2lu c3RdKSAvIGR0IC8gMTAwMAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgI2NhbGN1bGF0ZSBhbmQgY29udmVydCBmcm9tIG5hbm8gc2Vjb25kcwogICAgICAg ICAgICAgICAgcnB3ID0gMTAwICogKGNfcnB3W2luc3RdIC0gcF9ycHdbaW5zdF0pLyAxMDAwMDAw MDAwIC8gZHQKICAgICAgICAgICAgICAgIHdwdyA9IDEwMCAqIChjX3dwd1tpbnN0XSAtIHBfd3B3 W2luc3RdKSAvIDEwMDAwMDAwMDAgLyBkdAogICAKICAgICAgICAgICAgICAgIGFjdHVhbF9ycHcg PSBycHcgCiAgICAgICAgICAgICAgICBhY3R1YWxfd3B3ID0gd3B3IAoKICAgICAgICAgICAgICAg IG9wdyA9IDEwMCAqIChjX29wd1tpbnN0XSAtIHBfb3B3W2luc3RdKSAvIDEwMDAwMDAwMDAgLyBk dAogICAgICAgICAgICAgICAgYWN0dWFsX29wdyA9IG9wdyAKIAogICAgICAgICAgICAgICAgcmVz aWRfY250ID0gKGNfcmVzaWRbaW5zdF0gLSBwX3Jlc2lkW2luc3RdKSAvIGR0IC8gMTAwMAogCiAg ICAgICAgICAgICAgICAjVGhlICBudW1iZXIgb2YgSS9PcywgZXhwcmVzc2VkIGFzIHRoZSBudW1i ZXIgcGVyIHNlY29uZCBhdmVyYWdlZCBvdmVyIHRoZSBpbnRlcnZhbCwgdGhhdCB3ZXJlIGluY2x1 ZGVkIGFzICJvdGhlciIgaXMgb19jbnQKICAgICAgICAgICAgICAgIG9fY250ID0gKGNfb3RoZXJb aW5zdF0gLSBwX290aGVyW2luc3RdKSAvIGR0IC8gMTAwMAoKCiAgICAgICAgICAgICAgICBkZXZp Y2UgPSBpbnN0ICAgIyBwcmVwYXJlIG5hbWUgZm9yIHByaW50aW5nCiAgICAgICAgICAgICAgICBi YWRjb3VudGVycyA9IHIgPCAwIG9yIHcgPCAwIG9yIHJrYiA8IDAgb3Igd2tiIDwgMCBvciBycHcg PCAwIG9yIHdwdyA8IDAgb3Igb3B3IDwgMCBvciByZXNpZF9jbnQgPCAwIG9yIG9fY250IDwgMAoK ICAgICAgICAgICAgICAgIGlmICJ0IiBpbiBUYXBlc3RhdE9wdGlvbnMueGZsYWc6CiAgICAgICAg ICAgICAgICAgICAgaWYgYmFkY291bnRlcnM6CiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50 KGhlYWRmbXQgJSAodGltZXN0YW1wLCBkZXZpY2UscnJxbXNwYWNlLCAnPycsd3JxbXNwYWNlLCAn PycscHJlY2lzaW9uKzUsICc/JyxwcmVjaXNpb24rNCwgJz8nLHByZWNpc2lvbis2LFwKICAgICAg ICAgICAgICAgICAgICAgICAgJz8nLHByZWNpc2lvbis2LCAnPycsaGVhZGZtdGF2Z3NwYWNlLCAn PycsaGVhZGZtdHF1c3BhY2UsICc/JywgcHJlY2lzaW9uKzUsICc/JykpCgogICAgICAgICAgICAg ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFRhcGVzdGF0T3B0aW9ucy5S ZmxhZyBhbmQgcmUuc2VhcmNoKHJlZ2V4LGRldmljZSkgPT0gTm9uZToKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBUYXBlc3Rh dE9wdGlvbnMuR2ZsYWc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyX2NvdW50ICs9 IDEKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICJub2lkbGUiIGluIFRhcGVzdGF0T3B0aW9u cy54ZmxhZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJrYiA9PSAwIGFuZCB3a2Ig PT0gMCBhbmQgciA9PSAwIGFuZCB3ID09IDAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgVGFwZXN0YXRPcHRp b25zLkdmbGFnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQodmFsZm10ICUgKHRp bWVzdGFtcCwgZGV2aWNlLHRtcHNwYWNlLHByZWNpc2lvbixyLHRtcHNwYWNlLCBwcmVjaXNpb24s IHcsdG1wc3BhY2UscmtiLHRtcHNwYWNlLCB3a2IsIHRtcHNwYWNlLHByZWNpc2lvbixhY3R1YWxf cnB3LHRtcHNwYWNlLHByZWNpc2lvbixhY3R1YWxfd3B3LCB0bXBzcGFjZSxwcmVjaXNpb24sYWN0 dWFsX29wdyx0bXBzcGFjZSxwcmVjaXNpb24scmVzaWRfY250LHRtcHNwYWNlLHByZWNpc2lvbixv X2NudCkpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIGlmIGJhZGNv dW50ZXJzOgogICAgICAgICAgICAgICAgICAgICAgICBwcmludChoZWFkZm10ICUgKGRldmljZSxy cnFtc3BhY2UsICc/Jyx3cnFtc3BhY2UsICc/JyxwcmVjaXNpb24rNSwgJz8nLHByZWNpc2lvbis0 LCAnPycscHJlY2lzaW9uKzYsXAogICAgICAgICAgICAgICAgICAgICAgICAnPycscHJlY2lzaW9u KzYsICc/JyxoZWFkZm10YXZnc3BhY2UsICc/JyxoZWFkZm10cXVzcGFjZSwgJz8nLCBwcmVjaXNp b24rNSwgJz8nLGF3YWl0c3BhY2UsICc/JyxcCiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0 c3BhY2UsICc/Jyx1dGlsc3BhY2UsICc/JykpCgogICAgICAgICAgICAgICAgICAgIGVsc2U6CiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIFRhcGVzdGF0T3B0aW9ucy5SZmxhZyBhbmQgcmUuc2Vh cmNoKHJlZ2V4LGRldmljZSkgPT0gTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnRpbnVlCgogICAgICAgICAgICAgICAgICAgICAgICBpZiBUYXBlc3RhdE9wdGlvbnMuR2ZsYWc6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2dyX2NvdW50ICs9IDEKCiAgICAgICAgICAg ICAgICAgICAgICAgIGlmICJub2lkbGUiIGluIFRhcGVzdGF0T3B0aW9ucy54ZmxhZzoKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIHJrYiA9PSAwIGFuZCB3a2IgPT0gMCBhbmQgciA9PSAw IGFuZCB3ID09IDAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCgog ICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgVGFwZXN0YXRPcHRpb25zLkdmbGFnOgojICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQodmFsZm10ICUgKGRldmljZSx0bXBzcGFjZSwg cHJlY2lzaW9uLCBhZ2dyX3IsdG1wc3BhY2UscHJlY2lzaW9uLCBhZ2dyX3csdG1wc3BhY2UsIGFn Z3JfcmtiLHRtcHNwYWNlLCBhZ2dyX3drYiwgdG1wc3BhY2UscHJlY2lzaW9uLGFjdHVhbF9ycHcs dG1wc3BhY2UscHJlY2lzaW9uLGFjdHVhbF93cHcpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHJpbnQodmFsZm10ICUgKGRldmljZSx0bXBzcGFjZSxwcmVjaXNpb24scix0bXBzcGFjZSwg cHJlY2lzaW9uLCB3LHRtcHNwYWNlLHJrYix0bXBzcGFjZSwgd2tiLCB0bXBzcGFjZSxwcmVjaXNp b24sYWN0dWFsX3Jwdyx0bXBzcGFjZSxwcmVjaXNpb24sYWN0dWFsX3dwdywgdG1wc3BhY2UscHJl Y2lzaW9uLGFjdHVhbF9vcHcsdG1wc3BhY2UscHJlY2lzaW9uLHJlc2lkX2NudCx0bXBzcGFjZSxw cmVjaXNpb24sb19jbnQpKQoKICAgICAgICAgICAgICAgIGlmIFRhcGVzdGF0T3B0aW9ucy5HZmxh ZyBhbmQgbm90IGJhZGNvdW50ZXJzOgogICAgICAgICAgICAgICAgICAgIGFnZ3JfciA9IGFnZ3Jl Z2F0ZShhZ2dyLCBhZ2dyX3IsIHIpCiAgICAgICAgICAgICAgICAgICAgYWdncl93ID0gYWdncmVn YXRlKGFnZ3IsIGFnZ3JfdywgdykKICAgICAgICAgICAgICAgICAgICBhZ2dyX3JrYiA9IGFnZ3Jl Z2F0ZShhZ2dyLCBhZ2dyX3JrYiwgcmtiKQogICAgICAgICAgICAgICAgICAgIGFnZ3Jfd2tiID0g YWdncmVnYXRlKGFnZ3IsIGFnZ3Jfd2tiLCB3a2IpCiAgICAgICAgICAgICAgICAgICAgYWdncl9h Y3R1YWxfcnB3ID0gYWdncmVnYXRlKGFnZ3IsIGFnZ3JfYWN0dWFsX3JwdywgYWN0dWFsX3JwdykK ICAgICAgICAgICAgICAgICAgICBhZ2dyX2FjdHVhbF93cHcgPSBhZ2dyZWdhdGUoYWdnciwgYWdn cl9hY3R1YWxfd3B3LCBhY3R1YWxfd3B3KQogICAgICAgICAgICAgICAgICAgIGFnZ3JfYWN0dWFs X29wdyA9IGFnZ3JlZ2F0ZShhZ2dyLCBhZ2dyX2FjdHVhbF9vcHcsIGFjdHVhbF9vcHcpCiAgICAg ICAgICAgICAgICAgICAgYWdncl9yZXNpZF9jbnQgPSBhZ2dyZWdhdGUoYWdnciwgYWdncl9yZXNp ZF9jbnQsIHJlc2lkX2NudCkKICAgICAgICAgICAgICAgICAgICBhZ2dyX29fY250ID0gYWdncmVn YXRlKGFnZ3IsIGFnZ3Jfb19jbnQsIG9fY250KQogICAgICAgICAgICAjIGVuZCBvZiBsb29wCgog ICAgICAgICAgICBpZiBUYXBlc3RhdE9wdGlvbnMuR2ZsYWc6CiAgICAgICAgICAgICAgICBpZiBU YXBlc3RhdE9wdGlvbnMuR2ZsYWcgPT0gJ2F2ZycgYW5kIGFnZ3JfY291bnQgPiAwOgogICAgICAg ICAgICAgICAgICAgIGFnZ3JfciAvPSBhZ2dyX2NvdW50CiAgICAgICAgICAgICAgICAgICAgYWdn cl93IC89IGFnZ3JfY291bnQKICAgICAgICAgICAgICAgICAgICBhZ2dyX3JrYiAvPSBhZ2dyX2Nv dW50CiAgICAgICAgICAgICAgICAgICAgYWdncl93a2IgLz0gYWdncl9jb3VudAogICAgICAgICAg ICAgICAgICAgIGFnZ3JfYWN0dWFsX3JwdyAvPSBhZ2dyX2NvdW50CiAgICAgICAgICAgICAgICAg ICAgYWdncl9hY3R1YWxfd3B3IC89IGFnZ3JfY291bnQKICAgICAgICAgICAgICAgICAgICBhZ2dy X2FjdHVhbF9vcHcgLz0gYWdncl9jb3VudAogICAgICAgICAgICAgICAgICAgIGFnZ3JfcmVzaWRf Y250IC89IGFnZ3JfY291bnQKICAgICAgICAgICAgICAgICAgICBhZ2dyX29fY250IC89IGFnZ3Jf Y291bnQKCgogICAgICAgICAgICAgICAgIyByZXBvcnQgYWdncmVnYXRlIHZhbHVlcyAtIHRoZSAn ZGV2aWNlJyBoZXJlIGlzIHJlcG9ydGVkIGFzIHRoZSByZWdleCB1c2VkIGZvciB0aGUgYWdncmVn YXRpb24KICAgICAgICAgICAgICAgIGRldmljZSA9ICclcyglcyknICUgKGFnZ3IsIHJlZ2V4KQog ICAgICAgICAgICAgICAgaWYgInQiIGluIFRhcGVzdGF0T3B0aW9ucy54ZmxhZzoKICAgICAgICAg ICAgICAgICAgICBwcmludCh2YWxmbXQgJSAodGltZXN0YW1wLCBkZXZpY2UsdG1wc3BhY2UsIHBy ZWNpc2lvbiwgYWdncl9yLHRtcHNwYWNlLHByZWNpc2lvbiwgYWdncl93LHRtcHNwYWNlLCBhZ2dy X3JrYix0bXBzcGFjZSwgYWdncl93a2IsIHRtcHNwYWNlLHByZWNpc2lvbixhZ2dyX2FjdHVhbF9y cHcsdG1wc3BhY2UscHJlY2lzaW9uLGFnZ3JfYWN0dWFsX3dwdyx0bXBzcGFjZSxwcmVjaXNpb24s YWdncl9hY3R1YWxfb3B3ICwgdG1wc3BhY2UscHJlY2lzaW9uLGFnZ3JfcmVzaWRfY250LHRtcHNw YWNlLHByZWNpc2lvbixhZ2dyX29fY250KSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg ICAgICAgICAgICAgcHJpbnQodmFsZm10ICUgKGRldmljZSx0bXBzcGFjZSwgcHJlY2lzaW9uLCBh Z2dyX3IsdG1wc3BhY2UscHJlY2lzaW9uLCBhZ2dyX3csdG1wc3BhY2UsIGFnZ3JfcmtiLHRtcHNw YWNlLCBhZ2dyX3drYiwgdG1wc3BhY2UscHJlY2lzaW9uLGFnZ3JfYWN0dWFsX3Jwdyx0bXBzcGFj ZSxwcmVjaXNpb24sYWdncl9hY3R1YWxfd3B3LHRtcHNwYWNlLHByZWNpc2lvbixhZ2dyX2FjdHVh bF9vcHcgLCB0bXBzcGFjZSxwcmVjaXNpb24sYWdncl9yZXNpZF9jbnQsdG1wc3BhY2UscHJlY2lz aW9uLGFnZ3Jfb19jbnQpKQoKICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICMg aW5zdGFuY2UgbWlzc2luZyBmcm9tIHByZXZpb3VzIHNhbXBsZQogICAgICAgICAgICBwYXNzCgpj bGFzcyBUYXBlc3RhdE9wdGlvbnMocG1hcGkucG1PcHRpb25zKToKICAgICMgY2xhc3MgYXR0cmli dXRlcwogICAgeGZsYWcgPSBbXQogICAgdWZsYWcgPSBOb25lCiAgICBQZmxhZyA9IDIKICAgIFJm bGFnID0gIiIKICAgIEdmbGFnID0gIiIKICAgIGRlZiBjaGVja09wdGlvbnMoc2VsZiwgbWFuYWdl cik6CiAgICAgICAgaWYgVGFwZXN0YXRPcHRpb25zLnVmbGFnOgogICAgICAgICAgICBpZiBtYW5h Z2VyLl9vcHRpb25zLnBtR2V0T3B0aW9uSW50ZXJ2YWwoKToKICAgICAgICAgICAgICAgIHByaW50 KCJFcnJvcjogLXQgaW5jb21wYXRpYmxlIHdpdGggLXUiKQogICAgICAgICAgICAgICAgcmV0dXJu IEZhbHNlCiAgICAgICAgICAgIGlmIG1hbmFnZXIudHlwZSAhPSBQTV9DT05URVhUX0FSQ0hJVkU6 CiAgICAgICAgICAgICAgICBwcmludCgiRXJyb3I6IC11IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB3 aXRoIC1hIGFyY2hpdmUiKQogICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgcmV0 dXJuIFRydWUKCiAgICBkZWYgZXh0cmFPcHRpb25zKHNlbGYsIG9wdCwgb3B0YXJnLCBpbmRleCk6 CiAgICAgICAgaWYgb3B0ID09ICJ4IjoKICAgICAgICAgICAgVGFwZXN0YXRPcHRpb25zLnhmbGFn ICs9IG9wdGFyZy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgnICcpCiAgICAgICAgZWxpZiBvcHQg PT0gInUiOgogICAgICAgICAgICBUYXBlc3RhdE9wdGlvbnMudWZsYWcgPSBUcnVlCiAgICAgICAg ZWxpZiBvcHQgPT0gIlAiOgogICAgICAgICAgICBUYXBlc3RhdE9wdGlvbnMuUGZsYWcgPSBpbnQo b3B0YXJnKQogICAgICAgIGVsaWYgb3B0ID09ICJSIjoKICAgICAgICAgICAgVGFwZXN0YXRPcHRp b25zLlJmbGFnID0gb3B0YXJnCiAgICAgICAgZWxpZiBvcHQgPT0gIkciOgogICAgICAgICAgICBU YXBlc3RhdE9wdGlvbnMuR2ZsYWcgPSBvcHRhcmcKCiMgICBhbGwgdGhpcyBzdHVmZiBuZWVkcyBj aGFuZ2VzIGJ1dCBsZWF2aW5nIGl0IGFzIGl0IGlzIGZvciBub3csIGFueXdheSB3ZSB3aWxsIGZp cnN0IGdldAojICAgaXQgd29ya2luZyB3aXRob3V0IGFueSBhcmd1bWVudHMKCiAgICBkZWYgX19p bml0X18oc2VsZik6CiAgICAgICAgcG1hcGkucG1PcHRpb25zLl9faW5pdF9fKHNlbGYsICJBOmE6 RDpHOmg6TzpQOlI6UzpzOlQ6dDp1Vlo6ej94OiIpCiAgICAgICAgc2VsZi5wbVNldE9wdGlvbkNh bGxiYWNrKHNlbGYuZXh0cmFPcHRpb25zKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uSGVh ZGVyKCJHZW5lcmFsIG9wdGlvbnMiKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uQWxpZ24o KQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uQXJjaGl2ZSgpCiAgICAgICAgc2VsZi5wbVNl dExvbmdPcHRpb25EZWJ1ZygpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRpb24oImFnZ3JlZ2F0 ZSIsIDEsICJHIiwgIm1ldGhvZCIsICJhZ2dyZWdhdGUgdmFsdWVzIGZvciBkZXZpY2VzIG1hdGNo aW5nIC1SIHJlZ2V4IHVzaW5nICdtZXRob2QnIChzdW0sIGF2ZywgbWluIG9yIG1heCkiKQogICAg ICAgIHNlbGYucG1TZXRMb25nT3B0aW9uSG9zdCgpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRp b25PcmlnaW4oKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uKCJwcmVjaXNpb24iLCAxLCAi UCIsICJOIiwgIk4gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHNlcGFyYXRvciIpCiAgICAgICAg c2VsZi5wbVNldExvbmdPcHRpb24oInJlZ2V4IiwgMSwgIlIiLCAicGF0dGVybiIsICJvbmx5IHJl cG9ydCBmb3IgZGV2aWNlcyBuYW1lcyBtYXRjaGluZyBwYXR0ZXJuLCBlLmcuICdzZFthLXpBLVpd KycuIFNlZSBhbHNvIC1HLiIpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRpb25TdGFydCgpCiAg ICAgICAgc2VsZi5wbVNldExvbmdPcHRpb25TYW1wbGVzKCkKICAgICAgICBzZWxmLnBtU2V0TG9u Z09wdGlvbkZpbmlzaCgpCiAgICAgICAgc2VsZi5wbVNldExvbmdPcHRpb25JbnRlcnZhbCgpCiAg ICAgICAgc2VsZi5wbVNldExvbmdPcHRpb24oIm5vLWludGVycG9sYXRpb24iLCAwLCAidSIsICIi LCAiZGlzYWJsZSBpbnRlcnBvbGF0aW9uIG1vZGUgd2l0aCBhcmNoaXZlcyIpCiAgICAgICAgc2Vs Zi5wbVNldExvbmdPcHRpb25WZXJzaW9uKCkKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvblRp bWVab25lKCkKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvbkhvc3Rab25lKCkKICAgICAgICBz ZWxmLnBtU2V0TG9uZ09wdGlvbkhlbHAoKQogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uSGVh ZGVyKCJFeHRlbmRlZCBvcHRpb25zIikKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvbigiIiwg MSwgJ3gnLCAiTElTVCIsICJjb21tYSBzZXBhcmF0ZWQgZXh0ZW5kZWQgb3B0aW9uczogW1t0XSxb aF0sW25vaWRsZV1dIikKICAgICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvblRleHQoIlx0XHR0XHRw cmVjZWRlIGV2ZXJ5IGxpbmUgd2l0aCBhIHRpbWVzdGFtcCBpbiBjdGltZSBmb3JtYXQiKTsKICAg ICAgICBzZWxmLnBtU2V0TG9uZ09wdGlvblRleHQoIlx0XHRoXHRzdXBwcmVzcyBoZWFkaW5ncyIp OwogICAgICAgIHNlbGYucG1TZXRMb25nT3B0aW9uVGV4dCgiXHRcdG5vaWRsZVx0ZG8gbm90IGRp c3BsYXkgaWRsZSBkZXZpY2VzIik7CgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgdHJ5 OgogICAgICAgIG9wdHMgPSBUYXBlc3RhdE9wdGlvbnMoKQogICAgICAgIG1hbmFnZXIgPSBwbWNj Lk1ldHJpY0dyb3VwTWFuYWdlci5idWlsZGVyKG9wdHMsIHN5cy5hcmd2KQogICAgICAgIGlmIG5v dCBvcHRzLmNoZWNrT3B0aW9ucyhtYW5hZ2VyKToKICAgICAgICAgICAgcmFpc2UgcG1hcGkucG1V c2FnZUVycgoKICAgICAgICBpZiBUYXBlc3RhdE9wdGlvbnMudWZsYWc6CiAgICAgICAgICAgICMg LXUgdHVybnMgb2ZmIGludGVycG9sYXRpb24KICAgICAgICAgICAgbWFuYWdlci5wbVNldE1vZGUo UE1fTU9ERV9GT1JXLCBtYW5hZ2VyLl9vcHRpb25zLnBtR2V0T3B0aW9uT3JpZ2luKCksIDApCgog ICAgICAgIG1hbmFnZXJbInRhcGVzdGF0Il0gPSBUQVBFU1RBVF9NRVRSSUNTCiAgICAgICAgI3By aW50ICJjYWxsaW5nIFRhcGVzdGF0UmVwb3J0KCkiCiAgICAgICAgbWFuYWdlci5wcmludGVyID0g VGFwZXN0YXRSZXBvcnQoKQogICAgICAgIHN0cyA9IG1hbmFnZXIucnVuKCkKICAgICAgICBzeXMu ZXhpdChzdHMpCiAgICBleGNlcHQgcG1hcGkucG1FcnIgYXMgZXJyb3I6CiAgICAgICAgc3lzLnN0 ZGVyci53cml0ZSgnJXM6ICVzXG4nICUgKGVycm9yLnByb2duYW1lKCksIGVycm9yLm1lc3NhZ2Uo KSkpCiAgICBleGNlcHQgcG1hcGkucG1Vc2FnZUVyciBhcyB1c2FnZToKICAgICAgICB1c2FnZS5t ZXNzYWdlKCkKICAgICAgICBzeXMuZXhpdCgxKQogICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0 OgogICAgICAgIHBhc3MKCgoK --001a114dade047e240054990ce00 Content-Type: application/octet-stream; name="pcp-tapestat.1" Content-Disposition: attachment; filename="pcp-tapestat.1" Content-Transfer-Encoding: base64 X-Attachment-Id: f_izp461i01 J1wiISB0YmwgfCBtbWRvYwonXCJtYWNybyBzdGRtYWNybwouXCIKLlwiIENvcHlyaWdodCAoYykg MjAxNC0yMDE2IFJlZCBIYXQuICBBbGwgUmlnaHRzIFJlc2VydmVkLgouXCIgCi5cIiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAouXCIgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi5cIiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCi5cIiBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgouXCIgCi5cIiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci5cIiBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElU WQouXCIgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi5cIiBmb3IgbW9yZSBkZXRhaWxzLgouXCIKLlRIIFBDUC1U QVBFU1RBVCAxICJQQ1AiICJQZXJmb3JtYW5jZSBDby1QaWxvdCIKLlNIIE5BTUUKXGYzcGNwLXRh cGVzdGF0XGYxIFwtIHBlcmZvcm1hbmNlIG1ldHJpY3MgaS9vIHRhcGUgc3RhdGlzdGljcyB0b29s Ci5cIiBsaXRlcmFscyB1c2UgLkIgb3IgXGYzCi5cIiBhcmd1bWVudHMgdXNlIC5JIG9yIFxmMgou U0ggU1lOT1BTSVMKXGYzcGNwLXRhcGVzdGF0XGYxCltcZjNcLUFcZjEgXGYyYWxpZ25cZjEgXGYz LS1hbGlnbj1cZjJUSU1FXGYxXQpbXGYzXC1hXGYxIFxmMmFyY2hpdmVcZjEgXGYzLS1hcmNoaXZl PVxmMkZJTEVcZjFdCltcZjNcLUdcZjEgXGYybWV0aG9kXGYxIFxmMy0tYWdncmVnYXRlPVxmMm1l dGhvZFxmMV0KW1xmM1wtaFxmMSBcZjJob3N0XGYxIFxmMy0taG9zdD1cZjJIT1NUXGYxXQpbXGYz XC1PXGYxIFxmMm9mZnNldFxmMSBcZjMtLW9yaWdpbj1cZjJUSU1FXGYxXQpbXGYzXC1TXGYxIFxm MnN0YXJ0dGltZVxmMSBcZjMtLXN0YXJ0PVxmMlRJTUVcZjFdCltcZjNcLXNcZjEgXGYyc2FtcGxl c1xmMSBcZjMtLXNhbXBsZXM9XGYyTlxmMV0KW1xmM1wtVFxmMSBcZjJlbmR0aW1lXGYxIFxmMy0t ZmluaXNoPVxmMlRJTUVcZjFdCltcZjNcLXRcZjEgXGYyaW50ZXJ2YWxcZjEgXGYzLS1pbnRlcnZh bD1cZjJERUxUQVxmMV0KW1xmM1wtUFxmMSBcZjJwcmVjaXNpb25cZjEgXGYzLS1wcmVjaXNpb249 XGYyTlxmMV0KW1xmM1wtUlxmMSBcZjJwYXR0ZXJuXGYxIFxmMy0tcmVnZXg9XGYycGF0dGVyblxm MV0KW1xmM1wtdVxmMSBcZjMtLW5vLWludGVycG9sYXRlXGYxXQpbXGYzXC1aXGYxIFxmMnRpbWV6 b25lXGYxIFxmMy0tdGltZXpvbmU9XGYyVFpcZjFdCltcZjNcLXpcZjEgXGYzLS1ob3N0em9uZVxm MV0KW1xmM1wtP1xmMSBcZjMtLWhlbHBcZjFdCltcZjNcLXhcZjEgW3RdWyxoXVssbm9pZGxlXVxm MV0KLlNIIERFU0NSSVBUSU9OCi5kZSBFWAouaW4gKzAuNWkKLmllIHQgLmZ0IENCCi5lbCAuZnQg QgouaWUgdCAuc3AgLjV2Ci5lbCAuc3AKLnRhIFxcdycgJ3UqOAoubmYKLi4KLmRlIEVFCi5maQou aWUgdCAuc3AgLjV2Ci5lbCAuc3AKLmZ0IFIKLmluCi4uCi5CIHBjcC10YXBlc3RhdApyZXBvcnRz IEkvTyBzdGF0aXN0aWNzIGZvciB0YXBlIGRldmljZXMgCkJ5IGRlZmF1bHQKLkIgcGNwLXRhcGVz dGF0CnJlcG9ydHMgbGl2ZSBkYXRhIGZvciB0aGUgbG9jYWwgaG9zdCBidXQgY2FuIGFsc28gcmVw b3J0IGZvciBhIHJlbW90ZSBob3N0IChcZjMtaFxmUCkgb3IgZnJvbSBhIHByZXZpb3VzbHkgY2Fw dHVyZWQgUENQIGFyY2hpdmUgKFxmMy1hXGZQKS4KLlBQClRoZQouQlIgXC1TICwKLkJSIFwtVCAs Ci5CUiBcLU8KYW5kCi5CIFwtQQpvcHRpb25zIG1heSBiZSB1c2VkIHRvIGRlZmluZSBhIHRpbWUg d2luZG93IHRvIHJlc3RyaWN0IHRoZQpzYW1wbGVzIHJldHJpZXZlZCwgc2V0IGFuIGluaXRpYWwg b3JpZ2luIHdpdGhpbiB0aGUgdGltZSB3aW5kb3csCm9yIHNwZWNpZnkgYSBgYG5hdHVyYWwnJyBh bGlnbm1lbnQgb2YgdGhlIHNhbXBsZSB0aW1lczsgcmVmZXIgdG8KLkJSIFBDUEludHJvICgxKQpm b3IgYSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBvcHRpb25zLgouUFAKVGhlIG90aGVy IG9wdGlvbnMgd2hpY2ggY29udHJvbCB0aGUgc291cmNlLCB0aW1pbmcgYW5kIGxheW91dCBvZiB0 aGUgaW5mb3JtYXRpb24KcmVwb3J0ZWQgYnkKLkIgcGNwLXRhcGVzdGF0CmFyZSBhcyBmb2xsb3dz OgouVFAgNQouQiBcLWEKUGVyZm9ybWFuY2UgbWV0cmljIHZhbHVlcyBhcmUgcmV0cmlldmVkIGZy b20gdGhlIFBlcmZvcm1hbmNlIENvLVBpbG90IChQQ1ApCmFyY2hpdmUgbG9nIGZpbGVzIGlkZW50 aWZpZWQgYnkgdGhlIGFyZ3VtZW50Ci5JUiBhcmNoaXZlICwKd2hpY2ggaXMgYSBjb21tYS1zZXBh cmF0ZWQgbGlzdCBvZgpuYW1lcywgZWFjaCBvZiB3aGljaCBtYXkgYmUgdGhlIGJhc2UgbmFtZSBv ZiBhbiBhcmNoaXZlIG9yIHRoZSBuYW1lIG9mIGEKZGlyZWN0b3J5IGNvbnRhaW5pbmcgb25lIG9y IG1vcmUgYXJjaGl2ZXMuIFNlZSBhbHNvCi5CUiBcLXUgLgouVFAKLkIgXC1HClNwZWNpZmllcyB0 aGF0IHN0YXRpc3RpY3MgZm9yIGRldmljZSBuYW1lcyBtYXRjaGluZyB0aGUgcmVndWxhciBleHBy ZXNzaW9uIHNwZWNpZmllZCB3aXRoIHRoZQouQiBcLVIKLkkgcmVnZXgKb3B0aW9uIHNob3VsZCBi ZSBhZ2dyZWdhdGVkIGFjY29yZGluZyB0bwouSVIgbWV0aG9kIC4KTm90ZSB0aGlzIGlzIGFnZ3Jl Z2F0aW9uIGJhc2VkIG9uIG1hdGNoaW5nIGRldmljZSBuYW1lcyAobm90IHRlbXBvcmFsIGFnZ3Jl Z2F0aW9uKS4KV2hlbgouQiBcLUcKaXMgdXNlZCwKdGhlIGRldmljZSBuYW1lIGNvbHVtbiBpcyBy ZXBvcnRlZCBhcwouSVIgbWV0aG9kIChcZklyZWdleFxmUiksCmUuZy4KaWYKLkIgXC1HIHN1bQou QiBcLVIgJ3N0KDB8MSkkJwppcyBzcGVjaWZpZWQsIHRoZSBkZXZpY2UgY29sdW1uIHdpbGwgYmUK LkJSIHN1bSAoXGZCc3QoMHwxKSQpXGZSCmFuZApzdW1tZWQgc3RhdGlzdGljcyBmb3IKLkIgc3Qw CmFuZAouQiBzdDEKd2lsbCBiZSByZXBvcnRlZCBpbiB0aGUgcmVtYWluaW5nIGNvbHVtbnMuCklm Ci5CIFwtRwppcyBzcGVjaWZpZWQgYnV0Ci5CIFwtUgppcyBub3Qgc3BlY2lmaWVkLCB0aGVuIHRo ZSBkZWZhdWx0Ci5JIHJlZ2V4CmlzCi5CUiAuKiAsCmkuZS4gbWF0Y2hpbmcgYWxsIGRldmljZSBu YW1lcy4KSWYKLkkgbWV0aG9kCmlzCi5CIHN1bQp0aGVuIHRoZSBzdGF0aXN0aWNzIGFyZSBzdW1t ZWQuCklmCi5JIG1ldGhvZAppcwouQiBhdmcKdGhlbiB0aGUgc3RhdGlzdGljcyBhcmUgc3VtbWVk IGFuZCB0aGVuIGF2ZXJhZ2VkIGJ5IGRpdmlkaW5nIGJ5IHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcg ZGV2aWNlIG5hbWVzLgpJZgouSSBtZXRob2QKaXMKLkIgbWluCm9yCi5CUiBtYXggLAp0aGUgbWlu aW11bSBvciBtYXhpbXVtIHN0YXRpc3RpY3MgZm9yIG1hdGNoaW5nIGRldmljZXMgYXJlIHJlcG9y dGVkLCByZXNwZWN0ZnVsbHkuCi5UUAouQiBcLWgKQ3VycmVudCBwZXJmb3JtYW5jZSBtZXRyaWMg dmFsdWVzIGFyZSByZXRyaWV2ZWQgZnJvbSB0aGUgbm9taW5hdGVkCi5JIGhvc3QKbWFjaGluZS4K LlRQCi5CIFwtcwpUaGUgYXJndW1lbnQKLkkgc2FtcGxlcwpkZWZpbmVzIHRoZSBudW1iZXIgb2Yg c2FtcGxlcyB0byBiZSByZXRyaWV2ZWQgYW5kIHJlcG9ydGVkLgpJZgouSSBzYW1wbGVzCmlzIDAg b3IKLkIgXC1zCmlzIG5vdCBzcGVjaWZpZWQsIAouQiBwY3AtdGFwZXN0YXQKd2lsbCBzYW1wbGUg YW5kIHJlcG9ydCBjb250aW51b3VzbHkgKGluIHJlYWwgdGltZSBtb2RlKSBvciB1bnRpbCB0aGUg ZW5kCm9mIHRoZSBzZXQgb2YgUENQIGFyY2hpdmVzIChpbiBhcmNoaXZlIG1vZGUpLgouVFAKLkIg XC10ClRoZSBkZWZhdWx0IHVwZGF0ZSBcZjJpbnRlcnZhbFxmMSBtYXkgYmUgc2V0IHRvIHNvbWV0 aGluZyBvdGhlciB0aGFuIHRoZQpkZWZhdWx0IDEgc2Vjb25kLgpUaGUKLkkgaW50ZXJ2YWwKYXJn dW1lbnQgZm9sbG93cyB0aGUgc3ludGF4IGRlc2NyaWJlZCBpbgouQlIgUENQSW50cm8gKDEpLAph bmQgaW4gdGhlIHNpbXBsZXN0IGZvcm0gbWF5IGJlIGFuIHVuc2lnbmVkIGludGVnZXIgKHRoZSBp bXBsaWVkCnVuaXRzIGluIHRoaXMgY2FzZSBhcmUgc2Vjb25kcykuClRoZSBcZjMtdFxmUCBvcHRp b24gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHJlcGxheWluZyBsYXJnZSBzZXRzIG9mCmFy Y2hpdmVzIChcZjMtYVxmUCBvcHRpb24pIHRoYXQgc3BhbiBzZXZlcmFsIGhvdXJzIG9yIGV2ZW4g ZGF5cy4KSW4gdGhpcyBjYXNlIHNwZWNpZnlpbmcgYSBsYXJnZQouSSBpbnRlcnZhbAooZS5nLiAx aCBmb3IgMSBob3VyKQp3aWxsIHJlZHVjZSB0aGUgdm9sdW1lIG9mIGRhdGEgcmVwb3J0ZWQgYW5k IHRoZSB0YXBlIGkvbyBzdGF0aXN0aWNzIHdpbGwgYmUgYXZlcmFnZWQgKGludGVycG9sYXRlZCkg b3Zlcgp0aGUgcmVwb3J0aW5nIGludGVydmFsICh1bmxlc3MgdGhlCi5CIFwtdQpvcHRpb24gaXMg c3BlY2lmaWVkLCBzZWUgYmVsb3cpLgouVFAKLkIgXC1SClRoaXMgcmVzdHJpY3RzIHRoZSByZXBv cnQgdG8gZGV2aWNlIG5hbWVzIG1hdGNoaW5nCi5JUiByZWdleCAuClRoZQouSSByZWdleApwYXR0 ZXJuIGlzIHNlYXJjaGVkIGFzIGEgcGVybCBzdHlsZSByZWd1bGFyIGV4cHJlc3Npb24sIGFuZCB3 aWxsIG1hdGNoIGFueSBwb3J0aW9uIG9mIGEgZGV2aWNlIG5hbWUuCmUuZy4gJ15zdFswLTldKycg d2lsbCBtYXRjaCBhbGwgZGV2aWNlIG5hbWVzIHN0YXJ0aW5nIHdpdGggJ3N0JyBmb2xsb3dlZCBi eSBvbmUgb3IgbW9yZSBudW1iZXJzLgplLmcuICdec3QoMHwxKSQnIHdpbGwgb25seSBtYXRjaCAn c3QwJyBhbmQgJ3N0MScuCmUuZy4gJ3N0MCQnIHdpbGwgbWF0Y2ggJ3N0MCcgYnV0IG5vdCAnc3Qx Jy4KU2VlIGFsc28gdGhlCi5CIC1HCm9wdGlvbiBmb3IgYWdncmVnYXRpb24gb3B0aW9ucy4KLlRQ Ci5CIFwtUApUaGlzIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRvIHByaW50LiBU aGUgZGVmYXVsdCBwcmVjaXNpb24gXGYyTlxmMQptYXkgYmUgc2V0IHRvIHNvbWV0aGluZyBvdGhl ciB0aGFuIHRoZSBkZWZhdWx0IDIgZGVjaW1hbHMuCk5vdGUgdGhhdCB0aGUKLkIgYXZncnEtc3oK YW5kCi5CIGF2Z3F1LXN6CmZpZWxkcyBhcmUgYWx3YXlzIHJlcG9ydGVkIHdpdGggXGYyTlxmMSsx IGRlY2ltYWxzIG9mIHByZWNpc2lvbi4KVGhlc2UgZmllbGRzIHR5cGljYWxseSBoYXZlIHZhbHVl cyBsZXNzIHRoYW4gMS4wLgouVFAKLkIgXC11CldoZW4gcmVwbGF5aW5nIGEgc2V0IG9mIGFyY2hp dmVzLCBieSBkZWZhdWx0IHZhbHVlcyBhcmUgcmVwb3J0ZWQKYWNjb3JkaW5nIHRvIHRoZSBzZWxl Y3RlZCBzYW1wbGUgaW50ZXJ2YWwgKFxjCi5CIFwtdApvcHRpb24pLCBub3QgYWNjb3JkaW5nIHRv IHRoZSBhY3R1YWwgcmVjb3JkIGludGVydmFscyBpbiB0aGUgc2V0IG9mIGFyY2hpdmVzLgpUbyB0 aGlzIGVmZmVjdCBQQ1AgaW50ZXJwb2xhdGVzIHRoZSB2YWx1ZXMgdG8gYmUgcmVwb3J0ZWQgYmFz ZWQgb24gdGhlCnJlY29yZHMgaW4gdGhlIHNldCBvZiBhcmNoaXZlcywgYW5kIGlzIHBhcnRpY3Vs YXJseSB1c2VmdWwgd2hlbiB0aGUKLkIgXC10Cm9wdGlvbiBpcyB1c2VkIHRvIHJlcGxheSBhIHNl dCBvZiBhcmNoaXZlcyB3aXRoIGEgbG9uZ2VyIHNhbXBsaW5nIGludGVydmFsIHRoYW4KdGhlIHVu ZGVybHlpbmcgaW50ZXJ2YWwgdGhlIHNldCBvZiBhcmNoaXZlcyB3YXMgb3JpZ2luYWxseSByZWNv cmRlZCB3aXRoLgpXaXRoIHRoZQouQiBcLXUKb3B0aW9uLAp1bmludGVycG9sYXRlZCByZXBvcnRp bmcgaXMgZW5hYmxlZCAtIGV2ZXJ5IHZhbHVlIGlzIHJlcG9ydGVkCmFjY29yZGluZyB0byB0aGUg bmF0aXZlIHJlY29yZGluZyBpbnRlcnZhbCBpbiB0aGUgc2V0IG9mIGFyY2hpdmVzLgpXaGVuIHRo ZQouQiBcLXUKb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhlCi5CIFwtdApvcHRpb24gbWFrZXMgbm8g c2Vuc2UgYW5kIGlzIGluY29tcGF0aWJsZSBiZWNhdXNlIHRoZSByZXBsYXkgaW50ZXJ2YWwKaXMg YWx3YXlzIHRoZSBzYW1lIGFzIHRoZSByZWNvcmRpbmcgaW50ZXJ2YWwgaW4gdGhlIHNldCBvZiBh cmNoaXZlLgpJbiBhZGRpdGlvbiwKLkIgXC11Cm9ubHkgbWFrZXMgc2Vuc2Ugd2hlbiByZXBsYXlp bmcgYSBzZXQgb2YgYXJjaGl2ZXMsIHNlZQouQiBcLWEKYWJvdmUsCmFuZCBzbyBpZgouQiBcLXUK aXMgc3BlY2lmaWVkIHRoZW4KLkIgXC1hCm11c3QgYWxzbyBiZSBzcGVjaWZpZWQuCi5UUAouQiBc LVoKQnkgZGVmYXVsdCwKLkIgcGNwLXRhcGVzdGF0CnJlcG9ydHMgdGhlIHRpbWUgb2YgZGF5IGFj Y29yZGluZyB0byB0aGUgbG9jYWwgdGltZXpvbmUgb24gdGhlCnN5c3RlbSB3aGVyZQouQiBwY3At dGFwZXN0YXQKaXMgcnVuLgpUaGUKLkIgXC1aCm9wdGlvbiBjaGFuZ2VzIHRoZSB0aW1lem9uZSB0 bwouSSB0aW1lem9uZQppbiB0aGUgZm9ybWF0IG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQou QiBUWgphcyBkZXNjcmliZWQgaW4KLkJSIGVudmlyb24gKDcpLgouVFAKLkIgXC16CkNoYW5nZSB0 aGUgcmVwb3J0aW5nIHRpbWV6b25lIHRvIHRoZSBsb2NhbCB0aW1lem9uZSBhdCB0aGUgaG9zdCB0 aGF0IGlzCnRoZSBzb3VyY2Ugb2YgdGhlIHBlcmZvcm1hbmNlIG1ldHJpY3MsIGFzIGlkZW50aWZp ZWQgdmlhIGVpdGhlciB0aGUKLkIgXC1oCm9yCi5CIFwtYQpvcHRpb25zLgpXaGVuIHJlcGxheWlu ZyBhIFBDUCBhcmNoaXZlIHRoYXQgd2FzIGNhcHR1cmVkIGluIGEgZm9yZWlnbiB0aW1lem9uZSwg dGhlCi5CIFwtegpvcHRpb24gd291bGQgYWxtb3N0IGFsd2F5cyBiZSB1c2VkICh0aGUgZGVmYXVs dCByZXBvcnRpbmcgdGltZXpvbmUgaXMgdGhlIGxvY2FsIHRpbWV6b25lLAp3aGljaCBtYXkgbm90 IGJlIHRoZSBzYW1lIGFzIHRoZSB0aW1lem9uZSBvZiB0aGUgUENQIGFyY2hpdmUpLgouVFAKLkIg XC14ClNwZWNpZmllcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIG9uZSBvciBtb3JlIGV4dGVu ZGVkIHJlcG9ydGluZyBvcHRpb25zIGFzIGZvbGxvd3M6Ci5icgpcZjN0XGZQIC0gcHJlZml4IGV2 ZXJ5IGxpbmUgaW4gdGhlIHJlcG9ydCB3aXRoIGEgdGltZXN0YW1wIGluIFxmMmN0aW1lXGZQKDMp IGZvcm1hdCwKLmJyClxmM2hcZlAgLSBvbWl0IHRoZSBoZWFkaW5nLCB3aGljaCBpcyBvdGhlcndp c2UgcmVwb3J0ZWQgZXZlcnkgMjQgc2FtcGxlcywKLmJyClxmM25vaWRsZVxmUCAtIERvIG5vdCBk aXNwbGF5IHN0YXRpc3RpY3MgZm9yIGlkbGUgZGV2aWNlcy4KLlNIIFJFUE9SVApUaGUgY29sdW1u cyBpbiB0aGUKLkIgcGNwLXRhcGVzdGF0CnJlcG9ydCBoYXZlIHRoZSBmb2xsb3dpbmcgaW50ZXJw cmV0YXRpb24gOgouVFAKLkIgVGltZXN0YW1wCldoZW4gdGhlIFxmMy14IHRcZlAgb3B0aW9uIGlz IHNwZWNpZmllZCwgdGhpcyBjb2x1bW4gaXMgdGhlIHRpbWVzdGFtcCBpbiBcZjNjdGltZVxmUCgz KSBmb3JtYXQuCi5UUAouQiBEZXZpY2UKU3BlY2lmaWVzIHRoZSB0YXBlIGRldmljZSBuYW1lCldo ZW4KLkIgXC1HCmlzIHNwZWNpZmllZCwgdGhpcyBpcyByZXBsYWNlZCBieSB0aGUgYWdncmVnYXRp b24gbWV0aG9kIGFuZCByZWd1bGFyIGV4cHJlc3Npb24gLSBzZWUgdGhlCi5CIFwtRwphbmQKLkIg XC1SCm9wdGlvbnMgYWJvdmUuCi5UUAouQiByL3MKVGhlIG51bWJlciBvZiByZWFkcyBpc3N1ZWQg ZXhwcmVzc2VkIGFzIHRoZSBudW1iZXIgcGVyIHNlY29uZCBhdmVyYWdlZCBvdmVyIHRoZSBpbnRl cnZhbC4KLlRQCi5CIHcvcwpUaGUgbnVtYmVyIG9mIHdyaXRlcyBpc3N1ZWQgZXhwcmVzc2VkIGFz IHRoZSBudW1iZXIgcGVyIHNlY29uZCBhdmVyYWdlZCBvdmVyIHRoZSBpbnRlcnZhbC4gCi5UUAou QiBrYl9yL3MKVGhlIGFtb3VudCBvZiBkYXRhIHJlYWQgZXhwcmVzc2VkIGluIGtpbG9ieXRlcyBw ZXIgc2Vjb25kIGF2ZXJhZ2VkIG92ZXIgdGhlIGludGVydmFsLgouVFAKLkIga2Jfdy9zClRoZSBh bW91bnQgb2YgZGF0YSB3cml0dGVuIGV4cHJlc3NlZCBpbiBraWxvYnl0ZXMgcGVyIHNlY29uZCBh dmVyYWdlZCBvdmVyIHRoZSBpbnRlcnZhbC4KLlRQCi5CIHJfcGN0ClJlYWQgcGVyY2VudGFnZSB3 YWl0IC0gVGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSBvdmVyIHRoZSBpbnRlcnZhbCBzcGVudCB3YWl0 aW5nIGZvciByZWFkIHJlcXVlc3RzIHRvIGNvbXBsZXRlLiAKVGhlIHRpbWUgaXMgbWVhc3VyZWQg ZnJvbSB3aGVuIHRoZSByZXF1ZXN0IGlzIGRpc3BhdGNoZWQgdG8gdGhlIFNDU0kgbWlkLWxheWVy IHVudGlsIGl0IHNpZ25hbHMgdGhhdCBpdCBjb21wbGV0ZWQuCi5UUAouQiB3X3BjdCAKV3JpdGUg cGVyY2VudGFnZSB3YWl0IC0gVGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSBvdmVyIHRoZSBpbnRlcnZh bCBzcGVudCB3YWl0aW5nIGZvciB3cml0ZSByZXF1ZXN0cyB0byBjb21wbGV0ZS4gClRoZSB0aW1l IGlzIG1lYXN1cmVkIGZyb20gd2hlbiB0aGUgcmVxdWVzdCBpcyBkaXNwYXRjaGVkIHRvIHRoZSBT Q1NJIG1pZC1sYXllciB1bnRpbCBpdCBzaWduYWxzIHRoYXQgaXQgY29tcGxldGVkLgouVFAKLkIg b19wY3QKT3ZlcmFsbCBwZXJjZW50YWdlIHdhaXQgIC0gVGhlIHBlcmNlbnRhZ2Ugb2YgdGltZSBv dmVyIHRoZSBpbnRlcnZhbCBzcGVudCB3YWl0aW5nIGZvciBhbnkgSS9PIHJlcXVlc3QgdG8gCmNv bXBsZXRlIChyZWFkLCB3cml0ZSwgYW5kIG90aGVyKS4KLlRQCi5CIFJzL3MKVGhlIG51bWJlciBv ZiBJL09zLCBleHByZXNzZWQgYXMgdGhlIG51bWJlciBwZXIgc2Vjb25kIGF2ZXJhZ2VkIG92ZXIg dGhlIGludGVydmFsLCB3aGVyZSBhIG5vbi16ZXJvIHJlc2lkdWFsIHZhbHVlIHdhcyBlbmNvdW50 ZXJlZC4KLlRQCi5CIG9fY250ClRoZSAgbnVtYmVyIG9mIEkvT3MsIGV4cHJlc3NlZCBhcyB0aGUg bnVtYmVyIHBlciBzZWNvbmQgYXZlcmFnZWQgb3ZlciB0aGUgaW50ZXJ2YWwsIHRoYXQgd2VyZSBp bmNsdWRlZCBhcyAib3RoZXIiLiAKT3RoZXIgSS9PIGluY2x1ZGVzIGlvY3RsIGNhbGxzIG1hZGUg dG8gdGhlIHRhcGUgZHJpdmVyIGFuZCBpbXBsaWNpdCBvcGVyYXRpb25zIHBlcmZvcm1lZCBieSB0 aGUgdGFwZSBkcml2ZXIgc3VjaCBhcyAKcmV3aW5kIG9uIGNsb3NlIChmb3IgdGFwZSBkZXZpY2Vz IHRoYXQgaW1wbGVtZW50IHJld2luZCBvbiBjbG9zZSkuIApJdCBkb2VzIG5vdCBpbmNsdWRlIGFu eSBJL08gcGVyZm9ybWVkIHVzaW5nIG1ldGhvZHMgb3V0c2lkZSBvZiB0aGUgdGFwZSBkcml2ZXIg KGUuZy4gdmlhIHNnIGlvY3RscykuCi5TSCBGSUxFUwouUEQgMAouVFAgMTAKLkJJICRQQ1BfVkFS X0RJUi9wbW5zLyAqCmRlZmF1bHQgUE1OUyBzcGVjaWZpY2F0aW9uIGZpbGVzCi5QRAouU0ggIlBD UCBFTlZJUk9OTUVOVCIKRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggdGhlIHByZWZpeAouQiBQ Q1BfCmFyZSB1c2VkIHRvIHBhcmFtZXRlcml6ZSB0aGUgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVz CnVzZWQgYnkgUENQLgpPbiBlYWNoIGluc3RhbGxhdGlvbiwgdGhlIGZpbGUKLkkgL2V0Yy9wY3Au Y29uZgpjb250YWlucyB0aGUgbG9jYWwgdmFsdWVzIGZvciB0aGVzZSB2YXJpYWJsZXMuClRoZQou QiAkUENQX0NPTkYKdmFyaWFibGUgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2 ZQpjb25maWd1cmF0aW9uIGZpbGUsCmFzIGRlc2NyaWJlZCBpbgouQlIgcGNwLmNvbmYgKDUpLgou U0ggU0VFIEFMU08KLkJSIHBjcCAoMSksCi5CUiBQQ1BJbnRybyAoMSksCi5CUiBwbWNkICgxKSwK LkJSIHBtY2hhcnQgKDEpLAouQlIgcG1sb2dnZXIgKDEpLAouQlIgcGNwLmNvbmYgKDUpCmFuZAou QlIgcGNwLmVudiAoNSkuCi5TSCBESUFHTk9TVElDUwpBbGwgYXJlIGdlbmVyYXRlZCBvbiBzdGFu ZGFyZCBlcnJvciBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHNlbGYtZXhwbGFuYXRvcnkuCg== --001a114dade047e240054990ce00--