commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Kruger (Created) (JIRA)" <j...@apache.org>
Subject [jira] [Created] (EMAIL-110) java.lang.OutOfMemoryError: Java heap space while parsing Mime part
Date Sun, 11 Dec 2011 09:19:40 GMT
java.lang.OutOfMemoryError: Java heap space while parsing Mime part
-------------------------------------------------------------------

                 Key: EMAIL-110
                 URL: https://issues.apache.org/jira/browse/EMAIL-110
             Project: Commons Email
          Issue Type: Bug
    Affects Versions: 1.2
         Environment: Windows, Linux
            Reporter: Stephen Kruger
            Priority: Blocker


I have a particular eml message which appears to cause a complete memory overflow deep within
commons-email.
A look at the source code does reveal a suspect "while" loop which appears to never exit properly,
and should be rewritten so that bad data could not give us this situation.
The stack trace is :
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:2786)
	at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:71)
	at javax.mail.internet.MimeMultipart.readTillFirstBoundary(MimeMultipart.java:316)
	at javax.mail.internet.MimeMultipart.parse(MimeMultipart.java:186)
	at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:130)
	at javax.mail.internet.MimeBodyPart.updateHeaders(MimeBodyPart.java:539)
	at javax.mail.internet.MimeMultipart.updateHeaders(MimeMultipart.java:133)
	at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:1393)
	at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:1366)
	at javax.mail.Transport.send(Transport.java:76)
	at javax.mail.Transport.send(Transport.java:48)

The message which can repeatedly cause this issue is pasted below (this form shows no attachment
capability) :

Received: from somedomain.test.com (somedomain.test.com [99.168.1.33])
        by smtp.myserver.com with SMTP (BlueBox)
        for postmaster@localhost;
        Fri, 07 Oct 2011 10:35:04 -0400 (EDT)
To: postmaster@localhost
From: noreply@example.com
Reply-To: noreply@example.com
Subject: Attachment Test
X-Mailer: CakePHP Email Component
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="026a2bea167826bf111c47c4213d68b1"
This part of the E-mail should never be seen. If: 
you are reading this, consider upgrading your e-mail: 
client to a MIME-compatible client.: 
Content-Transfer-Encoding: base64

--026a2bea167826bf111c47c4213d68b1
Content-Type: multipart/alternative; boundary="alt-026a2bea167826bf111c47c4213d68b1"
Content-Transfer-Encoding: 7bit
<p>This is the body of the message</p>
--026a2bea167826bf111c47c4213d68b1
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="email.test.php"
PD9waHAKLyogU1ZOIEZJTEU6ICRJZCQgKi8KLyoqCiAqIEVtYWlsQ29tcG9uZW50VGVzdCBmaWxl
CiAqCiAqIFNlcmllcyBvZiB0ZXN0cyBmb3IgZW1haWwgY29tcG9uZW50LgogKgogKiBQSFAgdmVy
c2lvbnMgNCBhbmQgNQogKgogKiBDYWtlUEhQKHRtKSBUZXN0cyA8aHR0cHM6Ly90cmFjLmNha2Vw
aHAub3JnL3dpa2kvRGV2ZWxvcGVtZW50L1Rlc3RTdWl0ZT4KICogQ29weXJpZ2h0IDIwMDUtMjAw
OCwgQ2FrZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIChodHRwOi8vd3d3LmNha2Vmb3VuZGF0
aW9uLm9yZykKICoKICogIExpY2Vuc2VkIHVuZGVyIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUg
TGljZW5zZQogKiAgUmVkaXN0cmlidXRpb25zIG9mIGZpbGVzIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlLgogKgogKiBAZmlsZXNvdXJjZQogKiBAY29weXJpZ2h0ICAgICBD
b3B5cmlnaHQgMjAwNS0yMDA4LCBDYWtlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gKGh0dHA6
Ly93d3cuY2FrZWZvdW5kYXRpb24ub3JnKQogKiBAbGluayAgICAgICAgICBodHRwczovL3RyYWMu
Y2FrZXBocC5vcmcvd2lraS9EZXZlbG9wZW1lbnQvVGVzdFN1aXRlIENha2VQSFAodG0pIFRlc3Rz
CiAqIEBwYWNrYWdlICAgICAgIGNha2UKICogQHN1YnBhY2thZ2UgICAgY2FrZS5jYWtlLnRlc3Rz
LmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqIEBzaW5jZSAgICAgICAgIENha2VQ
SFAodG0pIHYgMS4yLjAuNTM0NwogKiBAdmVyc2lvbiAgICAgICAkUmV2aXNpb24kCiAqIEBtb2Rp
ZmllZGJ5ICAgICRMYXN0Q2hhbmdlZEJ5JAogKiBAbGFzdG1vZGlmaWVkICAkRGF0ZSQKICogQGxp
Y2Vuc2UgICAgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9vcGVuZ3JvdXAu
cGhwIFRoZSBPcGVuIEdyb3VwIFRlc3QgU3VpdGUgTGljZW5zZQogKi8KaWYgKCFkZWZpbmVkKCdS
VU5OSU5HX0VNQUlMX1VOSVRfVEVTVFMnKSkgZGVmaW5lKCdSVU5OSU5HX0VNQUlMX1VOSVRfVEVT
VFMnLHRydWUpOwpBcHA6OmltcG9ydCgnQ29tcG9uZW50JywgJ0VtYWlsJyk7Ci8qKgogKiBFbWFp
bFRlc3RDb21wb25lbnQgY2xhc3MKICoKICogQHBhY2thZ2UgICAgICAgY2FrZQogKiBAc3VicGFj
a2FnZSAgICBjYWtlLnRlc3RzLmNhc2VzLmxpYnMuY29udHJvbGxlci5jb21wb25lbnRzCiAqLwpj
bGFzcyBFbWFpbFRlc3RDb21wb25lbnQgZXh0ZW5kcyBFbWFpbENvbXBvbmVudCB7Ci8qKgogKiBu
YW1lIHByb3BlcnR5CiAqCiAqIEB2YXIgc3RyaW5nICdFbWFpbFRlc3RDb21wb25lbnQnCiAqIEBh
Y2Nlc3MgcHVibGljCiAqLwoJdmFyICRuYW1lID0gJ0VtYWlsVGVzdENvbXBvbmVudCc7Ci8qKgog
KiBMaXN0IG9mIG9wdGlvbnMgdG8gdXNlIGZvciBzbXRwIG1haWwgbWV0aG9kLCBvdmVycmlkZSBm
b3IgdGVzdGluZwogKgogKiBPcHRpb25zIGlzOgogKiAtIHBvcnQKICogLSBob3N0CiAqIC0gdGlt
ZW91dAogKiAtIHVzZXJuYW1lCiAqIC0gcGFzc3dvcmQKICoKICogQHZhciBhcnJheQogKiBAYWNj
ZXNzIHB1YmxpYwogKi8KCXZhciAkc210cE9wdGlvbnMgPSBhcnJheSgKCQkncG9ydCc9PiAyNSwg
J2hvc3QnID0+IFNNVFBfU0VSVkVSLCAndGltZW91dCcgPT4gMzAKCSk7Ci8qKgogKiBzbXRwU2Vu
ZCBtZXRob2Qgb3ZlcnJpZGUgZm9yIHRlc3RpbmcKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJl
dHVybiBtaXhlZAogKi8KCWZ1bmN0aW9uIHNtdHBTZW5kKCRkYXRhLCAkY29kZSA9ICcyNTAnKSB7
CgkJcmV0dXJuIHBhcmVudDo6X19zbXRwU2VuZCgkZGF0YSwgJGNvZGUpOwoJfQovKioKICogQ29u
dmVuaWVuY2Ugc2V0dGVyIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
ICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gc2V0Q29ubmVjdGlvblNvY2tldCgmJHNvY2tl
dCkgewoJCSR0aGlzLT5fX3NtdHBDb25uZWN0aW9uID0gJHNvY2tldDsKCX0KLyoqCiAqIENvbnZl
bmllbmNlIGdldHRlciBtZXRob2QgZm9yIHRlc3RpbmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAq
IEByZXR1cm4gbWl4ZWQKICovCglmdW5jdGlvbiBnZXRDb25uZWN0aW9uU29ja2V0KCkgewoJCXJl
dHVybiAkdGhpcy0+X19zbXRwQ29ubmVjdGlvbjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRl
ciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
ZnVuY3Rpb24gc2V0SGVhZGVycygkaGVhZGVycykgewoJCSR0aGlzLT5fX2hlYWRlciArPSAkaGVh
ZGVyczsKCX0KLyoqCiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFj
Y2VzcyBwdWJsaWMKICogQHJldHVybiBhcnJheQogKi8KCWZ1bmN0aW9uIGdldEhlYWRlcnMoKSB7
CgkJcmV0dXJuICR0aGlzLT5fX2hlYWRlcjsKCX0KLyoqCiAqIENvbnZlbmllbmNlIHNldHRlciBm
b3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVu
Y3Rpb24gc2V0Qm91bmRhcnkoKSB7CgkJJHRoaXMtPl9fY3JlYXRlQm91bmRhcnkoKTsKCX0KLyoq
CiAqIENvbnZlbmllbmNlIGdldHRlciBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMK
ICogQHJldHVybiBzdHJpbmcKICovCglmdW5jdGlvbiBnZXRCb3VuZGFyeSgpIHsKCQlyZXR1cm4g
JHRoaXMtPl9fYm91bmRhcnk7Cgl9Ci8qKgogKiBDb252ZW5pZW5jZSBnZXR0ZXIgZm9yIHRlc3Rp
bmcuCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gc3RyaW5nCiAqLwoJZnVuY3Rpb24g
Z2V0TWVzc2FnZSgpIHsKCQlyZXR1cm4gJHRoaXMtPl9fbWVzc2FnZTsKCX0KLyoqCiAqIENvbnZl
bmllbmNlIG1ldGhvZCBmb3IgdGVzdGluZy4KICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVy
biBzdHJpbmcKICovCglmdW5jdGlvbiBzdHJpcCgkY29udGVudCwgJG1lc3NhZ2UgPSBmYWxzZSkg
ewoJCXJldHVybiBwYXJlbnQ6Ol9fc3RyaXAoJGNvbnRlbnQsICRtZXNzYWdlKTsKCX0KfQovKioK
ICogRW1haWxUZXN0Q29udHJvbGxlciBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAq
IEBzdWJwYWNrYWdlICAgIGNha2UudGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVu
dHMKICovCmNsYXNzIEVtYWlsVGVzdENvbnRyb2xsZXIgZXh0ZW5kcyBDb250cm9sbGVyIHsKLyoq
CiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcgJ0VtYWlsVGVzdCcKICogQGFjY2Vz
cyBwdWJsaWMKICovCgl2YXIgJG5hbWUgPSAnRW1haWxUZXN0JzsKLyoqCiAqIHVzZXMgcHJvcGVy
dHkKICoKICogQHZhciBtaXhlZCBudWxsCiAqIEBhY2Nlc3MgcHVibGljCiAqLwoJdmFyICR1c2Vz
ID0gbnVsbDsKLyoqCiAqIGNvbXBvbmVudHMgcHJvcGVydHkKICoKICogQHZhciBhcnJheQogKiBA
YWNjZXNzIHB1YmxpYwogKi8KCXZhciAkY29tcG9uZW50cyA9IGFycmF5KCdFbWFpbFRlc3QnKTsK
LyoqCiAqIHBhZ2VUaXRsZSBwcm9wZXJ0eQogKgogKiBAdmFyIHN0cmluZwogKiBAYWNjZXNzIHB1
YmxpYwogKi8KCXZhciAkcGFnZVRpdGxlID0gJ0VtYWlsVGVzdCc7Cn0KLyoqCiAqIEVtYWlsVGVz
dCBjbGFzcwogKgogKiBAcGFja2FnZSAgICAgICBjYWtlCiAqIEBzdWJwYWNrYWdlICAgIGNha2Uu
dGVzdHMuY2FzZXMubGlicy5jb250cm9sbGVyLmNvbXBvbmVudHMKICovCmNsYXNzIEVtYWlsQ29t
cG9uZW50VGVzdCBleHRlbmRzIENha2VUZXN0Q2FzZSB7Ci8qKgogKiBDb250cm9sbGVyIHByb3Bl
cnR5CiAqCiAqIEB2YXIgRW1haWxUZXN0Q29udHJvbGxlcgogKiBAYWNjZXNzIHB1YmxpYwogKi8K
CXZhciAkQ29udHJvbGxlcjsKLyoqCiAqIG5hbWUgcHJvcGVydHkKICoKICogQHZhciBzdHJpbmcg
J0VtYWlsJwogKiBAYWNjZXNzIHB1YmxpYwogKi8KCXZhciAkbmFtZSA9ICdFbWFpbCc7Ci8qKgog
KiBzZXRVcCBtZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJ
ZnVuY3Rpb24gc2V0VXAoKSB7CgkJJHRoaXMtPl9hcHBFbmNvZGluZyA9IENvbmZpZ3VyZTo6cmVh
ZCgnQXBwLmVuY29kaW5nJyk7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJ1VU
Ri04Jyk7CgoJCSR0aGlzLT5Db250cm9sbGVyID0mIG5ldyBFbWFpbFRlc3RDb250cm9sbGVyKCk7
CgoJCXJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwoJCUAkdGhpcy0+Q29udHJvbGxlci0+Q29tcG9u
ZW50LT5pbml0KCR0aGlzLT5Db250cm9sbGVyKTsKCQlzZXRfZXJyb3JfaGFuZGxlcignc2ltcGxl
VGVzdEVycm9ySGFuZGxlcicpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5pbml0
aWFsaXplKCR0aGlzLT5Db250cm9sbGVyLCBhcnJheSgpKTsKCQlDbGFzc1JlZ2lzdHJ5OjphZGRP
YmplY3QoJ3ZpZXcnLCBuZXcgVmlldygkdGhpcy0+Q29udHJvbGxlcikpOwoKCQkkdGhpcy0+X3Zp
ZXdQYXRocyA9IENvbmZpZ3VyZTo6cmVhZCgndmlld1BhdGhzJyk7CgkJQ29uZmlndXJlOjp3cml0
ZSgndmlld1BhdGhzJywgYXJyYXkoVEVTVF9DQUtFX0NPUkVfSU5DTFVERV9QQVRIIC4gJ3Rlc3Rz
JyAuIERTIC4gJ3Rlc3RfYXBwJyAuIERTIC4gJ3ZpZXdzJy4gRFMpKTsKCgkJJHRoaXMtPkNvbnRy
b2xsZXItPlNlc3Npb24tPmFjdGl2YXRlKCdNZXNzYWdlJyk7Cgl9Ci8qKgogKiB0ZWFyRG93biBt
ZXRob2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24g
dGVhckRvd24oKSB7CgkJQ29uZmlndXJlOjp3cml0ZSgnQXBwLmVuY29kaW5nJywgJHRoaXMtPl9h
cHBFbmNvZGluZyk7CgkJQ29uZmlndXJlOjp3cml0ZSgndmlld1BhdGhzJywgJHRoaXMtPl92aWV3
UGF0aHMpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5kZWwoJ01lc3NhZ2UnKTsKCQly
ZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCQlDbGFzc1JlZ2lzdHJ5OjpmbHVzaCgpOwoJfQovKioK
ICogdGVzdEJhZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QmFkU210cFNlbmQoKSB7CgkJJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnNbJ2hvc3QnXSA9ICdibGFoJzsKCQkkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkkdGhpcy0+YXNzZXJ0RmFs
c2UoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnU2hvdWxkIG5vdCB3b3JrJykp
OwoJfQovKioKICogdGVzdFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBA
cmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U210cFNlbmQoKSB7CgkJaWYgKCR0aGlzLT5z
a2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1
bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKSkgewoJCQlyZXR1cm47CgkJfQoJCSR0aGlzLT5Db250
cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXIt
PkVtYWlsVGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9s
bGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhl
IG1lc3NhZ2UnKSk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9kZWJ1ZyA9IHRy
dWU7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRz
bXRwU2VydmVyID0gU01UUF9TRVJWRVI7CgkJJGV4cGVjdCA9IDw8PFRFTVBET0MKPHByZT5Ib3N0
OiAkc210cFNlcnZlcgpQb3J0OiAyNQpUaW1lb3V0OiAzMApUbzogcG9zdG1hc3RlckBsb2NhbGhv
c3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApIZWFk
ZXI6CgpUbzogcG9zdG1hc3RlckBsb2NhbGhvc3QKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpS
ZXBseS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpTdWJqZWN0OiBDYWtlIFNNVFAgdGVzdApYLU1h
aWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1U
eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6
IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVz
c2FnZQoKPC9wcmU+ClRFTVBET0M7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsK
CQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01l
c3NhZ2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgog
KiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwog
KiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlvbiB0ZXN0QXV0aGVudGljYXRlZFNtdHBTZW5kKCkg
ewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1KSwgJyVzIE5vIFNN
VFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PnRvID0gJ3Bvc3RtYXN0ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5mcm9tID0gJ25vcmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPnN1YmplY3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWyd1c2VybmFtZSddID0gJ3Rlc3QnOwoJCSR0aGlzLT5D
b250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydwYXNzd29yZCddID0gJ3Rlc3Rpbmcn
OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5kZWxpdmVyeSA9ICdzbXRwJzsKCQkk
cmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZScpOwoJCSRjb2RlID0gc3Vic3RyKCR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNtdHBFcnJvciwgMCwgMyk7CgkJJHRoaXMtPnNraXBJZighJGNvZGUsICcl
cyBBdXRoZW50aWNhdGlvbiBub3QgZW5hYmxlZCBvbiBzZXJ2ZXInKTsKCgkJJHRoaXMtPmFzc2Vy
dEZhbHNlKCRyZXN1bHQpOwoJCS8vJHRoaXMtPmFzc2VydEVxdWFsKCRjb2RlLCAnNTM1Jyk7IC8v
R290IFNNVFAgNTAyIENvbW1hbmQgTm90IGltcGxlbWVudGVkCgl9Ci8qKgogKiB0ZXN0U2VuZEZv
cm1hdHMgbWV0aG9kCiAqCiAqIEBhY2Nlc3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1
bmN0aW9uIHRlc3RTZW5kRm9ybWF0cygpIHsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
LT5yZXNldCgpOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Bvc3RtYXN0
ZXJAbG9jYWxob3N0JzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tID0gJ25v
cmVwbHlAZXhhbXBsZS5jb20nOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1Ympl
Y3QgPSAnQ2FrZSBTTVRQIHRlc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJl
cGx5VG8gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+dGVtcGxhdGUgPSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRl
bGl2ZXJ5ID0gJ2RlYnVnJzsKCgkJJG1lc3NhZ2UgPSA8PDxNU0dCTE9DCjxwcmU+VG86IHBvc3Rt
YXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVjdDogQ2FrZSBT
TVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBseS1Ubzogbm9y
ZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25lbnQKTUlNRS1W
ZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKVGhpcyBpcyB0aGUgYm9keSBv
ZiB0aGUgbWVzc2FnZQoKPC9wcmU+Ck1TR0JMT0M7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c2VuZEFzID0gJ3RleHQnOwoJCSRleHBlY3QgPSBzdHJfcmVwbGFjZSgne0NPTlRFTlRU
WVBFfScsICd0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04JywgJG1lc3NhZ2UpOwoJCSR0aGlzLT5h
c3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhl
IGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250
cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJHRoaXMtPl9f
b3NGaXgoJGV4cGVjdCkpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMg
PSAnaHRtbCc7CgkJJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09OVEVOVFRZUEV9JywgJ3RleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCcsICRtZXNzYWdlKTsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhp
cy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBt
ZXNzYWdlJykpOwoJCSR0aGlzLT5hc3NlcnRFcXVhbCgkdGhpcy0+Q29udHJvbGxlci0+U2Vzc2lv
bi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICR0aGlzLT5fX29zRml4KCRleHBlY3Qp
KTsKCgkJLy8gVE9ETzogYmV0dGVyIHRlc3QgZm9yIGZvcm1hdCBvZiBtZXNzYWdlIHNlbnQ/CgkJ
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZEFzID0gJ2JvdGgnOwoKCQkkdGhpcy0+
YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRo
ZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCS8vJGV4cGVjdCA9IHN0cl9yZXBsYWNlKCd7Q09O
VEVOVFRZUEV9JywgJ211bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9ImFsdC0nLiR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fYm91bmRhcnkuJyInLCAkbWVzc2FnZSk7CgkJLy8k
dGhpcy0+YXNzZXJ0RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3Nh
Z2UuZW1haWwubWVzc2FnZScpLCAkdGhpcy0+X19vc0ZpeCgkZXhwZWN0KSk7Cgl9Ci8qKgogKiB0
ZXN0VGVtcGxhdGVzIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQK
ICovCglmdW5jdGlvbiB0ZXN0VGVtcGxhdGVzKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9z
dG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20g
PSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCgkJJHRoaXMtPkNvbnRyb2xsZXIt
PkVtYWlsVGVzdC0+ZGVsaXZlcnkgPSAnZGVidWcnOwoKCQkkaGVhZGVyID0gPDw8SEVBREJMT0MK
VG86IHBvc3RtYXN0ZXJAbG9jYWxob3N0CkZyb206IG5vcmVwbHlAZXhhbXBsZS5jb20KU3ViamVj
dDogQ2FrZSBTTVRQIHRlc3QKSGVhZGVyOgoKRnJvbTogbm9yZXBseUBleGFtcGxlLmNvbQpSZXBs
eS1Ubzogbm9yZXBseUBleGFtcGxlLmNvbQpYLU1haWxlcjogQ2FrZVBIUCBFbWFpbCBDb21wb25l
bnQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB7Q09OVEVOVFRZUEV9CkNvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFBhcmFtZXRlcnM6CgpNZXNzYWdlOgoKCkhFQURCTE9D
OwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5sYXlvdXQgPSAnZGVmYXVsdCc7CgkJ
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSAnZGVmYXVsdCc7CgoJCSR0
ZXh0ID0gPDw8VEVYVEJMT0MKClRoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UKClRoaXMg
ZW1haWwgd2FzIHNlbnQgdXNpbmcgdGhlIENha2VQSFAgRnJhbWV3b3JrLCBodHRwOi8vY2FrZXBo
cC5vcmcuCgpURVhUQkxPQzsKCgkJJGh0bWwgPSA8PDxIVE1MQkxPQwo8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+
RW1haWxUZXN0PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KCTxwPiBUaGlzIGlzIHRoZSBib2R5IG9m
IHRoZSBtZXNzYWdlPC9wPjxwPiA8L3A+Cgk8cD5UaGlzIGVtYWlsIHdhcyBzZW50IHVzaW5nIHRo
ZSA8YSBocmVmPSJodHRwOi8vY2FrZXBocC5vcmciPkNha2VQSFAgRnJhbWV3b3JrPC9hPjwvcD4K
PC9ib2R5Pgo8L2h0bWw+CkhUTUxCTE9DOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0
LT5zZW5kQXMgPSAndGV4dCc7CgkJLy9jYWxsIHRoZSBMb3R1c0xpdmUgY3VzdG9temllZCBmdW5j
dGlvbiB0byBiYXNlNjRfZW5jb2RlIHRoZSBlbWFpbCBib2R5CgkJJHRleHQgPSAkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5fX3dyYXBsaW5lZmVlZHMoJHRleHQpOwoJCSRleHBlY3QgPSAn
PHByZT4nIC4gc3RyX3JlcGxhY2UoJ3tDT05URU5UVFlQRX0nLCAndGV4dC9wbGFpbjsgY2hhcnNl
dD1VVEYtOCcsICRoZWFkZXIpIC4gJHRleHQgLiAiXG4iIC4gJzwvcHJlPic7CgkJJHRoaXMtPmFz
c2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZScpKTsKCQkvL25vIG5lZWQgdG8gY2FsbCAkdGhpcy0+X19vc0Zp
eCgkZXhwZWN0KSwgYmVjYXVzZSBfX3dyYXBsaW5lZmVlZHMoKSBhbHJlYWR5IGRlYWxzIHdpdGgg
YmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFsKCR0aGlzLT5Db250cm9sbGVyLT5T
ZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJGV4cGVjdCk7CgoJCSR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkvL2NhbGwgdGhlIExv
dHVzTGl2ZSBjdXN0b216aWVkIGZ1bmN0aW9uIHRvIGJhc2U2NF9lbmNvZGUgdGhlIGVtYWlsIGJv
ZHkKCQkkaHRtbCA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPl9fd3JhcGxpbmVmZWVk
cygkaHRtbCk7CgkJJGV4cGVjdCA9ICc8cHJlPicgLiBzdHJfcmVwbGFjZSgne0NPTlRFTlRUWVBF
fScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnLCAkaGVhZGVyKSAuICRodG1sIC4gIlxuIiAu
ICc8L3ByZT4nOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRl
c3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7CgkJLy9ubyBuZWVk
IHRvIGNhbGwgJHRoaXMtPl9fb3NGaXgoJGV4cGVjdCksIGJlY2F1c2UgX3dyYXBsaW5lZmVlZHMo
KSBhbHJlYWR5IGRlYWxzIHdpdGggYmFyZSBsaW5lIGZlZWRzCgkJJHRoaXMtPmFzc2VydEVxdWFs
KCR0aGlzLT5Db250cm9sbGVyLT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2Un
KSwgJGV4cGVjdCk7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmRBcyA9ICdi
b3RoJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5z
ZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlJykpOwoJCQoJCSRleHBlY3QgPSBz
dHJfcmVwbGFjZSgne0NPTlRFTlRUWVBFfScsICdtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5k
YXJ5PSJhbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LiciJywg
JGhlYWRlcik7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNo
YXJzZXQ9VVRGLTgnIC4gIlxuIiAuICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQn
IC4gIlxuXG4iIC4gJHRleHQgLiAiXG5cbiI7CgkJJGV4cGVjdCAuPSAnLS1hbHQtJy4kdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5LicnIC4gIlxuIiAuICdDb250ZW50LVR5
cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCcgLiAiXG4iIC4gJ0NvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IGJhc2U2NCcgLiAiXG5cbiIgLiAkaHRtbCAuICJcblxuIjsKCQkkZXhwZWN0IC49
ICctLWFsdC0nLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4gIi0t
XG5cblxuXG4tLSIgLiAkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5fX2JvdW5kYXJ5IC4g
Ii0tXG4iOwoJCSRleHBlY3QgPSAnPHByZT4nIC4gJGV4cGVjdCAuICc8L3ByZT4nOwoKCQkvLyRl
eHBlY3QgY29udGFpbnMgZW1haWwgYm9keSBpbiBib3RoIGh0bWwgYW5kIHRleHQgZm9ybWF0LCBh
bHJlYWR5IGJhc2U2NF9lbmNvZGVkIGJ5IF93cmFwbGluZWZlZWRzKCkKCQkkdGhpcy0+YXNzZXJ0
RXF1YWwoJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVz
c2FnZScpLCAkZXhwZWN0KTsKCX0KLyoqCiAqIHRlc3RTbXRwU2VuZFNvY2tldCBtZXRob2QKICoK
ICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVzdFNtdHBT
ZW5kU29ja2V0KCkgewoJCSR0aGlzLT5za2lwSWYoIUBmc29ja29wZW4oU01UUF9TRVJWRVIsIDI1
KSwgJyVzIE5vIFNNVFAgc2VydmVyIHJ1bm5pbmcgb24gJyAuIFNNVFBfU0VSVkVSKTsKCQkKCQkk
dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXNldCgpOwoJCSRzb2NrZXQgPSYgbmV3IENh
a2VTb2NrZXQoYXJyYXlfbWVyZ2UoYXJyYXkoJ3Byb3RvY29sJz0+J3NtdHAnKSwgJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+c210cE9wdGlvbnMpKTsKCQkkdGhpcy0+Q29udHJvbGxlci0+
RW1haWxUZXN0LT5zZXRDb25uZWN0aW9uU29ja2V0KCRzb2NrZXQpOwoKCQkkdGhpcy0+YXNzZXJ0
VHJ1ZSgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5nZXRDb25uZWN0aW9uU29ja2V0KCkp
OwoKCQkvLyRyZXNwb25zZSA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBTZW5k
KCdIRUxPJywgJzI1MCcpOwoJCS8vJHRoaXMtPmFzc2VydFBhdHRlcm4oJy81MDEgU3ludGF4OiBI
RUxPIGhvc3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7
CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHJlc3BvbnNlID0g
JHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c210cFNlbmQoJ0hFTE8gc29tZWhvc3RuYW1l
JywgJzI1MCcpOwoJCSR0aGlzLT5hc3NlcnROb1BhdHRlcm4oJy81MDEgU3ludGF4OiBIRUxPIGhv
c3RuYW1lLycsICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7Cgl9Ci8q
KgogKiB0ZXN0U2VuZERlYnVnIG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJu
IHZvaWQKICovCglmdW5jdGlvbiB0ZXN0U2VuZERlYnVnKCkgewoJCSR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8g
PSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c3ViamVjdCA9ICdDYWtlIFNNVFAgdGVzdCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVt
YWlsVGVzdC0+cmVwbHlUbyA9ICdub3JlcGx5QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT50ZW1wbGF0ZSA9IG51bGw7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVnJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+
Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNz
YWdlJykpOwoJfQovKioKICogdGVzdENvbnRlbnRTdHJpcHBpbmcgbWV0aG9kCiAqCiAqIEBhY2Nl
c3MgcHVibGljCiAqIEByZXR1cm4gdm9pZAogKi8KCWZ1bmN0aW9uIHRlc3RDb250ZW50U3RyaXBw
aW5nKCkgewoJCSRjb250ZW50ID0gIlByZXZpb3VzIGNvbnRlbnRcbi0tYWx0LVxuQ29udGVudC1U
eXBlQ29udGVudC1UeXBlOjogdGV4dC9odG1sOyBjaGFyc2V0Y2hhcnNldD09dXRmLThcbkNvbnRl
bnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQiOwoJCSRjb250ZW50IC49ICJcblxuPHA+TXkgb3du
IGh0bWwgY29udGVudDwvcD4iOwoKCQkkcmVzdWx0ID0gJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+c3RyaXAoJGNvbnRlbnQsIHRydWUpOwoJCSRleHBlY3RlZCA9ICJQcmV2aW91cyBjb250
ZW50XG4tLWFsdC1cbiB0ZXh0L2h0bWw7IHV0Zi04XG4gN2JpdFxuXG48cD5NeSBvd24gaHRtbCBj
b250ZW50PC9wPiI7CgkJJHRoaXMtPmFzc2VydEVxdWFsKCRyZXN1bHQsICRleHBlY3RlZCk7CgoJ
CSRjb250ZW50ID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gPGEgaHJlZj0ibWFpbHRv
OnRlc3RAZXhhbXBsZS5jb20iPmVtYWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5D
b250cm9sbGVyLT5FbWFpbFRlc3QtPnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQg
PSAkY29udGVudDsKCQkkdGhpcy0+YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgkJ
JGNvbnRlbnQgID0gJzxwPlNvbWUgSFRNTCBjb250ZW50IHdpdGggYW4gJzsKCQkkY29udGVudCAu
PSAnPGEgaHJlZj0ibWFpbHRvOnRlc3RAZXhhbXBsZS5jb20sdGVzdDJAZXhhbXBsZS5jb20iPmVt
YWlsIGxpbms8L2E+JzsKCQkkcmVzdWx0ICA9ICR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3Qt
PnN0cmlwKCRjb250ZW50LCB0cnVlKTsKCQkkZXhwZWN0ZWQgPSAkY29udGVudDsKCQkkdGhpcy0+
YXNzZXJ0RXF1YWwoJHJlc3VsdCwgJGV4cGVjdGVkKTsKCgl9Ci8qKgogKiB0ZXN0TXVsdGlieXRl
IG1ldGhvZAogKgogKiBAYWNjZXNzIHB1YmxpYwogKiBAcmV0dXJuIHZvaWQKICovCglmdW5jdGlv
biB0ZXN0TXVsdGlieXRlKCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0
KCk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2Nh
bGhvc3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBl
eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICfZ
h9iw2Ycg2LHYs9in2YTYqSDYqNi52YbZiNin2YYg2LfZiNmK2YQg2YXYsdiz2YQg2YTZhNmF2LPY
qtmE2YUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBs
eUBleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUg
PSBudWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ2RlYnVn
JzsKCgkJJHN1YmplY3QgPSAnPT9VVEYtOD9CPzJZZllzTm1ISU5peDJMUFlwOW1FMktrZzJLall1
ZG1HMllqWXA5bUdJTmkzMllqWml0bUVJTm1GMkxFPT89JyAuICJcclxuIiAuICcgPT9VVEYtOD9C
PzJMUFpoQ0RaaE5tRTJZWFlzOWlxMllUWmhRPT0/PSc7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5F
bWFpbFRlc3QtPnNlbmRBcyA9ICd0ZXh0JzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29u
dHJvbGxlci0+RW1haWxUZXN0LT5zZW5kKCdUaGlzIGlzIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdl
JykpOwovLwkJcHJlZ19tYXRjaCgnL1N1YmplY3Q6ICguKilIZWFkZXI6L3MnLCAkdGhpcy0+Q29u
dHJvbGxlci0+U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyksICRtYXRjaGVz
KTsKLy8JCSR0aGlzLT5hc3NlcnRFcXVhbCh0cmltKCRtYXRjaGVzWzFdKSwgJHN1YmplY3QpOwoK
CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5zZW5kQXMgPSAnaHRtbCc7CgkJJHRoaXMt
PmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2VuZCgnVGhpcyBpcyB0
aGUgYm9keSBvZiB0aGUgbWVzc2FnZScpKTsKLy8JCXByZWdfbWF0Y2goJy9TdWJqZWN0OiAoLiop
SGVhZGVyOi9zJywgJHRoaXMtPkNvbnRyb2xsZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1h
aWwubWVzc2FnZScpLCAkbWF0Y2hlcyk7Ci8vCQkkdGhpcy0+YXNzZXJ0RXF1YWwodHJpbSgkbWF0
Y2hlc1sxXSksICRzdWJqZWN0KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c2Vu
ZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnNlbmQoJ1RoaXMgaXMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UnKSk7Ci8vCQlwcmVn
X21hdGNoKCcvU3ViamVjdDogKC4qKUhlYWRlcjovcycsICR0aGlzLT5Db250cm9sbGVyLT5TZXNz
aW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKSwgJG1hdGNoZXMpOwovLwkJJHRoaXMt
PmFzc2VydEVxdWFsKHRyaW0oJG1hdGNoZXNbMV0pLCAkc3ViamVjdCk7Cgl9Ci8qKgogKiB1bmRv
Y3VtZW50ZWQgZnVuY3Rpb24KICoKICogQHJldHVybiB2b2lkCiAqIEBhY2Nlc3MgcHVibGljCiAq
LwoJZnVuY3Rpb24gdGVzdFNlbmRBc0lzTm90SWdub3JlZElmQXR0YWNobWVudHNQcmVzZW50KCkg
ewoJCWlmICgkdGhpcy0+c2tpcElmKCFAZnNvY2tvcGVuKFNNVFBfU0VSVkVSLCAyNSksICclcyBO
byBTTVRQIHNlcnZlciBydW5uaW5nIG9uICcgLiBTTVRQX1NFUlZFUikpIHsKCQkJCQlyZXR1cm47
CgkJfQoJCQoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlc2V0KCk7CgkJJHRoaXMt
PkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dG8gPSAncG9zdG1hc3RlckBsb2NhbGhvc3QnOwoJCSR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmZyb20gPSAnbm9yZXBseUBleGFtcGxlLmNvbSc7
CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+c3ViamVjdCA9ICdBdHRhY2htZW50IFRl
c3QnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnJlcGx5VG8gPSAnbm9yZXBseUBl
eGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUgPSBu
dWxsOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0gJ3NtdHAnOwkv
LydkZWJ1Zycgb3IgJ21haWwnIHdvdWxkIGZhaWwKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5hdHRhY2htZW50cyA9IGFycmF5KF9fRklMRV9fKTsKCQkkYm9keSA9ICc8cD5UaGlzIGlz
IHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlPC9wPic7CgoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFp
bFRlc3QtPnNlbmRBcyA9ICdodG1sJzsKCQkkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5zZW5kKCRib2R5KSk7Ci8vCQkkbXNnID0gJHRoaXMtPkNvbnRyb2xs
ZXItPlNlc3Npb24tPnJlYWQoJ01lc3NhZ2UuZW1haWwubWVzc2FnZScpOwovLwkJJHRoaXMtPmFz
c2VydE5vUGF0dGVybignL3RleHRcL3BsYWluLycsICRtc2cpOwovLwkJJHRoaXMtPmFzc2VydFBh
dHRlcm4oJy90ZXh0XC9odG1sLycsICRtc2cpOwoKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxU
ZXN0LT5zZW5kQXMgPSAndGV4dCc7CgkJJHRoaXMtPmFzc2VydFRydWUoJHRoaXMtPkNvbnRyb2xs
ZXItPkVtYWlsVGVzdC0+c2VuZCgkYm9keSkpOwovLwkJJG1zZyA9ICR0aGlzLT5Db250cm9sbGVy
LT5TZXNzaW9uLT5yZWFkKCdNZXNzYWdlLmVtYWlsLm1lc3NhZ2UnKTsKLy8JCSR0aGlzLT5hc3Nl
cnRQYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9QYXR0
ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVz
dC0+c2VuZEFzID0gJ2JvdGgnOwoJCSR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT5Db250cm9sbGVy
LT5FbWFpbFRlc3QtPnNlbmQoJGJvZHkpKTsKLy8JCSRtc2cgPSAkdGhpcy0+Q29udHJvbGxlci0+
U2Vzc2lvbi0+cmVhZCgnTWVzc2FnZS5lbWFpbC5tZXNzYWdlJyk7Ci8vCi8vCQkkdGhpcy0+YXNz
ZXJ0Tm9QYXR0ZXJuKCcvdGV4dFwvcGxhaW4vJywgJG1zZyk7Ci8vCQkkdGhpcy0+YXNzZXJ0Tm9Q
YXR0ZXJuKCcvdGV4dFwvaHRtbC8nLCAkbXNnKTsKLy8JCSR0aGlzLT5hc3NlcnRQYXR0ZXJuKCcv
bXVsdGlwYXJ0XC9hbHRlcm5hdGl2ZS8nLCAkbXNnKTsKCX0KLyoqCiAqIHRlc3RSZXNldCBtZXRo
b2QKICoKICogQGFjY2VzcyBwdWJsaWMKICogQHJldHVybiB2b2lkCiAqLwoJZnVuY3Rpb24gdGVz
dFJlc2V0KCkgewoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRlbXBsYXRlID0gJ3Rl
c3RfdGVtcGxhdGUnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvID0gJ3Rlc3Qu
cmVjaXBpZW50QGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5m
cm9tID0gJ3Rlc3Quc2VuZGVyQGV4YW1wbGUuY29tJzsKCQkkdGhpcy0+Q29udHJvbGxlci0+RW1h
aWxUZXN0LT5yZXBseVRvID0gJ3Rlc3QucmVwbHl0b0BleGFtcGxlLmNvbSc7CgkJJHRoaXMtPkNv
bnRyb2xsZXItPkVtYWlsVGVzdC0+cmV0dXJuID0gJ3Rlc3QucmV0dXJuQGV4YW1wbGUuY29tJzsK
CQkkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5jYyA9IGFycmF5KCdjYzFAZXhhbXBsZS5j
b20nLCAnY2MyQGV4YW1wbGUuY29tJyk7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+
YmNjID0gYXJyYXkoJ2JjYzFAZXhhbXBsZS5jb20nLCAnYmNjMkBleGFtcGxlLmNvbScpOwoJCSR0
aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnN1YmplY3QgPSAnVGVzdCBzdWJqZWN0JzsKCQkk
dGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zID0gJ1gtYWRkaXRp
b25hbC1oZWFkZXInOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmRlbGl2ZXJ5ID0g
J3NtdHAnOwoJCSR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBPcHRpb25zWydob3N0
J10gPSAnYmxhaCc7CgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+YXR0YWNobWVudHMg
PSBhcnJheSgnYXR0YWNobWVudDEnLCAnYXR0YWNobWVudDInKTsKCgkJJHRoaXMtPmFzc2VydEZh
bHNlKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNlbmQoJ1Nob3VsZCBub3Qgd29yaycp
KTsKCgkJJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+cmVzZXQoKTsKCgkJJHRoaXMtPmFz
c2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+dGVtcGxhdGUpOwoJCSR0aGlz
LT5hc3NlcnROdWxsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnRvKTsKCQkkdGhpcy0+
YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5mcm9tKTsKCQkkdGhpcy0+
YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXBseVRvKTsKCQkkdGhp
cy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5yZXR1cm4pOwoJCSR0
aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Y2MsIGFy
cmF5KCkpOwoJCSR0aGlzLT5hc3NlcnRJZGVudGljYWwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWls
VGVzdC0+YmNjLCBhcnJheSgpKTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJvbGxl
ci0+RW1haWxUZXN0LT5zdWJqZWN0KTsKCQkkdGhpcy0+YXNzZXJ0TnVsbCgkdGhpcy0+Q29udHJv
bGxlci0+RW1haWxUZXN0LT5hZGRpdGlvbmFsUGFyYW1zKTsKCQkkdGhpcy0+YXNzZXJ0SWRlbnRp
Y2FsKCR0aGlzLT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPmdldEhlYWRlcnMoKSwgYXJyYXkoKSk7
CgkJJHRoaXMtPmFzc2VydE51bGwoJHRoaXMtPkNvbnRyb2xsZXItPkVtYWlsVGVzdC0+Z2V0Qm91
bmRhcnkoKSk7CgkJJHRoaXMtPmFzc2VydElkZW50aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1h
aWxUZXN0LT5nZXRNZXNzYWdlKCksIGFycmF5KCkpOwoJCSR0aGlzLT5hc3NlcnROdWxsKCR0aGlz
LT5Db250cm9sbGVyLT5FbWFpbFRlc3QtPnNtdHBFcnJvcik7CgkJJHRoaXMtPmFzc2VydElkZW50
aWNhbCgkdGhpcy0+Q29udHJvbGxlci0+RW1haWxUZXN0LT5hdHRhY2htZW50cywgYXJyYXkoKSk7
Cgl9Ci8qKgogKiBvc0ZpeCBtZXRob2QKICoKICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAqIEBh
Y2Nlc3MgcHJpdmF0ZQogKiBAcmV0dXJuIHN0cmluZwogKi8KCWZ1bmN0aW9uIF9fb3NGaXgoJHN0
cmluZykgewoJCXJldHVybiBzdHJfcmVwbGFjZShhcnJheSgiXHJcbiIsICJcciIpLCAiXG4iLCAk
c3RyaW5nKTsKCX0KfQo/Pg==
--026a2bea167826bf111c47c4213d68b1--



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message