[mono/mono] [4 commits] d970f374: [Bug 16334] Fix ConcurrentBag.TryTake and TryPeek

"Jeremie Laval ([email protected])" <[email protected]> Fri, 22 Nov 2013 21:45:49 +0000
Newsgroups gmane.comp.gnome.mono.patches
Message-ID <0000014281c6a93e-3d7cfebb-2d61-4ef2-8169-b52f1c5ce5a6-000000@email.amazonses.com>
DQogICBCcmFuY2g6IHJlZnMvaGVhZHMvbWFzdGVyDQogICAgIEhvbWU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tb25vL21vbm8NCiAgQ29tcGFyZTogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9uby9j
b21wYXJlLzg2ZDZiNmY3Y2E3Mi4uLjIyMTFlM2E1ZDAyYw0KDQogICBDb21taXQ6IGQ5NzBmMzc0
NGVmY2U0YTU4M2U1NmZjMWIzNmMwNTAyY2IwMTEwNGMNCiAgIEF1dGhvcjogTWF4aW1lIEJydWdp
ZG91IDxtLmJydWdpZG91QGNyaXRlby5jb20+IChicnVnaWRvdSkNCiAgICAgRGF0ZTogMjAxMy0x
MS0xOSAxMDowOTozNSBHTVQNCiAgICAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL21vbm8vbW9u
by9jb21taXQvZDk3MGYzNzQ0ZWZjZTRhNTgzZTU2ZmMxYjM2YzA1MDJjYjAxMTA0Yw0KDQpbQnVn
IDE2MzM0XSBGaXggQ29uY3VycmVudEJhZy5UcnlUYWtlIGFuZCBUcnlQZWVrCgpTaG91bGQgcmV0
dXJuIGZhbHNlIGlmIG5vIHJlc3VsdCBpbiBhbGwgY2FzZXMKCnNlZSBodHRwczovL2J1Z3ppbGxh
LnhhbWFyaW4uY29tL3Nob3dfYnVnLmNnaT9pZD0xNjMzNA0KDQpDaGFuZ2VkIHBhdGhzOgogIE0g
bWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uQ29sbGVjdGlvbnMuQ29uY3VycmVudC9Db25jdXJyZW50
QmFnLmNzCg0KTW9kaWZpZWQ6IG1jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLkNvbGxlY3Rpb25zLkNv
bmN1cnJlbnQvQ29uY3VycmVudEJhZy5jcw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTg4LDYgKzg4LDcgQEAg
cHVibGljIGJvb2wgVHJ5VGFrZSAob3V0IFQgcmVzdWx0KQogCQkJCiAJCQlpZiAoYmFnID09IG51
bGwgfHwgYmFnLlBvcEJvdHRvbSAob3V0IHJlc3VsdCkgIT0gUG9wUmVzdWx0LlN1Y2NlZWQpIHsK
IAkJCQl2YXIgc2VsZiA9IGJhZzsKKwkJCQlyZXQgPSBmYWxzZTsKIAkJCQlmb3JlYWNoICh2YXIg
b3RoZXIgaW4gc3RhZ2luZykgewogCQkJCQkvLyBUcnkgdG8gcmV0cmlldmUgc29tZXRoaW5nIGJh
c2VkIG9uIGEgaGludAogCQkJCQlyZXQgPSBUcnlHZXRIaW50IChvdXQgaGludEluZGV4KSAmJiAo
YmFnID0gY29udGFpbmVyW2hpbnRJbmRleF0pLlBvcFRvcCAob3V0IHJlc3VsdCkgPT0gUG9wUmVz
dWx0LlN1Y2NlZWQ7CkBAIC0xMjksNiArMTMwLDcgQEAgcHVibGljIGJvb2wgVHJ5UGVlayAob3V0
IFQgcmVzdWx0KQogCiAJCQlpZiAoYmFnID09IG51bGwgfHwgIWJhZy5QZWVrQm90dG9tIChvdXQg
cmVzdWx0KSkgewogCQkJCXZhciBzZWxmID0gYmFnOworCQkJCXJldCA9IGZhbHNlOwogCQkJCWZv
cmVhY2ggKHZhciBvdGhlciBpbiBzdGFnaW5nKSB7CiAJCQkJCS8vIFRyeSB0byByZXRyaWV2ZSBz
b21ldGhpbmcgYmFzZWQgb24gYSBoaW50CiAJCQkJCXJldCA9IFRyeUdldEhpbnQgKG91dCBoaW50
SW5kZXgpICYmIGNvbnRhaW5lcltoaW50SW5kZXhdLlBlZWtUb3AgKG91dCByZXN1bHQpOwpAQCAt
Mjc5LDQgKzI4MSw0IEBAIHZvaWQgVGlkeUJhZyAoaW50IGluZGV4LCBDeWNsaWNEZXF1ZTxUPiBi
YWcpCiAJCX0KIAl9CiB9Ci0jZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisjZW5k
aWYNCg0KICAgQ29tbWl0OiAyMzMzOTZhYTEzYWViMTAyZGNhYmZhMTU3OTc4ZDg2OTFjYjBlZDk3
DQogICBBdXRob3I6IE1heGltZSBCcnVnaWRvdSA8bS5icnVnaWRvdUBjcml0ZW8uY29tPiAoYnJ1
Z2lkb3UpDQogICAgIERhdGU6IDIwMTMtMTEtMTkgMTI6NTU6MDMgR01UDQogICAgICBVUkw6IGh0
dHBzOi8vZ2l0aHViLmNvbS9tb25vL21vbm8vY29tbWl0LzIzMzM5NmFhMTNhZWIxMDJkY2FiZmEx
NTc5NzhkODY5MWNiMGVkOTcNCg0KQ29uY3VycmVudEJhZyBzdGFnaW5nIGNvdWxkIGJlY29tZSBl
bXB0eQoKYWZ0ZXIgYWxsIGl0ZW1zIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gYSBiYWcsIHRoZSBz
dGFnaW5nIGRpY3Rpb25hcnkKaXMgY2xlYW5lZCB1cCBidXQgbmV2ZXIgZmlsbGVkIGFnYWluLg0K
DQpDaGFuZ2VkIHBhdGhzOgogIE0gbWNzL2NsYXNzL1N5c3RlbS9TeXN0ZW0uQ29sbGVjdGlvbnMu
Q29uY3VycmVudC9Db25jdXJyZW50QmFnLmNzCg0KTW9kaWZpZWQ6IG1jcy9jbGFzcy9TeXN0ZW0v
U3lzdGVtLkNvbGxlY3Rpb25zLkNvbmN1cnJlbnQvQ29uY3VycmVudEJhZy5jcw0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljIHZvaWQgQWRkIChUIGl0ZW0pCiAJCQlpbnQgaW5k
ZXg7CiAJCQlDeWNsaWNEZXF1ZTxUPiBiYWcgPSBHZXRCYWcgKG91dCBpbmRleCk7CiAJCQliYWcu
UHVzaEJvdHRvbSAoaXRlbSk7CisJCQlzdGFnaW5nLlRyeUFkZCAoaW5kZXgsIGJhZyk7CiAJCQlB
ZGRIaW50IChpbmRleCk7CiAJCQlJbnRlcmxvY2tlZC5JbmNyZW1lbnQgKHJlZiBjb3VudCk7CiAJ
CX0KQEAgLTI2NiwxMCArMjY3LDcgQEAgQ3ljbGljRGVxdWU8VD4gR2V0QmFnIChvdXQgaW50IGlu
ZGV4LCBib29sIGNyZWF0ZUJhZyA9IHRydWUpCiAJCQlpZiAoY29udGFpbmVyLlRyeUdldFZhbHVl
IChpbmRleCwgb3V0IHZhbHVlKSkKIAkJCQlyZXR1cm4gdmFsdWU7CiAKLQkJCXZhciBiYWcgPSBj
cmVhdGVCYWcgPyBjb250YWluZXIuR2V0T3JBZGQgKGluZGV4LCBuZXcgQ3ljbGljRGVxdWU8VD4g
KCkpIDogbnVsbDsKLQkJCWlmIChiYWcgIT0gbnVsbCkKLQkJCQlzdGFnaW5nLlRyeUFkZCAoaW5k
ZXgsIGJhZyk7Ci0JCQlyZXR1cm4gYmFnOworCQkJcmV0dXJuIGNyZWF0ZUJhZyA/IGNvbnRhaW5l
ci5HZXRPckFkZCAoaW5kZXgsIG5ldyBDeWNsaWNEZXF1ZTxUPiAoKSkgOiBudWxsOwogCQl9CiAK
IAkJdm9pZCBUaWR5QmFnIChpbnQgaW5kZXgsIEN5Y2xpY0RlcXVlPFQ+IGJhZykNCg0KICAgQ29t
bWl0OiAwN2JlOWExZjljYmRlN2M4ZTQ1NDI0YzhlODk4YTA1MzlhNTJkNTJmDQogICBBdXRob3I6
IE1heGltZSBCcnVnaWRvdSA8bS5icnVnaWRvdUBjcml0ZW8uY29tPiAoYnJ1Z2lkb3UpDQogICAg
IERhdGU6IDIwMTMtMTEtMjIgMTQ6MzM6MjYgR01UDQogICAgICBVUkw6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tb25vL21vbm8vY29tbWl0LzA3YmU5YTFmOWNiZGU3YzhlNDU0MjRjOGU4OThhMDUzOWE1
MmQ1MmYNCg0KQWRkIFVuaXQgdGVzdHMNCg0KQ2hhbmdlZCBwYXRoczoKICBNIG1jcy9jbGFzcy9T
eXN0ZW0vVGVzdC9TeXN0ZW0uQ29sbGVjdGlvbnMuQ29uY3VycmVudC9Db25jdXJyZW50QmFnVGVz
dHMuY3MKDQpNb2RpZmllZDogbWNzL2NsYXNzL1N5c3RlbS9UZXN0L1N5c3RlbS5Db2xsZWN0aW9u
cy5Db25jdXJyZW50L0NvbmN1cnJlbnRCYWdUZXN0cy5jcw0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KQEAgLTE5MSw2
ICsxOTEsNTAgQEAgcHVibGljIHZvaWQgQWRkRnJvbU9uZVRocmVhZFBlZWtGcm9tTXVsdGlwbGUg
KCkKIAogCQkJQXNzZXJ0LklzVHJ1ZSAodmFsaWQsICJBZ2dyZWdhdGUgdGVzdCIpOwogCQl9CisK
KyAgICAgICAgW1Rlc3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEJhc2ljUmVtb3ZlRW1wdHlUZXN0
ICgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBBc3Nl
cnQuSXNUcnVlKGJhZy5Jc0VtcHR5KTsKKyAgICAgICAgICAgIEFzc2VydC5Jc0ZhbHNlKGJhZy5U
cnlUYWtlKG91dCByZXN1bHQpKTsKKyAgICAgICAgfQorCisgICAgICAgIFtUZXN0XQorICAgICAg
ICBwdWJsaWMgdm9pZCBCYXNpY1JlbW92ZVR3aWNlVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGJhZy5BZGQgKDEpOworICAgICAgICAgICAgQXNzZXJ0LklzRmFsc2UgKGJhZy5Jc0VtcHR5
KTsKKyAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbCAoMSwgYmFnLkNvdW50KTsKKworICAgICAg
ICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIEFzc2VydC5Jc1RydWUgKGJhZy5UcnlUYWtl
IChvdXQgcmVzdWx0KSk7CisgICAgICAgICAgICBBc3NlcnQuQXJlRXF1YWwgKDEsIHJlc3VsdCk7
CisgICAgICAgICAgICBBc3NlcnQuSXNUcnVlIChiYWcuSXNFbXB0eSk7CisgICAgICAgICAgICBB
c3NlcnQuSXNGYWxzZSAoYmFnLlRyeVRha2UgKG91dCByZXN1bHQpKTsKKyAgICAgICAgICAgIEFz
c2VydC5Jc0ZhbHNlIChiYWcuVHJ5VGFrZSAob3V0IHJlc3VsdCkpOworICAgICAgICB9CisKKyAg
ICAgICAgW1Rlc3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEFkZFJlbW92ZUFkZFRlc3QoKQorICAg
ICAgICB7CisgICAgICAgICAgICBiYWcuQWRkICgxKTsKKyAgICAgICAgICAgIEFzc2VydC5Jc0Zh
bHNlIChiYWcuSXNFbXB0eSk7CisgICAgICAgICAgICBBc3NlcnQuQXJlRXF1YWwgKDEsIGJhZy5D
b3VudCk7CisKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBBc3NlcnQuSXNU
cnVlIChiYWcuVHJ5VGFrZSAob3V0IHJlc3VsdCkpOworICAgICAgICAgICAgQXNzZXJ0LkFyZUVx
dWFsICgxLCByZXN1bHQpOworICAgICAgICAgICAgQXNzZXJ0LklzVHJ1ZSAoYmFnLklzRW1wdHkp
OworCisgICAgICAgICAgICBiYWcuQWRkICgxKTsKKyAgICAgICAgICAgIEFzc2VydC5Jc0ZhbHNl
IChiYWcuSXNFbXB0eSk7CisgICAgICAgICAgICBBc3NlcnQuQXJlRXF1YWwgKDEsIGJhZy5Db3Vu
dCk7CisKKyAgICAgICAgICAgIEFzc2VydC5Jc1RydWUgKGJhZy5UcnlUYWtlIChvdXQgcmVzdWx0
KSk7CisgICAgICAgICAgICBBc3NlcnQuQXJlRXF1YWwgKDEsIHJlc3VsdCk7CisgICAgICAgICAg
ICBBc3NlcnQuSXNUcnVlIChiYWcuSXNFbXB0eSk7CisgICAgICAgIH0KIAkJCiAJCVtUZXN0XQog
CQlwdWJsaWMgdm9pZCBBZGRTdHJlc3NUZXN0ICgpDQoNCiAgIENvbW1pdDogMjIxMWUzYTVkMDJj
YTU0NmZkYmFkMjAzM2I4YjNkMGM4MTdjOTdjMw0KICAgQXV0aG9yOiBKw6lyw6ltaWUgTGF2YWwg
PGplcmVtaWUubGF2YWxAZ21haWwuY29tPiAoZ2FydW1hKQ0KICAgICBEYXRlOiAyMDEzLTExLTIy
IDIxOjM1OjQyIEdNVA0KICAgICAgVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbW9uby9tb25vL2Nv
bW1pdC8yMjExZTNhNWQwMmNhNTQ2ZmRiYWQyMDMzYjhiM2QwYzgxN2M5N2MzDQoNCk1lcmdlIHB1
bGwgcmVxdWVzdCAjODExIGZyb20gY3JpdGVvLzE2MzM0LUNvbmN1cnJlbnRCYWcKCltCdWcgMTYz
MzRdIEZpeCBDb25jdXJyZW50QmFnLlRyeVRha2UgYW5kIFRyeVBlZWsNCg0KQ2hhbmdlZCBwYXRo
czoKICBNIG1jcy9jbGFzcy9TeXN0ZW0vU3lzdGVtLkNvbGxlY3Rpb25zLkNvbmN1cnJlbnQvQ29u
Y3VycmVudEJhZy5jcwogIE0gbWNzL2NsYXNzL1N5c3RlbS9UZXN0L1N5c3RlbS5Db2xsZWN0aW9u
cy5Db25jdXJyZW50L0NvbmN1cnJlbnRCYWdUZXN0cy5jcwoNCk1vZGlmaWVkOiBtY3MvY2xhc3Mv
U3lzdGVtL1N5c3RlbS5Db2xsZWN0aW9ucy5Db25jdXJyZW50L0NvbmN1cnJlbnRCYWcuY3MNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYyB2b2lkIEFkZCAoVCBpdGVtKQogCQkJ
aW50IGluZGV4OwogCQkJQ3ljbGljRGVxdWU8VD4gYmFnID0gR2V0QmFnIChvdXQgaW5kZXgpOwog
CQkJYmFnLlB1c2hCb3R0b20gKGl0ZW0pOworCQkJc3RhZ2luZy5UcnlBZGQgKGluZGV4LCBiYWcp
OwogCQkJQWRkSGludCAoaW5kZXgpOwogCQkJSW50ZXJsb2NrZWQuSW5jcmVtZW50IChyZWYgY291
bnQpOwogCQl9CkBAIC04OCw2ICs4OSw3IEBAIHB1YmxpYyBib29sIFRyeVRha2UgKG91dCBUIHJl
c3VsdCkKIAkJCQogCQkJaWYgKGJhZyA9PSBudWxsIHx8IGJhZy5Qb3BCb3R0b20gKG91dCByZXN1
bHQpICE9IFBvcFJlc3VsdC5TdWNjZWVkKSB7CiAJCQkJdmFyIHNlbGYgPSBiYWc7CisJCQkJcmV0
ID0gZmFsc2U7CiAJCQkJZm9yZWFjaCAodmFyIG90aGVyIGluIHN0YWdpbmcpIHsKIAkJCQkJLy8g
VHJ5IHRvIHJldHJpZXZlIHNvbWV0aGluZyBiYXNlZCBvbiBhIGhpbnQKIAkJCQkJcmV0ID0gVHJ5
R2V0SGludCAob3V0IGhpbnRJbmRleCkgJiYgKGJhZyA9IGNvbnRhaW5lcltoaW50SW5kZXhdKS5Q
b3BUb3AgKG91dCByZXN1bHQpID09IFBvcFJlc3VsdC5TdWNjZWVkOwpAQCAtMTI5LDYgKzEzMSw3
IEBAIHB1YmxpYyBib29sIFRyeVBlZWsgKG91dCBUIHJlc3VsdCkKIAogCQkJaWYgKGJhZyA9PSBu
dWxsIHx8ICFiYWcuUGVla0JvdHRvbSAob3V0IHJlc3VsdCkpIHsKIAkJCQl2YXIgc2VsZiA9IGJh
ZzsKKwkJCQlyZXQgPSBmYWxzZTsKIAkJCQlmb3JlYWNoICh2YXIgb3RoZXIgaW4gc3RhZ2luZykg
ewogCQkJCQkvLyBUcnkgdG8gcmV0cmlldmUgc29tZXRoaW5nIGJhc2VkIG9uIGEgaGludAogCQkJ
CQlyZXQgPSBUcnlHZXRIaW50IChvdXQgaGludEluZGV4KSAmJiBjb250YWluZXJbaGludEluZGV4
XS5QZWVrVG9wIChvdXQgcmVzdWx0KTsKQEAgLTI2NCwxMCArMjY3LDcgQEAgQ3ljbGljRGVxdWU8
VD4gR2V0QmFnIChvdXQgaW50IGluZGV4LCBib29sIGNyZWF0ZUJhZyA9IHRydWUpCiAJCQlpZiAo
Y29udGFpbmVyLlRyeUdldFZhbHVlIChpbmRleCwgb3V0IHZhbHVlKSkKIAkJCQlyZXR1cm4gdmFs
dWU7CiAKLQkJCXZhciBiYWcgPSBjcmVhdGVCYWcgPyBjb250YWluZXIuR2V0T3JBZGQgKGluZGV4
LCBuZXcgQ3ljbGljRGVxdWU8VD4gKCkpIDogbnVsbDsKLQkJCWlmIChiYWcgIT0gbnVsbCkKLQkJ
CQlzdGFnaW5nLlRyeUFkZCAoaW5kZXgsIGJhZyk7Ci0JCQlyZXR1cm4gYmFnOworCQkJcmV0dXJu
IGNyZWF0ZUJhZyA/IGNvbnRhaW5lci5HZXRPckFkZCAoaW5kZXgsIG5ldyBDeWNsaWNEZXF1ZTxU
PiAoKSkgOiBudWxsOwogCQl9CiAKIAkJdm9pZCBUaWR5QmFnIChpbnQgaW5kZXgsIEN5Y2xpY0Rl
cXVlPFQ+IGJhZykKQEAgLTI3OSw0ICsyNzksNCBAQCB2b2lkIFRpZHlCYWcgKGludCBpbmRleCwg
Q3ljbGljRGVxdWU8VD4gYmFnKQogCQl9CiAJfQogfQotI2VuZGlmClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQorI2VuZGlmDQoNCk1vZGlmaWVkOiBtY3MvY2xhc3MvU3lzdGVtL1Rlc3QvU3lz
dGVtLkNvbGxlY3Rpb25zLkNvbmN1cnJlbnQvQ29uY3VycmVudEJhZ1Rlc3RzLmNzDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQpAQCAtMTkxLDYgKzE5MSw1MCBAQCBwdWJsaWMgdm9pZCBBZGRGcm9tT25lVGhyZWFkUGVl
a0Zyb21NdWx0aXBsZSAoKQogCiAJCQlBc3NlcnQuSXNUcnVlICh2YWxpZCwgIkFnZ3JlZ2F0ZSB0
ZXN0Iik7CiAJCX0KKworICAgICAgICBbVGVzdF0KKyAgICAgICAgcHVibGljIHZvaWQgQmFzaWNS
ZW1vdmVFbXB0eVRlc3QgKCkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAg
ICAgICAgICAgIEFzc2VydC5Jc1RydWUoYmFnLklzRW1wdHkpOworICAgICAgICAgICAgQXNzZXJ0
LklzRmFsc2UoYmFnLlRyeVRha2Uob3V0IHJlc3VsdCkpOworICAgICAgICB9CisKKyAgICAgICAg
W1Rlc3RdCisgICAgICAgIHB1YmxpYyB2b2lkIEJhc2ljUmVtb3ZlVHdpY2VUZXN0KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgYmFnLkFkZCAoMSk7CisgICAgICAgICAgICBBc3NlcnQuSXNGYWxz
ZSAoYmFnLklzRW1wdHkpOworICAgICAgICAgICAgQXNzZXJ0LkFyZUVxdWFsICgxLCBiYWcuQ291
bnQpOworCisgICAgICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICAgICAgQXNzZXJ0LklzVHJ1
ZSAoYmFnLlRyeVRha2UgKG91dCByZXN1bHQpKTsKKyAgICAgICAgICAgIEFzc2VydC5BcmVFcXVh
bCAoMSwgcmVzdWx0KTsKKyAgICAgICAgICAgIEFzc2VydC5Jc1RydWUgKGJhZy5Jc0VtcHR5KTsK
KyAgICAgICAgICAgIEFzc2VydC5Jc0ZhbHNlIChiYWcuVHJ5VGFrZSAob3V0IHJlc3VsdCkpOwor
ICAgICAgICAgICAgQXNzZXJ0LklzRmFsc2UgKGJhZy5UcnlUYWtlIChvdXQgcmVzdWx0KSk7Cisg
ICAgICAgIH0KKworICAgICAgICBbVGVzdF0KKyAgICAgICAgcHVibGljIHZvaWQgQWRkUmVtb3Zl
QWRkVGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJhZy5BZGQgKDEpOworICAgICAgICAg
ICAgQXNzZXJ0LklzRmFsc2UgKGJhZy5Jc0VtcHR5KTsKKyAgICAgICAgICAgIEFzc2VydC5BcmVF
cXVhbCAoMSwgYmFnLkNvdW50KTsKKworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAg
ICAgIEFzc2VydC5Jc1RydWUgKGJhZy5UcnlUYWtlIChvdXQgcmVzdWx0KSk7CisgICAgICAgICAg
ICBBc3NlcnQuQXJlRXF1YWwgKDEsIHJlc3VsdCk7CisgICAgICAgICAgICBBc3NlcnQuSXNUcnVl
IChiYWcuSXNFbXB0eSk7CisKKyAgICAgICAgICAgIGJhZy5BZGQgKDEpOworICAgICAgICAgICAg
QXNzZXJ0LklzRmFsc2UgKGJhZy5Jc0VtcHR5KTsKKyAgICAgICAgICAgIEFzc2VydC5BcmVFcXVh
bCAoMSwgYmFnLkNvdW50KTsKKworICAgICAgICAgICAgQXNzZXJ0LklzVHJ1ZSAoYmFnLlRyeVRh
a2UgKG91dCByZXN1bHQpKTsKKyAgICAgICAgICAgIEFzc2VydC5BcmVFcXVhbCAoMSwgcmVzdWx0
KTsKKyAgICAgICAgICAgIEFzc2VydC5Jc1RydWUgKGJhZy5Jc0VtcHR5KTsKKyAgICAgICAgfQog
CQkKIAkJW1Rlc3RdCiAJCXB1YmxpYyB2b2lkIEFkZFN0cmVzc1Rlc3QgKCkNCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk1vbm8tcGF0Y2hlcyBtYWlsbGlz
dCAgLSAgTW9uby1wYXRjaGVzQGxpc3RzLnhpbWlhbi5jb20KaHR0cDovL2xpc3RzLnhpbWlhbi5j
b20vbWFpbG1hbi9saXN0aW5mby9tb25vLXBhdGNoZXMK