ZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IDM0OWQzNDIuLjQ1ODZiMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtOSw2ICs5LDcgQEAKIAogY2xhc3MgQ1Byb2ZpbGVUZXN0KFByb2ZpbGVUZXN0KToKICAgICBwcm9maWxlcmNsYXNzID0gY1Byb2ZpbGUuUHJvZmlsZQorICAgIGV4cGVjdGVkX21heF9vdXRwdXQgPSAie2J1aWx0LWluIG1ldGhvZCBtYXh9IgogCiAgICAgZGVmIGdldF9leHBlY3RlZF9vdXRwdXQoc2VsZik6CiAgICAgICAgIHJldHVybiBfUHJvZmlsZU91dHB1dApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9wcm9maWxlLnB5CmluZGV4IGM5NzJmYzYuLjI0M2EzMjIgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Byb2ZpbGUucHkKQEAgLTE2LDYgKzE2LDcgQEAKIAogICAgIHByb2ZpbGVyY2xhc3MgPSBwcm9maWxlLlByb2ZpbGUKICAgICBtZXRob2RuYW1lcyA9IFsncHJpbnRfc3RhdHMnLCAncHJpbnRfY2FsbGVycycsICdwcmludF9jYWxsZWVzJ10KKyAgICBleHBlY3RlZF9tYXhfb3V0cHV0ID0gJzowKG1heCknCiAKICAgICBkZWYgZ2V0X2V4cGVjdGVkX291dHB1dChzZWxmKToKICAgICAgICAgcmV0dXJuIF9Qcm9maWxlT3V0cHV0CkBAIC01Myw2ICs1NCwyNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNbaSsxXS5zcGxpdCgnXG4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZFttZXRob2RdLnNwbGl0KCdcbicpKSkpCiAKKyAgICBkZWYgdGVzdF9jYWxsaW5nX2NvbnZlbnRpb25zKHNlbGYpOgorICAgICAgICAjIElzc3VlICM1MzMwOiBwcm9maWxlIGFuZCBjUHJvZmlsZSB3b3VsZG4ndCByZXBvcnQgQyBmdW5jdGlvbnMgY2FsbGVkCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4gV2UgdGVzdCBhbGwgY2FsbGluZyBjb252ZW50aW9ucy4KKyAgICAgICAgc3RtdHMgPSBbCisgICAgICAgICAgICAibWF4KFswXSkiLAorICAgICAgICAgICAgIm1heChbMF0sIGtleT1pbnQpIiwKKyAgICAgICAgICAgICJtYXgoWzBdLCAqKmRpY3Qoa2V5PWludCkpIiwKKyAgICAgICAgICAgICJtYXgoKihbMF0sKSkiLAorICAgICAgICAgICAgIm1heCgqKFswXSwpLCBrZXk9aW50KSIsCisgICAgICAgICAgICAibWF4KCooWzBdLCksICoqZGljdChrZXk9aW50KSkiLAorICAgICAgICBdCisgICAgICAgIGZvciBzdG10IGluIHN0bXRzOgorICAgICAgICAgICAgcyA9IFN0cmluZ0lPKCkKKyAgICAgICAgICAgIHByb2YgPSBzZWxmLnByb2ZpbGVyY2xhc3ModGltZXIsIDAuMDAxKQorICAgICAgICAgICAgcHJvZi5ydW5jdHgoc3RtdCwgZ2xvYmFscygpLCBsb2NhbHMoKSkKKyAgICAgICAgICAgIHN0YXRzID0gcHN0YXRzLlN0YXRzKHByb2YsIHN0cmVhbT1zKQorICAgICAgICAgICAgc3RhdHMucHJpbnRfc3RhdHMoKQorICAgICAgICAgICAgcmVzID0gcy5nZXR2YWx1ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5leHBlY3RlZF9tYXhfb3V0cHV0IGluIHJlcywKKyAgICAgICAgICAgICAgICAiUHJvZmlsaW5nIHswIXJ9IGRpZG4ndCByZXBvcnQgbWF4OlxuezF9Ii5mb3JtYXQoc3RtdCwgcmVzKSkKKwogCiBkZWYgcmVnZW5lcmF0ZV9leHBlY3RlZF9vdXRwdXQoZmlsZW5hbWUsIGNscyk6CiAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5yc3RyaXAoJ2NvJykKZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCA2ZmE2ZDk5Li5iMDY3NjdkIDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0xMiw2ICsxMiw5IEBACiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjNTMzMDogQyBmdW5jdGlvbnMgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMgd2VyZSBub3QgcmVwb3J0ZWQgYnkKKyAgdGhlIHZhcmlvdXMgcHJvZmlsaW5nIG1vZHVsZXMgKHByb2ZpbGUsIGNQcm9maWxlKS4gUGF0Y2ggYnkgSGFnZW4gRvxyc3RlbmF1LgorCiBMaWJyYXJ5CiAtLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbC5jIGIvUHl0aG9uL2NldmFsLmMKaW5kZXggZTY5MzE0Ny4uYjViNWMyNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsLmMKKysrIGIvUHl0aG9uL2NldmFsLmMKQEAgLTM5NTEsMTAgKzM5NTEsMTcgQEAKIAkJUENBTEwoUENBTExfTUVUSE9EKTsKIAllbHNlIGlmIChQeVR5cGVfQ2hlY2soZnVuYykpCiAJCVBDQUxMKFBDQUxMX1RZUEUpOworCWVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKQorCQlQQ0FMTChQQ0FMTF9DRlVOQ1RJT04pOwogCWVsc2UKIAkJUENBTEwoUENBTExfT1RIRVIpOwogI2VuZGlmCi0JcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKKwlpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKwkJUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKwkJQ19UUkFDRShyZXN1bHQsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCkpOworCX0KKwllbHNlCisJCXJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7CiBjYWxsX2ZhaWw6CiAJUHlfWERFQ1JFRihjYWxsYXJncyk7CiAJUHlfWERFQ1JFRihrd2RpY3QpOwpAQCAtNDAzOSwxMCArNDA0NiwxNyBAQAogCQlQQ0FMTChQQ0FMTF9NRVRIT0QpOwogCWVsc2UgaWYgKFB5VHlwZV9DaGVjayhmdW5jKSkKIAkJUENBTEwoUENBTExfVFlQRSk7CisJZWxzZSBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpCisJCVBDQUxMKFBDQUxMX0NGVU5DVElPTik7CiAJZWxzZQogCQlQQ0FMTChQQ0FMTF9PVEhFUik7CiAjZW5kaWYKLQlyZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOworCWlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworCQlQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCQlDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7CisJfQorCWVsc2UKKwkJcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKIGV4dF9jYWxsX2ZhaWw6CiAJUHlfWERFQ1JFRihjYWxsYXJncyk7CiAJUHlfWERFQ1JFRihrd2RpY3QpOwo=