ZGlmZiAtLWdpdCBhL3NyYy9tYXAuYyBiL3NyYy9tYXAuYwppbmRleCA1OTg4NDQ1Li45ODc4NWU3IDEwMDY0NAotLS0gYS9zcmMvbWFwLmMKKysrIGIvc3JjL21hcC5jCkBAIC0zMTE0LDcgKzMxMTQsNyBAQAogCQkgICAgewogCQkJaWYgKHBbMF0gIT0gJywnKQogCQkJewotCQkJICAgIHNwcmludGYoYXJncy0+b3NfZXJyYnVmLAorCQkJICAgIHNucHJpbnRmKGFyZ3MtPm9zX2VycmJ1ZiwgYXJncy0+b3NfZXJyYnVmbGVuLAogCQkJCSAgICBfKGVfbGFuZ21hcF9leHRyYV9jaGFyYWN0ZXJzX2FmdGVyX3NlbWljb2xvbl9zdHIpLAogCQkJCSAgICBwKTsKIAkJCSAgICByZXR1cm4gYXJncy0+b3NfZXJyYnVmOwpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IGQ1ZDIwZDcuLjU3Mjc4ODUgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTE5MzIsNiArMTkzMiw3IEBACiAJaW50CSAgICBjcF92YWwsCiAJY2hhcl91CSAgICAqdmFycF9hcmcsCiAJY2hhcgkgICAgKmVycmJ1ZiwKKwlpbnQJICAgIGVycmJ1ZmxlbiwKIAlpbnQJICAgICp2YWx1ZV9jaGVja2VkLAogCWNoYXIJICAgICoqZXJybXNnKQogewpAQCAtMjAzMCw3ICsyMDMxLDcgQEAKIAkvLyBiZSB0cmlnZ2VyZWQgdGhhdCBjYW4gY2F1c2UgaGF2b2MuCiAJKmVycm1zZyA9IGRpZF9zZXRfc3RyaW5nX29wdGlvbigKIAkJCW9wdF9pZHgsIChjaGFyX3UgKiopdmFycCwgb2xkdmFsLCBuZXd2YWwsIGVycmJ1ZiwKLQkJCW9wdF9mbGFncywgb3AsIHZhbHVlX2NoZWNrZWQpOworCQkJZXJyYnVmbGVuLCBvcHRfZmxhZ3MsIG9wLCB2YWx1ZV9jaGVja2VkKTsKIAogCXNlY3VyZSA9IHNlY3VyZV9zYXZlZDsKICAgICB9CkBAIC0yMjg3LDcgKzIyODgsNyBAQAogCXsKIAkgICAgLy8gc3RyaW5nIG9wdGlvbgogCSAgICBpZiAoZG9fc2V0X29wdGlvbl9zdHJpbmcob3B0X2lkeCwgb3B0X2ZsYWdzLCAmYXJnLCBuZXh0Y2hhciwgb3AsCi0JCQkJCWZsYWdzLCBjcF92YWwsIHZhcnAsIGVycmJ1ZiwKKwkJCQkJZmxhZ3MsIGNwX3ZhbCwgdmFycCwgZXJyYnVmLCBlcnJidWZsZW4sCiAJCQkJCSZ2YWx1ZV9jaGVja2VkLCAmZXJybXNnKSA9PSBGQUlMKQogCSAgICB7CiAJCWlmIChlcnJtc2cgIT0gTlVMTCkKQEAgLTI1NzksMTIgKzI1ODAsMTIgQEAKIAl7CiAJICAgIGludAkJc3RvcG9wdGV2YWwgPSBGQUxTRTsKIAkgICAgY2hhcgkqZXJybXNnID0gTlVMTDsKLQkgICAgY2hhcgllcnJidWZbODBdOworCSAgICBjaGFyCWVycmJ1ZltFUlJfQlVGTEVOXTsKIAkgICAgY2hhcl91CSpzdGFydGFyZyA9IGFyZzsKIAogCSAgICBlcnJtc2cgPSBkb19zZXRfb3B0aW9uKG9wdF9mbGFncywgJmFyZywgYXJnX3N0YXJ0LCAmc3RhcnRhcmcsCiAJCQkJCSZkaWRfc2hvdywgJnN0b3BvcHRldmFsLCBlcnJidWYsCi0JCQkJCXNpemVvZihlcnJidWYpKTsKKwkJCQkJRVJSX0JVRkxFTik7CiAJICAgIGlmIChzdG9wb3B0ZXZhbCkKIAkJYnJlYWs7CiAKQEAgLTUzNDcsNyArNTM0OCw4IEBACiAgICAgaW50CQlvcHRfaWR4OwogICAgIGNoYXJfdQkqdmFycDsKICAgICBsb25nX3UJZmxhZ3M7Ci0gICAgc3RhdGljIGNoYXIJZXJyYnVmWzgwXTsKKyAgICBzdGF0aWMgY2hhcgllcnJidWZbRVJSX0JVRkxFTl07CisgICAgaW50CQllcnJidWZsZW4gPSBFUlJfQlVGTEVOOwogCiAgICAgb3B0X2lkeCA9IGZpbmRvcHRpb24obmFtZSk7CiAgICAgaWYgKG9wdF9pZHggPCAwKQpAQCAtNTM5MCw3ICs1MzkyLDcgQEAKIAl9CiAjZW5kaWYKIAlpZiAoZmxhZ3MgJiBQX1NUUklORykKLQkgICAgcmV0dXJuIHNldF9zdHJpbmdfb3B0aW9uKG9wdF9pZHgsIHN0cmluZywgb3B0X2ZsYWdzLCBlcnJidWYpOworCSAgICByZXR1cm4gc2V0X3N0cmluZ19vcHRpb24ob3B0X2lkeCwgc3RyaW5nLCBvcHRfZmxhZ3MsIGVycmJ1ZiwgZXJyYnVmbGVuKTsKIAogCXZhcnAgPSBnZXRfdmFycF9zY29wZSgmKG9wdGlvbnNbb3B0X2lkeF0pLCBvcHRfZmxhZ3MpOwogCWlmICh2YXJwICE9IE5VTEwpCS8vIGhpZGRlbiBvcHRpb24gaXMgbm90IGNoYW5nZWQKZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uaCBiL3NyYy9vcHRpb24uaAppbmRleCAyZDFjYTJjLi42NDYwNTZiIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmgKKysrIGIvc3JjL29wdGlvbi5oCkBAIC0xMzIxLDQgKzEzMjEsNiBAQAogLy8gVmFsdWUgZm9yIGJfcF91bCBpbmRpY2F0aW5nIHRoZSBnbG9iYWwgdmFsdWUgbXVzdCBiZSB1c2VkLgogI2RlZmluZSBOT19MT0NBTF9VTkRPTEVWRUwgKC0xMjM0NTYpCiAKKyNkZWZpbmUgRVJSX0JVRkxFTiA4MAorCiAjZW5kaWYgLy8gX09QVElPTl9IXwpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbnN0ci5jIGIvc3JjL29wdGlvbnN0ci5jCmluZGV4IGI3Y2RjYzQuLjg0Yzc3Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb25zdHIuYworKysgYi9zcmMvb3B0aW9uc3RyLmMKQEAgLTIyOSwxMSArMjI5LDEyIEBACiAjZW5kaWYKIAogICAgIHN0YXRpYyBjaGFyICoKLWlsbGVnYWxfY2hhcihjaGFyICplcnJidWYsIGludCBjKQoraWxsZWdhbF9jaGFyKGNoYXIgKmVycmJ1ZiwgaW50IGVycmJ1ZmxlbiwgaW50IGMpCiB7CiAgICAgaWYgKGVycmJ1ZiA9PSBOVUxMKQogCXJldHVybiAiIjsKLSAgICBzcHJpbnRmKChjaGFyICopZXJyYnVmLCBfKGVfaWxsZWdhbF9jaGFyYWN0ZXJfc3RyKSwgKGNoYXIgKil0cmFuc2NoYXIoYykpOworICAgIHNucHJpbnRmKChjaGFyICopZXJyYnVmLCBlcnJidWZsZW4sIF8oZV9pbGxlZ2FsX2NoYXJhY3Rlcl9zdHIpLAorCQkgICAgKGNoYXIgKil0cmFuc2NoYXIoYykpOwogICAgIHJldHVybiBlcnJidWY7CiB9CiAKQEAgLTUyNSw3ICs1MjYsOCBAQAogICAgIGludAkJb3B0X2lkeCwKICAgICBjaGFyX3UJKnZhbHVlLAogICAgIGludAkJb3B0X2ZsYWdzLAkvLyBPUFRfTE9DQUwgYW5kL29yIE9QVF9HTE9CQUwKLSAgICBjaGFyCSplcnJidWYpCisgICAgY2hhcgkqZXJyYnVmLAorICAgIGludAkJZXJyYnVmbGVuKQogewogICAgIGNoYXJfdQkqczsKICAgICBjaGFyX3UJKip2YXJwOwpAQCAtNTc5LDcgKzU4MSw3IEBACiAgICAgfQogI2VuZGlmCiAgICAgaWYgKChlcnJtc2cgPSBkaWRfc2V0X3N0cmluZ19vcHRpb24ob3B0X2lkeCwgdmFycCwgb2xkdmFsLCB2YWx1ZSwgZXJyYnVmLAotCQkgICAgb3B0X2ZsYWdzLCBPUF9OT05FLCAmdmFsdWVfY2hlY2tlZCkpID09IE5VTEwpCisJCSAgICBlcnJidWZsZW4sIG9wdF9mbGFncywgT1BfTk9ORSwgJnZhbHVlX2NoZWNrZWQpKSA9PSBOVUxMKQogCWRpZF9zZXRfb3B0aW9uKG9wdF9pZHgsIG9wdF9mbGFncywgVFJVRSwgdmFsdWVfY2hlY2tlZCk7CiAKICNpZiBkZWZpbmVkKEZFQVRfRVZBTCkKQEAgLTYxNSw3ICs2MTcsOCBAQAogY2hlY2tfc3RsX29wdGlvbihjaGFyX3UgKnMpCiB7CiAgICAgaW50CQlncm91cGRlcHRoID0gMDsKLSAgICBzdGF0aWMgY2hhciBlcnJidWZbODBdOworICAgIHN0YXRpYyBjaGFyIGVycmJ1ZltFUlJfQlVGTEVOXTsKKyAgICBpbnQJCWVycmJ1ZmxlbiA9IEVSUl9CVUZMRU47CiAKICAgICB3aGlsZSAoKnMpCiAgICAgewpAQCAtNjU2LDcgKzY1OSw3IEBACiAJfQogCWlmICh2aW1fc3RyY2hyKFNUTF9BTEwsICpzKSA9PSBOVUxMKQogCXsKLQkgICAgcmV0dXJuIGlsbGVnYWxfY2hhcihlcnJidWYsICpzKTsKKwkgICAgcmV0dXJuIGlsbGVnYWxfY2hhcihlcnJidWYsIGVycmJ1ZmxlbiwgKnMpOwogCX0KIAlpZiAoKnMgPT0gJ3snKQogCXsKQEAgLTY2NCw3ICs2NjcsNyBAQAogCiAJICAgIGlmIChyZWV2YWx1YXRlICYmICorK3MgPT0gJ30nKQogCQkvLyAifSIgaXMgbm90IGFsbG93ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgIiV7JSIKLQkJcmV0dXJuIGlsbGVnYWxfY2hhcihlcnJidWYsICd9Jyk7CisJCXJldHVybiBpbGxlZ2FsX2NoYXIoZXJyYnVmLCBlcnJidWZsZW4sICd9Jyk7CiAJICAgIHdoaWxlICgoKnMgIT0gJ30nIHx8IChyZWV2YWx1YXRlICYmIHNbLTFdICE9ICclJykpICYmICpzKQogCQlzKys7CiAJICAgIGlmICgqcyAhPSAnfScpCkBAIC03MTksMTMgKzcyMiwxNyBAQAogICogQW4gb3B0aW9uIHdoaWNoIGlzIGEgbGlzdCBvZiBmbGFncyBpcyBzZXQuICBWYWxpZCB2YWx1ZXMgYXJlIGluICdmbGFncycuCiAgKi8KICAgICBzdGF0aWMgY2hhciAqCi1kaWRfc2V0X29wdGlvbl9saXN0ZmxhZyhjaGFyX3UgKnZhbCwgY2hhcl91ICpmbGFncywgY2hhciAqZXJyYnVmKQorZGlkX3NldF9vcHRpb25fbGlzdGZsYWcoCisJY2hhcl91ICp2YWwsCisJY2hhcl91ICpmbGFncywKKwljaGFyICplcnJidWYsCisJaW50IGVycmJ1ZmxlbikKIHsKICAgICBjaGFyX3UJKnM7CiAKICAgICBmb3IgKHMgPSB2YWw7ICpzOyArK3MpCiAJaWYgKHZpbV9zdHJjaHIoZmxhZ3MsICpzKSA9PSBOVUxMKQotCSAgICByZXR1cm4gaWxsZWdhbF9jaGFyKGVycmJ1ZiwgKnMpOworCSAgICByZXR1cm4gaWxsZWdhbF9jaGFyKGVycmJ1ZiwgZXJyYnVmbGVuLCAqcyk7CiAKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTE0NjEsNyArMTQ2OCw3IEBACiAJICAgIGlmICh2aW1fc3RyY2hyKChjaGFyX3UgKilDT01fQUxMLCAqcykgPT0gTlVMTAogCQkgICAgJiYgIVZJTV9JU0RJR0lUKCpzKSAmJiAqcyAhPSAnLScpCiAJICAgIHsKLQkJZXJybXNnID0gaWxsZWdhbF9jaGFyKGFyZ3MtPm9zX2VycmJ1ZiwgKnMpOworCQllcnJtc2cgPSBpbGxlZ2FsX2NoYXIoYXJncy0+b3NfZXJyYnVmLCBhcmdzLT5vc19lcnJidWZsZW4sICpzKTsKIAkJYnJlYWs7CiAJICAgIH0KIAkgICAgKytzOwpAQCAtMTUxNyw3ICsxNTI0LDcgQEAKIAlpZiAoISpzKQogCSAgICBicmVhazsKIAlpZiAodmltX3N0cmNocigoY2hhcl91ICopIi53YnVrc2lkXXRVIiwgKnMpID09IE5VTEwpCi0JICAgIHJldHVybiBpbGxlZ2FsX2NoYXIoYXJncy0+b3NfZXJyYnVmLCAqcyk7CisJICAgIHJldHVybiBpbGxlZ2FsX2NoYXIoYXJncy0+b3NfZXJyYnVmLCBhcmdzLT5vc19lcnJidWZsZW4sICpzKTsKIAlpZiAoKisrcyAhPSBOVUwgJiYgKnMgIT0gJywnICYmICpzICE9ICcgJykKIAl7CiAJICAgIGlmIChzWy0xXSA9PSAnaycgfHwgc1stMV0gPT0gJ3MnKQpAQCAtMTUzNCw3ICsxNTQxLDcgQEAKIAkgICAgewogCQlpZiAoYXJncy0+b3NfZXJyYnVmICE9IE5VTEwpCiAJCXsKLQkJICAgIHNwcmludGYoKGNoYXIgKilhcmdzLT5vc19lcnJidWYsCisJCSAgICBzbnByaW50ZigoY2hhciAqKWFyZ3MtPm9zX2VycmJ1ZiwgYXJncy0+b3NfZXJyYnVmbGVuLAogCQkJICAgIF8oZV9pbGxlZ2FsX2NoYXJhY3Rlcl9hZnRlcl9jaHIpLCAqLS1zKTsKIAkJICAgIHJldHVybiBhcmdzLT5vc19lcnJidWY7CiAJCX0KQEAgLTE2MzQsNyArMTY0MSw4IEBACiB7CiAgICAgY2hhcl91CSoqdmFycCA9IChjaGFyX3UgKiopYXJncy0+b3NfdmFycDsKIAotICAgIHJldHVybiBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKUNPQ1VfQUxMLCBhcmdzLT5vc19lcnJidWYpOworICAgIHJldHVybiBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKUNPQ1VfQUxMLCBhcmdzLT5vc19lcnJidWYsCisJCSAgICBhcmdzLT5vc19lcnJidWZsZW4pOwogfQogCiAgICAgaW50CkBAIC0xNjUyLDcgKzE2NjAsOCBAQAogewogICAgIGNoYXJfdQkqKnZhcnAgPSAoY2hhcl91ICoqKWFyZ3MtPm9zX3ZhcnA7CiAKLSAgICByZXR1cm4gZGlkX3NldF9vcHRpb25fbGlzdGZsYWcoKnZhcnAsIChjaGFyX3UgKilDUE9fQUxMLCBhcmdzLT5vc19lcnJidWYpOworICAgIHJldHVybiBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKUNQT19BTEwsIGFyZ3MtPm9zX2VycmJ1ZiwKKwkJICAgIGFyZ3MtPm9zX2VycmJ1Zmxlbik7CiB9CiAKICAgICBpbnQKQEAgLTIyODEsNyArMjI5MCw4IEBACiB7CiAgICAgY2hhcl91CSoqdmFycCA9IChjaGFyX3UgKiopYXJncy0+b3NfdmFycDsKIAotICAgIHJldHVybiBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKUZPX0FMTCwgYXJncy0+b3NfZXJyYnVmKTsKKyAgICByZXR1cm4gZGlkX3NldF9vcHRpb25fbGlzdGZsYWcoKnZhcnAsIChjaGFyX3UgKilGT19BTEwsIGFyZ3MtPm9zX2VycmJ1ZiwKKwkJICAgIGFyZ3MtPm9zX2VycmJ1Zmxlbik7CiB9CiAKICAgICBpbnQKQEAgLTI0MjIsNyArMjQzMiw4IEBACiAgICAgY2hhcl91CSoqdmFycCA9IChjaGFyX3UgKiopYXJncy0+b3NfdmFycDsKICAgICBjaGFyICplcnJtc2c7CiAKLSAgICBlcnJtc2cgPSBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKUdPX0FMTCwgYXJncy0+b3NfZXJyYnVmKTsKKyAgICBlcnJtc2cgPSBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKUdPX0FMTCwgYXJncy0+b3NfZXJyYnVmLAorCQkgICAgYXJncy0+b3NfZXJyYnVmbGVuKTsKICAgICBpZiAoZXJybXNnICE9IE5VTEwpCiAJcmV0dXJuIGVycm1zZzsKIApAQCAtMjkyNiw4ICsyOTM3LDggQEAKIHsKICAgICBjaGFyX3UJKip2YXJwID0gKGNoYXJfdSAqKilhcmdzLT5vc192YXJwOwogCi0gICAgcmV0dXJuIGRpZF9zZXRfb3B0aW9uX2xpc3RmbGFnKCp2YXJwLCAoY2hhcl91ICopTU9VU0VfQUxMLAotCQkJCQkJCWFyZ3MtPm9zX2VycmJ1Zik7CisgICAgcmV0dXJuIGRpZF9zZXRfb3B0aW9uX2xpc3RmbGFnKCp2YXJwLCAoY2hhcl91ICopTU9VU0VfQUxMLCBhcmdzLT5vc19lcnJidWYsCisJCSAgICBhcmdzLT5vc19lcnJidWZsZW4pOwogfQogCiAgICAgaW50CkBAIC0zMzY0LDcgKzMzNzUsOCBAQAogewogICAgIGNoYXJfdQkqKnZhcnAgPSAoY2hhcl91ICoqKWFyZ3MtPm9zX3ZhcnA7CiAKLSAgICByZXR1cm4gZGlkX3NldF9vcHRpb25fbGlzdGZsYWcoKnZhcnAsIChjaGFyX3UgKilTSE1fQUxMLCBhcmdzLT5vc19lcnJidWYpOworICAgIHJldHVybiBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKVNITV9BTEwsIGFyZ3MtPm9zX2VycmJ1ZiwKKwkJICAgIGFyZ3MtPm9zX2VycmJ1Zmxlbik7CiB9CiAKICAgICBpbnQKQEAgLTQwMzAsNyArNDA0Miw3IEBACiAJLy8gQ2hlY2sgaXQncyBhIHZhbGlkIGNoYXJhY3RlcgogCWlmICh2aW1fc3RyY2hyKChjaGFyX3UgKikiIVwiJScvOjxAY2ZobnJzIiwgKnMpID09IE5VTEwpCiAJewotCSAgICBlcnJtc2cgPSBpbGxlZ2FsX2NoYXIoYXJncy0+b3NfZXJyYnVmLCAqcyk7CisJICAgIGVycm1zZyA9IGlsbGVnYWxfY2hhcihhcmdzLT5vc19lcnJidWYsIGFyZ3MtPm9zX2VycmJ1ZmxlbiwgKnMpOwogCSAgICBicmVhazsKIAl9CiAJaWYgKCpzID09ICduJykJLy8gbmFtZSBpcyBhbHdheXMgbGFzdCBvbmUKQEAgLTQwNTcsNyArNDA2OSw3IEBACiAJICAgIHsKIAkJaWYgKGFyZ3MtPm9zX2VycmJ1ZiAhPSBOVUxMKQogCQl7Ci0JCSAgICBzcHJpbnRmKGFyZ3MtPm9zX2VycmJ1ZiwKKwkJICAgIHNucHJpbnRmKGFyZ3MtPm9zX2VycmJ1ZiwgYXJncy0+b3NfZXJyYnVmbGVuLAogCQkJICAgIF8oZV9taXNzaW5nX251bWJlcl9hZnRlcl9hbmdsZV9zdHJfYW5nbGUpLAogCQkJICAgIHRyYW5zY2hhcl9ieXRlKCoocyAtIDEpKSk7CiAJCSAgICBlcnJtc2cgPSBhcmdzLT5vc19lcnJidWY7CkBAIC00MTQwLDcgKzQxNTIsOCBAQAogCiAgICAgLy8gQWRkICcsJyB0byB0aGUgbGlzdCBmbGFncyBiZWNhdXNlICd3aGljaHdyYXAnIGlzIGEgZmxhZwogICAgIC8vIGxpc3QgdGhhdCBpcyBjb21tYS1zZXBhcmF0ZWQuCi0gICAgcmV0dXJuIGRpZF9zZXRfb3B0aW9uX2xpc3RmbGFnKCp2YXJwLCAoY2hhcl91ICopKFdXX0FMTCAiLCIpLCBhcmdzLT5vc19lcnJidWYpOworICAgIHJldHVybiBkaWRfc2V0X29wdGlvbl9saXN0ZmxhZygqdmFycCwgKGNoYXJfdSAqKShXV19BTEwgIiwiKSwKKwkJICAgIGFyZ3MtPm9zX2VycmJ1ZiwgYXJncy0+b3NfZXJyYnVmbGVuKTsKIH0KIAogICAgIGludApAQCAtNDM0MSw2ICs0MzU0LDcgQEAKICAgICBjaGFyX3UJKm9sZHZhbCwJCS8vIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBvcHRpb24KICAgICBjaGFyX3UJKnZhbHVlLAkJCS8vIG5ldyB2YWx1ZSBvZiB0aGUgb3B0aW9uCiAgICAgY2hhcgkqZXJyYnVmLAkJLy8gYnVmZmVyIGZvciBlcnJvcnMsIG9yIE5VTEwKKyAgICBpbnQJCWVycmJ1ZmxlbiwJCS8vIGxlbmd0aCBvZiBlcnJvciBidWZmZXIKICAgICBpbnQJCW9wdF9mbGFncywJCS8vIE9QVF9MT0NBTCBhbmQvb3IgT1BUX0dMT0JBTAogICAgIHNldF9vcF9UICAgIG9wLAkJCS8vIE9QX0FERElORy9PUF9QUkVQRU5ESU5HL09QX1JFTU9WSU5HCiAgICAgaW50CQkqdmFsdWVfY2hlY2tlZCkJCS8vIHZhbHVlIHdhcyBjaGVja2VkIHRvIGJlIHNhZmUsIG5vCkBAIC00Mzg1LDYgKzQzOTksNyBAQAogCWFyZ3Mub3Nfb2xkdmFsLnN0cmluZyA9IG9sZHZhbDsKIAlhcmdzLm9zX25ld3ZhbC5zdHJpbmcgPSB2YWx1ZTsKIAlhcmdzLm9zX2VycmJ1ZiA9IGVycmJ1ZjsKKwlhcmdzLm9zX2VycmJ1ZmxlbiA9IGVycmJ1ZmxlbjsKIAkvLyBJbnZva2UgdGhlIG9wdGlvbiBzcGVjaWZpYyBjYWxsYmFjayBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhbmQgYXBwbHkKIAkvLyB0aGUgbmV3IG9wdGlvbiB2YWx1ZS4KIAllcnJtc2cgPSBkaWRfc2V0X2NiKCZhcmdzKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9vcHRpb25zdHIucHJvIGIvc3JjL3Byb3RvL29wdGlvbnN0ci5wcm8KaW5kZXggMjI2MDFiYS4uNGNlOTMyMSAxMDA2NDQKLS0tIGEvc3JjL3Byb3RvL29wdGlvbnN0ci5wcm8KKysrIGIvc3JjL3Byb3RvL29wdGlvbnN0ci5wcm8KQEAgLTgsNyArOCw3IEBACiB2b2lkIHNldF9zdHJpbmdfb3B0aW9uX2RpcmVjdChjaGFyX3UgKm5hbWUsIGludCBvcHRfaWR4LCBjaGFyX3UgKnZhbCwgaW50IG9wdF9mbGFncywgaW50IHNldF9zaWQpOwogdm9pZCBzZXRfc3RyaW5nX29wdGlvbl9kaXJlY3RfaW5fd2luKHdpbl9UICp3cCwgY2hhcl91ICpuYW1lLCBpbnQgb3B0X2lkeCwgY2hhcl91ICp2YWwsIGludCBvcHRfZmxhZ3MsIGludCBzZXRfc2lkKTsKIHZvaWQgc2V0X3N0cmluZ19vcHRpb25fZGlyZWN0X2luX2J1ZihidWZfVCAqYnVmLCBjaGFyX3UgKm5hbWUsIGludCBvcHRfaWR4LCBjaGFyX3UgKnZhbCwgaW50IG9wdF9mbGFncywgaW50IHNldF9zaWQpOwotY2hhciAqc2V0X3N0cmluZ19vcHRpb24oaW50IG9wdF9pZHgsIGNoYXJfdSAqdmFsdWUsIGludCBvcHRfZmxhZ3MsIGNoYXIgKmVycmJ1Zik7CitjaGFyICpzZXRfc3RyaW5nX29wdGlvbihpbnQgb3B0X2lkeCwgY2hhcl91ICp2YWx1ZSwgaW50IG9wdF9mbGFncywgY2hhciAqZXJyYnVmLCBpbnQgZXJyYnVmbGVuKTsKIGNoYXIgKmRpZF9zZXRfYW1iaXdpZHRoKG9wdHNldF9UICphcmdzKTsKIGNoYXIgKmRpZF9zZXRfYmFja2dyb3VuZChvcHRzZXRfVCAqYXJncyk7CiBjaGFyICpkaWRfc2V0X2JhY2tzcGFjZShvcHRzZXRfVCAqYXJncyk7CkBAIC0xMjEsNyArMTIxLDcgQEAKIGNoYXIgKmRpZF9zZXRfd2lsZG9wdGlvbnMob3B0c2V0X1QgKmFyZ3MpOwogY2hhciAqZGlkX3NldF93aW5hbHRrZXlzKG9wdHNldF9UICphcmdzKTsKIGNoYXIgKmRpZF9zZXRfd2luY29sb3Iob3B0c2V0X1QgKmFyZ3MpOwotY2hhciAqZGlkX3NldF9zdHJpbmdfb3B0aW9uKGludCBvcHRfaWR4LCBjaGFyX3UgKip2YXJwLCBjaGFyX3UgKm9sZHZhbCwgY2hhcl91ICp2YWx1ZSwgY2hhciAqZXJyYnVmLCBpbnQgb3B0X2ZsYWdzLCBzZXRfb3BfVCBvcCwgaW50ICp2YWx1ZV9jaGVja2VkKTsKK2NoYXIgKmRpZF9zZXRfc3RyaW5nX29wdGlvbihpbnQgb3B0X2lkeCwgY2hhcl91ICoqdmFycCwgY2hhcl91ICpvbGR2YWwsIGNoYXJfdSAqdmFsdWUsIGNoYXIgKmVycmJ1ZiwgaW50IGVycmJ1ZmxlbiwgaW50IG9wdF9mbGFncywgc2V0X29wX1Qgb3AsIGludCAqdmFsdWVfY2hlY2tlZCk7CiBpbnQgZXhwYW5kX3NldF9hbWJpd2lkdGgob3B0ZXhwYW5kX1QgKmFyZ3MsIGludCAqbnVtTWF0Y2hlcywgY2hhcl91ICoqKm1hdGNoZXMpOwogaW50IGV4cGFuZF9zZXRfYmFja2dyb3VuZChvcHRleHBhbmRfVCAqYXJncywgaW50ICpudW1NYXRjaGVzLCBjaGFyX3UgKioqbWF0Y2hlcyk7CiBpbnQgZXhwYW5kX3NldF9iYWNrc3BhY2Uob3B0ZXhwYW5kX1QgKmFyZ3MsIGludCAqbnVtTWF0Y2hlcywgY2hhcl91ICoqKm1hdGNoZXMpOwpkaWZmIC0tZ2l0IGEvc3JjL3N0cnVjdHMuaCBiL3NyYy9zdHJ1Y3RzLmgKaW5kZXggNGUwODFiOC4uNmQ5ZGNiYiAxMDA2NDQKLS0tIGEvc3JjL3N0cnVjdHMuaAorKysgYi9zcmMvc3RydWN0cy5oCkBAIC00OTY4LDYgKzQ5NjgsOCBAQAogICAgIC8vIGlzIHBhcmFtZXRlcml6ZWQsIHRoZW4gdGhlICJvc19lcnJidWYiIGJ1ZmZlciBpcyB1c2VkIHRvIHN0b3JlIHRoZSBlcnJvcgogICAgIC8vIG1lc3NhZ2UgKHdoZW4gaXQgaXMgbm90IE5VTEwpLgogICAgIGNoYXIJKm9zX2VycmJ1ZjsKKyAgICAvLyBsZW5ndGggb2YgdGhlIGVycm9yIGJ1ZmZlcgorICAgIGludAkJb3NfZXJyYnVmbGVuOwogfSBvcHRzZXRfVDsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL2NyYXNoL3BvY19kaWRfc2V0X2xhbmdtYXAgYi9zcmMvdGVzdGRpci9jcmFzaC9wb2NfZGlkX3NldF9sYW5nbWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NzE0NWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdGRpci9jcmFzaC9wb2NfZGlkX3NldF9sYW5nbWFwCkBAIC0wLDAgKzEgQEAKK3NlIGxtYXA9sHj/N3NpbDtkcmxtYXA9sHj/EBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA3c2lsO2RybW86IHBtMzELMyIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvdGVzdGRpci90ZXN0X2NyYXNoLnZpbSBiL3NyYy90ZXN0ZGlyL3Rlc3RfY3Jhc2gudmltCmluZGV4IGVlZjE3MzEuLjFkNGY0MzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3RfY3Jhc2gudmltCisrKyBiL3NyYy90ZXN0ZGlyL3Rlc3RfY3Jhc2gudmltCkBAIC0xNDIsNiArMTQyLDEzIEBACiAgICAgXCAnICAmJiBlY2hvICJjcmFzaCAzOiBbT0tdIiA+PiAnLi4gcmVzdWx0IC4uICJcPGNyPiIpCiAgIGNhbGwgVGVybVdhaXQoYnVmLCAxNTApCiAKKyAgbGV0IGZpbGUgPSAnY3Jhc2gvcG9jX2RpZF9zZXRfbGFuZ21hcCcKKyAgbGV0IGNtbl9hcmdzID0gIiVzIC11IE5PTkUgLWkgTk9ORSAtbiAtWCAtbSAtbiAtZSAtcyAtUyAlcyAtYyAnOnFhISciCisgIGxldCBhcmdzID0gcHJpbnRmKGNtbl9hcmdzLCB2aW0sIGZpbGUpCisgIGNhbGwgdGVybV9zZW5ka2V5cyhidWYsIGFyZ3MgLi4KKyAgICBcICcgOyBlY2hvICJjcmFzaCA0OiBbT0tdIiA+PiAnLi4gcmVzdWx0IC4uICJcPGNyPiIpCisgIGNhbGwgVGVybVdhaXQoYnVmLCAxNTApCisKICAgIiBjbGVhbiB1cAogICBleGUgYnVmIC4uICJidyEiCiAKQEAgLTE1MSw2ICsxNTgsNyBAQAogICAgICAgXCAnY3Jhc2ggMTogW09LXScsCiAgICAgICBcICdjcmFzaCAyOiBbT0tdJywKICAgICAgIFwgJ2NyYXNoIDM6IFtPS10nLAorICAgICAgXCAnY3Jhc2ggNDogW09LXScsCiAgICAgICBcIF0KIAogICBjYWxsIGFzc2VydF9lcXVhbChleHBlY3RlZCwgZ2V0bGluZSgxLCAnJCcpKQpkaWZmIC0tZ2l0IGEvc3JjL3ZlcnNpb24uYyBiL3NyYy92ZXJzaW9uLmMKaW5kZXggZWNiNWMyMi4uMjgzMjVhNyAxMDA2NDQKLS0tIGEvc3JjL3ZlcnNpb24uYworKysgYi9zcmMvdmVyc2lvbi5jCkBAIC03MDUsNiArNzA1LDggQEAKIHN0YXRpYyBpbnQgaW5jbHVkZWRfcGF0Y2hlc1tdID0KIHsgICAvKiBBZGQgbmV3IHBhdGNoIG51bWJlciBiZWxvdyB0aGlzIGxpbmUgKi8KIC8qKi8KKyAgICAyMTQyLAorLyoqLwogICAgIDIxNDEsCiAvKiovCiAgICAgMjE0MCwK