[Mono-list] [PATCH] mcs error handling and compiler tests

Andrew Birkett adb@tardis.ed.ac.uk
Tue, 25 Jun 2002 15:02:36 +0100 (BST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-1804928587-1025013756=:22467
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 25 Jun 2002, Andrew Birkett wrote:

> One problem:  I created a new file at mcs/errors/ChangeLog but I can't get
> it to be in my patch since I can't "cvs add" it without write permission
> on the CVS server.  So, I've attached it seperately to this mail.  It
> should be added as 'errors/ChangeLog'.

I've just checked the patch on a windows box, and there's two changes to
make it work:  Change the TODO attribute in driver.cs to a // TODO
comment, and remove the unreferenced variable which csc complains about.
These are obvious once you apply the patch and try to build mcs.  I do all
my development on my home linux box, and can only check stuff on windows
during the day at work!

I've included a revised patch with this email to simplify things.

Andrew

- www.tardis.ed.ac.uk/~adb -

---559023410-1804928587-1025013756=:22467
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="errors2.patch"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GS4.4.33.0206251502350.22467@omega.tardis.ed.ac.uk>
Content-Description: Revised patch for errors/tests
Content-Disposition: attachment; filename="errors2.patch"

PyBwYXRjaA0KPyBjbGFzcy9jb3JsaWIvVGVzdC9TdHJlYW1Xcml0ZXJUZXN0
LnRlbXANCj8gZXJyb3JzL0NoYW5nZUxvZw0KPyBlcnJvcnMvY3MxMDIxLmNz
DQo/IG1jcy9hDQpJbmRleDogZXJyb3JzL2NzMDE3Ni5jcw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9tb25vL21jcy9lcnJvcnMvY3Mw
MTc2LmNzLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4xLjEuMQ0KZGlmZiAt
dSAtcjEuMS4xLjEgY3MwMTc2LmNzDQotLS0gZXJyb3JzL2NzMDE3Ni5jcwk4
IEp1biAyMDAxIDE4OjQ1OjM1IC0wMDAwCTEuMS4xLjENCisrKyBlcnJvcnMv
Y3MwMTc2LmNzCTI1IEp1biAyMDAyIDEzOjU4OjI1IC0wMDAwDQpAQCAtMSw3
ICsxLDcgQEANCiAvLyBjczAxNzYuY3M6IGNhbm5vdCBiZSBhY2Nlc3NlZCB3
aXRoIGFuIGluc3RhbmNlIHJlZmVyZW5jZSwgdXNlIHR5cGVuYW1lIGluc3Rl
YWQNCiAvLyBMaW5lOiAxMg0KIGNsYXNzIFggew0KLQlzdGF0aWMgdm9pZCB2
b2lkX21ldGhvZCAoKQ0KKwlwdWJsaWMgc3RhdGljIHZvaWQgdm9pZF9tZXRo
b2QgKCkNCiAJew0KIAl9DQogfQ0KSW5kZXg6IGVycm9ycy9jczAxOTYuY3MN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvbW9uby9tY3Mv
ZXJyb3JzL2NzMDE5Ni5jcyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQ0K
ZGlmZiAtdSAtcjEuMSBjczAxOTYuY3MNCi0tLSBlcnJvcnMvY3MwMTk2LmNz
CTIxIEZlYiAyMDAyIDAyOjM1OjAxIC0wMDAwCTEuMQ0KKysrIGVycm9ycy9j
czAxOTYuY3MJMjUgSnVuIDIwMDIgMTM6NTg6MjUgLTAwMDANCkBAIC02LDYg
KzYsNiBAQA0KIAkJaW50ICpwID0gbnVsbDsNCiANCiAJCWlmIChwIFsxMCw0
XSA9PSA0KQ0KLQkJCTsNCisJCQlyZXR1cm47DQogCX0NCiB9DQpJbmRleDog
ZXJyb3JzL2NzMDI0Mi5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNT
IGZpbGU6IC9tb25vL21jcy9lcnJvcnMvY3MwMjQyLmNzLHYNCnJldHJpZXZp
bmcgcmV2aXNpb24gMS4xDQpkaWZmIC11IC1yMS4xIGNzMDI0Mi5jcw0KLS0t
IGVycm9ycy9jczAyNDIuY3MJMjEgRmViIDIwMDIgMDI6MzU6MDEgLTAwMDAJ
MS4xDQorKysgZXJyb3JzL2NzMDI0Mi5jcwkyNSBKdW4gMjAwMiAxMzo1ODoy
NSAtMDAwMA0KQEAgLTYsNiArNiw2IEBADQogCQl2b2lkICpwID0gbnVsbDsN
CiANCiAJCWlmIChwIFsxMF0gPT0gNCkNCi0JCQk7DQorCQkJcmV0dXJuOw0K
IAl9DQogfQ0KSW5kZXg6IGVycm9ycy9jczAyNTUuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NClJDUyBmaWxlOiAvbW9uby9tY3MvZXJyb3JzL2NzMDI1
NS5jcyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQ0KZGlmZiAtdSAtcjEu
MSBjczAyNTUuY3MNCi0tLSBlcnJvcnMvY3MwMjU1LmNzCTIxIEZlYiAyMDAy
IDE4OjU4OjM3IC0wMDAwCTEuMQ0KKysrIGVycm9ycy9jczAyNTUuY3MJMjUg
SnVuIDIwMDIgMTM6NTg6MjUgLTAwMDANCkBAIC0xLDEzICsxLDEzIEBADQog
Ly8gY3MwMjU1LmNzOiBDYW4gbm90IHVzZSBzdGFja2FsbG9jIGluIGZpbmFs
bHkgb3IgY2F0Y2gNCiAvLyBMaW5lOiAxMA0KIHVuc2FmZSBjbGFzcyBYIHsN
Ci0Jc3RyaW5nIHM7DQogDQogCXN0YXRpYyB2b2lkIE1haW4gKCkNCiAJew0K
IAkJdHJ5IHsNCiAJCX0gY2F0Y2ggew0KLQkJY2hhciAqcHRyID0gc3RhY2th
bGxvYyBjaGFyIFsxMFVdOw0KLX0NCisJCWNoYXIgKnB0ciA9IHN0YWNrYWxs
b2MgY2hhciBbMTBdOw0KKwkJcHRyID0gcHRyOw0KKwkJfQ0KIAl9DQogfQkN
CkluZGV4OiBlcnJvcnMvZmFpbA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
UkNTIGZpbGU6IC9tb25vL21jcy9lcnJvcnMvZmFpbCx2DQpyZXRyaWV2aW5n
IHJldmlzaW9uIDEuMw0KZGlmZiAtdSAtcjEuMyBmYWlsDQotLS0gZXJyb3Jz
L2ZhaWwJMTkgSmFuIDIwMDIgMDQ6Mjc6MzQgLTAwMDAJMS4zDQorKysgZXJy
b3JzL2ZhaWwJMjUgSnVuIDIwMDIgMTM6NTg6MjUgLTAwMDANCkBAIC0xLDUz
ICsxLDMwIEBADQogVGhlIGZvbGxvd2luZyB0ZXN0cyBmYWlsZWQ6IA0KIA0K
LWNzMDA1MS5jcywgY3MwMDYwLmNzLCBjczAxMTEuY3MNCi0NCitjczAwNTEu
Y3M6IFdlIGRvbid0IGNvbXBsYWluIGFib3V0IGluY29uc2lzdGVudCBhY2Nl
c3NpYmlsaXR5Lg0KK2NzMDA2MC5jczogV2UgZG9uJ3QgY29tcGxhaW4gYWJv
dXQgaW5jb25zaXN0ZW50IGFjY2Vzc2liaWxpdHkuDQogY3MwMTA4LmNzOiBX
ZSBzaG91bGQgcmUtZW5hYmxlIHRoZSB0ZXN0IGNvZGUgaW4gdGhlIGNvbXBp
bGVyDQogY3MwMTEwLmNzOiBTdGFjayBvdmVyZmxvdyBpbiB0aGUgY29tcGls
ZXINCi0NCi1jczAxMTguY3M6DQotCVdlIHJlcG9ydCB0aGUgZXJyb3IsIGJ1
dCB0aGUgQ1NDIGVycm9yIGdpdmVzIG1vcmUgaW5mb3JtYXRpb24uDQotDQot
Y3MwMTIxLmNzOiBGdW5jdGlvbiBkZWFtYmlndWF0b3IgZG9lcyBub3Qgd29y
ayBoZXJlDQotY3MwMTM2LTIuY3MgY3MwMTM2LmNzOiBTaW1pbGFyIGVycm9y
IHJlcG9ydGVkIChyZXVzZSBvZiB2YXJpYWJsZSBuYW1lLCAxMjgpDQotY3Mw
MTU3LmNzOiBJbnRlcm5hbCBjb21waWxlciBlcnJvciAobnVsbCBwb2ludGVy
IHJlZmVyZW5jZSkNCitjczAxMTEuY3M6IFdlIGRvbid0IGNvbXBsYWluIGFi
b3V0IHNlY29uZCBvY2N1cmFuY2Ugb2YgbWV0aG9kIGRlZmluaXRpb24uDQor
Y3MwMTE4LmNzOiBXZSByZXBvcnQgdGhlIGVycm9yLCBidXQgdGhlIENTQyBl
cnJvciBnaXZlcyBtb3JlIGluZm9ybWF0aW9uLg0KK2NzMDEzNi5jczogU2lt
aWxhciBlcnJvciByZXBvcnRlZCAocmV1c2Ugb2YgdmFyaWFibGUgbmFtZSwg
MTI4KQ0KK2NzMDEzNi0yLmNzOiBTaW1pbGFyIGVycm9yIHJlcG9ydGVkIChy
ZXVzZSBvZiB2YXJpYWJsZSBuYW1lLCAxMjgpDQogY3MwMTY0LmNzOiBXZSBk
b250IGVtaXQgdGhlIHdhcm5pbmcgZm9yIGFuIHVudXNlZCBsYWJlbA0KLWNz
MDE2NS0yLmNzIGNzMDE2NS5jczoNCi0JV2UgbmVlZCBkYXRhIGZsb3cgYW5h
bHlzaXMNCi0NCi1jczAxNzEuY3MgDQotCVdlIGRvIG5vdCB0cmFjayB1bmFz
c2lnbmVkIHN0cnVjdCBmaWVsZHMgb24gc3RydWN0IGNvbnN0cnVjdG9ycyAN
Ci0NCi1jczAyMTYuY3M6DQotCVdlIGRvIG5vdCByZXBvcnQgbWlzc2luZyBv
cGVyYXRvcnMuDQotDQotY3MwMjM0LmNzOg0KLQlXaWxsIGJlIGhhcmQgdG8g
Zml4Ow0KLQ0KLWNzMDY1NC5jczoNCi0JQ29tcGlsZXIgY3Jhc2gNCi0NCi1j
czEwMDEuY3M6DQotCUNvbXBpbGVyIGVtaXRzIHN5bnRheCBlcnJvcjsgIEl0
cyBvay4NCi0NCi0JQ29tcGlsZXIgY3Jhc2hlcw0KLWNzMTUwMS5jczoNCi0J
Q29tcGlsZXIgY3Jhc2hlcy4gIEVhc3kgdG8gZml4DQotDQotY3MxNTEzLmNz
Og0KLQlTeW50YXggZXJyb3I7ICBXZSBjb3VsZCBwcm92aWRlIGJldHRlciBt
ZXNzYWdlDQotDQotY3MxNTE4LmNzOg0KLQlTeW50YXggZXJyb3I7ICBXZSBj
b3VsZCBwcm92aWRlIGJldHRlciBtZXNzYWdlDQotDQotY3MxNTI1LmNzOg0K
LQlTeW50YXggZXJyb3I7ICBXZSBjb3VsZCBwcm92aWRlIGJldHRlciBtZXNz
YWdlDQotDQotY3MxNTI4LmNzOg0KLQlTeW50YXggZXJyb3I7ICBXZSBjb3Vs
ZCBwcm92aWRlIGJldHRlciBtZXNzYWdlDQotDQotY3MxNTI5LmNzOiANCi0J
U3ludGF4IGVycm9yOyAgV2UgY291bGQgcHJvdmlkZSBiZXR0ZXIgbWVzc2Fn
ZQ0KK2NzMDE2NS5jczogV2UgbmVlZCBkYXRhIGZsb3cgYW5hbHlzaXMNCitj
czAxNjUtMi5jczogV2UgbmVlZCBkYXRhIGZsb3cgYW5hbHlzaXMNCitjczAx
NzEuY3M6IFdlIGRvIG5vdCB0cmFjayB1bmFzc2lnbmVkIHN0cnVjdCBmaWVs
ZHMgb24gc3RydWN0IGNvbnN0cnVjdG9ycyANCitjczAyMTYuY3M6IFdlIGRv
IG5vdCByZXBvcnQgbWlzc2luZyBvcGVyYXRvcnMuDQorY3MwMjM0LmNzOiBX
aWxsIGJlIGhhcmQgdG8gZml4Ow0KK2NzMDI1NS5jczogRXJyb3IgaXNuJ3Qg
ZmxhZ2dlZC4NCitjczA1MjMuY3M6IEVycm9yIGlzbid0IGZsYWdnZWQuDQor
Y3MwNTI5LmNzOiBXZSBnZXQgZXJyb3IgQ1MwMTQ2IGluc3RlYWQNCitjczA2
NTQuY3M6IENvbXBpbGVyIGNyYXNoDQorY3MxMDAxLmNzOiBDb21waWxlciBl
bWl0cyBzeW50YXggZXJyb3I7ICBJdHMgb2suDQorY3MxNTEzLmNzOiBTeW50
YXggZXJyb3I7ICBXZSBjb3VsZCBwcm92aWRlIGJldHRlciBtZXNzYWdlDQor
Y3MxNTE4LmNzOiBTeW50YXggZXJyb3I7ICBXZSBjb3VsZCBwcm92aWRlIGJl
dHRlciBtZXNzYWdlDQorY3MxNTI1LmNzOiBTeW50YXggZXJyb3I7ICBXZSBj
b3VsZCBwcm92aWRlIGJldHRlciBtZXNzYWdlDQorY3MxNTI4LmNzOiBTeW50
YXggZXJyb3I7ICBXZSBjb3VsZCBwcm92aWRlIGJldHRlciBtZXNzYWdlDQor
Y3MxNTI5LmNzOiBTeW50YXggZXJyb3I7ICBXZSBjb3VsZCBwcm92aWRlIGJl
dHRlciBtZXNzYWdlDQorY3MxNTUyLmNzOiBTeW50YXggZXJyb3I7ICBXZSBj
b3VsZCBwcm92aWRlIGJldHRlciBtZXNzYWdlDQorY3MxNjA0LmNzOiBFcnJv
ciBpc24ndCBmbGFnZ2VkLg0KK2NzLTIwLmNzOiBBdHRyaWJ1dGUgZXJyb3Ig
aXNuJ3QgZmxhZ2dlZA0KIA0KLWNzMTU1Mi5jczoNCi0JU3ludGF4IGVycm9y
OyAgV2UgY291bGQgcHJvdmlkZSBiZXR0ZXIgbWVzc2FnZQ0KSW5kZXg6IGVy
cm9ycy9tYWtlZmlsZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZp
bGU6IC9tb25vL21jcy9lcnJvcnMvbWFrZWZpbGUsdg0KcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjQNCmRpZmYgLXUgLXIxLjQgbWFrZWZpbGUNCi0tLSBlcnJv
cnMvbWFrZWZpbGUJMTggSmFuIDIwMDIgMDI6MDk6NTMgLTAwMDAJMS40DQor
KysgZXJyb3JzL21ha2VmaWxlCTI1IEp1biAyMDAyIDEzOjU4OjI1IC0wMDAw
DQpAQCAtMSwxMCArMSwxMiBAQA0KICMNCiAjIENvbXBpbGUgYXQgdGhlIG1h
eGltdW0gd2FybmluZyBsZXZlbCB0byBwcm9iZSBmb3Igd2FybmluZ3MNCiAj
DQotTUNTPS4uL21jcy9tY3MuZXhlIC0td2xldmVsIDQNCisjTUNTPW1vbm8g
Li4vbWNzL21jcy5leGUgLS13bGV2ZWwgNCAjIGZvciBsaW51eA0KK01DUz0u
Li9tY3MvbWNzLmV4ZSAtLXdsZXZlbCA0ICMgZm9yIHdpbmRvd3MNCisNCiAN
CiBhbGw6DQotCWZhaWxlZD1mYWxzZTsgXA0KKwlAIGZhaWxlZD1mYWxzZTsg
XA0KIAlmb3IgaSBpbiBjcyouY3M7IGRvIFwNCiAJCWNhc2UgJCRpIGluIFwN
CiAJCQljc1swLTldKi1bMC05XSpjcykgXA0KQEAgLTE0LDIwICsxNiwxMiBA
QA0KIAkJCWVycm9yPWBlY2hvICQkaSB8IHNlZCAtZSAncy9jcyovLycgLWUg
J3MvLmNzLy8nYDsgXA0KIAkJCTs7XA0KIAkJZXNhYzsgXA0KLQkJZWNobyAk
KE1DUykgLS1wcm9iZSAkJGVycm9yICQkaTsgXA0KLQkJJChNQ1MpIC0tcHJv
YmUgJCRlcnJvciAxICQkaSA+IC9kZXYvbnVsbDsgXA0KLQkJY29kZT0kJD87
IFwNCi0JCWlmIHRlc3QgJCRjb2RlICE9IDEyMzsgdGhlbiBcDQotCQkJZWNo
byBDb2RlIGlzOiAkJGNvZGU7IFwNCi0JCQlpZiBbIHgkJGNvZGUgPSB4MTI0
IF07IHRoZW4gXA0KLQkJCQllY2hvICJDb21waWxlciBmYWlsZWQgdG8gZmxh
ZyAkJGkiOyBcDQotCQkJZWxzZSBcDQotCQkJCWVjaG8gIkNvbXBpbGVyIGZh
aWxlZCB0byBjb21waWxlICQkaSI7IFwNCi0JCQlmaTsgXA0KLQkJCWZsaXN0
PSIkJGZsaXN0ICQkaSI7IFwNCi0JCQlmYWlsZWQ9dHJ1ZTsgXA0KLQkJZWxz
ZSBcDQotCQkJZWNobyB0ZXN0ICQkaSBvazsgXA0KKwkJZWNobyAtbiAiUnVu
bmluZyB0ZXN0ICQkaSAuLi4gIjsgXA0KKwkJaWYgJChNQ1MpIC0tdW5zYWZl
IC0tZXhwZWN0LWVycm9yICQkZXJyb3IgJCRpID4gL2Rldi9udWxsOyBcDQor
CQl0aGVuIGVjaG8gT0s7IFwNCisJCWVsc2UgZWNobyBGQUlMRUQ7IFwNCisJ
CSAgICAgZmxpc3Q9IiQkZmxpc3QgJCRpIjsgXA0KKwkJICAgICBmYWlsZWQ9
dHJ1ZTsgXA0KIAkJZmk7IFwNCiAJZG9uZTsgXA0KIAlpZiAkJGZhaWxlZDsg
dGhlbiBcDQpJbmRleDogbWJhcy9tYi1wYXJzZXIuamF5DQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpSQ1MgZmlsZTogL21vbm8vbWNzL21iYXMvbWItcGFy
c2VyLmpheSx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNQ0KZGlmZiAtdSAt
cjEuNSBtYi1wYXJzZXIuamF5DQotLS0gbWJhcy9tYi1wYXJzZXIuamF5CTgg
SnVuIDIwMDIgMTU6MzQ6NDYgLTAwMDAJMS41DQorKysgbWJhcy9tYi1wYXJz
ZXIuamF5CTI1IEp1biAyMDAyIDEzOjU4OjI1IC0wMDAwDQpAQCAtNDgyLDcg
KzQ4Miw3IEBADQogCX0NDQogfQkJICAgDQ0KIA0NCi1wdWJsaWMgb3ZlcnJp
ZGUgaW50IHBhcnNlICgpDQ0KK3B1YmxpYyBvdmVycmlkZSB2b2lkIHBhcnNl
ICgpDQ0KIHsNDQogCWN1cnJlbnRfbmFtZXNwYWNlID0gbmV3IE5hbWVzcGFj
ZSAobnVsbCwgIiIpOw0NCiAJY3VycmVudF9jb250YWluZXIgPSBSb290Q29u
dGV4dC5UcmVlLlR5cGVzOw0NCkBAIC00OTMsNyArNDkzLDYgQEANCiAJbGV4
ZXIgPSBuZXcgVG9rZW5pemVyIChpbnB1dCwgbmFtZSwgZGVmaW5lcyk7DQ0K
IAlTdHJpbmdCdWlsZGVyIHZhbHVlID0gbmV3IFN0cmluZ0J1aWxkZXIgKCk7
DQ0KIA0NCi0JZ2xvYmFsX2Vycm9ycyA9IDA7DQ0KIAl0cnkgDQ0KIAl7DQ0K
IAkJaWYgKHlhY2NfdmVyYm9zZV9mbGFnKQ0NCkBAIC01MDUsMTAgKzUwNCw3
IEBADQogCXsNDQogCQlDb25zb2xlLldyaXRlTGluZSAobGV4ZXIubG9jYXRp
b24gKyAiICA6IFBhcnNpbmcgZXJyb3IgIik7DQ0KIAkJQ29uc29sZS5Xcml0
ZUxpbmUgKGUpOw0NCi0JCWdsb2JhbF9lcnJvcnMrKzsNDQogCX0NDQotDQ0K
LQlyZXR1cm4gZ2xvYmFsX2Vycm9yczsNDQogfQ0NCiANDQogLyogZW5kIGVu
ZCBlbmQgKi8NDQpJbmRleDogbWNzL0NoYW5nZUxvZw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KUkNTIGZpbGU6IC9tb25vL21jcy9tY3MvQ2hhbmdlTG9n
LHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS41MjkNCmRpZmYgLXUgLXIxLjUy
OSBDaGFuZ2VMb2cNCi0tLSBtY3MvQ2hhbmdlTG9nCTIyIEp1biAyMDAyIDE5
OjM2OjMyIC0wMDAwCTEuNTI5DQorKysgbWNzL0NoYW5nZUxvZwkyNSBKdW4g
MjAwMiAxMzo1ODoyNyAtMDAwMA0KQEAgLTEsMyArMSwyOSBAQA0KKzIwMDIt
MDYtMjUgIEFuZHJldyBCaXJrZXR0ICA8YWRiQHRhcmRpcy5lZC5hYy51az4N
CisNCisJKiBkcml2ZXIuY3M6IE1hZGUgZXJyb3IgaGFuZGxpbmcgbW9yZSBj
b25zaXN0ZW50LiAgRXJyb3JzIG5vdw0KKwl0cmFja2VkIGJ5IFJlcG9ydCBj
bGFzcywgc28gbWFueSBtZXRob2RzIHdoaWNoIHVzZWQgdG8gcmV0dXJuIGlu
dA0KKwlub3cgcmV0dXJuIHZvaWQuICBNYWluKCkgbm93IHByaW50cyBzdWNj
ZXNzL2ZhaWx1cmUgYW5kIA0KKwllcnJvcnMvd2FybmluZ3MgbWVzc2FnZS4N
CisNCisJUmVuYW1lZCAnLS1wcm9iZScgY29tcGlsZXIgYXJndW1lbnQgdG8g
Jy0tZXhwZWN0LWVycm9yJy4gIFJlbW92ZWQNCisJdGhlIG1hZ2ljIG51bWJl
ciByZXR1cm4gdmFsdWVzICgxMjMgYW5kIDEyNCkuICBOb3csIGlmIHRoZQ0K
KwlleHBlY3RlZCBlcnJvciBvY2N1cnMsIHRoZSBjb21waWxlciBleGl0cyB3
aXRoIHN1Y2Nlc3MgKGV4aXQgdmFsdWUNCisJMCkuICBJZiB0aGUgY29tcGls
YXRpb24gY29tcGxldGVzIHdpdGhvdXQgc2VlaW5nIHRoYXQgcGFydGljdWxh
cg0KKwllcnJvciwgdGhlIGNvbXBpbGVyIGV4aXRzIHdpdGggZmFpbHVyZSAo
ZXhpdCB2YWx1ZSAxKS4gIFRoZQ0KKwltYWtlZmlsZSBpbiBtY3MvZXJyb3Jz
IGhhcyBiZWVuIGNoYW5nZWQgdG8gaGFuZGxlIHRoZSBuZXcgYmVoYXZpb3Vy
Lg0KKw0KKwkqIHJlcG9ydC5jczogTWFkZSAnZXhwZWN0ZWQgZXJyb3InIG51
bWJlciBhIHByb3BlcnR5IGFuZCByZW5hbWVkDQorCWl0IGZyb20gJ1Byb2Jl
JyB0byAnRXhwZWN0ZWRFcnJvcicuDQorDQorCSogZ2VuZXJpY3BhcnNlci5j
czogUmVtb3ZlZCBlcnJvciBoYW5kbGluZyBzdXBwb3J0LCBzaW5jZSBpdCBp
cw0KKwlub3cgYWxsIGRvbmUgYnkgUmVwb3J0IGNsYXNzLg0KKw0KKwkqIGNz
LXBhcnNlci5qYXksIG1iLXBhcnNlci5qYXk6IEVycm9ycyBhcmUgdHJhY2tl
ZCBieSBSZXBvcnQNCisJY2xhc3MsIHNvIHBhcnNlKCkgbm8gbG9uZ2VyIHJl
dHVybnMgYW4gaW50Lg0KKw0KKwkqIG5hbWVzcGFjZS5jczogVXNlIFJlcG9y
dC5FcnJvciBpbnN0ZWFkIG9mIEdlbmVyaWNQYXJzZXIuZXJyb3INCisNCisJ
DQogMjAwMi0wNi0yMiAgTWlndWVsIGRlIEljYXphICA8bWlndWVsQHhpbWlh
bi5jb20+DQogDQogCSogY2xhc3MuY3MgKFR5cGVDb250YWluZXIuQWRkTWV0
aG9kLCBUeXBlQ29udGFpbmVyLkFkZEluZGV4ZXIsDQpJbmRleDogbWNzL2Nz
LXBhcnNlci5qYXkNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxl
OiAvbW9uby9tY3MvbWNzL2NzLXBhcnNlci5qYXksdg0KcmV0cmlldmluZyBy
ZXZpc2lvbiAxLjE3OA0KZGlmZiAtdSAtcjEuMTc4IGNzLXBhcnNlci5qYXkN
Ci0tLSBtY3MvY3MtcGFyc2VyLmpheQkyMCBKdW4gMjAwMiAxMjoyMTo0MyAt
MDAwMAkxLjE3OA0KKysrIG1jcy9jcy1wYXJzZXIuamF5CTI1IEp1biAyMDAy
IDEzOjU4OjI4IC0wMDAwDQpAQCAtMzkzMywyOCArMzkzMywyMCBAQA0KIAls
ZXhlciA9IG5ldyBUb2tlbml6ZXIgKGlucHV0LCBuYW1lLCBkZWZpbmVzKTsN
CiB9DQogDQotcHVibGljIG92ZXJyaWRlIGludCBwYXJzZSAoKQ0KK3B1Ymxp
YyBvdmVycmlkZSB2b2lkIHBhcnNlICgpDQogew0KLQlnbG9iYWxfZXJyb3Jz
ID0gMDsNCiAJdHJ5IHsNCiAJCWlmICh5YWNjX3ZlcmJvc2VfZmxhZykNCiAJ
CQl5eXBhcnNlIChsZXhlciwgbmV3IHl5ZGVidWcueXlEZWJ1Z1NpbXBsZSAo
KSk7DQogCQllbHNlDQogCQkJeXlwYXJzZSAobGV4ZXIpOw0KIAl9IGNhdGNo
IChFeGNlcHRpb24gZSl7DQotCQkvLyBDb25zb2xlLldyaXRlTGluZSAoIkZh
dGFsIGVycm9yOiAiICsgbmFtZSk7DQotCQkvLyBDb25zb2xlLldyaXRlTGlu
ZSAobGV4ZXIubG9jYXRpb24pOw0KLQ0KLQkJLy8gDQogCQkvLyBQbGVhc2Ug
ZG8gbm90IHJlbW92ZSB0aGlzLCBpdCBpcyB1c2VkIGR1cmluZyBkZWJ1Z2dp
bmcNCiAJCS8vIG9mIHRoZSBncmFtbWFyDQogCQkvLw0KIAkJQ29uc29sZS5X
cml0ZUxpbmUgKGxleGVyLmxvY2F0aW9uICsgIiAgOiBQYXJzaW5nIGVycm9y
ICIpOw0KIAkJQ29uc29sZS5Xcml0ZUxpbmUgKGUpOw0KLQkJZ2xvYmFsX2Vy
cm9ycysrOw0KIAl9DQotCQ0KLQlyZXR1cm4gZ2xvYmFsX2Vycm9yczsNCiB9
DQogDQogLyogZW5kIGVuZCBlbmQgKi8NCkluZGV4OiBtY3MvZHJpdmVyLmNz
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL21vbm8vbWNz
L21jcy9kcml2ZXIuY3Msdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjkyDQpk
aWZmIC11IC1yMS45MiBkcml2ZXIuY3MNCi0tLSBtY3MvZHJpdmVyLmNzCTEz
IEp1biAyMDAyIDAwOjE2OjAzIC0wMDAwCTEuOTINCisrKyBtY3MvZHJpdmVy
LmNzCTI1IEp1biAyMDAyIDEzOjU4OjI4IC0wMDAwDQpAQCAtNDksOCArNDks
NiBAQA0KIAkJLy8gV2hldGhlciB3ZSB3YW50IHRvIG9ubHkgcnVuIHRoZSB0
b2tlbml6ZXINCiAJCXN0YXRpYyBib29sIHRva2VuaXplID0gZmFsc2U7DQog
CQkNCi0JCXN0YXRpYyBpbnQgZXJyb3JfY291bnQgPSAwOw0KLQ0KIAkJc3Rh
dGljIHN0cmluZyBmaXJzdF9zb3VyY2U7DQogDQogCQlzdGF0aWMgVGFyZ2V0
IHRhcmdldCA9IFRhcmdldC5FeGU7DQpAQCAtOTUsMTYgKzkzLDE1IEBADQog
CQkJCShpbnQpIHNwYW4uVG90YWxTZWNvbmRzLCBzcGFuLk1pbGxpc2Vjb25k
cywgbXNnKTsNCiAJCX0NCiAJICAgICAgIA0KLQkJc3RhdGljIGludCB0b2tl
bml6ZV9maWxlIChzdHJpbmcgaW5wdXRfZmlsZSkNCisJCXN0YXRpYyB2b2lk
IHRva2VuaXplX2ZpbGUgKHN0cmluZyBpbnB1dF9maWxlKQ0KIAkJew0KIAkJ
CVN0cmVhbSBpbnB1dDsNCiANCiAJCQl0cnkgew0KIAkJCQlpbnB1dCA9IEZp
bGUuT3BlblJlYWQgKGlucHV0X2ZpbGUpOw0KLQ0KIAkJCX0gY2F0Y2ggew0K
IAkJCQlSZXBvcnQuRXJyb3IgKDIwMDEsICJTb3VyY2UgZmlsZSAnIiArIGlu
cHV0X2ZpbGUgKyAiJyBjb3VsZCBub3QgYmUgb3BlbmVkIik7DQotCQkJCXJl
dHVybiAxOw0KKwkJCQlyZXR1cm47DQogCQkJfQ0KIA0KIAkJCXVzaW5nIChp
bnB1dCl7DQpAQCAtMTIwLDcyICsxMTcsNjYgQEANCiAJCQkJQ29uc29sZS5X
cml0ZUxpbmUgKCJUb2tlbml6ZWQ6ICIgKyB0b2tlbnMgKyAiIGZvdW5kICIg
KyBlcnJvcnMgKyAiIGVycm9ycyIpOw0KIAkJCX0NCiAJCQkNCi0JCQlyZXR1
cm4gMDsNCisJCQlyZXR1cm47DQogCQl9DQotCQkNCi0JCXN0YXRpYyBpbnQg
cGFyc2UgKHN0cmluZyBpbnB1dF9maWxlKQ0KKw0KKwkJLy8gTW9ub1RPRE8o
IkNoYW5nZSBlcnJvciBjb2RlIGZvciBhYm9ydGVkIGNvbXBpbGF0aW9uIHRv
IHNvbWV0aGluZyByZWFzb25hYmxlIildCQkNCisJCXN0YXRpYyB2b2lkIHBh
cnNlIChzdHJpbmcgaW5wdXRfZmlsZSkNCiAJCXsNCiAJCQlDU2hhcnBQYXJz
ZXIgcGFyc2VyOw0KIAkJCVN0cmVhbSBpbnB1dDsNCi0JCQlpbnQgZXJyb3Jz
Ow0KIA0KIAkJCXRyeSB7DQogCQkJCWlucHV0ID0gRmlsZS5PcGVuUmVhZCAo
aW5wdXRfZmlsZSk7DQogCQkJfSBjYXRjaCB7DQogCQkJCVJlcG9ydC5FcnJv
ciAoMjAwMSwgIlNvdXJjZSBmaWxlICciICsgaW5wdXRfZmlsZSArICInIGNv
dWxkIG5vdCBiZSBvcGVuZWQiKTsNCi0JCQkJcmV0dXJuIDE7DQorCQkJCXJl
dHVybjsNCiAJCQl9DQogDQogCQkJcGFyc2VyID0gbmV3IENTaGFycFBhcnNl
ciAoaW5wdXRfZmlsZSwgaW5wdXQsIGRlZmluZXMpOw0KIAkJCXBhcnNlci55
YWNjX3ZlcmJvc2UgPSB5YWNjX3ZlcmJvc2U7DQogCQkJdHJ5IHsNCi0JCQkJ
ZXJyb3JzID0gcGFyc2VyLnBhcnNlICgpOw0KKwkJCQlwYXJzZXIucGFyc2Ug
KCk7DQogCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7DQotCQkJCUNvbnNv
bGUuV3JpdGVMaW5lIChleCk7DQotCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgi
Q29tcGlsYXRpb24gYWJvcnRlZCIpOw0KLQkJCQlyZXR1cm4gMTsNCisJCQkJ
UmVwb3J0LkVycm9yKDY2NiwgIkNvbXBpbGF0aW9uIGFib3J0ZWQ6ICIgKyBl
eCk7DQogCQkJfSBmaW5hbGx5IHsNCiAJCQkJaW5wdXQuQ2xvc2UgKCk7DQog
CQkJfQ0KLQ0KLQkJCXJldHVybiBlcnJvcnM7DQogCQl9DQogCQkNCi0JCXN0
YXRpYyB2b2lkIFVzYWdlIChib29sIGlzX2Vycm9yKQ0KKwkJc3RhdGljIHZv
aWQgVXNhZ2UgKCkNCiAJCXsNCiAJCQlDb25zb2xlLldyaXRlTGluZSAoDQog
CQkJCSJNb25vIEMjIGNvbXBpbGVyLCAoQykgMjAwMSBYaW1pYW4sIEluYy5c
biIgKw0KIAkJCQkibWNzIFtvcHRpb25zXSBzb3VyY2UtZmlsZXNcbiIgKw0K
LQkJCQkiICAgLS1hYm91dCAgICAgICAgIEFib3V0IHRoZSBNb25vIEMjIGNv
bXBpbGVyXG4iICsNCi0JCQkJIiAgIC0tY2hlY2tlZCAgICAgICBTZXQgZGVm
YXVsdCBjb250ZXh0IHRvIGNoZWNrZWRcbiIgKw0KLQkJCQkiICAgLS1kZWZp
bmUgU1lNICAgIERlZmluZXMgdGhlIHN5bWJvbCBTWU1cbiIgKw0KLQkJCQki
ICAgLS1kZWJ1ZyAgICAgICAgIEdlbmVyYXRlIGRlYnVnZ2luZyBpbmZvcm1h
dGlvblxuIiArIA0KLQkJCQkiICAgLWcgICAgICAgICAgICAgIEdlbmVyYXRl
IGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuIiArDQotCQkJCSIgICAtLWRlYnVn
LWFyZ3MgWCAgU3BlY2lmeSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhl
XG4iICsNCi0JCQkJIiAgICAgICAgICAgICAgICAgICBzeW1ib2wgd3JpdGVy
LlxuIiArDQotCQkJCSIgICAtLWZhdGFsICAgICAgICAgTWFrZXMgZXJyb3Jz
IGZhdGFsXG4iICsNCi0JCQkJIiAgIC1MIFBBVEggICAgICAgICBBZGRzIFBB
VEggdG8gdGhlIGFzc2VtYmx5IGxpbmsgcGF0aFxuIiArDQotCQkJCSIgICAt
LW5vY29uZmlnICAgICAgRGlzYWJsZXMgaW1wbGljaXQgcmVmZXJlbmNlcyB0
byBhc3NlbWJsaWVzXG4iICsNCi0JCQkJIiAgIC0tbm9zdGRsaWIgICAgICBE
b2VzIG5vdCBsb2FkIGNvcmUgbGlicmFyaWVzXG4iICsNCi0JCQkJIiAgIC0t
bm93YXJuIFhYWCAgICBJZ25vcmVzIHdhcm5pbmcgbnVtYmVyIFhYWFxuIiAr
DQotCQkJCSIgICAtbyBGTkFNRSAgICAgICAgU3BlY2lmaWVzIG91dHB1dCBm
aWxlXG4iICsNCi0JCQkJIiAgIC1nLCAtLWRlYnVnICAgICBXcml0ZSBzeW1i
b2xpYyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gRklMRS1kZWJ1Zy5zXG4i
ICsNCi0JCQkJIiAgIC0tcGFyc2UgICAgICAgICBPbmx5IHBhcnNlcyB0aGUg
c291cmNlIGZpbGVcbiIgKw0KLQkJCQkiICAgLS1wcm9iZSBYICAgICAgIFBy
b2JlcyBmb3IgdGhlIHNvdXJjZSB0byBnZW5lcmF0ZSBjb2RlIFggb24gbGlu
ZSBMXG4iICsNCi0JCQkJIiAgIC0tcmVjdXJzZSBTUEVDICBSZWN1cnNpdmVs
eSBjb21waWxlcyB0aGUgZmlsZXMgaW4gU1BFQyAoW2Rpcl0vZmlsZSlcbiIg
KyANCi0JCQkJIiAgIC0tcmVzb3VyY2UgRklMRSBBZGRkcyBGSUxFIGFzIGEg
cmVzb3VyY2VcbiIgKyANCi0JCQkJIiAgIC0tc3RhY2t0cmFjZSAgICBTaG93
cyBzdGFjayB0cmFjZSBhdCBlcnJvciBsb2NhdGlvblxuIiArDQotCQkJCSIg
ICAtLXRhcmdldCBLSU5EICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgKEtJTkQg
aXMgb25lIG9mOiBleGUsIHdpbmV4ZSwgIiArDQotCQkJCSAgICAgICAgICAg
ICAgICAgICAgImxpYnJhcnksIG1vZHVsZSlcbiIgKw0KLQkJCQkiICAgLS10
aW1lc3RhbXAgICAgIERpc3BsYXlzIHRpbWUgc3RhbXBzIG9mIHZhcmlvdXMg
Y29tcGlsZXIgZXZlbnRzXG4iICsNCi0JCQkJIiAgIC0tdW5zYWZlICAgICAg
ICBBbGxvd3MgdW5zYWZlIGNvZGVcbiIgKw0KLQkJCQkiICAgLS13ZXJyb3Ig
ICAgICAgIFRyZWF0IHdhcm5pbmdzIGFzIGVycm9yc1xuIiArDQotCQkJCSIg
ICAtLXdsZXZlbCBMRVZFTCAgU2V0cyB3YXJuaW5nIGxldmVsICh0aGUgaGln
aGVzdCBpcyA0LCB0aGUgZGVmYXVsdClcbiIgKw0KLQkJCQkiICAgLXIgICAg
ICAgICAgICAgIFJlZmVyZW5jZXMgYW4gYXNzZW1ibHlcbiIgKw0KLQkJCQki
ICAgLXYgICAgICAgICAgICAgIFZlcmJvc2UgcGFyc2luZyAoZm9yIGRlYnVn
Z2luZyB0aGUgcGFyc2VyKVxuIiArDQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgQGZpbGUgICAgICAgICAgIFJlYWQgcmVzcG9uc2Ug
ZmlsZSBmb3IgbW9yZSBvcHRpb25zIik7DQotCQkJaWYgKGlzX2Vycm9yKQ0K
LQkJCQllcnJvcl9jb3VudCsrOw0KKwkJCQkiICAgLS1hYm91dCAgICAgICAg
ICBBYm91dCB0aGUgTW9ubyBDIyBjb21waWxlclxuIiArDQorCQkJCSIgICAt
LWNoZWNrZWQgICAgICAgIFNldCBkZWZhdWx0IGNvbnRleHQgdG8gY2hlY2tl
ZFxuIiArDQorCQkJCSIgICAtLWRlZmluZSBTWU0gICAgIERlZmluZXMgdGhl
IHN5bWJvbCBTWU1cbiIgKw0KKwkJCQkiICAgLS1kZWJ1ZyAgICAgICAgICBH
ZW5lcmF0ZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb25cbiIgKyANCisJCQkJIiAg
IC1nICAgICAgICAgICAgICAgR2VuZXJhdGUgZGVidWdnaW5nIGluZm9ybWF0
aW9uXG4iICsNCisJCQkJIiAgIC0tZGVidWctYXJncyBYICAgU3BlY2lmeSBh
ZGRpdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlXG4iICsNCisJCQkJIiAgICAg
ICAgICAgICAgICAgICAgc3ltYm9sIHdyaXRlci5cbiIgKw0KKwkJCQkiICAg
LS1mYXRhbCAgICAgICAgICBNYWtlcyBlcnJvcnMgZmF0YWxcbiIgKw0KKwkJ
CQkiICAgLUwgUEFUSCAgICAgICAgICBBZGRzIFBBVEggdG8gdGhlIGFzc2Vt
Ymx5IGxpbmsgcGF0aFxuIiArDQorCQkJCSIgICAtLW5vY29uZmlnICAgICAg
IERpc2FibGVzIGltcGxpY2l0IHJlZmVyZW5jZXMgdG8gYXNzZW1ibGllc1xu
IiArDQorCQkJCSIgICAtLW5vc3RkbGliICAgICAgIERvZXMgbm90IGxvYWQg
Y29yZSBsaWJyYXJpZXNcbiIgKw0KKwkJCQkiICAgLS1ub3dhcm4gWFhYICAg
ICBJZ25vcmVzIHdhcm5pbmcgbnVtYmVyIFhYWFxuIiArDQorCQkJCSIgICAt
byBGTkFNRSAgICAgICAgIFNwZWNpZmllcyBvdXRwdXQgZmlsZVxuIiArDQor
CQkJCSIgICAtZywgLS1kZWJ1ZyAgICAgIFdyaXRlIHN5bWJvbGljIGRlYnVn
Z2luZyBpbmZvcm1hdGlvbiB0byBGSUxFLWRlYnVnLnNcbiIgKw0KKwkJCQki
ICAgLS1wYXJzZSAgICAgICAgICBPbmx5IHBhcnNlcyB0aGUgc291cmNlIGZp
bGVcbiIgKw0KKwkJCQkiICAgLS1leHBlY3QtZXJyb3IgWCBFeHBlY3QgdGhh
dCBlcnJvciBYIHdpbGwgYmUgZW5jb3VudGVyZWRcbiIgKw0KKwkJCQkiICAg
LS1yZWN1cnNlIFNQRUMgICBSZWN1cnNpdmVseSBjb21waWxlcyB0aGUgZmls
ZXMgaW4gU1BFQyAoW2Rpcl0vZmlsZSlcbiIgKyANCisJCQkJIiAgIC0tcmVz
b3VyY2UgRklMRSAgQWRkZHMgRklMRSBhcyBhIHJlc291cmNlXG4iICsgDQor
CQkJCSIgICAtLXN0YWNrdHJhY2UgICAgIFNob3dzIHN0YWNrIHRyYWNlIGF0
IGVycm9yIGxvY2F0aW9uXG4iICsNCisJCQkJIiAgIC0tdGFyZ2V0IEtJTkQg
ICAgU3BlY2lmaWVzIHRoZSB0YXJnZXQgKEtJTkQgaXMgb25lIG9mOiBleGUs
IHdpbmV4ZSwgIiArDQorCQkJCSAgICAgICAgICAgICAgICAgICAgICJsaWJy
YXJ5LCBtb2R1bGUpXG4iICsNCisJCQkJIiAgIC0tdGltZXN0YW1wICAgICAg
RGlzcGxheXMgdGltZSBzdGFtcHMgb2YgdmFyaW91cyBjb21waWxlciBldmVu
dHNcbiIgKw0KKwkJCQkiICAgLS11bnNhZmUgICAgICAgICBBbGxvd3MgdW5z
YWZlIGNvZGVcbiIgKw0KKwkJCQkiICAgLS13ZXJyb3IgICAgICAgICBUcmVh
dCB3YXJuaW5ncyBhcyBlcnJvcnNcbiIgKw0KKwkJCQkiICAgLS13bGV2ZWwg
TEVWRUwgICBTZXRzIHdhcm5pbmcgbGV2ZWwgKHRoZSBoaWdoZXN0IGlzIDQs
IHRoZSBkZWZhdWx0KVxuIiArDQorCQkJCSIgICAtciAgICAgICAgICAgICAg
IFJlZmVyZW5jZXMgYW4gYXNzZW1ibHlcbiIgKw0KKwkJCQkiICAgLXYgICAg
ICAgICAgICAgICBWZXJib3NlIHBhcnNpbmcgKGZvciBkZWJ1Z2dpbmcgdGhl
IHBhcnNlcilcbiIgKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgIEBmaWxlICAgICAgICAgICAgUmVhZCByZXNwb25zZSBmaWxlIGZv
ciBtb3JlIG9wdGlvbnMiKTsNCiAJCX0NCiANCiAJCXN0YXRpYyB2b2lkIEFi
b3V0ICgpDQpAQCAtMjAwLDI3ICsxOTEsMjUgQEANCiAJCQkJIlRoZSBjb21w
aWxlciB3YXMgd3JpdHRlbiBieSBNaWd1ZWwgZGUgSWNhemEgYW5kIFJhdmkg
UHJhdGFwIik7DQogCQl9DQogCQkNCi0JCXN0YXRpYyB2b2lkIGVycm9yIChz
dHJpbmcgbXNnKQ0KLQkJew0KLQkJCUNvbnNvbGUuV3JpdGVMaW5lICgiRXJy
b3I6ICIgKyBtc2cpOw0KLQkJfQ0KLQ0KLQkJc3RhdGljIHZvaWQgbm90aWNl
IChzdHJpbmcgbXNnKQ0KLQkJew0KLQkJCUNvbnNvbGUuV3JpdGVMaW5lICht
c2cpOw0KLQkJfQ0KLQkJDQogCQlwdWJsaWMgc3RhdGljIGludCBNYWluIChz
dHJpbmdbXSBhcmdzKQ0KIAkJew0KLQkJCS8vYXJncyA9IG5ldyBzdHJpbmcg
WzFdOw0KLQkJCS8vYXJncyBbMF0gPSAiQGxpc3QiOw0KKwkJCWJvb2wgb2sg
PSBNYWluRHJpdmVyIChhcmdzKTsNCiAJCQkNCi0JCQlNYWluRHJpdmVyIChh
cmdzKTsNCi0JCQkNCi0JCQlyZXR1cm4gKGVycm9yX2NvdW50ICsgUmVwb3J0
LkVycm9ycykgIT0gMCA/IDEgOiAwOw0KKwkJCWlmIChvayAmJiBSZXBvcnQu
RXJyb3JzID09IDApIHsNCisJCQkJQ29uc29sZS5Xcml0ZSgiQ29tcGlsYXRp
b24gc3VjY2VlZGVkIik7DQorCQkJCWlmIChSZXBvcnQuV2FybmluZ3MgPiAw
KSB7DQorCQkJCQlDb25zb2xlLldyaXRlKCIgLSB7MH0gd2FybmluZyhzKSIs
IFJlcG9ydC5XYXJuaW5ncyk7DQorCQkJCX0gDQorCQkJCUNvbnNvbGUuV3Jp
dGVMaW5lKCk7DQorCQkJCXJldHVybiAwOw0KKwkJCX0gZWxzZSB7DQorCQkJ
CUNvbnNvbGUuV3JpdGVMaW5lKCJDb21waWxhdGlvbiBmYWlsZWQ6IHswfSBl
cnJvcihzKSwgezF9IHdhcm5pbmdzIiwNCisJCQkJCVJlcG9ydC5FcnJvcnMs
IFJlcG9ydC5XYXJuaW5ncyk7DQorCQkJCXJldHVybiAxOw0KKwkJCX0NCiAJ
CX0NCiANCi0JCXN0YXRpYyBwdWJsaWMgaW50IExvYWRBc3NlbWJseSAoc3Ry
aW5nIGFzc2VtYmx5LCBib29sIHNvZnQpDQorCQlzdGF0aWMgcHVibGljIHZv
aWQgTG9hZEFzc2VtYmx5IChzdHJpbmcgYXNzZW1ibHksIGJvb2wgc29mdCkN
CiAJCXsNCiAJCQlBc3NlbWJseSBhOw0KIAkJCXN0cmluZyB0b3RhbF9sb2cg
PSAiIjsNCkBAIC0yMjgsMTIgKzIxNywxMyBAQA0KIAkJCXRyeSB7DQogCQkJ
CWNoYXJbXSBwYXRoX2NoYXJzID0geyAnLycsICdcXCcsICcuJyB9Ow0KIA0K
LQkJCQlpZiAoYXNzZW1ibHkuSW5kZXhPZkFueSAocGF0aF9jaGFycykgIT0g
LTEpDQorCQkJCWlmIChhc3NlbWJseS5JbmRleE9mQW55IChwYXRoX2NoYXJz
KSAhPSAtMSkgew0KIAkJCQkJYSA9IEFzc2VtYmx5LkxvYWRGcm9tIChhc3Nl
bWJseSk7DQotCQkJCWVsc2UNCisJCQkJfSBlbHNlIHsNCiAJCQkJCWEgPSBB
c3NlbWJseS5Mb2FkIChhc3NlbWJseSk7DQorCQkJCX0NCiAJCQkJVHlwZU1h
bmFnZXIuQWRkQXNzZW1ibHkgKGEpOw0KLQkJCQlyZXR1cm4gMDsNCisNCiAJ
CQl9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24pew0KIAkJCQlmb3Jl
YWNoIChzdHJpbmcgZGlyIGluIGxpbmtfcGF0aHMpew0KIAkJCQkJc3RyaW5n
IGZ1bGxfcGF0aCA9IGRpciArICIvIiArIGFzc2VtYmx5ICsgIi5kbGwiOw0K
QEAgLTI0MSw0NyArMjMxLDM3IEBADQogCQkJCQl0cnkgew0KIAkJCQkJCWEg
PSBBc3NlbWJseS5Mb2FkRnJvbSAoZnVsbF9wYXRoKTsNCiAJCQkJCQlUeXBl
TWFuYWdlci5BZGRBc3NlbWJseSAoYSk7DQotCQkJCQkJcmV0dXJuIDA7DQor
CQkJCQkJcmV0dXJuOw0KIAkJCQkJfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhj
ZXB0aW9uIGZmKSB7DQogCQkJCQkJdG90YWxfbG9nICs9IGZmLkZ1c2lvbkxv
ZzsNCiAJCQkJCQljb250aW51ZTsNCiAJCQkJCX0NCiAJCQkJfQ0KLQkJCQlp
ZiAoc29mdCkNCi0JCQkJCXJldHVybiAwOw0KKwkJCQlpZiAoIXNvZnQpIHsN
CisJCQkJCVJlcG9ydC5FcnJvciAoNiwgIkNhbm5vdCBmaW5kIGFzc2VtYmx5
IGAiICsgYXNzZW1ibHkgKyAiJyIgKTsNCisJCQkJCUNvbnNvbGUuV3JpdGVM
aW5lICgiTG9nOiBcbiIgKyB0b3RhbF9sb2cpOw0KKwkJCQl9DQogCQkJfSBj
YXRjaCAoQmFkSW1hZ2VGb3JtYXRFeGNlcHRpb24gZikgew0KLQkJCQllcnJv
ciAoIi8vIEJhZCBmaWxlIGZvcm1hdCB3aGlsZSBsb2FkaW5nIGFzc2VtYmx5
Iik7DQotCQkJCWVycm9yICgiTG9nOiAiICsgZi5GdXNpb25Mb2cpOw0KLQkJ
CQlyZXR1cm4gMTsNCisJCQkJUmVwb3J0LkVycm9yKDYsICJDYW5ub3QgbG9h
ZCBhc3NlbWJseSAoYmFkIGZpbGUgZm9ybWF0KSIgKyBmLkZ1c2lvbkxvZyk7
DQogCQkJfSBjYXRjaCAoRmlsZUxvYWRFeGNlcHRpb24gZil7DQotCQkJCWVy
cm9yICgiRmlsZSBMb2FkIEV4Y2VwdGlvbjogIiArIGFzc2VtYmx5KTsNCi0J
CQkJZXJyb3IgKCJMb2c6ICIgKyBmLkZ1c2lvbkxvZyk7DQotCQkJCXJldHVy
biAxOw0KKwkJCQlSZXBvcnQuRXJyb3IoNiwgIkNhbm5vdCBsb2FkIGFzc2Vt
Ymx5ICIgKyBmLkZ1c2lvbkxvZyk7DQogCQkJfSBjYXRjaCAoQXJndW1lbnRO
dWxsRXhjZXB0aW9uKXsNCi0JCQkJZXJyb3IgKCIvLyBBcmd1bWVudCBOdWxs
IGV4Y2VwdGlvbiAiKTsNCi0JCQkJcmV0dXJuIDE7DQorCQkJCVJlcG9ydC5F
cnJvcig2LCAiQ2Fubm90IGxvYWQgYXNzZW1ibHkgKG51bGwgYXJndW1lbnQp
Iik7DQogCQkJfQ0KLQkJCQ0KLQkJCVJlcG9ydC5FcnJvciAoNiwgIkNhbiBu
b3QgZmluZCBhc3NlbWJseSBgIiArIGFzc2VtYmx5ICsgIiciICk7DQotCQkJ
Q29uc29sZS5Xcml0ZUxpbmUgKCJMb2c6IFxuIiArIHRvdGFsX2xvZyk7DQot
DQotCQkJcmV0dXJuIDA7DQogCQl9DQogDQogCQkvLy8gPHN1bW1hcnk+DQog
CQkvLy8gICBMb2FkcyBhbGwgYXNzZW1ibGllcyByZWZlcmVuY2VkIG9uIHRo
ZSBjb21tYW5kIGxpbmUNCiAJCS8vLyA8L3N1bW1hcnk+DQotCQlzdGF0aWMg
cHVibGljIGludCBMb2FkUmVmZXJlbmNlcyAoKQ0KKwkJc3RhdGljIHB1Ymxp
YyB2b2lkIExvYWRSZWZlcmVuY2VzICgpDQogCQl7DQotCQkJaW50IGVycm9y
cyA9IDA7DQotDQogCQkJZm9yZWFjaCAoc3RyaW5nIHIgaW4gcmVmZXJlbmNl
cykNCi0JCQkJZXJyb3JzICs9IExvYWRBc3NlbWJseSAociwgZmFsc2UpOw0K
KwkJCQlMb2FkQXNzZW1ibHkgKHIsIGZhbHNlKTsNCiANCiAJCQlmb3JlYWNo
IChzdHJpbmcgciBpbiBzb2Z0X3JlZmVyZW5jZXMpDQotCQkJCWVycm9ycyAr
PSBMb2FkQXNzZW1ibHkgKHIsIHRydWUpOw0KKwkJCQlMb2FkQXNzZW1ibHkg
KHIsIHRydWUpOw0KIAkJCQ0KLQkJCXJldHVybiBlcnJvcnM7DQorCQkJcmV0
dXJuOw0KIAkJfQ0KIA0KIAkJc3RhdGljIHZvaWQgU2V0dXBEZWZhdWx0RGVm
aW5lcyAoKQ0KQEAgLTM2NCw3ICszNDQsNyBAQA0KIAkJCXBhdHRlcm4gPSBz
cGVjOw0KIAkJfQ0KIA0KLQkJc3RhdGljIGludCBQcm9jZXNzRmlsZSAoc3Ry
aW5nIGYpDQorCQlzdGF0aWMgdm9pZCBQcm9jZXNzRmlsZSAoc3RyaW5nIGYp
DQogCQl7DQogCQkJaWYgKGZpcnN0X3NvdXJjZSA9PSBudWxsKQ0KIAkJCQlm
aXJzdF9zb3VyY2UgPSBmOw0KQEAgLTM3NywyMSArMzU3LDIxIEBADQogCQkJ
fSBlbHNlDQogCQkJCXNvdXJjZV9maWxlcy5BZGQgKGYsIGYpOw0KIAkJCQkJ
DQotCQkJaWYgKHRva2VuaXplKQ0KKwkJCWlmICh0b2tlbml6ZSkgew0KIAkJ
CQl0b2tlbml6ZV9maWxlIChmKTsNCi0JCQllbHNlDQotCQkJCXJldHVybiBw
YXJzZSAoZik7DQotCQkJcmV0dXJuIDA7DQorCQkJfSBlbHNlIHsNCisJCQkJ
cGFyc2UgKGYpOw0KKwkJCX0NCiAJCX0NCiANCi0JCXN0YXRpYyBpbnQgQ29t
cGlsZUZpbGVzIChzdHJpbmcgc3BlYywgYm9vbCByZWN1cnNlKQ0KKwkJc3Rh
dGljIHZvaWQgQ29tcGlsZUZpbGVzIChzdHJpbmcgc3BlYywgYm9vbCByZWN1
cnNlKQ0KIAkJew0KIAkJCXN0cmluZyBwYXRoLCBwYXR0ZXJuOw0KLQkJCWlu
dCBlcnJvcnMgPSAwOw0KIA0KIAkJCVNwbGl0UGF0aEFuZFBhdHRlcm4gKHNw
ZWMsIG91dCBwYXRoLCBvdXQgcGF0dGVybik7DQogCQkJaWYgKHBhdHRlcm4u
SW5kZXhPZiAoIioiKSA9PSAtMSl7DQotCQkJCXJldHVybiBQcm9jZXNzRmls
ZSAoc3BlYyk7DQorCQkJCVByb2Nlc3NGaWxlIChzcGVjKTsNCisJCQkJcmV0
dXJuOw0KIAkJCX0NCiANCiAJCQlzdHJpbmcgW10gZmlsZXMgPSBudWxsOw0K
QEAgLTM5OSwxNiArMzc5LDE3IEBADQogCQkJCWZpbGVzID0gRGlyZWN0b3J5
LkdldEZpbGVzIChwYXRoLCBwYXR0ZXJuKTsNCiAJCQl9IGNhdGNoIChTeXN0
ZW0uSU8uRGlyZWN0b3J5Tm90Rm91bmRFeGNlcHRpb24pIHsNCiAJCQkJUmVw
b3J0LkVycm9yICgyMDAxLCAiU291cmNlIGZpbGUgYCIgKyBzcGVjICsgIicg
Y291bGQgbm90IGJlIGZvdW5kIik7DQotCQkJCXJldHVybiAxOw0KKwkJCQly
ZXR1cm47DQogCQkJfSBjYXRjaCAoU3lzdGVtLklPLklPRXhjZXB0aW9uKXsN
CiAJCQkJUmVwb3J0LkVycm9yICgyMDAxLCAiU291cmNlIGZpbGUgYCIgKyBz
cGVjICsgIicgY291bGQgbm90IGJlIGZvdW5kIik7DQotCQkJCXJldHVybiAx
Ow0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCWZvcmVhY2ggKHN0cmluZyBm
IGluIGZpbGVzKSB7DQorCQkJCVByb2Nlc3NGaWxlIChmKTsNCiAJCQl9DQot
CQkJZm9yZWFjaCAoc3RyaW5nIGYgaW4gZmlsZXMpDQotCQkJCWVycm9ycyAr
PSBQcm9jZXNzRmlsZSAoZik7DQogDQogCQkJaWYgKCFyZWN1cnNlKQ0KLQkJ
CQlyZXR1cm4gZXJyb3JzOw0KKwkJCQlyZXR1cm47DQogCQkJDQogCQkJc3Ry
aW5nIFtdIGRpcnMgPSBudWxsOw0KIA0KQEAgLTQyMSwxMSArNDAyLDggQEAN
CiAJCQkJCQ0KIAkJCQkvLyBEb24ndCBpbmNsdWRlIHBhdGggaW4gdGhpcyBz
dHJpbmcsIGFzIGVhY2gNCiAJCQkJLy8gZGlyZWN0b3J5IGVudHJ5IGFscmVh
ZHkgZG9lcw0KLQkJCQllcnJvcnMgKz0gQ29tcGlsZUZpbGVzIChkICsgIi8i
ICsgcGF0dGVybiwgdHJ1ZSk7DQorCQkJCUNvbXBpbGVGaWxlcyAoZCArICIv
IiArIHBhdHRlcm4sIHRydWUpOw0KIAkJCX0NCi0JCQkNCi0NCi0JCQlyZXR1
cm4gZXJyb3JzOw0KIAkJfQ0KIA0KIAkJc3RhdGljIHZvaWQgRGVmaW5lRGVm
YXVsdENvbmZpZyAoKQ0KQEAgLTQ3Niw5ICs0NTQsMTAgQEANCiAJCS8vLyAg
ICBUT0RPOiBNb3N0bHkgc3RydWN0dXJlZCB0byBkZWJ1ZyB0aGUgY29tcGls
ZXINCiAJCS8vLyAgICBub3csIG5lZWRzIHRvIGJlIHR1cm5lZCBpbnRvIGEg
cmVhbCBkcml2ZXIgc29vbi4NCiAJCS8vLyA8L3JlbWFya3M+DQotCQlzdGF0
aWMgdm9pZCBNYWluRHJpdmVyIChzdHJpbmcgW10gYXJncykNCisJCS8vIFtN
b25vVE9ETygiQ2hhbmdlIGVycm9yIGNvZGUgZm9yIHVua25vd24gYXJndW1l
bnQgdG8gc29tZXRoaW5nIHJlYXNvbmFibGUiKV0NCisJCXN0YXRpYyBib29s
IE1haW5Ecml2ZXIgKHN0cmluZyBbXSBhcmdzKQ0KIAkJew0KLQkJCWludCBl
cnJvcnMgPSAwLCBpOw0KKwkJCWludCBpOw0KIAkJCXN0cmluZyBvdXRwdXRf
ZmlsZSA9IG51bGw7DQogCQkJYm9vbCBwYXJzaW5nX29wdGlvbnMgPSB0cnVl
Ow0KIAkJCQ0KQEAgLTUyMCw3ICs0OTksNyBAQA0KIAkJCQkJaWYgKGV4dHJh
X2FyZ3MgPT0gbnVsbCl7DQogCQkJCQkJUmVwb3J0LkVycm9yICgyMDExLCAi
VW5hYmxlIHRvIG9wZW4gcmVzcG9uc2UgZmlsZTogIiArDQogCQkJCQkJCSAg
ICAgIHJlc3BvbnNlX2ZpbGUpOw0KLQkJCQkJCXJldHVybjsNCisJCQkJCQly
ZXR1cm4gZmFsc2U7DQogCQkJCQl9DQogDQogCQkJCQluZXdfYXJncyA9IG5l
dyBzdHJpbmcgW2V4dHJhX2FyZ3MuTGVuZ3RoICsgYXJnY107DQpAQCAtNTUx
LDggKzUzMCw4IEBADQogDQogCQkJCQljYXNlICItLW1haW4iOiBjYXNlICIt
bSI6DQogCQkJCQkJaWYgKChpICsgMSkgPj0gYXJnYyl7DQotCQkJCQkJCVVz
YWdlICh0cnVlKTsNCi0JCQkJCQkJcmV0dXJuOw0KKwkJCQkJCQlVc2FnZSAo
KTsNCisJCQkJCQkJcmV0dXJuIGZhbHNlOw0KIAkJCQkJCX0NCiAJCQkJCQlS
b290Q29udGV4dC5NYWluQ2xhc3MgPSBhcmdzIFsrK2ldOw0KIAkJCQkJCWNv
bnRpbnVlOw0KQEAgLTU2MywyNCArNTQyLDI0IEBADQogCQkJCQkJDQogCQkJ
CQljYXNlICIvPyI6IGNhc2UgIi9oIjogY2FzZSAiL2hlbHAiOg0KIAkJCQkJ
Y2FzZSAiLS1oZWxwIjoNCi0JCQkJCQlVc2FnZSAoZmFsc2UpOw0KLQkJCQkJ
CXJldHVybjsNCisJCQkJCQlVc2FnZSAoKTsNCisJCQkJCQlyZXR1cm4gZmFs
c2U7DQogDQogCQkJCQljYXNlICItLWRlZmluZSI6DQogCQkJCQkJaWYgKChp
ICsgMSkgPj0gYXJnYyl7DQotCQkJCQkJCVVzYWdlICh0cnVlKTsNCi0JCQkJ
CQkJcmV0dXJuOw0KKwkJCQkJCQlVc2FnZSAoKTsNCisJCQkJCQkJcmV0dXJu
IGZhbHNlOw0KIAkJCQkJCX0NCiAJCQkJCQlkZWZpbmVzLkFkZCAoYXJncyBb
KytpXSk7DQogCQkJCQkJY29udGludWU7DQogCQkJCQkJDQotCQkJCQljYXNl
ICItLXByb2JlIjogew0KKwkJCQkJY2FzZSAiLS1leHBlY3QtZXJyb3IiOiB7
DQogCQkJCQkJaW50IGNvZGUgPSAwOw0KIA0KIAkJCQkJCXRyeSB7DQogCQkJ
CQkJCWNvZGUgPSBJbnQzMi5QYXJzZSAoDQogCQkJCQkJCQlhcmdzIFsrK2ld
LCBOdW1iZXJTdHlsZXMuQWxsb3dMZWFkaW5nU2lnbik7DQotCQkJCQkJCVJl
cG9ydC5TZXRQcm9iZSAoY29kZSk7DQorCQkJCQkJCVJlcG9ydC5FeHBlY3Rl
ZEVycm9yID0gY29kZTsNCiAJCQkJCQl9IGNhdGNoIHsNCiAJCQkJCQkJUmVw
b3J0LkVycm9yICgtMTQsICJJbnZhbGlkIG51bWJlciBzcGVjaWZpZWQiKTsN
CiAJCQkJCQl9IA0KQEAgLTU5NSw4ICs1NzQsOCBAQA0KIAkJCQkJY2FzZSAi
LW8iOiANCiAJCQkJCWNhc2UgIi0tb3V0cHV0IjoNCiAJCQkJCQlpZiAoKGkg
KyAxKSA+PSBhcmdjKXsNCi0JCQkJCQkJVXNhZ2UgKHRydWUpOw0KLQkJCQkJ
CQlyZXR1cm47DQorCQkJCQkJCVVzYWdlICgpOw0KKwkJCQkJCQlyZXR1cm4g
ZmFsc2U7DQogCQkJCQkJfQ0KIAkJCQkJCW91dHB1dF9maWxlID0gYXJncyBb
KytpXTsNCiAJCQkJCQlzdHJpbmcgYm5hbWUgPSBDb2RlR2VuLkJhc2VuYW1l
IChvdXRwdXRfZmlsZSk7DQpAQCAtNjE0LDkgKzU5Myw5IEBADQogDQogCQkJ
CQljYXNlICItLXJlc291cmNlIjoNCiAJCQkJCQlpZiAoKGkgKyAxKSA+PSBh
cmdjKXsNCi0JCQkJCQkJVXNhZ2UgKHRydWUpOw0KKwkJCQkJCQlVc2FnZSAo
KTsNCiAJCQkJCQkJQ29uc29sZS5Xcml0ZUxpbmUoIk1pc3NpbmcgYXJndW1l
bnQgdG8gLS1yZXNvdXJjZSIpOyANCi0JCQkJCQkJcmV0dXJuOw0KKwkJCQkJ
CQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJfQ0KIAkJCQkJCWlmIChyZXNvdXJj
ZXMgPT0gbnVsbCkNCiAJCQkJCQkJcmVzb3VyY2VzID0gbmV3IEFycmF5TGlz
dCAoKTsNCkBAIC02MjYsOCArNjA1LDggQEANCiAJCQkJCQkJDQogCQkJCQlj
YXNlICItLXRhcmdldCI6DQogCQkJCQkJaWYgKChpICsgMSkgPj0gYXJnYyl7
DQotCQkJCQkJCVVzYWdlICh0cnVlKTsNCi0JCQkJCQkJcmV0dXJuOw0KKwkJ
CQkJCQlVc2FnZSAoKTsNCisJCQkJCQkJcmV0dXJuIGZhbHNlOw0KIAkJCQkJ
CX0NCiANCiAJCQkJCQlzdHJpbmcgdHlwZSA9IGFyZ3MgWysraV07DQpAQCAt
NjUwLDE1ICs2MjksMTUgQEANCiAJCQkJCQkJdGFyZ2V0X2V4dCA9ICIuZGxs
IjsNCiAJCQkJCQkJYnJlYWs7DQogCQkJCQkJZGVmYXVsdDoNCi0JCQkJCQkJ
VXNhZ2UgKHRydWUpOw0KLQkJCQkJCQlyZXR1cm47DQorCQkJCQkJCVVzYWdl
ICgpOw0KKwkJCQkJCQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJfQ0KIAkJCQkJ
CWNvbnRpbnVlOw0KIA0KIAkJCQkJY2FzZSAiLXIiOg0KIAkJCQkJCWlmICgo
aSArIDEpID49IGFyZ2Mpew0KLQkJCQkJCQlVc2FnZSAodHJ1ZSk7DQotCQkJ
CQkJCXJldHVybjsNCisJCQkJCQkJVXNhZ2UgKCk7DQorCQkJCQkJCXJldHVy
biBmYWxzZTsNCiAJCQkJCQl9DQogCQkJCQkJDQogCQkJCQkJcmVmZXJlbmNl
cy5BZGQgKGFyZ3MgWysraV0pOw0KQEAgLTY2Niw4ICs2NDUsOCBAQA0KIAkJ
CQkJCQ0KIAkJCQkJY2FzZSAiLUwiOg0KIAkJCQkJCWlmICgoaSArIDEpID49
IGFyZ2Mpew0KLQkJCQkJCQlVc2FnZSAodHJ1ZSk7DQotCQkJCQkJCXJldHVy
bjsNCisJCQkJCQkJVXNhZ2UgKCk7CQ0KKwkJCQkJCQlyZXR1cm4gZmFsc2U7
DQogCQkJCQkJfQ0KIAkJCQkJCWxpbmtfcGF0aHMuQWRkIChhcmdzIFsrK2ld
KTsNCiAJCQkJCQljb250aW51ZTsNCkBAIC02ODYsMTYgKzY2NSwxNiBAQA0K
IA0KIAkJCQkJY2FzZSAiLS1ub3dhcm4iOg0KIAkJCQkJCWlmICgoaSArIDEp
ID49IGFyZ2Mpew0KLQkJCQkJCQlVc2FnZSAodHJ1ZSk7DQotCQkJCQkJCXJl
dHVybjsNCisJCQkJCQkJVXNhZ2UgKCk7DQorCQkJCQkJCXJldHVybiBmYWxz
ZTsNCiAJCQkJCQl9DQogCQkJCQkJaW50IHdhcm47DQogCQkJCQkJDQogCQkJ
CQkJdHJ5IHsNCiAJCQkJCQkJd2FybiA9IEludDMyLlBhcnNlIChhcmdzIFsr
K2ldKTsNCiAJCQkJCQl9IGNhdGNoIHsNCi0JCQkJCQkJVXNhZ2UgKHRydWUp
Ow0KLQkJCQkJCQlyZXR1cm47DQorCQkJCQkJCVVzYWdlICgpOw0KKwkJCQkJ
CQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJfQ0KIAkJCQkJCVJlcG9ydC5TZXRJ
Z25vcmVXYXJuaW5nICh3YXJuKTsNCiAJCQkJCQljb250aW51ZTsNCkBAIC03
MDUsOCArNjg0LDcgQEANCiAJCQkJCQkJUmVwb3J0LkVycm9yICgNCiAJCQkJ
CQkJCTE5MDAsDQogCQkJCQkJCQkiLS13bGV2ZWwgcmVxdWlyZXMgYW4gdmFs
dWUgZnJvbSAwIHRvIDQiKTsNCi0JCQkJCQkJZXJyb3JfY291bnQrKzsNCi0J
CQkJCQkJcmV0dXJuOw0KKwkJCQkJCQlyZXR1cm4gZmFsc2U7DQogCQkJCQkJ
fQ0KIAkJCQkJCWludCBsZXZlbDsNCiAJCQkJCQkNCkBAIC03MTYsMjYgKzY5
NCwyNSBAQA0KIAkJCQkJCQlSZXBvcnQuRXJyb3IgKA0KIAkJCQkJCQkJMTkw
MCwNCiAJCQkJCQkJCSItLXdsZXZlbCByZXF1aXJlcyBhbiB2YWx1ZSBmcm9t
IDAgdG8gNCIpOw0KLQkJCQkJCQlyZXR1cm47DQorCQkJCQkJCXJldHVybiBm
YWxzZTsNCiAJCQkJCQl9DQogCQkJCQkJaWYgKGxldmVsIDwgMCB8fCBsZXZl
bCA+IDQpew0KIAkJCQkJCQlSZXBvcnQuRXJyb3IgKDE5MDAsICJXYXJuaW5n
IGxldmVsIG11c3QgYmUgMCB0byA0Iik7DQotCQkJCQkJCXJldHVybjsNCisJ
CQkJCQkJcmV0dXJuIGZhbHNlOw0KIAkJCQkJCX0gZWxzZQ0KIAkJCQkJCQlS
b290Q29udGV4dC5XYXJuaW5nTGV2ZWwgPSBsZXZlbDsNCiAJCQkJCQljb250
aW51ZTsNCiAJCQkJCQkNCiAJCQkJCWNhc2UgIi0tYWJvdXQiOg0KIAkJCQkJ
CUFib3V0ICgpOw0KLQkJCQkJCXJldHVybjsNCisJCQkJCQlyZXR1cm4gdHJ1
ZTsNCiANCiAJCQkJCWNhc2UgIi0tcmVjdXJzZSI6DQogCQkJCQkJaWYgKChp
ICsgMSkgPj0gYXJnYyl7DQogCQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5lICgi
LS1yZWN1cnNlIHJlcXVpcmVzIGFuIGFyZ3VtZW50Iik7DQotCQkJCQkJCWVy
cm9yX2NvdW50Kys7DQotCQkJCQkJCXJldHVybjsNCisJCQkJCQkJcmV0dXJu
IGZhbHNlOw0KIAkJCQkJCX0NCi0JCQkJCQllcnJvcnMgKz0gQ29tcGlsZUZp
bGVzIChhcmdzIFsrK2ldLCB0cnVlKTsNCisJCQkJCQlDb21waWxlRmlsZXMg
KGFyZ3MgWysraV0sIHRydWUpOyANCiAJCQkJCQljb250aW51ZTsNCiAJCQkJ
CQkNCiAJCQkJCWNhc2UgIi0tdGltZXN0YW1wIjoNCkBAIC03NTEsOCArNzI4
LDcgQEANCiAJCQkJCWNhc2UgIi0tZGVidWctYXJncyI6DQogCQkJCQkJaWYg
KChpICsgMSkgPj0gYXJnYyl7DQogCQkJCQkJCUNvbnNvbGUuV3JpdGVMaW5l
ICgiLS1kZWJ1Zy1hcmdzIHJlcXVpcmVzIGFuIGFyZ3VtZW50Iik7DQotCQkJ
CQkJCWVycm9yX2NvdW50Kys7DQotCQkJCQkJCXJldHVybjsNCisJCQkJCQkJ
cmV0dXJuIGZhbHNlOw0KIAkJCQkJCX0NCiAJCQkJCQljaGFyW10gc2VwID0g
eyAnLCcgfTsNCiAJCQkJCQlkZWJ1Z19hcmdsaXN0LkFkZFJhbmdlIChhcmdz
IFsrK2ldLlNwbGl0IChzZXApKTsNCkBAIC03NjMsMjggKzczOSwyNyBAQA0K
IAkJCQkJCWNvbnRpbnVlOw0KIA0KIAkJCQkJZGVmYXVsdDoNCi0JCQkJCQlD
b25zb2xlLldyaXRlTGluZSAoIlVua25vd24gb3B0aW9uOiAiICsgYXJnKTsN
Ci0JCQkJCQllcnJvcnMrKzsNCisJCQkJCQlSZXBvcnQuV2FybmluZyg2NjYs
ICJVbmtub3duIG9wdGlvbjogIiArIGFyZyk7DQogCQkJCQkJY29udGludWU7
DQogCQkJCQl9DQogCQkJCX0NCiANCi0JCQkJZXJyb3JzICs9IENvbXBpbGVG
aWxlcyAoYXJnLCBmYWxzZSk7IA0KKwkJCQlDb21waWxlRmlsZXMgKGFyZywg
ZmFsc2UpOyANCiAJCQl9DQogDQogCQkJaWYgKHRva2VuaXplKQ0KLQkJCQly
ZXR1cm47DQorCQkJCXJldHVybiB0cnVlOw0KIAkJCQ0KIAkJCWlmIChmaXJz
dF9zb3VyY2UgPT0gbnVsbCl7DQogCQkJCVJlcG9ydC5FcnJvciAoMjAwOCwg
Ik5vIGZpbGVzIHRvIGNvbXBpbGUgd2VyZSBzcGVjaWZpZWQiKTsNCi0JCQkJ
cmV0dXJuOw0KKwkJCQlyZXR1cm4gZmFsc2U7DQogCQkJfQ0KIA0KIAkJCWlm
IChSZXBvcnQuRXJyb3JzID4gMCkNCi0JCQkJcmV0dXJuOw0KKwkJCQlyZXR1
cm4gZmFsc2U7DQogCQkJDQogCQkJaWYgKHBhcnNlX29ubHkpDQotCQkJCXJl
dHVybjsNCisJCQkJcmV0dXJuIHRydWU7DQogCQkJDQogCQkJLy8NCiAJCQkv
LyBMb2FkIENvcmUgTGlicmFyeSBmb3IgZGVmYXVsdCBjb21waWxhdGlvbg0K
QEAgLTc5NSw5ICs3NzAsOCBAQA0KIAkJCWlmIChsb2FkX2RlZmF1bHRfY29u
ZmlnKQ0KIAkJCQlEZWZpbmVEZWZhdWx0Q29uZmlnICgpOw0KIA0KLQkJCWlm
IChlcnJvcnMgPiAwKXsNCi0JCQkJZXJyb3IgKCJQYXJzaW5nIGZhaWxlZCIp
Ow0KLQkJCQlyZXR1cm47DQorCQkJaWYgKFJlcG9ydC5FcnJvcnMgPiAwKXsN
CisJCQkJcmV0dXJuIGZhbHNlOw0KIAkJCX0NCiANCiAJCQkvLw0KQEAgLTgw
NSwxNyArNzc5LDE1IEBADQogCQkJLy8NCiAJCQlpZiAodGltZXN0YW1wcykN
CiAJCQkJU2hvd1RpbWUgKCJMb2FkaW5nIHJlZmVyZW5jZXMiKTsNCi0JCQll
cnJvcnMgKz0gTG9hZFJlZmVyZW5jZXMgKCk7DQorCQkJTG9hZFJlZmVyZW5j
ZXMgKCk7DQorCQkJDQogCQkJaWYgKHRpbWVzdGFtcHMpDQogCQkJCVNob3dU
aW1lICgiICAgUmVmZXJlbmNlcyBsb2FkZWQiKTsNCiAJCQkNCi0JCQlpZiAo
ZXJyb3JzID4gMCl7DQotCQkJCWVycm9yICgiQ291bGQgbm90IGxvYWQgb25l
IG9yIG1vcmUgYXNzZW1ibGllcyIpOw0KLQkJCQlyZXR1cm47DQorCQkJaWYg
KFJlcG9ydC5FcnJvcnMgPiAwKXsNCisJCQkJcmV0dXJuIGZhbHNlOw0KIAkJ
CX0NCiANCi0JCQllcnJvcl9jb3VudCA9IGVycm9yczsNCi0NCiAJCQkvLw0K
IAkJCS8vIFF1aWNrIGhhY2sNCiAJCQkvLw0KQEAgLTg0NCw3ICs4MTYsNyBA
QA0KIAkJCWlmICghUm9vdENvbnRleHQuU3RkTGliKXsNCiAJCQkJUm9vdENv
bnRleHQuUmVzb2x2ZUNvcmUgKCk7DQogCQkJCWlmIChSZXBvcnQuRXJyb3Jz
ID4gMCkNCi0JCQkJCXJldHVybjsNCisJCQkJCXJldHVybiBmYWxzZTsNCiAJ
CQl9DQogCQkJDQogCQkJVHlwZU1hbmFnZXIuSW5pdENvcmVUeXBlcyAoKTsN
CkBAIC04NjYsOCArODM4LDcgQEANCiAJCQlUeXBlTWFuYWdlci5Jbml0Q29k
ZUhlbHBlcnMgKCk7DQogCQkJCQ0KIAkJCWlmIChSZXBvcnQuRXJyb3JzID4g
MCl7DQotCQkJCWVycm9yICgiQ29tcGlsYXRpb24gZmFpbGVkIik7DQotCQkJ
CXJldHVybjsNCisJCQkJcmV0dXJuIGZhbHNlOw0KIAkJCX0NCiAJCQkNCiAJ
CQkvLw0KQEAgLTg4MCw4ICs4NTEsNyBAQA0KIAkJCQlTaG93VGltZSAoIiAg
IGRvbmUiKTsNCiANCiAJCQlpZiAoUmVwb3J0LkVycm9ycyA+IDApew0KLQkJ
CQllcnJvciAoIkNvbXBpbGF0aW9uIGZhaWxlZCIpOw0KLQkJCQlyZXR1cm47
DQorCQkJCXJldHVybiBmYWxzZTsNCiAJCQl9DQogDQogCQkJaWYgKHRpbWVz
dGFtcHMpDQpAQCAtOTA0LDcgKzg3NCw3IEBADQogCQkJCWlmIChlcCA9PSBu
dWxsKXsNCiAJCQkJCVJlcG9ydC5FcnJvciAoNTAwMSwgIlByb2dyYW0gIiAr
IG91dHB1dF9maWxlICsNCiAJCQkJCQkJICAgICAgIiBkb2VzIG5vdCBoYXZl
IGFuIGVudHJ5IHBvaW50IGRlZmluZWQiKTsNCi0JCQkJCXJldHVybjsNCisJ
CQkJCXJldHVybiBmYWxzZTsNCiAJCQkJfQ0KIAkJCQkNCiAJCQkJQ29kZUdl
bi5Bc3NlbWJseUJ1aWxkZXIuU2V0RW50cnlQb2ludCAoZXAsIGspOw0KQEAg
LTkyOCwxMyArODk4LDEzIEBADQogCQkJCQlTaG93VGltZSAoIlNhdmVkIHN5
bWJvbHMiKTsNCiAJCQl9DQogDQotCQkJaWYgKFJlcG9ydC5FcnJvcnMgPiAw
KXsNCi0JCQkJZXJyb3IgKCJDb21waWxhdGlvbiBmYWlsZWQiKTsNCi0JCQkJ
cmV0dXJuOw0KLQkJCX0gZWxzZSBpZiAoUmVwb3J0LlByb2JlQ29kZSAhPSAw
KXsNCi0JCQkJZXJyb3IgKCJGYWlsZWQgdG8gcmVwb3J0IGNvZGUgIiArIFJl
cG9ydC5Qcm9iZUNvZGUpOw0KLQkJCQlFbnZpcm9ubWVudC5FeGl0ICgxMjQp
Ow0KKwkJCWlmIChSZXBvcnQuRXhwZWN0ZWRFcnJvciAhPSAwKXsNCisJCQkJ
Q29uc29sZS5Xcml0ZUxpbmUoIkZhaWxlZCB0byByZXBvcnQgZXhwZWN0ZWQg
ZXJyb3IgIiArIFJlcG9ydC5FeHBlY3RlZEVycm9yKTsNCisJCQkJRW52aXJv
bm1lbnQuRXhpdCAoMSk7DQorCQkJCXJldHVybiBmYWxzZTsNCiAJCQl9DQor
DQorCQkJcmV0dXJuIChSZXBvcnQuRXJyb3JzID09IDApOw0KIAkJfQ0KIA0K
IAl9DQpJbmRleDogbWNzL2dlbmVyaWNwYXJzZXIuY3MNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NClJDUyBmaWxlOiAvbW9uby9tY3MvbWNzL2dlbmVyaWNw
YXJzZXIuY3Msdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjYNCmRpZmYgLXUg
LXIxLjYgZ2VuZXJpY3BhcnNlci5jcw0KLS0tIG1jcy9nZW5lcmljcGFyc2Vy
LmNzCTE5IE5vdiAyMDAxIDAwOjQ0OjA5IC0wMDAwCTEuNg0KKysrIG1jcy9n
ZW5lcmljcGFyc2VyLmNzCTI1IEp1biAyMDAyIDEzOjU4OjI4IC0wMDAwDQpA
QCAtMTksMTUgKzE5LDEzIEBADQogCS8vLyA8L3N1bW1hcnk+DQogCXB1Ymxp
YyBhYnN0cmFjdCBjbGFzcyBHZW5lcmljUGFyc2VyDQogCXsNCi0JCXN0YXRp
YyBwcm90ZWN0ZWQgaW50IGdsb2JhbF9lcnJvcnM7DQotDQogCQkvLyBOYW1l
IG9mIHRoZSBmaWxlIHdlIGFyZSBwYXJzaW5nDQogCQlwdWJsaWMgc3RyaW5n
IG5hbWU7DQogDQogCQkvLyBJbnB1dCBzdHJlYW0gdG8gcGFyc2UgZnJvbS4N
CiAJCXB1YmxpYyBTeXN0ZW0uSU8uU3RyZWFtIGlucHV0Ow0KIA0KLQkJcHVi
bGljIGFic3RyYWN0IGludCBwYXJzZSAoKTsNCisJCXB1YmxpYyBhYnN0cmFj
dCB2b2lkIHBhcnNlICgpOw0KIA0KIAkJcHVibGljIHZpcnR1YWwgc3RyaW5n
W10gZXh0ZW5zaW9ucygpDQogCQl7DQpAQCAtMzUsMjggKzMzLDYgQEANCiAJ
CQlyZXR1cm4gbGlzdDsNCiAJCX0NCiANCi0JCS8vLyA8c3VtbWFyeT4NCi0J
CS8vLyBFbWl0cyBlcnJvciBtZXNzYWdlcyBhbmQgaW5jcmVtZW50cyBhIGds
b2JhbCBjb3VudCBvZiB0aGVtDQotCQkvLy8gPC9zdW1tYXJ5Pg0KLQkJLy8v
IDxwYXJhbSBuYW1lPSJjb2RlIj48L3BhcmFtPg0KLQkJLy8vIDxwYXJhbSBu
YW1lPSJkZXNjIj48L3BhcmFtPg0KLQkJc3RhdGljIHB1YmxpYyB2b2lkIGVy
cm9yIChpbnQgY29kZSwgc3RyaW5nIGRlc2MpDQotCQl7DQotCQkJQ29uc29s
ZS5Xcml0ZUxpbmUgKCJFcnJvciAiK2NvZGUrIjogIisgZGVzYyk7DQotCQkJ
Z2xvYmFsX2Vycm9ycysrOw0KLQkJfQ0KLQ0KLQkJLy8gRW1pdHMgZXJyb3Ig
bWVzc2FnZXMgd2l0aCBsb2NhdGlvbiBpbmZvLg0KLQkJLy8gRklYTUUgOiBJ
ZGVhbGx5LCBhbGwgZXJyb3IgcmVwb3J0aW5nIHNob3VsZCBoYXBwZW4NCi0J
CS8vIHdpdGggUmVwb3J0LkVycm9yIGJ1dCBob3cgZG8geW91IGdldCBhdCB0
aGF0IG5vbi1zdGF0aWMNCi0JCS8vIG1ldGhvZCBldmVyeXdoZXJlIHlvdSBu
ZWVkIGl0ID8NCi0JCXN0YXRpYyBwdWJsaWMgdm9pZCBlcnJvciAoaW50IGNv
ZGUsIE1vbm8uQ1NoYXJwLkxvY2F0aW9uIGwsIHN0cmluZyB0ZXh0KQ0KLQkJ
ew0KLQkJCUNvbnNvbGUuV3JpdGVMaW5lIChsLk5hbWUgKyAiKCIgKyBsLlJv
dyArICIsIiArIA0KLQkJCQkJICAgIik6IEVycm9yIENTIiArIGNvZGUgKyAi
OiAiICsgdGV4dCk7DQotCQkJZ2xvYmFsX2Vycm9ycysrOw0KLQkJfQ0KLQkJ
DQogCQlwdWJsaWMgR2VuZXJpY1BhcnNlcigpDQogCQl7DQogCQkJLy8NCklu
ZGV4OiBtY3MvbWItcGFyc2VyLmpheQ0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KUkNTIGZpbGU6IC9tb25vL21jcy9tY3MvbWItcGFyc2VyLmpheSx2DQpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMQ0KZGlmZiAtdSAtcjEuMSBtYi1wYXJz
ZXIuamF5DQotLS0gbWNzL21iLXBhcnNlci5qYXkJMTEgT2N0IDIwMDEgMTg6
MTI6MTIgLTAwMDAJMS4xDQorKysgbWNzL21iLXBhcnNlci5qYXkJMjUgSnVu
IDIwMDIgMTM6NTg6MjggLTAwMDANCkBAIC00NDQsNyArNDQ0LDcgQEANCiAN
DQogVG9rZW5pemVyIGxleGVyOw0NCiANDQotcHVibGljIG92ZXJyaWRlIGlu
dCBwYXJzZSAoKQ0NCitwdWJsaWMgb3ZlcnJpZGUgdm9pZCBwYXJzZSAoKQ0N
CiB7DQ0KIAljdXJyZW50X25hbWVzcGFjZSA9IG5ldyBOYW1lc3BhY2UgKG51
bGwsICIiKTsNDQogCXRoaXMudHJlZSA9IHJjLlRyZWU7DQ0KQEAgLTQ1Niw3
ICs0NTYsNiBAQA0KIAlsZXhlciA9IG5ldyBUb2tlbml6ZXIgKGlucHV0LCBu
YW1lKTsNDQogCVN0cmluZ0J1aWxkZXIgdmFsdWUgPSBuZXcgU3RyaW5nQnVp
bGRlciAoKTsNDQogDQ0KLQlnbG9iYWxfZXJyb3JzID0gMDsNDQogCXRyeSAN
DQogCXsNDQogCQlpZiAoeWFjY192ZXJib3NlX2ZsYWcpDQ0KQEAgLTQ2OCwx
MCArNDY3LDcgQEANCiAJew0NCiAJCUNvbnNvbGUuV3JpdGVMaW5lIChsZXhl
ci5sb2NhdGlvbiArICIgIDogUGFyc2luZyBlcnJvciAiKTsNDQogCQlDb25z
b2xlLldyaXRlTGluZSAoZSk7DQ0KLQkJZ2xvYmFsX2Vycm9ycysrOw0NCiAJ
fQ0NCi0NDQotCXJldHVybiBnbG9iYWxfZXJyb3JzOw0NCiB9DQ0KIA0NCiAv
KiBlbmQgZW5kIGVuZCAqLw0NCkluZGV4OiBtY3MvbmFtZXNwYWNlLmNzDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09DQpSQ1MgZmlsZTogL21vbm8vbWNzL21j
cy9uYW1lc3BhY2UuY3Msdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjcNCmRp
ZmYgLXUgLXIxLjcgbmFtZXNwYWNlLmNzDQotLS0gbWNzL25hbWVzcGFjZS5j
cwkxNSBKdW4gMjAwMiAyMzozNTowNCAtMDAwMAkxLjcNCisrKyBtY3MvbmFt
ZXNwYWNlLmNzCTI1IEp1biAyMDAyIDEzOjU4OjI4IC0wMDAwDQpAQCAtNzMs
NyArNzMsNyBAQA0KIAkJcHVibGljIHZvaWQgVXNpbmcgKHN0cmluZyBucykN
CiAJCXsNCiAJCQlpZiAoZGVjbF9mb3VuZCl7DQotCQkJCUdlbmVyaWNQYXJz
ZXIuZXJyb3IgKDE1MjksICJBIHVzaW5nIGNsYXVzZSBtdXN0IHByZWNlZGUg
YWxsIG90aGVyIG5hbWVzcGFjZSBlbGVtZW50cyIpOw0KKwkJCQlSZXBvcnQu
RXJyb3IgKDE1MjksICJBIHVzaW5nIGNsYXVzZSBtdXN0IHByZWNlZGUgYWxs
IG90aGVyIG5hbWVzcGFjZSBlbGVtZW50cyIpOw0KIAkJCQlyZXR1cm47DQog
CQkJfQ0KIA0KQEAgLTEyNyw3ICsxMjcsNyBAQA0KIAkJCQlpZiAoZGUuVmFs
dWUgPT0gbnVsbCl7DQogCQkJCQlzdHJpbmcgbmFtZSA9IChzdHJpbmcpIGRl
LktleTsNCiAJCQkJCQ0KLQkJCQkJR2VuZXJpY1BhcnNlci5lcnJvciAoMjM0
LCAiVGhlIHR5cGUgb3IgbmFtZXNwYWNlIGAiICsNCisJCQkJCVJlcG9ydC5F
cnJvciAoMjM0LCAiVGhlIHR5cGUgb3IgbmFtZXNwYWNlIGAiICsNCiAJCQkJ
CQkJICAgIG5hbWUgKyAiJyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgIiArDQog
CQkJCQkJCSAgICAiY2xhc3Mgb3IgbmFtZXNwYWNlIGAiICsgbmFtZSArICIn
Iik7DQogCQkJCX0NCkluZGV4OiBtY3MvcmVwb3J0LmNzDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpSQ1MgZmlsZTogL21vbm8vbWNzL21jcy9yZXBvcnQu
Y3Msdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjIzDQpkaWZmIC11IC1yMS4y
MyByZXBvcnQuY3MNCi0tLSBtY3MvcmVwb3J0LmNzCTI3IE1hciAyMDAyIDIz
OjQyOjUxIC0wMDAwCTEuMjMNCisrKyBtY3MvcmVwb3J0LmNzCTI1IEp1biAy
MDAyIDEzOjU4OjI4IC0wMDAwDQpAQCAtNDUsMTIgKzQ1LDEyIEBADQogCQlz
dGF0aWMgcHVibGljIGJvb2wgU3RhY2t0cmFjZTsNCiAJCQ0KIAkJLy8NCi0J
CS8vIElmIHRoZSBlcnJvciBjb2RlIGlzIHJlcG9ydGVkIG9uIHRoZSBnaXZl
biBsaW5lLA0KLQkJLy8gdGhlbiB0aGUgcHJvY2VzcyBleGl0cyB3aXRoIGEg
dW5pcXVlIGVycm9yIGNvZGUuDQorCQkvLyBJZiB0aGUgJ2V4cGVjdGVkJyBl
cnJvciBjb2RlIGlzIHJlcG9ydGVkIHRoZW4gdGhlDQorICAgICAgICAgICAg
ICAgIC8vIGNvbXBpbGF0aW9uIHN1Y2NlZWRzLg0KIAkJLy8NCiAJCS8vIFVz
ZWQgZm9yIHRoZSB0ZXN0IHN1aXRlIHRvIGV4Y2VyY2lzZSB0aGUgZXJyb3Ig
Y29kZXMNCiAJCS8vDQotCQlzdGF0aWMgaW50IHByb2JlX2Vycm9yID0gMDsN
CisJCXN0YXRpYyBpbnQgZXhwZWN0ZWRfZXJyb3IgPSAwOw0KIA0KIAkJLy8N
CiAJCS8vIEtlZXBzIHRyYWNrIG9mIHRoZSB3YXJuaW5ncyB0aGF0IHdlIGFy
ZSBpZ25vcmluZw0KQEAgLTU5LDExICs1OSwxMSBAQA0KIAkJDQogCQlzdGF0
aWMgdm9pZCBDaGVjayAoaW50IGNvZGUpDQogCQl7DQotCQkJaWYgKGNvZGUg
PT0gcHJvYmVfZXJyb3Ipew0KKwkJCWlmIChjb2RlID09IGV4cGVjdGVkX2Vy
cm9yKXsNCiAJCQkJaWYgKEZhdGFsKQ0KIAkJCQkJdGhyb3cgbmV3IEV4Y2Vw
dGlvbiAoKTsNCiAJCQkJDQotCQkJCUVudmlyb25tZW50LkV4aXQgKDEyMyk7
DQorCQkJCUVudmlyb25tZW50LkV4aXQgKDApOw0KIAkJCX0NCiAJCX0NCiAJ
CQ0KQEAgLTE0NywxNiArMTQ3LDE0IEBADQogCQkJd2FybmluZ19pZ25vcmVf
dGFibGUgW2NvZGVdID0gdHJ1ZTsNCiAJCX0NCiAJCQ0KLQkJc3RhdGljIHB1
YmxpYyB2b2lkIFNldFByb2JlIChpbnQgY29kZSkNCi0JCXsNCi0JCQlwcm9i
ZV9lcnJvciA9IGNvZGU7DQotCQl9DQotDQotCQlzdGF0aWMgcHVibGljIGlu
dCBQcm9iZUNvZGUgew0KLQkJCWdldCB7DQotCQkJCXJldHVybiBwcm9iZV9l
cnJvcjsNCi0JCQl9DQotCQl9DQorICAgICAgICAgICAgICAgIHN0YXRpYyBw
dWJsaWMgaW50IEV4cGVjdGVkRXJyb3Igew0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldCB7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZF9lcnJvciA9IHZhbHVlOw0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0NCisgICAgICAgICAgICAgICAgICAgICAgICBnZXQgew0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVk
X2Vycm9yOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAg
ICAgICAgICAgfQ0KIAl9DQogDQogCXB1YmxpYyBjbGFzcyBNZXNzYWdlIHsN
CkluZGV4OiB0ZXN0cy9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NClJDUyBmaWxlOiAvbW9uby9tY3MvdGVzdHMvQ2hhbmdlTG9nLHYNCnJl
dHJpZXZpbmcgcmV2aXNpb24gMS44MA0KZGlmZiAtdSAtcjEuODAgQ2hhbmdl
TG9nDQotLS0gdGVzdHMvQ2hhbmdlTG9nCTEzIEp1biAyMDAyIDEzOjA3OjUz
IC0wMDAwCTEuODANCisrKyB0ZXN0cy9DaGFuZ2VMb2cJMjUgSnVuIDIwMDIg
MTM6NTg6MjggLTAwMDANCkBAIC0xLDMgKzEsMTQgQEANCisyMDAyLTA2LTI1
ICBBbmRyZXcgQmlya2V0dCAgPGFkYkB0YXJkaXMuZWQuYWMudWs+DQorDQor
CSogbWFrZWZpbGU6IFRoZSBmb2xsb3dpbmcgdGVzdHMgZmFpbCB1bmRlciBs
aW51eCBhbmQgaGF2ZSBiZWVuIA0KKwltb3ZlZCB0byBURVNUX05PUEFTUzog
NDAsIDQ1LCA1MiwgNTMsIDkxLCAxMDYsIDEwNywgMTIyLCAxMzIsIDEzMw0K
Kw0KKwlXaW5kb3dzLXNwZWNpZmljIHRlc3RzIGhhdmUgYmVlbiBleHRyYWN0
ZWQsIGFuZCBhcmUgbm93IHJ1biBieSB0aGUNCisJdGVzdC13aW5kb3dzIHJ1
bGUgKGl0J2xsIGJlIHJ1biB1bmRlciBsaW51eCBidXQgZmFpbCkNCisNCisJ
VGhlIG91dHB1dCBmb3JtYXQgaGFzIGJlZW4gbWFkZSBsZXNzIG5vaXN5LCBh
bmQgaXMgYmFzaWNhbGx5IHRoZQ0KKwlzYW1lIGFzIHRoZSB0ZXN0cyBpbiBt
Y3MvZXJyb3JzIC0gbGlrZSAiUnVubmluZyB0ZXN0LTEgLi4uIE9LIi4NCisN
CiAyMDAyLTA2LTEzICBSYXZpIFByYXRhcCAgPHJhdmlAeGltaWFuLmNvbT4N
CiANCiAJKiB0ZXN0LTEzMS5jcyA6IEFkZCB0byB0ZXN0IGVudW0gbWVtYmVy
IGF0dHJpYnV0ZSBhcHBsaWNhdGlvbi4NCkluZGV4OiB0ZXN0cy9tYWtlZmls
ZQ0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9tb25vL21j
cy90ZXN0cy9tYWtlZmlsZSx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTIy
DQpkaWZmIC11IC1yMS4xMjIgbWFrZWZpbGUNCi0tLSB0ZXN0cy9tYWtlZmls
ZQkyMiBKdW4gMjAwMiAwNjoxNDoxMyAtMDAwMAkxLjEyMg0KKysrIHRlc3Rz
L21ha2VmaWxlCTI1IEp1biAyMDAyIDEzOjU4OjI4IC0wMDAwDQpAQCAtNyw2
OSArNyw5MyBAQA0KIAl0ZXN0LTEgICB0ZXN0LTIgICB0ZXN0LTMgICB0ZXN0
LTQgICB0ZXN0LTUgICB0ZXN0LTYgICB0ZXN0LTcgICB0ZXN0LTggICB0ZXN0
LTkgICB0ZXN0LTEwIFwNCiAJdGVzdC0xMSAgdGVzdC0xMiAgdGVzdC0xMyAg
dGVzdC0xNCAgdGVzdC0xNSAgdGVzdC0xNiAgdGVzdC0xNyAgdGVzdC0xOCAg
dGVzdC0xOSAgdGVzdC0yMCBcDQogCXRlc3QtMjEgIHRlc3QtMjIgIHRlc3Qt
MjMgIHRlc3QtMjQgIHRlc3QtMjUgIHRlc3QtMjYgIHRlc3QtMjcgIHRlc3Qt
MjggIAkgdGVzdC0zMCBcDQotCXRlc3QtMzEgIHRlc3QtMzIgIHRlc3QtMzMg
IHRlc3QtMzQgIHRlc3QtMzUgIHRlc3QtMzYgIHRlc3QtMzcgICAgICAgICAg
IHRlc3QtMzkgIHRlc3QtNDAgXA0KLQl0ZXN0LTQxICB0ZXN0LTQyICB0ZXN0
LTQzICB0ZXN0LTQ0ICB0ZXN0LTQ1ICB0ZXN0LTQ2ICB0ZXN0LTQ3ICB0ZXN0
LTQ4ICB0ZXN0LTQ5ICB0ZXN0LTUwIFwNCi0JdGVzdC01MSAgdGVzdC01MiAg
dGVzdC01MyAgdGVzdC01NCAgdGVzdC01NSAgdGVzdC01NiAgdGVzdC01NyAg
CSAgICAgICAgdGVzdC01OSAgdGVzdC02MCBcDQotCXRlc3QtNjEJIHRlc3Qt
NjIgIHRlc3QtNjMgIHRlc3QtNjQgIHRlc3QtNjUgIHRlc3QtNjYgIHRlc3Qt
NjcgIHRlc3QtNjggIHRlc3QtNjkgIHRlc3QtNzAgXA0KKwl0ZXN0LTMxICB0
ZXN0LTMyICB0ZXN0LTMzICB0ZXN0LTM0ICB0ZXN0LTM1ICB0ZXN0LTM2ICB0
ZXN0LTM3ICAgICAgICAgICB0ZXN0LTM5ICAgICAgICAgIFwNCisJdGVzdC00
MSAgdGVzdC00MiAgdGVzdC00MyAgdGVzdC00NCAgdGVzdC00NiAgdGVzdC00
NyAgdGVzdC00OCAgdGVzdC00OSAgXA0KKwl0ZXN0LTUxICB0ZXN0LTU0ICB0
ZXN0LTU1ICB0ZXN0LTU2ICB0ZXN0LTU3ICB0ZXN0LTU5ICB0ZXN0LTYwIFwN
CisJdGVzdC02MQkgdGVzdC02MiAgdGVzdC02MyAgdGVzdC02NCAgdGVzdC02
NSAgdGVzdC02NiAgdGVzdC02OCAgdGVzdC02OSAgdGVzdC03MCBcDQogCXRl
c3QtNzEgIHRlc3QtNzIgIHRlc3QtNzMgIHRlc3QtNzQgIHRlc3QtNzUgIHRl
c3QtNzYgIHRlc3QtNzcgIHRlc3QtNzggIHRlc3QtNzkgIHRlc3QtODAgXA0K
IAl0ZXN0LTgxICB0ZXN0LTgyICB0ZXN0LTgzICB0ZXN0LTg0ICB0ZXN0LTg1
ICB0ZXN0LTg2ICB0ZXN0LTg3ICB0ZXN0LTg4ICB0ZXN0LTg5ICB0ZXN0LTkw
IFwNCi0JdGVzdC05MSAgdGVzdC05MiAgdGVzdC05MyAgdGVzdC05NCAgdGVz
dC05NSAgdGVzdC05NiAgdGVzdC05NyAgdGVzdC05OCAgdGVzdC05OSAgdGVz
dC0xMDBcDQotCXRlc3QtMTAxIHRlc3QtMTAyIHRlc3QtMTAzIHRlc3QtMTA0
IHRlc3QtMTA1IHRlc3QtMTA2IHRlc3QtMTA3IHRlc3QtMTA4IHRlc3QtMTA5
IHRlc3QtMTEwXA0KKwl0ZXN0LTkyICB0ZXN0LTkzICB0ZXN0LTk0ICB0ZXN0
LTk1ICB0ZXN0LTk2ICB0ZXN0LTk3ICB0ZXN0LTk4ICB0ZXN0LTk5ICB0ZXN0
LTEwMFwNCisJdGVzdC0xMDEgdGVzdC0xMDIgdGVzdC0xMDMgdGVzdC0xMDQg
dGVzdC0xMDUgdGVzdC0xMDggdGVzdC0xMDkgdGVzdC0xMTBcDQogCXRlc3Qt
MTExIHRlc3QtMTEyIHRlc3QtMTEzIHRlc3QtMTE0IHRlc3QtMTE1IHRlc3Qt
MTE2IHRlc3QtMTE3IHRlc3QtMTE4IHRlc3QtMTE5IAlcDQotCXRlc3QtMTIx
IHRlc3QtMTIyIHRlc3QtMTIzICAgICAgICAgIHRlc3QtMTI1IHRlc3QtMTI2
IHRlc3QtMTI3IHRlc3QtMTI4IHRlc3QtMTI5IHRlc3QtMTMwIFwNCi0JdGVz
dC0xMzEgdGVzdC0xMzIgdGVzdC0xMzMgdGVzdC0xMzQgdGVzdC0xMzUNCisJ
dGVzdC0xMjEgdGVzdC0xMjMgICAgICAgICAgdGVzdC0xMjUgdGVzdC0xMjYg
dGVzdC0xMjcgdGVzdC0xMjggdGVzdC0xMjkgdGVzdC0xMzAgXA0KKwl0ZXN0
LTEzMSB0ZXN0LTEzNCB0ZXN0LTEzNQ0KIA0KIFVOU0FGRV9TT1VSQ0VTID0g
XA0KIAl1bnNhZmUtMSB1bnNhZmUtMiB1bnNhZmUtMw0KIA0KLVRFU1RfTk9Q
QVNTID0gXA0KLQl0ZXN0LTI5IHRlc3QtMzggXA0KLQl0ZXN0LTEyMA0KK1dJ
TkRPV1NfU09VUkNFUyA9IFwNCisJdGVzdC01MCB0ZXN0LTY3DQogDQorIyBB
IHRlc3QgaXMgYSAnbm8gcGFzcycgaWYgaXQgZmFpbHMgb24gZWl0aGVyIHdp
bmRvd3Mgb3IgbGludXgNCiAjIFRlc3QgMTIwIGRvZXMgbm90IHBhc3MgYmVj
YXVzZSB0aGUgTVMuTkVUIHJ1bnRpbWUgaXMgYnVnZ3kuDQorVEVTVF9OT1BB
U1MgPSBcDQorCXRlc3QtMjkgdGVzdC0zOCB0ZXN0LTQwIHRlc3QtNDUgIHRl
c3QtNTIgdGVzdC01MyB0ZXN0LTkxIHRlc3QtMTA2IHRlc3QtMTA3IFwNCisJ
dGVzdC0xMjAgdGVzdC0xMjIgdGVzdC0xMzIgdGVzdC0xMzMgDQorDQorYWxs
OiB0ZXN0LWNvbXBpbGVyIHRlc3QtdW5zYWZlIHRlc3Qtd2luZG93cw0KIA0K
LWFsbDogdGVzdC1jb21waWxlciB0ZXN0LXVuc2FmZQ0KIA0KKyMgQ29tcGls
ZSB3aXRoIG1vbm8sIHJ1biB3aXRoIE1TIGppdA0KIHRlc3QtY29tcGlsZXI6
DQotCS1ybSAqLmV4ZQ0KKwlAcm0gLWYgKi5leGU7IFwNCiAJZm9yIGkgaW4g
JChURVNUX1NPVVJDRVMpOyBkbyBcDQorCQllY2hvIC1uICJSdW5uaW5nICQk
aSAuLi4gIjsgXA0KIAkJaWYgJChNQ1MpICQkaS5jcyA+IC9kZXYvbnVsbDsg
dGhlbiBcDQotCQkJaWYgLi8kJGkuZXhlOyB0aGVuIFwNCi0JCQkJZWNobyAk
JGk6IG9rOyBcDQorCQkJaWYgLi8kJGkuZXhlID4gL2Rldi9udWxsOyB0aGVu
IFwNCisJCQkJZWNobyBPSzsgXA0KIAkJCWVsc2UgXA0KLQkJCQllY2hvIHRl
c3QgJCRpIGZhaWxlZDsgZXhpdDsgXA0KKwkJCQllY2hvIEZBSUxFRDsgZXhp
dCAxOyBcDQogCQkJZmk7IFwNCiAJCWVsc2UgXA0KLQkJCWVjaG8gY29tcGls
ZXIgZmFpbGVkIG9uICQkaTsgICBleGl0OyBcDQorCQkJZWNobyBGQUlMRUQg
VE8gQ09NUElMRTsgZXhpdCAxOyBcDQogCQlmaSBcDQogCWRvbmUNCiANCisj
IENvbXBpbGUgd2l0aCBtb25vLCBydW4gd2l0aCBNUyBqaXQNCiB0ZXN0LXVu
c2FmZToNCi0JZm9yIGkgaW4gJChVTlNBRkVfU09VUkNFUyk7IGRvIFwNCisJ
QGZvciBpIGluICQoVU5TQUZFX1NPVVJDRVMpOyBkbyBcDQorCQllY2hvIC1u
ICJSdW5uaW5nICh1bnNhZmUpICQkaSAuLi4gIjsgXA0KIAkJaWYgJChNQ1Mp
IC0tdW5zYWZlICQkaS5jcyA+IC9kZXYvbnVsbDsgdGhlbiBcDQotCQkJaWYg
Li8kJGkuZXhlOyB0aGVuIFwNCi0JCQkJZWNobyAkJGk6IG9rOyBcDQorCQkJ
aWYgLi8kJGkuZXhlID4gL2Rldi9udWxsOyB0aGVuIFwNCisJCQkJZWNobyBP
SzsgXA0KIAkJCWVsc2UgXA0KLQkJCQllY2hvIHRlc3QgJCRpIGZhaWxlZDsg
ZXhpdDsgXA0KKwkJCQllY2hvIEZBSUxFRDsgZXhpdCAxOyBcDQogCQkJZmk7
IFwNCiAJCWVsc2UgXA0KLQkJCWVjaG8gY29tcGlsZXIgZmFpbGVkIG9uICQk
aTsgICBleGl0OyBcDQorCQkJZWNobyBGQUlMRUQgV0hJTEUgQ09NUElMSU5H
OyBleGl0IDE7IFwNCiAJCWZpIFwNCiAJZG9uZQ0KIA0KKyMgQ29tcGlsZWQg
KHByZXZpb3VzbHkpIHdpdGggbW9ubywgcnVuIHdpdGggbW9ubyBqaXQNCiB0
ZXN0LWppdDoNCi0JZm9yIGkgaW4gJChURVNUX1NPVVJDRVM6LmNzPS5leGUp
OyBkbyBcDQotCQlpZiBtb25vIC4vJCRpLmV4ZTsgdGhlbiBcDQotCQkJZWNo
byAkJGk6IG9rOyBcDQorCUBmb3IgaSBpbiAkKFRFU1RfU09VUkNFUzouY3M9
LmV4ZSk7IGRvIFwNCisJCWVjaG8gLW4gIlJ1bm5pbmcgaml0ICQkaSAuLi4g
IjsgXA0KKwkJaWYgbW9ubyAuLyQkaS5leGUgPiAvZGV2L251bGw7IHRoZW4g
XA0KKwkJCWVjaG8gT0s7IFwNCiAJCWVsc2UgXA0KLQkJCWVjaG8gdGVzdCAk
JGkgZmFpbGVkOyBleGl0OyBcDQorCQkJZWNobyBGQUlMRUQ7IGV4aXQgMTsg
XA0KIAkJZmkgXA0KIAlkb25lDQogDQotDQorIyBDb21waWxlZCB3aXRoIG1v
bm8sIHJ1biB3aXRoIE1TIGppdA0KK3Rlc3Qtd2luZG93czoNCisJQGVjaG8g
UnVubmluZyB3aW5kb3dzLW9ubHkgdGVzdHMgLSB0aGVzZSB3aWxsIGZhaWwg
b24gbGludXg7IFwNCisJZm9yIGkgaW4gJChXSU5ET1dTX1NPVVJDRVMpOyBk
byBcDQorCQllY2hvIC1uICJSdW5uaW5nICQkaSAuLi4gIjsgXA0KKwkJaWYg
JChNQ1MpICQkaS5jcyA+IC9kZXYvbnVsbDsgdGhlbiBcDQorCQkJaWYgLi8k
JGkuZXhlID4gL2Rldi9udWxsOyB0aGVuIFwNCisJCQkJZWNobyBPSzsgXA0K
KwkJCWVsc2UgXA0KKwkJCQllY2hvIEZBSUxFRDsgZXhpdCAxOyBcDQorCQkJ
Zmk7IFwNCisJCWVsc2UgXA0KKwkJCWVjaG8gRkFJTEVEIFRPIENPTVBJTEU7
IGV4aXQgMTsgXA0KKwkJZmkgXA0KKwlkb25lDQogDQogdmVyaWZ5Og0KLQlm
b3IgaSBpbiAkKFRFU1RfU09VUkNFUyk7IGRvIFwNCisJQGZvciBpIGluICQo
VEVTVF9TT1VSQ0VTKTsgZG8gXA0KIAkJaWYgJChNQ1MpIC1vIG1jcy1nZW4t
Y29kZS5leGUgJCRpLmNzID4gL2Rldi9udWxsOyB0aGVuIFwNCiAJICAgICAg
ICAJaWYgJChDU0MpIC9vdXQ6Y3NjLWdlbi1jb2RlLmV4ZSAkJGkuY3MgPiAv
ZGV2L251bGw7IHRoZW4gXA0KIAkJCQlpZiAkKFZFUklGWSkgbWNzLWdlbi1j
b2RlLmV4ZSBjc2MtZ2VuLWNvZGUuZXhlID4gL2Rldi9udWxsOyB0aGVuIFwN
CkBAIC03OSw3ICsxMDMsOCBAQA0KIAkJCQlmaTsgXA0KIAkJCWZpIFwNCiAJ
CWZpIFwNCi0JZG9uZQ0KKwlkb25lOyBcDQorCWVjaG8gVmVyaWZpY2F0aW9u
IHBhc3NlZA0KIA0KIA0KIGNhc3RzLmNzOiBnZW4tY2FzdC10ZXN0LmNzDQo=
---559023410-1804928587-1025013756=:22467
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=ChangeLog
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.GS4.4.33.0206251502360.22467@omega.tardis.ed.ac.uk>
Content-Description: Changelog for mcs/errors
Content-Disposition: attachment; filename=ChangeLog

MjAwMi0wNi0yNCAgQW5kcmV3IEJpcmtldHQgIDxhZGJAdGFyZGlzLmVkLmFj
LnVrPg0KDQoJKiBmYWlsOiBjczAxMjEuY3MsIGNzMDE1Ny5jcyBhbmQgY3Mx
NTAxLmNzIG5vIGxvbmdlciBmYWlsLiAgDQoJKiBjczAxNzYuY3M6IE1ldGhv
ZCBoYXMgdG8gYmUgcHVibGljIGZvciBjb3JyZWN0IHRlc3QNCgkqIGNzMDE5
Ni5jcywgY3MwMjQyLmNzOiBEbyAncmV0dXJuJyB0byBzdG9wIG51bGwgc3Rh
dGVtZW50IHdhcm5pbmcuDQoJKiBjczAyNTUuY3M6IEFkZCBhc3NpZ25tZW50
IHRvIHN0b3AgJ3VudXNlZCB2YXJpYWJsZScgd2FybmluZy4NCgkqIG1ha2Vm
aWxlOiBPdXRwdXQgaXMgbm93IGxpa2UgIlJ1bm5pbmcgdGVzdCA0MiAuLiBP
SyIuICBBZGRlZCAtLXVuc2FmZSB0byANCgkgIG1ha2UgY3MwMTkzLmNzLCBj
czAxOTYuY3MgYW5kIGNzMDIxNC0zLmNzIHdvcmsuDQoNCg==
---559023410-1804928587-1025013756=:22467--