ZGlmZiAtLWdpdCBhL2NoYW5nZWxvZy55YW1sIGIvY2hhbmdlbG9nLnlhbWwKaW5kZXggNmQzOTViYy4uMzdhOWM2ZCAxMDA2NDQKLS0tIGEvY2hhbmdlbG9nLnlhbWwKKysrIGIvY2hhbmdlbG9nLnlhbWwKQEAgLTg5LDYgKzg5LDkgQEAKICAgICAgIC0gdGl0bGU6IEFjdGl2aXR5IE1vbml0b3JzIEV4dGVuc2lvbiAoRkVBVF9BTVUpCiAgICAgICAgIHNjb3BlOiBhbXUKIAorICAgICAgLSB0aXRsZTogQ29uZmlkZW50aWFsIENvbXB1dGUgQXJjaGl0ZWN0dXJlIChDQ0EpCisgICAgICAgIHNjb3BlOiBjY2EKKwogICAgICAgLSB0aXRsZTogU3VwcG9ydCBmb3IgdGhlIGBIQ1JYX0VMMmAgcmVnaXN0ZXIgKEZFQVRfSENYKQogICAgICAgICBzY29wZTogaGN4CiAKZGlmZiAtLWdpdCBhL2RvY3MvZGVzaWduL2NwdS1zcGVjaWZpYy1idWlsZC1tYWNyb3MucnN0IGIvZG9jcy9kZXNpZ24vY3B1LXNwZWNpZmljLWJ1aWxkLW1hY3Jvcy5yc3QKaW5kZXggYmFkZmZmOS4uNjAzMTNkNSAxMDA2NDQKLS0tIGEvZG9jcy9kZXNpZ24vY3B1LXNwZWNpZmljLWJ1aWxkLW1hY3Jvcy5yc3QKKysrIGIvZG9jcy9kZXNpZ24vY3B1LXNwZWNpZmljLWJ1aWxkLW1hY3Jvcy5yc3QKQEAgLTYzNCw5ICs2MzQsMTcgQEAKICAgIFRoaXMgaXMgdXNlZCB0byBjb250cm9sIGhvdyB0aGUgTExfQ0FDSEUqIFBNVSBldmVudHMgY291bnQuCiAgICBEZWZhdWx0IHZhbHVlIGlzIDAgKERpc2FibGVkKS4KIAorR0lDIEVycmF0YSBXb3JrYXJvdW5kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSAgYGBHSUM2MDBfRVJSQVRBX1dBXzIzODQzNzRgYDogVGhpcyBmbGFnIGFwcGxpZXMgcGFydCAyIG9mIGVycmF0YSAyMzg0Mzc0CisgICB3b3JrYXJvdW5kIGZvciB0aGUgYWZmZWN0ZWQgR0lDNjAwIGFuZCBHSUM2MDAtQUUgaW1wbGVtZW50YXRpb25zLiBJdCBhcHBsaWVzCisgICB0byBpbXBsZW1lbnRhdGlvbnMgb2YgR0lDNjAwIGFuZCBHSUM2MDAtQUUgd2l0aCByZXZpc2lvbnMgbGVzcyB0aGFuIG9yIGVxdWFsCisgICB0byByMXA2IGFuZCByMHAyIHJlc3BlY3RpdmVseS4gSWYgdGhlIHBsYXRmb3JtIHNldHMgR0lDVjNfU1VQUE9SVF9HSUM2MDAsCisgICB0aGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkOyBvdGhlcndpc2UsIGl0IGlzIDAgKERpc2FibGVkKS4KKwogLS0tLS0tLS0tLS0tLS0KIAotKkNvcHlyaWdodCAoYykgMjAxNC0yMDIxLCBBcm0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLioKKypDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4qCiAKIC4uIF9DVkUtMjAxNy01NzE1OiBodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMTctNTcxNQogLi4gX0NWRS0yMDE4LTM2Mzk6IGh0dHA6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DVkUtMjAxOC0zNjM5CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FybS9naWMvdjMvZ2ljLXgwMC5jIGIvZHJpdmVycy9hcm0vZ2ljL3YzL2dpYy14MDAuYwppbmRleCBhYWVmNDg1Li43NWViNjlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FybS9naWMvdjMvZ2ljLXgwMC5jCisrKyBiL2RyaXZlcnMvYXJtL2dpYy92My9naWMteDAwLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoYykgMjAyMCwgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKQEAgLTQyLDYgKzQyLDggQEAKICNkZWZpbmUgUFdSUl9PTgkJCQkoMFUgPDwgUFdSUl9SRFBEX1NISUZUKQogI2RlZmluZSBQV1JSX09GRgkJCSgxVSA8PCBQV1JSX1JEUERfU0hJRlQpCiAKK3N0YXRpYyBib29sIGdpYzYwMF9lcnJhdGFfd2FfMjM4NDM3NCBfX3VudXNlZDsKKwogI2lmIEdJQ1YzX1NVUFBPUlRfR0lDNjAwCiAKIC8qIEdJQy02MDAvNzAwIHNwZWNpZmljIGFjY2Vzc29yIGZ1bmN0aW9ucyAqLwpAQCAtMTcwLDMgKzE3Miw2MCBAQAogCX0KICNlbmRpZgogfQorCisjaWYgR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQXBwbHkgcGFydCAyIG9mIHdvcmthcm91bmQgZm9yIGVycmF0YS0yMzg0Mzc0IGFzIHBlciBTREVOOgorICogaHR0cHM6Ly9kZXZlbG9wZXIuYXJtLmNvbS9kb2N1bWVudGF0aW9uL3NkZW44OTI2MDEvbGF0ZXN0LworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgZ2ljdjNfYXBwbHlfZXJyYXRhX3dhXzIzODQzNzQodWludHB0cl90IGdpY3JfYmFzZSkKK3sKKwlpZiAoZ2ljNjAwX2VycmF0YV93YV8yMzg0Mzc0KSB7CisJCXVpbnQzMl90IGdpY3JfY3Rscl92YWwgPSBnaWNyX3JlYWRfY3RscihnaWNyX2Jhc2UpOworCisJCWdpY3Jfd3JpdGVfY3RscihnaWNyX2Jhc2UsIGdpY3JfY3Rscl92YWwgfAorCQkJCShHSUNSX0NUTFJfRFBHMF9CSVQgfCBHSUNSX0NUTFJfRFBHMU5TX0JJVCB8CisJCQkJR0lDUl9DVExSX0RQRzFTX0JJVCkpOworCQlnaWNyX3dyaXRlX2N0bHIoZ2ljcl9iYXNlLCBnaWNyX2N0bHJfdmFsICYKKwkJCQl+KEdJQ1JfQ1RMUl9EUEcwX0JJVCB8IEdJQ1JfQ1RMUl9EUEcxTlNfQklUIHwKKwkJCQkgIEdJQ1JfQ1RMUl9EUEcxU19CSVQpKTsKKwl9Cit9CisjZW5kaWYgLyogR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0ICovCisKK3ZvaWQgZ2ljdjNfY2hlY2tfZXJyYXRhc19hcHBsaWVzKHVpbnRwdHJfdCBnaWNkX2Jhc2UpCit7CisJdW5zaWduZWQgaW50IGdpY19wcm9kX2lkOworCXVpbnQ4X3QgZ2ljX3JldjsKKworCWFzc2VydChnaWNkX2Jhc2UgIT0gMFVMKTsKKworCWdpY3YzX2dldF9jb21wb25lbnRfcHJvZGlkX3JldihnaWNkX2Jhc2UsICZnaWNfcHJvZF9pZCwgJmdpY19yZXYpOworCisJLyoKKwkgKiBUaGlzIHdvcmthcm91bmQgYXBwbGljYWJsZSBvbmx5IHRvIEdJQzYwMCBhbmQgR0lDNjAwQUUgcHJvZHVjdHMgd2l0aAorCSAqIHJldmlzaW9uIGxlc3MgdGhhbiByMXA2IGFuZCByMHAyIHJlc3BlY3RpdmVseS4KKwkgKiBBcyBwZXIgR0lDNjAwL0dJQzYwMEFFIHNwZWNpZmljYXRpb24gLQorCSAqIHIxcDYgPSAweDE3ID0+IEdJQ0RfSUlEUlsxOToxMl0KKwkgKiByMHAyID0gMHgwNCA9PiBHSUNEX0lJRFJbMTk6MTJdCisJICovCisJaWYgKChnaWNfcHJvZF9pZCA9PSBHSUNfUFJPRFVDVF9JRF9HSUM2MDApIHx8CisJCSAgICAoZ2ljX3Byb2RfaWQgPT0gR0lDX1BST0RVQ1RfSURfR0lDNjAwQUUpKSB7CisJCWlmICgoKGdpY19wcm9kX2lkID09IEdJQ19QUk9EVUNUX0lEX0dJQzYwMCkgJiYKKwkJICAgICAoZ2ljX3JldiA8PSBHSUNfUkVWKEdJQ19WQVJJQU5UX1IxLCBHSUNfUkVWX1A2KSkpIHx8CisJCSAgICAgKChnaWNfcHJvZF9pZCA9PSBHSUNfUFJPRFVDVF9JRF9HSUM2MDBBRSkgJiYKKwkJICAgICAoZ2ljX3JldiA8PSBHSUNfUkVWKEdJQ19WQVJJQU5UX1IwLCBHSUNfUkVWX1AyKSkpKSB7CisjaWYgR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0CisJCQlnaWM2MDBfZXJyYXRhX3dhXzIzODQzNzQgPSB0cnVlOworCQkJVkVSQk9TRSgiJXMgYXBwbGllc1xuIiwKKwkJCQkiR0lDNjAwL0dJQzYwMEFFIGVycmF0YSB3b3JrYXJvdW5kIDIzODQzNzQiKTsKKyNlbHNlCisJCQlXQVJOKCIlcyBtaXNzaW5nXG4iLAorCQkJICAgICAiR0lDNjAwL0dJQzYwMEFFIGVycmF0YSB3b3JrYXJvdW5kIDIzODQzNzQiKTsKKyNlbmRpZiAvKiBHSUM2MDBfRVJSQVRBX1dBXzIzODQzNzQgKi8KKwkJfSBlbHNlIHsKKwkJCVZFUkJPU0UoIiVzIG5vdCBhcHBsaWVzXG4iLAorCQkJCSJHSUM2MDAvR0lDNjAwQUUgZXJyYXRhIHdvcmthcm91bmQgMjM4NDM3NCIpOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzLm1rIGIvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzLm1rCmluZGV4IGQ3ZTM1MzYuLjFkMjBmZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXJtL2dpYy92My9naWN2My5taworKysgYi9kcml2ZXJzL2FybS9naWMvdjMvZ2ljdjMubWsKQEAgLTEsNSArMSw1IEBACiAjCi0jIENvcHlyaWdodCAoYykgMjAxMy0yMDIwLCBBcm0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChjKSAyMDIxLCBOVklESUEgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKQEAgLTEyLDYgKzEyLDcgQEAKIEdJQ1YzX09WRVJSSURFX0RJU1RJRl9QV1JfT1BTCT89CTAKIEdJQ19FTkFCTEVfVjRfRVhUTgkJPz0JMAogR0lDX0VYVF9JTlRJRAkJCT89CTAKK0dJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NAk/PQkke0dJQ1YzX1NVUFBPUlRfR0lDNjAwfQogCiBHSUNWM19TT1VSQ0VTCSs9CWRyaXZlcnMvYXJtL2dpYy92My9naWN2M19tYWluLmMJCVwKIAkJCWRyaXZlcnMvYXJtL2dpYy92My9naWN2M19oZWxwZXJzLmMJXApAQCAtNDcsMyArNDgsNyBAQAogIyBTZXQgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgUFBJIGFuZCBTUEkgcmFuZ2UKICQoZXZhbCAkKGNhbGwgYXNzZXJ0X2Jvb2xlYW4sR0lDX0VYVF9JTlRJRCkpCiAkKGV2YWwgJChjYWxsIGFkZF9kZWZpbmUsR0lDX0VYVF9JTlRJRCkpCisKKyMgU2V0IGVycmF0YSB3b3JrYXJvdW5kIGZvciBHSUM2MDAvR0lDNjAwQUUKKyQoZXZhbCAkKGNhbGwgYXNzZXJ0X2Jvb2xlYW4sR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0KSkKKyQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxHSUM2MDBfRVJSQVRBX1dBXzIzODQzNzQpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzX2hlbHBlcnMuYyBiL2RyaXZlcnMvYXJtL2dpYy92My9naWN2M19oZWxwZXJzLmMKaW5kZXggNzUzZDk5NS4uZjM4NTJkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzX2hlbHBlcnMuYworKysgYi9kcml2ZXJzL2FybS9naWMvdjMvZ2ljdjNfaGVscGVycy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC00MDgsMyArNDA4LDM0IEBACiAKIAlyZXR1cm4gcGFydF9pZDsKIH0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gcHJvZHVjdCBJRCBhbmQgcmV2aXNpb24gb2YgR0lDCisgKiBAZ2ljZF9iYXNlOiAgIGJhc2UgYWRkcmVzcyBvZiB0aGUgR0lDIGRpc3RyaWJ1dG9yCisgKiBAZ2ljX3Byb2RfaWQ6IHJldHJpZXZlZCBwcm9kdWN0IGlkIG9mIEdJQworICogQGdpY19yZXY6ICAgICByZXRyaWV2ZWQgcmV2aXNpb24gb2YgR0lDCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBnaWN2M19nZXRfY29tcG9uZW50X3Byb2RpZF9yZXYoY29uc3QgdWludHB0cl90IGdpY2RfYmFzZSwKKwkJCQkgICAgdW5zaWduZWQgaW50ICpnaWNfcHJvZF9pZCwKKwkJCQkgICAgdWludDhfdCAqZ2ljX3JldikKK3sKKwl1bnNpZ25lZCBpbnQgZ2ljZF9paWRyOworCXVpbnQ4X3QgZ2ljX3ZhcmlhbnQ7CisKKwlnaWNkX2lpZHIgPSBnaWNkX3JlYWRfaWlkcihnaWNkX2Jhc2UpOworCSpnaWNfcHJvZF9pZCA9IGdpY2RfaWlkciA+PiBJSURSX1BST0RVQ1RfSURfU0hJRlQ7CisJKmdpY19wcm9kX2lkICY9IElJRFJfUFJPRFVDVF9JRF9NQVNLOworCisJZ2ljX3ZhcmlhbnQgPSBnaWNkX2lpZHIgPj4gSUlEUl9WQVJJQU5UX1NISUZUOworCWdpY192YXJpYW50ICY9IElJRFJfVkFSSUFOVF9NQVNLOworCisJKmdpY19yZXYgPSBnaWNkX2lpZHIgPj4gSUlEUl9SRVZfU0hJRlQ7CisJKmdpY19yZXYgJj0gSUlEUl9SRVZfTUFTSzsKKworCS8qCisJICogcGFjayBnaWMgdmFyaWFudCBhbmQgZ2ljX3JldiBpbiAxIGJ5dGUKKwkgKiBnaWNfcmV2ID0gZ2ljX3ZhcmlhbnRbNzo0XSBhbmQgZ2ljX3JldlswOjNdCisJICovCisJKmdpY19yZXYgPSAqZ2ljX3JldiB8IGdpY192YXJpYW50IDw8IDB4NDsKKworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzX21haW4uYyBiL2RyaXZlcnMvYXJtL2dpYy92My9naWN2M19tYWluLmMKaW5kZXggNTNhOGZhZS4uOGVhZDQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzX21haW4uYworKysgYi9kcml2ZXJzL2FybS9naWMvdjMvZ2ljdjNfbWFpbi5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0xNjksNiArMTY5LDggQEAKIAlmbHVzaF9kY2FjaGVfcmFuZ2UoKHVpbnRwdHJfdClnaWN2M19kcml2ZXJfZGF0YSwKIAkJc2l6ZW9mKCpnaWN2M19kcml2ZXJfZGF0YSkpOwogI2VuZGlmCisJZ2ljdjNfY2hlY2tfZXJyYXRhc19hcHBsaWVzKHBsYXRfZHJpdmVyX2RhdGEtPmdpY2RfYmFzZSk7CisKIAlJTkZPKCJHSUN2JXUgd2l0aCVzIGxlZ2FjeSBzdXBwb3J0IGRldGVjdGVkLlxuIiwgZ2ljX3ZlcnNpb24sCiAJCQkJKGdpY3YyX2NvbXBhdCA9PSAwVSkgPyAiIiA6ICJvdXQiKTsKIAlJTkZPKCJBUk0gR0lDdiV1IGRyaXZlciBpbml0aWFsaXplZCBpbiBFTDNcbiIsIGdpY192ZXJzaW9uKTsKQEAgLTM2Miw5ICszNjQsMTcgQEAKIAkvKiBBZGQgRFNCIHRvIGVuc3VyZSB2aXNpYmlsaXR5IG9mIFN5c3RlbSByZWdpc3RlciB3cml0ZXMgKi8KIAlkc2IoKTsKIAotCS8qIE1hcmsgdGhlIGNvbm5lY3RlZCBjb3JlIGFzIGFzbGVlcCAqLwogCWdpY3JfYmFzZSA9IGdpY3YzX2RyaXZlcl9kYXRhLT5yZGlzdGlmX2Jhc2VfYWRkcnNbcHJvY19udW1dOwotCWFzc2VydChnaWNyX2Jhc2UgIT0gMFUpOworCWFzc2VydChnaWNyX2Jhc2UgIT0gMFVMKTsKKworCS8qCisJICogZHNiKCkgYWxyZWFkeSBpc3N1ZWQgcHJldmlvdXNseSBhZnRlciBjbGVhcmluZyB0aGUgQ1BVIGdyb3VwCisJICogZW5hYmxlZCwgYXBwbHkgYmVsb3cgd29ya2Fyb3VuZCB0byB0b2dnbGUgdGhlICJEUEcqIgorCSAqIGJpdHMgb2YgR0lDUl9DVExSIHJlZ2lzdGVyIGZvciB1bmJsb2NraW5nIGV2ZW50LgorCSAqLworCWdpY3YzX2FwcGx5X2VycmF0YV93YV8yMzg0Mzc0KGdpY3JfYmFzZSk7CisKKwkvKiBNYXJrIHRoZSBjb25uZWN0ZWQgY29yZSBhcyBhc2xlZXAgKi8KIAlnaWN2M19yZGlzdGlmX21hcmtfY29yZV9hc2xlZXAoZ2ljcl9iYXNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdXRoL2NjYS9jb3QuYyBiL2RyaXZlcnMvYXV0aC9jY2EvY290LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmMzA4NwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvYXV0aC9jY2EvY290LmMKQEAgLTAsMCArMSw2NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKKyAqLworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlIDxkcml2ZXJzL2F1dGgvYXV0aF9tb2QuaD4KKyNpbmNsdWRlIE1CRURUTFNfQ09ORklHX0ZJTEUKKyNpbmNsdWRlIDx0b29sc19zaGFyZS9jY2Ffb2lkLmg+CisKKyNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KKworLyoKKyAqIEFsbG9jYXRlIHN0YXRpYyBidWZmZXJzIHRvIHN0b3JlIHRoZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIGV4dHJhY3RlZCBmcm9tCisgKiB0aGUgY2VydGlmaWNhdGVzLgorICovCitzdGF0aWMgdW5zaWduZWQgY2hhciBmd19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHRiX2Z3X2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciB0Yl9md19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGh3X2NvbmZpZ19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgc29jX2Z3X2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciBzb2NfZndfY29uZmlnX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciBybW1faGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKKworI2lmZGVmIElNQUdFX0JMMgorc3RhdGljIHVuc2lnbmVkIGNoYXIgbnRfd29ybGRfYmxfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHRvc19md19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgdG9zX2Z3X2NvbmZpZ19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgbnRfZndfY29uZmlnX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CisjaWYgZGVmaW5lZChTUERfc3BtZCkKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNwX3BrZ19oYXNoX2J1ZltNQVhfU1BfSURTXVtIQVNIX0RFUl9MRU5dOworI2VuZGlmIC8qIFNQRF9zcG1kICovCisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIGNvcmVfc3dkX3BrX2J1ZltQS19ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHBsYXRfcGtfYnVmW1BLX0RFUl9MRU5dOworI2VuZGlmIC8qIElNQUdFX0JMMiAqLworCisvKgorICogUGFyYW1ldGVyIHR5cGUgZGVzY3JpcHRvcnMuCisgKi8KK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHRydXN0ZWRfbnZfY3RyID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fTlZfQ1RSLCBUUlVTVEVEX0ZXX05WQ09VTlRFUl9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc3ViamVjdF9wayA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1BVQl9LRVksIDApOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc2lnID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fU0lHLCAwKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNpZ19hbGcgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9TSUdfQUxHLCAwKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHJhd19kYXRhID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fUkFXX0RBVEEsIDApOworCitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCB0Yl9md19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgVFJVU1RFRF9CT09UX0ZXX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHRiX2Z3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBod19jb25maWdfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIEhXX0NPTkZJR19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBmd19jb25maWdfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIEZXX0NPTkZJR19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzb2NfZndfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFNPQ19BUF9GV19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzb2NfZndfY29uZmlnX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTT0NfRldfQ09ORklHX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHJtbV9oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgUk1NX0hBU0hfT0lEKTsKKworI2lmZGVmIElNQUdFX0JMMgorc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgbm9uX3RydXN0ZWRfbnZfY3RyID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fTlZfQ1RSLCBOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfT0lEKTsKKworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgcHJvdF9wayA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1BVQl9LRVksIFBST1RfUEtfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHN3ZF9yb3RfcGsgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9QVUJfS0VZLCBTV0RfUk9UX1BLX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBjb3JlX3N3ZF9wayA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1BVQl9LRVksIENPUkVfU1dEX1BLX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBwbGF0X3BrID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fUFVCX0tFWSwgUExBVF9QS19PSUQpOworCitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCB0b3NfZndfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFRSVVNURURfT1NfRldfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdG9zX2Z3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgbnRfd29ybGRfYmxfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIE5PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgbnRfZndfY29uZmlnX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9PSUQpOworI2lmIGRlZmluZWQoU1BEX3NwbWQpCitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzcF9wa2cxX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTUF9QS0cxX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNwX3BrZzJfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFNQX1BLRzJfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc3BfcGtnM19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU1BfUEtHM19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzcF9wa2c0X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTUF9QS0c0X0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNwX3BrZzVfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFNQX1BLRzVfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc3BfcGtnNl9oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU1BfUEtHNl9IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzcF9wa2c3X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTUF9QS0c3X0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNwX3BrZzhfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFNQX1BLRzhfSEFTSF9PSUQpOworI2VuZGlmIC8qIFNQRF9zcG1kICovCisjZW5kaWYgLyogSU1BR0VfQkwyICovCisKKy8qIENDQSBDb250ZW50IENlcnRpZmljYXRlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGNjYV9jb250ZW50X2NlcnQgPSB7CisJLmltZ19pZCA9IENDQV9DT05URU5UX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9IE5VTEwsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZzdWJqZWN0X3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJnRiX2Z3X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0Yl9md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0Yl9md19jb25maWdfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXRiX2Z3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzJdID0geworCQkJLnR5cGVfZGVzYyA9ICZmd19jb25maWdfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKWZ3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzNdID0geworCQkJLnR5cGVfZGVzYyA9ICZod19jb25maWdfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKWh3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzRdID0geworCQkJLnR5cGVfZGVzYyA9ICZzb2NfZndfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNvY19md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzVdID0geworCQkJLnR5cGVfZGVzYyA9ICZzb2NfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzb2NfZndfY29uZmlnX2hhc2hfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9LAorCQlbNl0gPSB7CisJCQkudHlwZV9kZXNjID0gJnJtbV9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopcm1tX2hhc2hfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworI2lmZGVmIElNQUdFX0JMMQorc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDJfaW1hZ2UgPSB7CisJLmltZ19pZCA9IEJMMl9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmY2NhX2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZ0Yl9md19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHRiX2Z3X2NvbmZpZyA9IHsKKwkuaW1nX2lkID0gVEJfRldfQ09ORklHX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZjY2FfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJnRiX2Z3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGZ3X2NvbmZpZyA9IHsKKwkuaW1nX2lkID0gRldfQ09ORklHX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZjY2FfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJmZ3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworI2VuZGlmIC8qIElNQUdFX0JMMSAqLworCisjaWZkZWYgSU1BR0VfQkwyCisvKiBIVyBDb25maWcgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgaHdfY29uZmlnID0geworCS5pbWdfaWQgPSBIV19DT05GSUdfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJmNjYV9jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmaHdfY29uZmlnX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIEJMMzEgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgYmwzMV9pbWFnZSA9IHsKKwkuaW1nX2lkID0gQkwzMV9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmY2NhX2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZzb2NfZndfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyogQkwzMSBDb25maWcgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3Qgc29jX2Z3X2NvbmZpZyA9IHsKKwkuaW1nX2lkID0gU09DX0ZXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmY2NhX2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZzb2NfZndfY29uZmlnX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIFJNTSAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBybW1faW1hZ2UgPSB7CisJLmltZ19pZCA9IFJNTV9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmY2NhX2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZybW1faGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyogQ29yZSBTV0QgS2V5IENlcnRpZmljYXRlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGNvcmVfc3dkX2tleV9jZXJ0ID0geworCS5pbWdfaWQgPSBDT1JFX1NXRF9LRVlfQ0VSVF9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfQ0VSVCwKKwkucGFyZW50ID0gTlVMTCwgLyogU1dEIFJPT1QgQ0VSVCAqLworCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfU0lHLAorCQkJLnBhcmFtLnNpZyA9IHsKKwkJCQkucGsgPSAmc3dkX3JvdF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZjb3JlX3N3ZF9waywKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKWNvcmVfc3dkX3BrX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClQS19ERVJfTEVOCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBTUE1DIENvbnRlbnQgQ2VydGlmaWNhdGUgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgdHJ1c3RlZF9vc19md19jb250ZW50X2NlcnQgPSB7CisJLmltZ19pZCA9IFRSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSAmY29yZV9zd2Rfa2V5X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZjb3JlX3N3ZF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0b3NfZndfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXRvc19md19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0b3NfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0b3NfZndfY29uZmlnX2hhc2hfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworLyogU1BNQyAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBibDMyX2ltYWdlID0geworCS5pbWdfaWQgPSBCTDMyX0lNQUdFX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZ0cnVzdGVkX29zX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZ0b3NfZndfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyogU1BNIENvbmZpZyAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCB0b3NfZndfY29uZmlnID0geworCS5pbWdfaWQgPSBUT1NfRldfQ09ORklHX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZ0cnVzdGVkX29zX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZ0b3NfZndfY29uZmlnX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIFBsYXRmb3JtIEtleSBDZXJ0aWZpY2F0ZSAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBwbGF0X2tleV9jZXJ0ID0geworCS5pbWdfaWQgPSBQTEFUX0tFWV9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSBOVUxMLCAvKiBQTEFURk9STSBST09UIENFUlQgKi8KKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnByb3RfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmbm9uX3RydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZub25fdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZwbGF0X3BrLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopcGxhdF9wa19idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpUEtfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworLyogTm9uLVRydXN0ZWQgRmlybXdhcmUgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3Qgbm9uX3RydXN0ZWRfZndfY29udGVudF9jZXJ0ID0geworCS5pbWdfaWQgPSBOT05fVFJVU1RFRF9GV19DT05URU5UX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9ICZwbGF0X2tleV9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfU0lHLAorCQkJLnBhcmFtLnNpZyA9IHsKKwkJCQkucGsgPSAmcGxhdF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZub25fdHJ1c3RlZF9udl9jdHIsCisJCQkJLnBsYXRfbnZfY3RyID0gJm5vbl90cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJm50X3dvcmxkX2JsX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiludF93b3JsZF9ibF9oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZudF9md19jb25maWdfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKW50X2Z3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgYmwzM19pbWFnZSA9IHsKKwkuaW1nX2lkID0gQkwzM19JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmbm9uX3RydXN0ZWRfZndfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJm50X3dvcmxkX2JsX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIE5UIEZXIENvbmZpZyAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBudF9md19jb25maWcgPSB7CisJLmltZ19pZCA9IE5UX0ZXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmbm9uX3RydXN0ZWRfZndfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJm50X2Z3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKgorICogU2VjdXJlIFBhcnRpdGlvbnMKKyAqLworI2lmIGRlZmluZWQoU1BEX3NwbWQpCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNpcF9zcF9jb250ZW50X2NlcnQgPSB7CisJLmltZ19pZCA9IFNJUF9TUF9DT05URU5UX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9ICZjb3JlX3N3ZF9rZXlfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJmNvcmVfc3dkX3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJnNwX3BrZzFfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNwX3BrZ19oYXNoX2J1ZlswXSwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZzcF9wa2cyX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzcF9wa2dfaGFzaF9idWZbMV0sCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsyXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc3BfcGtnM19oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopc3BfcGtnX2hhc2hfYnVmWzJdLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9LAorCQlbM10gPSB7CisJCQkudHlwZV9kZXNjID0gJnNwX3BrZzRfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNwX3BrZ19oYXNoX2J1ZlszXSwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKK0RFRklORV9TSVBfU1BfUEtHKDEpOworREVGSU5FX1NJUF9TUF9QS0coMik7CitERUZJTkVfU0lQX1NQX1BLRygzKTsKK0RFRklORV9TSVBfU1BfUEtHKDQpOworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHBsYXRfc3BfY29udGVudF9jZXJ0ID0geworCS5pbWdfaWQgPSBQTEFUX1NQX0NPTlRFTlRfQ0VSVF9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfQ0VSVCwKKwkucGFyZW50ID0gJnBsYXRfa2V5X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZwbGF0X3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJm5vbl90cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmbm9uX3RydXN0ZWRfbnZfY3RyCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc3BfcGtnNV9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopc3BfcGtnX2hhc2hfYnVmWzRdLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZV9kZXNjID0gJnNwX3BrZzZfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNwX3BrZ19oYXNoX2J1Zls1XSwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzJdID0geworCQkJLnR5cGVfZGVzYyA9ICZzcF9wa2c3X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzcF9wa2dfaGFzaF9idWZbNl0sCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVszXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc3BfcGtnOF9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopc3BfcGtnX2hhc2hfYnVmWzddLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworREVGSU5FX1BMQVRfU1BfUEtHKDUpOworREVGSU5FX1BMQVRfU1BfUEtHKDYpOworREVGSU5FX1BMQVRfU1BfUEtHKDcpOworREVGSU5FX1BMQVRfU1BfUEtHKDgpOworI2VuZGlmIC8qIFNQRF9zcG1kICovCisjZW5kaWYgLyogSU1BR0VfQkwyICovCisvKgorICogQ2hhaW4gb2YgdHJ1c3QgZGVmaW5pdGlvbgorICovCisjaWZkZWYgSU1BR0VfQkwxCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190ICogY29uc3QgY290X2Rlc2NbXSA9IHsKKwlbQ0NBX0NPTlRFTlRfQ0VSVF9JRF0JCQk9CSZjY2FfY29udGVudF9jZXJ0LAorCVtCTDJfSU1BR0VfSURdCQkJCT0JJmJsMl9pbWFnZSwKKwlbVEJfRldfQ09ORklHX0lEXQkJCT0JJnRiX2Z3X2NvbmZpZywKKwlbRldfQ09ORklHX0lEXQkJCQk9CSZmd19jb25maWcsCit9OworI2Vsc2UgLyogSU1BR0VfQkwyICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190ICogY29uc3QgY290X2Rlc2NbXSA9IHsKKwlbQ0NBX0NPTlRFTlRfQ0VSVF9JRF0JCQk9CSZjY2FfY29udGVudF9jZXJ0LAorCVtIV19DT05GSUdfSURdCQkJCT0JJmh3X2NvbmZpZywKKwlbQkwzMV9JTUFHRV9JRF0JCQkJPQkmYmwzMV9pbWFnZSwKKwlbU09DX0ZXX0NPTkZJR19JRF0JCQk9CSZzb2NfZndfY29uZmlnLAorCVtSTU1fSU1BR0VfSURdCQkJCT0JJnJtbV9pbWFnZSwKKwlbQ09SRV9TV0RfS0VZX0NFUlRfSURdCQkJPQkmY29yZV9zd2Rfa2V5X2NlcnQsCisJW1RSVVNURURfT1NfRldfQ09OVEVOVF9DRVJUX0lEXQkJPQkmdHJ1c3RlZF9vc19md19jb250ZW50X2NlcnQsCisJW0JMMzJfSU1BR0VfSURdCQkJCT0JJmJsMzJfaW1hZ2UsCisJW1RPU19GV19DT05GSUdfSURdCQkJPQkmdG9zX2Z3X2NvbmZpZywKKwlbUExBVF9LRVlfQ0VSVF9JRF0JCQk9CSZwbGF0X2tleV9jZXJ0LAorCVtOT05fVFJVU1RFRF9GV19DT05URU5UX0NFUlRfSURdCT0JJm5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCwKKwlbQkwzM19JTUFHRV9JRF0JCQkJPQkmYmwzM19pbWFnZSwKKwlbTlRfRldfQ09ORklHX0lEXQkJCT0JJm50X2Z3X2NvbmZpZywKKyNpZiBkZWZpbmVkKFNQRF9zcG1kKQorCVtTSVBfU1BfQ09OVEVOVF9DRVJUX0lEXQkJPQkmc2lwX3NwX2NvbnRlbnRfY2VydCwKKwlbUExBVF9TUF9DT05URU5UX0NFUlRfSURdCQk9CSZwbGF0X3NwX2NvbnRlbnRfY2VydCwKKwlbU1BfUEtHMV9JRF0JCQkJPQkmc3BfcGtnMSwKKwlbU1BfUEtHMl9JRF0JCQkJPQkmc3BfcGtnMiwKKwlbU1BfUEtHM19JRF0JCQkJPQkmc3BfcGtnMywKKwlbU1BfUEtHNF9JRF0JCQkJPQkmc3BfcGtnNCwKKwlbU1BfUEtHNV9JRF0JCQkJPQkmc3BfcGtnNSwKKwlbU1BfUEtHNl9JRF0JCQkJPQkmc3BfcGtnNiwKKwlbU1BfUEtHN19JRF0JCQkJPQkmc3BfcGtnNywKKwlbU1BfUEtHOF9JRF0JCQkJPSAgICAgICAmc3BfcGtnOCwKKyNlbmRpZgorfTsKKyNlbmRpZiAvKiBJTUFHRV9CTDEgKi8KKworLyogUmVnaXN0ZXIgdGhlIENvVCBpbiB0aGUgYXV0aGVudGljYXRpb24gbW9kdWxlICovCitSRUdJU1RFUl9DT1QoY290X2Rlc2MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdC9jbGsvY2xrLXN0bTMyLWNvcmUuYyBiL2RyaXZlcnMvc3QvY2xrL2Nsay1zdG0zMi1jb3JlLmMKaW5kZXggZTFiNjk0MC4uODU4NGE1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdC9jbGsvY2xrLXN0bTMyLWNvcmUuYworKysgYi9kcml2ZXJzL3N0L2Nsay9jbGstc3RtMzItY29yZS5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIHsKIAlzdHJ1Y3QgY2xrX29zY2lsbGF0b3JfZGF0YSAqb3NjX2RhdGEgPSBjbGtfb3NjaWxsYXRvcl9nZXRfZGF0YShwcml2LCBpZCk7CiAKLQlyZXR1cm4gX2Nsa19zdG0zMl9nYXRlX3dhaXRfcmVhZHkocHJpdiwgb3NjX2RhdGEtPmdhdGVfaWQsIHJlYWR5X29uKTsKKwlyZXR1cm4gX2Nsa19zdG0zMl9nYXRlX3dhaXRfcmVhZHkocHJpdiwgb3NjX2RhdGEtPmdhdGVfcmR5X2lkLCByZWFkeV9vbik7CiB9CiAKIGludCBjbGtfb3NjaWxsYXRvcl93YWl0X3JlYWR5X29uKHN0cnVjdCBzdG0zMl9jbGtfcHJpdiAqcHJpdiwgaW50IGlkKQpAQCAtODM4LDggKzgzOCw5IEBACiAJCX0KIAl9CiAKLQlpZiAoKG1taW9fcmVhZF8zMihhZGRyZXNzKSAmIG1hc2tfcmR5KSAhPSBtYXNrX3Rlc3QpCisJaWYgKChtbWlvX3JlYWRfMzIoYWRkcmVzcykgJiBtYXNrX3JkeSkgIT0gbWFza190ZXN0KSB7CiAJCXJldHVybiAtRVRJTUVET1VUOworCX0KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24vdGJici9jb3RfZGVmLmggYi9pbmNsdWRlL2NvbW1vbi90YmJyL2NvdF9kZWYuaAppbmRleCA4MDBhZDA3Li5lMGMyMjEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbW1vbi90YmJyL2NvdF9kZWYuaAorKysgYi9pbmNsdWRlL2NvbW1vbi90YmJyL2NvdF9kZWYuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMCwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtMTQsNiArMTQsOCBAQAogLyogVEJCUiBDb1QgZGVmaW5pdGlvbnMgKi8KICNpZiBkZWZpbmVkKFNQRF9zcG1kKQogI2RlZmluZSBDT1RfTUFYX1ZFUklGSUVEX1BBUkFNUwkJOAorI2VsaWYgZGVmaW5lZChBUk1fQ09UX2NjYSkKKyNkZWZpbmUgQ09UX01BWF9WRVJJRklFRF9QQVJBTVMJCTgKICNlbHNlCiAjZGVmaW5lIENPVF9NQVhfVkVSSUZJRURfUEFSQU1TCQk0CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJpdmVycy9hcm0vZ2ljdjMuaCBiL2luY2x1ZGUvZHJpdmVycy9hcm0vZ2ljdjMuaAppbmRleCA1ZWZlZmI2Li44MzcxZGQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RyaXZlcnMvYXJtL2dpY3YzLmgKKysrIGIvaW5jbHVkZS9kcml2ZXJzL2FybS9naWN2My5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIwLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC03Niw2ICs3Niw4IEBACiAKICNlbmRpZgkvKiBHSUNfRVhUX0lOVElEICovCiAKKyNkZWZpbmUgR0lDX1JFVihyLCBwKSAgICAgICAgICAgKChyIDw8IDQpIHwgcCkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEdJQ3YzIGFuZCAzLjEgc3BlY2lmaWMgRGlzdHJpYnV0b3IgaW50ZXJmYWNlIHJlZ2lzdGVyIG9mZnNldHMgYW5kIGNvbnN0YW50cwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE5Miw2ICsxOTQsMTUgQEAKICNkZWZpbmUgR0lDUl9DVExSX1VXUF9TSElGVAkzMQogI2RlZmluZSBHSUNSX0NUTFJfVVdQX01BU0sJVSgweDEpCiAjZGVmaW5lIEdJQ1JfQ1RMUl9VV1BfQklUCUJJVF8zMihHSUNSX0NUTFJfVVdQX1NISUZUKQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMVNfU0hJRlQJMjYKKyNkZWZpbmUgR0lDUl9DVExSX0RQRzFTX01BU0sJVSgweDEpCisjZGVmaW5lIEdJQ1JfQ1RMUl9EUEcxU19CSVQJQklUXzMyKEdJQ1JfQ1RMUl9EUEcxU19TSElGVCkKKyNkZWZpbmUgR0lDUl9DVExSX0RQRzFOU19TSElGVAkyNQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMU5TX01BU0sJVSgweDEpCisjZGVmaW5lIEdJQ1JfQ1RMUl9EUEcxTlNfQklUCUJJVF8zMihHSUNSX0NUTFJfRFBHMU5TX1NISUZUKQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9TSElGVAkyNAorI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9NQVNLCVUoMHgxKQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9CSVQJQklUXzMyKEdJQ1JfQ1RMUl9EUEcwX1NISUZUKQogI2RlZmluZSBHSUNSX0NUTFJfUldQX1NISUZUCTMKICNkZWZpbmUgR0lDUl9DVExSX1JXUF9NQVNLCVUoMHgxKQogI2RlZmluZSBHSUNSX0NUTFJfUldQX0JJVAlCSVRfMzIoR0lDUl9DVExSX1JXUF9TSElGVCkKQEAgLTIyNCwxMiArMjM1LDQwIEBACiAjZGVmaW5lIFRZUEVSX1BQSV9OVU1fTUFTSwlVKDB4MWYpCiAKIC8qIEdJQ1JfSUlEUiBiaXQgZGVmaW5pdGlvbnMgKi8KLSNkZWZpbmUgSUlEUl9QUk9EVUNUX0lEX01BU0sJVSgweGZmMDAwMDAwKQotI2RlZmluZSBJSURSX1ZBUklBTlRfTUFTSwlVKDB4MDAwZjAwMDApCi0jZGVmaW5lIElJRFJfUkVWSVNJT05fTUFTSwlVKDB4MDAwMGYwMDApCi0jZGVmaW5lIElJRFJfSU1QTEVNRU5URVJfTUFTSwlVKDB4MDAwMDBmZmYpCi0jZGVmaW5lIElJRFJfTU9ERUxfTUFTSwkJKElJRFJfUFJPRFVDVF9JRF9NQVNLIHwgXAotCQkJCSBJSURSX0lNUExFTUVOVEVSX01BU0spCisjZGVmaW5lIElJRFJfUFJPRFVDVF9JRF9NQVNLCVUoMHhmZikKKyNkZWZpbmUgSUlEUl9WQVJJQU5UX01BU0sJVSgweGYpCisjZGVmaW5lIElJRFJfUkVWX01BU0sJCVUoMHhmKQorI2RlZmluZSBJSURSX0lNUExFTUVOVEVSX01BU0sJVSgweGZmZikKKyNkZWZpbmUgSUlEUl9QUk9EVUNUX0lEX1NISUZUCTI0CisjZGVmaW5lIElJRFJfVkFSSUFOVF9TSElGVAkxNgorI2RlZmluZSBJSURSX1JFVl9TSElGVAkJMTIKKyNkZWZpbmUgSUlEUl9JTVBMRU1FTlRFUl9TSElGVAkwCisjZGVmaW5lIElJRFJfUFJPRFVDVF9JRF9CSVQJQklUXzMyKElJRFJfUFJPRFVDVF9JRF9TSElGVCkKKyNkZWZpbmUgSUlEUl9WQVJJQU5UX0JJVAlCSVRfMzIoSUlEUl9WQVJJQU5UX1NISUZUKQorI2RlZmluZSBJSURSX1JFVl9CSVQJCUJJVF8zMihJSURSX1JFVklTSU9OX1NISUZUKQorI2RlZmluZSBJSURSX0lNUExFTUVOVEVSX0JJVAlCSVRfMzIoSUlEUl9JTVBMRU1FTlRFUl9TSElGVCkKKworI2RlZmluZSBJSURSX01PREVMX01BU0sJCShJSURSX1BST0RVQ1RfSURfTUFTSyA8PCBJSURSX1BST0RVQ1RfSURfU0hJRlQgfCBcCisJCQkJIElJRFJfSU1QTEVNRU5URVJfTUFTSyA8PCBJSURSX0lNUExFTUVOVEVSX1NISUZUKQorCisjZGVmaW5lIEdJQ19QUk9EVUNUX0lEX0dJQzYwMAlVKDB4MikKKyNkZWZpbmUgR0lDX1BST0RVQ1RfSURfR0lDNjAwQUUJVSgweDMpCisjZGVmaW5lIEdJQ19QUk9EVUNUX0lEX0dJQzcwMAlVKDB4NCkKKworLyoKKyAqIE5vdGUgdGhhdCBiZWxvdyByZXZpc2lvbnMgYW5kIHZhcmlhbnRzIGRlZmluYXRpb25zIGFyZSBhcyBwZXIgR0lDNjAwL0dJQzYwMEFFCisgKiBzcGVjaWZpY2F0aW9uLgorICovCisjZGVmaW5lIEdJQ19SRVZfUDAJCVUoMHgxKQorI2RlZmluZSBHSUNfUkVWX1AxCQlVKDB4MykKKyNkZWZpbmUgR0lDX1JFVl9QMgkJVSgweDQpCisjZGVmaW5lIEdJQ19SRVZfUDMJCVUoMHg1KQorI2RlZmluZSBHSUNfUkVWX1A0CQlVKDB4NikKKyNkZWZpbmUgR0lDX1JFVl9QNgkJVSgweDcpCisKKyNkZWZpbmUgR0lDX1ZBUklBTlRfUjAJCVUoMHgwKQorI2RlZmluZSBHSUNfVkFSSUFOVF9SMQkJVSgweDEpCisjZGVmaW5lIEdJQ19WQVJJQU5UX1IyCQlVKDB4MikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEdJQ3YzIGFuZCAzLjEgQ1BVIGludGVyZmFjZSByZWdpc3RlcnMgJiBjb25zdGFudHMKQEAgLTU0Myw1ICs1ODIsMTcgQEAKIHZvaWQgZ2ljdjNfY2xlYXJfaW50ZXJydXB0X3BlbmRpbmcodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgcHJvY19udW0pOwogdW5zaWduZWQgaW50IGdpY3YzX3NldF9wbXIodW5zaWduZWQgaW50IG1hc2spOwogCit2b2lkIGdpY3YzX2dldF9jb21wb25lbnRfcHJvZGlkX3Jldihjb25zdCB1aW50cHRyX3QgZ2ljZF9iYXNlLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgKmdpY19wcm9kX2lkLAorCQkJCSAgICB1aW50OF90ICpnaWNfcmV2KTsKK3ZvaWQgZ2ljdjNfY2hlY2tfZXJyYXRhc19hcHBsaWVzKGNvbnN0IHVpbnRwdHJfdCBnaWNkX2Jhc2UpOworI2lmIEdJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NAordm9pZCBnaWN2M19hcHBseV9lcnJhdGFfd2FfMjM4NDM3NChjb25zdCB1aW50cHRyX3QgZ2ljcl9iYXNlKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgZ2ljdjNfYXBwbHlfZXJyYXRhX3dhXzIzODQzNzQoY29uc3QgdWludHB0cl90IGdpY3JfYmFzZSkKK3sKK30KKyNlbmRpZiAvKiBHSUM2MDBfRVJSQVRBX1dBXzIzODQzNzQgKi8KKwogI2VuZGlmIC8qIF9fQVNTRU1CTEVSX18gKi8KICNlbmRpZiAvKiBHSUNWM19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RyaXZlcnMvbnhwL2dpYy9naWN2My9wbGF0X2dpYy5oIGIvaW5jbHVkZS9kcml2ZXJzL254cC9naWMvZ2ljdjMvcGxhdF9naWMuaAppbmRleCAwYzBkMGZjLi43OTRiMDZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RyaXZlcnMvbnhwL2dpYy9naWN2My9wbGF0X2dpYy5oCisrKyBiL2luY2x1ZGUvZHJpdmVycy9ueHAvZ2ljL2dpY3YzL3BsYXRfZ2ljLmgKQEAgLTYxLDcgKzYxLDYgQEAKIAogI2RlZmluZSBHSUNSX0lDRU5BQkxFUjBfU0dJMTUgICAweDAwMDA4MDAwCiAjZGVmaW5lIEdJQ1JfQ1RMUl9SV1AgICAgICAgICAgIDB4OAotI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9NQVNLICAgICAweDIwMDAwMDAKICNkZWZpbmUgR0lDUl9JR1JPVVBSMF9TR0kxNSAgICAgMHgwMDAwODAwMAogI2RlZmluZSBHSUNSX0lHUlBNT0RSMF9TR0kxNSAgICAweDAwMDA4MDAwCiAjZGVmaW5lIEdJQ1JfSVNFTkFCTEVSMF9TR0kxNSAgIDB4MDAwMDgwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhwb3J0L2NvbW1vbi90YmJyL3RiYnJfaW1nX2RlZl9leHAuaCBiL2luY2x1ZGUvZXhwb3J0L2NvbW1vbi90YmJyL3RiYnJfaW1nX2RlZl9leHAuaAppbmRleCA5ODU0NGMwLi45OGEwMDk5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2V4cG9ydC9jb21tb24vdGJici90YmJyX2ltZ19kZWZfZXhwLmgKKysrIGIvaW5jbHVkZS9leHBvcnQvY29tbW9uL3RiYnIvdGJicl9pbWdfZGVmX2V4cC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxOS0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0xMDQsNyArMTA0LDE2IEBACiAvKiBSZWFsbSBNb25pdG9yIE1hbmFnZXIgKFJNTSkgKi8KICNkZWZpbmUgUk1NX0lNQUdFX0lECQkJVSgzNCkKIAorLyogQ0NBIENvbnRlbnQgQ2VydGlmaWNhdGUgSUQgKi8KKyNkZWZpbmUgQ0NBX0NPTlRFTlRfQ0VSVF9JRAkJVSgzNSkKKworLyogQ29yZSBTV0QgS2V5IENlcnRpZmljYXRlIElEICovCisjZGVmaW5lIENPUkVfU1dEX0tFWV9DRVJUX0lECQlVKDM2KQorCisvKiBQbGF0Zm9ybSBLZXkgQ2VydGlmaWNhdGUgSUQgKi8KKyNkZWZpbmUgUExBVF9LRVlfQ0VSVF9JRAkJVSgzNykKKwogLyogTWF4IEltYWdlcyAqLwotI2RlZmluZSBNQVhfSU1BR0VfSURTCQkJVSgzNSkKKyNkZWZpbmUgTUFYX0lNQUdFX0lEUwkJCVUoMzgpCiAKICNlbmRpZiAvKiBBUk1fVFJVU1RFRF9GSVJNV0FSRV9FWFBPUlRfQ09NTU9OX1RCQlJfVEJCUl9JTUdfREVGX0VYUF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3BsYXQvYXJtL2NvbW1vbi9hcm1fZGVmLmggYi9pbmNsdWRlL3BsYXQvYXJtL2NvbW1vbi9hcm1fZGVmLmgKaW5kZXggYTgyMTFiZC4uY2FhYjE0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9wbGF0L2FybS9jb21tb24vYXJtX2RlZi5oCisrKyBiL2luY2x1ZGUvcGxhdC9hcm0vY29tbW9uL2FybV9kZWYuaApAQCAtNTIwLDkgKzUyMCwyMCBAQAogICogQkwyIHNwZWNpZmljIGRlZmluZXMuCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogI2lmIEJMMl9BVF9FTDMKKyNpZiBFTkFCTEVfUElFCisvKgorICogQXMgdGhlIEJMMzEgaW1hZ2Ugc2l6ZSBhcHBlYXJzIHRvIGJlIGluY3JlYXNlZCB3aGVuIGJ1aWx0IHdpdGggdGhlIEVOQUJMRV9QSUUKKyAqIG9wdGlvbiwgc2V0IEJMMiBiYXNlIGFkZHJlc3MgdG8gaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIEJMMzEgaW4gVHJ1c3RlZCBTUkFNLgorICovCisjZGVmaW5lIEJMMl9CQVNFCQkJKEFSTV9UUlVTVEVEX1NSQU1fQkFTRSArIFwKKwkJCQkJKFBMQVRfQVJNX1RSVVNURURfU1JBTV9TSVpFID4+IDEpICsgXAorCQkJCQkweDMwMDApCisjZWxzZQogLyogUHV0IEJMMiB0b3dhcmRzIHRoZSBtaWRkbGUgb2YgdGhlIFRydXN0ZWQgU1JBTSAqLwogI2RlZmluZSBCTDJfQkFTRQkJCShBUk1fVFJVU1RFRF9TUkFNX0JBU0UgKyBcCi0JCQkJCQkoUExBVF9BUk1fVFJVU1RFRF9TUkFNX1NJWkUgPj4gMSkgKyAweDIwMDApCisJCQkJCShQTEFUX0FSTV9UUlVTVEVEX1NSQU1fU0laRSA+PiAxKSArIFwKKwkJCQkJMHgyMDAwKQorI2VuZGlmIC8qIEVOQUJMRV9QSUUgKi8KICNkZWZpbmUgQkwyX0xJTUlUCQkJKEFSTV9CTF9SQU1fQkFTRSArIEFSTV9CTF9SQU1fU0laRSkKIAogI2Vsc2UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdG9vbHNfc2hhcmUvY2NhX29pZC5oIGIvaW5jbHVkZS90b29sc19zaGFyZS9jY2Ffb2lkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4NmI4YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdG9vbHNfc2hhcmUvY2NhX29pZC5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIEFybSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKKyAqLworCisjaWZuZGVmIENDQV9PSURfSAorI2RlZmluZSBDQ0FfT0lEX0gKKworLyogUmV1c2UgdGhlIE9iamVjdCBJRHMgZGVmaW5lZCBieSBUQkJSIGZvciBjZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiAqLworI2luY2x1ZGUgInRiYnJfb2lkLmgiCisKKy8qCisgKiBBc3NpZ24gYXJiaXRyYXJ5IE9iamVjdCBJRCB2YWx1ZXMgdGhhdCBkbyBub3QgY29uZmxpY3Qgd2l0aCBhbnkgb2YgdGhlCisgKiBUQkJSIHJlc2VydmVkIE9JRHMuCisgKi8KKy8qIFBsYXRmb3JtIHJvb3Qtb2YtdHJ1c3QgcHVibGljIGtleSAqLworI2RlZmluZSBQUk9UX1BLX09JRAkJCQkiMS4zLjYuMS40LjEuNDEyOC4yMTAwLjExMDIiCisvKiBTZWN1cmUgV29ybGQgcm9vdC1vZi10cnVzdCBwdWJsaWMga2V5ICovCisjZGVmaW5lIFNXRF9ST1RfUEtfT0lECQkJCSIxLjMuNi4xLjQuMS40MTI4LjIxMDAuMTEwMyIKKy8qIENvcmUgU2VjdXJlIFdvcmxkIHB1YmxpYyBrZXkgKi8KKyNkZWZpbmUgQ09SRV9TV0RfUEtfT0lECQkJCSIxLjMuNi4xLjQuMS40MTI4LjIxMDAuMTEwNCIKKy8qIFBsYXRmb3JtIHB1YmxpYyBrZXkgKi8KKyNkZWZpbmUgUExBVF9QS19PSUQJCQkJIjEuMy42LjEuNC4xLjQxMjguMjEwMC4xMTA1IgorLyogUmVhbG0gTW9uaXRvciBNYW5hZ2VyIChSTU0pIEhhc2ggKi8KKyNkZWZpbmUgUk1NX0hBU0hfT0lECQkJCSIxLjMuNi4xLjQuMS40MTI4LjIxMDAuMTEwNiIKKworI2VuZGlmIC8qIENDQV9PSURfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90b29sc19zaGFyZS9maXJtd2FyZV9pbWFnZV9wYWNrYWdlLmggYi9pbmNsdWRlL3Rvb2xzX3NoYXJlL2Zpcm13YXJlX2ltYWdlX3BhY2thZ2UuaAppbmRleCBiZDViMTRiLi5iNzNlZWM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Rvb2xzX3NoYXJlL2Zpcm13YXJlX2ltYWdlX3BhY2thZ2UuaAorKysgYi9pbmNsdWRlL3Rvb2xzX3NoYXJlL2Zpcm13YXJlX2ltYWdlX3BhY2thZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMSwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtMjQsNiArMjQsMTIgQEAKIAl7ezB4NGYsIDB4NTEsIDB4MWQsIDB4MTF9LCB7MHgyYiwgMHhlNX0sIHsweDRlLCAweDQ5fSwgMHhiNCwgMHhjNSwgezB4ODMsIDB4YzIsIDB4ZjcsIDB4MTUsIDB4ODQsIDB4MGF9IH0KICNkZWZpbmUgVVVJRF9UUlVTVEVEX0ZXVV9DRVJUIFwKIAl7ezB4NzEsIDB4NDAsIDB4OGEsIDB4YjJ9LCB7MHgxOCwgMHhkNn0sIHsweDg3LCAweDRjfSwgMHg4YiwgMHgyZSwgezB4YzYsIDB4ZGMsIDB4Y2QsIDB4NTAsIDB4ZjAsIDB4OTZ9IH0KKyNkZWZpbmUgVVVJRF9DQ0FfQ09OVEVOVF9DRVJUIFwKKwl7ezB4MzYsICAweGQ4LCAweDNkLCAweDg1fSwgezB4NzYsIDB4MWR9LCB7MHg0ZCwgMHhhZn0sIDB4OTYsIDB4ZjEsIHsweGNkLCAweDk5LCAweGQ2LCAweDU2LCAweDliLCAweDAwfSB9CisjZGVmaW5lIFVVSURfQ09SRV9TV0RfS0VZX0NFUlQgXAorCXt7MHg1MiwgIDB4MjIsIDB4MmQsIDB4MzF9LCB7MHg4MiwgMHgwZn0sIHsweDQ5LCAweDRkfSwgMHg4YiwgMHhiYywgezB4ZWEsIDB4NjgsIDB4MjUsIDB4ZDMsIDB4YzMsIDB4NWF9IH0KKyNkZWZpbmUgVVVJRF9QTEFUX0tFWV9DRVJUIFwKKwl7ezB4ZDQsICAweDNjLCAweGQ5LCAweDAyfSwgezB4NWIsIDB4OWZ9LCB7MHg0MSwgMHgyZX0sIDB4OGEsIDB4YzYsIHsweDkyLCAweGI2LCAweGQxLCAweDhiLCAweGU2LCAweDBkfSB9CiAjZGVmaW5lIFVVSURfVFJVU1RFRF9CT09UX0ZJUk1XQVJFX0JMMiBcCiAJe3sweDVmLCAweGY5LCAweGVjLCAweDBifSwgezB4NGQsIDB4MjJ9LCB7MHgzZSwgMHg0ZH0sIDB4YTUsIDB4NDQsIHsweGMzLCAweDlkLCAweDgxLCAweGM3LCAweDNmLCAweDBhfSB9CiAjZGVmaW5lIFVVSURfU0NQX0ZJUk1XQVJFX1NDUF9CTDIgXApkaWZmIC0tZ2l0IGEvbGliL3BzYS9tZWFzdXJlZF9ib290LmMgYi9saWIvcHNhL21lYXN1cmVkX2Jvb3QuYwppbmRleCA2OTNlMDFmLi45MGU0ZWYzIDEwMDY0NAotLS0gYS9saWIvcHNhL21lYXN1cmVkX2Jvb3QuYworKysgYi9saWIvcHNhL21lYXN1cmVkX2Jvb3QuYwpAQCAtMTQsOCArMTQsOSBAQAogCiAjaW5jbHVkZSAibWVhc3VyZWRfYm9vdF9wcml2YXRlLmgiCiAKLXN0YXRpYyB2b2lkIHByaW50X2J5dGVfYXJyYXkoY29uc3QgdWludDhfdCAqYXJyYXksIHNpemVfdCBsZW4pCitzdGF0aWMgdm9pZCBwcmludF9ieXRlX2FycmF5KGNvbnN0IHVpbnQ4X3QgKmFycmF5IF9fdW51c2VkLCBzaXplX3QgbGVuIF9fdW51c2VkKQogeworI2lmIExPR19MRVZFTCA+PSBMT0dfTEVWRUxfSU5GTwogCXNpemVfdCBpOwogCiAJaWYgKGFycmF5ID09IE5VTEwgfHwgbGVuID09IDBVKSB7CkBAIC0zMSw2ICszMiw3IEBACiAJCQl9CiAJCX0KIAl9CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgbG9nX21lYXN1cmVtZW50KHVpbnQ4X3QgaW5kZXgsCmRpZmYgLS1naXQgYS9tYWtlX2hlbHBlcnMvdGJici90YmJyX3Rvb2xzLm1rIGIvbWFrZV9oZWxwZXJzL3RiYnIvdGJicl90b29scy5tawppbmRleCAwYTI4MGI0Li41ZWYyZDg1IDEwMDY0NAotLS0gYS9tYWtlX2hlbHBlcnMvdGJici90YmJyX3Rvb2xzLm1rCisrKyBiL21ha2VfaGVscGVycy90YmJyL3RiYnJfdG9vbHMubWsKQEAgLTEsNSArMSw1IEBACiAjCi0jIENvcHlyaWdodCAoYykgMjAxNS0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMiwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogIwpAQCAtMjUsNiArMjUsOSBAQAogIyAgIEtFWV9TSVpFCiAjICAgUk9UX0tFWQogIyAgIFBST1RfS0VZCisjICAgUExBVF9LRVkKKyMgICBTV0RfUk9UX0tFWQorIyAgIENPUkVfU1dEX0tFWQogIyAgIFRSVVNURURfV09STERfS0VZCiAjICAgTk9OX1RSVVNURURfV09STERfS0VZCiAjICAgU0NQX0JMMl9LRVkKQEAgLTQ2LDEwICs0OSwxOCBAQAogJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7TlRGV19OVkNUUl9WQUx9LC0tbnRmdy1udmN0cikpCiAKICMgQWRkIFRydXN0ZWQgS2V5IGNlcnRpZmljYXRlIHRvIHRoZSBmaXB0b29sIGFuZCBjZXJ0X2NyZWF0ZSBjb21tYW5kIGxpbmUgb3B0aW9ucworaWZuZXEgKCR7Q09UfSxjY2EpCiAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtUUlVTVEVEX0tFWV9DRVJUfSwtLXRydXN0ZWQta2V5LWNlcnQpKQorZWxzZQorJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vY2NhLmNydCwtLWNjYS1jZXJ0KSkKKyQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L2NvcmUtc3dkLmNydCwtLWNvcmUtc3dkLWNlcnQpKQorJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vcGxhdC1rZXkuY3J0LC0tcGxhdC1rZXktY2VydCkpCitlbmRpZgogCiAjIEFkZCBmd3UgY2VydGlmaWNhdGUgdG8gdGhlIGZpcHRvb2wgYW5kIGNlcnRfY3JlYXRlIGNvbW1hbmQgbGluZSBvcHRpb25zCitpZm5lcSAoJHtDT1R9LGNjYSkKICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0ZXVV9DRVJUfSwtLWZ3dS1jZXJ0LCxGV1VfKSkKK2VuZGlmCiAKICMgQWRkIHRoZSBrZXlzIHRvIHRoZSBjZXJ0X2NyZWF0ZSBjb21tYW5kIGxpbmUgb3B0aW9ucyAocHJpdmF0ZSBrZXlzIGFyZSBOT1QKICMgcGFja2VkIGluIHRoZSBGSVApLiBEZXZlbG9wZXJzIGNhbiB1c2UgdGhlaXIgb3duIGtleXMgYnkgc3BlY2lmeWluZyB0aGUgcHJvcGVyCkBAIC02Myw2ICs3NCw5IEBACiAkKGlmICR7Uk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7Uk9UX0tFWX0sLS1yb3Qta2V5KSkpCiAkKGlmICR7Uk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7Uk9UX0tFWX0sLS1yb3Qta2V5LEZXVV8pKSkKICQoaWYgJHtQUk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7UFJPVF9LRVl9LC0tcHJvdC1rZXkpKSkKKyQoaWYgJHtQTEFUX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7UExBVF9LRVl9LC0tcGxhdC1rZXkpKSkKKyQoaWYgJHtTV0RfUk9UX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7U1dEX1JPVF9LRVl9LC0tc3dkLXJvdC1rZXkpKSkKKyQoaWYgJHtDT1JFX1NXRF9LRVl9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke0NPUkVfU1dEX0tFWX0sLS1jb3JlLXN3ZC1rZXkpKSkKICQoaWYgJHtUUlVTVEVEX1dPUkxEX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7VFJVU1RFRF9XT1JMRF9LRVl9LC0tdHJ1c3RlZC13b3JsZC1rZXkpKSkKICQoaWYgJHtOT05fVFJVU1RFRF9XT1JMRF9LRVl9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke05PTl9UUlVTVEVEX1dPUkxEX0tFWX0sLS1ub24tdHJ1c3RlZC13b3JsZC1rZXkpKSkKIApAQCAtNzAsMjUgKzg0LDMxIEBACiAjIEFkZCB0aGUgQkwyIENvVCAoaW1hZ2UgY2VydCkKIGlmZXEgKCR7TkVFRF9CTDJ9LHllcykKIGlmZXEgKCR7QkwyX0FUX0VMM30sIDApCitpZm5lcSAoJHtDT1R9LGNjYSkKICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L3RiX2Z3LmNydCwtLXRiLWZ3LWNlcnQpKQogZW5kaWYKIGVuZGlmCitlbmRpZgogCiAjIEFkZCB0aGUgU0NQX0JMMiBDb1QgKGtleSBjZXJ0ICsgaW1nIGNlcnQpCiBpZm5lcSAoJHtTQ1BfQkwyfSwpCitpZm5lcSAoJHtDT1R9LGNjYSkKICAgICAkKGlmICR7U0NQX0JMMl9LRVl9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke1NDUF9CTDJfS0VZfSwtLXNjcC1mdy1rZXkpKSkKICAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9zY3BfZndfY29udGVudC5jcnQsLS1zY3AtZnctY2VydCkpCiAgICAgJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vc2NwX2Z3X2tleS5jcnQsLS1zY3AtZncta2V5LWNlcnQpKQogZW5kaWYKK2VuZGlmCiAKIGlmZXEgKCR7QVJDSH0sYWFyY2g2NCkKIGlmZXEgKCR7TkVFRF9CTDMxfSx5ZXMpCiAjIEFkZCB0aGUgQkwzMSBDb1QgKGtleSBjZXJ0ICsgaW1nIGNlcnQpCiAkKGlmICR7QkwzMV9LRVl9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke0JMMzFfS0VZfSwtLXNvYy1mdy1rZXkpKSkKK2lmbmVxICgke0NPVH0sY2NhKQogJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vc29jX2Z3X2NvbnRlbnQuY3J0LC0tc29jLWZ3LWNlcnQpKQogJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vc29jX2Z3X2tleS5jcnQsLS1zb2MtZncta2V5LWNlcnQpKQogZW5kaWYKIGVuZGlmCitlbmRpZgogCiAjIEFkZCB0aGUgQkwzMiBDb1QgKGtleSBjZXJ0ICsgaW1nIGNlcnQpCiBpZmVxICgke05FRURfQkwzMn0seWVzKQpAQCAtMTAyLDcgKzEyMiw5IEBACiAgICAgJChpZiAke0JMMzNfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtCTDMzX0tFWX0sLS1udC1mdy1rZXkpKSkKICAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9udF9md19jb250ZW50LmNydCwtLW50LWZ3LWNlcnQpKQogaWZuZXEgKCR7Q09UfSxkdWFscm9vdCkKLSAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9udF9md19rZXkuY3J0LC0tbnQtZncta2V5LWNlcnQpKQorICAgIGlmbmVxICgke0NPVH0sY2NhKQorICAgICAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9udF9md19rZXkuY3J0LC0tbnQtZncta2V5LWNlcnQpKQorICAgIGVuZGlmCiBlbmRpZgogZW5kaWYKIApAQCAtMTEyLDQgKzEzNCw3IEBACiBpZmVxICgke0NPVH0sZHVhbHJvb3QpCiAgICAgJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vcGxhdF9zcF9jb250ZW50LmNydCwtLXBsYXQtc3AtY2VydCkpCiBlbmRpZgoraWZlcSAoJHtDT1R9LGNjYSkKKyAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9wbGF0X3NwX2NvbnRlbnQuY3J0LC0tcGxhdC1zcC1jZXJ0KSkKK2VuZGlmCiBlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2FybV90cnVzdGVkX2Jvb3QuYyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9hcm1fdHJ1c3RlZF9ib290LmMKaW5kZXggNjZjYzNlOS4uNzE0YzQ0NCAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2FybV90cnVzdGVkX2Jvb3QuYworKysgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfYXJtX3RydXN0ZWRfYm9vdC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIwLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0xMywxOCArMTMsMjAgQEAKICNpbmNsdWRlIDxkcml2ZXJzL2RlbGF5X3RpbWVyLmg+CiAjaW5jbHVkZSA8bGliL2Nhc3NlcnQuaD4KICNpbmNsdWRlIDxsaWIvZmNvbmYvZmNvbmYuaD4KLSNpbmNsdWRlIDxwbGF0L2FybS9jb21tb24vcGxhdF9hcm0uaD4KLSNpbmNsdWRlIDxwbGF0L2FybS9jb21tb24vZmNvbmZfbnZfY250cl9nZXR0ZXIuaD4KICNpbmNsdWRlIDxwbGF0L2NvbW1vbi9jb21tb25fZGVmLmg+CiAjaW5jbHVkZSA8cGxhdC9jb21tb24vcGxhdGZvcm0uaD4KLSNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KLQotI2lmIGRlZmluZWQoQVJNX0NPVF90YmJyKQotI2luY2x1ZGUgPHRvb2xzX3NoYXJlL3RiYnJfb2lkLmg+CisjaWYgZGVmaW5lZChBUk1fQ09UX2NjYSkKKyNpbmNsdWRlIDx0b29sc19zaGFyZS9jY2Ffb2lkLmg+CiAjZWxpZiBkZWZpbmVkKEFSTV9DT1RfZHVhbHJvb3QpCiAjaW5jbHVkZSA8dG9vbHNfc2hhcmUvZHVhbHJvb3Rfb2lkLmg+CisjZWxpZiBkZWZpbmVkKEFSTV9DT1RfdGJicikKKyNpbmNsdWRlIDx0b29sc19zaGFyZS90YmJyX29pZC5oPgogI2VuZGlmCiAKKyNpbmNsdWRlIDxwbGF0L2FybS9jb21tb24vZmNvbmZfbnZfY250cl9nZXR0ZXIuaD4KKyNpbmNsdWRlIDxwbGF0L2FybS9jb21tb24vcGxhdF9hcm0uaD4KKyNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KKwogI2lmICFBUk1fQ1JZUFRPQ0VMTF9JTlRFRwogI2lmICFBUk1fUk9UUEtfTE9DQVRJT05fSUQKICAgI2Vycm9yICJBUk1fUk9UUEtfTE9DQVRJT05fSUQgbm90IGRlZmluZWQiCkBAIC0xODEsNiArMTgzLDQwIEBACiAJCXJldHVybiAxOwogCX0KIH0KKworI2VsaWYgZGVmaW5lZChBUk1fQ09UX2NjYSkKKworaW50IGFybV9nZXRfcm90cGtfaW5mbyh2b2lkICpjb29raWUsIHZvaWQgKiprZXlfcHRyLCB1bnNpZ25lZCBpbnQgKmtleV9sZW4sCisJCSAgICAgICB1bnNpZ25lZCBpbnQgKmZsYWdzKQoreworCS8qCisJICogUmV0dXJuIHRoZSByaWdodCByb290IG9mIHRydXN0IGtleSBoYXNoIGJhc2VkIG9uIHRoZSBjb29raWUgdmFsdWU6CisJICogIC0gTlVMTCBtZWFucyB0aGUgcHJpbWFyeSBST1RQSy4KKwkgKiAgLSBPdGhlcndpc2UsIGludGVycHJldCBjb29raWUgYXMgdGhlIE9JRCBvZiB0aGUgY2VydGlmaWNhdGUKKwkgKiAgICBleHRlbnNpb24gY29udGFpbmluZyB0aGUga2V5LgorCSAqLworCWlmIChjb29raWUgPT0gTlVMTCkgeworCQlyZXR1cm4gZ2V0X3JvdHBrX2luZm8oa2V5X3B0ciwga2V5X2xlbiwgZmxhZ3MpOworCX0gZWxzZSBpZiAoc3RyY21wKGNvb2tpZSwgUFJPVF9QS19PSUQpID09IDApIHsKKwkJZXh0ZXJuIHVuc2lnbmVkIGNoYXIgYXJtX3Byb3Rwa19oYXNoW107CisJCWV4dGVybiB1bnNpZ25lZCBjaGFyIGFybV9wcm90cGtfaGFzaF9lbmRbXTsKKwkJKmtleV9wdHIgPSBhcm1fcHJvdHBrX2hhc2g7CisJCSprZXlfbGVuID0gYXJtX3Byb3Rwa19oYXNoX2VuZCAtIGFybV9wcm90cGtfaGFzaDsKKwkJKmZsYWdzID0gUk9UUEtfSVNfSEFTSDsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmIChzdHJjbXAoY29va2llLCBTV0RfUk9UX1BLX09JRCkgPT0gMCkgeworCQlleHRlcm4gdW5zaWduZWQgY2hhciBhcm1fc3dkX3JvdHBrX2hhc2hbXTsKKwkJZXh0ZXJuIHVuc2lnbmVkIGNoYXIgYXJtX3N3ZF9yb3Rwa19oYXNoX2VuZFtdOworCQkqa2V5X3B0ciA9IGFybV9zd2Rfcm90cGtfaGFzaDsKKwkJKmtleV9sZW4gPSBhcm1fc3dkX3JvdHBrX2hhc2hfZW5kIC0gYXJtX3N3ZF9yb3Rwa19oYXNoOworCQkqZmxhZ3MgPSBST1RQS19JU19IQVNIOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgeworCQkvKiBJbnZhbGlkIGtleSBJRC4gKi8KKwkJcmV0dXJuIDE7CisJfQorfQorCiAjZW5kaWYKIAogLyoKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9jb21tb24ubWsgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfY29tbW9uLm1rCmluZGV4IDVjZGYxYmYuLmIxMTgxMWMgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9jb21tb24ubWsKKysrIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2NvbW1vbi5tawpAQCAtMSw1ICsxLDUgQEAKICMKLSMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNS0yMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAjCkBAIC0zOCw2ICszOCwxMCBAQAogCiAkKGV2YWwgJChjYWxsIGFkZF9kZWZpbmUsQVJNX1JPVFBLX0xPQ0FUSU9OX0lEKSkKIAoraWZlcSAoJHtFTkFCTEVfUk1FfSwgMSkKK0NPVAk6PQljY2EKK2VuZGlmCisKICMgRm9yY2UgZ2VuZXJhdGlvbiBvZiB0aGUgbmV3IGhhc2ggaWYgUk9UX0tFWSBpcyBzcGVjaWZpZWQKIGlmZGVmIFJPVF9LRVkKIAlIQVNIX1BSRVJFUVVJU0lURVMgPSAkKFJPVF9LRVkpIEZPUkNFCkBAIC04OCw0ICs5MiwyOSBAQAogJChCVUlMRF9QTEFUKS9ibDIvYXJtX2Rldl9wcm90cGsubzogJChBUk1fUFJPVFBLX0hBU0gpCiBlbmRpZgogCitpZmVxICgke0NPVH0sY2NhKQorIyBQbGF0Zm9ybSBhbmQgU2VjdXJlIFdvcmxkIFJvb3Qgb2YgVHJ1c3Qga2V5IGZpbGVzLgorQVJNX1BST1RfS0VZCQk6PQlwbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9wcm90cHJpdmtfcnNhLnBlbQorQVJNX1BST1RQS19IQVNICQk6PQlwbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9wcm90cGtfcnNhX3NoYTI1Ni5iaW4KK0FSTV9TV0RfUk9UX0tFWQkJOj0JcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9hcm1fc3dkX3JvdHByaXZrX3JzYS5wZW0KK0FSTV9TV0RfUk9UUEtfSEFTSAk6PQlwbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9zd2Rfcm90cGtfcnNhX3NoYTI1Ni5iaW4KKworIyBQcm92aWRlIHRoZSBwcml2YXRlIGtleXMgdG8gY2VydF9jcmVhdGUgdG9vbC4gSXQgbmVlZHMgdGhlbSB0byBzaWduIHRoZSBpbWFnZXMuCitQUk9UX0tFWQkJOj0JJHtBUk1fUFJPVF9LRVl9CitTV0RfUk9UX0tFWQkJOj0JJHtBUk1fU1dEX1JPVF9LRVl9CisKKyQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZV92YWwsQVJNX1BST1RQS19IQVNILCciJChBUk1fUFJPVFBLX0hBU0gpIicpKQorJChldmFsICQoY2FsbCBhZGRfZGVmaW5lX3ZhbCxBUk1fU1dEX1JPVFBLX0hBU0gsJyIkKEFSTV9TV0RfUk9UUEtfSEFTSCkiJykpCisKK0JMMV9TT1VSQ0VTCQkrPQlwbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9kZXZfcHJvdHBrLlMgXAorCQkJCXBsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX2Rldl9zd2Rfcm90cGsuUworQkwyX1NPVVJDRVMJCSs9CXBsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX2Rldl9wcm90cGsuUyBcCisJCQkJcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9hcm1fZGV2X3N3ZF9yb3Rway5TCisKKyQoQlVJTERfUExBVCkvYmwxL2FybV9kZXZfcHJvdHBrLm86ICQoQVJNX1BST1RQS19IQVNIKQorJChCVUlMRF9QTEFUKS9ibDEvYXJtX2Rldl9zd2Rfcm90cGsubzogJChBUk1fU1dEX1JPVFBLX0hBU0gpCiskKEJVSUxEX1BMQVQpL2JsMi9hcm1fZGV2X3Byb3Rway5vOiAkKEFSTV9QUk9UUEtfSEFTSCkKKyQoQlVJTERfUExBVCkvYmwyL2FybV9kZXZfc3dkX3JvdHBrLm86ICQoQVJNX1NXRF9ST1RQS19IQVNIKQorZW5kaWYKKwogZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvUkVBRE1FIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYyOGE1ZgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvUkVBRE1FCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHNvbWUgZGV2ZWxvcG1lbnQga2V5cyB0byBiZSB1c2VkIGFzIHRoZSBzZWN1cmUgd29ybGQKK3Jvb3Qtb2YtdHJ1c3Qga2V5IHVzZWQgaW4gdGhlIENDQSBjaGFpbiBvZiB0cnVzdC4KKworKiBzd2Rfcm90cHJpdmtfcnNhLnBlbSBpcyBhIDJLIFJTQSBwcml2YXRlIGtleSBpbiBQRU0gZm9ybWF0LiBJdCBoYXMgYmVlbgorICBnZW5lcmF0ZWQgdXNpbmcgdGhlIG9wZW5zc2wgY29tbWFuZCBsaW5lIHRvb2w6CisKKyAgb3BlbnNzbCBnZW5yc2EgMjA0OCA+IGFybV9zd2Rfcm90cHJpdmtfcnNhLnBlbQorCisqIHN3ZF9yb3Rwa19yc2Ffc2hhMjU2LmJpbiBpcyB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBERVItZW5jb2RlZCBwdWJsaWMga2V5CisgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWJvdmUgcHJpdmF0ZSBrZXkuIEl0IGhhcyBiZWVuIGdlbmVyYXRlZCB1c2luZyB0aGUgb3BlbnNzbAorICBjb21tYW5kIGxpbmUgdG9vbDoKKworICBvcGVuc3NsIHJzYSAtaW4gYXJtX3N3ZF9yb3Rwcml2a19yc2EucGVtIC1wdWJvdXQgLW91dGZvcm0gREVSIHwgXAorICAgIG9wZW5zc2wgZGdzdCAtc2hhMjU2IC1iaW5hcnkgPiBhcm1fc3dkX3JvdHBrX3JzYV9zaGEyNTYuYmluCmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9kZXZfc3dkX3JvdHBrLlMgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9kZXZfc3dkX3JvdHBrLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU0ZjlkMgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX2Rldl9zd2Rfcm90cGsuUwpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCisgKi8KKworCS5nbG9iYWwgYXJtX3N3ZF9yb3Rwa19oYXNoCisJLmdsb2JhbCBhcm1fc3dkX3JvdHBrX2hhc2hfZW5kCisKKwkuc2VjdGlvbiAucm9kYXRhLmFybV9zd2Rfcm90cGtfaGFzaCwgImEiCisKK2FybV9zd2Rfcm90cGtfaGFzaDoKKwkvKiBERVIgaGVhZGVyLiAqLworCS5ieXRlIDB4MzAsIDB4MzEsIDB4MzAsIDB4MEQsIDB4MDYsIDB4MDksIDB4NjAsIDB4ODYsIDB4NDgKKwkuYnl0ZSAweDAxLCAweDY1LCAweDAzLCAweDA0LCAweDAyLCAweDAxLCAweDA1LCAweDAwLCAweDA0LCAweDIwCisJLyogS2V5IGhhc2guICovCisJLmluY2JpbiBBUk1fU1dEX1JPVFBLX0hBU0gKK2FybV9zd2Rfcm90cGtfaGFzaF9lbmQ6CmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9zd2Rfcm90cGtfcnNhX3NoYTI1Ni5iaW4gYi9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9zd2Rfcm90cGtfcnNhX3NoYTI1Ni5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmM2U2MAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX3N3ZF9yb3Rwa19yc2Ffc2hhMjU2LmJpbgpAQCAtMCwwICsxIEBACisRML7iwwuS5pwQyMsbFZMo7KgwindJ04HVHunjoWcGawpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX3N3ZF9yb3Rwcml2a19yc2EucGVtIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9hcm1fc3dkX3JvdHByaXZrX3JzYS5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRlNjU1ZAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX3N3ZF9yb3Rwcml2a19yc2EucGVtCkBAIC0wLDAgKzEsMjcgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUVwUUlCQUFLQ0FRRUE4aWdUZDVRZFpkMTgxa3o5dklOcjdBdTM0UnIvcFExanBlc2ZMbGMxWlhDTkFJOXkKKy9yaFFscHcwMHk4cndPZmdac2YxOGdQd0dXV0doREpNc1hJN09QZW03QkVVcjh4S3VtdUp1Q2lPZEpoMVNUY1IKKy9Kb0Z2ejh3SlB5eWNqL0RPRVJSR3N6K1J2RkJzNmNMalNaSE5RZHpLRFcrREU1dlZKcG1OV0JWa29LN01DUkQKK1doL1BNWlZTb3E5UGVKT3pheVljc2lwS3ZpZlQxK1dvOXkyTUc1elREeGkyOHJMci9GQm0wQ3BUZXBCY1JlOEwKK3BtZ1M3WEpLaENRWXhkRFN6eGkvMHQvcVhBd1d1TUU0anYySGJOeHNVWmphaGlCWXBBMEJhZlhhblN1eFZIbHkKK3FwRDBCbUtBdTdQcGdLckVuVWNQdUhwWjJXK2EwNWxOazZ6amV3SURBUUFCQW9JQkFHM3R3WUNjVFlncnR2czEKKzhrMzh2eVpsMzNDaUtBR09oWGtSdHBMNzVmS0oySWl6bGptS0JKT0tqL1I2eW5zRkNIckFOYWRMSUZqM0hNeXcKK1pONTlBK09Ga1ZKRElzZjNqc2ozL29vS1p6a0k2TjEyMFlTQml6QlppQXFTYUpPeTNIV1RsZG43eTBiN1NKODgKK3F1TEZ5TGVMRFR6b3dNQ25icVRTZnFtbWROSlFBbitRKzdSWDVzWkd5QlFVRjJwUkFBNjdjT1l6YzNhNU1aNUUKK3pCT3MydThWYm9DM3VsRXE4NzZYV1FiY1hwUmgvYXAzZXBsUTFrQWR5eTY0SVBwMldieHF5WFcwSVFBUXFhcWgKKzZvajE5TUU2bVZENXd0RUxjWXNjSkNEYjdwQTZXSnRQcDZuei9vZzJpZkNKRS83NVQ1Uko2ZmM2ZUJGTWNvZlEKK1NUSUNsR0VDZ1lFQS9aQzBHWDFIVEtFS0szYzFUaVMzWnkwRFM1Wm9ONUtGSzdTcDFaQWpQRTYzaUFyMWEzejkKK0tlcGIrTDhUQlN3NTB0VkQ3NE1GNUNoRWlkL2doRjVCclZDMy9ZSmtpaU5wTTFGNTFTTUxHRmVpRFBSekpjeDUKK0tKa1NmbFg3UTM2QkFYcWo4NVl6NUFqZ1RQS2NCcVFSVlo2cE5aTjFIWTk5TWxvTWcyMldQUkVDZ1lFQTlIdFUKK0ZYbW5UcGxYYU5uaWhkcSt2TDVaNC9LRE0rMWYxRTk1eTFQQjh2a0xJK28xc3pWTkZQK0JZeit3NDJsS3RIVysKK2MrejQwQWhGQkdaUTBRQ3g4M05PeU9iQ1JlRmpFYlA4Tno3MUJzSGU2R3lNazl0U1BJcHp1OVhCNDlScys5RU8KK0RBdkZNNXkyajViSCtsWEUwcFN5UzNvQmY1MUw5WkNQaHAvdkI4c0NnWUVBeWR3QjFHenNidStoRmZzL3YyYngKK2Jyemg2N0hnWTZWTVNQLzVXRi8zL1JHNWdCOGhRNkhzTlFzeWpyTW1aQzdTRmFyYiszZTJIKzJDcXJSRW0zd2kKK0V1UzRwS1BDZ0VveWZMMDNIVnRaZ05aNjFvOWdmODNwQWszaDhCdG8vVkZmU0JzbkhFc09JbEtDcGg5WjROdUsKK1JUd2EvdURXRW1OaHlzenZPMDNwbGRFQ2dZRUEyekI3R1duaGMxbU5nYWJmTFkwSnR1U2VhUHp6WHFueVljSUQKK2V5VVQzUWdsVWNUWThsdldTUDR1ZmRJTGdFZlZQMmZWSWRBUzMwaWF3REFQUXVMeHFFZjRHYXl4L3I3cytHRTYKK3ZqbEdxeEZFRFhQTXNYOVFBcEZLNDl2b29wL0FPaUNiREhlOURPSHkxMWVpNFREbWJybjhCQ2xWa0pseEVhL1MKK3ppc3p2Zk1DZ1lFQTJWMHpYemlvb0kwdG9hT0pFV1psQVloRU9OUzVTRzJ6MjhITUxOZ2JkTWN1ZUdOaHNlYVIKK05CR2dQY3UzRVFoYkwvaEQwdEJzMDl1NmdqeTFXRDFpMEhZbm0xSzFZUTFmbHpmYmpVYTNCcVpFVE1iTmh1Z2QKK0NNOXl2MEdFTC91ZFp5T21PNDAxYVlsK1FHWFpYL1d3bExRT2U3V3FRWE9YSnZXNzNvU3F5N009CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vYm9hcmQvZnZwL2ZkdHMvZnZwX3RiX2Z3X2NvbmZpZy5kdHMgYi9wbGF0L2FybS9ib2FyZC9mdnAvZmR0cy9mdnBfdGJfZndfY29uZmlnLmR0cwppbmRleCBjZjRlZjJkLi42ZmQzMzRkIDEwMDY0NAotLS0gYS9wbGF0L2FybS9ib2FyZC9mdnAvZmR0cy9mdnBfdGJfZndfY29uZmlnLmR0cworKysgYi9wbGF0L2FybS9ib2FyZC9mdnAvZmR0cy9mdnBfdGJfZndfY29uZmlnLmR0cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMiwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC00Nyw2ICs0Nyw5IEBACiAJCQlzb2NfZndfY2ZnX3V1aWQgPSAiOTk3OTgxNGItMDM3Ni1mYjQ2LThjOGUtOGQyNjdmNzg1OWUwIjsKIAkJCXRvc19md19jZmdfdXVpZCA9ICIyNjI1N2MxYS1kYmM2LTdmNDctOGQ5Ni1jNGM0YjAyNDgwMjEiOwogCQkJbnRfZndfY2ZnX3V1aWQgPSAiMjhkYTk4MTUtOTNlOC03ZTQ0LWFjNjYtMWFhZjgwMTU1MGY5IjsKKwkJCWNjYV9jZXJ0X3V1aWQgPSAiMzZkODNkODUtNzYxZC00ZGFmLTk2ZjEtY2Q5OWQ2NTY5YjAwIjsKKwkJCWNvcmVfc3dkX2NlcnRfdXVpZCA9ICI1MjIyMmQzMS04MjBmLTQ5NGQtOGJiYy1lYTY4MjVkM2MzNWEiOworCQkJcGxhdF9jZXJ0X3V1aWQgPSAiZDQzY2Q5MDItNWI5Zi00MTJlLThhYzYtOTJiNmQxOGJlNjBkIjsKIAkJCXRfa2V5X2NlcnRfdXVpZCA9ICI4MjdlZTg5MC1mODYwLWU0MTEtYTFiNC03NzdhMjFiNGY5NGMiOwogCQkJc2NwX2Z3X2tleV91dWlkID0gIjAyNDIyMWExLWY4NjAtZTQxMS04ZDliLWYzM2MwZTE1YTAxNCI7CiAJCQlzb2NfZndfa2V5X3V1aWQgPSAiOGFiOGJlY2MtZjk2MC1lNDExLTlhZDAtZWI0ODIyZDhkY2Y4IjsKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2Z2cC9pbmNsdWRlL3BsYXRmb3JtX2RlZi5oIGIvcGxhdC9hcm0vYm9hcmQvZnZwL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmgKaW5kZXggODJiZDdjOC4uYzc1YWNhNyAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvZnZwL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmgKKysrIGIvcGxhdC9hcm0vYm9hcmQvZnZwL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmgKQEAgLTE5Nyw2ICsxOTcsOSBAQAogIyBkZWZpbmUgUExBVF9BUk1fTUFYX0JMMl9TSVpFCShVTCgweDFFMDAwKSAtIEZWUF9CTDJfUk9NTElCX09QVElNSVpBVElPTikKICNlbGlmIENSWVBUT19TVVBQT1JUCiAjIGRlZmluZSBQTEFUX0FSTV9NQVhfQkwyX1NJWkUJKFVMKDB4MUQwMDApIC0gRlZQX0JMMl9ST01MSUJfT1BUSU1JWkFUSU9OKQorI2VsaWYgQVJNX0JMMzFfSU5fRFJBTQorLyogV2hlbiBBUk1fQkwzMV9JTl9EUkFNIGlzIHNldCwgQkwyIGNhbiB1c2UgYWxtb3N0IGFsbCBvZiBUcnVzdGVkIFNSQU0uICovCisjIGRlZmluZSBQTEFUX0FSTV9NQVhfQkwyX1NJWkUJKFVMKDB4MUYwMDApIC0gRlZQX0JMMl9ST01MSUJfT1BUSU1JWkFUSU9OKQogI2Vsc2UKICMgZGVmaW5lIFBMQVRfQVJNX01BWF9CTDJfU0laRQkoVUwoMHgxMzAwMCkgLSBGVlBfQkwyX1JPTUxJQl9PUFRJTUlaQVRJT04pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL3JkbjIvZmR0cy9yZG4yX250X2Z3X2NvbmZpZy5kdHMgYi9wbGF0L2FybS9ib2FyZC9yZG4yL2ZkdHMvcmRuMl9udF9md19jb25maWcuZHRzCmluZGV4IGJiYzM2ZmMuLmRkNzAxNDEgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2JvYXJkL3JkbjIvZmR0cy9yZG4yX250X2Z3X2NvbmZpZy5kdHMKKysrIGIvcGxhdC9hcm0vYm9hcmQvcmRuMi9mZHRzL3JkbjJfbnRfZndfY29uZmlnLmR0cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtMTgsNSArMTgsMjYgQEAKIAkJcGxhdGZvcm0taWQgPSA8MHgwPjsKIAkJY29uZmlnLWlkID0gPDB4MD47CiAJCW11bHRpLWNoaXAtbW9kZSA9IDwweDA+OworCQkvKgorCQkgKiBGaXJzdCBjZWxsIHBhaXI6IENvdW50IG9mIGlzb2xhdGVkIENQVXMgaW4gdGhlIGxpc3QuCisJCSAqIFJlc3Qgb2YgdGhlIGNlbGxzOiBNUElEIGxpc3Qgb2YgdGhlIGlzb2xhdGVkIENQVXMuCisJCSAqLworCQlpc29sYXRlZC1jcHUtbGlzdCA9IDwweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwPjsKIAl9OwogfTsKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2NvbW1vbi9hcm1fY29tbW9uLm1rIGIvcGxhdC9hcm0vY29tbW9uL2FybV9jb21tb24ubWsKaW5kZXggNmQ3YWEyZC4uMTBiMDFmYSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vY29tbW9uL2FybV9jb21tb24ubWsKKysrIGIvcGxhdC9hcm0vY29tbW9uL2FybV9jb21tb24ubWsKQEAgLTM3Myw2ICszNzMsOCBAQAogICAgICAgICBlbmRpZgogICAgIGVsc2UgaWZlcSAoJHtDT1R9LGR1YWxyb290KQogICAgICAgICBBVVRIX1NPVVJDRVMJKz0JZHJpdmVycy9hdXRoL2R1YWxyb290L2NvdC5jCisgICAgZWxzZSBpZmVxICgke0NPVH0sY2NhKQorICAgICAgICBBVVRIX1NPVVJDRVMJKz0JZHJpdmVycy9hdXRoL2NjYS9jb3QuYwogICAgIGVsc2UKICAgICAgICAgJChlcnJvciBVbmtub3duIGNoYWluIG9mIHRydXN0ICR7Q09UfSkKICAgICBlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY29tbW9uL2Zjb25mL2FybV9mY29uZl9pby5jIGIvcGxhdC9hcm0vY29tbW9uL2Zjb25mL2FybV9mY29uZl9pby5jCmluZGV4IGFlYTJmMzguLjZjMzIzMzEgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2NvbW1vbi9mY29uZi9hcm1fZmNvbmZfaW8uYworKysgYi9wbGF0L2FybS9jb21tb24vZmNvbmYvYXJtX2Zjb25mX2lvLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtNzIsNiArNzIsOSBAQAogI2lmIFRSVVNURURfQk9BUkRfQk9PVAogCVtUUlVTVEVEX0JPT1RfRldfQ0VSVF9JRF0gPSB7VVVJRF9UUlVTVEVEX0JPT1RfRldfQ0VSVH0sCiAjaWYgIUFSTV9JT19JTl9EVEIKKwlbQ0NBX0NPTlRFTlRfQ0VSVF9JRF0gPSB7VVVJRF9DQ0FfQ09OVEVOVF9DRVJUfSwKKwlbQ09SRV9TV0RfS0VZX0NFUlRfSURdID0ge1VVSURfQ09SRV9TV0RfS0VZX0NFUlR9LAorCVtQTEFUX0tFWV9DRVJUX0lEXSA9IHtVVUlEX1BMQVRfS0VZX0NFUlR9LAogCVtUUlVTVEVEX0tFWV9DRVJUX0lEXSA9IHtVVUlEX1RSVVNURURfS0VZX0NFUlR9LAogCVtTQ1BfRldfS0VZX0NFUlRfSURdID0ge1VVSURfU0NQX0ZXX0tFWV9DRVJUfSwKIAlbU09DX0ZXX0tFWV9DRVJUX0lEXSA9IHtVVUlEX1NPQ19GV19LRVlfQ0VSVH0sCkBAIC0xOTYsNiArMTk5LDIxIEBACiAJCW9wZW5fZmlwCiAJfSwKICNpZiAhQVJNX0lPX0lOX0RUQgorCVtDQ0FfQ09OVEVOVF9DRVJUX0lEXSA9IHsKKwkJJmZpcF9kZXZfaGFuZGxlLAorCQkodWludHB0cl90KSZhcm1fdXVpZF9zcGVjW0NDQV9DT05URU5UX0NFUlRfSURdLAorCQlvcGVuX2ZpcAorCX0sCisJW0NPUkVfU1dEX0tFWV9DRVJUX0lEXSA9IHsKKwkJJmZpcF9kZXZfaGFuZGxlLAorCQkodWludHB0cl90KSZhcm1fdXVpZF9zcGVjW0NPUkVfU1dEX0tFWV9DRVJUX0lEXSwKKwkJb3Blbl9maXAKKwl9LAorCVtQTEFUX0tFWV9DRVJUX0lEXSA9IHsKKwkJJmZpcF9kZXZfaGFuZGxlLAorCQkodWludHB0cl90KSZhcm1fdXVpZF9zcGVjW1BMQVRfS0VZX0NFUlRfSURdLAorCQlvcGVuX2ZpcAorCX0sCiAJW1RSVVNURURfS0VZX0NFUlRfSURdID0gewogCQkmZmlwX2Rldl9oYW5kbGUsCiAJCSh1aW50cHRyX3QpJmFybV91dWlkX3NwZWNbVFJVU1RFRF9LRVlfQ0VSVF9JRF0sCkBAIC0yNjAsNyArMjc4LDcgQEAKICNpZmRlZiBJTUFHRV9CTDIKIAogI2lmIFRSVVNURURfQk9BUkRfQk9PVAotI2RlZmluZSBGQ09ORl9BUk1fSU9fVVVJRF9OVU1CRVIJVSgyMSkKKyNkZWZpbmUgRkNPTkZfQVJNX0lPX1VVSURfTlVNQkVSCVUoMjQpCiAjZWxzZQogI2RlZmluZSBGQ09ORl9BUk1fSU9fVVVJRF9OVU1CRVIJVSgxMCkKICNlbmRpZgpAQCAtMjg2LDYgKzMwNCw5IEBACiAJe1RPU19GV19DT05GSUdfSUQsICJ0b3NfZndfY2ZnX3V1aWQifSwKIAl7TlRfRldfQ09ORklHX0lELCAibnRfZndfY2ZnX3V1aWQifSwKICNpZiBUUlVTVEVEX0JPQVJEX0JPT1QKKwl7Q0NBX0NPTlRFTlRfQ0VSVF9JRCwgImNjYV9jZXJ0X3V1aWQifSwKKwl7Q09SRV9TV0RfS0VZX0NFUlRfSUQsICJjb3JlX3N3ZF9jZXJ0X3V1aWQifSwKKwl7UExBVF9LRVlfQ0VSVF9JRCwgInBsYXRfY2VydF91dWlkIn0sCiAJe1RSVVNURURfS0VZX0NFUlRfSUQsICJ0X2tleV9jZXJ0X3V1aWQifSwKIAl7U0NQX0ZXX0tFWV9DRVJUX0lELCAic2NwX2Z3X2tleV91dWlkIn0sCiAJe1NPQ19GV19LRVlfQ0VSVF9JRCwgInNvY19md19rZXlfdXVpZCJ9LApkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9iYXNlX3BsYXRmb3JtX2RlZi5oIGIvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9iYXNlX3BsYXRmb3JtX2RlZi5oCmluZGV4IGM5YzhjMDQuLjU4YTE1M2EgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfYmFzZV9wbGF0Zm9ybV9kZWYuaAorKysgYi9wbGF0L2FybS9jc3Mvc2dpL2luY2x1ZGUvc2dpX2Jhc2VfcGxhdGZvcm1fZGVmLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjEsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTM1LDggKzM1LDggQEAKICMgaWYgU1BNX01NCiAjICBkZWZpbmUgUExBVF9BUk1fTU1BUF9FTlRSSUVTCQkoOSAgKyAoKENTU19TR0lfQ0hJUF9DT1VOVCAtIDEpICogMykpCiAjICBkZWZpbmUgTUFYX1hMQVRfVEFCTEVTCQkoNyAgKyAoKENTU19TR0lfQ0hJUF9DT1VOVCAtIDEpICogMykpCi0jICBkZWZpbmUgUExBVF9TUF9JTUFHRV9NTUFQX1JFR0lPTlMJOQotIyAgZGVmaW5lIFBMQVRfU1BfSU1BR0VfTUFYX1hMQVRfVEFCTEVTCTExCisjICBkZWZpbmUgUExBVF9TUF9JTUFHRV9NTUFQX1JFR0lPTlMJMTAKKyMgIGRlZmluZSBQTEFUX1NQX0lNQUdFX01BWF9YTEFUX1RBQkxFUwkxMgogIyBlbHNlCiAjICBkZWZpbmUgUExBVF9BUk1fTU1BUF9FTlRSSUVTCQkoNSArICgoQ1NTX1NHSV9DSElQX0NPVU5UIC0gMSkgKiAzKSkKICMgIGRlZmluZSBNQVhfWExBVF9UQUJMRVMJCSg2ICsgKChDU1NfU0dJX0NISVBfQ09VTlQgLSAxKSAqIDMpKQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgKiBjYWxjdWxhdGVkIHVzaW5nIHRoZSBjdXJyZW50IEJMMzEgUFJPR0JJVFMgZGVidWcgc2l6ZSBwbHVzIHRoZSBzaXplcyBvZgogICogQkwyIGFuZCBCTDEtUlcKICAqLwotI2RlZmluZSBQTEFUX0FSTV9NQVhfQkwzMV9TSVpFCQkweDNCMDAwCisjZGVmaW5lIFBMQVRfQVJNX01BWF9CTDMxX1NJWkUJCTB4NDgwMDAKIAogLyoKICAqIFNpemUgb2YgY2FjaGVhYmxlIHN0YWNrcwpAQCAtMTMwLDYgKzEzMCwyMSBAQAogIyBkZWZpbmUgUExBVEZPUk1fU1RBQ0tfU0laRSAweDQ0MAogI2VuZGlmCiAKKy8qIFBMMDExIFVBUlQgcmVsYXRlZCBjb25zdGFudHMgKi8KKyNkZWZpbmUgU09DX0NTU19TRUNfVUFSVF9CQVNFCQkJVUwoMHgyQTQxMDAwMCkKKyNkZWZpbmUgU09DX0NTU19OU0VDX1VBUlRfQkFTRQkJCVVMKDB4MkE0MDAwMDApCisjZGVmaW5lIFNPQ19DU1NfVUFSVF9TSVpFCQkJVUwoMHgxMDAwMCkKKyNkZWZpbmUgU09DX0NTU19VQVJUX0NMS19JTl9IWgkJCVVMKDczNzI4MDApCisKKy8qIFVBUlQgcmVsYXRlZCBjb25zdGFudHMgKi8KKyNkZWZpbmUgUExBVF9BUk1fQk9PVF9VQVJUX0JBU0UJCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UKKyNkZWZpbmUgUExBVF9BUk1fQk9PVF9VQVJUX0NMS19JTl9IWgkJU09DX0NTU19VQVJUX0NMS19JTl9IWgorCisjZGVmaW5lIFBMQVRfQVJNX1JVTl9VQVJUX0JBU0UJCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UKKyNkZWZpbmUgUExBVF9BUk1fUlVOX1VBUlRfQ0xLX0lOX0haCQlTT0NfQ1NTX1VBUlRfQ0xLX0lOX0haCisKKyNkZWZpbmUgUExBVF9BUk1fQ1JBU0hfVUFSVF9CQVNFCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UKKyNkZWZpbmUgUExBVF9BUk1fQ1JBU0hfVUFSVF9DTEtfSU5fSFoJCVNPQ19DU1NfVUFSVF9DTEtfSU5fSFoKIAogI2RlZmluZSBQTEFUX0FSTV9OU1RJTUVSX0ZSQU1FX0lECTAKIApAQCAtMjU4LDQgKzI3MywyMSBAQAogCQlDU1NfU0dJX1JFTU9URV9DSElQX01FTV9PRkZTRVQobikgKyBBUk1fRFJBTTJfRU5ELAlcCiAJCUFSTV9UWkNfTlNfRFJBTV9TX0FDQ0VTUywgUExBVF9BUk1fVFpDX05TX0RFVl9BQ0NFU1N9CiAKKyNpZiBTUE1fTU0KKworLyoKKyAqIFN0YW5kLWFsb25lIE1NIGxvZ3Mgd291bGQgYmUgcm91dGVkIHZpYSBzZWN1cmUgVUFSVC4gRGVmaW5lIHBhZ2UgdGFibGUKKyAqIGVudHJ5IGZvciBzZWN1cmUgVUFSVCB3aGljaCB3b3VsZCBiZSBjb21tb24gdG8gYWxsIHBsYXRmb3Jtcy4KKyAqLworI2RlZmluZSBTT0NfUExBVEZPUk1fU0VDVVJFX1VBUlQJTUFQX1JFR0lPTl9GTEFUKAkJXAorCQkJCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UsCQlcCisJCQkJCVNPQ19DU1NfVUFSVF9TSVpFLAkJXAorCQkJCQlNVF9ERVZJQ0UgfCBNVF9SVyB8IAkJXAorCQkJCQlNVF9TRUNVUkUgfCBNVF9VU0VSKQorCisjZW5kaWYKKworLyogU0RTIElEIGZvciB1bnVzYWJsZSBDUFUgTVBJRCBsaXN0IHN0cnVjdHVyZSAqLworI2RlZmluZSBTRFNfSVNPTEFURURfQ1BVX0xJU1RfSUQJCVUoMTI4KQorCiAjZW5kaWYgLyogU0dJX0JBU0VfUExBVEZPUk1fREVGX0ggKi8KZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX2Nzc19kZWYuaCBiL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX2Nzc19kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzhiNDVhCi0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9zb2NfY3NzX2RlZi5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpZm5kZWYgU0dJX1NPQ19DU1NfREVGX0gKKyNkZWZpbmUgU0dJX1NPQ19DU1NfREVGX0gKKworI2luY2x1ZGUgPGxpYi91dGlsc19kZWYuaD4KKyNpbmNsdWRlIDxwbGF0L2FybS9ib2FyZC9jb21tb24vdjJtX2RlZi5oPgorI2luY2x1ZGUgPHBsYXQvYXJtL3NvYy9jb21tb24vc29jX2Nzc19kZWYuaD4KKyNpbmNsdWRlIDxwbGF0L2NvbW1vbi9jb21tb25fZGVmLmg+CisKKy8qCisgKiBEZWZpbml0aW9ucyBjb21tb24gdG8gYWxsIEFSTSBDU1N2MS1iYXNlZCBkZXZlbG9wbWVudCBwbGF0Zm9ybXMKKyAqLworCisvKiBQbGF0Zm9ybSBJRCBhZGRyZXNzICovCisjZGVmaW5lIEJPQVJEX0NTU19QTEFUX0lEX1JFR19BRERSCQlVTCgweDdmZmUwMGUwKQorCisvKiBQbGF0Zm9ybSBJRCByZWxhdGVkIGFjY2Vzc29ycyAqLworI2RlZmluZSBCT0FSRF9DU1NfUExBVF9JRF9SRUdfSURfTUFTSwkJMHgwZgorI2RlZmluZSBCT0FSRF9DU1NfUExBVF9JRF9SRUdfSURfU0hJRlQJCTB4MAorI2RlZmluZSBCT0FSRF9DU1NfUExBVF9UWVBFX0VNVUxBVE9SCQkweDAyCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworCisjaW5jbHVkZSA8bGliL21taW8uaD4KKworI2RlZmluZSBCT0FSRF9DU1NfR0VUX1BMQVRfVFlQRShhZGRyKQkJCQkJXAorCSgobW1pb19yZWFkXzMyKGFkZHIpICYgQk9BUkRfQ1NTX1BMQVRfSURfUkVHX0lEX01BU0spCQlcCisJPj4gQk9BUkRfQ1NTX1BMQVRfSURfUkVHX0lEX1NISUZUKQorCisjZW5kaWYgLyogX19BU1NFTUJMRVJfXyAqLworCisjZGVmaW5lIE1BWF9JT19ERVZJQ0VTCQkJMworI2RlZmluZSBNQVhfSU9fSEFORExFUwkJCTQKKworLyogUmVzZXJ2ZSB0aGUgbGFzdCBibG9jayBvZiBmbGFzaCBmb3IgUFNDSSBNRU0gUFJPVEVDVCBmbGFnICovCisjZGVmaW5lIFBMQVRfQVJNX0ZMQVNIX0lNQUdFX0JBU0UJVjJNX0ZMQVNIMF9CQVNFCisjZGVmaW5lIFBMQVRfQVJNX0ZMQVNIX0lNQUdFX01BWF9TSVpFCShWMk1fRkxBU0gwX1NJWkUgLSBWMk1fRkxBU0hfQkxPQ0tfU0laRSkKKworI2RlZmluZSBQTEFUX0FSTV9OVk1fQkFTRQkJVjJNX0ZMQVNIMF9CQVNFCisjZGVmaW5lIFBMQVRfQVJNX05WTV9TSVpFCQkoVjJNX0ZMQVNIMF9TSVpFIC0gVjJNX0ZMQVNIX0JMT0NLX1NJWkUpCisKKyNlbmRpZiAvKiBTR0lfU09DX0NTU19ERUZfSCAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9zb2NfY3NzX2RlZl92Mi5oIGIvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9zb2NfY3NzX2RlZl92Mi5oCmluZGV4IDYzOWI2ODcuLmFjZjMxZWIgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX2Nzc19kZWZfdjIuaAorKysgYi9wbGF0L2FybS9jc3Mvc2dpL2luY2x1ZGUvc2dpX3NvY19jc3NfZGVmX3YyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0yNCwxNyArMjQsMTAgQEAKIAogI2RlZmluZSBTT0NfQ1NTX1BDSUVfQ09OVFJPTF9CQVNFCVVMKDB4MGVmMjAwMDApCiAKLS8qIFBMMDExIFVBUlQgcmVsYXRlZCBjb25zdGFudHMgKi8KLSNkZWZpbmUgU09DX0NTU19VQVJUMV9CQVNFCQlVTCgweDBlZjgwMDAwKQotI2RlZmluZSBTT0NfQ1NTX1VBUlQwX0JBU0UJCVVMKDB4MGVmNzAwMDApCi0KIC8qIE1lbW9yeSBjb250cm9sbGVyICovCiAjZGVmaW5lIFNPQ19NRU1DTlRSTF9CQVNFCQlVTCgweDEwMDAwMDAwKQogI2RlZmluZSBTT0NfTUVNQ05UUkxfU0laRQkJVUwoMHgxMDAwMDAwMCkKIAotI2RlZmluZSBTT0NfQ1NTX1VBUlQwX0NMS19JTl9IWgkJVUwoNzM3MjgwMCkKLSNkZWZpbmUgU09DX0NTU19VQVJUMV9DTEtfSU5fSFoJCVVMKDczNzI4MDApCi0KIC8qIFNvQyBOSUMtNDAwIEdsb2JhbCBQcm9ncmFtbWVycyBWaWV3IChHUFYpICovCiAjZGVmaW5lIFNPQ19DU1NfTklDNDAwX0JBU0UJCVVMKDB4MEVEMDAwMDApCiAKQEAgLTIwNiwxNyArMTk5LDQgQEAKICNkZWZpbmUgUExBVF9BUk1fTlZNX0JBU0UJCVYyTV9GTEFTSDBfQkFTRQogI2RlZmluZSBQTEFUX0FSTV9OVk1fU0laRQkJKFYyTV9GTEFTSDBfU0laRSAtIFYyTV9GTEFTSF9CTE9DS19TSVpFKQogCi0vKiBVQVJUIHJlbGF0ZWQgY29uc3RhbnRzICovCi0jZGVmaW5lIFBMQVRfQVJNX0JPT1RfVUFSVF9CQVNFCQkJU09DX0NTU19VQVJUMF9CQVNFCi0jZGVmaW5lIFBMQVRfQVJNX0JPT1RfVUFSVF9DTEtfSU5fSFoJCVNPQ19DU1NfVUFSVDBfQ0xLX0lOX0haCi0KLSNkZWZpbmUgUExBVF9BUk1fUlVOX1VBUlRfQkFTRQkJCVNPQ19DU1NfVUFSVDFfQkFTRQotI2RlZmluZSBQTEFUX0FSTV9SVU5fVUFSVF9DTEtfSU5fSFoJCVNPQ19DU1NfVUFSVDFfQ0xLX0lOX0haCi0KLSNkZWZpbmUgUExBVF9BUk1fU1BfTUlOX1JVTl9VQVJUX0JBU0UJCVNPQ19DU1NfVUFSVDFfQkFTRQotI2RlZmluZSBQTEFUX0FSTV9TUF9NSU5fUlVOX1VBUlRfQ0xLX0lOX0haCVNPQ19DU1NfVUFSVDFfQ0xLX0lOX0haCi0KLSNkZWZpbmUgUExBVF9BUk1fQ1JBU0hfVUFSVF9CQVNFCQlQTEFUX0FSTV9SVU5fVUFSVF9CQVNFCi0jZGVmaW5lIFBMQVRfQVJNX0NSQVNIX1VBUlRfQ0xLX0lOX0haCQlQTEFUX0FSTV9SVU5fVUFSVF9DTEtfSU5fSFoKLQogI2VuZGlmIC8qIFNHSV9TT0NfQ1NTX0RFRl9WMl9IICovCmRpZmYgLS1naXQgYS9wbGF0L2FybS9jc3Mvc2dpL2luY2x1ZGUvc2dpX3NvY19wbGF0Zm9ybV9kZWYuaCBiL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX3BsYXRmb3JtX2RlZi5oCmluZGV4IDQwNWQ2MmYuLjNiOGQ5YzYgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX3BsYXRmb3JtX2RlZi5oCisrKyBiL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX3BsYXRmb3JtX2RlZi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC03LDEwICs3LDEwIEBACiAjaWZuZGVmIFNHSV9TT0NfUExBVEZPUk1fREVGX0gKICNkZWZpbmUgU0dJX1NPQ19QTEFURk9STV9ERUZfSAogCi0jaW5jbHVkZSA8c2dpX2Jhc2VfcGxhdGZvcm1fZGVmLmg+Ci0jaW5jbHVkZSA8cGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2Nzc19kZWYuaD4KICNpbmNsdWRlIDxwbGF0L2FybS9ib2FyZC9jb21tb24vdjJtX2RlZi5oPgogI2luY2x1ZGUgPHBsYXQvYXJtL3NvYy9jb21tb24vc29jX2Nzc19kZWYuaD4KKyNpbmNsdWRlIDxzZ2lfYmFzZV9wbGF0Zm9ybV9kZWYuaD4KKyNpbmNsdWRlIDxzZ2lfc29jX2Nzc19kZWYuaD4KIAogLyogTWFwIHRoZSBTeXN0ZW0gcmVnaXN0ZXJzIHRvIGFjY2VzcyBmcm9tIFMtRUwwICovCiAjZGVmaW5lIENTU19TWVNURU1SRUdfREVWSUNFX0JBU0UJKDB4MUMwMTAwMDApCmRpZmYgLS1naXQgYS9wbGF0L2FybS9jc3Mvc2dpL3NnaS1jb21tb24ubWsgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaS1jb21tb24ubWsKaW5kZXggNzZjODAyNS4uNGFmNTc5ZSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2ktY29tbW9uLm1rCisrKyBiL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpLWNvbW1vbi5tawpAQCAtNDQsNyArNDQsOCBAQAogQkwxX1NPVVJDRVMJCSs9CSR7SU5URVJDT05ORUNUX1NPVVJDRVN9CQkJXAogCQkJCWRyaXZlcnMvYXJtL3Nic2Evc2JzYS5jCiAKLUJMMl9TT1VSQ0VTCQkrPQkke0NTU19FTlRfQkFTRX0vc2dpX2ltYWdlX2xvYWQuYworQkwyX1NPVVJDRVMJCSs9CSR7Q1NTX0VOVF9CQVNFfS9zZ2lfaW1hZ2VfbG9hZC5jCVwKKwkJCQlkcml2ZXJzL2FybS9jc3Mvc2RzL3Nkcy5jCiAKIEJMMzFfU09VUkNFUwkJKz0JJHtJTlRFUkNPTk5FQ1RfU09VUkNFU30JCQlcCiAJCQkJJHtFTlRfR0lDX1NPVVJDRVN9CQkJXApkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfaW1hZ2VfbG9hZC5jIGIvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfaW1hZ2VfbG9hZC5jCmluZGV4IDA5ZjNiNzIuLmFjNGJmZDIgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpX2ltYWdlX2xvYWQuYworKysgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaV9pbWFnZV9sb2FkLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTksMTYgKzksNjggQEAKICNpbmNsdWRlIDxhcmNoX2hlbHBlcnMuaD4KICNpbmNsdWRlIDxjb21tb24vZGVidWcuaD4KICNpbmNsdWRlIDxjb21tb24vZGVzY19pbWFnZV9sb2FkLmg+CisjaW5jbHVkZSA8ZHJpdmVycy9hcm0vY3NzL3Nkcy5oPgogI2luY2x1ZGUgPHBsYXQvYXJtL2NvbW1vbi9wbGF0X2FybS5oPgogI2luY2x1ZGUgPHBsYXQvY29tbW9uL3BsYXRmb3JtLmg+CiAKKyNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KKyNpbmNsdWRlIDxzZ2lfYmFzZV9wbGF0Zm9ybV9kZWYuaD4KICNpbmNsdWRlIDxzZ2lfdmFyaWFudC5oPgogCisvKgorICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIGlzb2xhdGVkIENQVXMgb2J0YWluZWQgZnJvbSBTRFMuCisgKi8KK3N0cnVjdCBpc29sYXRlZF9jcHVfbXBpZF9saXN0IHsKKwl1aW50NjRfdCBudW1fZW50cmllczsgLyogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGxpc3QgKi8KKwl1aW50NjRfdCBtcGlkX2xpc3RbUExBVEZPUk1fQ09SRV9DT1VOVF07IC8qIExpc3Qgb2YgaXNvbGF0ZWQgQ1BVIE1QSURzICovCit9OworCisvKiBGdW5jdGlvbiB0byByZWFkIGlzb2xhdGVkIENQVSBNUElEIGxpc3QgZnJvbSBTRFMuICovCit2b2lkIHBsYXRfYXJtX3NnaV9nZXRfaXNvbGF0ZWRfY3B1X2xpc3Qoc3RydWN0IGlzb2xhdGVkX2NwdV9tcGlkX2xpc3QgKmxpc3QpCit7CisJaW50IHJldDsKKworCXJldCA9IHNkc19pbml0KCk7CisJaWYgKHJldCAhPSBTRFNfT0spIHsKKwkJRVJST1IoIlNEUyBpbml0aWFsaXphdGlvbiBmYWlsZWQsIGVycm9yOiAlZFxuIiwgcmV0KTsKKwkJcGFuaWMoKTsKKwl9CisKKwlyZXQgPSBzZHNfc3RydWN0X3JlYWQoU0RTX0lTT0xBVEVEX0NQVV9MSVNUX0lELCAwLCAmbGlzdC0+bnVtX2VudHJpZXMsCisJCQlzaXplb2YobGlzdC0+bnVtX2VudHJpZXMpLCBTRFNfQUNDRVNTX01PREVfQ0FDSEVEKTsKKwlpZiAocmV0ICE9IFNEU19PSykgeworCQlJTkZPKCJTRFMgQ1BVIG51bSBlbGVtZW50cyByZWFkIGZhaWxlZCwgZXJyb3I6ICVkXG4iLCByZXQpOworCQlsaXN0LT5udW1fZW50cmllcyA9IDA7CisJCXJldHVybjsKKwl9CisKKwlpZiAobGlzdC0+bnVtX2VudHJpZXMgPiBQTEFURk9STV9DT1JFX0NPVU5UKSB7CisJCUVSUk9SKCJJc29sYXRlZCBDUFUgbGlzdCBjb3VudCAlbGQgZ3JlYXRlciB0aGFuIG1heCIKKwkJICAgICAgIiBudW1iZXIgc3VwcG9ydGVkICVkXG4iLAorCQkgICAgICBsaXN0LT5udW1fZW50cmllcywgUExBVEZPUk1fQ09SRV9DT1VOVCk7CisJCXBhbmljKCk7CisJfSBlbHNlIGlmIChsaXN0LT5udW1fZW50cmllcyA9PSAwKSB7CisJCUlORk8oIlNEUyBpc29sYXRlZCBDUFUgbGlzdCBpcyBlbXB0eVxuIik7CisJCXJldHVybjsKKwl9CisKKwlyZXQgPSBzZHNfc3RydWN0X3JlYWQoU0RTX0lTT0xBVEVEX0NQVV9MSVNUX0lELAorCQkJc2l6ZW9mKGxpc3QtPm51bV9lbnRyaWVzKSwKKwkJCSZsaXN0LT5tcGlkX2xpc3QsCisJCQlzaXplb2YobGlzdC0+bXBpZF9saXN0WzBdKSAqIGxpc3QtPm51bV9lbnRyaWVzLAorCQkJU0RTX0FDQ0VTU19NT0RFX0NBQ0hFRCk7CisJaWYgKHJldCAhPSBTRFNfT0spIHsKKwkJRVJST1IoIlNEUyBDUFUgbGlzdCByZWFkIGZhaWxlZC4gZXJyb3I6ICVkXG4iLCByZXQpOworCQlwYW5pYygpOworCX0KK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIFRoaXMgZnVuY3Rpb24gaW5zZXJ0cyBQbGF0Zm9ybSBpbmZvcm1hdGlvbiB2aWEgZGV2aWNlIHRyZWUgbm9kZXMgYXMsCiAgKiBzeXN0ZW0taWQgewogICogICAgcGxhdGZvcm0taWQgPSA8MD47CiAgKiAgICBjb25maWctaWQgPSA8MD47CisgKiAgICBpc29sYXRlZC1jcHUtbGlzdCA9IDwwPgogICogfQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHN0YXRpYyBpbnQgcGxhdF9zZ2lfYXBwZW5kX2NvbmZpZ19ub2RlKHZvaWQpCkBAIC0yNyw2ICs3OSw3IEBACiAJdm9pZCAqZmR0OwogCWludCBub2Rlb2Zmc2V0LCBlcnI7CiAJdW5zaWduZWQgaW50IHBsYXRpZCA9IDAsIHBsYXRjZmcgPSAwOworCXN0cnVjdCBpc29sYXRlZF9jcHVfbXBpZF9saXN0IGNwdV9tcGlkX2xpc3QgPSB7MH07CiAKIAltZW1fcGFyYW1zID0gZ2V0X2JsX21lbV9wYXJhbXNfbm9kZShOVF9GV19DT05GSUdfSUQpOwogCWlmIChtZW1fcGFyYW1zID09IE5VTEwpIHsKQEAgLTY5LDYgKzEyMiwxOCBAQAogCQlyZXR1cm4gLTE7CiAJfQogCisJcGxhdF9hcm1fc2dpX2dldF9pc29sYXRlZF9jcHVfbGlzdCgmY3B1X21waWRfbGlzdCk7CisJaWYgKGNwdV9tcGlkX2xpc3QubnVtX2VudHJpZXMgPiAwKSB7CisJCWVyciA9IGZkdF9zZXRwcm9wKGZkdCwgbm9kZW9mZnNldCwgImlzb2xhdGVkLWNwdS1saXN0IiwKKwkJCQkmY3B1X21waWRfbGlzdCwKKwkJCQkoc2l6ZW9mKGNwdV9tcGlkX2xpc3QubnVtX2VudHJpZXMpICoKKwkJCQkoY3B1X21waWRfbGlzdC5udW1fZW50cmllcyArIDEpKSk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlFUlJPUigiRmFpbGVkIHRvIHNldCBpc29sYXRlZC1jcHUtbGlzdCwgZXJyb3I6ICVkXG4iLAorCQkJICAgICAgZXJyKTsKKwkJfQorCX0KKwogCWZsdXNoX2RjYWNoZV9yYW5nZSgodWludHB0cl90KWZkdCwgbWVtX3BhcmFtcy0+aW1hZ2VfaW5mby5pbWFnZV9zaXplKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfcGxhdC5jIGIvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfcGxhdC5jCmluZGV4IDIwYzUyZTkuLmEwMTk5YzMgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpX3BsYXQuYworKysgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaV9wbGF0LmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjEsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTg5LDYgKzg5LDcgQEAKIGNvbnN0IG1tYXBfcmVnaW9uX3QgcGxhdF9hcm1fc2VjdXJlX3BhcnRpdGlvbl9tbWFwW10gPSB7CiAJUExBVF9BUk1fU0VDVVJFX01BUF9TWVNURU1SRUcsCiAJUExBVF9BUk1fU0VDVVJFX01BUF9OT1IyLAorCVNPQ19QTEFURk9STV9TRUNVUkVfVUFSVCwKIAlQTEFUX0FSTV9TRUNVUkVfTUFQX0RFVklDRSwKIAlBUk1fU1BfSU1BR0VfTU1BUCwKIAlBUk1fU1BfSU1BR0VfTlNfQlVGX01NQVAsCmRpZmYgLS1naXQgYS9wbGF0L2FybS9jc3Mvc2dpL3NnaV9wbGF0X3YyLmMgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaV9wbGF0X3YyLmMKaW5kZXggMWEyYTk2Ni4uY2VmNTM0NSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfcGxhdF92Mi5jCisrKyBiL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpX3BsYXRfdjIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTgzLDYgKzgzLDcgQEAKIGNvbnN0IG1tYXBfcmVnaW9uX3QgcGxhdF9hcm1fc2VjdXJlX3BhcnRpdGlvbl9tbWFwW10gPSB7CiAJUExBVF9BUk1fU0VDVVJFX01BUF9TWVNURU1SRUcsCiAJUExBVF9BUk1fU0VDVVJFX01BUF9OT1IyLAorCVNPQ19QTEFURk9STV9TRUNVUkVfVUFSVCwKIAlTT0NfUExBVEZPUk1fUEVSSVBIX01BUF9ERVZJQ0VfVVNFUiwKIAlBUk1fU1BfSU1BR0VfTU1BUCwKIAlBUk1fU1BfSU1BR0VfTlNfQlVGX01NQVAsCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuYyBiL3BsYXQveGlsaW54L2NvbW1vbi9pcGlfbWFpbGJveF9zZXJ2aWNlL2lwaV9tYWlsYm94X3N2Yy5jCmluZGV4IGY1MzExNTguLmE0NmFjODAgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L2NvbW1vbi9pcGlfbWFpbGJveF9zZXJ2aWNlL2lwaV9tYWlsYm94X3N2Yy5jCisrKyBiL3BsYXQveGlsaW54L2NvbW1vbi9pcGlfbWFpbGJveF9zZXJ2aWNlL2lwaV9tYWlsYm94X3N2Yy5jCkBAIC02NCw3ICs2NCw3IEBACiAgKiBmdW5jdGlvbiB3aXRoIHJ0X3N2Y19oYW5kbGUgc2lnbmF0dXJlCiAgKi8KIHVpbnQ2NF90IGlwaV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsCi0JCQkgdWludDY0X3QgeDMsIHVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsCisJCQkgdWludDY0X3QgeDMsIHVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsCiAJCQkgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKIHsKIAlpbnQgcmV0OwpkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvY29tbW9uL2lwaV9tYWlsYm94X3NlcnZpY2UvaXBpX21haWxib3hfc3ZjLmggYi9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuaAppbmRleCAxMDY4MmQ4Li5hZjEzZGI5IDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuaAorKysgYi9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuaApAQCAtMzMsNyArMzMsNyBAQAogCiAvKiBJUEkgU01DIGhhbmRsZXIgKi8KIHVpbnQ2NF90IGlwaV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsCi0JCQkgdWludDY0X3QgeDMsIHVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKKwkJCSB1aW50NjRfdCB4MywgdWludDY0X3QgeDQsIGNvbnN0IHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLAogCQkJIHVpbnQ2NF90IGZsYWdzKTsKIAogI2VuZGlmIC8qIElQSV9NQUlMQk9YX1NWQ19IICovCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvYWFyY2g2NC92ZXJzYWxfY29tbW9uLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvYWFyY2g2NC92ZXJzYWxfY29tbW9uLmMKaW5kZXggODk3ZWQ1OS4uZjU1Y2RlOSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL2FhcmNoNjQvdmVyc2FsX2NvbW1vbi5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9hYXJjaDY0L3ZlcnNhbF9jb21tb24uYwpAQCAtNDcsNyArNDcsNyBAQAogCWdlbmVyaWNfZGVsYXlfdGltZXJfaW5pdCgpOwogfQogCi11bnNpZ25lZCBpbnQgcGxhdF9nZXRfc3lzY250X2ZyZXEyKHZvaWQpCit1aW50MzJfdCBwbGF0X2dldF9zeXNjbnRfZnJlcTIodm9pZCkKIHsKIAlyZXR1cm4gVkVSU0FMX0NQVV9DTE9DSzsKIH0KZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9ibDMxX3ZlcnNhbF9zZXR1cC5jIGIvcGxhdC94aWxpbngvdmVyc2FsL2JsMzFfdmVyc2FsX3NldHVwLmMKaW5kZXggNzhiZmMyOS4uMGQwZDU5OCAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL2JsMzFfdmVyc2FsX3NldHVwLmMKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL2JsMzFfdmVyc2FsX3NldHVwLmMKQEAgLTY3LDE5ICs2NywxOSBAQAogCWlmIChWRVJTQUxfQ09OU09MRV9JUyhwbDAxMSkgfHwgKFZFUlNBTF9DT05TT0xFX0lTKHBsMDExXzEpKSkgewogCQlzdGF0aWMgY29uc29sZV90IHZlcnNhbF9ydW50aW1lX2NvbnNvbGU7CiAJCS8qIEluaXRpYWxpemUgdGhlIGNvbnNvbGUgdG8gcHJvdmlkZSBlYXJseSBkZWJ1ZyBzdXBwb3J0ICovCi0JCWludCByYyA9IGNvbnNvbGVfcGwwMTFfcmVnaXN0ZXIoKHVuc2lnbmVkIGxvbmcpVkVSU0FMX1VBUlRfQkFTRSwKLQkJCQkJCSh1bnNpZ25lZCBpbnQpVkVSU0FMX1VBUlRfQ0xPQ0ssCi0JCQkJCQkodW5zaWduZWQgaW50KVZFUlNBTF9VQVJUX0JBVURSQVRFLAorCQlpbnQzMl90IHJjID0gY29uc29sZV9wbDAxMV9yZWdpc3RlcigodW5zaWduZWQgbG9uZylWRVJTQUxfVUFSVF9CQVNFLAorCQkJCQkJKHVpbnQzMl90KVZFUlNBTF9VQVJUX0NMT0NLLAorCQkJCQkJKHVpbnQzMl90KVZFUlNBTF9VQVJUX0JBVURSQVRFLAogCQkJCQkJJnZlcnNhbF9ydW50aW1lX2NvbnNvbGUpOwogCQlpZiAocmMgPT0gMCkgewogCQkJcGFuaWMoKTsKIAkJfQogCi0JCWNvbnNvbGVfc2V0X3Njb3BlKCZ2ZXJzYWxfcnVudGltZV9jb25zb2xlLCAodW5zaWduZWQgaW50KShDT05TT0xFX0ZMQUdfQk9PVCB8CisJCWNvbnNvbGVfc2V0X3Njb3BlKCZ2ZXJzYWxfcnVudGltZV9jb25zb2xlLCAodWludDMyX3QpKENPTlNPTEVfRkxBR19CT09UIHwKIAkJCQkgIENPTlNPTEVfRkxBR19SVU5USU1FKSk7CiAJfSBlbHNlIGlmIChWRVJTQUxfQ09OU09MRV9JUyhkY2MpKSB7CiAJCS8qIEluaXRpYWxpemUgdGhlIGRjYyBjb25zb2xlIGZvciBkZWJ1ZyAqLwotCQlpbnQgcmMgPSBjb25zb2xlX2RjY19yZWdpc3RlcigpOworCQlpbnQzMl90IHJjID0gY29uc29sZV9kY2NfcmVnaXN0ZXIoKTsKIAkJaWYgKHJjID09IDApIHsKIAkJCXBhbmljKCk7CiAJCX0KQEAgLTEyNiw3ICsxMjYsNyBAQAogCiBzdGF0aWMgaW50ZXJydXB0X3R5cGVfaGFuZGxlcl90IHR5cGVfZWwzX2ludGVycnVwdF9oYW5kbGVyOwogCi1pbnQgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlkLCBpbnRlcnJ1cHRfdHlwZV9oYW5kbGVyX3QgaGFuZGxlcikKK2ludDMyX3QgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlkLCBpbnRlcnJ1cHRfdHlwZV9oYW5kbGVyX3QgaGFuZGxlcikKIHsKIAkvKiBWYWxpZGF0ZSAnaGFuZGxlcicqLwogCWlmIChoYW5kbGVyID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9pbmNsdWRlL3BsYXRfcHJpdmF0ZS5oIGIvcGxhdC94aWxpbngvdmVyc2FsL2luY2x1ZGUvcGxhdF9wcml2YXRlLmgKaW5kZXggZDEyZDEzYS4uMTA5Yzk1ZSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL2luY2x1ZGUvcGxhdF9wcml2YXRlLmgKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL2luY2x1ZGUvcGxhdF9wcml2YXRlLmgKQEAgLTIyLDExICsyMiwxMSBAQAogdm9pZCBwbGF0X3ZlcnNhbF9naWNfc2F2ZSh2b2lkKTsKIHZvaWQgcGxhdF92ZXJzYWxfZ2ljX3Jlc3VtZSh2b2lkKTsKIAotdW5zaWduZWQgaW50IHZlcnNhbF9jYWxjX2NvcmVfcG9zKHVfcmVnaXN0ZXJfdCBtcGlkcik7Cit1aW50MzJfdCB2ZXJzYWxfY2FsY19jb3JlX3Bvcyh1X3JlZ2lzdGVyX3QgbXBpZHIpOwogLyoKICAqIFJlZ2lzdGVyIGhhbmRsZXIgdG8gc3BlY2lmaWMgR0lDIGVudHJhbmNlCiAgKiBmb3IgSU5UUl9UWVBFX0VMMyB0eXBlIG9mIGludGVycnVwdAogICovCi1pbnQgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlycSwgaW50ZXJydXB0X3R5cGVfaGFuZGxlcl90IGZpcV9oYW5kbGVyKTsKK2ludDMyX3QgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlycSwgaW50ZXJydXB0X3R5cGVfaGFuZGxlcl90IGZpcV9oYW5kbGVyKTsKIAogI2VuZGlmIC8qIFBMQVRfUFJJVkFURV9IICovCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF9wc2NpLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF9wc2NpLmMKaW5kZXggZWIwNWU1OC4uYWNlY2JiMSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BsYXRfcHNjaS5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3BzY2kuYwpAQCAtMTksOSArMTksOSBAQAogCiBzdGF0aWMgdWludHB0cl90IHZlcnNhbF9zZWNfZW50cnk7CiAKLXN0YXRpYyBpbnQgdmVyc2FsX3B3cl9kb21haW5fb24odV9yZWdpc3Rlcl90IG1waWRyKQorc3RhdGljIGludDMyX3QgdmVyc2FsX3B3cl9kb21haW5fb24odV9yZWdpc3Rlcl90IG1waWRyKQogewotCWludCBjcHVfaWQgPSBwbGF0X2NvcmVfcG9zX2J5X21waWRyKG1waWRyKTsKKwlpbnQzMl90IGNwdV9pZCA9IHBsYXRfY29yZV9wb3NfYnlfbXBpZHIobXBpZHIpOwogCWNvbnN0IHN0cnVjdCBwbV9wcm9jICpwcm9jOwogCiAJVkVSQk9TRSgiJXM6IG1waWRyOiAweCVseFxuIiwgX19mdW5jX18sIG1waWRyKTsKQEAgLTMwLDcgKzMwLDcgQEAKIAkJcmV0dXJuIFBTQ0lfRV9JTlRFUk5fRkFJTDsKIAl9CiAKLQlwcm9jID0gcG1fZ2V0X3Byb2MoKHVuc2lnbmVkIGludCljcHVfaWQpOworCXByb2MgPSBwbV9nZXRfcHJvYygodWludDMyX3QpY3B1X2lkKTsKIAogCS8qIFNlbmQgcmVxdWVzdCB0byBQTUMgdG8gd2FrZSB1cCBzZWxlY3RlZCBBQ1BVIGNvcmUgKi8KIAkodm9pZClwbV9yZXFfd2FrZXVwKHByb2MtPm5vZGVfaWQsICh2ZXJzYWxfc2VjX2VudHJ5ICYgMHhGRkZGRkZGRlUpIHwgMHgxVSwKQEAgLTUwLDggKzUwLDggQEAKICAqLwogc3RhdGljIHZvaWQgdmVyc2FsX3B3cl9kb21haW5fc3VzcGVuZChjb25zdCBwc2NpX3Bvd2VyX3N0YXRlX3QgKnRhcmdldF9zdGF0ZSkKIHsKLQl1bnNpZ25lZCBpbnQgc3RhdGU7Ci0JdW5zaWduZWQgaW50IGNwdV9pZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKKwl1aW50MzJfdCBzdGF0ZTsKKwl1aW50MzJfdCBjcHVfaWQgPSBwbGF0X215X2NvcmVfcG9zKCk7CiAJY29uc3Qgc3RydWN0IHBtX3Byb2MgKnByb2MgPSBwbV9nZXRfcHJvYyhjcHVfaWQpOwogCiAJZm9yIChzaXplX3QgaSA9IDBVOyBpIDw9IFBMQVRfTUFYX1BXUl9MVkw7IGkrKykgewpAQCAtODgsNyArODgsNyBAQAogc3RhdGljIHZvaWQgdmVyc2FsX3B3cl9kb21haW5fc3VzcGVuZF9maW5pc2goCiAJCQkJCWNvbnN0IHBzY2lfcG93ZXJfc3RhdGVfdCAqdGFyZ2V0X3N0YXRlKQogewotCXVuc2lnbmVkIGludCBjcHVfaWQgPSBwbGF0X215X2NvcmVfcG9zKCk7CisJdWludDMyX3QgY3B1X2lkID0gcGxhdF9teV9jb3JlX3BvcygpOwogCWNvbnN0IHN0cnVjdCBwbV9wcm9jICpwcm9jID0gcG1fZ2V0X3Byb2MoY3B1X2lkKTsKIAogCWZvciAoc2l6ZV90IGkgPSAwVTsgaSA8PSBQTEFUX01BWF9QV1JfTFZMOyBpKyspIHsKQEAgLTE1Niw3ICsxNTYsNyBAQAogICovCiBzdGF0aWMgdm9pZCB2ZXJzYWxfcHdyX2RvbWFpbl9vZmYoY29uc3QgcHNjaV9wb3dlcl9zdGF0ZV90ICp0YXJnZXRfc3RhdGUpCiB7Ci0JdW5zaWduZWQgaW50IGNwdV9pZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKKwl1aW50MzJfdCBjcHVfaWQgPSBwbGF0X215X2NvcmVfcG9zKCk7CiAJY29uc3Qgc3RydWN0IHBtX3Byb2MgKnByb2MgPSBwbV9nZXRfcHJvYyhjcHVfaWQpOwogCiAJZm9yIChzaXplX3QgaSA9IDBVOyBpIDw9IFBMQVRfTUFYX1BXUl9MVkw7IGkrKykgewpAQCAtMTg4LDEyICsxODgsMTIgQEAKICAqCiAgKiBAcmV0dXJuCVJldHVybnMgc3RhdHVzLCBlaXRoZXIgc3VjY2VzcyBvciByZWFzb24KICAqLwotc3RhdGljIGludCB2ZXJzYWxfdmFsaWRhdGVfcG93ZXJfc3RhdGUodW5zaWduZWQgaW50IHBvd2VyX3N0YXRlLAorc3RhdGljIGludDMyX3QgdmVyc2FsX3ZhbGlkYXRlX3Bvd2VyX3N0YXRlKHVpbnQzMl90IHBvd2VyX3N0YXRlLAogCQkJCSAgICAgICBwc2NpX3Bvd2VyX3N0YXRlX3QgKnJlcV9zdGF0ZSkKIHsKIAlWRVJCT1NFKCIlczogcG93ZXJfc3RhdGU6IDB4JXhcbiIsIF9fZnVuY19fLCBwb3dlcl9zdGF0ZSk7CiAKLQl1bnNpZ25lZCBpbnQgcHN0YXRlID0gcHNjaV9nZXRfcHN0YXRlX3R5cGUocG93ZXJfc3RhdGUpOworCXVpbnQzMl90IHBzdGF0ZSA9IHBzY2lfZ2V0X3BzdGF0ZV90eXBlKHBvd2VyX3N0YXRlKTsKIAogCWFzc2VydChyZXFfc3RhdGUpOwogCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF90b3BvbG9neS5jIGIvcGxhdC94aWxpbngvdmVyc2FsL3BsYXRfdG9wb2xvZ3kuYwppbmRleCA2NmQ0ZmFlLi42YTk0NTQ0IDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF90b3BvbG9neS5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3RvcG9sb2d5LmMKQEAgLTYsOSArNiw5IEBACiAKICNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGxhdF9wb3dlcl9kb21haW5fdHJlZV9kZXNjW10gPSB7MSwgUExBVEZPUk1fQ09SRV9DT1VOVH07CitzdGF0aWMgY29uc3QgdWludDhfdCBwbGF0X3Bvd2VyX2RvbWFpbl90cmVlX2Rlc2NbXSA9IHsxLCBQTEFURk9STV9DT1JFX0NPVU5UfTsKIAotY29uc3QgdW5zaWduZWQgY2hhciAqcGxhdF9nZXRfcG93ZXJfZG9tYWluX3RyZWVfZGVzYyh2b2lkKQorY29uc3QgdWludDhfdCAqcGxhdF9nZXRfcG93ZXJfZG9tYWluX3RyZWVfZGVzYyh2b2lkKQogewogCXJldHVybiBwbGF0X3Bvd2VyX2RvbWFpbl90cmVlX2Rlc2M7CiB9CmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF92ZXJzYWwuYyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3ZlcnNhbC5jCmluZGV4IDU0YzM1YjYuLjEzMmM3YjcgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3ZlcnNhbC5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3ZlcnNhbC5jCkBAIC03LDcgKzcsNyBAQAogI2luY2x1ZGUgPHBsYXRfcHJpdmF0ZS5oPgogI2luY2x1ZGUgPHBsYXQvY29tbW9uL3BsYXRmb3JtLmg+CiAKLWludCBwbGF0X2NvcmVfcG9zX2J5X21waWRyKHVfcmVnaXN0ZXJfdCBtcGlkcikKK2ludDMyX3QgcGxhdF9jb3JlX3Bvc19ieV9tcGlkcih1X3JlZ2lzdGVyX3QgbXBpZHIpCiB7CiAJaWYgKChtcGlkciAmIE1QSURSX0NMVVNURVJfTUFTSykgIT0gMFUpIHsKIAkJcmV0dXJuIC0xOwpAQCAtMTcsNSArMTcsNSBAQAogCQlyZXR1cm4gLTE7CiAJfQogCi0JcmV0dXJuIChpbnQpdmVyc2FsX2NhbGNfY29yZV9wb3MobXBpZHIpOworCXJldHVybiAoaW50MzJfdCl2ZXJzYWxfY2FsY19jb3JlX3BvcyhtcGlkcik7CiB9CmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9hcGlfc3lzLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9hcGlfc3lzLmMKaW5kZXggMDQyNThjYy4uZGI3ODA0OSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fYXBpX3N5cy5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2FwaV9zeXMuYwpAQCAtMjgsMTQgKzI4LDE0IEBACiAjZGVmaW5lIE1PRFVMRV9JRF9NQVNLCQkweDAwMDBmZjAwCiAKIC8qIGRlZmF1bHQgc2h1dGRvd24vcmVib290IHNjb3BlIGlzIHN5c3RlbSgyKSAqLwotc3RhdGljIHVuc2lnbmVkIGludCBwbV9zaHV0ZG93bl9zY29wZSA9IFhQTV9TSFVURE9XTl9TVUJUWVBFX1JTVF9TWVNURU07CitzdGF0aWMgdWludDMyX3QgcG1fc2h1dGRvd25fc2NvcGUgPSBYUE1fU0hVVERPV05fU1VCVFlQRV9SU1RfU1lTVEVNOwogCiAvKioKICAqIHBtX2dldF9zaHV0ZG93bl9zY29wZSgpIC0gR2V0IHRoZSBjdXJyZW50bHkgc2V0IHNodXRkb3duIHNjb3BlCiAgKgogICogQHJldHVybglTaHV0ZG93biBzY29wZSB2YWx1ZQogICovCi11bnNpZ25lZCBpbnQgcG1fZ2V0X3NodXRkb3duX3Njb3BlKHZvaWQpCit1aW50MzJfdCBwbV9nZXRfc2h1dGRvd25fc2NvcGUodm9pZCkKIHsKIAlyZXR1cm4gcG1fc2h1dGRvd25fc2NvcGU7CiB9CkBAIC05Myw4ICs5Myw5IEBACiAJbW9kdWxlX2lkID0gKHgwICYgTU9EVUxFX0lEX01BU0spID4+IDg7CiAKIAkvL2RlZmF1bHQgbW9kdWxlIGlkIGlzIGZvciBMSUJQTQotCWlmIChtb2R1bGVfaWQgPT0gMCkKKwlpZiAobW9kdWxlX2lkID09IDApIHsKIAkJbW9kdWxlX2lkID0gTElCUE1fTU9EVUxFX0lEOworCX0KIAogCVBNX1BBQ0tfUEFZTE9BRDYocGF5bG9hZCwgbW9kdWxlX2lkLCBmbGFnLCB4MCwgeDEsIHgyLCB4MywgeDQsIHg1KTsKIAlyZXR1cm4gcG1faXBpX3NlbmRfc3luYyhwcmltYXJ5X3Byb2MsIHBheWxvYWQsICh1aW50MzJfdCAqKXJlc3VsdCwgUEFZTE9BRF9BUkdfQ05UKTsKQEAgLTExNSwxMiArMTE2LDEyIEBACiAgKiBAcmV0dXJuCVJldHVybnMgc3RhdHVzLCBlaXRoZXIgc3VjY2VzcyBvciBlcnJvcityZWFzb24KICAqLwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX3NlbGZfc3VzcGVuZCh1aW50MzJfdCBuaWQsCi0JCQkJICAgdW5zaWduZWQgaW50IGxhdGVuY3ksCi0JCQkJICAgdW5zaWduZWQgaW50IHN0YXRlLAorCQkJCSAgIHVpbnQzMl90IGxhdGVuY3ksCisJCQkJICAgdWludDMyX3Qgc3RhdGUsCiAJCQkJICAgdWludHB0cl90IGFkZHJlc3MsIHVpbnQzMl90IGZsYWcpCiB7CiAJdWludDMyX3QgcGF5bG9hZFtQQVlMT0FEX0FSR19DTlRdOwotCXVuc2lnbmVkIGludCBjcHVpZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKKwl1aW50MzJfdCBjcHVpZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKIAljb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYyA9IHBtX2dldF9wcm9jKGNwdWlkKTsKIAogCWlmIChwcm9jID09IE5VTEwpIHsKQEAgLTE4Miw3ICsxODMsNyBAQAogICogQHJldHVybglSZXR1cm5zIHN0YXR1cywgZWl0aGVyIHN1Y2Nlc3Mgb3IgZXJyb3IrcmVhc29uCiAgKi8KIGVudW0gcG1fcmV0X3N0YXR1cyBwbV9yZXFfc3VzcGVuZCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ4X3QgYWNrLAotCQkJCSAgdW5zaWduZWQgaW50IGxhdGVuY3ksIHVuc2lnbmVkIGludCBzdGF0ZSwKKwkJCQkgIHVpbnQzMl90IGxhdGVuY3ksIHVpbnQzMl90IHN0YXRlLAogCQkJCSAgdWludDMyX3QgZmxhZykKIHsKIAl1aW50MzJfdCBwYXlsb2FkW1BBWUxPQURfQVJHX0NOVF07CkBAIC01MDEsNyArNTAyLDcgQEAKIAkJCXJldHVybiBQTV9SRVRfRVJST1JfQVJHUzsKIAkJfQogCQlnaWNkX3dyaXRlX2lyb3V0ZXIoZ2ljdjNfZHJpdmVyX2RhdGEtPmdpY2RfYmFzZSwKLQkJCQkgICh1bnNpZ25lZCBpbnQpUExBVF9WRVJTQUxfSVBJX0lSUSwgTU9ERSk7CisJCQkJICAodWludDMyX3QpUExBVF9WRVJTQUxfSVBJX0lSUSwgTU9ERSk7CiAJCXJldCA9ICBQTV9SRVRfU1VDQ0VTUzsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2FwaV9zeXMuaCBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2FwaV9zeXMuaAppbmRleCA4NmE0NmQwLi44MzQzNTMzIDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9hcGlfc3lzLmgKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fYXBpX3N5cy5oCkBAIC0xOCwxNCArMTgsMTQgQEAKIAkJCQkgICAgICAgdWludDMyX3QgeDIsIHVpbnQzMl90IHgzLCB1aW50MzJfdCB4NCwKIAkJCQkgICAgICAgdWludDMyX3QgeDUsIHVpbnQ2NF90ICpyZXN1bHQpOwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX3NlbGZfc3VzcGVuZCh1aW50MzJfdCBuaWQsCi0JCQkJICAgdW5zaWduZWQgaW50IGxhdGVuY3ksCi0JCQkJICAgdW5zaWduZWQgaW50IHN0YXRlLAorCQkJCSAgIHVpbnQzMl90IGxhdGVuY3ksCisJCQkJICAgdWludDMyX3Qgc3RhdGUsCiAJCQkJICAgdWludHB0cl90IGFkZHJlc3MsIHVpbnQzMl90IGZsYWcpOwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX2Fib3J0X3N1c3BlbmQoZW51bSBwbV9hYm9ydF9yZWFzb24gcmVhc29uLCB1aW50MzJfdCBmbGFnKTsKIGVudW0gcG1fcmV0X3N0YXR1cyBwbV9yZXFfc3VzcGVuZCh1aW50MzJfdCB0YXJnZXQsCiAJCQkJICB1aW50OF90IGFjaywKLQkJCQkgIHVuc2lnbmVkIGludCBsYXRlbmN5LAotCQkJCSAgdW5zaWduZWQgaW50IHN0YXRlLCB1aW50MzJfdCBmbGFnKTsKKwkJCQkgIHVpbnQzMl90IGxhdGVuY3ksCisJCQkJICB1aW50MzJfdCBzdGF0ZSwgdWludDMyX3QgZmxhZyk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fcmVxX3dha2V1cCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHNldF9hZGRyZXNzLAogCQkJCSB1aW50cHRyX3QgYWRkcmVzcywgdWludDhfdCBhY2ssIHVpbnQzMl90IGZsYWcpOwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX3NldF93YWtldXBfc291cmNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgZGV2aWNlX2lkLApAQCAtNDgsNyArNDgsNyBAQAogCQkJCXVpbnQzMl90ICp2YWx1ZSwgdWludDMyX3QgZmxhZyk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fcXVlcnlfZGF0YSh1aW50MzJfdCBxaWQsIHVpbnQzMl90IGFyZzEsIHVpbnQzMl90IGFyZzIsCiAJCQkJIHVpbnQzMl90IGFyZzMsIHVpbnQzMl90ICpkYXRhLCB1aW50MzJfdCBmbGFnKTsKLXVuc2lnbmVkIGludCBwbV9nZXRfc2h1dGRvd25fc2NvcGUodm9pZCk7Cit1aW50MzJfdCBwbV9nZXRfc2h1dGRvd25fc2NvcGUodm9pZCk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fZmVhdHVyZV9jaGVjayh1aW50MzJfdCBhcGlfaWQsIHVpbnQzMl90ICpyZXRfcGF5bG9hZCwKIAkJCQkgICAgdWludDMyX3QgZmxhZyk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fbG9hZF9wZGkodWludDMyX3Qgc3JjLCB1aW50MzJfdCBhZGRyZXNzX2xvdywKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2NsaWVudC5jIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fY2xpZW50LmMKaW5kZXggNDAxMmYzMi4uY2U1ZTUzMyAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fY2xpZW50LmMKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fY2xpZW50LmMKQEAgLTEwNSw3ICsxMDUsNyBAQAogICoKICAqIFJldHVybjoJUE0gbm9kZSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW50ZXJydXB0CiAgKi8KLXN0YXRpYyBlbnVtIHBtX2RldmljZV9ub2RlX2lkeCBpcnFfdG9fcG1fbm9kZV9pZHgodW5zaWduZWQgaW50IGlycSkKK3N0YXRpYyBlbnVtIHBtX2RldmljZV9ub2RlX2lkeCBpcnFfdG9fcG1fbm9kZV9pZHgodWludDMyX3QgaXJxKQogewogCWFzc2VydChpcnEgPD0gSVJRX01BWCk7CiAJcmV0dXJuIGlycV9ub2RlX21hcFtpcnFdOwpAQCAtMTcwLDcgKzE3MCw3IEBACiAgKiByZXF1aXJlZCBwcmlvciB0byBzZW5kaW5nIHN1c3BlbmQgcmVxdWVzdCB0byBQTVUKICAqIEFjdGlvbnMgdGFrZW4gZGVwZW5kIG9uIHRoZSBzdGF0ZSBzeXN0ZW0gaXMgc3VzcGVuZGluZyB0by4KICAqLwotdm9pZCBwbV9jbGllbnRfc3VzcGVuZChjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYywgdW5zaWduZWQgaW50IHN0YXRlKQordm9pZCBwbV9jbGllbnRfc3VzcGVuZChjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYywgdWludDMyX3Qgc3RhdGUpCiB7CiAJYmFrZXJ5X2xvY2tfZ2V0KCZwbV9jbGllbnRfc2VjdXJlX2xvY2spOwogCkBAIC0yMTEsNyArMjExLDcgQEAKICAqCiAgKiBSZXR1cm46IHRoZSBjcHUgSUQgKHN0YXJ0aW5nIGZyb20gMCkgZm9yIHRoZSBzdWJzeXN0ZW0KICAqLwotc3RhdGljIHVuc2lnbmVkIGludCBwbV9nZXRfY3B1aWQodWludDMyX3QgbmlkKQorc3RhdGljIHVpbnQzMl90IHBtX2dldF9jcHVpZCh1aW50MzJfdCBuaWQpCiB7CiAJZm9yIChzaXplX3QgaSA9IDBVOyBpIDwgQVJSQVlfU0laRShwbV9wcm9jc19hbGwpOyBpKyspIHsKIAkJaWYgKHBtX3Byb2NzX2FsbFtpXS5ub2RlX2lkID09IG5pZCkgewpAQCAtMjI5LDcgKzIyOSw3IEBACiAgKi8KIHZvaWQgcG1fY2xpZW50X3dha2V1cChjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYykKIHsKLQl1bnNpZ25lZCBpbnQgY3B1aWQgPSBwbV9nZXRfY3B1aWQocHJvYy0+bm9kZV9pZCk7CisJdWludDMyX3QgY3B1aWQgPSBwbV9nZXRfY3B1aWQocHJvYy0+bm9kZV9pZCk7CiAKIAlpZiAoY3B1aWQgPT0gVU5ERUZJTkVEX0NQVUlEKSB7CiAJCXJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQAogICoKICAqIFJldHVybjogcG9pbnRlciB0byBhIHByb2Mgc3RydWN0dXJlIGlmIHByb2MgaXMgZm91bmQsIG90aGVyd2lzZSBOVUxMCiAgKi8KLWNvbnN0IHN0cnVjdCBwbV9wcm9jICpwbV9nZXRfcHJvYyh1bnNpZ25lZCBpbnQgY3B1aWQpCitjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcG1fZ2V0X3Byb2ModWludDMyX3QgY3B1aWQpCiB7CiAJaWYgKGNwdWlkIDwgQVJSQVlfU0laRShwbV9wcm9jc19hbGwpKSB7CiAJCXJldHVybiAmcG1fcHJvY3NfYWxsW2NwdWlkXTsKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5jCmluZGV4IDI0YjY4ZTcuLmY0ZDA0YjggMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uYwpAQCAtMjUsMTkgKzI1LDE5IEBACiAKIC8qIHBtX3VwID0gdHJ1ZSAtIFVQLCBwbV91cCA9IGZhbHNlIC0gRE9XTiAqLwogc3RhdGljIGJvb2wgcG1fdXA7Ci1zdGF0aWMgdW5zaWduZWQgaW50IHNnaSA9ICh1bnNpZ25lZCBpbnQpSU5WQUxJRF9TR0k7CitzdGF0aWMgdWludDMyX3Qgc2dpID0gKHVpbnQzMl90KUlOVkFMSURfU0dJOwogCiBzdGF0aWMgdWludDY0X3QgaXBpX2ZpcV9oYW5kbGVyKHVpbnQzMl90IGlkLCB1aW50MzJfdCBmbGFncywgdm9pZCAqaGFuZGxlLAogCQkJCXZvaWQgKmNvb2tpZSkKIHsKLQl1bnNpZ25lZCBpbnQgY3B1OwotCXVuc2lnbmVkIGludCByZWc7CisJdWludDMyX3QgY3B1OworCXVpbnQzMl90IHJlZzsKIAogCSh2b2lkKXBsYXRfaWNfYWNrbm93bGVkZ2VfaW50ZXJydXB0KCk7CiAJY3B1ID0gcGxhdF9teV9jb3JlX3BvcygpICsgMVU7CiAKLQlpZiAoKHVuc2lnbmVkIGludClzZ2kgIT0gKHVuc2lnbmVkIGludClJTlZBTElEX1NHSSkgewotCQlyZWcgPSAoY3B1IHwgKCh1bnNpZ25lZCBpbnQpc2dpIDw8ICh1bnNpZ25lZCBpbnQpWFNDVUdJQ19TR0lSX0VMMV9JTklUSURfU0hJRlQpKTsKKwlpZiAoKHVpbnQzMl90KXNnaSAhPSAodWludDMyX3QpSU5WQUxJRF9TR0kpIHsKKwkJcmVnID0gKGNwdSB8ICgodWludDMyX3Qpc2dpIDw8ICh1aW50MzJfdClYU0NVR0lDX1NHSVJfRUwxX0lOSVRJRF9TSElGVCkpOwogCQl3cml0ZV9pY2NfYXNnaTFyX2VsMShyZWcpOwogCX0KIApAQCAtNTksNyArNTksNyBAQAogICogVXBkYXRlIHRoZSBTR0kgbnVtYmVyIHRvIGJlIHVzZWQuCiAgKgogICovCi1pbnQgcG1fcmVnaXN0ZXJfc2dpKHVuc2lnbmVkIGludCBzZ2lfbnVtLCB1bnNpZ25lZCBpbnQgcmVzZXQpCitpbnQgcG1fcmVnaXN0ZXJfc2dpKHVpbnQzMl90IHNnaV9udW0sIHVpbnQzMl90IHJlc2V0KQogewogCWlmIChyZXNldCA9PSAxVSkgewogCQlzZ2kgPSBJTlZBTElEX1NHSTsKQEAgLTc0LDcgKzc0LDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0Jc2dpID0gKHVuc2lnbmVkIGludClzZ2lfbnVtOworCXNnaSA9ICh1aW50MzJfdClzZ2lfbnVtOwogCXJldHVybiAwOwogfQogCkBAIC05Myw3ICs5Myw3IEBACiAgKi8KIGludCBwbV9zZXR1cCh2b2lkKQogewotCWludCBzdGF0dXMsIHJldCA9IDA7CisJaW50MzJfdCBzdGF0dXMsIHJldCA9IDA7CiAKIAlzdGF0dXMgPSBwbV9pcGlfaW5pdChwcmltYXJ5X3Byb2MpOwogCkBAIC0yMzksNyArMjM5LDcgQEAKIAogCWNhc2UgVEZfQV9QTV9SRUdJU1RFUl9TR0k6CiAJewotCQlpbnQgcmV0OworCQlpbnQzMl90IHJldDsKIAogCQlyZXQgPSBwbV9yZWdpc3Rlcl9zZ2kocG1fYXJnWzBdLCBwbV9hcmdbMV0pOwogCQlpZiAocmV0ICE9IDApIHsKQEAgLTMyNCw3ICszMjQsNyBAQAogICogZnVuY3Rpb24gd2l0aCBydF9zdmNfaGFuZGxlIHNpZ25hdHVyZQogICovCiB1aW50NjRfdCBwbV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsIHVpbnQ2NF90IHgzLAotCQkJdWludDY0X3QgeDQsIHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwgdWludDY0X3QgZmxhZ3MpCiB7CiAJdWludHB0cl90IHJldDsKIAl1aW50MzJfdCBwbV9hcmdbUEFZTE9BRF9BUkdfQ05UXSA9IHswfTsKQEAgLTMzMiw4ICszMzIsOSBAQAogCXVpbnQzMl90IGFwaV9pZDsKIAogCS8qIEhhbmRsZSBjYXNlIHdoZXJlIFBNIHdhc24ndCBpbml0aWFsaXplZCBwcm9wZXJseSAqLwotCWlmICghcG1fdXApCisJaWYgKCFwbV91cCkgewogCQlTTUNfUkVUMShoYW5kbGUsIFNNQ19VTkspOworCX0KIAogCS8qCiAJICogTWFyayBCSVQyNCBwYXlsb2FkIChpLmUgMXN0IGJpdCBvZiBwbV9hcmdbM10gKSBhcyBub24tc2VjdXJlICgxKQpAQCAtMzUyLDE2ICszNTMsMTkgQEAKIAlhcGlfaWQgPSBzbWNfZmlkICYgRlVOQ0lEX05VTV9NQVNLOwogCiAJcmV0ID0gZWVtaV9mb3JfY29tcGF0aWJpbGl0eShhcGlfaWQsIHBtX2FyZywgaGFuZGxlLCBzZWN1cml0eV9mbGFnKTsKLQlpZiAocmV0ICE9ICh1aW50cHRyX3QpMCkKKwlpZiAocmV0ICE9ICh1aW50cHRyX3QpMCkgewogCQlyZXR1cm4gcmV0OworCX0KIAogCXJldCA9IGVlbWlfcHNjaV9kZWJ1Z2ZzX2hhbmRsZXIoYXBpX2lkLCBwbV9hcmcsIGhhbmRsZSwgZmxhZ3MpOwotCWlmIChyZXQgIT0gICh1aW50cHRyX3QpMCkKKwlpZiAocmV0ICE9ICAodWludHB0cl90KTApIHsKIAkJcmV0dXJuIHJldDsKKwl9CiAKIAlyZXQgPSBURl9BX3NwZWNpZmljX2hhbmRsZXIoYXBpX2lkLCBwbV9hcmcsIGhhbmRsZSwgc2VjdXJpdHlfZmxhZyk7Ci0JaWYgKHJldCAhPSAgKHVpbnRwdHJfdCkwKQorCWlmIChyZXQgIT0gICh1aW50cHRyX3QpMCkgewogCQlyZXR1cm4gcmV0OworCX0KIAogCXJldCA9IGVlbWlfaGFuZGxlcihhcGlfaWQsIHBtX2FyZywgaGFuZGxlLCBzZWN1cml0eV9mbGFnKTsKIApkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaCBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmgKaW5kZXggMmRmZjViMi4uYjZlNzY0ZiAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaAorKysgYi9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5oCkBAIC05LDEwICs5LDEwIEBACiAKICNpbmNsdWRlIDxwbV9jb21tb24uaD4KIAotaW50IHBtX3NldHVwKHZvaWQpOworaW50MzJfdCBwbV9zZXR1cCh2b2lkKTsKIHVpbnQ2NF90IHBtX3NtY19oYW5kbGVyKHVpbnQzMl90IHNtY19maWQsIHVpbnQ2NF90IHgxLCB1aW50NjRfdCB4MiwgdWludDY0X3QgeDMsCi0JCQl1aW50NjRfdCB4NCwgdm9pZCAqY29va2llLCB2b2lkICpoYW5kbGUsCisJCQl1aW50NjRfdCB4NCwgY29uc3Qgdm9pZCAqY29va2llLCB2b2lkICpoYW5kbGUsCiAJCQl1aW50NjRfdCBmbGFncyk7CiAKLWludCBwbV9yZWdpc3Rlcl9zZ2kodW5zaWduZWQgaW50IHNnaV9udW0sIHVuc2lnbmVkIGludCByZXNldCk7CitpbnQzMl90IHBtX3JlZ2lzdGVyX3NnaSh1aW50MzJfdCBzZ2lfbnVtLCB1aW50MzJfdCByZXNldCk7CiAjZW5kaWYgLyogUE1fU1ZDX01BSU5fSCAqLwpkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvdmVyc2FsL3ZlcnNhbF9naWN2My5jIGIvcGxhdC94aWxpbngvdmVyc2FsL3ZlcnNhbF9naWN2My5jCmluZGV4IDA4ZTdjZjkuLmQ0MTA5MDYgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3ZlcnNhbC92ZXJzYWxfZ2ljdjMuYworKysgYi9wbGF0L3hpbGlueC92ZXJzYWwvdmVyc2FsX2dpY3YzLmMKQEAgLTUzLDcgKzUzLDcgQEAKICAqICAgLSBBbGwgQ1BVcyBpbXBsZW1lbnRlZCBpbiB0aGUgc3lzdGVtIGhhdmUgTVBJRFJfRUwxLk1UIGJpdCBzZXQ7CiAgKiAgIC0gTm8gQ1BVcyBpbXBsZW1lbnRlZCBpbiB0aGUgc3lzdGVtIHVzZSBhZmZpbml0eSBsZXZlbCAzLgogICovCi1zdGF0aWMgdW5zaWduZWQgaW50IHZlcnNhbF9naWN2M19tcGlkcl9oYXNoKHVfcmVnaXN0ZXJfdCBtcGlkcikKK3N0YXRpYyB1aW50MzJfdCB2ZXJzYWxfZ2ljdjNfbXBpZHJfaGFzaCh1X3JlZ2lzdGVyX3QgbXBpZHIpCiB7CiAJbXBpZHIgfD0gKHJlYWRfbXBpZHJfZWwxKCkgJiBNUElEUl9NVF9NQVNLKTsKIAlyZXR1cm4gdmVyc2FsX2NhbGNfY29yZV9wb3MobXBpZHIpOwpkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvenlucW1wL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmggYi9wbGF0L3hpbGlueC96eW5xbXAvaW5jbHVkZS9wbGF0Zm9ybV9kZWYuaAppbmRleCA5YzE2MDBhLi42NmJiZjMwIDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC96eW5xbXAvaW5jbHVkZS9wbGF0Zm9ybV9kZWYuaAorKysgYi9wbGF0L3hpbGlueC96eW5xbXAvaW5jbHVkZS9wbGF0Zm9ybV9kZWYuaApAQCAtNDAsOCArNDAsOCBAQAogIyBkZWZpbmUgQkwzMV9CQVNFCQkJVSgweGZmZmVhMDAwKQogIyBkZWZpbmUgQkwzMV9MSU1JVAkJCVUoMHgxMDAwMDAwMDApCiAjZWxzZQotIyBkZWZpbmUgQkwzMV9CQVNFCQkJVSgweDEwMDApCi0jIGRlZmluZSBCTDMxX0xJTUlUCQkJVSgweDdmZmZmKQorIyBkZWZpbmUgQkwzMV9CQVNFCQkJVSgweGZmZjVhMDAwKQorIyBkZWZpbmUgQkwzMV9MSU1JVAkJCVUoMHgxMDAwMDAwMDApCiAjZW5kaWYKICNlbHNlCiAjIGRlZmluZSBCTDMxX0JBU0UJCQkoWllOUU1QX0FURl9NRU1fQkFTRSkKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3p5bnFtcC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMgYi9wbGF0L3hpbGlueC96eW5xbXAvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5jCmluZGV4IDk1M2JiNGEuLjQ5M2ZmODUgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3p5bnFtcC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMKKysrIGIvcGxhdC94aWxpbngvenlucW1wL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAgKiBmdW5jdGlvbiB3aXRoIHJ0X3N2Y19oYW5kbGUgc2lnbmF0dXJlCiAgKi8KIHVpbnQ2NF90IHBtX3NtY19oYW5kbGVyKHVpbnQzMl90IHNtY19maWQsIHVpbnQ2NF90IHgxLCB1aW50NjRfdCB4MiwgdWludDY0X3QgeDMsCi0JCQl1aW50NjRfdCB4NCwgdm9pZCAqY29va2llLCB2b2lkICpoYW5kbGUsIHVpbnQ2NF90IGZsYWdzKQorCQkJdWludDY0X3QgeDQsIGNvbnN0IHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKIHsKIAllbnVtIHBtX3JldF9zdGF0dXMgcmV0OwogCXVpbnQzMl90IHBheWxvYWRbUEFZTE9BRF9BUkdfQ05UXTsKQEAgLTU3NSw3ICs1NzUsNyBAQAogICogZnVuY3Rpb24gd2l0aCBydF9zdmNfaGFuZGxlIHNpZ25hdHVyZQogICovCiB1aW50NjRfdCBlbV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsIHVpbnQ2NF90IHgzLAotCQkJdWludDY0X3QgeDQsIHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwgdWludDY0X3QgZmxhZ3MpCiB7CiAJZW51bSBwbV9yZXRfc3RhdHVzIHJldDsKIApkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvenlucW1wL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaCBiL3BsYXQveGlsaW54L3p5bnFtcC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmgKaW5kZXggYWJhZGQ0MC4uOWNmZjNjYiAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvenlucW1wL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaAorKysgYi9wbGF0L3hpbGlueC96eW5xbXAvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5oCkBAIC0xMSwxMCArMTEsMTAgQEAKIAogaW50IHBtX3NldHVwKHZvaWQpOwogdWludDY0X3QgcG1fc21jX2hhbmRsZXIodWludDMyX3Qgc21jX2ZpZCwgdWludDY0X3QgeDEsIHVpbnQ2NF90IHgyLCB1aW50NjRfdCB4MywKLQkJCXVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKIAkJCXVpbnQ2NF90IGZsYWdzKTsKIAogdWludDY0X3QgZW1fc21jX2hhbmRsZXIodWludDMyX3Qgc21jX2ZpZCwgdWludDY0X3QgeDEsIHVpbnQ2NF90IHgyLCB1aW50NjRfdCB4MywKLQkJCXVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKIAkJCXVpbnQ2NF90IGZsYWdzKTsKICNlbmRpZiAvKiBQTV9TVkNfTUFJTl9IICovCmRpZmYgLS1naXQgYS90b29scy9jZXJ0X2NyZWF0ZS9NYWtlZmlsZSBiL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlCmluZGV4IGNhNTQ4YjguLmQ5NTEyODYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlCisrKyBiL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlCkBAIC0zNSw2ICszNSw4IEBACiAgIGluY2x1ZGUgc3JjL3RiYnIvdGJici5tawogZWxzZSBpZmVxICgke0NPVH0sZHVhbHJvb3QpCiAgIGluY2x1ZGUgc3JjL2R1YWxyb290L2NvdC5taworZWxzZSBpZmVxICgke0NPVH0sY2NhKQorICBpbmNsdWRlIHNyYy9jY2EvY290Lm1rCiBlbHNlCiAgICQoZXJyb3IgVW5rbm93biBjaGFpbiBvZiB0cnVzdCAke0NPVH0pCiBlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvY2VydF9jcmVhdGUvaW5jbHVkZS9jY2EvY2NhX2NvdC5oIGIvdG9vbHMvY2VydF9jcmVhdGUvaW5jbHVkZS9jY2EvY2NhX2NvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTg1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9jZXJ0X2NyZWF0ZS9pbmNsdWRlL2NjYS9jY2FfY290LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpZm5kZWYgQ0NBX0NPVF9ICisjZGVmaW5lIENDQV9DT1RfSAorCisvKiBDZXJ0aWZpY2F0ZXMuICovCitlbnVtIHsKKwkvKiBDZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHNpbGljb24gcHJvdmlkZXIuICovCisJQ0NBX0NPTlRFTlRfQ0VSVCwKKwlDT1JFX1NXRF9LRVlfQ0VSVCwKKwlTUE1DX0NPTlRFTlRfQ0VSVCwKKwlTSVBfU0VDVVJFX1BBUlRJVElPTl9DT05URU5UX0NFUlQsCisKKwkvKiBDZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHBsYXRmb3JtIG93bmVyLiAqLworCVBMQVRfS0VZX0NFUlQsCisJUExBVF9TRUNVUkVfUEFSVElUSU9OX0NPTlRFTlRfQ0VSVCwKKwlOT05fVFJVU1RFRF9GV19DT05URU5UX0NFUlQsCit9OworCisvKiBDZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiAqLworZW51bSB7CisJLyogRXh0ZW5zaW9ucyB1c2VkIGluIGNlcnRpZmljYXRlcyBvd25lZCBieSB0aGUgc2lsaWNvbiBwcm92aWRlci4gKi8KKwlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhULAorCVRSVVNURURfQk9PVF9GV19DT05GSUdfSEFTSF9FWFQsCisJSFdfQ09ORklHX0hBU0hfRVhULAorCUZXX0NPTkZJR19IQVNIX0VYVCwKKwlTV0RfUk9UX1BLX0VYVCwKKwlDT1JFX1NXRF9QS19FWFQsCisJU09DX0FQX0ZXX0hBU0hfRVhULAorCVNPQ19GV19DT05GSUdfSEFTSF9FWFQsCisJUk1NX0hBU0hfRVhULAorCVRSVVNURURfT1NfRldfSEFTSF9FWFQsCisJVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9FWFQsCisJU1BfUEtHMV9IQVNIX0VYVCwKKwlTUF9QS0cyX0hBU0hfRVhULAorCVNQX1BLRzNfSEFTSF9FWFQsCisJU1BfUEtHNF9IQVNIX0VYVCwKKworCS8qIEV4dGVuc2lvbnMgdXNlZCBpbiBjZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHBsYXRmb3JtIG93bmVyLiAqLworCVBST1RfUEtfRVhULAorCVBMQVRfUEtfRVhULAorCVNQX1BLRzVfSEFTSF9FWFQsCisJU1BfUEtHNl9IQVNIX0VYVCwKKwlTUF9QS0c3X0hBU0hfRVhULAorCVNQX1BLRzhfSEFTSF9FWFQsCisJTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwlOT05fVFJVU1RFRF9XT1JMRF9CT09UTE9BREVSX0hBU0hfRVhULAorCU5PTl9UUlVTVEVEX0ZXX0NPTkZJR19IQVNIX0VYVCwKK307CisKKy8qIEtleXMuICovCitlbnVtIHsKKwkvKiBLZXlzIG93bmVkIGJ5IHRoZSBzaWxpY29uIHByb3ZpZGVyLiAqLworCVJPVF9LRVksCisJU1dEX1JPVF9LRVksCisJQ09SRV9TV0RfS0VZLAorCisJLyogS2V5cyBvd25lZCBieSB0aGUgcGxhdGZvcm0gb3duZXIuICovCisJUFJPVF9LRVksCisJUExBVF9LRVksCit9OworCisjZW5kaWYgLyogQ0NBX0NPVF9IICovCmRpZmYgLS1naXQgYS90b29scy9jZXJ0X2NyZWF0ZS9zcmMvY2NhL2NvdC5jIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2NjYS9jb3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTM1ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2NjYS9jb3QuYwpAQCAtMCwwICsxLDQzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpbmNsdWRlICJjY2EvY2NhX2NvdC5oIgorCisjaW5jbHVkZSA8Y2NhX29pZC5oPgorCisjaW5jbHVkZSAiY2VydC5oIgorI2luY2x1ZGUgImV4dC5oIgorI2luY2x1ZGUgImtleS5oIgorCisvKgorICogQ2VydGlmaWNhdGVzIHVzZWQgaW4gdGhlIGNoYWluIG9mIHRydXN0LgorICoKKyAqIEFsbCBjZXJ0aWZpY2F0ZXMgYXJlIHNlbGYtc2lnbmVkIHNvIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgZmllbGQgcG9pbnRzIHRvCisgKiBpdHNlbGYuCisgKi8KK3N0YXRpYyBjZXJ0X3QgY290X2NlcnRzW10gPSB7CisJW0NDQV9DT05URU5UX0NFUlRdID0geworCQkuaWQgPSBDQ0FfQ09OVEVOVF9DRVJULAorCQkub3B0ID0gImNjYS1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIkNDQSBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiQ0NBIENvbnRlbnQgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gUk9UX0tFWSwKKwkJLmlzc3VlciA9IENDQV9DT05URU5UX0NFUlQsCisJCS5leHQgPSB7CisJCQlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTT0NfQVBfRldfSEFTSF9FWFQsCisJCQlTT0NfRldfQ09ORklHX0hBU0hfRVhULAorCQkJUk1NX0hBU0hfRVhULAorCQkJVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhULAorCQkJVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX0VYVCwKKwkJCUhXX0NPTkZJR19IQVNIX0VYVCwKKwkJCUZXX0NPTkZJR19IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSA4CisJfSwKKworCVtDT1JFX1NXRF9LRVlfQ0VSVF0gPSB7CisJCS5pZCA9IENPUkVfU1dEX0tFWV9DRVJULAorCQkub3B0ID0gImNvcmUtc3dkLWNlcnQiLAorCQkuaGVscF9tc2cgPSAiQ29yZSBTZWN1cmUgV29ybGQgS2V5IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiQ29yZSBTZWN1cmUgV29ybGQgS2V5IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFNXRF9ST1RfS0VZLAorCQkuaXNzdWVyID0gQ09SRV9TV0RfS0VZX0NFUlQsCisJCS5leHQgPSB7CisJCQlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTV0RfUk9UX1BLX0VYVCwKKwkJCUNPUkVfU1dEX1BLX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtTUE1DX0NPTlRFTlRfQ0VSVF0gPSB7CisJCS5pZCA9IFNQTUNfQ09OVEVOVF9DRVJULAorCQkub3B0ID0gInRvcy1mdy1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIlNQTUMgQ29udGVudCBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlNQTUMgQ29udGVudCBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBDT1JFX1NXRF9LRVksCisJCS5pc3N1ZXIgPSBTUE1DX0NPTlRFTlRfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCVRSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCVRSVVNURURfT1NfRldfSEFTSF9FWFQsCisJCQlUUlVTVEVEX09TX0ZXX0NPTkZJR19IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtTSVBfU0VDVVJFX1BBUlRJVElPTl9DT05URU5UX0NFUlRdID0geworCQkuaWQgPSBTSVBfU0VDVVJFX1BBUlRJVElPTl9DT05URU5UX0NFUlQsCisJCS5vcHQgPSAic2lwLXNwLWNlcnQiLAorCQkuaGVscF9tc2cgPSAiU2lQIG93bmVkIFNlY3VyZSBQYXJ0aXRpb24gQ29udGVudCBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlNpUCBvd25lZCBTZWN1cmUgUGFydGl0aW9uIENvbnRlbnQgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gQ09SRV9TV0RfS0VZLAorCQkuaXNzdWVyID0gU0lQX1NFQ1VSRV9QQVJUSVRJT05fQ09OVEVOVF9DRVJULAorCQkuZXh0ID0geworCQkJVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJU1BfUEtHMV9IQVNIX0VYVCwKKwkJCVNQX1BLRzJfSEFTSF9FWFQsCisJCQlTUF9QS0czX0hBU0hfRVhULAorCQkJU1BfUEtHNF9IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSA1CisJfSwKKworCVtQTEFUX0tFWV9DRVJUXSA9IHsKKwkJLmlkID0gUExBVF9LRVlfQ0VSVCwKKwkJLm9wdCA9ICJwbGF0LWtleS1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIlBsYXRmb3JtIEtleSBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlBsYXRmb3JtIEtleSBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBQUk9UX0tFWSwKKwkJLmlzc3VlciA9IFBMQVRfS0VZX0NFUlQsCisJCS5leHQgPSB7CisJCQlOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJUFJPVF9QS19FWFQsCisJCQlQTEFUX1BLX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtQTEFUX1NFQ1VSRV9QQVJUSVRJT05fQ09OVEVOVF9DRVJUXSA9IHsKKwkJLmlkID0gUExBVF9TRUNVUkVfUEFSVElUSU9OX0NPTlRFTlRfQ0VSVCwKKwkJLm9wdCA9ICJwbGF0LXNwLWNlcnQiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0gb3duZWQgU2VjdXJlIFBhcnRpdGlvbiBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiUGxhdGZvcm0gb3duZWQgU2VjdXJlIFBhcnRpdGlvbiBDb250ZW50IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFBMQVRfS0VZLAorCQkuaXNzdWVyID0gUExBVF9TRUNVUkVfUEFSVElUSU9OX0NPTlRFTlRfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCU5PTl9UUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTUF9QS0c1X0hBU0hfRVhULAorCQkJU1BfUEtHNl9IQVNIX0VYVCwKKwkJCVNQX1BLRzdfSEFTSF9FWFQsCisJCQlTUF9QS0c4X0hBU0hfRVhULAorCQl9LAorCQkubnVtX2V4dCA9IDUKKwl9LAorCisJW05PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVF0gPSB7CisJCS5pZCA9IE5PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVCwKKwkJLm9wdCA9ICJudC1mdy1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIk5vbi1UcnVzdGVkIEZpcm13YXJlIENvbnRlbnQgQ2VydGlmaWNhdGUgKG91dHB1dCBmaWxlKSIsCisJCS5jbiA9ICJOb24tVHJ1c3RlZCBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFBMQVRfS0VZLAorCQkuaXNzdWVyID0gTk9OX1RSVVNURURfRldfQ09OVEVOVF9DRVJULAorCQkuZXh0ID0geworCQkJTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCU5PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9FWFQsCisJCQlOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9FWFQsCisJCX0sCisJCS5udW1fZXh0ID0gMworCX0sCit9OworCitSRUdJU1RFUl9DT1QoY290X2NlcnRzKTsKKworCisvKiBDZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiAqLworc3RhdGljIGV4dF90IGNvdF9leHRbXSA9IHsKKwlbVFJVU1RFRF9GV19OVkNPVU5URVJfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfRldfTlZDT1VOVEVSX09JRCwKKwkJLm9wdCA9ICJ0ZnctbnZjdHIiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBGaXJtd2FyZSBOb24tVm9sYXRpbGUgY291bnRlciB2YWx1ZSIsCisJCS5zbiA9ICJUcnVzdGVkV29ybGROVkNvdW50ZXIiLAorCQkubG4gPSAiVHJ1c3RlZCBXb3JsZCBOb24tVm9sYXRpbGUgY291bnRlciIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfSU5URUdFUiwKKwkJLnR5cGUgPSBFWFRfVFlQRV9OVkNPVU5URVIsCisJCS5hdHRyLm52Y3RyX3R5cGUgPSBOVkNUUl9UWVBFX1RGVworCX0sCisKKwlbVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfQk9PVF9GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0Yi1mdyIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIEJvb3QgRmlybXdhcmUgaW1hZ2UgZmlsZSIsCisJCS5zbiA9ICJUcnVzdGVkQm9vdEZpcm13YXJlSGFzaCIsCisJCS5sbiA9ICJUcnVzdGVkIEJvb3QgRmlybXdhcmUgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW1RSVVNURURfQk9PVF9GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0Yi1mdy1jb25maWciLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBCb290IEZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRCb290RmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlRydXN0ZWQgQm9vdCBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW0hXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBIV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAiaHctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIkhXIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIkhXQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJIVyBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW0ZXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBGV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAiZnctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIkZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIkZpcm13YXJlQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1NXRF9ST1RfUEtfRVhUXSA9IHsKKwkJLm9pZCA9IFNXRF9ST1RfUEtfT0lELAorCQkuc24gPSAiU1dEUm9US2V5IiwKKwkJLmxuID0gIlNlY3VyZSBXb3JsZCBSb290IG9mIFRydXN0IFB1YmxpYyBLZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBTV0RfUk9UX0tFWQorCX0sCisKKwlbQ09SRV9TV0RfUEtfRVhUXSA9IHsKKwkJLm9pZCA9IENPUkVfU1dEX1BLX09JRCwKKwkJLnNuID0gIkNPUkVTV0RLZXkiLAorCQkubG4gPSAiQ29yZSBTZWN1cmUgV29ybGQgUHVibGljIEtleSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX1BLRVksCisJCS5hdHRyLmtleSA9IENPUkVfU1dEX0tFWQorCX0sCisKKwlbU09DX0FQX0ZXX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19BUF9GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJzb2MtZnciLAorCQkuaGVscF9tc2cgPSAiU29DIEFQIEZpcm13YXJlIGltYWdlIGZpbGUiLAorCQkuc24gPSAiU29DQVBGaXJtd2FyZUhhc2giLAorCQkubG4gPSAiU29DIEFQIEZpcm13YXJlIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNICisJfSwKKworCVtTT0NfRldfQ09ORklHX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19GV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAic29jLWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJTb0MgRmlybXdhcmUgQ29uZmlnIGZpbGUiLAorCQkuc24gPSAiU29jRmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlNvQyBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1JNTV9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBSTU1fSEFTSF9PSUQsCisJCS5vcHQgPSAicm1tLWZ3IiwKKwkJLmhlbHBfbXNnID0gIlJNTSBGaXJtd2FyZSBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlJNTUZpcm13YXJlSGFzaCIsCisJCS5sbiA9ICJSTU0gRmlybXdhcmUgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW1RSVVNURURfT1NfRldfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9PU19GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0b3MtZnciLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBPUyBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRPU0hhc2giLAorCQkubG4gPSAiVHJ1c3RlZCBPUyBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSAorCX0sCisKKwlbVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAidG9zLWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIE9TIEZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRPU0Zpcm13YXJlQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJUcnVzdGVkIE9TIEZpcm13YXJlIENvbmZpZyBoYXNoIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisKKwlbU1BfUEtHMV9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0cxX0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzEiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlMSBmaWxlIiwKKwkJLnNuID0gIlNQUGtnMUhhc2giLAorCQkubG4gPSAiU1AgUGtnMSBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisJW1NQX1BLRzJfSEFTSF9FWFRdID0geworCQkub2lkID0gU1BfUEtHMl9IQVNIX09JRCwKKwkJLm9wdCA9ICJzcC1wa2cyIiwKKwkJLmhlbHBfbXNnID0gIlNlY3VyZSBQYXJ0aXRpb24gUGFja2FnZTIgZmlsZSIsCisJCS5zbiA9ICJTUFBrZzJIYXNoIiwKKwkJLmxuID0gIlNQIFBrZzIgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCVtTUF9QS0czX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNQX1BLRzNfSEFTSF9PSUQsCisJCS5vcHQgPSAic3AtcGtnMyIsCisJCS5oZWxwX21zZyA9ICJTZWN1cmUgUGFydGl0aW9uIFBhY2thZ2UzIGZpbGUiLAorCQkuc24gPSAiU1BQa2czSGFzaCIsCisJCS5sbiA9ICJTUCBQa2czIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKwlbU1BfUEtHNF9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0c0X0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzQiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlNCBmaWxlIiwKKwkJLnNuID0gIlNQUGtnNEhhc2giLAorCQkubG4gPSAiU1AgUGtnNCBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisKKwlbUFJPVF9QS19FWFRdID0geworCQkub2lkID0gUFJPVF9QS19PSUQsCisJCS5zbiA9ICJQbGF0Zm9ybVJvVEtleSIsCisJCS5sbiA9ICJQbGF0Zm9ybSBSb290IG9mIFRydXN0IFB1YmxpYyBLZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBQUk9UX0tFWQorCX0sCisKKwlbUExBVF9QS19FWFRdID0geworCQkub2lkID0gUExBVF9QS19PSUQsCisJCS5zbiA9ICJQTEFUS2V5IiwKKwkJLmxuID0gIlBsYXRmb3JtIFB1YmxpYyBLZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBQTEFUX0tFWQorCX0sCisKKwlbU1BfUEtHNV9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0c1X0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzUiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlNSBmaWxlIiwKKwkJLnNuID0gIlNQUGtnNUhhc2giLAorCQkubG4gPSAiU1AgUGtnNSBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisJW1NQX1BLRzZfSEFTSF9FWFRdID0geworCQkub2lkID0gU1BfUEtHNl9IQVNIX09JRCwKKwkJLm9wdCA9ICJzcC1wa2c2IiwKKwkJLmhlbHBfbXNnID0gIlNlY3VyZSBQYXJ0aXRpb24gUGFja2FnZTYgZmlsZSIsCisJCS5zbiA9ICJTUFBrZzZIYXNoIiwKKwkJLmxuID0gIlNQIFBrZzYgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCVtTUF9QS0c3X0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNQX1BLRzdfSEFTSF9PSUQsCisJCS5vcHQgPSAic3AtcGtnNyIsCisJCS5oZWxwX21zZyA9ICJTZWN1cmUgUGFydGl0aW9uIFBhY2thZ2U3IGZpbGUiLAorCQkuc24gPSAiU1BQa2c3SGFzaCIsCisJCS5sbiA9ICJTUCBQa2c3IGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKwlbU1BfUEtHOF9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0c4X0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzgiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlOCBmaWxlIiwKKwkJLnNuID0gIlNQUGtnOEhhc2giLAorCQkubG4gPSAiU1AgUGtnOCBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisKKwlbTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX0VYVF0gPSB7CisJCS5vaWQgPSBOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfT0lELAorCQkub3B0ID0gIm50ZnctbnZjdHIiLAorCQkuaGVscF9tc2cgPSAiTm9uLVRydXN0ZWQgRmlybXdhcmUgTm9uLVZvbGF0aWxlIGNvdW50ZXIgdmFsdWUiLAorCQkuc24gPSAiTm9ybWFsV29ybGROVkNvdW50ZXIiLAorCQkubG4gPSAiTm9uLVRydXN0ZWQgRmlybXdhcmUgTm9uLVZvbGF0aWxlIGNvdW50ZXIiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX0lOVEVHRVIsCisJCS50eXBlID0gRVhUX1RZUEVfTlZDT1VOVEVSLAorCQkuYXR0ci5udmN0cl90eXBlID0gTlZDVFJfVFlQRV9OVEZXCisJfSwKKworCVtOT05fVFJVU1RFRF9XT1JMRF9CT09UTE9BREVSX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IE5PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9PSUQsCisJCS5vcHQgPSAibnQtZnciLAorCQkuaGVscF9tc2cgPSAiTm9uLVRydXN0ZWQgV29ybGQgQm9vdGxvYWRlciBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIk5vblRydXN0ZWRXb3JsZEJvb3Rsb2FkZXJIYXNoIiwKKwkJLmxuID0gIk5vbi1UcnVzdGVkIFdvcmxkIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNICisJfSwKKworCVtOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gTk9OX1RSVVNURURfRldfQ09ORklHX0hBU0hfT0lELAorCQkub3B0ID0gIm50LWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJOb24gVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb25maWcgZmlsZSIsCisJCS5zbiA9ICJOb25UcnVzdGVkT1NGaXJtd2FyZUNvbmZpZ0hhc2giLAorCQkubG4gPSAiTm9uLVRydXN0ZWQgT1MgRmlybXdhcmUgQ29uZmlnIGhhc2giLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKK307CisKK1JFR0lTVEVSX0VYVEVOU0lPTlMoY290X2V4dCk7CisKKy8qIEtleXMgdXNlZCB0byBlc3RhYmxpc2ggdGhlIGNoYWluIG9mIHRydXN0LiAqLworc3RhdGljIGtleV90IGNvdF9rZXlzW10gPSB7CisJW1JPVF9LRVldID0geworCQkuaWQgPSBST1RfS0VZLAorCQkub3B0ID0gInJvdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUm9vdCBPZiBUcnVzdCBrZXkgKGlucHV0L291dHB1dCBmaWxlKSIsCisJCS5kZXNjID0gIlJvb3QgT2YgVHJ1c3Qga2V5IgorCX0sCisKKwlbU1dEX1JPVF9LRVldID0geworCQkuaWQgPSBTV0RfUk9UX0tFWSwKKwkJLm9wdCA9ICJzd2Qtcm90LWtleSIsCisJCS5oZWxwX21zZyA9ICJTZWN1cmUgV29ybGQgUm9vdCBvZiBUcnVzdCBrZXkiLAorCQkuZGVzYyA9ICJTZWN1cmUgV29ybGQgUm9vdCBvZiBUcnVzdCBrZXkiCisJfSwKKworCVtDT1JFX1NXRF9LRVldID0geworCQkuaWQgPSBDT1JFX1NXRF9LRVksCisJCS5vcHQgPSAiY29yZS1zd2Qta2V5IiwKKwkJLmhlbHBfbXNnID0gIkNvcmUgU2VjdXJlIFdvcmxkIGtleSIsCisJCS5kZXNjID0gIkNvcmUgU2VjdXJlIFdvcmxkIGtleSIKKwl9LAorCisJW1BST1RfS0VZXSA9IHsKKwkJLmlkID0gUFJPVF9LRVksCisJCS5vcHQgPSAicHJvdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0gUm9vdCBvZiBUcnVzdCBrZXkiLAorCQkuZGVzYyA9ICJQbGF0Zm9ybSBSb290IG9mIFRydXN0IGtleSIKKwl9LAorCisJW1BMQVRfS0VZXSA9IHsKKwkJLmlkID0gUExBVF9LRVksCisJCS5vcHQgPSAicGxhdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0ga2V5IiwKKwkJLmRlc2MgPSAiUGxhdGZvcm0ga2V5IgorCX0sCit9OworCitSRUdJU1RFUl9LRVlTKGNvdF9rZXlzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2NlcnRfY3JlYXRlL3NyYy9jY2EvY290Lm1rIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2NjYS9jb3QubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjODBiYgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2NlcnRfY3JlYXRlL3NyYy9jY2EvY290Lm1rCkBAIC0wLDAgKzEsMTAgQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorIworCitQTEFUX01TRwkJOj0JQ29uZmlkZW50aWFsIENvbXB1dGUgQXJjaGl0ZWN0dXJlIHJvb3Qgb2YgdHJ1c3QKK1BMQVRfSU5DTFVERQkJOj0JLi4vLi4vaW5jbHVkZS90b29sc19zaGFyZQorCitPQkpFQ1RTICs9IHNyYy9jY2EvY290Lm8KZGlmZiAtLWdpdCBhL3Rvb2xzL2ZpcHRvb2wvdGJicl9jb25maWcuYyBiL3Rvb2xzL2ZpcHRvb2wvdGJicl9jb25maWcuYwppbmRleCA0OTk4YmIyLi5jZGJmMzg5IDEwMDY0NAotLS0gYS90b29scy9maXB0b29sL3RiYnJfY29uZmlnLmMKKysrIGIvdG9vbHMvZmlwdG9vbC90YmJyX2NvbmZpZy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0xNzIsNiArMTcyLDIxIEBACiAJCS5jbWRsaW5lX25hbWUgPSAicGxhdC1zcC1jZXJ0IgogCX0sCiAJeworCQkubmFtZSA9ICJDQ0EgQ29udGVudCBDZXJ0aWZpY2F0ZSIsCisJCS51dWlkID0gVVVJRF9DQ0FfQ09OVEVOVF9DRVJULAorCQkuY21kbGluZV9uYW1lID0gImNjYS1jZXJ0IgorCX0sCisJeworCQkubmFtZSA9ICJDb3JlIFNlY3VyZSBXb3JsZCBLZXkgQ2VydGlmaWNhdGUiLAorCQkudXVpZCA9IFVVSURfQ09SRV9TV0RfS0VZX0NFUlQsCisJCS5jbWRsaW5lX25hbWUgPSAiY29yZS1zd2QtY2VydCIKKwl9LAorCXsKKwkJLm5hbWUgPSAiUGxhdGZvcm0gS2V5IENlcnRpZmljYXRlIiwKKwkJLnV1aWQgPSBVVUlEX1BMQVRfS0VZX0NFUlQsCisJCS5jbWRsaW5lX25hbWUgPSAicGxhdC1rZXktY2VydCIKKwl9LAorCXsKIAkJLm5hbWUgPSBOVUxMLAogCQkudXVpZCA9IHsgezB9IH0sCiAJCS5jbWRsaW5lX25hbWUgPSBOVUxMLAo=