ZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci93YXRjaGRvZy93ODM2OTdoZl93ZHQuYyBiL2RyaXZlcnMvY2hhci93YXRjaGRvZy93ODM2OTdoZl93ZHQuYwppbmRleCA0ZjgxOTQzLi4xMmJkY2FiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvd2F0Y2hkb2cvdzgzNjk3aGZfd2R0LmMKKysrIGIvZHJpdmVycy9jaGFyL3dhdGNoZG9nL3c4MzY5N2hmX3dkdC5jCkBAIC02LDcgKzYsNyBAQAogICoJQmFzZWQgb24gdzgzNjI3aGZfd2R0LmMgYWR2YW50ZWNod2R0LmMgd2hpY2ggaXMgYmFzZWQgb24gd2R0LmMuCiAgKglPcmlnaW5hbCBjb3B5cmlnaHQgbWVzc2FnZXM6CiAgKgotICogICAgIChjKSBDb3B5cmlnaHQgMjAwMyBQ4WRyYWlnIEJyYWR5IDxQQGRyYWlnQnJhZHkuY29tPgorICoJKGMpIENvcHlyaWdodCAyMDAzIFDhZHJhaWcgQnJhZHkgPFBAZHJhaWdCcmFkeS5jb20+CiAgKgogICoJKGMpIENvcHlyaWdodCAyMDAwLTIwMDEgTWFyZWsgTWljaGFsa2lld2ljeiA8bWFyZWttQGxpbnV4Lm9yZy5wbD4KICAqCkBAIC05NiwxNiArOTYsMTYgQEAKIAogCXc4MzY5N2hmX3NlbGVjdF93ZF9yZWdpc3RlcigpOwogCi0Jb3V0Yl9wKDB4RjMsIFdEVF9FRkVSKTsgLyogU2VsZWN0IENSRjMgKi8KKwlvdXRiX3AoMHhGMywgV0RUX0VGRVIpOwkvKiBTZWxlY3QgQ1JGMyAqLwogCiAJdD1pbmJfcChXRFRfRUZEUik7CS8qIHJlYWQgQ1JGMyAqLwogCWlmICh0ICE9IDApIHsKIAkJcHJpbnRrIChLRVJOX0lORk8gUEZYICJXYXRjaGRvZyBhbHJlYWR5IHJ1bm5pbmcuIFJlc2V0dGluZyB0aW1lb3V0IHRvICVkIHNlY1xuIiwgdGltZW91dCk7CiAJCW91dGJfcCh0aW1lb3V0LCBXRFRfRUZEUik7CS8qIFdyaXRlIGJhY2sgdG8gQ1JGMyAqLwogCX0KLQlvdXRiX3AoMHhGNCwgV0RUX0VGRVIpOyAvKiBTZWxlY3QgQ1JGNCAqLwotCXQ9aW5iX3AoV0RUX0VGRFIpOyAgICAgIC8qIHJlYWQgQ1JGNCAqLwotCXQmPX4weDBDOyAgICAgICAgICAgICAgIC8qIHNldCBzZWNvbmQgbW9kZSAmIGRpc2FibGUga2V5Ym9hcmQgdHVybmluZyBvZmYgd2F0Y2hkb2cgKi8KKwlvdXRiX3AoMHhGNCwgV0RUX0VGRVIpOwkvKiBTZWxlY3QgQ1JGNCAqLworCXQ9aW5iX3AoV0RUX0VGRFIpOwkvKiByZWFkIENSRjQgKi8KKwl0Jj1+MHgwQzsJCS8qIHNldCBzZWNvbmQgbW9kZSAmIGRpc2FibGUga2V5Ym9hcmQgdHVybmluZyBvZmYgd2F0Y2hkb2cgKi8KIAlvdXRiX3AodCwgV0RUX0VGRFIpOwkvKiBXcml0ZSBiYWNrIHRvIENSRjQgKi8KIAogCXc4MzY5N2hmX3Vuc2VsZWN0X3dkX3JlZ2lzdGVyKCk7CkBAIC0xODcsNTEgKzE4Nyw1MSBAQAogCiAJc3dpdGNoIChjbWQpIHsKIAljYXNlIFdESU9DX0dFVFNVUFBPUlQ6Ci0JICBpZiAoY29weV90b191c2VyKGFyZ3AsICZpZGVudCwgc2l6ZW9mKGlkZW50KSkpCi0JICAgIHJldHVybiAtRUZBVUxUOwotCSAgYnJlYWs7CisJCWlmIChjb3B5X3RvX3VzZXIoYXJncCwgJmlkZW50LCBzaXplb2YoaWRlbnQpKSkKKwkJCXJldHVybiAtRUZBVUxUOworCQlicmVhazsKIAogCWNhc2UgV0RJT0NfR0VUU1RBVFVTOgogCWNhc2UgV0RJT0NfR0VUQk9PVFNUQVRVUzoKLQkgIHJldHVybiBwdXRfdXNlcigwLCBwKTsKKwkJcmV0dXJuIHB1dF91c2VyKDAsIHApOwogCiAJY2FzZSBXRElPQ19LRUVQQUxJVkU6Ci0JICB3ZHRfcGluZygpOwotCSAgYnJlYWs7CisJCXdkdF9waW5nKCk7CisJCWJyZWFrOwogCiAJY2FzZSBXRElPQ19TRVRUSU1FT1VUOgotCSAgaWYgKGdldF91c2VyKG5ld190aW1lb3V0LCBwKSkKLQkJICByZXR1cm4gLUVGQVVMVDsKLQkgIGlmICh3ZHRfc2V0X2hlYXJ0YmVhdChuZXdfdGltZW91dCkpCi0JCSAgcmV0dXJuIC1FSU5WQUw7Ci0JICB3ZHRfcGluZygpOwotCSAgLyogRmFsbCAqLworCQlpZiAoZ2V0X3VzZXIobmV3X3RpbWVvdXQsIHApKQorCQkJcmV0dXJuIC1FRkFVTFQ7CisJCWlmICh3ZHRfc2V0X2hlYXJ0YmVhdChuZXdfdGltZW91dCkpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJd2R0X3BpbmcoKTsKKwkJLyogRmFsbCAqLwogCiAJY2FzZSBXRElPQ19HRVRUSU1FT1VUOgotCSAgcmV0dXJuIHB1dF91c2VyKHRpbWVvdXQsIHApOworCQlyZXR1cm4gcHV0X3VzZXIodGltZW91dCwgcCk7CiAKIAljYXNlIFdESU9DX1NFVE9QVElPTlM6CiAJewotCSAgaW50IG9wdGlvbnMsIHJldHZhbCA9IC1FSU5WQUw7CisJCWludCBvcHRpb25zLCByZXR2YWwgPSAtRUlOVkFMOwogCi0JICBpZiAoZ2V0X3VzZXIob3B0aW9ucywgcCkpCi0JICAgIHJldHVybiAtRUZBVUxUOworCQlpZiAoZ2V0X3VzZXIob3B0aW9ucywgcCkpCisJCQlyZXR1cm4gLUVGQVVMVDsKIAotCSAgaWYgKG9wdGlvbnMgJiBXRElPU19ESVNBQkxFQ0FSRCkgewotCSAgICB3ZHRfZGlzYWJsZSgpOwotCSAgICByZXR2YWwgPSAwOwotCSAgfQorCQlpZiAob3B0aW9ucyAmIFdESU9TX0RJU0FCTEVDQVJEKSB7CisJCQl3ZHRfZGlzYWJsZSgpOworCQkJcmV0dmFsID0gMDsKKwkJfQogCi0JICBpZiAob3B0aW9ucyAmIFdESU9TX0VOQUJMRUNBUkQpIHsKLQkgICAgd2R0X3BpbmcoKTsKLQkgICAgcmV0dmFsID0gMDsKLQkgIH0KKwkJaWYgKG9wdGlvbnMgJiBXRElPU19FTkFCTEVDQVJEKSB7CisJCQl3ZHRfcGluZygpOworCQkJcmV0dmFsID0gMDsKKwkJfQogCi0JICByZXR1cm4gcmV0dmFsOworCQlyZXR1cm4gcmV0dmFsOwogCX0KIAogCWRlZmF1bHQ6Ci0JICByZXR1cm4gLUVOT1RUWTsKKwkJcmV0dXJuIC1FTk9UVFk7CiAJfQogCXJldHVybiAwOwogfQpAQCAtMjU1LDcgKzI1NSw3IEBACiAJaWYgKGV4cGVjdF9jbG9zZSA9PSA0MikgewogCQl3ZHRfZGlzYWJsZSgpOwogCX0gZWxzZSB7Ci0JCXByaW50ayhLRVJOX0NSSVQgUEZYICJVbmV4cGVjdGVkIGNsb3NlLCBub3Qgc3RvcHBpbmcgd2F0Y2hkb2chXG4iKTsKKwkJcHJpbnRrIChLRVJOX0NSSVQgUEZYICJVbmV4cGVjdGVkIGNsb3NlLCBub3Qgc3RvcHBpbmcgd2F0Y2hkb2chXG4iKTsKIAkJd2R0X3BpbmcoKTsKIAl9CiAJZXhwZWN0X2Nsb3NlID0gMDsKQEAgLTMxMyw3ICszMTMsNyBAQAogCiAJc3Bpbl9sb2NrX2luaXQoJmlvX2xvY2spOwogCi0JcHJpbnRrKEtFUk5fSU5GTyAiV0RUIGRyaXZlciBmb3IgdGhlIFdpbmJvbmQoVE0pIFc4MzY5N0hGIFN1cGVyIEkvTyBjaGlwIGluaXRpYWxpc2luZy5cbiIpOworCXByaW50ayAoS0VSTl9JTkZPICJXRFQgZHJpdmVyIGZvciB0aGUgV2luYm9uZChUTSkgVzgzNjk3SEYgU3VwZXIgSS9PIGNoaXAgaW5pdGlhbGlzaW5nLlxuIik7CiAKIAlpZiAod2R0X3NldF9oZWFydGJlYXQodGltZW91dCkpIHsKIAkJd2R0X3NldF9oZWFydGJlYXQoV0FUQ0hET0dfVElNRU9VVCk7Cg==