Again Win32 imread and imwrite fixes
"Rahman Mohamud Faisal MOORABY" <[email protected]> Sun, 18 Apr 2004 14:18:22 +0000
| Newsgroups | gmane.comp.gnu.octave.sources |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
------=_NextPart_000_3fc9_16ed_5b7d
Content-Type: text/plain; format=flowed
Paul
Sorry here are the files:
------------------------------------------------------------------------------------------------------------------------------------------
Paul Kienzel
I have managed to make the imread and imwrite M files. I keep it such that
it should still work with unix systems.
The pre-requisite is to set the isunix to false for win32 systems.
It was not working because octave uses the cygwin unix file tree system to
access files and ImageMagick convert utility uses the native win32 file tree
systems.
Also, i found that the following command adds a new line character at the
end of the string
fname= file_in_path(IMAGEPATH,filename);
Maybe this is for win32 systems alone.
Attached are the imread.m and imwrite.m files
Hope this helps.
Faisal Mooraby
_________________________________________________________________
Sign-up for a FREE BT Broadband connection today!
http://www.msn.co.uk/specials/btbroadband
------=_NextPart_000_3fc9_16ed_5b7d
Content-Type: application/octet-stream; name="imread.m"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="imread.m"
I0lNUkVBRDogcmVhZCBpbWFnZXMgaW50byBvY3RhdmUgZnJvbSB2YXJpb3Vz
IGZpbGUgZm9ybWF0cwojCiMgTm90ZTogdGhpcyByZXF1aXJlcyB0aGUgSW1h
Z2VNYWdpY2sgImNvbnZlcnQiIHV0aWxpdHkKIyAgICAgICBnZXQgdGhpcyBm
cm9tIHd3dy5pbWFnZW1hZ2ljay5vcmcgaWYgcmVxdWlyZWQKIyAgICAgICBh
ZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb2Ygb3B0aW9ucyBpcyBhdmFpbGFi
bGUgZnJvbSB0aGUKIyAgICAgICBjb252ZXJ0IG1hbiBwYWdlCiMKIyBCQVNJ
QyBVU0FHRToKIyBpbWcgICAgPSBpbXJlYWQoIGZuYW1lICkKIyAgICAgICAg
ICAgICAgICAgLSBpbWcgaXMgYSBncmV5c2NhbGUgKDAtMjU1KSBvZiBpbWFn
ZSBpbiBmbmFtZQojIFtpbSxtYXBdPWltcmVhZCggZm5hbWUgKQojICAgICAg
ICAgICAgICAgICAtIG1hcCBpcyBhIG1hdHJpeCBvZiBbcixnLGJdLCAwLTEg
dHJpcGxlcwojICAgICAgICAgICAgICAgICAtIGltZyBpcyBhIG1hdHJpeCBv
biBpbmRlY2VzIGludG8gbWFwCiMgW3IsZyxiXT0gaW1yZWFkKCBmbmFtZSAp
CiMgICAgICAgICAgICAgICAgIC0gcixnLGIgYXJlIHJlZCxncmVlbixibHVl
ICgwLTI1NSkgY29tcG9uZGVudHMKIwojIEZvcm1hdHMgZm9yIGltYWdlIGZu
YW1lCiMgICAxLiBzaW1wbGUgZ3Vlc3MgZnJvbSBleHRlbnRpb24gaWUgImZp
Zy5qcGciLCAiYmxhaC5naWYiCiMgICAyLiBzcGVjaWZ5IGV4cGxpY2l0bHkg
ICAgICAgICAgICAgImpwZzpmaWcuanBnIiwgImdpZjpibGFoLmdpZiIKIyAg
IDMuIHNwZWNpZnkgc3ViaW1hZ2UgZm9yIG11bHRpLWltYWdlIGZvcm1hdCAi
dGlmZjpmaWxlLnRpZlszXSIKIyAgIDQuIHJhdyBpbWFnZXMgKHJvdyBtYWpv
ciBmb3JtYXQpIHNwZWNpZnkgZ2VvbWV0cnkKIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInJhdzppbWdbMjU2eDE4MF0iCiMKIyBJ
TVJFQUQgT1BUSU9OUzoKIyBpbXJlYWQgd2lsbCBzdXBwb3J0IG1vc3Qgb2Yg
dGhlIG9wdGlvbnMgZm9yIGNvbnZlcnQuMQojCiMgaW1nICAgID0gaW1yZWFk
KCBmbmFtZSAsIG9wdGlvbnMpCiMgW3IsZyxiXT0gaW1yZWFkKCBmbmFtZSAs
IG9wdGlvbnMpCiMKIyB3aGVyZSBvcHRpb25zIGlzIGEgc3RyaW5nIG1hdHJp
eCAob3IgbGlzdCkgb2Ygb3B0aW9ucwojCiMgZXhhbXBsZTogICBvcHRpb25z
PSBbIi1yb3RhdGUgMjUiOwojICAgICAgICAgICAgICAgICAgICAgICItY3Jv
cCAyMDB4MjAwKzE1MCsxNTAiOwojICAgICAgICAgICAgICAgICAgICAgICIt
c2FtcGxlIDIwMCUiIF07CiMgICB3aWxsIHJvdGF0ZSwgY3JvcCwgYW5kIHRo
ZW4gZXhwYW5kIHRoZSBpbWFnZS4KIyAgIG5vdGUgdGhhdCB0aGUgb3JkZXIg
b2Ygb3BlcmF0aW9ucyBpcyBpbXBvcnRhbnQKIwojIFRoZSBmb2xsb3dpbmcg
b3B0aW9ucyBhcmUgc3VwcG9ydGVkCiMgIC1hbnRpYWxpYXMgICAgICAgICAg
IHJlbW92ZSBwaXhlbC1hbGlhc2luZwojICAtYmx1ciBnZW9tZXRyeSAgICAg
ICBibHVyIHRoZSBpbWFnZQojICAtYm9yZGVyIGdlb21ldHJ5ICAgICBzdXJy
b3VuZCBpbWFnZSB3aXRoIGEgYm9yZGVyIG9mIGNvbG9yCiMgIC1ib3JkZXJj
b2xvciBjb2xvciAgIGJvcmRlciBjb2xvcgojICAtY29sb3JzIHZhbHVlICAg
ICAgICBtYXhpbXVtIG51bWJlciBvZiBjb2xvcnMgaW4gdGhlIGltYWdlCiMg
IC1jb2xvcnNwYWNlIHR5cGUgICAgIGFsdGVybmF0ZSBpbWFnZSBjb2xvcnNw
YWNlCiMgIC1jb250cmFzdCAgICAgICAgICAgIGVuaGFuY2Ugb3IgcmVkdWNl
IHRoZSBpbWFnZSBjb250cmFzdAojICAtY3JvcCBnZW9tZXRyeSAgICAgICBw
cmVmZXJyZWQgc2l6ZSBhbmQgbG9jYXRpb24gb2YgdGhlIGNyb3BwZWQgaW1h
Z2UKIyAgLWRlc3BlY2tsZSAgICAgICAgICAgcmVkdWNlIHRoZSBzcGVja2xl
cyB3aXRoaW4gYW4gaW1hZ2UKIyAgLWRpdGhlciAgICAgICAgICAgICAgYXBw
bHkgRmxveWQvU3RlaW5iZXJnIGVycm9yIGRpZmZ1c2lvbiB0byBpbWFnZQoj
ICAtZHJhdyBzdHJpbmcgICAgICAgICBhbm5vdGF0ZSB0aGUgaW1hZ2Ugd2l0
aCBhIGdyYXBoaWMgcHJpbWl0aXZlCiMgIC1lZGdlIHJhZGl1cyAgICAgICAg
IGFwcGx5IGEgZmlsdGVyIHRvIGRldGVjdCBlZGdlcyBpbiB0aGUgaW1hZ2UK
IyAgLWVtYm9zcyByYWRpdXMgICAgICAgZW1ib3NzIGFuIGltYWdlCiMgIC1l
bmhhbmNlICAgICAgICAgICAgIGFwcGx5IGEgZGlnaXRhbCBmaWx0ZXIgdG8g
ZW5oYW5jZSBhIG5vaXN5IGltYWdlCiMgIC1lcXVhbGl6ZSAgICAgICAgICAg
IHBlcmZvcm0gaGlzdG9ncmFtIGVxdWFsaXphdGlvbiB0byBhbiBpbWFnZQoj
ICAtZmlsdGVyIHR5cGUgICAgICAgICB1c2UgdGhpcyBmaWx0ZXIgd2hlbiBy
ZXNpemluZyBhbiBpbWFnZQojICAtZmxpcCAgICAgICAgICAgICAgICBmbGlw
IGltYWdlIGluIHRoZSB2ZXJ0aWNhbCBkaXJlY3Rpb24KIyAgLWZsb3AgICAg
ICAgICAgICAgICAgZmxvcCBpbWFnZSBpbiB0aGUgaG9yaXpvbnRhbCBkaXJl
Y3Rpb24KIyAgLWZvbnQgbmFtZSAgICAgICAgICAgZm9udCBmb3IgcmVuZGVy
aW5nIHRleHQKIyAgLWZyYW1lIGdlb21ldHJ5ICAgICAgc3Vycm91bmQgaW1h
Z2Ugd2l0aCBhbiBvcm5hbWVudGFsIGJvcmRlcgojICAtZnV6eiBkaXN0YW5j
ZSAgICAgICBjb2xvcnMgd2l0aGluIHRoaXMgZGlzdGFuY2UgYXJlIGNvbnNp
ZGVyZWQgZXF1YWwKIyAgLWdhbW1hIHZhbHVlICAgICAgICAgbGV2ZWwgb2Yg
Z2FtbWEgY29ycmVjdGlvbgojICAtZ2VvbWV0cnkgZ2VvbWV0cnkgICBwZXJm
ZXJyZWQgc2l6ZSBvciBsb2NhdGlvbiBvZiB0aGUgaW1hZ2UKIyAgLWdhdXNz
aWFuIGdlb21ldHJ5ICAgZ2F1c3NpYW4gYmx1ciBhbiBpbWFnZQojICAtZ3Jh
dml0eSB0eXBlICAgICAgICB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCB0ZXh0
IHBsYWNlbWVudAojICAtaW1wbG9kZSBhbW91bnQgICAgICBpbXBsb2RlIGlt
YWdlIHBpeGVscyBhYm91dCB0aGUgY2VudGVyCiMgIC1pbnRlbnQgdHlwZSAg
ICAgICAgIEFic29sdXRlLCBQZXJjZXB0dWFsLCBSZWxhdGl2ZSwgb3IgU2F0
dXJhdGlvbgojICAtaW50ZXJsYWNlIHR5cGUgICAgICBOb25lLCBMaW5lLCBQ
bGFuZSwgb3IgUGFydGl0aW9uCiMgIC1sZXZlbCB2YWx1ZSAgICAgICAgIGFk
anVzdCB0aGUgbGV2ZWwgb2YgaW1hZ2UgY29udHJhc3QKIyAgLW1hcCBmaWxl
bmFtZSAgICAgICAgdHJhbnNmb3JtIGltYWdlIGNvbG9ycyB0byBtYXRjaCB0
aGlzIHNldCBvZiBjb2xvcnMKIyAgLW1lZGlhbiByYWRpdXMgICAgICAgYXBw
bHkgYSBtZWRpYW4gZmlsdGVyIHRvIHRoZSBpbWFnZQojICAtbW9kdWxhdGUg
dmFsdWUgICAgICB2YXJ5IHRoZSBicmlnaHRuZXNzLCBzYXR1cmF0aW9uLCBh
bmQgaHVlCiMgIC1tb25vY2hyb21lICAgICAgICAgIHRyYW5zZm9ybSBpbWFn
ZSB0byBibGFjayBhbmQgd2hpdGUKIyAgLW1vc2FpYyAgICAgICAgICAgICAg
Y3JlYXRlIGFuIG1vc2FpYyBmcm9tIGFuIGltYWdlIHNlcXVlbmNlCiMgIC1u
ZWdhdGUgICAgICAgICAgICAgIHJlcGxhY2UgZXZlcnkgcGl4ZWwgd2l0aCBp
dHMgY29tcGxlbWVudGFyeSBjb2xvcgojICAtbm9pc2UgcmFkaXVzICAgICAg
ICBhZGQgb3IgcmVkdWNlIG5vaXNlIGluIGFuIGltYWdlCiMgIC1ub3JtYWxp
emUgICAgICAgICAgIHRyYW5zZm9ybSBpbWFnZSB0byBzcGFuIHRoZSBmdWxs
IHJhbmdlIG9mIGNvbG9ycwojICAtcGFpbnQgcmFkaXVzICAgICAgICBzaW11
bGF0ZSBhbiBvaWwgcGFpbnRpbmcKIyAgLXJhaXNlIHZhbHVlICAgICAgICAg
bGlnaHRlbi9kYXJrZW4gaW1hZ2UgZWRnZXMgdG8gY3JlYXRlIGEgMy1EIGVm
ZmVjdAojICAtcmVnaW9uIGdlb21ldHJ5ICAgICBhcHBseSBvcHRpb25zIHRv
IGEgcG9ydGlvbiBvZiB0aGUgaW1hZ2UKIyAgLXJvbGwgZ2VvbWV0cnkgICAg
ICAgcm9sbCBhbiBpbWFnZSB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseQoj
ICAtcm90YXRlIGRlZ3JlZXMgICAgICBhcHBseSBQYWV0aCByb3RhdGlvbiB0
byB0aGUgaW1hZ2UKIyAgLXNhbXBsZSBnZW9tZXRyeSAgICAgc2NhbGUgaW1h
Z2Ugd2l0aCBwaXhlbCBzYW1wbGluZwojICAtc2NhbGUgZ2VvbWV0cnkgICAg
ICByZXNpemUgaW1hZ2UKIyAgLXNjZW5lIHZhbHVlICAgICAgICAgaW1hZ2Ug
c2NlbmUgbnVtYmVyCiMgIC1zZWdtZW50IHZhbHVlcyAgICAgIHNlZ21lbnQg
YW4gaW1hZ2UKIyAgLXNlZWQgdmFsdWUgICAgICAgICAgcHNldWRvLXJhbmRv
bSBudW1iZXIgZ2VuZXJhdG9yIHNlZWQgdmFsdWUKIyAgLXNoYWRlIGRlZ3Jl
ZXMgICAgICAgc2hhZGUgdGhlIGltYWdlIHVzaW5nIGEgZGlzdGFudCBsaWdo
dCBzb3VyY2UKIyAgLXNoYXJwZW4gZ2VvbWV0cnkgICAgc2hhcnBlbiB0aGUg
aW1hZ2UKIyAgLXNoYXZlIGdlb21ldHJ5ICAgICAgc2hhdmUgcGl4ZWxzIGZy
b20gdGhlIGltYWdlIGVkZ2VzCiMgIC1zaGVhciBnZW9tZXRyeSAgICAgIHNs
aWRlIG9uZSBlZGdlIG9mIHRoZSBpbWFnZSBhbG9uZyB0aGUgWCBvciBZIGF4
aXMKIyAgLXNpemUgZ2VvbWV0cnkgICAgICAgd2lkdGggYW5kIGhlaWdodCBv
ZiBpbWFnZQojICAtc29sYXJpemUgdGhyZXNob2xkICBuZWdhdGUgYWxsIHBp
eGVscyBhYm92ZSB0aGUgdGhyZXNob2xkIGxldmVsCiMgIC1zcHJlYWQgYW1v
dW50ICAgICAgIGRpc3BsYWNlIGltYWdlIHBpeGVscyBieSBhIHJhbmRvbSBh
bW91bnQKIyAgLXN3aXJsIGRlZ3JlZXMgICAgICAgc3dpcmwgaW1hZ2UgcGl4
ZWxzIGFib3V0IHRoZSBjZW50ZXIKIyAgLXRleHR1cmUgZmlsZW5hbWUgICAg
bmFtZSBvZiB0ZXh0dXJlIHRvIHRpbGUgb250byB0aGUgaW1hZ2UgYmFja2dy
b3VuZAojICAtdGhyZXNob2xkIHZhbHVlICAgICB0aHJlc2hvbGQgdGhlIGlt
YWdlCiMgIC10cmFuc3BhcmVudCBjb2xvciAgIG1ha2UgdGhpcyBjb2xvciB0
cmFuc3BhcmVudCB3aXRoaW4gdGhlIGltYWdlCiMgIC10cmVlZGVwdGggdmFs
dWUgICAgIGRlcHRoIG9mIHRoZSBjb2xvciB0cmVlCiMgIC10eXBlIHR5cGUg
ICAgICAgICAgIGltYWdlIHR5cGUKIyAgLXVuc2hhcnAgZ2VvbWV0cnkgICAg
c2hhcnBlbiB0aGUgaW1hZ2UKIyAgLXdhdmUgZ2VvbWV0cnkgICAgICAgYWx0
ZXIgYW4gaW1hZ2UgYWxvbmcgYSBzaW5lIHdhdmUKCiMgQXV0aG9yOiBBbmR5
IEFkbGVyCgpmdW5jdGlvbiBbb3V0MSxvdXQyLG91dDNdPSBpbXJlYWQoZmls
ZW5hbWUsIG9wdGlvbnMgKTsKCnRyeSBzYXZlX2VtcHR5X2xpc3RfZWxlbWVu
dHNfb2s9IGVtcHR5X2xpc3RfZWxlbWVudHNfb2s7CmNhdGNoIHNhdmVfZW1w
dHlfbGlzdF9lbGVtZW50c19vaz0gMDsKZW5kCnRyeSBzYXZlX3dhcm5fZW1w
dHlfbGlzdF9lbGVtZW50cz0gd2Fybl9lbXB0eV9saXN0X2VsZW1lbnRzOwpj
YXRjaCBzYXZlX3dhcm5fZW1wdHlfbGlzdF9lbGVtZW50cz0gMDsKZW5kCnVu
d2luZF9wcm90ZWN0CmVtcHR5X2xpc3RfZWxlbWVudHNfb2s9IDE7Cndhcm5f
ZW1wdHlfbGlzdF9lbGVtZW50cz0gMDsKCmlmIChuYXJnaW4gPT0gMCkKICB1
c2FnZSAoWyJpbWcgICAgPSAgaW1yZWFkIChmaWxlbmFtZSxvcHRpb25zKVxu
IiwgLi4uCiAgICAgICAgICAiW3IsZyxiXT0gIGltcmVhZCAoZmlsZW5hbWUs
b3B0aW9ucylcbiIsIC4uLgogICAgICAgICAgIltpbWcsbWFwXT1pbXJlYWQg
KGZpbGVuYW1lLG9wdGlvbnMpIiBdKTsKZWxzZWlmICghIGlzc3RyIChmaWxl
bmFtZSkpCiAgZXJyb3IgKCJpbXJlYWQ6IGV4cGVjdGluZyBmaWxlbmFtZSBh
cyBhIHN0cmluZyIpOwplbmRpZgoKaWYgYW55KGZpbGVuYW1lPT0nOicpIHx8
IGFueShmaWxlbmFtZT09J1snKQogICAjIHdlJ3ZlIHVzaW5nIHNwZWNpYWwg
aW1hZ2VtYWdpY2sgY2hhcmFjdGVycywgc28gd2UgZG9uJ3QKICAgIyBkbyBh
bnkgb2N0YXZlIHBhdGggcHJvY2Vzc2luZwogICBmbmFtZT0gZmlsZW5hbWU7
CmVsc2UKICAgZm5hbWU9IGZpbGVfaW5fcGF0aChJTUFHRVBBVEgsZmlsZW5h
bWUpOwogICBpZiBpc2VtcHR5KGZuYW1lKQogICAgICBlcnJvcihbJ2ltcmVh
ZDogZmlsZSAnIGZpbGVuYW1lICcgbm90IGZvdW5kJ10pOwogICBlbmQKZW5k
CgojIFB1dCB0b2dldGhlciB0aGUgb3B0aW9ucyBzdHJpbmcKIyBUT0RPOiBh
ZGQgc29tZSBlcnJvciBjaGVja2luZyBoZXJlCmlmIG5hcmdpbj09MQogICBv
cHRpb25fc3RyPSIiOwplbHNlCiAgIG9wdGlvbl9zdHI9IiI7CiAgIGlmICAg
ICAoIGlzX2xpc3QoIG9wdGlvbnMgKSApCiAgICAgIGZvciBpPSAxOmxlbmd0
aChvcHRpb25zKQogICAgICAgICBvcHRpb25fc3RyPVtvcHRpb25fc3RyLCIg
IiwgbnRoKG9wdGlvbnMsaSkgXTsKICAgICAgZW5kCiAgIGVsc2VpZiAoIGlz
c3RyKCBvcHRpb25zICkgKQogICAgICBmb3IgaT0gMTpzaXplKG9wdGlvbnMs
MSkKICAgICAgICAgb3B0aW9uX3N0cj1bb3B0aW9uX3N0ciwiICIsIG9wdGlv
bnMoaSw6KSBdOwogICAgICBlbmQKICAgZWxzZQogICAgIGVycm9yICgiaW1y
ZWFkOiBleHBlY3Rpbmcgb3B0aW9ucyBhcyBhIHN0cmluZyIpOwogICBlbmQK
ZW5kCiMKIyBkZWNvZGUgdGhlIG5hcmdvdXQgdG8gb3V0cHV0IHdoYXQgdGhl
IHVzZXIgd2FudHMKIwppZiAgICAgbmFyZ291dD09MzsKICAgIHdhbnRncmV5
c2NhbGU9IDA7CiAgICB3YW50bWFwPSAwOwogICAgb3V0cHV0dHlwZT0icHBt
IjsKZWxzZWlmIG5hcmdvdXQ9PTI7CiAgICB3YW50Z3JleXNjYWxlPSAwOyB3
YW50bWFwPSAxOwogICAgb3V0cHV0dHlwZT0icHBtIjsKZWxzZQogICAgd2Fu
dGdyZXlzY2FsZT0gMTsgd2FudG1hcD0gMDsKICAgIG91dHB1dHR5cGU9InBn
bSI7CmVuZAoKIyAgcG5hbWU9IHNwcmludGYoImNvbnZlcnQgJXMgJyVzJyAl
czotIDI+L2Rldi9udWxsIiwKIyAgcG5hbWU9IHNwcmludGYoImNvbnZlcnQg
JXMgJyVzJyAlczotICIsCiMgICAgICAgICAgICAgICAgIG9wdGlvbl9zdHIs
IGZuYW1lLCBvdXRwdXR0eXBlKTsKIyAgZmlkPSBwb3BlbihwbmFtZSAsJ3In
KTsKIyAgZGlzcChwbmFtZSk7IGRpc3AoZmlkKTsKCiAgICMgY3JlYXRlIHRl
bXBvcmFyeSBmaWxlIG5hbWUKICAgdG5hbT0gdG1wbmFtKCk7CiAgIAogICBp
ZiAoaXN1bml4KTsKICAgICAgICBwcmludGYoIllvdSBhcmUgcnVubmluZyB0
aGUgVU4qWCB2ZXJzaW9uIG9mIEltUmVhZFxuIik7CiAgIAljbWQ9IHNwcmlu
dGYoImNvbnZlcnQgJXMgJyVzJyAlczolcyAyPi9kZXYvbnVsbCAiLAogICAg
ICAgICAgICAgICAgICBvcHRpb25fc3RyLCBmbmFtZSwgb3V0cHV0dHlwZSwg
dG5hbSk7CiAgIAogICBlbHNlCiAgIAlwcmludGYoIllvdSBhcmUgcnVubmlu
ZyB0aGUgV2lOZE9XeiB2ZXJzaW9uIG9mIEltUmVhZFxuIik7CiAgIAkKICAg
CSMgY29udmVydCBpbnB1dCBmaWxlIHBhdGggaW50byB3aW5kb3d6IGZvcm1h
dAoJZm5hbWU9c3ByaW50ZigiY3lncGF0aCAtdyAlcyIsIGZuYW1lKTsgCglm
bmFtZT1zeXN0ZW0oZm5hbWUpOwoJCgkjIGNoYW5nZSB0aGUgJ1wnIHN0cm9r
ZXMgdG8gJy8nIGluIHRoZSBwYXRoIG5hbWUgdG8gcHJldmVudCBzdHJpbmcg
Y29uZmxpY3RzCglmb3IgaT0xOmxlbmd0aChmbmFtZSkKCQkJaWYgZm5hbWUo
aSk9PSdcXCc7CgkJCQlmbmFtZShpKT0nLyc7CgkJCWVuZAoJZW5kCgkKCSMg
dGhpcyByb3V0aW5lIGJlY2F1c2UgYSBuZXdsaW5lIGNoYXJhY3RlciBpcyBh
ZGRlZCBpbnRvIGZuYW1lIChtYXliZSBidWcgaW4gdGhlICJmaWxlX2luX3Bh
dGgiIGZ1bmN0aW9uIDxzZWUgbGluZSAxMjM+LiAgVGhpcyBoYXMgdG8gYmUg
cmVtb3ZlZC4gCglpZiBkb3VibGUoZm5hbWUobGVuZ3RoKGZuYW1lKSkpID4x
MjIgfHwgZG91YmxlKGZuYW1lKGxlbmd0aChmbmFtZSkpKSA8NjU7IAoJCWZu
YW1lPWZuYW1lKDE6bGVuZ3RoKGZuYW1lKS0xKTsKCWVuZAoKCSMgY3JlYXRl
IHRoZSBjb21tYW5kIHN0cmluZwogICAgICAgIGNtZD0gc3ByaW50ZigiY29u
dmVydCAlcyAiIiVzIiIgJXM6IiIlcyIiIixvcHRpb25fc3RyLGZuYW1lLG91
dHB1dHR5cGUsdG5hbSk7CgogICAgICAgICMgY29tbWFuZCBzdHJpbmcgY29u
dmVydCB0aGUgaW5wdXQgZmlsZSBuYW1lIHBhdGggYmFjayB0byBVTipYIGZv
cm0KICAgICAgICBmbmFtZT1zcHJpbnRmKCJjeWdwYXRoIC11ICIiJXMiIiIs
IGZuYW1lKTsgCgkKCSMgQWdhaW4gY29udmVydCB0aGUgJ1wnIHN0cm9rZXMg
dG8gJy8nIHRvIHByZXZlbnQgY29uZmxpY3RzCglmb3IgaT0xOmxlbmd0aCh0
bmFtKQoJCWlmIHRuYW0oaSk9PSdcXCc7CgkJCXRuYW0oaSk9Jy8nOwoJCWVu
ZAoJZW5kCgkKCSMgZG8gc2FtZSBmb3IgdGhlIHRlbXAgZmlsZSBuYW1lIGNy
ZWF0ZWQKCWZvciBpPTE6bGVuZ3RoKHRuYW0pCgkJCWlmIHRuYW0oaSk9PSdc
XCc7CgkJCQl0bmFtKGkpPScvJzsKCQkJZW5kCgllbmQKCQoJIyBleGVjdXRl
IGNvbW1hbmQgc3RyaW5nIHRvIGNoYW5nZSBmaWxlbmFtZSB0byBVTipYIGZv
cm1hdAoJZm5hbWU9c3lzdGVtKGZuYW1lKTsKCQoJIyBjcmVhdGUgY29tbWFu
ZCBzdHJpbmcgdG8gY29udmVydCB0ZW1wb3JhcnkgZmlsZSBuYW1lIHBhdGgg
dG8gdW5peCBmb3JtYXQKCWlmIHRuYW0oMik9PSc6JzsKCQl0bmFtKDIpPXRu
YW0oMSk7CgkJdG5hbSgxKT0nLyc7CgkJdG5hbT1zcHJpbnRmKCIvY3lnZHJp
dmUlcyIsdG5hbSk7CgllbmQJCgkKICAgZW5kCSAgICAgICAgICAgIAogICAK
ICAgc3lzdGVtKGNtZCk7CiAgIGZpZD0gZm9wZW4odG5hbSwicmIiKTsKIwoj
IGNhbiB3ZSBvcGVuIHRoZSBwaXBlPwojIGlmIG5vdCAxKSBUaGUgZmlsZSBm
b3JtYXQgaXMgd3JvbmcgYW5kIHRoZSBjb252ZXIgcHJvZ3JhbSBoYXMgYmFp
bGVkIG91dAojICAgICAgICAyKSBUaGUgYXByb3ByaWF0ZSBjb252ZXJ0ZXIg
cHJvZ3JhbSBoYXNuJ3QgYmVlbiBpbnN0YWxsZWQKIwogICBpZiBmaWQ8MDsK
ICAgICAgdW5saW5rKHRuYW0pOwogICAgICBlcnJvcihbJ2NvdWxkIG5vdCBy
ZWFkIGZpbGU6ICcgdG5hbV0pOwogICBlbmQKCiMgZ2V0IGZpbGUgdHlwZQog
ICBsaW5lPSBmZ2V0bCggZmlkICk7CiAgIGlmICAgICBzdHJjbXAobGluZSwg
J1AxJyk7ICAgYnBwPTE7IHNwcD0xOyBiaW5kYXRhPTA7CiAgIGVsc2VpZiBz
dHJjbXAobGluZSwgJ1A0Jyk7ICAgYnBwPTE7IHNwcD0xOyBiaW5kYXRhPTE7
CiAgIGVsc2VpZiBzdHJjbXAobGluZSwgJ1AyJyk7ICAgYnBwPTg7IHNwcD0x
OyBiaW5kYXRhPTA7CiAgIGVsc2VpZiBzdHJjbXAobGluZSwgJ1A1Jyk7ICAg
YnBwPTg7IHNwcD0xOyBiaW5kYXRhPTE7CiAgIGVsc2VpZiBzdHJjbXAobGlu
ZSwgJ1AzJyk7ICAgYnBwPTg7IHNwcD0zOyBiaW5kYXRhPTA7CiAgIGVsc2Vp
ZiBzdHJjbXAobGluZSwgJ1A2Jyk7ICAgYnBwPTg7IHNwcD0zOyBiaW5kYXRh
PTE7CiAgIGVsc2UKIyAgICAgcGNsb3NlKGZpZCk7CiAgICAgIGZjbG9zZShm
aWQpOyB1bmxpbmsodG5hbSk7CiAgICAgIGVycm9yKFsnSW1hZ2UgZm9ybWF0
IGVycm9yIGZvciAnLGZuYW1lLCc6bGluZT0nLCBzZXRzdHIobGluZSldKTsK
ICAgZW5kCgojIGlnbm9yZSBjb21tZW50cwogICBsaW5lPSBmZ2V0bCggZmlk
ICk7CiAgIHdoaWxlIGxlbmd0aChsaW5lKT09MCB8fCBsaW5lKDEpPT0nIycK
ICAgICAgbGluZT0gZmdldGwoIGZpZCApOwogICBlbmQKCiMgZ2V0IHdpZHRo
LCBoZWlnaHQKICAgW3dpZCwgaGlnXT0gc3NjYW5mKCBsaW5lLCAnJWQgJWQn
LCAnQycgKTsKCiMgZ2V0IG1heCBjb21wb25lbnQgdmFsdWUKICAgaWYgYnBw
PT04CiAgICAgbWF4X2NvbXBvbmVudD0gc3NjYW5mKCBmZ2V0bChmaWQpLCAn
JWQnICk7CiAgICAgaWYgKG1heF9jb21wb25lbnQgPiAyNTUpCiAgICAgICAj
IFRoZSBQR00gc3RhbmRhcmQgc3VwcG9ydHMgb25seSB2YWx1ZXMgYmVsb3cg
NjU1MzYKICAgICAgIGJwcCA9IDE2OwogICAgIGVuZGlmCiAgIGVuZAoKICAg
aWYgYmluZGF0YQogICAgICBpZihicHAgPT0gMTYpCiAgICAgICAgICMgUEdN
IGZvcm1hdCBoYXMgTVNCIGZpcnN0LCBpLmUuIGJpZyBlbmRpYW4KICAgICAg
ICAgZGF0YSA9IGZyZWFkKGZpZCwgInVpbnQxNiIsIDAsICJpZWVlLWJlIik7
CiAgICAgIGVsc2UKICAgICAgICAgZGF0YSA9IGZyZWFkKGZpZCk7CiAgICAg
IGVuZGlmCiAgICAgIG51bWRhdGE9IHNpemUoZGF0YSwxKTsKCiAgICAgIGlm
IGJwcD09MQogICAgICAgICBkYXRhPSByZW0oIGZsb29yKCAoZGF0YSpvbmVz
KDEsOCkpIC4vIC4uLgogICAgICAgICAgICAgICAgIChvbmVzKGxlbmd0aChk
YXRhKSwxKSpbMTI4IDY0IDMyIDE2IDggNCAyIDFdKSApLCAyKSc7CiAgICAg
IGVuZAogICBlbHNlCiAgICAgIG51bWRhdGE9IHdpZCpoaWcqc3BwOwogICAg
ICBkYXRhPSB6ZXJvcyggbnVtZGF0YSwxICk7CiAgICAgIGRwdHI9IDE7Cgog
ICAgICAgICBsaW5lPSBmZ2V0bCggZmlkICk7CiAgICAgIHdoaWxlICFmZW9m
KCBmaWQpCiAgICAgICAgIHJkYXRhPSBzc2NhbmYoIGxpbmUgLCcgJWQnKTsK
ICAgICAgICAgbnB0cj0gZHB0ciArIHNpemUocmRhdGEsMSk7CiAgICAgICAg
IGRhdGEoIGRwdHI6bnB0ci0xICkgPSByZGF0YTsKICAgICAgICAgZHB0cj0g
bnB0cjsKICAgICAgICAgbGluZT0gZmdldGwoIGZpZCApOwogICAgICBlbmQg
IyBmZW9mCiAgIGVuZCAjaWYgYmluZGF0YQoKIyAgcGNsb3NlKGZpZCk7CiAg
IGZjbG9zZShmaWQpOyB1bmxpbmsodG5hbSk7CgogICBpZiBzcHA9PTEKICAg
ICAgZ3JleWltZz0gcmVzaGFwZSggZGF0YSg6KSwgd2lkLCBoaWcgKSc7CiAg
IGVsc2VpZiBzcHA9PTMKICAgICAgcmVkaW1nPSByZXNoYXBlKCBkYXRhKDE6
c3BwOm51bWRhdGEpLCB3aWQsIGhpZyApJzsKICAgICAgZ3JuaW1nPSByZXNo
YXBlKCBkYXRhKDI6c3BwOm51bWRhdGEpLCB3aWQsIGhpZyApJzsKICAgICAg
Ymx1aW1nPSByZXNoYXBlKCBkYXRhKDM6c3BwOm51bWRhdGEpLCB3aWQsIGhp
ZyApJzsKICAgZWxzZQogICAgICBlcnJvcihzcHJpbnRmKCJpbXJlYWQ6IGRv
bid0IGtub3cgaG93IHRvIGhhbmRsZSBwbm0gd2l0aCBzcHA9JWQiLHNwcCkp
OwogICBlbmQKCgojICAgVGhpcyBzZWN0aW9uIG91dHB1dHMgdGhlIGltYWdl
IGluIHRoZSBkZXNpcmVkIG91dHB1dCBmb3JtYXQKIyBpZiB0aGUgdXNlciBy
ZXF1ZXN0ZWQgdGhlIGNvbG91ciBtYXAsIHRoZSB3ZSByZWdlbmVyYXRlIGl0
IGZyb20KIyB0aGUgaW1hZ2UuCiMKIyAgIE9mIGNvdXJzZSwgMSkgVGhpcyBt
YXkgcmVzdWx0IGluIGh1Z2UgY29sb3VybWFwcwojICAgICAgICAgICAgICAy
KSBUaGUgY29sb3VybWFwIHdpbGwgbm90IGJlIGluIHRoZSBzYW1lIG9yZGVy
IGFzCiMgICAgICAgICAgICAgICAgICAgaW4gdGhlIG9yaWdpbmFsIGZpbGUK
CmlmIHdhbnRncmV5c2NhbGUKCiAgIGlmIGV4aXN0KCdncmV5aW1nJykKICAg
ICAgb3V0MT0gZ3JleWltZzsKICAgZWxzZWlmIGV4aXN0KCdpZHhpbWcnKQog
ICAgICBncmV5bWFwPSBtZWFuKG1hcCcpJzsKICAgICAgb3V0MT0gcmVzaGFw
ZSggZ3JleW1hcCggaWR4aW1nICkgLCBzaXplKGlkeGltZywxKSwgc2l6ZShp
ZHhpbWcsMikgKTsKICAgZWxzZQogICAgICBvdXQxPSAoIHJlZGltZytncm5p
bWcrYmx1aW1nICkgLyAzIDsKICAgZW5kCgplbHNlaWYgd2FudG1hcAoKICAg
aWYgZXhpc3QoJ2lkeGltZycpCiAgICAgIG91dDE9IGlkeGltZzsKICAgICAg
b3V0Mj0gbWFwOwogICBlbHNlaWYgZXhpc3QoJ2dyZXlpbWcnKQogICAgICBb
c2ltZywgc2lkeF0gPSBzb3J0KCBncmV5aW1nKDopICk7CiAgICAgIFtqbmt2
YWwsIHNpZHhdID0gc29ydCggc2lkeCApOwoKICAgICAgZGltZz0gWzE7IGRp
ZmYoc2ltZyk+MCBdOwogICAgICBjaW1nPSBjdW1zdW0oIGRpbWcgKTsKICAg
ICAgb3V0MT0gcmVzaGFwZSggY2ltZyggc2lkeCApICwgaGlnLCB3aWQpOwog
ICAgICBvdXQyPSAoIHNpbWcoZmluZCggZGltZyApKSpbMSwxLDFdIC0gMSkv
MjU2OwogICBlbHNlCiMKIyBHZW5lcmF0ZSBhIGNvbG91cm1hcCBmb3IgUkdC
IGltYWdlcyBieSBwYWNraW5nIFJHQiBpbnRvCiMgYW4gaW50ZWdlciBhbmQg
YXNzaWduaW5nIHRoZSB1bmlxdWUgdmFsdWVzIHRvIGEgY29sb3JtYXAuCiMK
ICAgICAgY19yYW5nZT0gMjU2OyAjIHVzZSA2NTUzNiBmb3IgNDggYml0IGNv
bG9yCiAgICAgIFtzaW1nLCBzaWR4XSA9IHNvcnQoIHJvdW5kKHJlZGltZyg6
KSkgKyAuLi4KICAgICAgICAgICAgICAgICAgY19yYW5nZSAqcm91bmQoZ3Ju
aW1nKDopKSArIC4uLgogICAgICAgICAgICAgICAgY19yYW5nZV4yICpyb3Vu
ZChibHVpbWcoOikpICk7CiAgICAgIFtqbmt2YWwsIHNpZHhdID0gc29ydCgg
c2lkeCApOwoKICAgICAgZGltZz0gWzE7IGRpZmYoc2ltZyk+MCBdOwogICAg
ICBjaW1nPSBjdW1zdW0oIGRpbWcgKTsKICAgICAgb3V0MT0gcmVzaGFwZSgg
Y2ltZyggc2lkeCApICwgaGlnLCB3aWQgKTsKICAgICAgdG1wdj0gc2ltZyhm
aW5kKCBkaW1nICkpOwogICAgICBvdXQyPSBbIHJlbSh0bXB2LGNfcmFuZ2Up
LCAuLi4KICAgICAgICAgICAgICByZW0oZmxvb3IodG1wdi9jX3JhbmdlKSwg
Y19yYW5nZSksIC4uLgogICAgICAgICAgICAgIGZsb29yKHRtcHYvY19yYW5n
ZV4yKSBdL2NfcmFuZ2U7CiAgIGVuZAoKCmVsc2UKCiAgIGlmIGV4aXN0KCdn
cmV5aW1nJykKICAgICAgb3V0MT0gZ3JleWltZzsKICAgICAgb3V0Mj0gZ3Jl
eWltZzsKICAgICAgb3V0Mz0gZ3JleWltZzsKICAgZWxzZQogICAgICBvdXQx
PSByZWRpbWc7CiAgICAgIG91dDI9IGdybmltZzsKICAgICAgb3V0Mz0gYmx1
aW1nOwogICBlbmQKCmVuZAoKdW53aW5kX3Byb3RlY3RfY2xlYW51cAplbXB0
eV9saXN0X2VsZW1lbnRzX29rPSBzYXZlX2VtcHR5X2xpc3RfZWxlbWVudHNf
b2s7Cndhcm5fZW1wdHlfbGlzdF9lbGVtZW50cz0gc2F2ZV93YXJuX2VtcHR5
X2xpc3RfZWxlbWVudHM7CmVuZF91bndpbmRfcHJvdGVjdAoKIwojICRMb2c6
IGltcmVhZC5tLHYgJAojIFJldmlzaW9uIDEuMTAgIDIwMDQvMDQvMTUgMTE6
MjQ6MTAgIEZhaXNhbCBNb29yYWJ5CiMgU3VwcG9ydCBmb3IgV2luMzIgcGxh
dGZvcm1zCiMKIyAkTG9nOiBpbXJlYWQubSx2ICQKIyBSZXZpc2lvbiAxLjkg
IDIwMDQvMDIvMTggMTQ6NTQ6MTAgIHBraWVuemxlCiMgQ29sb3VyIHZhbHVl
cyBmcm9tIHBwbSBhcmUgMC0yNTUgbm90IDEtMjU2CiMKIyBSZXZpc2lvbiAx
LjggIDIwMDMvMTEvMTQgMTY6NTU6MTAgIHRwaWtvbmVuCiMgRml4IGVuZGlh
bmVzcyBidWcgaW4gMTYtYml0IHJlYWRzLgojCiMgUmV2aXNpb24gMS42ICAy
MDAzLzA5LzEyIDE0OjIyOjQyICBhZGIwMTQKIyBDaGFuZ2VzIHRvIGFsbG93
IHVzZSB3aXRoIGxhdGVzdCBDVlMgb2Ygb2N0YXZlIChkb19mb3J0cmFuX2lu
ZGV4aW5nLCBldGMpCiMKIyBSZXZpc2lvbiAxLjUgIDIwMDMvMDcvMjUgMTk6
MTE6NDEgIHBraWVuemxlCiMgTWFrZSBzdXJlIGFsbCBmaWxlcyBuYW1lcyBy
ZWZlcmVuY2VkIGluIHN5c3RlbSBjYWxscyBhcmUgd3JhcHBlZCBpbiBxdW90
ZXMKIyB0byBwcm90ZWN0IGFnYWluc3Qgc3BhY2VzIGluIHRoZSBwYXRoLgoj
CiMgUmV2aXNpb24gMS40ICAyMDAyLzExLzI3IDA4OjQwOjExICBwa2llbnps
ZQojIGF1dGhvci9saWNlbnNlIHVwZGF0ZXMKIwojIFJldmlzaW9uIDEuMyAg
MjAwMi8wMy8xOSAxODoxNDoxMyAgYWFkbGVyCiMgdW5mb3J0dW5hdGVseSB1
c2luZyBwb3BlbiBzZWVtcyB0byBjcmVhdGUgcHJvYmxlbXMsIG1vc3RseQoj
IG9uIHdpbjMyLCBidXQgYWxzbyBvbiBsaW51eCwgc28gd2UgbmVlZCB0byBt
b3ZlIHRvIGEgdG1wZmlsZSBhcHByb2FjaAojCiMgUmV2aXNpb24gMS4yICAy
MDAyLzAzLzE3IDA1OjI2OjE0ICBhYWRsZXIKIyBub3cgYWNjZXB0IGZpbGVu
YW1lcyB3aXRoIHNwYWNlcwojCiMgUmV2aXNpb24gMS4xICAyMDAyLzAzLzEx
IDAxOjU2OjQ3ICBhYWRsZXIKIyBnZW5lcmFsIGltYWdlIHJlYWQvd3JpdGUg
ZnVuY3Rpb25hbGl0eSB1c2luZyBpbWFnZW1hZ2ljayB1dGlsaXRpZXMKIwoj
Cg==
------=_NextPart_000_3fc9_16ed_5b7d
Content-Type: application/octet-stream; name="imwrite.m"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="imwrite.m"
I0lNV1JJVEU6IHdyaXRlIGltYWdlIGZyb20gb2N0YXZlIHRvIHZhcmlvdXMg
ZmlsZSBmb3JtYXRzCiMKIyBOb3RlOiB0aGlzIHJlcXVpcmVzIHRoZSBJbWFn
ZU1hZ2ljayAiY29udmVydCIgdXRpbGl0eS4KIyAgICAgICBnZXQgdGhpcyBm
cm9tIHd3dy5pbWFnZW1hZ2ljay5vcmcgaWYgcmVxdWlyZWQKIyAgICAgICBh
ZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gb2Ygb3B0aW9ucyBpcyBhdmFpbGFi
bGUgZnJvbSB0aGUKIyAgICAgICBjb252ZXJ0IG1hbiBwYWdlCiMKIyBCQVNJ
QyBVU0FHRToKIyBpbXdyaXRlKCBmbmFtZSwgaW1nICkKIyAgICAgICAgICAg
ICAgICAgLSBpbWcgaXMgYSBncmV5c2NhbGUgKDAtMjU1KSBvZiBpbWFnZSBp
biBmbmFtZQojIGltd3JpdGUoIGZuYW1lLCBpbWcsIG1hcCApCiMgICAgICAg
ICAgICAgICAgIC0gbWFwIGlzIGEgbWF0cml4IG9mIFtyLGcsYl0sIDAtMSB0
cmlwbGVzCiMgICAgICAgICAgICAgICAgIC0gaW1nIGlzIGEgbWF0cml4IG9u
IGluZGVjZXMgaW50byBtYXAKIyBpbXdyaXRlKCBmbmFtZSwgcixnLGIgKTsK
IyAgICAgICAgICAgICAgICAgLSByLGcsYiBhcmUgcmVkLGdyZWVuLGJsdWUg
KDAtMjU1KSBjb21wb25kZW50cwojCiMgRm9ybWF0cyBmb3IgaW1hZ2UgZm5h
bWUKIyAgIDEuIHNpbXBsZSBndWVzcyBmcm9tIGV4dGVudGlvbiBpZSAiZmln
LmpwZyIsICJibGFoLmdpZiIKIyAgIDIuIHNwZWNpZnkgZXhwbGljaXRseSAg
ICAgICAgICAgICAianBnOmZpZy5qcGciLCAiZ2lmOmJsYWguZ2lmIgojICAg
My4gc3BlY2lmeSBzdWJpbWFnZSBmb3IgbXVsdGktaW1hZ2UgZm9ybWF0ICJ0
aWZmOmZpbGUudGlmWzNdIgojICAgNC4gcmF3IGltYWdlcyAocm93IG1ham9y
IGZvcm1hdCkgc3BlY2lmeSBnZW9tZXRyeQojICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicmF3OmltZ1syNTZ4MTgwXSIKIwojIElN
UkVBRCBPUFRJT05TOgojIGltcmVhZCB3aWxsIHN1cHBvcnQgbW9zdCBvZiB0
aGUgb3B0aW9ucyBmb3IgY29udmVydC4xCiMKIyBpbXdyaXRlKCBmbmFtZSwg
aW1nLCBvcHRpb25zICkKIyBpbXdyaXRlKCBmbmFtZSwgaW1nLCBtYXAsIG9w
dGlvbnMgKQojIGltd3JpdGUoIGZuYW1lLCByLGcsYiwgb3B0aW9ucyApOwoj
CiMgd2hlcmUgb3B0aW9ucyBpcyBhIHN0cmluZyBtYXRyaXggKG9yIGxpc3Qp
IG9mIG9wdGlvbnMKIwojIGV4YW1wbGU6ICAgb3B0aW9ucz0gWyItcm90YXRl
IDI1IjsKIyAgICAgICAgICAgICAgICAgICAgICAiLWNyb3AgMjAweDIwMCsx
NTArMTUwIjsKIyAgICAgICAgICAgICAgICAgICAgICAiLXNhbXBsZSAyMDAl
IiBdOwojICAgd2lsbCByb3RhdGUsIGNyb3AsIGFuZCB0aGVuIGV4cGFuZCB0
aGUgaW1hZ2UuCiMgICBub3RlIHRoYXQgdGhlIG9yZGVyIG9mIG9wZXJhdGlv
bnMgaXMgaW1wb3J0YW50CiMKIyBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJl
IHN1cHBvcnRlZAojICAtYW50aWFsaWFzICAgICAgICAgICByZW1vdmUgcGl4
ZWwtYWxpYXNpbmcKIyAgLWJhY2tncm91bmQgY29sb3IgICAgYmFja2dyb3Vu
ZCBjb2xvcgojICAtYmx1ciBnZW9tZXRyeSAgICAgICBibHVyIHRoZSBpbWFn
ZQojICAtYm9yZGVyIGdlb21ldHJ5ICAgICBzdXJyb3VuZCBpbWFnZSB3aXRo
IGEgYm9yZGVyIG9mIGNvbG9yCiMgIC1ib3JkZXJjb2xvciBjb2xvciAgIGJv
cmRlciBjb2xvcgojICAtYm94IGNvbG9yICAgICAgICAgICBjb2xvciBmb3Ig
YW5ub3RhdGlvbiBib3VuZGluZyBib3gKIyAgLWNoYXJjb2FsIHJhZGl1cyAg
ICAgc2ltdWxhdGUgYSBjaGFyY29hbCBkcmF3aW5nCiMgIC1jb2xvcml6ZSB2
YWx1ZSAgICAgIGNvbG9yaXplIHRoZSBpbWFnZSB3aXRoIHRoZSBmaWxsIGNv
bG9yCiMgIC1jb2xvcnMgdmFsdWUgICAgICAgIHByZWZlcnJlZCBudW1iZXIg
b2YgY29sb3JzIGluIHRoZSBpbWFnZQojICAtY29sb3JzcGFjZSB0eXBlICAg
ICBhbHRlcm5hdGUgaW1hZ2UgY29sb3JzcGFjZQojICAtY29tbWVudCBzdHJp
bmcgICAgICBhbm5vdGF0ZSBpbWFnZSB3aXRoIGNvbW1lbnQKIyAgLWNvbXBy
ZXNzIHR5cGUgICAgICAgdHlwZSBvZiBpbWFnZSBjb21wcmVzc2lvbgojICAt
Y29udHJhc3QgICAgICAgICAgICBlbmhhbmNlIG9yIHJlZHVjZSB0aGUgaW1h
Z2UgY29udHJhc3QKIyAgLWNyb3AgZ2VvbWV0cnkgICAgICAgcHJlZmVycmVk
IHNpemUgYW5kIGxvY2F0aW9uIG9mIHRoZSBjcm9wcGVkIGltYWdlCiMgIC1k
ZW5zaXR5IGdlb21ldHJ5ICAgIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGRl
bnNpdHkgb2YgdGhlIGltYWdlCiMgIC1kZXB0aCB2YWx1ZSAgICAgICAgIGRl
cHRoIG9mIHRoZSBpbWFnZQojICAtZGVzcGVja2xlICAgICAgICAgICByZWR1
Y2UgdGhlIHNwZWNrbGVzIHdpdGhpbiBhbiBpbWFnZQojICAtZGlzcG9zZSBt
ZXRob2QgICAgICBHSUYgZGlzcG9zYWwgbWV0aG9kCiMgIC1kaXRoZXIgICAg
ICAgICAgICAgIGFwcGx5IEZsb3lkL1N0ZWluYmVyZyBlcnJvciBkaWZmdXNp
b24gdG8gaW1hZ2UKIyAgLWRyYXcgc3RyaW5nICAgICAgICAgYW5ub3RhdGUg
dGhlIGltYWdlIHdpdGggYSBncmFwaGljIHByaW1pdGl2ZQojICAtZWRnZSBy
YWRpdXMgICAgICAgICBhcHBseSBhIGZpbHRlciB0byBkZXRlY3QgZWRnZXMg
aW4gdGhlIGltYWdlCiMgIC1lbWJvc3MgcmFkaXVzICAgICAgIGVtYm9zcyBh
biBpbWFnZQojICAtZW5oYW5jZSAgICAgICAgICAgICBhcHBseSBhIGRpZ2l0
YWwgZmlsdGVyIHRvIGVuaGFuY2UgYSBub2lzeSBpbWFnZQojICAtZXF1YWxp
emUgICAgICAgICAgICBwZXJmb3JtIGhpc3RvZ3JhbSBlcXVhbGl6YXRpb24g
dG8gYW4gaW1hZ2UKIyAgLWZpbGwgY29sb3IgICAgICAgICAgY29sb3IgdG8g
dXNlIHdoZW4gZmlsbGluZyBhIGdyYXBoaWMgcHJpbWl0aXZlCiMgIC1maWx0
ZXIgdHlwZSAgICAgICAgIHVzZSB0aGlzIGZpbHRlciB3aGVuIHJlc2l6aW5n
IGFuIGltYWdlCiMgIC1mbGlwICAgICAgICAgICAgICAgIGZsaXAgaW1hZ2Ug
aW4gdGhlIHZlcnRpY2FsIGRpcmVjdGlvbgojICAtZmxvcCAgICAgICAgICAg
ICAgICBmbG9wIGltYWdlIGluIHRoZSBob3Jpem9udGFsIGRpcmVjdGlvbgoj
ICAtZm9udCBuYW1lICAgICAgICAgICBmb250IGZvciByZW5kZXJpbmcgdGV4
dAojICAtZnJhbWUgZ2VvbWV0cnkgICAgICBzdXJyb3VuZCBpbWFnZSB3aXRo
IGFuIG9ybmFtZW50YWwgYm9yZGVyCiMgIC1mdXp6IGRpc3RhbmNlICAgICAg
IGNvbG9ycyB3aXRoaW4gdGhpcyBkaXN0YW5jZSBhcmUgY29uc2lkZXJlZCBl
cXVhbAojICAtZ2FtbWEgdmFsdWUgICAgICAgICBsZXZlbCBvZiBnYW1tYSBj
b3JyZWN0aW9uCiMgIC1nZW9tZXRyeSBnZW9tZXRyeSAgIHBlcmZlcnJlZCBz
aXplIG9yIGxvY2F0aW9uIG9mIHRoZSBpbWFnZQojICAtZ2F1c3NpYW4gZ2Vv
bWV0cnkgICBnYXVzc2lhbiBibHVyIGFuIGltYWdlCiMgIC1ncmF2aXR5IHR5
cGUgICAgICAgIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHRleHQgcGxhY2Vt
ZW50CiMgIC1pbXBsb2RlIGFtb3VudCAgICAgIGltcGxvZGUgaW1hZ2UgcGl4
ZWxzIGFib3V0IHRoZSBjZW50ZXIKIyAgLWludGVudCB0eXBlICAgICAgICAg
QWJzb2x1dGUsIFBlcmNlcHR1YWwsIFJlbGF0aXZlLCBvciBTYXR1cmF0aW9u
CiMgIC1pbnRlcmxhY2UgdHlwZSAgICAgIE5vbmUsIExpbmUsIFBsYW5lLCBv
ciBQYXJ0aXRpb24KIyAgLWxhYmVsIG5hbWUgICAgICAgICAgYXNzaWduIGEg
bGFiZWwgdG8gYW4gaW1hZ2UKIyAgLWxldmVsIHZhbHVlICAgICAgICAgYWRq
dXN0IHRoZSBsZXZlbCBvZiBpbWFnZSBjb250cmFzdAojICAtbGlzdCB0eXBl
ICAgICAgICAgICBDb2xvciwgRGVsZWdhdGUsIEZvcm1hdCwgTWFnaWMsIE1v
ZHVsZSwgb3IgVHlwZQojICAtbWFwIGZpbGVuYW1lICAgICAgICB0cmFuc2Zv
cm0gaW1hZ2UgY29sb3JzIHRvIG1hdGNoIHRoaXMgc2V0IG9mIGNvbG9ycwoj
ICAtbWF0dGUgICAgICAgICAgICAgICBzdG9yZSBtYXR0ZSBjaGFubmVsIGlm
IHRoZSBpbWFnZSBoYXMgb25lCiMgIC1tZWRpYW4gcmFkaXVzICAgICAgIGFw
cGx5IGEgbWVkaWFuIGZpbHRlciB0byB0aGUgaW1hZ2UKIyAgLW1vZHVsYXRl
IHZhbHVlICAgICAgdmFyeSB0aGUgYnJpZ2h0bmVzcywgc2F0dXJhdGlvbiwg
YW5kIGh1ZQojICAtbW9ub2Nocm9tZSAgICAgICAgICB0cmFuc2Zvcm0gaW1h
Z2UgdG8gYmxhY2sgYW5kIHdoaXRlCiMgIC1tb3JwaCB2YWx1ZSAgICAgICAg
IG1vcnBoIGFuIGltYWdlIHNlcXVlbmNlCiMgIC1uZWdhdGUgICAgICAgICAg
ICAgIHJlcGxhY2UgZXZlcnkgcGl4ZWwgd2l0aCBpdHMgY29tcGxlbWVudGFy
eSBjb2xvciAKIyAgLW5vaXNlIHJhZGl1cyAgICAgICAgYWRkIG9yIHJlZHVj
ZSBub2lzZSBpbiBhbiBpbWFnZQojICAtbm9ybWFsaXplICAgICAgICAgICB0
cmFuc2Zvcm0gaW1hZ2UgdG8gc3BhbiB0aGUgZnVsbCByYW5nZSBvZiBjb2xv
cnMKIyAgLW9wYXF1ZSBjb2xvciAgICAgICAgY2hhbmdlIHRoaXMgY29sb3Ig
dG8gdGhlIGZpbGwgY29sb3IKIyAgLXBhZ2UgZ2VvbWV0cnkgICAgICAgc2l6
ZSBhbmQgbG9jYXRpb24gb2YgYW4gaW1hZ2UgY2FudmFzCiMgIC1wYWludCBy
YWRpdXMgICAgICAgIHNpbXVsYXRlIGFuIG9pbCBwYWludGluZwojICAtcHJv
ZmlsZSBmaWxlbmFtZSAgICBhZGQgSUNNIG9yIElQVEMgaW5mb3JtYXRpb24g
cHJvZmlsZSB0byBpbWFnZQojICAtcXVhbGl0eSB2YWx1ZSAgICAgICBKUEVH
L01JRkYvUE5HIGNvbXByZXNzaW9uIGxldmVsCiMgIC1yYWlzZSB2YWx1ZSAg
ICAgICAgIGxpZ2h0ZW4vZGFya2VuIGltYWdlIGVkZ2VzIHRvIGNyZWF0ZSBh
IDMtRCBlZmZlY3QKIyAgLXJlZ2lvbiBnZW9tZXRyeSAgICAgYXBwbHkgb3B0
aW9ucyB0byBhIHBvcnRpb24gb2YgdGhlIGltYWdlCiMgIC1yb2xsIGdlb21l
dHJ5ICAgICAgIHJvbGwgYW4gaW1hZ2UgdmVydGljYWxseSBvciBob3Jpem9u
dGFsbHkKIyAgLXJvdGF0ZSBkZWdyZWVzICAgICAgYXBwbHkgUGFldGggcm90
YXRpb24gdG8gdGhlIGltYWdlCiMgIC1zYW1wbGUgZ2VvbWV0cnkgICAgIHNj
YWxlIGltYWdlIHdpdGggcGl4ZWwgc2FtcGxpbmcKIyAgLXNjYWxlIGdlb21l
dHJ5ICAgICAgcmVzaXplIGltYWdlCiMgIC1zZWdtZW50IHZhbHVlcyAgICAg
IHNlZ21lbnQgYW4gaW1hZ2UKIyAgLXNlZWQgdmFsdWUgICAgICAgICAgcHNl
dWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHNlZWQgdmFsdWUKIyAgLXNo
YWRlIGRlZ3JlZXMgICAgICAgc2hhZGUgdGhlIGltYWdlIHVzaW5nIGEgZGlz
dGFudCBsaWdodCBzb3VyY2UKIyAgLXNoYXJwZW4gZ2VvbWV0cnkgICAgc2hh
cnBlbiB0aGUgaW1hZ2UKIyAgLXNoYXZlIGdlb21ldHJ5ICAgICAgc2hhdmUg
cGl4ZWxzIGZyb20gdGhlIGltYWdlIGVkZ2VzCiMgIC1zaGVhciBnZW9tZXRy
eSAgICAgIHNsaWRlIG9uZSBlZGdlIG9mIHRoZSBpbWFnZSBhbG9uZyB0aGUg
WCBvciBZIGF4aXMKIyAgLXNpemUgZ2VvbWV0cnkgICAgICAgd2lkdGggYW5k
IGhlaWdodCBvZiBpbWFnZQojICAtc29sYXJpemUgdGhyZXNob2xkICBuZWdh
dGUgYWxsIHBpeGVscyBhYm92ZSB0aGUgdGhyZXNob2xkIGxldmVsCiMgIC1z
cHJlYWQgYW1vdW50ICAgICAgIGRpc3BsYWNlIGltYWdlIHBpeGVscyBieSBh
IHJhbmRvbSBhbW91bnQKIyAgLXN0cm9rZSBjb2xvciAgICAgICAgY29sb3Ig
dG8gdXNlIHdoZW4gc3Rva2luZyBhIGdyYXBoaWMgcHJpbWl0aXZlCiMgIC1z
dHJva2V3aWR0aCB2YWx1ZSAgIHdpZHRoIG9mIHN0cm9rZQojICAtc3dpcmwg
ZGVncmVlcyAgICAgICBzd2lybCBpbWFnZSBwaXhlbHMgYWJvdXQgdGhlIGNl
bnRlcgojICAtdGV4dHVyZSBmaWxlbmFtZSAgICBuYW1lIG9mIHRleHR1cmUg
dG8gdGlsZSBvbnRvIHRoZSBpbWFnZSBiYWNrZ3JvdW5kCiMgIC10aHJlc2hv
bGQgdmFsdWUgICAgIHRocmVzaG9sZCB0aGUgaW1hZ2UKIyAgLXRpbGUgZmls
ZW5hbWUgICAgICAgdGlsZSBpbWFnZSB3aGVuIGZpbGxpbmcgYSBncmFwaGlj
IHByaW1pdGl2ZQojICAtdHJhbnNwYXJlbnQgY29sb3IgICBtYWtlIHRoaXMg
Y29sb3IgdHJhbnNwYXJlbnQgd2l0aGluIHRoZSBpbWFnZQojICAtdHJlZWRl
cHRoIHZhbHVlICAgICBkZXB0aCBvZiB0aGUgY29sb3IgdHJlZQojICAtdHlw
ZSB0eXBlICAgICAgICAgICBpbWFnZSB0eXBlCiMgIC11bml0cyB0eXBlICAg
ICAgICAgIFBpeGVsc1BlckluY2gsIFBpeGVsc1BlckNlbnRpbWV0ZXIsIG9y
IFVuZGVmaW5lZAojICAtdW5zaGFycCBnZW9tZXRyeSAgICBzaGFycGVuIHRo
ZSBpbWFnZQoKIyBBdXRob3I6IEFuZHkgQWRsZXIKCmZ1bmN0aW9uIGltd3Jp
dGUoZm5hbWUsIHAyLCBwMyAscDQgLHA1ICk7Cgp0cnkgc2F2ZV9lbXB0eV9s
aXN0X2VsZW1lbnRzX29rPSBlbXB0eV9saXN0X2VsZW1lbnRzX29rOwpjYXRj
aCBzYXZlX2VtcHR5X2xpc3RfZWxlbWVudHNfb2s9IDA7CmVuZAp0cnkgc2F2
ZV93YXJuX2VtcHR5X2xpc3RfZWxlbWVudHM9IHdhcm5fZW1wdHlfbGlzdF9l
bGVtZW50czsKY2F0Y2ggc2F2ZV93YXJuX2VtcHR5X2xpc3RfZWxlbWVudHM9
IDA7CmVuZAp1bndpbmRfcHJvdGVjdAplbXB0eV9saXN0X2VsZW1lbnRzX29r
PSAxOwp3YXJuX2VtcHR5X2xpc3RfZWxlbWVudHM9IDA7CgppZiAgKCBuYXJn
aW4gPD0gMSApICAgICB8fCAuLi4KICAgICggISBpc3N0ciAoZm5hbWUpKSAg
fHwgLi4uCiAgICAoIG5hcmdpbiA9PSAyICYmIGlzc3RyKHAyKSApCiAgICB1
c2FnZShbIC4uLgogICAgImltd3JpdGUoIGZuYW1lLCBpbWcgKVxuIiwgLi4u
CiAgICAiaW13cml0ZSggZm5hbWUsIGltZywgbWFwIClcbiIsIC4uLgogICAg
Imltd3JpdGUoIGZuYW1lLCByLGcsYiApO1xuIiwgLi4uCiAgICAiaW13cml0
ZSggZm5hbWUsIGltZywgb3B0aW9ucyApXG4iLCAuLi4KICAgICJpbXdyaXRl
KCBmbmFtZSwgaW1nLCBtYXAsIG9wdGlvbnMgKVxuIiwgLi4uCiAgICAiaW13
cml0ZSggZm5hbWUsIHIsZyxiLCBvcHRpb25zICk7XG4iXSk7CmVuZGlmCgoj
IFB1dCB0b2dldGhlciB0aGUgb3B0aW9ucyBzdHJpbmcKIyBUT0RPOiBhZGQg
c29tZSBlcnJvciBjaGVja2luZyB0byBvcHRpb25zCm9wdGlvbl9zdHI9IiI7
Cm5fbWF0PSBuYXJnaW4tMTsKCm9wdGlvbnM9IGV2YWwoc3ByaW50ZigicCVk
IixuYXJnaW4pKTsKIyBwcm9jZXNzIG9wdGlvbnMgc3RyaW5ncyBpZiBnaXZl
bgppZiAgICBpc3N0cihvcHRpb25zKQogICBuX21hdC0tOwogICBmb3IgaT0g
MTpzaXplKG9wdGlvbnMsMSkKICAgICAgb3B0aW9uX3N0cj1bb3B0aW9uX3N0
ciwiICIsIG9wdGlvbnMoaSw6KSBdOwogICBlbmQKZWxzZWlmIGlzX2xpc3Qo
IG9wdGlvbnMgKQogICBuX21hdC0tOwogICBmb3IgaT0gMTpsZW5ndGgob3B0
aW9ucykKICAgICAgb3B0aW9uX3N0cj1bb3B0aW9uX3N0ciwiICIsIG50aChv
cHRpb25zLGkpIF07CiAgIGVuZAplbmQKCltoaWcsd2lkXSA9IHNpemUocDIp
OwppZiBuX21hdD09MQogICBkYXRhPSBwMic7CiAgIG91dHB1dHR5cGU9InBn
bSI7CiAgIHBubV9zaWc9IlA1IjsKZWxzZWlmIG5fbWF0PT0yCiAgIGltZz0g
cDInOwogICBkYXRhPSBbIDI1NSpyZXNoYXBlKHAzKGltZywxKSwxLCBoaWcq
d2lkKTsKICAgICAgICAgICAyNTUqcmVzaGFwZShwMyhpbWcsMiksMSwgaGln
KndpZCk7CiAgICAgICAgICAgMjU1KnJlc2hhcGUocDMoaW1nLDMpLDEsIGhp
Zyp3aWQpIF07CiAgIG91dHB1dHR5cGU9InBwbSI7CiAgIHBubV9zaWc9IlA2
IjsKZWxzZWlmIG5fbWF0PT0zCiAgIGRhdGE9IFsgcmVzaGFwZShwMicsMSwg
aGlnKndpZCk7CiAgICAgICAgICAgcmVzaGFwZShwMycsMSwgaGlnKndpZCk7
CiAgICAgICAgICAgcmVzaGFwZShwNCcsMSwgaGlnKndpZCkgXTsKICAgb3V0
cHV0dHlwZT0icHBtIjsKICAgcG5tX3NpZz0iUDYiOwplbHNlCiAgIGVycm9y
KCJpbXdyaXRlOiB0b28gbWFueSBkYXRhIG1hdHJpY2VzIHNwZWNpZmllZCIp
OwplbmQKCiMgIHBuYW1lPSBzcHJpbnRmKCJjb252ZXJ0ICVzICVzOi0gJyVz
JyAyPi9kZXYvbnVsbCIsCiMgICAgICAgICAgICAgICAgIG9wdGlvbl9zdHIs
IG91dHB1dHR5cGUsIGZuYW1lKTsKIyAgZmlkPSBwb3BlbihwbmFtZSAsJ3cn
KTsKCiAgIHRuYW09IHRtcG5hbSgpOwogICAKICAgICAgICAgICAgICAgICAK
ICAgICAgIyBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgbmFtZQogICAgICB0bmFt
PSB0bXBuYW0oKTsKICAgICAgCiAgICAgIGlmIChpc3VuaXgpOwogICAgICAg
ICAgIHByaW50ZigiWW91IGFyZSBydW5uaW5nIHRoZSBVTipYIHZlcnNpb24g
b2YgSW1Xcml0ZVxuIik7CiAgICAgIAljbWQ9IHNwcmludGYoImNvbnZlcnQg
JXMgJyVzOiVzJyAnJXMnIDI+L2Rldi9udWxsIiwKICAgICAgICAgICAgICAg
ICBvcHRpb25fc3RyLCBvdXRwdXR0eXBlLCB0bmFtLCBmbmFtZSk7CiAgICAg
IAogICAgICBlbHNlCiAgICAgIAlwcmludGYoIllvdSBhcmUgcnVubmluZyB0
aGUgV2lOZE9XeiB2ZXJzaW9uIG9mIEltV3JpdGVcbiIpOwogICAgICAJCiAg
ICAgIAkjIGNvbnZlcnQgaW5wdXQgZmlsZSBwYXRoIGludG8gd2luZG93eiBm
b3JtYXQKICAgCWZuYW1lPXNwcmludGYoImN5Z3BhdGggLXcgJXMiLCBmbmFt
ZSk7IAogICAJZm5hbWU9c3lzdGVtKGZuYW1lKTsKICAgCQogICAJIyBjaGFu
Z2UgdGhlICdcJyBzdHJva2VzIHRvICcvJyBpbiB0aGUgcGF0aCBuYW1lIHRv
IHByZXZlbnQgc3RyaW5nIGNvbmZsaWN0cwogICAJZm9yIGk9MTpsZW5ndGgo
Zm5hbWUpCiAgIAkJCWlmIGZuYW1lKGkpPT0nXFwnOwogICAJCQkJZm5hbWUo
aSk9Jy8nOwogICAJCQllbmQKICAgCWVuZAogICAJCiAgIAkjIHRoaXMgcm91
dGluZSBiZWNhdXNlIGEgbmV3bGluZSBjaGFyYWN0ZXIgaXMgYWRkZWQgaW50
byBmbmFtZSAobWF5YmUgYnVnIGluIHRoZSAiZmlsZV9pbl9wYXRoIiBmdW5j
dGlvbiA8c2VlIGxpbmUgMTIzPi4gIFRoaXMgaGFzIHRvIGJlIHJlbW92ZWQu
IAogICAJaWYgZG91YmxlKGZuYW1lKGxlbmd0aChmbmFtZSkpKSA+MTIyIHx8
IGRvdWJsZShmbmFtZShsZW5ndGgoZm5hbWUpKSkgPDY1OyAKICAgCQlmbmFt
ZT1mbmFtZSgxOmxlbmd0aChmbmFtZSktMSk7CiAgIAllbmQKICAgCiAgIAkj
IGNyZWF0ZSB0aGUgY29tbWFuZCBzdHJpbmcKICAgICAgICAgICBjbWQ9IHNw
cmludGYoImNvbnZlcnQgJXMgIiIlczolcyIiICIiJXMiIiIsb3B0aW9uX3N0
cixvdXRwdXR0eXBlLHRuYW0sIGZuYW1lKTsKICAgCiAgICAgICAgICAgIyBj
b21tYW5kIHN0cmluZyBjb252ZXJ0IHRoZSBpbnB1dCBmaWxlIG5hbWUgcGF0
aCBiYWNrIHRvIFVOKlggZm9ybQogICAgICAgICAgIGZuYW1lPXNwcmludGYo
ImN5Z3BhdGggLXUgIiIlcyIiIiwgZm5hbWUpOyAKICAgCQogICAJIyBBZ2Fp
biBjb252ZXJ0IHRoZSAnXCcgc3Ryb2tlcyB0byAnLycgdG8gcHJldmVudCBj
b25mbGljdHMKICAgCWZvciBpPTE6bGVuZ3RoKHRuYW0pCiAgIAkJaWYgdG5h
bShpKT09J1xcJzsKICAgCQkJdG5hbShpKT0nLyc7CiAgIAkJZW5kCiAgIAll
bmQKICAgCQogICAJIyBkbyBzYW1lIGZvciB0aGUgdGVtcCBmaWxlIG5hbWUg
Y3JlYXRlZAogICAJZm9yIGk9MTpsZW5ndGgodG5hbSkKICAgCQkJaWYgdG5h
bShpKT09J1xcJzsKICAgCQkJCXRuYW0oaSk9Jy8nOwogICAJCQllbmQKICAg
CWVuZAogICAJCiAgIAkjIGV4ZWN1dGUgY29tbWFuZCBzdHJpbmcgdG8gY2hh
bmdlIGZpbGVuYW1lIHRvIFVOKlggZm9ybWF0CiAgIAlmbmFtZT1zeXN0ZW0o
Zm5hbWUpOwogICAJCiAgIAkjIGNyZWF0ZSBjb21tYW5kIHN0cmluZyB0byBj
b252ZXJ0IHRlbXBvcmFyeSBmaWxlIG5hbWUgcGF0aCB0byB1bml4IGZvcm1h
dAogICAJaWYgdG5hbSgyKT09JzonOwogICAJCXRuYW0oMik9dG5hbSgxKTsK
ICAgCQl0bmFtKDEpPScvJzsKICAgCQl0bmFtPXNwcmludGYoIi9jeWdkcml2
ZSVzIix0bmFtKTsKICAgCWVuZAkKICAgCQogICBlbmQJICAgICAgICAKICAg
CiAgIGZpZD0gZm9wZW4odG5hbSwgIndiIik7CiAgIAojICBkaXNwKHBuYW1l
KTsgZGlzcChmaWQpOwogICBpZiBmaWQ8MDsKICAgICAgZXJyb3IoWydjb3Vs
ZCBub3QgY3JlYXRlIGZpbGU6ICcsdG5hbV0pOwogICBlbmQKCiAgIGZwcmlu
dGYoZmlkLCIlc1xuJWQgJWRcbjI1NVxuIixwbm1fc2lnLHdpZCxoaWcpOwog
ICB3cml0ZV9jb3VudD0gZndyaXRlKGZpZCxkYXRhKDopKTsKICAgaWYgd3Jp
dGVfY291bnQgIT0gcHJvZChzaXplKGRhdGEpKQogICAgICBmY2xvc2UoZmlk
KTsgdW5saW5rKHRuYW0pOwogICAgICBlcnJvcihbJ1VuYWJsZSB0byB3cml0
ZSBpbWFnZTogJywgZm5hbWUgXSk7CiAgIGVuZAoKICAgZmNsb3NlKGZpZCk7
CiAgIFtqbmsscmV0Y29kZV0gPSBzeXN0ZW0oY21kKTsKICAgaWYgcmV0Y29k
ZSAhPTAgCiAgICAgIGVycm9yKCdjb3VsZCBub3QgY2FsbCBpbWFnZW1hZ2lj
ayBjb252ZXJ0Jyk7CiAgIGVuZAogICB1bmxpbmsoIHRuYW0gKTsKCnVud2lu
ZF9wcm90ZWN0X2NsZWFudXAKZW1wdHlfbGlzdF9lbGVtZW50c19vaz0gc2F2
ZV9lbXB0eV9saXN0X2VsZW1lbnRzX29rOwp3YXJuX2VtcHR5X2xpc3RfZWxl
bWVudHM9IHNhdmVfd2Fybl9lbXB0eV9saXN0X2VsZW1lbnRzOwplbmRfdW53
aW5kX3Byb3RlY3QKCiMKIyAkTG9nOiBpbXdyaXRlLm0sdiAkCiMgUmV2aXNp
b24gMS42ICAyMDAzLzA5LzEyIDE0OjIyOjQyICBhZGIwMTQKIyBDaGFuZ2Vz
IHRvIGFsbG93IHVzZSB3aXRoIGxhdGVzdCBDVlMgb2Ygb2N0YXZlIChkb19m
b3J0cmFuX2luZGV4aW5nLCBldGMpCiMKIyBSZXZpc2lvbiAxLjUgIDIwMDMv
MDcvMjUgMTk6MTE6NDEgIHBraWVuemxlCiMgTWFrZSBzdXJlIGFsbCBmaWxl
cyBuYW1lcyByZWZlcmVuY2VkIGluIHN5c3RlbSBjYWxscyBhcmUgd3JhcHBl
ZCBpbiBxdW90ZXMKIyB0byBwcm90ZWN0IGFnYWluc3Qgc3BhY2VzIGluIHRo
ZSBwYXRoLgojCiMgUmV2aXNpb24gMS40ICAyMDAyLzExLzI3IDA4OjQwOjEx
ICBwa2llbnpsZQojIGF1dGhvci9saWNlbnNlIHVwZGF0ZXMKIwojIFJldmlz
aW9uIDEuMyAgMjAwMi8wMy8xOSAxODoxNDoxMyAgYWFkbGVyCiMgdW5mb3J0
dW5hdGVseSB1c2luZyBwb3BlbiBzZWVtcyB0byBjcmVhdGUgcHJvYmxlbXMs
IG1vc3RseQojIG9uIHdpbjMyLCBidXQgYWxzbyBvbiBsaW51eCwgc28gd2Ug
bmVlZCB0byBtb3ZlIHRvIGEgdG1wZmlsZSBhcHByb2FjaAojCiMgUmV2aXNp
b24gMS4yICAyMDAyLzAzLzE3IDA1OjI2OjE0ICBhYWRsZXIKIyBub3cgYWNj
ZXB0IGZpbGVuYW1lcyB3aXRoIHNwYWNlcwojCiMgUmV2aXNpb24gMS4xICAy
MDAyLzAzLzExIDAxOjU2OjQ3ICBhYWRsZXIKIyBnZW5lcmFsIGltYWdlIHJl
YWQvd3JpdGUgZnVuY3Rpb25hbGl0eSB1c2luZyBpbWFnZW1hZ2ljayB1dGls
aXRpZXMKIwojCg==
------=_NextPart_000_3fc9_16ed_5b7d--