[PythonCE] input And raw_input

goodey27@juno.com goodey27@juno.com
Thu, 3 Oct 2002 12:34:47 -0400


This message is in MIME format.  Since your mail reader does not understand
this format, some or all of this message may not be legible.

----__JNP_000_2baa.1370.0780
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Telion

> For the problem number 2, you should find site.py.
> If it's there search 'encoding'.
> And change the line:
> encoding = 'ascii'
> to
> encoding = 'mbcs'

I only have the copiled version of site.py  (site.pyc)

> If you don't find site.py, let me know what it saids
> when you do:
> >>> import sys
> >>> sys.version
> and
> >>> sys.version_info
> also
> >>> sys.modules

here are the results :

sys.version = '2.2+ (#0, Jan 20 2002, 13:30:34) [MSC 32 bit (ARM)]'

sys.version_info = (2, 3, 0, 'alpha', 1)

sys.modules = {'cStringIO': <module 'cStringIO' (built-in)>,
'__future__': <module '__future__' from '\Program
Files\Python\lib\__future__.pyc'>, 'copy_reg': <module 'copy_reg' from
'\Program Files\Python\lib\copy_reg.pyc'>, 'sre_compile': <module
'sre_compile' from '\Program Files\Python\lib\sre_compile.pyc'>,
'threading': <module 'threading' from '\Program
Files\Python\lib\threading.pyc'>, '_sre': <module '_sre' (built-in)>,
'traceback': <module 'traceback' from '\Program
Files\Python\lib\traceback.pyc'>, 'site': <module 'site' from '\Program
Files\Python\lib\site.pyc'>, 'ce': <module 'ce' (built-in)>, 'atexit':
<module 'atexit' from '\Program Files\Python\lib\atexit.pyc'>, 'code':
<module 'code' from '\Program Files\Python\lib\code.pyc'>, 'pcceshell':
<module 'pcceshell' from '\Program Files\Python\lib\pcceshell.pyc'>,
'__main__': <module '__main__' (built-in)>, 'win32event': <module
'win32event' from '\Program Files\Python\win32event.pyd'>, 'strop':
<module 'strop' (built-in)>, 're': <module 're' from '\Program
Files\Python\lib\re.pyc'>, 'errno': <module 'errno' (built-in)>,
'sre_constants': <module 'sre_constants' from '\Program
Files\Python\lib\sre_constants.pyc'>, 'imp': <module 'imp' (built-in)>,
'os.path': <module 'ntpath' from '\Program Files\Python\lib\ntpath.pyc'>,
'tokenize': <module 'tokenize' from '\Program
Files\Python\lib\tokenize.pyc'>, 'new': <module 'new' (built-in)>,
'ntpath': <module 'ntpath' from '\Program Files\Python\lib\ntpath.pyc'>,
'stat': <module 'stat' from '\Program Files\Python\lib\stat.pyc'>,
'string': <module 'string' from '\Program Files\Python\lib\string.pyc'>,
'inspect': <module 'inspect' from '\Program
Files\Python\lib\inspect.pyc'>, 'cPickle': <module 'cPickle' (built-in)>,
'repr': <module 'repr' from '\Program Files\Python\lib\repr.pyc'>, 'sys':
<module 'sys' (built-in)>, '__builtin__': <module '__builtin__'
(built-in)>, 'hotshot': <module 'hotshot' from '\Program
Files\Python\lib\hotshot\__init__.pyc'>, 'hotshot._hotshot': None,
'codeop': <module 'codeop' from '\Program Files\Python\lib\codeop.pyc'>,
'types': <module 'types' from '\Program Files\Python\lib\types.pyc'>,
'struct': <module 'struct' (built-in)>, 'thread': <module 'thread'
(built-in)>, 'StringIO': <module 'StringIO' from '\Program
Files\Python\lib\StringIO.pyc'>, 'os': <module 'os' from '\Program
Files\Python\lib\os.pyc'>, 'sre': <module 'sre' from '\Program
Files\Python\lib\sre.pyc'>, '_hotshot': <module '_hotshot' (built-in)>,
'pydoc': <module 'pydoc' from '\Program Files\Python\lib\pydoc.pyc'>,
'linecache': <module 'linecache' from '\Program
Files\Python\lib\linecache.pyc'>, 'token': <module 'token' from '\Program
Files\Python\lib\token.pyc'>, 'win32gui': <module 'win32gui' from
'\Program Files\Python\win32gui.pyd'>, 'time': <module 'time'
(built-in)>, 'exceptions': <module 'exceptions' (built-in)>, 'sre_parse':
<module 'sre_parse' from '\Program Files\Python\lib\sre_parse.pyc'>,
'pickle': <module 'pickle' from '\Program Files\Python\lib\pickle.pyc'>,
'marshal': <module 'marshal' (built-in)>, 'dis': <module 'dis' from
'\Program Files\Python\lib\dis.pyc'>}


Isr
----__JNP_000_2baa.1370.0780
Content-Type: text/plain; name="pcceshell.py"
Content-Transfer-Encoding: base64

IyBBICJQeXRob24gY29uc29sZSIgZm9yIFdpbmRvd3MgQ0UuDQojDQojIEFsc28gd29ya3Mgb24g
TlQvOXggKHdpdGggYSBmZXcgbGltaXRhdGlvbnMhKSAtIHVzZWZ1bCBmb3IgZGVidWdnaW5nIQ0K
Iw0KIyBVc2VkIDIgdGhyZWFkcyAtIG9uZSBmb3IgVUkgKGllLCB0aGUgbWVzc2FnZSBsb29wKSBh
bmQgYW5vdGhlciB0aHJlYWQNCiMgZm9yIGV4ZWN1dGluZyBQeXRob24gY29kZS4gIFVzZXMgdmVy
eSBzaW1wbGUgZXZlbnRzIHRvIHN5bmNocm9uaXNlIHRoZSAyIQ0KDQpteVdpbmRvd1RpdGxlID0g
IlB5dGhvbiBDRSINCmltcG9ydCBzeXMsIG9zDQoNCg0KZnJvbSB3aW4zMmd1aSBpbXBvcnQgKg0K
ZnJvbSB3aW4zMmV2ZW50IGltcG9ydCAqDQppbXBvcnQgc3RyaW5nDQppbXBvcnQgdGhyZWFkLCB0
aHJlYWRpbmcNCmltcG9ydCB0cmFjZWJhY2sNCmltcG9ydCBjb2RlICMgc3RkIG1vZHVsZSBmb3Ig
Y29tcGlsYXRpb24gdXRpbGl0aWVzLg0KaW1wb3J0IG5ldw0KaW1wb3J0IGltcA0KDQppZiBzeXMu
cGxhdGZvcm0gPT0gJ1BvY2tldCBQQyc6DQogICAgaXNQb2NrZXRQQyA9IDENCmVsc2U6DQogICAg
aXNQb2NrZXRQQyA9IDANCg0KDQppZiBzeXMucGxhdGZvcm09PSJ3aW5jZSIgb3IgaXNQb2NrZXRQ
QzoNCiAgT3V0cHV0RGVidWdTdHJpbmcgPSBOS0RiZ1ByaW50ZlcNCmVsc2U6DQogIGZyb20gd2lu
MzJhcGkgaW1wb3J0IE91dHB1dERlYnVnU3RyaW5nDQogICAgDQoNCiMgd2luY2UgZG9lc24ndCBo
YXZlIENXRCwgc28gdXNlIHByb2dyYW0gbmFtZSBiYXNlbmFtZSBhcyBlbGVtZW50IG9mIHN5cy5w
YXRoDQoNCklET0s9MQ0KSURDQU5DRUw9Mg0KDQpHV0xfV05EUFJPQz0tNA0KRklYRURfUElUQ0g9
MQ0KQU5TSV9GSVhFRF9GT05UPTExDQoNCklEQ19XQUlUID0gMzI1MTQNCkhXTkRfVE9QPTANCkNT
X1ZSRURSQVc9MQ0KQ1NfSFJFRFJBVz0yDQoNCkNXX1VTRURFRkFVTFQ9MHg4MDAwMDAwMA0KDQpX
TV9DUkVBVEU9MQ0KV01fQ0hBUj0yNTgNCldNX0NPTU1BTkQ9MjczDQpXTV9ERVNUUk9ZPTINCldN
X1FVSVQ9MTgNCldNX1NFVEZPQ1VTPTcNCldNX1NFVEZPTlQ9NDgNCldNX1NFVFJFRFJBVz0xMQ0K
V01fU0laRT01DQpXTV9VU0VSPTEwMjQNCldNX1NFVFRJTkdDSEFOR0U9MHgwMDFhDQpXTV9BQ1RJ
VkFURT0weDYNCkVOX1NFVEZPQ1VTPTB4MDEwMA0KRU5fS0lMTEZPQ1VTPTB4MDIwMA0KV01fUEFJ
TlQ9MHhmDQpXTV9JTklURElBTE9HPTB4MTEwDQoNCg0KDQoNCg0KV0hJVEVfQlJVU0g9MA0KU1df
U0hPVz01DQpTV19TSE9XTk9STUFMPTENCg0KV1NfU1lTTUVOVT01MjQyODgNCldTX0NMSVBDSElM
RFJFTj0zMzU1NDQzMg0KV1NfQ0hJTEQ9MTA3Mzc0MTgyNA0KV1NfVklTSUJMRT0yNjg0MzU0NTYN
CldTX0JPUkRFUj0weDAwODAwMDAwDQpXU19IU0NST0xMPTEwNDg1NzYNCldTX1ZTQ1JPTEw9MjA5
NzE1Mg0KaWYgc3lzLnBsYXRmb3JtPT0id2luY2UiIG9yIHN5cy5wbGF0Zm9ybSA9PSAnUG9ja2V0
IFBDJzoNCiAgICBXU19PVkVSTEFQUEVEV0lORE9XPTANCmVsc2U6DQogICAgV1NfT1ZFUkxBUFBF
RFdJTkRPVz0xMzU2NTk1Mg0KDQpFTV9HRVRMSU5FQ09VTlQ9MTg2DQpFTV9HRVRTRUw9MTc2DQpF
TV9MSU5FSU5ERVg9MTg3DQpFTV9MSU5FRlJPTUNIQVI9MjAxDQpFTV9MSU5FTEVOR1RIPTE5Mw0K
RU1fU0VUU0VMPTE3Nw0KRU1fUkVQTEFDRVNFTD0xOTQNCg0KRVNfTEVGVD0wDQpFU19NVUxUSUxJ
TkU9NA0KRVNfV0FOVFJFVFVSTj00MDk2DQpFU19BVVRPVlNDUk9MTD02NA0KRVNfQVVUT0hTQ1JP
TEw9MTI4DQoNCklEUl9NRU5VPTEwMQ0KSURNX0VYSVQ9NDAwMDENCklETV9BQk9VVD00MDAwMg0K
SUREX0FCT1VUPTcyMzQNCg0KaWYgVU5JQ09ERToNCiAgICBURVhUID0gVW5pY29kZQ0KZWxzZToN
CiAgICBURVhUID0gbGFtYmRhIHg6IHgNCg0KdHJ5Og0KICAgIHN5cy5wczENCmV4Y2VwdCBBdHRy
aWJ1dGVFcnJvcjoNCiAgICBzeXMucHMxID0gIj4+PiAiDQogICAgc3lzLnBzMiA9ICIuLi4gIg0K
DQpjbGFzcyBTaW1wbGVTaGVsbDoNCiAgICBlZGl0TWVzc2FnZU1hcCA9IHt9DQogICAgZGVmIF9f
aW5pdF9fKHNlbGYpOg0KICAgICAgICBzZWxmLmJJbnRlcmFjdCA9IDAgIyBBbSBJIGludGVyYWN0
aW5nPw0KICAgICAgICBzZWxmLmh3bmQgPSBOb25lDQogICAgICAgIHNlbGYuaHduZEVkaXQgPSBO
b25lDQogICAgICAgIHNlbGYub3V0cHV0RmlsZSA9IE5vbmUgICMgb3B0aW9uYWwgb3V0cHV0IGZp
bGUNCiAgICAgICAgc2VsZi5vdXRwdXRRdWV1ZSA9IFtdDQogICAgICAgIHNlbGYub3V0cHV0UXVl
dWVMb2NrID0gdGhyZWFkaW5nLkxvY2soKQ0KDQogICAgICAgICMgQWxsb2NhdGUgc29tZSBldmVu
dHMgZm9yIHRocmVhZCBzeW5jDQogICAgICAgIHNlbGYuY3VycmVudEJsb2NrSXRlbXMgPSBOb25l
DQogICAgICAgIHNlbGYuZXZlbnRJbnRlcmFjdGl2ZUlucHV0QXZhaWxhYmxlID0gQ3JlYXRlRXZl
bnQoTm9uZSwgMCwgMCwgTm9uZSkNCiAgICAgICAgc2VsZi5ldmVudENsb3NlZCA9IENyZWF0ZUV2
ZW50KE5vbmUsIDAsIDAsIE5vbmUpDQoNCiAgICBkZWYgX19kZWxfXyhzZWxmKToNCiAgICAgICAg
cHJpbnQgIkludGVyYWN0aXZlTWFuYWdlciBkaWVpbmciDQogICAgICAgIGlmIHNlbGYub3V0cHV0
RmlsZToNCiAgICAgICAgICAgIGRlbCBzZWxmLm91dHB1dEZpbGUNCg0KICAgIGRlZiB3cml0ZShz
ZWxmLCB0ZXh0KToNCiAgICAgICAgaWYgc2VsZi5vdXRwdXRGaWxlOg0KICAgICAgICAgICAgdHJ5
Og0KICAgICAgICAgICAgICAgIHNlbGYub3V0cHV0RmlsZS53cml0ZSh0ZXh0KQ0KICAgICAgICAg
ICAgZXhjZXB0Og0KICAgICAgICAgICAgICAgIHBhc3MNCiAgICAgICAgdGV4dCA9IHN0cmluZy5y
ZXBsYWNlKHRleHQsICJcbiIsICJcclxuIikNCiAgICAgICAgc2VsZi5vdXRwdXRRdWV1ZUxvY2su
YWNxdWlyZSgpDQogICAgICAgIHNlbGYub3V0cHV0UXVldWUuYXBwZW5kKHRleHQpDQogICAgICAg
IHNlbGYub3V0cHV0UXVldWVMb2NrLnJlbGVhc2UoKQ0KICAgICAgICB0cnk6DQogICAgICAgICAg
ICBQb3N0TWVzc2FnZShzZWxmLmh3bmQsIFdNX1VTRVIsIDAsIDApDQogICAgICAgIGV4Y2VwdDoN
CiAgICAgICAgICAgIHBhc3MNCiAgICAgICAgDQogICAgZGVmIFJ1bihzZWxmKToNCiAgICAgICAg
UHVtcE1lc3NhZ2VzKCkgIA0KDQogICAgZGVmIEdldEVkaXRNZXNzYWdlTWFwKHNlbGYpOg0KICAg
ICAgICByZXR1cm4ge1dNX0NIQVIgOiBzZWxmLk9uRWRpdENoYXJ9DQoNCiAgICBkZWYgR2V0UGFy
ZW50TWVzc2FnZU1hcChzZWxmKToNCiAgICAgICAgbWFwPXt9DQogICAgICAgIG1hcFtXTV9ERVNU
Uk9ZXSA9IHNlbGYuT25QYXJlbnREZXN0cm95DQogICAgICAgIG1hcFtXTV9TSVpFXSA9IHNlbGYu
T25QYXJlbnRTaXplDQogICAgICAgIG1hcFtXTV9TRVRGT0NVU10gPSBzZWxmLk9uUGFyZW50U2V0
Rm9jdXMNCiAgICAgICAgbWFwW1dNX1VTRVJdID0gc2VsZi5PblBhcmVudFVzZXINCiAgICAgICAg
bWFwW1dNX0NPTU1BTkRdID0gc2VsZi5PblBhcmVudENvbW1hbmQNCiAgICAgICAgbWFwW1dNX1NF
VFRJTkdDSEFOR0VdPSBzZWxmLm9uUGFyZW50U2V0dGluZ0NoYW5nZQ0KICAgICAgICBtYXBbV01f
QUNUSVZBVEVdID0gc2VsZi5vblBhcmVudEFjdGl2YXRlDQogICAgICAgIG1hcFtXTV9DUkVBVEVd
ID0gc2VsZi5vblBhcmVudENyZWF0ZQ0KICAgICAgICByZXR1cm4gbWFwDQogICAgICAgIA0KICAg
IGRlZiBJbml0KHNlbGYpOg0KICAgICAgICB0cnk6DQogICAgICAgICAgICBzZWxmLmhpbnN0ID0g
R2V0TW9kdWxlSGFuZGxlKE5vbmUpDQogICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6ICMgTm90IG9u
IENFPz8NCiAgICAgICAgICAgIHNlbGYuaGluc3QgPSBzeXMuaGluc3QgIyBCdXQgdGhpcyBpcyA6
LSkNCg0KICAgICAgICBJbml0Q29tbW9uQ29udHJvbHMoKQ0KDQogICAgICAgIHdjID0gV05EQ0xB
U1MoKQ0KICAgICAgICB3Yy5oSW5zdGFuY2UgPSBzZWxmLmhpbnN0DQogICAgICAgIHdjLnN0eWxl
PUNTX0hSRURSQVcgfCBDU19WUkVEUkFXDQogICAgICAgIHdjLmhickJhY2tncm91bmQgPSBHZXRT
dG9ja09iamVjdChXSElURV9CUlVTSCkNCiAgICAgICAgd2MubHBzekNsYXNzTmFtZSA9IFRFWFQo
IlBZVEhPTl9DRSIpDQogICAgICAgICMgVGhpcyBjb2RlIHBhc3NlcyBhIGRpY3Rpb25hcnkgYXMg
dGhlICJ3bmRwcm9jIiwgcmF0aGVyIHRoYW4gYSBmdW5jdGlvbi4NCiAgICAgICAgd2MubHBmbldu
ZFByb2MgPSBzZWxmLkdldFBhcmVudE1lc3NhZ2VNYXAoKSAjc2VsZi5NYWluV25kUHJvYw0KICAg
ICAgICBzZWxmLmNsYXNzQXRvbSA9IFJlZ2lzdGVyQ2xhc3Mod2MpDQoNCiAgICAgICAgY3ggPSBD
V19VU0VERUZBVUxUDQogICAgICAgIGN5ID0gQ1dfVVNFREVGQVVMVA0KICAgICAgICB4ID0gQ1df
VVNFREVGQVVMVA0KICAgICAgICB5ID0gQ1dfVVNFREVGQVVMVA0KICAgICAgICBpZiBzeXMucGxh
dGZvcm09PSJ3aW5jZSI6DQogICAgICAgICAgICBzdHlsZSA9IFdTX0NMSVBDSElMRFJFTg0KICAg
ICAgICBlbGlmIGlzUG9ja2V0UEM6DQogICAgICAgICAgICBzdHlsZSA9IFdTX1ZJU0lCTEUgfCBX
U19CT1JERVINCiAgICAgICAgICAgIGdsb2JhbCBzaW5mbywgcmVjdA0KICAgICAgICAgICAgc2lu
Zm8gPSBTSVBJTkZPKCkNCiAgICAgICAgICAgIGlmIG5vdCBTaXBHZXRJbmZvKHNpbmZvKToNCiAg
ICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1VuZXhwZWN0ZWQgZXJyb3IgZnJvbSBT
aXBHZXRJbmZvJykNCiAgICAgICAgICAgIHJlY3QgPSBzaW5mby5yY1Zpc2libGVEZXNrdG9wDQog
ICAgICAgICAgICBjeCA9IHJlY3RbMl0gLSByZWN0WzBdICAjIHJpZ2h0IC0gbGVmdA0KICAgICAg
ICAgICAgY3kgPSByZWN0WzNdIC0gcmVjdFsxXSAgIyBoZWlnaHQNCiAgICAgICAgICAgIHggPSBy
ZWN0WzBdDQogICAgICAgICAgICB5ID0gcmVjdFsxXQ0KICAgICAgICAgICAgaWYgc2luZm8uZmR3
RmxhZ3MgJiBTSVBGX09OOg0KICAgICAgICAgICAgICAgIGN5IC09IDI2ICAgICAjIE1FTlVfSEVJ
R0hUDQogICAgICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoJ1NJUEYgaXMgb25cclxuJykN
CiAgICAgICAgZWxzZToNCiAgICAgICAgICAgIHN0eWxlID0gV1NfT1ZFUkxBUFBFRFdJTkRPVw0K
ICAgICAgICAgICAgDQogICAgICAgIHNlbGYuaHduZCA9IENyZWF0ZVdpbmRvdyggc2VsZi5jbGFz
c0F0b20sIG15V2luZG93VGl0bGUsIHN0eWxlLCBcDQogICAgICAgICAgICAgICAgICAgICAgICB4
LCB5LCBjeCwgY3ksIFwNCiAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHNlbGYuaGluc3Qs
IE5vbmUpDQoNCiAgICAgICAgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tID0gR2V0Q2xpZW50UmVj
dChzZWxmLmh3bmQpDQoNCiMgICAgICAgcHJpbnQgc3lzLnBsYXRmb3JtLCB0eXBlKHN5cy5wbGF0
Zm9ybSkNCiAgICAgICAgaWYgc3lzLnBsYXRmb3JtPT0id2luY2UiOg0KICAgICAgICAgICAgc2Vs
Zi5oQ21kQmFyID0gQ29tbWFuZEJhcl9DcmVhdGUoc2VsZi5oaW5zdCwgc2VsZi5od25kLCAxKQ0K
ICAgICAgICAgICAgQ29tbWFuZEJhcl9JbnNlcnRNZW51YmFyKHNlbGYuaENtZEJhciwgc2VsZi5o
aW5zdCwgSURSX01FTlUsIDApDQogICAgICAgICAgICBDb21tYW5kQmFyX0FkZEFkb3JubWVudHMo
c2VsZi5oQ21kQmFyLCAwLCAwKQ0KICAgICAgICAgICAgdG9wID0gQ29tbWFuZEJhcl9IZWlnaHQo
c2VsZi5oQ21kQmFyKQ0KICAgICAgICBlbGlmIGlzUG9ja2V0UEM6DQogICAgICAgICAgICAjIHNl
dHVwIFBQQyBtZW51IGhlcmUNCiAgICAgICAgICAgIHNobWIgPSBTSE1FTlVCQVJJTkZPKCkNCiAg
ICAgICAgICAgIHNobWIuaHduZFBhcmVudCA9IHNlbGYuaHduZA0KICAgICAgICAgICAgc2htYi5u
VG9vbEJhcklkID0gSURSX01FTlUNCiAgICAgICAgICAgIHNobWIuaEluc3RSZXMgPSBzZWxmLmhp
bnN0DQogICAgICAgICAgICBpZiBTSENyZWF0ZU1lbnVCYXIoc2htYik6DQogICAgICAgICAgICAg
ICAgc2VsZi5od25kTUIgPSBzaG1iLmh3bmRNQg0KICAgICAgICAgICAgZWxzZToNCiAgICAgICAg
ICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygnaW5pdCBtZW51IGJhciBmYWlsZWQnKQ0KICAgICAg
ICAgICAgICAgIHNlbGYuaHduZE1CID0gTm9uZQ0KDQogICAgICAgIE91dHB1dERlYnVnU3RyaW5n
KCdwbGF0IGlzICcrc3lzLnBsYXRmb3JtKQ0KDQogICAgICAgIHN0eWxlID0gV1NfQ0hJTER8V1Nf
VklTSUJMRXxXU19WU0NST0xMfFdTX0hTQ1JPTEx8RVNfTEVGVHxFU19NVUxUSUxJTkV8RVNfV0FO
VFJFVFVSTnxFU19BVVRPSFNDUk9MTA0KICAgICAgICBzZWxmLmh3bmRFZGl0PUNyZWF0ZVdpbmRv
dygiRURJVCIsIE5vbmUsIHN0eWxlLCBcDQogICAgICAgICAgICAgICAgICAgICAgbGVmdCwgdG9w
LCAocmlnaHQtbGVmdCksIChib3R0b20tdG9wKSwgXA0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5od25kLCAwLCBzZWxmLmhpbnN0LCBOb25lKSAgICANCiAgICANCiAgICAgICAg
c2VsZi5vbGRFZGl0V25kUHJvYyA9IFNldFdpbmRvd0xvbmcoc2VsZi5od25kRWRpdCwgR1dMX1dO
RFBST0MsIHNlbGYuR2V0RWRpdE1lc3NhZ2VNYXAoKSkjIHNlbGYuRWRpdFduZFByb2MpDQoNCiAg
ICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJ3aW5jZSIgYW5kIG5vdCBpc1BvY2tldFBDOg0KICAg
ICAgICAgICAgU2VuZE1lc3NhZ2Uoc2VsZi5od25kRWRpdCwgV01fU0VURk9OVCwgR2V0U3RvY2tP
YmplY3QoQU5TSV9GSVhFRF9GT05UKSwgMCkNCg0KICAgICAgICBTaG93V2luZG93KHNlbGYuaHdu
ZCwgU1dfU0hPVykNCiAgICAgICAgVXBkYXRlV2luZG93KHNlbGYuaHduZCkNCg0KICAgICAgICBF
bmFibGVXaW5kb3coc2VsZi5od25kRWRpdCwgMSkNCiAgICANCiAgICAgICAgU2V0Rm9jdXMoc2Vs
Zi5od25kRWRpdCkNCiAgICAgICAgU2V0Q3Vyc29yKExvYWRDdXJzb3IoMCwwKSkNCg0KICAgIGRl
ZiBUZXJtKHNlbGYpOg0KICAgICAgICB0cnk6DQogICAgICAgICAgICBQb3N0TWVzc2FnZShzZWxm
Lmh3bmQsIFdNX1FVSVQsIDAsIDApDQogICAgICAgIGV4Y2VwdDoNCiAgICAgICAgICAgIHBhc3MN
CiAgICAgICAgVW5yZWdpc3RlckNsYXNzKHNlbGYuY2xhc3NBdG9tLCBzZWxmLmhpbnN0KQ0KICAg
IA0KICAgIGRlZiBPbkVkaXRDaGFyKHNlbGYsaFduZCwgbXNnLCB3cGFyYW0sIGxwYXJhbSk6DQog
ICAgICAgIGlmIHNlbGYuYkludGVyYWN0IGFuZCB3cGFyYW09PTB4MEQ6ICMgcmV0dXJuIGtleQ0K
ICAgICAgICAgICAgdHJ5Og0KICAgICAgICAgICAgICAgIEhpZGVDYXJldChoV25kKTsNCiAgICAg
ICAgICAgIGV4Y2VwdDoNCiAgICAgICAgICAgICAgICBwYXNzDQogICAgICAgICAgICBjQ2hhcj1T
ZW5kTWVzc2FnZShoV25kLCBFTV9MSU5FSU5ERVgsIC0xKQ0KICAgICAgICAgICAgY0xpbmU9U2Vu
ZE1lc3NhZ2UoaFduZCwgRU1fTElORUZST01DSEFSLCBjQ2hhcikNCiAgICAgICAgICAgICMgRmlu
ZCB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrDQogICAgICAgICAgICBudW1MaW5lcyA9IFNlbmRNZXNz
YWdlKGhXbmQsIEVNX0dFVExJTkVDT1VOVCwgMCwgMCkNCiAgICAgICAgICAgICMgR2V0TGluZSBm
YWlscyBhcyB0aGUgc2l6ZSBpcyB3cm9uZz8/DQogICAgICAgICAgICBtYXhMaW5lU2l6ZT01MTIN
CiAgICAgICAgICAgIGJsb2NrU3RhcnQgPSAtMQ0KICAgICAgICAgICAgd2hpbGUgY0xpbmUgPj0g
MDoNCiAgICAgICAgICAgICAgICBsaW5lID0gc3RyKEVkaXRfR2V0TGluZShoV25kLCBjTGluZSwg
bWF4TGluZVNpemUpKQ0KICAgICAgICAgICAgICAgIGlmIGxpbmVbOjRdPT1zeXMucHMxOg0KICAg
ICAgICAgICAgICAgICAgICBibG9ja1N0YXJ0ID0gY0xpbmUNCiAgICAgICAgICAgICAgICAgICAg
YnJlYWsNCiAgICAgICAgICAgICAgICBlbGlmIGxpbmVbOjRdIT1zeXMucHMyOg0KICAgICAgICAg
ICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgIGNMaW5lID0gY0xpbmUgLTENCg0KICAg
ICAgICAgICAgaWYgYmxvY2tTdGFydD49MDoNCiAgICAgICAgICAgICAgICAjIEZpbmQgdGhlIGVu
ZCBvZiB0aGUgYmxvY2suDQogICAgICAgICAgICAgICAgd2hpbGUgMToNCiAgICAgICAgICAgICAg
ICAgICAgY0xpbmUgPSBjTGluZSArIDENCiAgICAgICAgICAgICAgICAgICAgbGluZSA9IHN0cihF
ZGl0X0dldExpbmUoaFduZCwgY0xpbmUsIG1heExpbmVTaXplKSkNCiAgICAgICAgICAgICAgICAg
ICAgaWYgbGluZSBpcyBOb25lIG9yIGxpbmVbOjRdIT1zeXMucHMyOg0KICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgICAgICBibG9ja0VuZCA9IGNMaW5lDQogICAgICAg
ICAgICAgICAgIyBibG9ja1N0YXJ0IGlzIHRoZSBmaXJzdCBsaW5lDQogICAgICAgICAgICAgICAg
IyBibG9ja0VuZCBpcyBvbmUgcGFzdCB0aGUgYmxvY2sgZW5kLg0KICAgICAgICAgICAgICAgIGZp
cnN0TGluZT1zdHIoRWRpdF9HZXRMaW5lKGhXbmQsIGJsb2NrU3RhcnQsIG1heExpbmVTaXplKSlb
bGVuKHN5cy5wczEpOl0NCiAgICAgICAgICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3IgYW4gZW1w
dHkgY29tbWFuZCAtIG1pbWljIFB5dGhvbiBiZXR0ZXIgYnkgd3JpdGluZyBhbm90aGVyICI+Pj4i
DQogICAgICAgICAgICAgICAgaWYgbGVuKGZpcnN0TGluZSk9PTAgYW5kIGJsb2NrU3RhcnQrMT09
YmxvY2tFbmQ6DQogICAgICAgICAgICAgICAgICAgICMgRW1wdHkgcHJvbXB0IC0gd3JpdGUgYSBu
ZXcgb25lLg0KICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJcbiIrc3lzLnBzMSkNCiAg
ICAgICAgICAgICAgICBlbHNlOg0KICAgICAgICAgICAgICAgICAgICBpdGVtcyA9IFtmaXJzdExp
bmVdDQogICAgICAgICAgICAgICAgICAgIGZvciBjTGluZSBpbiByYW5nZShibG9ja1N0YXJ0KzEs
IGJsb2NrRW5kKToNCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLmFwcGVuZCggc3RyKEVk
aXRfR2V0TGluZShoV25kLCBjTGluZSwgbWF4TGluZVNpemUpKVtsZW4oc3lzLnBzMik6XSApDQoN
CiAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGUgYmxvY2sgaXMgbm90IGF0IHRoZSBlbmQgb2Yg
dGhlIGNvbnRyb2wsIGNvcHkgaXQgdGhlcmUuLi4NCiAgICAgICAgICAgICAgICAgICAgaWYgYmxv
Y2tFbmQgIT0gbnVtTGluZXM6DQogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJc
biVzJXMiICUgKHN5cy5wczEsIGl0ZW1zWzBdKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciBpdGVtIGluIGl0ZW1zWzE6XToNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndy
aXRlKCJcbiVzJXMiICUgKHN5cy5wczIsIGl0ZW1zWzBdKSkNCiAgICAgICAgICAgICAgICAgICAg
ZWxzZToNCiAgICAgICAgICAgICAgICAgICAgICAgICMgUmVhZHkgdG8gZXhlY3V0ZS4NCiAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudEJsb2NrSXRlbXMgPSBpdGVtcw0KICAgICAg
ICAgICAgICAgICAgICAgICAgU2V0RXZlbnQoc2VsZi5ldmVudEludGVyYWN0aXZlSW5wdXRBdmFp
bGFibGUpDQoNCiAgICAgICAgICAgIGVsc2U6DQogICAgICAgICAgICAgICAgIyBOb3QgaW4gYSBi
bG9jayAtIHdyaXRlIGEgbmV3IHByb21wdC4NCiAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJc
biIrc3lzLnBzMSkNCg0KICAgICAgICAgICAgdHJ5Og0KICAgICAgICAgICAgICAgIFNob3dDYXJl
dChoV25kKQ0KICAgICAgICAgICAgZXhjZXB0Og0KICAgICAgICAgICAgICAgIHBhc3MNCiAgICAg
ICAgICAgIHJldHVybiAwDQoNCiAgICAgICAgcmV0dXJuIENhbGxXaW5kb3dQcm9jKHNlbGYub2xk
RWRpdFduZFByb2MsIGhXbmQsIG1zZywgd3BhcmFtLCBscGFyYW0pDQoNCiAgICBkZWYgb25QYXJl
bnRTZXR0aW5nQ2hhbmdlKHNlbGYsIGh3bmQsIG1zZywgd1BhcmFtLCBsUGFyYW0pOg0KICAgICAg
ICAiIiJzZXQgc2lwIiIiDQogICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCdwYXJlbnQgc2V0dGlu
ZyBjaGFuZ2Ugd1BhcmFtPScrc3RyKHdQYXJhbSkrJyA/ICcrc3RyKFNQSV9TRVRTSVBJTkZPKSsi
XHJcbiIpDQogICAgICAgIGlmIFNQSV9TRVRTSVBJTkZPID09IHdQYXJhbToNCiAgICAgICAgICAg
IHNhaSA9IFNIQUNUSVZBVEVJTkZPKCkNCiAgICAgICAgICAgIFNISGFuZGxlV01TZXR0aW5nQ2hh
bmdlKGh3bmQsd1BhcmFtLGxQYXJhbSxzYWkpDQogICAgICAgICAgICANCiAgICBkZWYgb25QYXJl
bnRBY3RpdmF0ZShzZWxmLCBod25kLCBtc2csIHdQYXJhbSwgbFBhcmFtKToNCiAgICAgICAgIiIi
bW9yZSBzaXAgc2V0dXAiIiINCiAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoJ3BhcmVudCBhY3Rp
dmF0ZSB3UGFyYW09JytzdHIod1BhcmFtKSsnID8gJytzdHIoU1BJX1NFVFNJUElORk8pKyJcclxu
IikNCiAgICAgICAgaWYgU1BJX1NFVFNJUElORk8gPT0gd1BhcmFtOg0KICAgICAgICAgICAgc2Fp
ID0gU0hBQ1RJVkFURUlORk8oKQ0KICAgICAgICAgICAgU0hIYW5kbGVXTUFjdGl2YXRlKGh3bmQs
d1BhcmFtLGxQYXJhbSxzYWksMCkNCiAgICANCiAgICBkZWYgb25QYXJlbnRDcmVhdGUoc2VsZiwg
aHduZCwgbXNnLCB3cGFyYW0sIGxwYXJhbSk6DQogICAgICAgICIiIkNyZWF0ZSB3aW5kb3cgIiIi
DQogICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCdXTV9DUkVBVEUnKQ0KICAgICAgICBpZiBpc1Bv
Y2tldFBDOg0KICAgICAgICAgICAgIyBzZXR1cCBQUEMgbWVudSBoZXJlDQogICAgICAgICAgICBz
aG1iID0gU0hNRU5VQkFSSU5GTygpDQogICAgICAgICAgICBzaG1iLmh3bmRQYXJlbnQgPSBzZWxm
Lmh3bmQNCiAgICAgICAgICAgIHNobWIublRvb2xCYXJJZCA9IDQwMA0KICAgICAgICAgICAgc2ht
Yi5oSW5zdFJlcyA9IHNlbGYuaGluc3QNCiAgICAgICAgICAgIGlmIFNIQ3JlYXRlTWVudUJhcihz
aG1iKToNCiAgICAgICAgICAgICAgICBzZWxmLmh3bmRNQiA9IHNobWIuaHduZE1CDQogICAgICAg
ICAgICBlbHNlOg0KICAgICAgICAgICAgICAgIE91dHB1dERlYnVnU3RyaW5nKCdpbml0IG1lbnUg
YmFyIGZhaWxlZCcpDQogICAgICAgICAgICAgICAgc2VsZi5od25kTUIgPSBOb25lDQoNCiAgICAg
ICAgDQogICAgZGVmIE9uUGFyZW50U2l6ZShzZWxmLCBod25kLCBtc2csIHdwYXJhbSwgbHBhcmFt
KToNCiAgICAgICAgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tID0gR2V0Q2xpZW50UmVjdChod25k
KQ0KICAgICAgICBpZiBub3QgaXNQb2NrZXRQQzoNCiAgICAgICAgICAgIHRyeToNCiAgICAgICAg
ICAgICAgICB0b3A9Q29tbWFuZEJhcl9IZWlnaHQoc2VsZi5oQ21kQmFyKTsNCiAgICAgICAgICAg
IGV4Y2VwdCBOYW1lRXJyb3I6ICMgT25seSBvbiBDRQ0KICAgICAgICAgICAgICAgIHBhc3MNCiAg
ICAgICAgaWYgc2VsZi5od25kRWRpdCBpcyBub3QgTm9uZToNCiAgICAgICAgICAgIFNldFdpbmRv
d1BvcyhzZWxmLmh3bmRFZGl0LCBIV05EX1RPUCwgbGVmdCwgdG9wLCByaWdodC1sZWZ0LCBib3R0
b20tdG9wLCAwKQ0KICAgICAgICAgICAgU2hvd1dpbmRvdyhzZWxmLmh3bmRFZGl0LCBTV19TSE9X
Tk9STUFMKQ0KDQogICAgZGVmIE9uUGFyZW50RGVzdHJveShzZWxmLCBod25kLCBtc2csIHdwYXJh
bSwgbHBhcmFtKToNCiAgICAgICAgUG9zdFF1aXRNZXNzYWdlKGh3bmQpDQogICAgICAgICMgQW5k
IHRlbGwgdGhlIHRocmVhZCB3YWl0aW5nIGZvciB1cyB3ZSBhcmUgZG9uZSENCiAgICAgICAgU2V0
RXZlbnQoc2VsZi5ldmVudENsb3NlZCkNCg0KICAgIGRlZiBPblBhcmVudFNldEZvY3VzKHNlbGYs
IGh3bmQsIG1zZywgd3BhcmFtLCBscGFyYW0pOg0KICAgICAgICBpZiBzZWxmLmh3bmRFZGl0IGlz
IG5vdCBOb25lOg0KICAgICAgICAgICAgU2V0Rm9jdXMoc2VsZi5od25kRWRpdCkNCiAgICANCiAg
ICBkZWYgT25QYXJlbnRVc2VyKHNlbGYsIGh3bmQsIG1zZywgd3BhcmFtLCBscGFyYW0pOg0KICAg
ICAgICAjIE91dCB3cml0ZSBmdW5jdGlvbiBwb3N0IHRoaXMgbWVzc2FnZS4NCiAgICAgICAgIyBX
ZSBkZXF1ZXVlIHRoZSBvdXRwdXQsIGFuZCB3cml0ZSB0aGUgdGV4dC4NCiAgICAgICAgd2hpbGUg
c2VsZi5vdXRwdXRRdWV1ZToNCiAgICAgICAgICAgIHNlbGYub3V0cHV0UXVldWVMb2NrLmFjcXVp
cmUoKQ0KICAgICAgICAgICAgdGV4dCA9IHN0cmluZy5qb2luKHNlbGYub3V0cHV0UXVldWUsICcn
KQ0KICAgICAgICAgICAgc2VsZi5vdXRwdXRRdWV1ZSA9IFtdDQogICAgICAgICAgICBzZWxmLm91
dHB1dFF1ZXVlTG9jay5yZWxlYXNlKCkNCiAgICAgICAgICAgIFNlbmRNZXNzYWdlKHNlbGYuaHdu
ZEVkaXQsIEVNX1NFVFNFTCwgLTIsIC0yKQ0KICAgICAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCB3
ZSB3b250IGZpbGwgdGhlIGNvbnRyb2wuDQogICAgICAgICAgICAjIElmIHNvLCByZW1vdmUgdGhl
IGZpcnN0IGxpbmVzIHVudGlsIHdlIGFyZSBPSy4NCiAgICAgICAgICAgIHNlbEluZm8gPSBTZW5k
TWVzc2FnZShzZWxmLmh3bmRFZGl0LCBFTV9HRVRTRUwsIDAsIDApDQogICAgICAgICAgICBlbmRQ
b3MgPSBISVdPUkQoc2VsSW5mbykNCiAgICAgICAgICAgIGxpbmVMb29rSW5kZXggPSAwDQogICAg
ICAgICAgICBsaW5lTG9va0xlbmd0aCA9IDANCiAgICAgICAgICAgIHdoaWxlIGVuZFBvcyArIGxl
bih0ZXh0KSAtIGxpbmVMb29rTGVuZ3RoID4gMjkwMDA6DQogICAgICAgICAgICAgICAgbGluZUxv
b2tJbmRleCA9IGxpbmVMb29rSW5kZXggKyAxDQogICAgICAgICAgICAgICAgbGluZUxvb2tMZW5n
dGggPSBTZW5kTWVzc2FnZShzZWxmLmh3bmRFZGl0LCBFTV9MSU5FSU5ERVgsIGxpbmVMb29rSW5k
ZXgsIDApDQogICAgICAgICAgICBpZiBsaW5lTG9va0luZGV4ID4gMDoNCiAgICAgICAgICAgICAg
ICAjIFRoZSBTRVRSRURSQVcgaGFzIG5vIGVmZmVjdCBvbiBDRS4gIElmIHdlIHJlYWxseSB3YW50
IHRoaXMNCiAgICAgICAgICAgICAgICAjIEkgdGhpbmsgd2UgbXVzdCByZXNwb25kIHRvIFdNX1BB
SU5ULCBhbmQgaWdub3JlIGl0IGZvciB0aGUgZHVyYXRpb24NCiAgICAgICAgICAgICAgICAjIHRo
ZSByZWRyYXcgaXMgdHVybmVkIG9mZi4NCiAgICAgICAgICAgICAgICBTZW5kTWVzc2FnZShzZWxm
Lmh3bmRFZGl0LCBXTV9TRVRSRURSQVcsIDAsIDApDQogICAgICAgICAgICAgICAgU2VuZE1lc3Nh
Z2Uoc2VsZi5od25kRWRpdCwgRU1fU0VUU0VMLCAwLCBsaW5lTG9va0xlbmd0aCkNCiAgICAgICAg
ICAgICAgICBTZW5kTWVzc2FnZShzZWxmLmh3bmRFZGl0LCBFTV9SRVBMQUNFU0VMLCAwLCBURVhU
KCIiKSkNCiAgICAgICAgICAgICAgICAjIEFuZCBiYWNrIHRvIHRoZSBlbmQuDQogICAgICAgICAg
ICAgICAgU2VuZE1lc3NhZ2Uoc2VsZi5od25kRWRpdCwgRU1fU0VUU0VMLCAtMiwgLTIpDQogICAg
ICAgICAgICAgICAgU2VuZE1lc3NhZ2Uoc2VsZi5od25kRWRpdCwgV01fU0VUUkVEUkFXLCAxLCAw
KQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgU2VuZE1lc3NhZ2Uoc2VsZi5od25kRWRp
dCwgRU1fUkVQTEFDRVNFTCwgMCwgVEVYVCh0ZXh0KSkNCg0KICAgIGRlZiBPblBhcmVudENvbW1h
bmQoc2VsZiwgaHduZCwgbXNnLCB3cGFyYW0sIGxwYXJhbSk6DQogICAgICAgIGNvbW1hbmQgPSBM
T1dPUkQod3BhcmFtKQ0KICAgICAgICBpZiBjb21tYW5kID09IElETV9FWElUOg0KICAgICAgICAg
ICAgRGVzdHJveVdpbmRvdyhod25kKTsNCiAgICAgICAgZWxpZiBjb21tYW5kID09IElETV9BQk9V
VDoNCiAgICAgICAgICAgIERpYWxvZ0JveChzZWxmLmhpbnN0LCBJRERfQUJPVVQsIGh3bmQsIEFi
b3V0Qm94RGxnUHJvYykNCiAgICAgICAgcmV0dXJuIDANCg0KZGVmIEFib3V0Qm94RGxnUHJvYyho
d25kLCBtc2csIHdwYXJhbSwgbHBhcmFtKToNCiAgICBpZiBtc2c9PVdNX0NPTU1BTkQ6DQogICAg
ICAgIHA9TE9XT1JEKHdwYXJhbSkNCiAgICAgICAgaWYgcD09SURPSyBvciBwPT1JRENBTkNFTDoN
CiAgICAgICAgICAgIEVuZERpYWxvZyhod25kLCAxKQ0KICAgICAgICByZXR1cm4gMQ0KICAgIGVs
aWYgbXNnPT1XTV9JTklURElBTE9HOg0KICAgICAgICBpZiBpc1BvY2tldFBDOg0KICAgICAgICAg
ICAgc2hpZGkgPSBTSElOSVRETEdJTkZPKCkNCiAgICAgICAgICAgIHNoaWRpLmR3TWFzayA9IFNI
SURJTV9GTEFHUw0KICAgICAgICAgICAgc2hpZGkuZHdGbGFncyA9IFNISURJRl9ET05FQlVUVE9O
IHwgU0hJRElGX1NJWkVETEdGVUxMU0NSRUVOIHwgU0hJRElGX1NJUERPV04NCiAgICAgICAgICAg
IHNoaWRpLmhEbGcgPSBod25kDQogICAgICAgICAgICBTSEluaXREaWFsb2coc2hpZGkpDQogICAg
ICAgIA0KICAgIHJldHVybiAwDQoNCmRlZiBJbnRlcmFjdChzaGVsbCk6DQogICAgc2hlbGwuYklu
dGVyYWN0ID0gMQ0KICAgIGxvY2FscyA9IHt9DQogICAgc3lzLnN0ZG91dC53cml0ZSgiUHl0aG9u
ICVzIG9uICVzXG4lcyIgJSAoc3lzLnZlcnNpb24sIHN5cy5wbGF0Zm9ybSwgc3lzLnBzMSkpDQog
ICAgDQogICAgd2hpbGUgMToNCiAgICAgICAgcmMgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKCAo
c2hlbGwuZXZlbnRJbnRlcmFjdGl2ZUlucHV0QXZhaWxhYmxlLCBzaGVsbC5ldmVudENsb3NlZCks
IDAsIElORklOSVRFKQ0KICAgICAgICBpZiByYyA9PSBXQUlUX09CSkVDVF8wOg0KICAgICAgICAg
ICAgY29kZVRleHQgPSBzdHJpbmcuam9pbihzaGVsbC5jdXJyZW50QmxvY2tJdGVtcywgJ1xuJykN
CiAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAgICAgICBjb2RlT2IgPSBjb2RlLmNvbXBpbGVf
Y29tbWFuZChjb2RlVGV4dCkNCiAgICAgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvcjoNCiAgICAg
ICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpDQogICAgICAgICAgICAgICAgbGlzdCA9
IHRyYWNlYmFjay5wcmludF9leGMoMCkNCiAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRl
KHN5cy5wczEpDQogICAgICAgICAgICAgICAgY29udGludWUNCiAgICAgICAgICAgIGV4Y2VwdDoN
CiAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkNCiAgICAgICAgICAgICAgICBj
b250aW51ZQ0KDQogICAgICAgICAgICBpZiBjb2RlT2IgaXMgTm9uZToNCiAgICAgICAgICAgICAg
ICBzeXMuc3Rkb3V0LndyaXRlKCJcbiVzIiAlIHN5cy5wczIpDQogICAgICAgICAgICAgICAgY29u
dGludWUNCiAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikNCg0KICAgICAgICAgICAg
U2V0Q3Vyc29yKExvYWRDdXJzb3IoMCwgSURDX1dBSVQpKQ0KICAgICAgICAgICAgdHJ5Og0KICAg
ICAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAgICAgICAgICAgZXhlYyBjb2RlT2IgaW4gbG9j
YWxzDQogICAgICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6DQogICAgICAgICAgICAgICAg
ICAgIHJhaXNlDQogICAgICAgICAgICAgICAgZXhjZXB0Og0KICAgICAgICAgICAgICAgICAgICBl
eGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrID0gc3lzLmV4Y19pbmZvKCkNCiAgICAg
ICAgICAgICAgICAgICAgbCA9IGxlbih0cmFjZWJhY2suZXh0cmFjdF90YihzeXMuZXhjX3RyYWNl
YmFjaykpDQogICAgICAgICAgICAgICAgICAgIHRyeTogMS8wDQogICAgICAgICAgICAgICAgICAg
IGV4Y2VwdDoNCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBsZW4odHJhY2ViYWNrLmV4dHJh
Y3RfdGIoc3lzLmV4Y190cmFjZWJhY2spKQ0KICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2su
cHJpbnRfZXhjZXB0aW9uKGV4Y190eXBlLA0KICAgICAgICAgICAgICAgICAgICAgICAgZXhjX3Zh
bHVlLCBleGNfdHJhY2ViYWNrLCBsLW0pDQogICAgICAgICAgICAgICAgICAgIGV4Y190cmFjZWJh
Y2sgPSBOb25lICMgUHJldmVudCBhIGN5Y2xlDQogICAgICAgICAgICBmaW5hbGx5Og0KICAgICAg
ICAgICAgICAgIFNldEN1cnNvcihMb2FkQ3Vyc29yKDAsIDApKQ0KICAgICAgICAgICAgICAgIA0K
ICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzeXMucHMxKQ0KICAgICAgICBlbHNlOg0KICAg
ICAgICAgICAgYnJlYWsNCg0KZGVmIFJ1bkNvZGUoc2hlbGwpOg0KICAgIHRyeToNCiAgICAgICAg
IyBjb3B5IHN5cy5hcmd2IGJlZm9yZSB3ZSBzdG9tcCBvbiBpdCENCiAgICAgICAgc3lzLmFwcGFy
Z3YgPSBzeXMuYXJndls6XQ0KICAgICAgICBiS2VlcE9wZW4gPSAwDQogICAgICAgIGJJbnRlcmFj
dCA9IDENCiAgICAgICAgY21kVG9FeGVjdXRlID0gTm9uZQ0KICAgICAgICAjIFByb2Nlc3Mgc3lz
LmFyZ3YsIHJlbW92aW5nIGFyZ3MgYXMgd2UgcHJvY2VzcyB0aGVtIHNvIGFueSBzY3JpcHRzDQog
ICAgICAgICMgc2VlIF90aGVpcl8gYXJndiENCiAgICAgICAgZGVsIHN5cy5hcmd2WzBdDQogICAg
ICAgICMgUmVtb3ZlIHNvbWUgcGFyYW1zIHRoZSBXQ0UgZGVidWdnZXIgc29tZXRpbWVzIGFkZHM6
DQogICAgICAgIHN5cy5hcmd2PWZpbHRlcihsYW1iZGEgYXJnOiBhcmdbOjRdIT0iL1dDRSIsIHN5
cy5hcmd2KQ0KICAgICAgICBpPTANCiAgICAgICAgd2hpbGUgaSA8IGxlbihzeXMuYXJndik6DQog
ICAgICAgICAgICBpZiBub3Qgc3lzLmFyZ3ZbaV0gb3Igc3lzLmFyZ3ZbaV1bMF0hPSctJzoNCiAg
ICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgaWYgc3lzLmFyZ3ZbaV09PSctaSc6DQog
ICAgICAgICAgICAgICAgYkludGVyYWN0ID0gMQ0KICAgICAgICAgICAgICAgIGRlbCBzeXMuYXJn
dltpXQ0KICAgICAgICAgICAgICAgIGNvbnRpbnVlDQogICAgICAgICAgICBlbGlmIHN5cy5hcmd2
W2ldPT0nLW8nIG9yIHN5cy5hcmd2W2ldPT0nLW9hJzoNCiAgICAgICAgICAgICAgICAjIGNvcHkg
b3V0cHV0IHRvIGZpbGUNCiAgICAgICAgICAgICAgICBpZiBzeXMuYXJndltpXSA9PSAiLW9hIjoN
CiAgICAgICAgICAgICAgICAgICAgc2hlbGwub3V0cHV0RmlsZSA9IG9wZW4oc3lzLmFyZ3ZbaSsx
XSwnYXQnKQ0KICAgICAgICAgICAgICAgIGVsc2U6DQogICAgICAgICAgICAgICAgICAgIHNoZWxs
Lm91dHB1dEZpbGUgPSBvcGVuKHN5cy5hcmd2W2krMV0sJ3d0JykNCiAgICAgICAgICAgICAgICBk
ZWwgc3lzLmFyZ3ZbaV0NCiAgICAgICAgICAgICAgICBkZWwgc3lzLmFyZ3ZbaV0NCiAgICAgICAg
ICAgICAgICBpID0gaSArIDENCiAgICAgICAgICAgIGVsaWYgc3lzLmFyZ3ZbaV09PSctYyc6DQog
ICAgICAgICAgICAgICAgY21kVG9FeGVjdXRlID0gc3RyaW5nLmpvaW4oc3lzLmFyZ3ZbaSsxOl0s
ICcgJykNCiAgICAgICAgICAgICAgICBzeXMuYXJndiA9IHN5cy5hcmd2WzppLTFdDQogICAgICAg
ICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgIGkgPSBpICsgMQ0KICAgICAgICANCiAgICAgICAg
aWYgbm90IHN5cy5hcmd2OiBzeXMuYXJndj1bJyddDQoNCiAgICAgICAgaWYgY21kVG9FeGVjdXRl
IGlzIG5vdCBOb25lOg0KICAgICAgICAgICAgdHJ5Og0KICAgICAgICAgICAgICAgIGV4ZWMgY21k
VG9FeGVjdXRlDQogICAgICAgICAgICBleGNlcHQ6DQogICAgICAgICAgICAgICAgdHJhY2ViYWNr
LnByaW50X2V4YygpDQogICAgICAgICAgICAgICAgYktlZXBPcGVuID0gMQ0KICAgICAgICBlbGlm
IGxlbihzeXMuYXJndik+MCBhbmQgc3lzLmFyZ3ZbMF06DQogICAgICAgICAgICAjIFNoaWZ0IHRo
ZSBhcmdzIGJhY2sgdG8gaXQgc2VlcyBpdHNlbGYgYXMgc3lzLmFyZ3ZbMF0NCiAgICAgICAgICAg
ICMgRXhlY3V0ZSB0aGUgbmFtZWQgc2NyaXB0DQogICAgICAgICAgICBmbmFtZSA9IHN5cy5hcmd2
WzBdDQogICAgICAgICAgICBzeXMucGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUoZm5hbWUpXSArIHN5
cy5wYXRoDQogICAgICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygnYXJndjAgJXNcbicgJSBzeXMu
YXJndlswXSkNCiAgICAgICAgICAgIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoZm5hbWUpWzFdDQog
ICAgICAgICAgICBpZiBleHQ9PScucHljJzoNCiAgICAgICAgICAgICAgICBtb2RlPSJyYiINCiAg
ICAgICAgICAgICAgICBpbXBfcGFyYW1zPSgicHljIiwgbW9kZSwgaW1wLlBZX0NPTVBJTEVEKQ0K
ICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICBtb2RlPSJyIg0KICAgICAgICAgICAg
ICAgIGltcF9wYXJhbXM9KCJweSIsIG1vZGUsIGltcC5QWV9TT1VSQ0UpDQoNCiAgICAgICAgICAg
IHRyeToNCiAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmbmFtZSwgbW9kZSkNCiAgICAgICAg
ICAgIGV4Y2VwdCBJT0Vycm9yLCAoY29kZSwgd2h5KToNCiAgICAgICAgICAgICAgICBwcmludCAi
cHl0aG9uOiBjYW4ndCBvcGVuICVzOiAlc1xuIiAlIChmbmFtZSwgd2h5KQ0KICAgICAgICAgICAg
ICAgIGJLZWVwT3BlbiA9IDENCiAgICAgICAgICAgICAgICBmaWxlID0gTm9uZQ0KICAgICAgICAg
ICAgaWYgZmlsZToNCiAgICAgICAgICAgICAgICB0cnk6DQogICAgICAgICAgICAgICAgICAgIHRy
eToNCiAgICAgICAgICAgICAgICAgICAgICAgIGltcC5sb2FkX21vZHVsZSgiX19tYWluX18iLCBm
aWxlLCBmbmFtZSwgaW1wX3BhcmFtcykNCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0Og0KICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpDQogICAgICAgICAgICAg
ICAgICAgICAgICBiS2VlcE9wZW4gPSAxDQogICAgICAgICAgICAgICAgZmluYWxseToNCiAgICAg
ICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpDQogICAgICAgIGVsc2U6DQogICAgICAgICAgICBi
SW50ZXJhY3QgPSAxDQogICAgICAgIA0KICAgICAgICBpZiBiSW50ZXJhY3Q6DQogICAgICAgICAg
ICB0cnk6DQogICAgICAgICAgICAgICAgSW50ZXJhY3Qoc2hlbGwpDQogICAgICAgICAgICBleGNl
cHQgU3lzdGVtRXhpdDoNCiAgICAgICAgICAgICAgICBiS2VlcE9wZW4gPSAwDQogICAgICAgICAg
ICBleGNlcHQ6DQogICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpDQogICAgICAg
ICAgICAgICAgYktlZXBPcGVuID0gMQ0KICAgIA0KICAgICAgICBpZiBub3QgYktlZXBPcGVuOg0K
ICAgICAgICAgICAgU2VuZE1lc3NhZ2Uoc2hlbGwuaHduZCwgV01fQ09NTUFORCwgSURNX0VYSVQs
IDApDQogICAgZXhjZXB0Og0KICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkNCg0KDQpkZWYg
bWFpbigpOg0KICAgICMgV2UgcnVuIHRoZSBzaGVsbCBpbiB0aGUgbWFpbiB0aHJlYWQsIHNvIHRo
YXQgd2hlbiBpdCB0ZXJtaW5hdGVzDQogICAgIyAoYWNjaWRlbnRseSBvciBvdGhlcndpc2UpIHRo
ZSBhcHBsaWNhdGlvbiB0ZXJtaW5hdGVzLg0KICAgICMgQSBzZXBlcmF0ZSB0aHJlYWQgaXMgdXNl
ZCB0byBleGVjdXRlIHRoZSBQeXRob24gY29kZS4NCg0KICAgICMgc2ltcGxlIHRlc3QgZm9yIG5v
dywgZ2V0IHNtYXJ0ZXIgbGF0ZXINCiAgICBnbG9iYWwgdGhlT3RoZXJXaW5kb3cNCiAgICBnbG9i
YWwgd2luTGlzdA0KICAgIHRoZU90aGVyV2luZG93ID0gTm9uZQ0KICAgIHdpbkxpc3QgPSBbXQ0K
DQogICAgZGVmIGVudW1Qcm9jKGh3bmQsbCk6DQogICAgICAgIGdsb2JhbCB0aGVPdGhlcldpbmRv
dw0KICAgICAgICBnbG9iYWwgd2luTGlzdA0KICAgICAgICB0ID0gR2V0V2luZG93VGV4dChod25k
KQ0KICAgICAgICB3aW5MaXN0LmFwcGVuZCh0KQ0KICAgICAgICBpZiB0ID09IG15V2luZG93VGl0
bGU6DQogICAgICAgICAgICB0aGVPdGhlcldpbmRvdyA9IGh3bmQNCiAgICAgICAgICAgIHJldHVy
biAwDQogICAgICAgIHJldHVybiAxDQogICAgICAgIA0KICAgIHRyeToNCiAgICAgICAgRW51bVdp
bmRvd3MoZW51bVByb2MsMCkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICBpZiB0aGVP
dGhlcldpbmRvdzoNCiAgICAgICAgU2V0Rm9yZWdyb3VuZFdpbmRvdyh0aGVPdGhlcldpbmRvdykN
CiAgICAgICAgcmV0dXJuIDANCiAgICAgICAgDQogICAgX19uYW1lX18gPSBzeXMuYXJndlswXQ0K
DQogICAgIyBNYWtlICJzaGVsbCIgZ2xvYmFsIGp1c3QgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcw0K
ICAgICMgaWUsIHNvIGludGVyYWN0aXZlIGNvZGUgY2FuIHNlZSBpdCB2aWEgX19tYWluX18uc2hl
bGwgKG9yICJjZXNoZWxsLnNoZWxsIiBvbiBDRSkNCiAgICBnbG9iYWwgc2hlbGwgDQogICAgc2hl
bGwgPSBTaW1wbGVTaGVsbCgpDQogICAgZ2xvYmFsIHNoZWxsVGhyZWFkSWQNCiAgICBzaGVsbFRo
cmVhZElkID0gdGhyZWFkLmdldF9pZGVudCgpDQogICAgIyBDcmVhdGUgdGhlIHdpbmRvd3MsIGJ1
dCBkb250IHN0YXJ0IHRoZSBtZXNzYWdlIGxvb3AgeWV0Lg0KICAgIHNoZWxsLkluaXQoKQ0KDQog
ICAgIyBDYW4gbm93IHdyaXRlIHRvIHRoZSBzaGVsbCAtIGFzc2lnbiB0aGUgc3RhbmRhcmQgZmls
ZXMuDQogICAgb2xkT3V0LCBvbGRFcnIgPSBzeXMuc3Rkb3V0LCBzeXMuc3RkZXJyDQogICAgc3lz
LnN0ZGVyciA9IHNoZWxsDQogICAgc3lzLnN0ZG91dCA9IHNoZWxsDQoNCiAgICAjIENyZWF0ZSB0
aGUgbmV3IHRocmVhZCB0byBleGVjdXRlIHRoZSBjb2RlLg0KICAgIHRocmVhZC5zdGFydF9uZXco
UnVuQ29kZSwgKHNoZWxsLCkgKQ0KICAgIA0KICAgICMgTm93IHJ1biB0aGUgc2hlbGwuDQogICAg
c2hlbGwuUnVuKCkNCiAgICANCiAgICBzaGVsbC5UZXJtKCkNCg0KICAgIHN5cy5zdGRvdXQgPSBv
bGRPdXQNCiAgICBzeXMuc3RkZXJyID0gb2xkRXJyDQoNCiMgT24gV2luZG93cywgcnVuIHRoaXMg
YXMgYSBzY3JpcHQuDQojIE9uIENFLCB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCBhbmQgbWFpbigp
IGV4ZWN1dGVkIGJ5DQojIHRoZSBzdGFydHVwIEMgY29kZS4NCmlmIF9fbmFtZV9fPT0nX19tYWlu
X18nOg0KICAgIG1haW4oKQ0K
----__JNP_000_2baa.1370.0780--


________________________________________________________________
GET INTERNET ACCESS FROM JUNO!
Juno offers FREE or PREMIUM Internet access for less!
Join Juno today!  For your FREE software, visit:
http://dl.www.juno.com/get/web/.