ZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3NoYXJlZC52aW0gYi9zcmMvdGVzdGRpci9zaGFyZWQudmltCmluZGV4IGU3NTNjMWUuLjU4YjcyNzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3NoYXJlZC52aW0KKysrIGIvc3JjL3Rlc3RkaXIvc2hhcmVkLnZpbQpAQCAtMTU2LDcgKzE1Niw3IEBACiBmdW5jIHM6V2FpdEZvckNvbW1vbihleHByLCBhc3NlcnQsIHRpbWVvdXQpCiAgICIgdXNpbmcgcmVsdGltZSgpIGlzIG1vcmUgYWNjdXJhdGUsIGJ1dCBub3QgYWx3YXlzIGF2YWlsYWJsZQogICBsZXQgc2xlcHQgPSAwCi0gIGlmIGhhcygncmVsdGltZScpCisgIGlmIGV4aXN0cygnKnJlbHRpbWVmbG9hdCcpCiAgICAgbGV0IHN0YXJ0ID0gcmVsdGltZSgpCiAgIGVuZGlmCiAKQEAgLTE4MSw3ICsxODEsNyBAQAogICAgIGVuZGlmCiAKICAgICBzbGVlcCAxMG0KLSAgICBpZiBoYXMoJ3JlbHRpbWUnKQorICAgIGlmIGV4aXN0cygnKnJlbHRpbWVmbG9hdCcpCiAgICAgICBsZXQgc2xlcHQgPSBmbG9hdDJucihyZWx0aW1lZmxvYXQocmVsdGltZShzdGFydCkpICogMTAwMCkKICAgICBlbHNlCiAgICAgICBsZXQgc2xlcHQgKz0gMTAKQEAgLTE5Nyw3ICsxOTcsNyBAQAogIiBmZWVkcyBrZXktaW5wdXQgYW5kIHJlc3VtZXMgcHJvY2Vzcy4gUmV0dXJuIHRpbWUgd2FpdGVkIGluIG1pbGxpc2Vjb25kcy4KICIgV2l0aG91dCArdGltZXJzIGl0IHVzZXMgc2ltcGx5IDpzbGVlcC4KIGZ1bmMgU3RhbmRieShtc2VjKQotICBpZiBoYXMoJ3RpbWVycycpCisgIGlmIGhhcygndGltZXJzJykgJiYgZXhpc3RzKCcqcmVsdGltZWZsb2F0JykKICAgICBsZXQgc3RhcnQgPSByZWx0aW1lKCkKICAgICBsZXQgZzpfc3RhbmRieV90aW1lciA9IHRpbWVyX3N0YXJ0KGE6bXNlYywgZnVuY3Rpb24oJ3M6ZmVlZGtleXMnKSkKICAgICBjYWxsIGdldGNoYXIoKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9ibG9iLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfYmxvYi52aW0KaW5kZXggMThkOWM4YS4uNDdjMDllNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9ibG9iLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X2Jsb2IudmltCkBAIC0zMjQsNSArMzI0LDUgQEAKIGVuZGZ1bmMKIAogZnVuYyBUZXN0X2Jsb2Jfc29ydCgpCi0gIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHNvcnQoWzEuMCwgMHoxMV0sICJmIiknLCAnRTk3NTonKQorICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzb3J0KFsiYWJjIiwgMHoxMV0sICJmIiknLCAnRTcwMjonKQogZW5kZnVuYwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9jaGFubmVsLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfY2hhbm5lbC52aW0KaW5kZXggYmQ0NDJjMi4uYzIwNjgxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9jaGFubmVsLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X2NoYW5uZWwudmltCkBAIC0yMDIsMTAgKzIwMiwxMiBAQAogCiAgICIgUmVhZGluZyB3aGlsZSB0aGVyZSBpcyBub3RoaW5nIGF2YWlsYWJsZS4KICAgY2FsbCBhc3NlcnRfZXF1YWwodjpub25lLCBjaF9yZWFkKGhhbmRsZSwgeyd0aW1lb3V0JzogMH0pKQotICBsZXQgc3RhcnQgPSByZWx0aW1lKCkKLSAgY2FsbCBhc3NlcnRfZXF1YWwodjpub25lLCBjaF9yZWFkKGhhbmRsZSwgeyd0aW1lb3V0JzogMzMzfSkpCi0gIGxldCBlbGFwc2VkID0gcmVsdGltZShzdGFydCkKLSAgY2FsbCBhc3NlcnRfaW5yYW5nZSgwLjMsIDAuNiwgcmVsdGltZWZsb2F0KHJlbHRpbWUoc3RhcnQpKSkKKyAgaWYgZXhpc3RzKCcqcmVsdGltZWZsb2F0JykKKyAgICBsZXQgc3RhcnQgPSByZWx0aW1lKCkKKyAgICBjYWxsIGFzc2VydF9lcXVhbCh2Om5vbmUsIGNoX3JlYWQoaGFuZGxlLCB7J3RpbWVvdXQnOiAzMzN9KSkKKyAgICBsZXQgZWxhcHNlZCA9IHJlbHRpbWUoc3RhcnQpCisgICAgY2FsbCBhc3NlcnRfaW5yYW5nZSgwLjMsIDAuNiwgcmVsdGltZWZsb2F0KHJlbHRpbWUoc3RhcnQpKSkKKyAgZW5kaWYKIAogICAiIFNlbmQgd2l0aG91dCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlLCB0aGVuIHdhaXQgZm9yIGEgcmVzcG9uc2UuCiAgIGNhbGwgY2hfc2VuZGV4cHIoaGFuZGxlLCAnd2FpdCBhIGJpdCcpCkBAIC00MTIsNiArNDE0LDggQEAKIAogIiBUZXN0IHRoYXQgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBub24tZXhpc3RpbmcgcG9ydCBmYWlscyBxdWlja2x5LgogZnVuYyBUZXN0X2Nvbm5lY3Rfd2FpdHRpbWUoKQorICBDaGVja0Z1bmN0aW9uIHJlbHRpbWVmbG9hdAorCiAgIGNhbGwgY2hfbG9nKCdUZXN0X2Nvbm5lY3Rfd2FpdHRpbWUoKScpCiAgIGxldCBzdGFydCA9IHJlbHRpbWUoKQogICBsZXQgaGFuZGxlID0gY2hfb3BlbignbG9jYWxob3N0Ojk4NzYnLCBzOmNob3B0KQpAQCAtOTI3LDYgKzkzMSw4IEBACiBlbmRmdW5jCiAKIGZ1bmMgVGVzdF9waXBlX3RvX2J1ZmZlcl9qc29uKCkKKyAgQ2hlY2tGdW5jdGlvbiByZWx0aW1lZmxvYXQKKwogICBsZXQgam9iID0gam9iX3N0YXJ0KHM6cHl0aG9uIC4gIiB0ZXN0X2NoYW5uZWxfcGlwZS5weSIsCiAJXCB7J291dF9pbyc6ICdidWZmZXInLCAnb3V0X21vZGUnOiAnanNvbid9KQogICBjYWxsIGFzc2VydF9lcXVhbCgicnVuIiwgam9iX3N0YXR1cyhqb2IpKQpAQCAtMTQyMyw2ICsxNDI5LDggQEAKIGVuZGZ1bmN0aW9uCiAKIGZ1bmMgVGVzdF9leGl0X2NhbGxiYWNrX2ludGVydmFsKCkKKyAgQ2hlY2tGdW5jdGlvbiByZWx0aW1lZmxvYXQKKwogICBsZXQgZzpleGl0X2NiX3ZhbCA9IHsnc3RhcnQnOiByZWx0aW1lKCksICdlbmQnOiAwLCAncHJvY2Vzcyc6IDB9CiAgIGxldCBqb2IgPSBbczpweXRob24sICctYycsICdpbXBvcnQgdGltZTt0aW1lLnNsZWVwKDAuNSknXS0+am9iX3N0YXJ0KHsnZXhpdF9jYic6ICdNeUV4aXRUaW1lQ2InfSkKICAgbGV0IGc6ZXhpdF9jYl92YWwucHJvY2VzcyA9IGpvYl9pbmZvKGpvYikucHJvY2VzcwpAQCAtMTc2OCw2ICsxNzc2LDcgQEAKIAogZnVuYyBUZXN0X2pvYl9zdGFydF9pbl90aW1lcigpCiAgIENoZWNrRmVhdHVyZSB0aW1lcnMKKyAgQ2hlY2tGZWF0dXJlIHJlbHRpbWVmbG9hdAogCiAgIGZ1bmMgT3V0Q2IoY2hhbiwgbXNnKQogICAgIGxldCBnOnZhbCArPSAxCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2NzY29wZS52aW0gYi9zcmMvdGVzdGRpci90ZXN0X2NzY29wZS52aW0KaW5kZXggOWQ2OWRhOS4uY2YxZGRiYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9jc2NvcGUudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfY3Njb3BlLnZpbQpAQCAtMTE2LDIzICsxMTYsMjUgQEAKICAgICAiIFRlc3QgMTA6IEludmFsaWQgZmluZCBjb21tYW5kCiAgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NzIGZpbmQgeCcsICdFNTYwOicpCiAKLSAgICAiIFRlc3QgMTE6IEZpbmQgcGxhY2VzIHdoZXJlIHRoaXMgc3ltYm9sIGlzIGFzc2lnbmVkIGEgdmFsdWUKLSAgICAiIHRoaXMgbmVlZHMgYSBjc2NvcGUgPj0gMTUuOAotICAgICIgdW5mb3J0dW5hdGVseSwgVHJhdmlzIGhhcyBjc2NvcGUgdmVyc2lvbiAxNS43Ci0gICAgbGV0IGNzY29wZV92ZXJzaW9uID0gc3lzdGVtbGlzdCgnY3Njb3BlIC0tdmVyc2lvbicpWzBdCi0gICAgbGV0IGNzX3ZlcnNpb24gPSBzdHIyZmxvYXQobWF0Y2hzdHIoY3Njb3BlX3ZlcnNpb24sICdcZFwrXChcLlxkXCtcKVw/JykpCi0gICAgaWYgY3NfdmVyc2lvbiA+PSAxNS44Ci0gICAgICBmb3IgY21kIGluIFsnY3MgZmluZCBhIGl0ZW0nLCAnY3MgZmluZCA5IGl0ZW0nXQotICAgICAgICBsZXQgYSA9IGV4ZWN1dGUoY21kKQotICAgICAgICBjYWxsIGFzc2VydF9lcXVhbChbJycsICcoMSBvZiA0KTogPDx0ZXN0X21mX2hhc2g+PiBpdGVtID0gTEFMTE9DX0NMRUFSX09ORShtZl9oYXNoaXRlbV9UKTsnXSwgc3BsaXQoYSwgJ1xuJywgMSkpCi0gICAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCcJaXRlbSA9IExBTExPQ19DTEVBUl9PTkUobWZfaGFzaGl0ZW1fVCk7JywgZ2V0bGluZSgnLicpKQotICAgICAgICBjbmV4dAotICAgICAgICBjYWxsIGFzc2VydF9lcXVhbCgnCWl0ZW0gPSBtZl9oYXNoX2ZpbmQoJmh0LCBrZXkpOycsIGdldGxpbmUoJy4nKSkKLSAgICAgICAgY25leHQKLSAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoJwkgICAgaXRlbSA9IG1mX2hhc2hfZmluZCgmaHQsIGtleSk7JywgZ2V0bGluZSgnLicpKQotICAgICAgICBjbmV4dAotICAgICAgICBjYWxsIGFzc2VydF9lcXVhbCgnCWl0ZW0gPSBtZl9oYXNoX2ZpbmQoJmh0LCBrZXkpOycsIGdldGxpbmUoJy4nKSkKLSAgICAgIGVuZGZvcgorICAgIGlmIGhhcygnZmxvYXQnKQorICAgICAgIiBUZXN0IDExOiBGaW5kIHBsYWNlcyB3aGVyZSB0aGlzIHN5bWJvbCBpcyBhc3NpZ25lZCBhIHZhbHVlCisgICAgICAiIHRoaXMgbmVlZHMgYSBjc2NvcGUgPj0gMTUuOAorICAgICAgIiB1bmZvcnR1bmF0ZWx5LCBUcmF2aXMgaGFzIGNzY29wZSB2ZXJzaW9uIDE1LjcKKyAgICAgIGxldCBjc2NvcGVfdmVyc2lvbiA9IHN5c3RlbWxpc3QoJ2NzY29wZSAtLXZlcnNpb24nKVswXQorICAgICAgbGV0IGNzX3ZlcnNpb24gPSBzdHIyZmxvYXQobWF0Y2hzdHIoY3Njb3BlX3ZlcnNpb24sICdcZFwrXChcLlxkXCtcKVw/JykpCisgICAgICBpZiBjc192ZXJzaW9uID49IDE1LjgKKyAgICAgICAgZm9yIGNtZCBpbiBbJ2NzIGZpbmQgYSBpdGVtJywgJ2NzIGZpbmQgOSBpdGVtJ10KKyAgICAgICAgICBsZXQgYSA9IGV4ZWN1dGUoY21kKQorICAgICAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnJywgJygxIG9mIDQpOiA8PHRlc3RfbWZfaGFzaD4+IGl0ZW0gPSBMQUxMT0NfQ0xFQVJfT05FKG1mX2hhc2hpdGVtX1QpOyddLCBzcGxpdChhLCAnXG4nLCAxKSkKKyAgICAgICAgICBjYWxsIGFzc2VydF9lcXVhbCgnCWl0ZW0gPSBMQUxMT0NfQ0xFQVJfT05FKG1mX2hhc2hpdGVtX1QpOycsIGdldGxpbmUoJy4nKSkKKyAgICAgICAgICBjbmV4dAorICAgICAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCcJaXRlbSA9IG1mX2hhc2hfZmluZCgmaHQsIGtleSk7JywgZ2V0bGluZSgnLicpKQorICAgICAgICAgIGNuZXh0CisgICAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoJwkgICAgaXRlbSA9IG1mX2hhc2hfZmluZCgmaHQsIGtleSk7JywgZ2V0bGluZSgnLicpKQorICAgICAgICAgIGNuZXh0CisgICAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoJwlpdGVtID0gbWZfaGFzaF9maW5kKCZodCwga2V5KTsnLCBnZXRsaW5lKCcuJykpCisgICAgICAgIGVuZGZvcgorICAgICAgZW5kaWYKICAgICBlbmRpZgogCiAgICAgIiBUZXN0IDEyOiBsZWFkaW5nIHdoaXRlc3BhY2UgaXMgbm90IHJlbW92ZWQgZm9yIGNzY29wZSBmaW5kIHRleHQKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3RfZXhlY3V0ZV9mdW5jLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZXhlY3V0ZV9mdW5jLnZpbQppbmRleCAzMGRjYjYyLi4yMzUxMDdjIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X2V4ZWN1dGVfZnVuYy52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9leGVjdXRlX2Z1bmMudmltCkBAIC0zMCwxNCArMzAsMTYgQEAKICAgY2FsbCBhc3NlcnRfZXF1YWwoIlxudGhhdCIsIGV2YWxlZCkKIAogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBleGVjdXRlKCJkb2Vzbm90ZXhpc3QiKScsICdFNDkyOicpCi0gIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGV4ZWN1dGUoMy40KScsICdFODA2OicpCiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGV4ZWN1dGUoImNhbGwgTmVzdGVkUmVkaXIoKSIpJywgJ0U5MzA6JykKIAogICBjYWxsIGFzc2VydF9lcXVhbCgiXG5zb21ldGhpbmciLCBleGVjdXRlKCdlY2hvICJzb21ldGhpbmciJywgJycpKQogICBjYWxsIGFzc2VydF9lcXVhbCgiXG5zb21ldGhpbmciLCBleGVjdXRlKCdlY2hvICJzb21ldGhpbmciJywgJ3NpbGVudCcpKQogICBjYWxsIGFzc2VydF9lcXVhbCgiXG5zb21ldGhpbmciLCBleGVjdXRlKCdlY2hvICJzb21ldGhpbmciJywgJ3NpbGVudCEnKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoIiIsIGV4ZWN1dGUoJ2J1cnAnLCAnc2lsZW50IScpKQotICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBleGVjdXRlKCJlY2hvIFwieFwiIiwgMy40KScsICdFODA2OicpCisgIGlmIGhhcygnZmxvYXQnKQorICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGV4ZWN1dGUoMy40KScsICdFODA2OicpCisgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgZXhlY3V0ZSgiZWNobyBcInhcIiIsIDMuNCknLCAnRTgwNjonKQorICBlbmRpZgogZW5kZnVuYwogCiBmdW5jIFRlc3RfZXhlY3V0ZV9saXN0KCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3RfZXhwci52aW0gYi9zcmMvdGVzdGRpci90ZXN0X2V4cHIudmltCmluZGV4IGViNTFjZDYuLmJkOWNhY2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfZXhwci52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9leHByLnZpbQpAQCAtMzY5LDcgKzM2OSw5IEBACiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdlY2hvIHByaW50ZigiJWQiLCBbXSknLCAnRTc0NTonKQogICBjYWxsIGFzc2VydF9mYWlscygnZWNobyBwcmludGYoIiVkIiwgMSwgMiknLCAnRTc2NzonKQogICBjYWxsIGFzc2VydF9mYWlscygnZWNobyBwcmludGYoIiUqZCIsIDEpJywgJ0U3NjY6JykKLSAgY2FsbCBhc3NlcnRfZmFpbHMoJ2VjaG8gcHJpbnRmKCIlZCIsIDEuMiknLCAnRTgwNTonKQorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBjYWxsIGFzc2VydF9mYWlscygnZWNobyBwcmludGYoIiVkIiwgMS4yKScsICdFODA1OicpCisgIGVuZGlmCiBlbmRmdW5jCiAKIGZ1bmN0aW9uIFRlc3RfbWF4X21pbl9lcnJvcnMoKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9mdW5jdGlvbnMudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF9mdW5jdGlvbnMudmltCmluZGV4IDYxNTBhMGMuLjY2MjlkNDIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfZnVuY3Rpb25zLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X2Z1bmN0aW9ucy52aW0KQEAgLTI4LDEyICsyOCwxNCBAQAogICBjYWxsIGFzc2VydF9lcXVhbCgwLCBlbXB0eSgxKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgZW1wdHkoLTEpKQogCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIGVtcHR5KDAuMCkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIGVtcHR5KC0wLjApKQotICBjYWxsIGFzc2VydF9lcXVhbCgwLCBlbXB0eSgxLjApKQotICBjYWxsIGFzc2VydF9lcXVhbCgwLCBlbXB0eSgtMS4wKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgZW1wdHkoMS4wLzAuMCkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDAsIGVtcHR5KDAuMC8wLjApKQorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBjYWxsIGFzc2VydF9lcXVhbCgxLCBlbXB0eSgwLjApKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDEsIGVtcHR5KC0wLjApKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDAsIGVtcHR5KDEuMCkpCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgZW1wdHkoLTEuMCkpCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgZW1wdHkoMS4wLzAuMCkpCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgZW1wdHkoMC4wLzAuMCkpCisgIGVuZGlmCiAKICAgY2FsbCBhc3NlcnRfZXF1YWwoMSwgZW1wdHkoW10pKQogICBjYWxsIGFzc2VydF9lcXVhbCgwLCBlbXB0eShbJ2EnXSkpCkBAIC0xMTYsNyArMTE4LDkgQEAKICAgICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzdHJ3aWR0aCh7LT4wfSknLCAnRTcyOTonKQogICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHN0cndpZHRoKFtdKScsICdFNzMwOicpCiAgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgc3Ryd2lkdGgoe30pJywgJ0U3MzE6JykKLSAgICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzdHJ3aWR0aCgxLjIpJywgJ0U4MDY6JykKKyAgICBpZiBoYXMoJ2Zsb2F0JykKKyAgICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHN0cndpZHRoKDEuMiknLCAnRTgwNjonKQorICAgIGVuZGlmCiAgIGVuZGZvcgogCiAgIHNldCBhbWJpd2lkdGgmCkBAIC0xNzYsNyArMTgwLDkgQEAKIAogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzdHIybnIoW10pJywgJ0U3MzA6JykKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgc3RyMm5yKHstPjJ9KScsICdFNzI5OicpCi0gIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIHN0cjJucigxLjIpJywgJ0U4MDY6JykKKyAgaWYgaGFzKCdmbG9hdCcpCisgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgc3RyMm5yKDEuMiknLCAnRTgwNjonKQorICBlbmRpZgogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzdHIybnIoMTAsIFtdKScsICdFNDc0OicpCiBlbmRmdW5jCiAKQEAgLTQyMiw3ICs0MjgsOSBAQAogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzaW1wbGlmeSh7LT4wfSknLCAnRTcyOTonKQogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzaW1wbGlmeShbXSknLCAnRTczMDonKQogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzaW1wbGlmeSh7fSknLCAnRTczMTonKQotICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBzaW1wbGlmeSgxLjIpJywgJ0U4MDY6JykKKyAgaWYgaGFzKCdmbG9hdCcpCisgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgc2ltcGxpZnkoMS4yKScsICdFODA2OicpCisgIGVuZGlmCiBlbmRmdW5jCiAKIGZ1bmMgVGVzdF9wYXRoc2hvcnRlbigpCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2dsb2IycmVncGF0LnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfZ2xvYjJyZWdwYXQudmltCmluZGV4IDI5YzhkOTkuLmE0MjNhNGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfZ2xvYjJyZWdwYXQudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfZ2xvYjJyZWdwYXQudmltCkBAIC0xLDcgKzEsOSBAQAogIiBUZXN0IGdsb2IycmVncGF0KCkKIAogZnVuYyBUZXN0X2dsb2IycmVncGF0X2ludmFsaWQoKQotICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCBnbG9iMnJlZ3BhdCgxLjMzKScsICdFODA2OicpCisgIGlmIGhhcygnZmxvYXQnKQorICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGdsb2IycmVncGF0KDEuMzMpJywgJ0U4MDY6JykKKyAgZW5kaWYKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2NhbGwgZ2xvYjJyZWdwYXQoIn0iKScsICdFMjE5OicpCiAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCdjYWxsIGdsb2IycmVncGF0KCJ7IiknLCAnRTIyMDonKQogZW5kZnVuYwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9sYW1iZGEudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF9sYW1iZGEudmltCmluZGV4IGM1NWRlNjcuLmI4ZjExZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfbGFtYmRhLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X2xhbWJkYS52aW0KQEAgLTIxNiw3ICsyMTYsOSBAQAogZnVuYyBUZXN0X2xhbWJkYV9jb21iaW5hdGlvbigpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDIsIHt4IC0+IHt4IC0+IHh9fSgxKSgyKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoMTAsIHt5IC0+IHt4IC0+IHgoeSkoMTApfSh7eSAtPiB5fSl9KHt6IC0+IHp9KSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoNS4wLCB7eCAtPiB7eSAtPiB4IC8geX19KDEwKSgyLjApKQorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBjYWxsIGFzc2VydF9lcXVhbCg1LjAsIHt4IC0+IHt5IC0+IHggLyB5fX0oMTApKDIuMCkpCisgIGVuZGlmCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDYsIHt4IC0+IHt5IC0+IHt6IC0+IHggKyB5ICsgen19fSgxKSgyKSgzKSkKIAogICBjYWxsIGFzc2VydF9lcXVhbCg2LCB7eCAtPiB7ZiAtPiBmKHgpfX0oMykoe3ggLT4geCAqIDJ9KSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3RfbGlzdGRpY3QudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF9saXN0ZGljdC52aW0KaW5kZXggNTU3Njg3Yi4uOTEyZWM2YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9saXN0ZGljdC52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9saXN0ZGljdC52aW0KQEAgLTU5NiwxOCArNTk2LDIwIEBACiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnLTAnLCAnQTExJywgMiwgJ3hhYWEnLCA0LCAnZm9vJywgJ2ZvbzYnLCAnZm9vJywgWzAsIDEsIDJdLCAneDgnLCBbMCwgMSwgMl0sIDEuNV0sIHVuaXEoY29weShsKSkpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsxLjUsIFswLCAxLCAyXSwgJ3g4JywgWzAsIDEsIDJdLCAnZm9vJywgJ2ZvbzYnLCAnZm9vJywgNCwgJ3hhYWEnLCAyLCAyLCAnQTExJywgJy0wJ10sIHJldmVyc2UobCkpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsxLjUsIFswLCAxLCAyXSwgJ3g4JywgWzAsIDEsIDJdLCAnZm9vJywgJ2ZvbzYnLCAnZm9vJywgNCwgJ3hhYWEnLCAyLCAyLCAnQTExJywgJy0wJ10sIHJldmVyc2UocmV2ZXJzZShsKSkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnLTAnLCAnQTExJywgJ2ZvbycsICdmb28nLCAnZm9vNicsICd4OCcsICd4YWFhJywgMS41LCAyLCAyLCA0LCBbMCwgMSwgMl0sIFswLCAxLCAyXV0sIHNvcnQobCkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFtbMCwgMSwgMl0sIFswLCAxLCAyXSwgNCwgMiwgMiwgMS41LCAneGFhYScsICd4OCcsICdmb282JywgJ2ZvbycsICdmb28nLCAnQTExJywgJy0wJ10sIHJldmVyc2Uoc29ydChsKSkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnLTAnLCAnQTExJywgJ2ZvbycsICdmb28nLCAnZm9vNicsICd4OCcsICd4YWFhJywgMS41LCAyLCAyLCA0LCBbMCwgMSwgMl0sIFswLCAxLCAyXV0sIHNvcnQocmV2ZXJzZShzb3J0KGwpKSkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFsnLTAnLCAnQTExJywgJ2ZvbycsICdmb282JywgJ3g4JywgJ3hhYWEnLCAxLjUsIDIsIDQsIFswLCAxLCAyXV0sIHVuaXEoc29ydChsKSkpCisgIGlmIGhhcygnZmxvYXQnKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnLTAnLCAnQTExJywgJ2ZvbycsICdmb28nLCAnZm9vNicsICd4OCcsICd4YWFhJywgMS41LCAyLCAyLCA0LCBbMCwgMSwgMl0sIFswLCAxLCAyXV0sIHNvcnQobCkpCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoW1swLCAxLCAyXSwgWzAsIDEsIDJdLCA0LCAyLCAyLCAxLjUsICd4YWFhJywgJ3g4JywgJ2ZvbzYnLCAnZm9vJywgJ2ZvbycsICdBMTEnLCAnLTAnXSwgcmV2ZXJzZShzb3J0KGwpKSkKKyAgICBjYWxsIGFzc2VydF9lcXVhbChbJy0wJywgJ0ExMScsICdmb28nLCAnZm9vJywgJ2ZvbzYnLCAneDgnLCAneGFhYScsIDEuNSwgMiwgMiwgNCwgWzAsIDEsIDJdLCBbMCwgMSwgMl1dLCBzb3J0KHJldmVyc2Uoc29ydChsKSkpKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnLTAnLCAnQTExJywgJ2ZvbycsICdmb282JywgJ3g4JywgJ3hhYWEnLCAxLjUsIDIsIDQsIFswLCAxLCAyXV0sIHVuaXEoc29ydChsKSkpCiAKLSAgbGV0IGw9WzcsIDksICdvbmUnLCAxOCwgMTIsIDIyLCAndHdvJywgMTAuMGUtMTYsIC0xLCAndGhyZWUnLCAweGZmLCAwLjIyLCAnZm91ciddCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKFstMSwgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicsIDEuMGUtMTUsIDAuMjIsIDcsIDksIDEyLCAxOCwgMjIsIDI1NV0sIHNvcnQoY29weShsKSwgJ24nKSkKKyAgICBsZXQgbCA9IFs3LCA5LCAnb25lJywgMTgsIDEyLCAyMiwgJ3R3bycsIDEwLjBlLTE2LCAtMSwgJ3RocmVlJywgMHhmZiwgMC4yMiwgJ2ZvdXInXQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFstMSwgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicsIDEuMGUtMTUsIDAuMjIsIDcsIDksIDEyLCAxOCwgMjIsIDI1NV0sIHNvcnQoY29weShsKSwgJ24nKSkKIAotICBsZXQgbD1bNywgOSwgMTgsIDEyLCAyMiwgMTAuMGUtMTYsIC0xLCAweGZmLCAwLCAtMCwgMC4yMiwgJ2JhcicsICdCQVInLCAnQmFyJywgJ0ZvbycsICdGT08nLCAnZm9vJywgJ0ZPT0JBUicsIHt9LCBbXV0KLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydiYXInLCAnQkFSJywgJ0JhcicsICdGb28nLCAnRk9PJywgJ2ZvbycsICdGT09CQVInLCAtMSwgMCwgMCwgMC4yMiwgMS4wZS0xNSwgMTIsIDE4LCAyMiwgMjU1LCA3LCA5LCBbXSwge31dLCBzb3J0KGNvcHkobCksIDEpKQotICBjYWxsIGFzc2VydF9lcXVhbChbJ2JhcicsICdCQVInLCAnQmFyJywgJ0ZvbycsICdGT08nLCAnZm9vJywgJ0ZPT0JBUicsIC0xLCAwLCAwLCAwLjIyLCAxLjBlLTE1LCAxMiwgMTgsIDIyLCAyNTUsIDcsIDksIFtdLCB7fV0sIHNvcnQoY29weShsKSwgJ2knKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoWydCQVInLCAnQmFyJywgJ0ZPTycsICdGT09CQVInLCAnRm9vJywgJ2JhcicsICdmb28nLCAtMSwgMCwgMCwgMC4yMiwgMS4wZS0xNSwgMTIsIDE4LCAyMiwgMjU1LCA3LCA5LCBbXSwge31dLCBzb3J0KGNvcHkobCkpKQorICAgIGxldCBsID0gWzcsIDksIDE4LCAxMiwgMjIsIDEwLjBlLTE2LCAtMSwgMHhmZiwgMCwgLTAsIDAuMjIsICdiYXInLCAnQkFSJywgJ0JhcicsICdGb28nLCAnRk9PJywgJ2ZvbycsICdGT09CQVInLCB7fSwgW11dCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoWydiYXInLCAnQkFSJywgJ0JhcicsICdGb28nLCAnRk9PJywgJ2ZvbycsICdGT09CQVInLCAtMSwgMCwgMCwgMC4yMiwgMS4wZS0xNSwgMTIsIDE4LCAyMiwgMjU1LCA3LCA5LCBbXSwge31dLCBzb3J0KGNvcHkobCksIDEpKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnYmFyJywgJ0JBUicsICdCYXInLCAnRm9vJywgJ0ZPTycsICdmb28nLCAnRk9PQkFSJywgLTEsIDAsIDAsIDAuMjIsIDEuMGUtMTUsIDEyLCAxOCwgMjIsIDI1NSwgNywgOSwgW10sIHt9XSwgc29ydChjb3B5KGwpLCAnaScpKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnQkFSJywgJ0JhcicsICdGT08nLCAnRk9PQkFSJywgJ0ZvbycsICdiYXInLCAnZm9vJywgLTEsIDAsIDAsIDAuMjIsIDEuMGUtMTUsIDEyLCAxOCwgMjIsIDI1NSwgNywgOSwgW10sIHt9XSwgc29ydChjb3B5KGwpKSkKKyAgZW5kaWYKIAogICBjYWxsIGFzc2VydF9mYWlscygnY2FsbCByZXZlcnNlKCIiKScsICdFODk5OicpCiBlbmRmdW5jCkBAIC02ODMsNyArNjg1LDkgQEAKICAgbGV0IGwgPSBbMSwgMiwgM10KICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgZXh0ZW5kKGwsIFs0LCA1LCA2XSwgNCkiLCAnRTY4NDonKQogICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBleHRlbmQobCwgWzQsIDUsIDZdLCAtNCkiLCAnRTY4NDonKQotICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBleHRlbmQobCwgWzQsIDUsIDZdLCAxLjIpIiwgJ0U4MDU6JykKKyAgaWYgaGFzKCdmbG9hdCcpCisgICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgZXh0ZW5kKGwsIFs0LCA1LCA2XSwgMS4yKSIsICdFODA1OicpCisgIGVuZGlmCiAKICAgIiBUZXN0IGV4dGVuZCgpIHdpdGggZGljdGlvbmFyaWVzLgogCkBAIC03MDcsNyArNzExLDkgQEAKICAgbGV0IGQgPSB7J2EnOiAnQScsICdiJzogJ0InfQogICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBleHRlbmQoZCwgeydiJzogMCwgJ2MnOidDJ30sICdlcnJvcicpIiwgJ0U3Mzc6JykKICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgZXh0ZW5kKGQsIHsnYic6IDAsICdjJzonQyd9LCAneHh4JykiLCAnRTQ3NTonKQotICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBleHRlbmQoZCwgeydiJzogMCwgJ2MnOidDJ30sIDEuMikiLCAnRTgwNjonKQorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBleHRlbmQoZCwgeydiJzogMCwgJ2MnOidDJ30sIDEuMikiLCAnRTgwNjonKQorICBlbmRpZgogICBjYWxsIGFzc2VydF9lcXVhbCh7J2EnOiAnQScsICdiJzogJ0InfSwgZCkKIAogICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBleHRlbmQoWzEsIDJdLCAxKSIsICdFNzEyOicpCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2x1YS52aW0gYi9zcmMvdGVzdGRpci90ZXN0X2x1YS52aW0KaW5kZXggY2I1Yjk1ZC4uODQ0ZDkyMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9sdWEudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfbHVhLnZpbQpAQCAtMiw2ICsyLDcgQEAKIAogc291cmNlIGNoZWNrLnZpbQogQ2hlY2tGZWF0dXJlIGx1YQorQ2hlY2tGZWF0dXJlIGZsb2F0CiAKIGZ1bmMgVGVhckRvd24oKQogICAiIFJ1biBnYXJiYWdlIGNvbGxlY3Rpb24gYWZ0ZXIgZWFjaCB0ZXN0IHRvIGV4ZXJjaXNlIGx1YVZfc2V0cmVmKCkuCkBAIC05LDcgKzEwLDcgQEAKIGVuZGZ1bmMKIAogIiBDaGVjayB0aGF0IHN3aXRjaGluZyB0byBhbm90aGVyIGJ1ZmZlciBkb2VzIG5vdCB0cmlnZ2VyIG1sX2dldCBlcnJvci4KLWZ1bmMgVGVzdF9jb21tYW5kX25ld19ub19tbF9nZXRfZXJyb3IoKQorZnVuYyBUZXN0X2x1YV9jb21tYW5kX25ld19ub19tbF9nZXRfZXJyb3IoKQogICBuZXcKICAgbGV0IHdpbmNvdW50ID0gd2lubnIoJyQnKQogICBjYWxsIHNldGxpbmUoMSwgWydvbmUnLCAndHdvJywgJ3RocmVlJ10pCkBAIC0xOSw3ICsyMCw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCB2aW0uY29tbWFuZCgpCi1mdW5jIFRlc3RfY29tbWFuZCgpCitmdW5jIFRlc3RfbHVhX2NvbW1hbmQoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnb25lJywgJ3R3bycsICd0aHJlZSddKQogICBsdWFkbyB2aW0uY29tbWFuZCgiMSwyZF8iKQpAQCAtMjgsNyArMjksNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLmV2YWwoKQotZnVuYyBUZXN0X2V2YWwoKQorZnVuYyBUZXN0X2x1YV9ldmFsKCkKICAgIiBsdWEuZXZhbCB3aXRoIGEgbnVtYmVyCiAgIGx1YSB2ID0gdmltLmV2YWwoJzEyMycpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCdudW1iZXInLCBsdWFldmFsKCd2aW0udHlwZSh2KScpKQpAQCAtNjksNyArNzAsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLndpbmRvdygpCi1mdW5jIFRlc3Rfd2luZG93KCkKK2Z1bmMgVGVzdF9sdWFfd2luZG93KCkKICAgZSBYZm9vMgogICBuZXcgWGZvbzEKIApAQCAtODUsNyArODYsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLndpbmRvdygpLmhlaWdodAotZnVuYyBUZXN0X3dpbmRvd19oZWlnaHQoKQorZnVuYyBUZXN0X2x1YV93aW5kb3dfaGVpZ2h0KCkKICAgbmV3CiAgIGx1YSB2aW0ud2luZG93KCkuaGVpZ2h0ID0gMgogICBjYWxsIGFzc2VydF9lcXVhbCgyLCB3aW5oZWlnaHQoMCkpCkBAIC05NSw3ICs5Niw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCB2aW0ud2luZG93KCkud2lkdGgKLWZ1bmMgVGVzdF93aW5kb3dfd2lkdGgoKQorZnVuYyBUZXN0X2x1YV93aW5kb3dfd2lkdGgoKQogICB2ZXJ0IG5ldwogICBsdWEgdmltLndpbmRvdygpLndpZHRoID0gMgogICBjYWxsIGFzc2VydF9lcXVhbCgyLCB3aW53aWR0aCgwKSkKQEAgLTEwNSw3ICsxMDYsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLndpbmRvdygpLmxpbmUgYW5kIHZpbS53aW5kb3cuY29sCi1mdW5jIFRlc3Rfd2luZG93X2xpbmVfY29sKCkKK2Z1bmMgVGVzdF9sdWFfd2luZG93X2xpbmVfY29sKCkKICAgbmV3CiAgIGNhbGwgc2V0bGluZSgxLCBbJ2xpbmUxJywgJ2xpbmUyJywgJ2xpbmUzJ10pCiAgIGx1YSB2aW0ud2luZG93KCkubGluZSA9IDIKQEAgLTEyMSw3ICsxMjIsNyBAQAogZW5kZnVuYwogCiAiIFRlc3Qgc2V0dGluZyB0aGUgY3VycmVudCB3aW5kb3cKLWZ1bmMgVGVzdF93aW5kb3dfc2V0X2N1cnJlbnQoKQorZnVuYyBUZXN0X2x1YV93aW5kb3dfc2V0X2N1cnJlbnQoKQogICBuZXcgWGZvbzEKICAgbHVhIHcxID0gdmltLndpbmRvdygpCiAgIG5ldyBYZm9vMgpAQCAtMTM4LDcgKzEzOSw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCB2aW0ud2luZG93KCkuYnVmZmVyCi1mdW5jIFRlc3Rfd2luZG93X2J1ZmZlcigpCitmdW5jIFRlc3RfbHVhX3dpbmRvd19idWZmZXIoKQogICBuZXcgWGZvbzEKICAgbHVhIHcxID0gdmltLndpbmRvdygpCiAgIGx1YSBiMSA9IHcxLmJ1ZmZlcigpCkBAIC0xNTYsNyArMTU3LDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHZpbS53aW5kb3coKTpwcmV2aW91cygpIGFuZCB2aW0ud2luZG93KCk6bmV4dCgpCi1mdW5jIFRlc3Rfd2luZG93X25leHRfcHJldmlvdXMoKQorZnVuYyBUZXN0X2x1YV93aW5kb3dfbmV4dF9wcmV2aW91cygpCiAgIG5ldyBYZm9vMQogICBuZXcgWGZvbzIKICAgbmV3IFhmb28zCkBAIC0xNzAsNyArMTcxLDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHZpbS53aW5kb3coKTppc3ZhbGlkKCkKLWZ1bmMgVGVzdF93aW5kb3dfaXN2YWxpZCgpCitmdW5jIFRlc3RfbHVhX3dpbmRvd19pc3ZhbGlkKCkKICAgbmV3IFhmb28KICAgbHVhIHcgPSB2aW0ud2luZG93KCkKICAgY2FsbCBhc3NlcnRfdHJ1ZShsdWFldmFsKCd3OmlzdmFsaWQoKScpKQpAQCAtMTgzLDcgKzE4NCw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCB2aW0uYnVmZmVyKCkgd2l0aCBhbmQgd2l0aG91dCBhcmd1bWVudAotZnVuYyBUZXN0X2J1ZmZlcigpCitmdW5jIFRlc3RfbHVhX2J1ZmZlcigpCiAgIG5ldyBYZm9vMQogICBsZXQgYm4xID0gYnVmbnIoJyUnKQogICBuZXcgWGZvbzIKQEAgLTIwNSw3ICsyMDYsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLmJ1ZmZlcigpLm5hbWUgYW5kIHZpbS5idWZmZXIoKS5mbmFtZQotZnVuYyBUZXN0X2J1ZmZlcl9uYW1lKCkKK2Z1bmMgVGVzdF9sdWFfYnVmZmVyX25hbWUoKQogICBuZXcKICAgY2FsbCBhc3NlcnRfZXF1YWwoJycsIGx1YWV2YWwoJ3ZpbS5idWZmZXIoKS5uYW1lJykpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCcnLCBsdWFldmFsKCd2aW0uYnVmZmVyKCkuZm5hbWUnKSkKQEAgLTIxOCwxMyArMjE5LDEzIEBACiBlbmRmdW5jCiAKICIgVGVzdCB2aW0uYnVmZmVyKCkubnVtYmVyCi1mdW5jIFRlc3RfYnVmZmVyX251bWJlcigpCitmdW5jIFRlc3RfbHVhX2J1ZmZlcl9udW1iZXIoKQogICAiIEFsbCBudW1iZXJzIGluIEx1YSBhcmUgZmxvYXRpbmcgcG9pbnRzIG51bWJlciAobm8gaW50ZWdlcnMpLgogICBjYWxsIGFzc2VydF9lcXVhbChidWZucignJScpLCBmbG9hdDJucihsdWFldmFsKCd2aW0uYnVmZmVyKCkubnVtYmVyJykpKQogZW5kZnVuYwogCiAiIFRlc3QgaW5zZXJ0aW5nIGxpbmVzIGluIGJ1ZmZlci4KLWZ1bmMgVGVzdF9idWZmZXJfaW5zZXJ0KCkKK2Z1bmMgVGVzdF9sdWFfYnVmZmVyX2luc2VydCgpCiAgIG5ldwogICBsdWEgdmltLmJ1ZmZlcigpWzFdID0gJzMnCiAgIGx1YSB2aW0uYnVmZmVyKCk6aW5zZXJ0KCcxJywgMCkKQEAgLTIzNiw3ICsyMzcsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgZGVsZXRpbmcgbGluZSBpbiBidWZmZXIKLWZ1bmMgVGVzdF9idWZmZXJfZGVsZXRlKCkKK2Z1bmMgVGVzdF9sdWFfYnVmZmVyX2RlbGV0ZSgpCiAgIG5ldwogICBjYWxsIHNldGxpbmUoMSwgWycxJywgJzInLCAnMyddKQogICBsdWEgdmltLmJ1ZmZlcigpWzJdID0gbmlsCkBAIC0yNDgsNyArMjQ5LDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0ICN2aW0uYnVmZmVyKCkgaS5lLiBudW1iZXIgb2YgbGluZXMgaW4gYnVmZmVyCi1mdW5jIFRlc3RfYnVmZmVyX251bWJlcl9saW5lcygpCitmdW5jIFRlc3RfbHVhX2J1ZmZlcl9udW1iZXJfbGluZXMoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnYScsICdiJywgJ2MnXSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoMy4wLCBsdWFldmFsKCcjdmltLmJ1ZmZlcigpJykpCkBAIC0yNTgsNyArMjU5LDcgQEAKICIgVGVzdCB2aW0uYnVmZmVyKCk6bmV4dCgpIGFuZCB2aW0uYnVmZmVyKCk6cHJldmlvdXMoKQogIiBOb3RlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGdldCB0aGUgbmV4dCBvciBwcmV2aW91cyBidWZmZXJzCiAiIGJ1dCBkbyBub3Qgc3dpdGNoIGJ1ZmZlci4KLWZ1bmMgVGVzdF9idWZmZXJfbmV4dF9wcmV2aW91cygpCitmdW5jIFRlc3RfbHVhX2J1ZmZlcl9uZXh0X3ByZXZpb3VzKCkKICAgbmV3IFhmb28xCiAgIG5ldyBYZm9vMgogICBuZXcgWGZvbzMKQEAgLTI4Niw3ICsyODcsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLmJ1ZmZlcigpOmlzdmFsaWQoKQotZnVuYyBUZXN0X2J1ZmZlcl9pc3ZhbGlkKCkKK2Z1bmMgVGVzdF9sdWFfYnVmZmVyX2lzdmFsaWQoKQogICBuZXcgWGZvbwogICBsdWEgYiA9IHZpbS5idWZmZXIoKQogICBjYWxsIGFzc2VydF90cnVlKGx1YWV2YWwoJ2I6aXN2YWxpZCgpJykpCkBAIC0yOTgsNyArMjk5LDcgQEAKICAgYndpcGUhCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9saXN0KCkKK2Z1bmMgVGVzdF9sdWFfbGlzdCgpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFtdLCBsdWFldmFsKCd2aW0ubGlzdCgpJykpCiAKICAgbGV0IGwgPSBbXQpAQCAtMzI2LDcgKzMyNyw3IEBACiAgIGx1YSBsID0gbmlsCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9saXN0X3RhYmxlKCkKK2Z1bmMgVGVzdF9sdWFfbGlzdF90YWJsZSgpCiAgICIgU2VlIDpoZWxwIGx1YS12aW0KICAgIiBOb24tbnVtZXJpYyBrZXlzIHNob3VsZCBub3QgYmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBsaXN0CiAgICIgc28gc2F5ID0gJ2hpJyBzaG91bGQgYmUgaWdub3JlZC4KQEAgLTM0MSw3ICszNDIsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgbCgpIGkuZS4gaXRlcmF0b3Igb24gbGlzdAotZnVuYyBUZXN0X2xpc3RfaXRlcigpCitmdW5jIFRlc3RfbHVhX2xpc3RfaXRlcigpCiAgIGx1YSBsID0gdmltLmxpc3QoKTphZGQoJ2ZvbycpOmFkZCgnYmFyJykKICAgbHVhIHN0ciA9ICcnCiAgIGx1YSBmb3IgdiBpbiBsKCkgZG8gc3RyID0gc3RyIC4uIHYgZW5kCkBAIC0zNTAsNyArMzUxLDcgQEAKICAgbHVhIHN0ciwgbCA9IG5pbAogZW5kZnVuYwogCi1mdW5jIFRlc3RfcmVjdXJzaXZlX2xpc3QoKQorZnVuYyBUZXN0X2x1YV9yZWN1cnNpdmVfbGlzdCgpCiAgIGx1YSBsID0gdmltLmxpc3QoKTphZGQoMSk6YWRkKDIpCiAgIGx1YSBsID0gbDphZGQobCkKIApAQCAtMzc0LDcgKzM3NSw3IEBACiAgIGx1YSBsID0gbmlsCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9kaWN0KCkKK2Z1bmMgVGVzdF9sdWFfZGljdCgpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKHt9LCBsdWFldmFsKCd2aW0uZGljdCgpJykpCiAKICAgbGV0IGQgPSB7fQpAQCAtNDAxLDcgKzQwMiw3IEBACiAgIGx1YSBkID0gbmlsCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9kaWN0X3RhYmxlKCkKK2Z1bmMgVGVzdF9sdWFfZGljdF90YWJsZSgpCiAgIGx1YSB0ID0ge2tleTEgPSAneCcsIGtleTIgPSAzLjE0LCBrZXkzID0gdHJ1ZSwga2V5NCA9IGZhbHNlfQogICBjYWxsIGFzc2VydF9lcXVhbCh7J2tleTEnOiAneCcsICdrZXkyJzogMy4xNCwgJ2tleTMnOiB2OnRydWUsICdrZXk0JzogdjpmYWxzZX0sCiAgICAgICAgIFwgICAgICAgICAgIGx1YWV2YWwoJ3ZpbS5kaWN0KHQpJykpCkBAIC00MjIsNyArNDIzLDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IGQoKSBpLmUuIGl0ZXJhdG9yIG9uIGRpY3Rpb25hcnkKLWZ1bmMgVGVzdF9kaWN0X2l0ZXIoKQorZnVuYyBUZXN0X2x1YV9kaWN0X2l0ZXIoKQogICBsZXQgZCA9IHsnYSc6IDEsICdiJzoyfQogICBsdWEgZCA9IHZpbS5ldmFsKCdkJykKICAgbHVhIHN0ciA9ICcnCkBAIC00MzIsNyArNDMzLDcgQEAKICAgbHVhIHN0ciwgZCA9IG5pbAogZW5kZnVuYwogCi1mdW5jIFRlc3RfYmxvYigpCitmdW5jIFRlc3RfbHVhX2Jsb2IoKQogICBjYWxsIGFzc2VydF9lcXVhbCgweiwgbHVhZXZhbCgndmltLmJsb2IoIiIpJykpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDB6MzEzMjYxNjIsIGx1YWV2YWwoJ3ZpbS5ibG9iKCIxMmFiIiknKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoMHowMDAxMDIwMywgbHVhZXZhbCgndmltLmJsb2IoIlx4MDBceDAxXHgwMlx4MDMiKScpKQpAQCAtNDU2LDcgKzQ1Nyw3IEBACiAgIGx1YSBiID0gbmlsCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9mdW5jcmVmKCkKK2Z1bmMgVGVzdF9sdWFfZnVuY3JlZigpCiAgIGZ1bmN0aW9uIEkoeCkKICAgICByZXR1cm4gYTp4CiAgIGVuZGZ1bmN0aW9uCkBAIC00ODMsNyArNDg0LDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHZpbS50eXBlKCkKLWZ1bmMgVGVzdF90eXBlKCkKK2Z1bmMgVGVzdF9sdWFfdHlwZSgpCiAgICIgVGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGlkZW50aWNhbCB0byBMdWEncyB0eXBlIGZ1bmN0aW9uLgogICBjYWxsIGFzc2VydF9lcXVhbCgnc3RyaW5nJywgICBsdWFldmFsKCd2aW0udHlwZSgiZm9vIiknKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ251bWJlcicsICAgbHVhZXZhbCgndmltLnR5cGUoMSknKSkKQEAgLTUwMyw3ICs1MDQsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLm9wZW4oKQotZnVuYyBUZXN0X29wZW4oKQorZnVuYyBUZXN0X2x1YV9vcGVuKCkKICAgY2FsbCBhc3NlcnRfbm90bWF0Y2goJ1hPcGVuJywgZXhlY3V0ZSgnbHMnKSkKIAogICAiIE9wZW4gYSBidWZmZXIgWE9wZW4xLCBidXQgZG8gbm90IGp1bXAgdG8gaXQuCkBAIC01MjQsNyArNTI1LDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHZpbS5saW5lKCkKLWZ1bmMgVGVzdF9saW5lKCkKK2Z1bmMgVGVzdF9sdWFfbGluZSgpCiAgIG5ldwogICBjYWxsIHNldGxpbmUoMSwgWydmaXJzdCBsaW5lJywgJ3NlY29uZCBsaW5lJ10pCiAgIDEKQEAgLTUzNSw3ICs1MzYsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgdmltLmJlZXAoKQotZnVuYyBUZXN0X2JlZXAoKQorZnVuYyBUZXN0X2x1YV9iZWVwKCkKICAgY2FsbCBhc3NlcnRfYmVlcHMoJ2x1YSB2aW0uYmVlcCgpJykKIGVuZGZ1bmMKIApAQCAtNTkxLDcgKzU5Miw3IEBACiAgIGJ3aXBlIQogZW5kZnVuYwogCi1mdW5jIFRlc3Rfc2V0X2N1cnNvcigpCitmdW5jIFRlc3RfbHVhX3NldF9jdXJzb3IoKQogICAiIENoZWNrIHRoYXQgc2V0dGluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIHdvcmtzLgogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnZmlyc3QgbGluZScsICdzZWNvbmQgbGluZSddKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9vcHRpb25zLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3Rfb3B0aW9ucy52aW0KaW5kZXggZTNmMmMxMC4uMGZjYzQ5NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9vcHRpb25zLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X29wdGlvbnMudmltCkBAIC02MTUsOSArNjE1LDggQEAKIGVuZGZ1bmMKIAogZnVuYyBUZXN0X3dyaXRlZGVsYXkoKQotICBpZiAhaGFzKCdyZWx0aW1lJykKLSAgICByZXR1cm4KLSAgZW5kaWYKKyAgQ2hlY2tGdW5jdGlvbiByZWx0aW1lZmxvYXQKKwogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsICdlbXB0eScpCiAgIHJlZHJhdwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF9wYXJ0aWFsLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfcGFydGlhbC52aW0KaW5kZXggZTdhN2QwNS4uM2NkMGJlMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF9wYXJ0aWFsLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X3BhcnRpYWwudmltCkBAIC0xMDYsNyArMTA2LDcgQEAKIGVuZGZ1CiAKIGZ1biBPdXRlckNhbGwoKQotICBsZXQgb3B0ID0geyAnZnVuYycgOiBmdW5jdGlvbignc2luJykgfQorICBsZXQgb3B0ID0geyAnZnVuYycgOiBmdW5jdGlvbignbWF4JykgfQogICBjYWxsIElubmVyQ2FsbChvcHQuZnVuYykKIGVuZGZ1CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3RfcmVnZXhwX2xhdGluLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfcmVnZXhwX2xhdGluLnZpbQppbmRleCBhNzM3NzM3Li41MDFhNTY2IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3JlZ2V4cF9sYXRpbi52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF9yZWdleHBfbGF0aW4udmltCkBAIC0yLDYgKzIsOCBAQAogc2V0IGVuY29kaW5nPWxhdGluMQogc2NyaXB0ZW5jb2RpbmcgbGF0aW4xCiAKK3NvdXJjZSBjaGVjay52aW0KKwogZnVuYyBzOmVxdWl2YWxlbmNlX3Rlc3QoKQogICBsZXQgc3RyID0gIkHAwcLDxMUgQiBDIEQgRcjJyssgRiBHIEggSczNzs8gSiBLIEwgTSBO0SBP0tPU1dbYIFAgUSBSIFMgVCBV2drb3CBWIFcgWCBZ3SBaIGHg4eLj5OUgYiBjIGQgZejp6usgZiBnIGggaezt7u8gaiBrIGwgbSBu8SBv8vP09fb4IHAgcSByIHMgdCB1+fr7/CB2IHcgeCB5/f8geiIKICAgbGV0IGdyb3VwcyA9IHNwbGl0KHN0cikKQEAgLTEzMiw5ICsxMzQsOSBAQAogZW5kZnVuYwogCiBmdW5jIFRlc3RfcGF0dGVybl9jb21waWxlX3NwZWVkKCkKLSAgaWYgIWV4aXN0cygnK3NwZWxsY2FwY2hlY2snKSB8fCAhaGFzKCdyZWx0aW1lJykKLSAgICByZXR1cm4KLSAgZW5kaWYKKyAgQ2hlY2tPcHRpb24gc3BlbGxjYXBjaGVjaworICBDaGVja0Z1bmN0aW9uIHJlbHRpbWVmbG9hdAorCiAgIGxldCBzdGFydCA9IHJlbHRpbWUoKQogICAiIHRoaXMgdXNlZCB0byBiZSB2ZXJ5IHNsb3csIG5vdCBpdCBzaG91bGQgYmUgYWJvdXQgYSBzZWNvbmQKICAgc2V0IHNwYz1cXHYoKCgoKE54eHh4eHh4JiZ4eHh4KXsxNzl9KSspKykrKXsxNzl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3J1YnkudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF9ydWJ5LnZpbQppbmRleCA4ZjgzYTMwLi5kZTljODZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3J1YnkudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfcnVieS52aW0KQEAgLTM0LDcgKzM0LDcgQEAKICAgY2FsbCBkZWxldGUodGVtcGZpbGUpCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9zZXRfY3Vyc29yKCkKK2Z1bmMgVGVzdF9ydWJ5X3NldF9jdXJzb3IoKQogICAiIENoZWNrIHRoYXQgc2V0dGluZyB0aGUgY3Vyc29yIHBvc2l0aW9uIHdvcmtzLgogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnZmlyc3QgbGluZScsICdzZWNvbmQgbGluZSddKQpAQCAtNTQsNyArNTQsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgYnVmZmVyLmNvdW50IGFuZCBidWZmZXIubGVuZ3RoIChudW1iZXIgb2YgbGluZXMgaW4gYnVmZmVyKQotZnVuYyBUZXN0X2J1ZmZlcl9jb3VudCgpCitmdW5jIFRlc3RfcnVieV9idWZmZXJfY291bnQoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnb25lJywgJ3R3bycsICd0aHJlZSddKQogICBjYWxsIGFzc2VydF9lcXVhbCgzLCBydWJ5ZXZhbCgnJGN1cmJ1Zi5jb3VudCcpKQpAQCAtNjMsNyArNjMsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgYnVmZmVyLm5hbWUgKGJ1ZmZlciBuYW1lKQotZnVuYyBUZXN0X2J1ZmZlcl9uYW1lKCkKK2Z1bmMgVGVzdF9ydWJ5X2J1ZmZlcl9uYW1lKCkKICAgbmV3IFhmb28KICAgY2FsbCBhc3NlcnRfZXF1YWwoZXhwYW5kKCclOnAnKSwgcnVieWV2YWwoJyRjdXJidWYubmFtZScpKQogICBid2lwZQpAQCAtNzEsNyArNzEsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgYnVmZmVyLm51bWJlciAobnVtYmVyIG9mIHRoZSBidWZmZXIpLgotZnVuYyBUZXN0X2J1ZmZlcl9udW1iZXIoKQorZnVuYyBUZXN0X3J1YnlfYnVmZmVyX251bWJlcigpCiAgIG5ldwogICBjYWxsIGFzc2VydF9lcXVhbChidWZucignJScpLCBydWJ5ZXZhbCgnJGN1cmJ1Zi5udW1iZXInKSkKICAgbmV3CkBAIC04MSw3ICs4MSw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCBidWZmZXIuZGVsZXRlKHtufSkgKGRlbGV0ZSBsaW5lIHtufSkKLWZ1bmMgVGVzdF9idWZmZXJfZGVsZXRlKCkKK2Z1bmMgVGVzdF9ydWJ5X2J1ZmZlcl9kZWxldGUoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnb25lJywgJ3R3bycsICd0aHJlZSddKQogICBydWJ5ICRjdXJidWYuZGVsZXRlKDIpCkBAIC05NCw3ICs5NCw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCBidWZmZXIuYXBwZW5kKHtzdHJ9LCBzdHIpIChhcHBlbmQgbGluZSB7c3RyfSBhZnRlciBsaW5lIHtufSkKLWZ1bmMgVGVzdF9idWZmZXJfYXBwZW5kKCkKK2Z1bmMgVGVzdF9ydWJ5X2J1ZmZlcl9hcHBlbmQoKQogICBuZXcKICAgcnVieSAkY3VyYnVmLmFwcGVuZCgwLCAnb25lJykKICAgcnVieSAkY3VyYnVmLmFwcGVuZCgxLCAndGhyZWUnKQpAQCAtMTEyLDcgKzExMiw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCBidWZmZXIubGluZSAoZ2V0IG9yIHNldCB0aGUgY3VycmVudCBsaW5lKQotZnVuYyBUZXN0X2J1ZmZlcl9saW5lKCkKK2Z1bmMgVGVzdF9ydWJ5X2J1ZmZlcl9saW5lKCkKICAgbmV3CiAgIGNhbGwgc2V0bGluZSgxLCBbJ29uZScsICd0d28nLCAndGhyZWUnXSkKICAgMgpAQCAtMTI1LDcgKzEyNSw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCBidWZmZXIubGluZV9udW1iZXIgKGdldCBjdXJyZW50IGxpbmUgbnVtYmVyKQotZnVuYyBUZXN0X2J1ZmZlcl9saW5lX251bWJlcigpCitmdW5jIFRlc3RfcnVieV9idWZmZXJfbGluZV9udW1iZXIoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnb25lJywgJ3R3bycsICd0aHJlZSddKQogICAyCkBAIC0xMzQsNyArMTM0LDcgQEAKICAgYndpcGUhCiBlbmRmdW5jCiAKLWZ1bmMgVGVzdF9idWZmZXJfZ2V0KCkKK2Z1bmMgVGVzdF9ydWJ5X2J1ZmZlcl9nZXQoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnb25lJywgJ3R3byddKQogICBjYWxsIGFzc2VydF9lcXVhbCgnb25lJywgcnVieWV2YWwoJyRjdXJidWZbMV0nKSkKQEAgLTE0OCw3ICsxNDgsNyBAQAogICBid2lwZSEKIGVuZGZ1bmMKIAotZnVuYyBUZXN0X2J1ZmZlcl9zZXQoKQorZnVuYyBUZXN0X3J1YnlfYnVmZmVyX3NldCgpCiAgIG5ldwogICBjYWxsIHNldGxpbmUoMSwgWydvbmUnLCAndHdvJ10pCiAgIHJ1YnkgJGN1cmJ1ZlsyXSA9ICdUV08nCkBAIC0xNjIsNyArMTYyLDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHdpbmRvdy53aWR0aCAoZ2V0IG9yIHNldCB3aW5kb3cgaGVpZ2h0KS4KLWZ1bmMgVGVzdF93aW5kb3dfaGVpZ2h0KCkKK2Z1bmMgVGVzdF9ydWJ5X3dpbmRvd19oZWlnaHQoKQogICBuZXcKIAogICAiIFRlc3Qgc2V0dGluZyB3aW5kb3cgaGVpZ2h0CkBAIC0xNzYsNyArMTc2LDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHdpbmRvdy53aWR0aCAoZ2V0IG9yIHNldCB3aW5kb3cgd2lkdGgpLgotZnVuYyBUZXN0X3dpbmRvd193aWR0aCgpCitmdW5jIFRlc3RfcnVieV93aW5kb3dfd2lkdGgoKQogICB2bmV3CiAKICAgIiBUZXN0IHNldHRpbmcgd2luZG93IHdpZHRoCkBAIC0xOTAsNyArMTkwLDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IHdpbmRvdy5idWZmZXIgKGdldCBidWZmZXIgb2JqZWN0IG9mIGEgd2luZG93IG9iamVjdCkuCi1mdW5jIFRlc3Rfd2luZG93X2J1ZmZlcigpCitmdW5jIFRlc3RfcnVieV93aW5kb3dfYnVmZmVyKCkKICAgbmV3IFhmb28xCiAgIG5ldyBYZm9vMgogICBydWJ5ICRiMiA9ICRjdXJ3aW4uYnVmZmVyCkBAIC0yMDksMTQgKzIwOSwxNCBAQAogZW5kZnVuYwogCiAiIFRlc3QgVmltOjpXaW5kb3cuY3VycmVudCAoZ2V0IGN1cnJlbnQgd2luZG93IG9iamVjdCkKLWZ1bmMgVGVzdF9WaW1fd2luZG93X2N1cnJlbnQoKQorZnVuYyBUZXN0X3J1YnlfVmltX3dpbmRvd19jdXJyZW50KCkKICAgbGV0IGN3ID0gcnVieWV2YWwoJyRjdXJ3aW4nKQogICBjYWxsIGFzc2VydF9lcXVhbChjdywgcnVieWV2YWwoJ1ZpbTo6V2luZG93LmN1cnJlbnQnKSkKICAgY2FsbCBhc3NlcnRfbWF0Y2goJ14jPFZpbTo6V2luZG93OjB4XHhcKz4kJywgY3cpCiBlbmRmdW5jCiAKICIgVGVzdCBWaW06OldpbmRvdy5jb3VudCAobnVtYmVyIG9mIHdpbmRvd3MpCi1mdW5jIFRlc3RfVmltX3dpbmRvd19jb3VudCgpCitmdW5jIFRlc3RfcnVieV9WaW1fd2luZG93X2NvdW50KCkKICAgbmV3IFhmb28xCiAgIG5ldyBYZm9vMgogICBzcGxpdApAQCAtMjI2LDcgKzIyNiw3IEBACiBlbmRmdW5jCiAKICIgVGVzdCBWaW06OldpbmRvd1tuXSAoZ2V0IHdpbmRvdyBvYmplY3Qgb2Ygd2luZG93IG4pCi1mdW5jIFRlc3RfVmltX3dpbmRvd19nZXQoKQorZnVuYyBUZXN0X3J1YnlfVmltX3dpbmRvd19nZXQoKQogICBuZXcgWGZvbzEKICAgbmV3IFhmb28yCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdYZm9vMiQnLCBydWJ5ZXZhbCgnVmltOjpXaW5kb3dbMF0uYnVmZmVyLm5hbWUnKSkKQEAgLTIzOCwxNCArMjM4LDE0IEBACiBlbmRmdW5jCiAKICIgVGVzdCBWaW06OkJ1ZmZlci5jdXJyZW50IChyZXR1cm4gdGhlIGJ1ZmZlciBvYmplY3Qgb2YgY3VycmVudCBidWZmZXIpCi1mdW5jIFRlc3RfVmltX2J1ZmZlcl9jdXJyZW50KCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9idWZmZXJfY3VycmVudCgpCiAgIGxldCBjYiA9IHJ1YnlldmFsKCckY3VyYnVmJykKICAgY2FsbCBhc3NlcnRfZXF1YWwoY2IsIHJ1YnlldmFsKCdWaW06OkJ1ZmZlci5jdXJyZW50JykpCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdeIzxWaW06OkJ1ZmZlcjoweFx4XCs+JCcsIGNiKQogZW5kZnVuYwogCiAiIFRlc3QgVmltOjpCdWZmZXI6LmNvdW50IChyZXR1cm4gdGhlIG51bWJlciBvZiBidWZmZXJzKQotZnVuYyBUZXN0X1ZpbV9idWZmZXJfY291bnQoKQorZnVuYyBUZXN0X3J1YnlfVmltX2J1ZmZlcl9jb3VudCgpCiAgIG5ldyBYZm9vMQogICBuZXcgWGZvbzIKICAgY2FsbCBhc3NlcnRfZXF1YWwoMywgcnVieWV2YWwoJ1ZpbTo6QnVmZmVyLmNvdW50JykpCkBAIC0yNTQsNyArMjU0LDcgQEAKIGVuZGZ1bmMKIAogIiBUZXN0IFZpbTo6YnVmZmVyW25dIChyZXR1cm4gdGhlIGJ1ZmZlciBvYmplY3Qgb2YgYnVmZmVyIG51bWJlciBuKQotZnVuYyBUZXN0X1ZpbV9idWZmZXJfZ2V0KCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9idWZmZXJfZ2V0KCkKICAgbmV3IFhmb28xCiAgIG5ldyBYZm9vMgogCkBAIC0yNjksNyArMjY5LDcgQEAKIAogIiBUZXN0IFZpbTo6Y29tbWFuZCh7Y21kfSkgKGV4ZWN1dGUgYSBFeCBjb21tYW5kKSkKICIgVGVzdCBWaW06OmNvbW1hbmQoe2NtZH0pCi1mdW5jIFRlc3RfVmltX2NvbW1hbmQoKQorZnVuYyBUZXN0X3J1YnlfVmltX2NvbW1hbmQoKQogICBuZXcKICAgY2FsbCBzZXRsaW5lKDEsIFsnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJ10pCiAgIHJ1YnkgVmltOjpjb21tYW5kKCcyLDNkJykKQEAgLTI3OCw3ICsyNzgsNyBAQAogZW5kZnVuYwogCiAiIFRlc3QgVmltOjpzZXRfb3B0aW9uIChzZXQgYSB2aW0gb3B0aW9uKQotZnVuYyBUZXN0X1ZpbV9zZXRfb3B0aW9uKCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9zZXRfb3B0aW9uKCkKICAgY2FsbCBhc3NlcnRfZXF1YWwoMCwgJm51bWJlcikKICAgcnVieSBWaW06OnNldF9vcHRpb24oJ251bWJlcicpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDEsICZudW1iZXIpCkBAIC0yODYsMTQgKzI4NiwxNiBAQAogICBjYWxsIGFzc2VydF9lcXVhbCgwLCAmbnVtYmVyKQogZW5kZnVuYwogCi1mdW5jIFRlc3RfVmltX2V2YWx1YXRlKCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9ldmFsdWF0ZSgpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKDEyMywgICAgICAgIHJ1YnlldmFsKCdWaW06OmV2YWx1YXRlKCIxMjMiKScpKQogICAiIFZpbTo6ZXZhbHVhdGUoIjEyMyIpLmNsYXNzIGdpdmVzIEludGVnZXIgb3IgRml4bnVtIGRlcGVuZGluZwogICAiIG9uIHZlcnNpb25zIG9mIFJ1YnkuCiAgIGNhbGwgYXNzZXJ0X21hdGNoKCdeSW50ZWdlclx8Rml4bnVtJCcsIHJ1YnlldmFsKCdWaW06OmV2YWx1YXRlKCIxMjMiKS5jbGFzcycpKQogCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKDEuMjMsICAgICAgIHJ1YnlldmFsKCdWaW06OmV2YWx1YXRlKCIxLjIzIiknKSkKLSAgY2FsbCBhc3NlcnRfZXF1YWwoJ0Zsb2F0JywgICAgcnVieWV2YWwoJ1ZpbTo6ZXZhbHVhdGUoIjEuMjMiKS5jbGFzcycpKQorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBjYWxsIGFzc2VydF9lcXVhbCgxLjIzLCAgICAgICBydWJ5ZXZhbCgnVmltOjpldmFsdWF0ZSgiMS4yMyIpJykpCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoJ0Zsb2F0JywgICAgcnVieWV2YWwoJ1ZpbTo6ZXZhbHVhdGUoIjEuMjMiKS5jbGFzcycpKQorICBlbmRpZgogCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKCdmb28nLCAgICAgIHJ1YnlldmFsKCdWaW06OmV2YWx1YXRlKCJcImZvb1wiIiknKSkKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ1N0cmluZycsICAgcnVieWV2YWwoJ1ZpbTo6ZXZhbHVhdGUoIlwiZm9vXCIiKS5jbGFzcycpKQpAQCAtMzE5LDE0ICszMjEsMTQgQEAKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ0ZhbHNlQ2xhc3MnLHJ1YnlldmFsKCdWaW06OmV2YWx1YXRlKCJ2OmZhbHNlIikuY2xhc3MnKSkKIGVuZGZ1bmMKIAotZnVuYyBUZXN0X1ZpbV9ibG9iKCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9ibG9iKCkKICAgY2FsbCBhc3NlcnRfZXF1YWwoJzB6JywgICAgICAgICBydWJ5ZXZhbCgnVmltOjpibG9iKCIiKScpKQogICBjYWxsIGFzc2VydF9lcXVhbCgnMHozMTMyNjE2MicsIHJ1YnlldmFsKCdWaW06OmJsb2IoIjEyYWIiKScpKQogICBjYWxsIGFzc2VydF9lcXVhbCgnMHowMDAxMDIwMycsIHJ1YnlldmFsKCdWaW06OmJsb2IoIlx4MDBceDAxXHgwMlx4MDMiKScpKQogICBjYWxsIGFzc2VydF9lcXVhbCgnMHo4MDgxRkVGRicsIHJ1YnlldmFsKCdWaW06OmJsb2IoIlx4ODBceDgxXHhmZVx4ZmYiKScpKQogZW5kZnVuYwogCi1mdW5jIFRlc3RfVmltX2V2YWx1YXRlX2xpc3QoKQorZnVuYyBUZXN0X3J1YnlfVmltX2V2YWx1YXRlX2xpc3QoKQogICBjYWxsIHNldGxpbmUobGluZSgnJCcpLCBbJzIgbGluZSAyJ10pCiAgIHJ1YnkgVmltLmNvbW1hbmQoIm5vcm1hbCAvXjJcbiIpCiAgIGxldCBsID0gWyJhYmMiLCAiZGVmIl0KQEAgLTM0MCw3ICszNDIsNyBAQAogICBjYWxsIGFzc2VydF9lcXVhbCgnYWJjL2RlZicsIGdldGxpbmUoJyQnKSkKIGVuZGZ1bmMKIAotZnVuYyBUZXN0X1ZpbV9ldmFsdWF0ZV9kaWN0KCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9ldmFsdWF0ZV9kaWN0KCkKICAgbGV0IGQgPSB7J2EnOiAnZm9vJywgJ2InOiAxMjN9CiAgIHJlZGlyID0+IGw6b3V0CiAgIHJ1YnkgZCA9IFZpbS5ldmFsdWF0ZSgiZCIpOyBwcmludCBkCkBAIC0zNDksMTMgKzM1MSwxMyBAQAogZW5kZnVuYwogCiAiIFRlc3QgVmltOjptZXNzYWdlKHttc2d9KSAoZGlzcGxheSBtZXNzYWdlIHttc2d9KQotZnVuYyBUZXN0X1ZpbV9tZXNzYWdlKCkKK2Z1bmMgVGVzdF9ydWJ5X1ZpbV9tZXNzYWdlKCkKICAgcnVieSBWaW06Om1lc3NhZ2UoJ0EgbWVzc2FnZScpCiAgIGxldCBtZXNzYWdlcyA9IHNwbGl0KGV4ZWN1dGUoJ21lc3NhZ2UnKSwgIlxuIikKICAgY2FsbCBhc3NlcnRfZXF1YWwoJ0EgbWVzc2FnZScsIG1lc3NhZ2VzWy0xXSkKIGVuZGZ1bmMKIAotZnVuYyBUZXN0X3ByaW50KCkKK2Z1bmMgVGVzdF9ydWJ5X3ByaW50KCkKICAgZnVuYyBSdWJ5UHJpbnQoZXhwcikKICAgICByZXR1cm4gdHJpbShleGVjdXRlKCdydWJ5IHByaW50ICcgLiBhOmV4cHIpKQogICBlbmRmdW5jCkBAIC0zNzQsNyArMzc2LDcgQEAKICAgZGVsZnVuYyBSdWJ5UHJpbnQKIGVuZGZ1bmMKIAotZnVuYyBUZXN0X3AoKQorZnVuYyBUZXN0X3J1YnlfcCgpCiAgIHJ1YnkgcCAnSnVzdCBhIHRlc3QnCiAgIGxldCBtZXNzYWdlcyA9IHNwbGl0KGV4ZWN1dGUoJ21lc3NhZ2UnKSwgIlxuIikKICAgY2FsbCBhc3NlcnRfZXF1YWwoJyJKdXN0IGEgdGVzdCInLCBtZXNzYWdlc1stMV0pCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3NvcnQudmltIGIvc3JjL3Rlc3RkaXIvdGVzdF9zb3J0LnZpbQppbmRleCA0YWJlMzFkLi5iN2M2OGYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3NvcnQudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Rfc29ydC52aW0KQEAgLTEsNSArMSw3IEBACiAiIFRlc3RzIGZvciB0aGUgInNvcnQoKSIgZnVuY3Rpb24gYW5kIGZvciB0aGUgIjpzb3J0IiBjb21tYW5kLgogCitzb3VyY2UgY2hlY2sudmltCisKIGZ1bmMgQ29tcGFyZTEoYSwgYikgYWJvcnQKICAgICBjYWxsIHNvcnQocmFuZ2UoMyksICdDb21wYXJlMicpCiAgICAgcmV0dXJuIGE6YSAtIGE6YgpAQCAtMjgsNiArMzAsNyBAQAogZW5kZnVuYwogCiBmdW5jIFRlc3Rfc29ydF9mbG9hdCgpCisgIENoZWNrRmVhdHVyZSBmbG9hdAogICBjYWxsIGFzc2VydF9lcXVhbChbMC4yOCwgMywgMTMuNV0sIHNvcnQoWzEzLjUsIDAuMjgsIDNdLCAnZicpKQogZW5kZnVuYwogCkBAIC0zNyw2ICs0MCw4IEBACiBlbmRmdW5jCiAKIGZ1bmMgVGVzdF9zb3J0X2RlZmF1bHQoKQorICBDaGVja0ZlYXR1cmUgZmxvYXQKKwogICAiIGRvY3Mgc2F5IG9taXR0ZWQsIGVtcHR5IG9yIHplcm8gYXJndW1lbnQgc29ydHMgb24gc3RyaW5nIHJlcHJlc2VudGF0aW9uLgogICBjYWxsIGFzc2VydF9lcXVhbChbJzInLCAnQScsICdBQScsICdhJywgMSwgMy4zXSwgc29ydChbMy4zLCAxLCAiMiIsICJBIiwgImEiLCAiQUEiXSkpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKFsnMicsICdBJywgJ0FBJywgJ2EnLCAxLCAzLjNdLCBzb3J0KFszLjMsIDEsICIyIiwgIkEiLCAiYSIsICJBQSJdLCAnJykpCkBAIC0xMTQ1LDMwICsxMTUwLDYgQEAKIAlcICAgIF0KIAlcIH0sCiAJXCB7Ci0JXCAgICAnbmFtZScgOiAnZmxvYXQnLAotCVwgICAgJ2NtZCcgOiAnc29ydCBmJywKLQlcICAgICdpbnB1dCcgOiBbCi0JXAknMS4yMzQnLAotCVwJJzAuODgnLAotCVwJJyAgKyAgMTIzLjQ1NicsCi0JXAknMS4xNWUtNicsCi0JXAknLTEuMWUzJywKLQlcCSctMS4wMWUzJywKLQlcCScnLAotCVwJJycKLQlcICAgIF0sCi0JXCAgICAnZXhwZWN0ZWQnIDogWwotCVwJJycsCi0JXAknJywKLQlcCSctMS4xZTMnLAotCVwJJy0xLjAxZTMnLAotCVwJJzEuMTVlLTYnLAotCVwJJzAuODgnLAotCVwJJzEuMjM0JywKLQlcCScgICsgIDEyMy40NTYnCi0JXCAgICBdCi0JXCB9LAotCVwgewogCVwgICAgJ25hbWUnIDogJ2FscGhhYmV0aWNhbCwgc29ydGVkIGlucHV0JywKIAlcICAgICdjbWQnIDogJ3NvcnQnLAogCVwgICAgJ2lucHV0JyA6IFsKQEAgLTEyMjMsNiArMTIwNCwzNSBAQAogCVwgfSwKIAlcIF0KIAorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBsZXQgdGVzdHMgKz0gWworICAgICAgICAgIFwgeworICAgICAgICAgIFwgICAgJ25hbWUnIDogJ2Zsb2F0JywKKyAgICAgICAgICBcICAgICdjbWQnIDogJ3NvcnQgZicsCisgICAgICAgICAgXCAgICAnaW5wdXQnIDogWworICAgICAgICAgIFwJJzEuMjM0JywKKyAgICAgICAgICBcCScwLjg4JywKKyAgICAgICAgICBcCScgICsgIDEyMy40NTYnLAorICAgICAgICAgIFwJJzEuMTVlLTYnLAorICAgICAgICAgIFwJJy0xLjFlMycsCisgICAgICAgICAgXAknLTEuMDFlMycsCisgICAgICAgICAgXAknJywKKyAgICAgICAgICBcCScnCisgICAgICAgICAgXCAgICBdLAorICAgICAgICAgIFwgICAgJ2V4cGVjdGVkJyA6IFsKKyAgICAgICAgICBcCScnLAorICAgICAgICAgIFwJJycsCisgICAgICAgICAgXAknLTEuMWUzJywKKyAgICAgICAgICBcCSctMS4wMWUzJywKKyAgICAgICAgICBcCScxLjE1ZS02JywKKyAgICAgICAgICBcCScwLjg4JywKKyAgICAgICAgICBcCScxLjIzNCcsCisgICAgICAgICAgXAknICArICAxMjMuNDU2JworICAgICAgICAgIFwgICAgXQorICAgICAgICAgIFwgfSwKKyAgICAgICAgICBcIF0KKyAgZW5kaWYKKwogICBmb3IgdCBpbiB0ZXN0cwogICAgIGVuZXchCiAgICAgY2FsbCBhcHBlbmQoMCwgdC5pbnB1dCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3RfdGltZXJzLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfdGltZXJzLnZpbQppbmRleCBlMGQwMjRiLi4zODNhZmY1IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0X3RpbWVycy52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdF90aW1lcnMudmltCkBAIC0yOTAsNiArMjkwLDcgQEAKICAgaWYgaGFzKCd3aW4zMicpICYmICFoYXMoJ2d1aV9ydW5uaW5nJykKICAgICB0aHJvdyAnU2tpcHBlZDogY2Fubm90IGdldCBsb3ctbGV2ZWwgaW5wdXQnCiAgIGVuZGlmCisgIENoZWNrRnVuY3Rpb24gcmVsdGltZWZsb2F0CiAKICAgIiBNZWFzdXJlIHRoZSBlbGFwc2VkIHRpbWUgdG8gYXZvaWQgYSBoYW5nIHdoZW4gaXQgZmFpbHMuCiAgIGxldCBzdGFydCA9IHJlbHRpbWUoKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdF90cnVlX2ZhbHNlLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfdHJ1ZV9mYWxzZS52aW0KaW5kZXggMzQ2YjQzMi4uNGUxNGQ1NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF90cnVlX2ZhbHNlLnZpbQorKysgYi9zcmMvdGVzdGRpci90ZXN0X3RydWVfZmFsc2UudmltCkBAIC0xLDUgKzEsNyBAQAogIiBUZXN0IGJlaGF2aW9yIG9mIGJvb2xlYW4tbGlrZSB2YWx1ZXMuCiAKK3NvdXJjZSBjaGVjay52aW0KKwogIiBUZXN0IHdoYXQgaXMgZXhwbGFpbmVkIGF0ICI6aGVscCBUUlVFIiBhbmQgIjpoZWxwIEZBTFNFIi4KIGZ1bmMgVGVzdF9pZigpCiAgIGlmIHY6ZmFsc2UKQEAgLTQxLDcgKzQzLDkgQEAKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2lmIFsxXScsICdFNzQ1JykKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2lmIHsxOiAxfScsICdFNzI4JykKICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2lmIGZ1bmN0aW9uKCJzdHJpbmciKScsICdFNzAzJykKLSAgY2FsbCBhc3NlcnRfZmFpbHMoJ2lmIDEuMyIpJywgJ0U4MDUnKQorICBpZiBoYXMoJ2Zsb2F0JykKKyAgICBjYWxsIGFzc2VydF9mYWlscygnaWYgMS4zIiknLCAnRTgwNScpCisgIGVuZGlmCiBlbmRmdW5jCiAKIGZ1bmN0aW9uIFRyeV9hcmdfdHJ1ZV9mYWxzZShleHByLCBmYWxzZV92YWwsIHRydWVfdmFsKQpAQCAtMTEzLDYgKzExNyw3IEBACiBlbmRmdW5jCiAKIGZ1bmN0aW9uIFRyeV9hcmdfbm9uX3plcm8oZXhwciwgZmFsc2VfdmFsLCB0cnVlX3ZhbCkKKyAgQ2hlY2tGZWF0dXJlIGZsb2F0CiAgIGZvciB2IGluIFsndjpmYWxzZScsICcwJywgJ1sxXScsICd7MjozfScsICczLjQnXSAKICAgICBsZXQgciA9IGV2YWwoc3Vic3RpdHV0ZShhOmV4cHIsICcldiUnLCB2LCAnJykpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoYTpmYWxzZV92YWwsIHIsICdyZXN1bHQgZm9yICcgLiB2IC4gJyBpcyBub3QgJyAuIGE6ZmFsc2VfdmFsIC4gJyBidXQgJyAuIHIpCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3VzZXJfZnVuYy52aW0gYi9zcmMvdGVzdGRpci90ZXN0X3VzZXJfZnVuYy52aW0KaW5kZXggNGI0YTI3Ni4uZDEwYTExMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF91c2VyX2Z1bmMudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfdXNlcl9mdW5jLnZpbQpAQCAtMTIxLDkgKzEyMSwxMSBAQAogZW5kZnVuYwogCiBmdW5jIFRlc3RfZGVmYXVsdF9hcmcoKQotICBjYWxsIGFzc2VydF9lcXVhbCgxLjAsIExvZygxMCkpCi0gIGNhbGwgYXNzZXJ0X2VxdWFsKGxvZygxMCksIExvZygxMCwgZXhwKDEpKSkKLSAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgTG9nKDEsMiwzKSIsICdFMTE4JykKKyAgaWYgaGFzKCdmbG9hdCcpCisgICAgY2FsbCBhc3NlcnRfZXF1YWwoMS4wLCBMb2coMTApKQorICAgIGNhbGwgYXNzZXJ0X2VxdWFsKGxvZygxMCksIExvZygxMCwgZXhwKDEpKSkKKyAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBMb2coMSwyLDMpIiwgJ0UxMTgnKQorICBlbmRpZgogCiAgIGxldCByZXMgPSBBcmdzKDEpCiAgIGNhbGwgYXNzZXJ0X2VxdWFsKHJlcy5tYW5kYXRvcnksIDEpCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3ZpbTlfZXhwci52aW0gYi9zcmMvdGVzdGRpci90ZXN0X3ZpbTlfZXhwci52aW0KaW5kZXggODc3NmUwNy4uZTY2YTU1OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF92aW05X2V4cHIudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfdmltOV9leHByLnZpbQpAQCAtMTksNyArMTksOSBAQAogZGVmIFRlc3RfZXhwcjEoKQogICBhc3NlcnRfZXF1YWwoJ29uZScsIHRydWUgPyAnb25lJyA6ICd0d28nKQogICBhc3NlcnRfZXF1YWwoJ29uZScsIDEgPyAnb25lJyA6ICd0d28nKQotICBhc3NlcnRfZXF1YWwoJ29uZScsIDAuMSA/ICdvbmUnIDogJ3R3bycpCisgIGlmIGhhcygnZmxvYXQnKQorICAgIGFzc2VydF9lcXVhbCgnb25lJywgMC4xID8gJ29uZScgOiAndHdvJykKKyAgZW5kaWYKICAgYXNzZXJ0X2VxdWFsKCdvbmUnLCAneCcgPyAnb25lJyA6ICd0d28nKQogIiAgYXNzZXJ0X2VxdWFsKCdvbmUnLCAwejEyMzQgPyAnb25lJyA6ICd0d28nKQogICBhc3NlcnRfZXF1YWwoJ29uZScsIFswXSA/ICdvbmUnIDogJ3R3bycpCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X3ZpbXNjcmlwdC52aW0gYi9zcmMvdGVzdGRpci90ZXN0X3ZpbXNjcmlwdC52aW0KaW5kZXggYzg5MGZiNy4uZDdhM2ZlMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3RkaXIvdGVzdF92aW1zY3JpcHQudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3Rfdmltc2NyaXB0LnZpbQpAQCAtMTE0Miw3ICsxMTQyLDkgQEAKICAgICBjYWxsIGFzc2VydF9lcXVhbCgyLCB0eXBlKGZ1bmN0aW9uKCJ0ciIsIFs4XSkpKQogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDMsIHR5cGUoW10pKQogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDQsIHR5cGUoe30pKQotICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDUsIHR5cGUoMC4wKSkKKyAgICBpZiBoYXMoJ2Zsb2F0JykKKyAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDUsIHR5cGUoMC4wKSkKKyAgICBlbmRpZgogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDYsIHR5cGUodjpmYWxzZSkpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoNiwgdHlwZSh2OnRydWUpKQogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDcsIHR5cGUodjpub25lKSkKQEAgLTExNTUsNyArMTE1Nyw5IEBACiAgICAgY2FsbCBhc3NlcnRfZXF1YWwodjp0X2Z1bmMsIHR5cGUoZnVuY3Rpb24oInRyIiwgWzhdKSkpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwodjp0X2xpc3QsIHR5cGUoW10pKQogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKHY6dF9kaWN0LCB0eXBlKHt9KSkKLSAgICBjYWxsIGFzc2VydF9lcXVhbCh2OnRfZmxvYXQsIHR5cGUoMC4wKSkKKyAgICBpZiBoYXMoJ2Zsb2F0JykKKyAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKHY6dF9mbG9hdCwgdHlwZSgwLjApKQorICAgIGVuZGlmCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwodjp0X2Jvb2wsIHR5cGUodjpmYWxzZSkpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwodjp0X2Jvb2wsIHR5cGUodjp0cnVlKSkKICAgICBjYWxsIGFzc2VydF9lcXVhbCh2OnRfbm9uZSwgdHlwZSh2Om5vbmUpKQpAQCAtMTQyNSw4ICsxNDI5LDEwIEBACiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoLTkyMjMzNzIwMzY4NTQ3NzU4MDcsIC0xIC8gMCkKICAgICBjYWxsIGFzc2VydF9lcXVhbCgtOTIyMzM3MjAzNjg1NDc3NTgwNyAtIDEsICAwIC8gMCkKIAotICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCAweDdGRkZmZmZmRkZGRmZmZmYsIGZsb2F0Mm5yKCAxLjBlMTUwKSkKLSAgICBjYWxsIGFzc2VydF9lcXVhbCgtMHg3RkZGZmZmZkZGRkZmZmZmLCBmbG9hdDJucigtMS4wZTE1MCkpCisgICAgaWYgaGFzKCdmbG9hdCcpCisgICAgICBjYWxsIGFzc2VydF9lcXVhbCggMHg3RkZGZmZmZkZGRkZmZmZmLCBmbG9hdDJuciggMS4wZTE1MCkpCisgICAgICBjYWxsIGFzc2VydF9lcXVhbCgtMHg3RkZGZmZmZkZGRkZmZmZmLCBmbG9hdDJucigtMS4wZTE1MCkpCisgICAgZW5kaWYKIAogICAgIGxldCBybmcgPSByYW5nZSgweEZGRkZmZmZmLCAweDEwMDAwMDAwMSkKICAgICBjYWxsIGFzc2VydF9lcXVhbChbMHhGRkZGZmZmZiwgMHgxMDAwMDAwMDAsIDB4MTAwMDAwMDAxXSwgcm5nKQpAQCAtMTUyNiwxMCArMTUzMiwxMiBAQAogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDE2LCBhbmQoMTI3LCAxNikpCiAgICAgZXZhbCAxMjctPmFuZCgxNiktPmFzc2VydF9lcXVhbCgxNikKICAgICBjYWxsIGFzc2VydF9lcXVhbCgwLCBhbmQoMTI3LCAxMjgpKQotICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIGFuZCgxLjAsIDEpIiwgJ0U4MDU6JykKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoW10sIDEpIiwgJ0U3NDU6JykKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoe30sIDEpIiwgJ0U3Mjg6JykKLSAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoMSwgMS4wKSIsICdFODA1OicpCisgICAgaWYgaGFzKCdmbG9hdCcpCisgICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoMS4wLCAxKSIsICdFODA1OicpCisgICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoMSwgMS4wKSIsICdFODA1OicpCisgICAgZW5kaWYKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoMSwgW10pIiwgJ0U3NDU6JykKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBhbmQoMSwge30pIiwgJ0U3Mjg6JykKICAgICAiIG9yCkBAIC0xNTM3LDEwICsxNTQ1LDEyIEBACiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoMTUsIG9yKDgsIDcpKQogICAgIGV2YWwgOC0+b3IoNyktPmFzc2VydF9lcXVhbCgxNSkKICAgICBjYWxsIGFzc2VydF9lcXVhbCgxMjMsIG9yKDAsIDEyMykpCi0gICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgb3IoMS4wLCAxKSIsICdFODA1OicpCiAgICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgb3IoW10sIDEpIiwgJ0U3NDU6JykKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBvcih7fSwgMSkiLCAnRTcyODonKQotICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIG9yKDEsIDEuMCkiLCAnRTgwNTonKQorICAgIGlmIGhhcygnZmxvYXQnKQorICAgICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgb3IoMS4wLCAxKSIsICdFODA1OicpCisgICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCBvcigxLCAxLjApIiwgJ0U4MDU6JykKKyAgICBlbmRpZgogICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIG9yKDEsIFtdKSIsICdFNzQ1OicpCiAgICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgb3IoMSwge30pIiwgJ0U3Mjg6JykKICAgICAiIHhvcgpAQCAtMTU0OCwxMCArMTU1OCwxMiBAQAogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDExMSwgeG9yKDEyNywgMTYpKQogICAgIGV2YWwgMTI3LT54b3IoMTYpLT5hc3NlcnRfZXF1YWwoMTExKQogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDI1NSwgeG9yKDEyNywgMTI4KSkKLSAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCB4b3IoMS4wLCAxKSIsICdFODA1OicpCisgICAgaWYgaGFzKCdmbG9hdCcpCisgICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCB4b3IoMS4wLCAxKSIsICdFODA1OicpCisgICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCB4b3IoMSwgMS4wKSIsICdFODA1OicpCisgICAgZW5kaWYKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCB4b3IoW10sIDEpIiwgJ0U3NDU6JykKICAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCB4b3Ioe30sIDEpIiwgJ0U3Mjg6JykKLSAgICBjYWxsIGFzc2VydF9mYWlscygiY2FsbCB4b3IoMSwgMS4wKSIsICdFODA1OicpCiAgICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgeG9yKDEsIFtdKSIsICdFNzQ1OicpCiAgICAgY2FsbCBhc3NlcnRfZmFpbHMoImNhbGwgeG9yKDEsIHt9KSIsICdFNzI4OicpCiAgICAgIiBpbnZlcnQKQEAgLTE1NTksNyArMTU3MSw5IEBACiAgICAgZXZhbCAxMjctPmludmVydCgpLT5hbmQoNjU1MzUpLT5hc3NlcnRfZXF1YWwoNjU0MDgpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoNjU1MTksIGFuZChpbnZlcnQoMTYpLCA2NTUzNSkpCiAgICAgY2FsbCBhc3NlcnRfZXF1YWwoNjU0MDcsIGFuZChpbnZlcnQoMTI4KSwgNjU1MzUpKQotICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIGludmVydCgxLjApIiwgJ0U4MDU6JykKKyAgICBpZiBoYXMoJ2Zsb2F0JykKKyAgICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIGludmVydCgxLjApIiwgJ0U4MDU6JykKKyAgICBlbmRpZgogICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIGludmVydChbXSkiLCAnRTc0NTonKQogICAgIGNhbGwgYXNzZXJ0X2ZhaWxzKCJjYWxsIGludmVydCh7fSkiLCAnRTcyODonKQogZW5kZnVuYwpAQCAtMTcxOCwyMiArMTczMiwyMiBAQAogICAgIGNhbGwgYXNzZXJ0X2VxdWFsKCdzdHJpbmcnLCB4KQogICAgIGxldCB4ICs9IDEKICAgICBjYWxsIGFzc2VydF9lcXVhbCgxLCB4KQotICAgIGxldCB4IC09IDEuNQotICAgIGNhbGwgYXNzZXJ0X2VxdWFsKC0wLjUsIHgpCiAKICAgICBpZiBoYXMoJ2Zsb2F0JykKLSAgICAgICAgIiBUZXN0IGZvciBmbG9hdAotICAgICAgICBsZXQgeCA9IDAuNQotICAgICAgICBsZXQgeCArPSA0LjUKLSAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoNS4wLCB4KQotICAgICAgICBsZXQgeCAtPSAxLjUKLSAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoMy41LCB4KQotICAgICAgICBsZXQgeCAqPSAzLjAKLSAgICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoMTAuNSwgeCkKLSAgICAgICAgbGV0IHggLz0gMi41Ci0gICAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDQuMiwgeCkKLSAgICAgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2xldCB4ICU9IDAuNScsICdFNzM0JykKLSAgICAgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2xldCB4IC49ICJmIicsICdFNzM0JykKKyAgICAgICIgVGVzdCBmb3IgZmxvYXQKKyAgICAgIGxldCB4IC09IDEuNQorICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoLTAuNSwgeCkKKyAgICAgIGxldCB4ID0gMC41CisgICAgICBsZXQgeCArPSA0LjUKKyAgICAgIGNhbGwgYXNzZXJ0X2VxdWFsKDUuMCwgeCkKKyAgICAgIGxldCB4IC09IDEuNQorICAgICAgY2FsbCBhc3NlcnRfZXF1YWwoMy41LCB4KQorICAgICAgbGV0IHggKj0gMy4wCisgICAgICBjYWxsIGFzc2VydF9lcXVhbCgxMC41LCB4KQorICAgICAgbGV0IHggLz0gMi41CisgICAgICBjYWxsIGFzc2VydF9lcXVhbCg0LjIsIHgpCisgICAgICBjYWxsIGFzc2VydF9mYWlscygnbGV0IHggJT0gMC41JywgJ0U3MzQnKQorICAgICAgY2FsbCBhc3NlcnRfZmFpbHMoJ2xldCB4IC49ICJmIicsICdFNzM0JykKICAgICBlbmRpZgogCiAgICAgIiBUZXN0IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZQpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uYyBiL3NyYy92ZXJzaW9uLmMKaW5kZXggYmU0ZGE1MS4uNGJmZmE3YiAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uYworKysgYi9zcmMvdmVyc2lvbi5jCkBAIC03NDMsNiArNzQzLDggQEAKIHN0YXRpYyBpbnQgaW5jbHVkZWRfcGF0Y2hlc1tdID0KIHsgICAvKiBBZGQgbmV3IHBhdGNoIG51bWJlciBiZWxvdyB0aGlzIGxpbmUgKi8KIC8qKi8KKyAgICAxODMsCisvKiovCiAgICAgMTgyLAogLyoqLwogICAgIDE4MSwK