ZGlmZiAtLWdpdCBhL2NoYW5nZWxvZy55YW1sIGIvY2hhbmdlbG9nLnlhbWwKaW5kZXggNmQzOTViYy4uMzdhOWM2ZCAxMDA2NDQKLS0tIGEvY2hhbmdlbG9nLnlhbWwKKysrIGIvY2hhbmdlbG9nLnlhbWwKQEAgLTg5LDYgKzg5LDkgQEAKICAgICAgIC0gdGl0bGU6IEFjdGl2aXR5IE1vbml0b3JzIEV4dGVuc2lvbiAoRkVBVF9BTVUpCiAgICAgICAgIHNjb3BlOiBhbXUKIAorICAgICAgLSB0aXRsZTogQ29uZmlkZW50aWFsIENvbXB1dGUgQXJjaGl0ZWN0dXJlIChDQ0EpCisgICAgICAgIHNjb3BlOiBjY2EKKwogICAgICAgLSB0aXRsZTogU3VwcG9ydCBmb3IgdGhlIGBIQ1JYX0VMMmAgcmVnaXN0ZXIgKEZFQVRfSENYKQogICAgICAgICBzY29wZTogaGN4CiAKZGlmZiAtLWdpdCBhL2RvY3MvZGVzaWduL2NwdS1zcGVjaWZpYy1idWlsZC1tYWNyb3MucnN0IGIvZG9jcy9kZXNpZ24vY3B1LXNwZWNpZmljLWJ1aWxkLW1hY3Jvcy5yc3QKaW5kZXggMDFiZDQ5Ni4uNjAzMTNkNSAxMDA2NDQKLS0tIGEvZG9jcy9kZXNpZ24vY3B1LXNwZWNpZmljLWJ1aWxkLW1hY3Jvcy5yc3QKKysrIGIvZG9jcy9kZXNpZ24vY3B1LXNwZWNpZmljLWJ1aWxkLW1hY3Jvcy5yc3QKQEAgLTI3MCw2ICsyNzAsOSBAQAogLSAgYGBFUlJBVEFfQTc3XzE3OTE1NzhgYDogVGhpcyBhcHBsaWVzIGVycmF0YSAxNzkxNTc4IHdvcmthcm91bmQgdG8gQ29ydGV4LUE3NwogICAgQ1BVLiBUaGlzIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIHIwcDAsIHIxcDAsIGFuZCByMXAxLCBpdCBpcyBzdGlsbCBvcGVuLgogCistICBgYEVSUkFUQV9BNzdfMjM1NjU4N2BgOiBUaGlzIGFwcGxpZXMgZXJyYXRhIDIzNTY1ODcgd29ya2Fyb3VuZCB0byBDb3J0ZXgtQTc3CisgICBDUFUuIFRoaXMgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgcjBwMCwgcjFwMCwgYW5kIHIxcDEsIGl0IGlzIHN0aWxsIG9wZW4uCisKIEZvciBDb3J0ZXgtQTc4LCB0aGUgZm9sbG93aW5nIGVycmF0YSBidWlsZCBmbGFncyBhcmUgZGVmaW5lZCA6CiAKIC0gIGBgRVJSQVRBX0E3OF8xNjg4MzA1YGA6IFRoaXMgYXBwbGllcyBlcnJhdGEgMTY4ODMwNSB3b3JrYXJvdW5kIHRvIENvcnRleC1BNzgKQEAgLTQxNiw2ICs0MTksOSBAQAogCiAtICBgYEVSUkFUQV9WMV8yMjk0OTEyYGA6IFRoaXMgYXBwbGllcyBlcnJhdGEgMjI5NDkxMiB3b3JrYXJvdW5kIHRvIE5lb3ZlcnNlLVYxCiAgICBDUFUuIFRoaXMgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgcmV2aXNpb25zIHIwcDAsIHIxcDAsIGFuZCByMXAxIG9mIHRoZSBDUFUuCisKKy0gIGBgRVJSQVRBX1YxXzIzNzIyMDNgYDogVGhpcyBhcHBsaWVzIGVycmF0YSAyMzcyMjAzIHdvcmthcm91bmQgdG8gTmVvdmVyc2UtVjEKKyAgIENQVS4gVGhpcyBuZWVkcyB0byBiZSBlbmFibGVkIGZvciByZXZpc2lvbnMgcjBwMCwgcjFwMCBhbmQgcjFwMSBvZiB0aGUgQ1BVLgogICAgSXQgaXMgc3RpbGwgb3Blbi4KIAogRm9yIENvcnRleC1BNzEwLCB0aGUgZm9sbG93aW5nIGVycmF0YSBidWlsZCBmbGFncyBhcmUgZGVmaW5lZCA6CkBAIC02MjgsOSArNjM0LDE3IEBACiAgICBUaGlzIGlzIHVzZWQgdG8gY29udHJvbCBob3cgdGhlIExMX0NBQ0hFKiBQTVUgZXZlbnRzIGNvdW50LgogICAgRGVmYXVsdCB2YWx1ZSBpcyAwIChEaXNhYmxlZCkuCiAKK0dJQyBFcnJhdGEgV29ya2Fyb3VuZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0gIGBgR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0YGA6IFRoaXMgZmxhZyBhcHBsaWVzIHBhcnQgMiBvZiBlcnJhdGEgMjM4NDM3NAorICAgd29ya2Fyb3VuZCBmb3IgdGhlIGFmZmVjdGVkIEdJQzYwMCBhbmQgR0lDNjAwLUFFIGltcGxlbWVudGF0aW9ucy4gSXQgYXBwbGllcworICAgdG8gaW1wbGVtZW50YXRpb25zIG9mIEdJQzYwMCBhbmQgR0lDNjAwLUFFIHdpdGggcmV2aXNpb25zIGxlc3MgdGhhbiBvciBlcXVhbAorICAgdG8gcjFwNiBhbmQgcjBwMiByZXNwZWN0aXZlbHkuIElmIHRoZSBwbGF0Zm9ybSBzZXRzIEdJQ1YzX1NVUFBPUlRfR0lDNjAwLAorICAgdGhlbiB0aGlzIGZsYWcgaXMgZW5hYmxlZDsgb3RoZXJ3aXNlLCBpdCBpcyAwIChEaXNhYmxlZCkuCisKIC0tLS0tLS0tLS0tLS0tCiAKLSpDb3B5cmlnaHQgKGMpIDIwMTQtMjAyMSwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4qCisqQ29weXJpZ2h0IChjKSAyMDE0LTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuKgogCiAuLiBfQ1ZFLTIwMTctNTcxNTogaHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDE3LTU3MTUKIC4uIF9DVkUtMjAxOC0zNjM5OiBodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMTgtMzYzOQpkaWZmIC0tZ2l0IGEvZG9jcy9zZWN1cml0eV9hZHZpc29yaWVzL3NlY3VyaXR5LWFkdmlzb3J5LXRmdi05LnJzdCBiL2RvY3Mvc2VjdXJpdHlfYWR2aXNvcmllcy9zZWN1cml0eS1hZHZpc29yeS10ZnYtOS5yc3QKaW5kZXggNzRiODVkYy4uYTdiNTk4NCAxMDA2NDQKLS0tIGEvZG9jcy9zZWN1cml0eV9hZHZpc29yaWVzL3NlY3VyaXR5LWFkdmlzb3J5LXRmdi05LnJzdAorKysgYi9kb2NzL3NlY3VyaXR5X2Fkdmlzb3JpZXMvc2VjdXJpdHktYWR2aXNvcnktdGZ2LTkucnN0CkBAIC01NywyMCArNTcsMzggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBDb3J0ZXgtQTc2ICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29ydGV4LUE3NkFFICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IENvcnRleC1BNzcgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBDb3J0ZXgtQTc4ICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29ydGV4LUE3OEFFICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IENvcnRleC1BNzhDICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBDb3J0ZXgtWDEgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgQ29ydGV4LVgyICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IENvcnRleC1BNzEwICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBDb3J0ZXgtTWFrYWx1ICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQ29ydGV4LU1ha2FsdS1FTFAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IENvcnRleC1IdW50ZXIgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBOZW92ZXJzZS1OMSAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgTmVvdmVyc2UtTjIgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IE5lb3ZlcnNlLVYxICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBOZW92ZXJzZS1EZW1ldGVyICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgTmVvdmVyc2UtUG9zZWlkb24gICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIEZvciBhbGwgb3RoZXIgY29yZXMgaW1wYWN0ZWQgYnkgU3BlY3RyZS1CSEIsIHNvbWUgb2Ygd2hpY2ggdGhhdCBkbyBub3QgaW1wbGVtZW50CiBGRUFUX0NTVjIgYW5kIHNvbWUgdGhhdCBkbyBlLmcuIENvcnRleC1BNzMsIHRoZSByZWNvbW1lbmRlZCBtaXRpZ2F0aW9uIGlzIHRvCkBAIC05MCw3ICsxMDgsNyBAQAogaW1wbGVtZW50YXRpb24gYWxzbyBlbmFibGVzIHRoZSBub3JtYWwgd29ybGQgdG8gZGlzY292ZXIgdGhlIHByZXNlbmNlIG9mIHRoaXMKIGZpcm13YXJlIHNlcnZpY2UuIFRoaXMgcGF0Y2ggYWxzbyBpbXBsZW1lbnRzIGBgU01DQ0NfQVJDSF9XT1JLQVJPVU5EXzNgYCBmb3IKIENvcnRleC1BNTcsIENveHRleC1BNzIsIENvcnRleC1BNzMgYW5kIENvcnRleC1BNzUgdXNpbmcgdGhlIGV4aXN0aW5nIHdvcmthcm91bmQuCi1mb3IgQ1ZFLTIwMTctNTcxNS4KK2ZvciBDVkUtMjAxNy01NzE1LiBDb3J0ZXgtQTE1IHBhdGNoIGV4dGVuZHMgU3BlY3RyZSBWMiBtaXRpZ2F0aW9uIHRvIFNwZWN0cmUtQkhCLgogCiBUaGUgYWJvdmUgd29ya2Fyb3VuZCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgKG9uIHZ1bG5lcmFibGUgQ1BVcyBvbmx5KS4gUGxhdGZvcm1zCiBjYW4gY2hvb3NlIHRvIGRpc2FibGUgdGhlbSBhdCBjb21waWxlIHRpbWUgaWYgdGhleSBkbyBub3QgcmVxdWlyZSB0aGVtLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpYy14MDAuYyBiL2RyaXZlcnMvYXJtL2dpYy92My9naWMteDAwLmMKaW5kZXggYWFlZjQ4NS4uNzVlYjY5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hcm0vZ2ljL3YzL2dpYy14MDAuYworKysgYi9kcml2ZXJzL2FybS9naWMvdjMvZ2ljLXgwMC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNy0yMDIwLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKGMpIDIwMjAsIE5WSURJQSBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCkBAIC00Miw2ICs0Miw4IEBACiAjZGVmaW5lIFBXUlJfT04JCQkJKDBVIDw8IFBXUlJfUkRQRF9TSElGVCkKICNkZWZpbmUgUFdSUl9PRkYJCQkoMVUgPDwgUFdSUl9SRFBEX1NISUZUKQogCitzdGF0aWMgYm9vbCBnaWM2MDBfZXJyYXRhX3dhXzIzODQzNzQgX191bnVzZWQ7CisKICNpZiBHSUNWM19TVVBQT1JUX0dJQzYwMAogCiAvKiBHSUMtNjAwLzcwMCBzcGVjaWZpYyBhY2Nlc3NvciBmdW5jdGlvbnMgKi8KQEAgLTE3MCwzICsxNzIsNjAgQEAKIAl9CiAjZW5kaWYKIH0KKworI2lmIEdJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEFwcGx5IHBhcnQgMiBvZiB3b3JrYXJvdW5kIGZvciBlcnJhdGEtMjM4NDM3NCBhcyBwZXIgU0RFTjoKKyAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFybS5jb20vZG9jdW1lbnRhdGlvbi9zZGVuODkyNjAxL2xhdGVzdC8KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIGdpY3YzX2FwcGx5X2VycmF0YV93YV8yMzg0Mzc0KHVpbnRwdHJfdCBnaWNyX2Jhc2UpCit7CisJaWYgKGdpYzYwMF9lcnJhdGFfd2FfMjM4NDM3NCkgeworCQl1aW50MzJfdCBnaWNyX2N0bHJfdmFsID0gZ2ljcl9yZWFkX2N0bHIoZ2ljcl9iYXNlKTsKKworCQlnaWNyX3dyaXRlX2N0bHIoZ2ljcl9iYXNlLCBnaWNyX2N0bHJfdmFsIHwKKwkJCQkoR0lDUl9DVExSX0RQRzBfQklUIHwgR0lDUl9DVExSX0RQRzFOU19CSVQgfAorCQkJCUdJQ1JfQ1RMUl9EUEcxU19CSVQpKTsKKwkJZ2ljcl93cml0ZV9jdGxyKGdpY3JfYmFzZSwgZ2ljcl9jdGxyX3ZhbCAmCisJCQkJfihHSUNSX0NUTFJfRFBHMF9CSVQgfCBHSUNSX0NUTFJfRFBHMU5TX0JJVCB8CisJCQkJICBHSUNSX0NUTFJfRFBHMVNfQklUKSk7CisJfQorfQorI2VuZGlmIC8qIEdJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NCAqLworCit2b2lkIGdpY3YzX2NoZWNrX2VycmF0YXNfYXBwbGllcyh1aW50cHRyX3QgZ2ljZF9iYXNlKQoreworCXVuc2lnbmVkIGludCBnaWNfcHJvZF9pZDsKKwl1aW50OF90IGdpY19yZXY7CisKKwlhc3NlcnQoZ2ljZF9iYXNlICE9IDBVTCk7CisKKwlnaWN2M19nZXRfY29tcG9uZW50X3Byb2RpZF9yZXYoZ2ljZF9iYXNlLCAmZ2ljX3Byb2RfaWQsICZnaWNfcmV2KTsKKworCS8qCisJICogVGhpcyB3b3JrYXJvdW5kIGFwcGxpY2FibGUgb25seSB0byBHSUM2MDAgYW5kIEdJQzYwMEFFIHByb2R1Y3RzIHdpdGgKKwkgKiByZXZpc2lvbiBsZXNzIHRoYW4gcjFwNiBhbmQgcjBwMiByZXNwZWN0aXZlbHkuCisJICogQXMgcGVyIEdJQzYwMC9HSUM2MDBBRSBzcGVjaWZpY2F0aW9uIC0KKwkgKiByMXA2ID0gMHgxNyA9PiBHSUNEX0lJRFJbMTk6MTJdCisJICogcjBwMiA9IDB4MDQgPT4gR0lDRF9JSURSWzE5OjEyXQorCSAqLworCWlmICgoZ2ljX3Byb2RfaWQgPT0gR0lDX1BST0RVQ1RfSURfR0lDNjAwKSB8fAorCQkgICAgKGdpY19wcm9kX2lkID09IEdJQ19QUk9EVUNUX0lEX0dJQzYwMEFFKSkgeworCQlpZiAoKChnaWNfcHJvZF9pZCA9PSBHSUNfUFJPRFVDVF9JRF9HSUM2MDApICYmCisJCSAgICAgKGdpY19yZXYgPD0gR0lDX1JFVihHSUNfVkFSSUFOVF9SMSwgR0lDX1JFVl9QNikpKSB8fAorCQkgICAgICgoZ2ljX3Byb2RfaWQgPT0gR0lDX1BST0RVQ1RfSURfR0lDNjAwQUUpICYmCisJCSAgICAgKGdpY19yZXYgPD0gR0lDX1JFVihHSUNfVkFSSUFOVF9SMCwgR0lDX1JFVl9QMikpKSkgeworI2lmIEdJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NAorCQkJZ2ljNjAwX2VycmF0YV93YV8yMzg0Mzc0ID0gdHJ1ZTsKKwkJCVZFUkJPU0UoIiVzIGFwcGxpZXNcbiIsCisJCQkJIkdJQzYwMC9HSUM2MDBBRSBlcnJhdGEgd29ya2Fyb3VuZCAyMzg0Mzc0Iik7CisjZWxzZQorCQkJV0FSTigiJXMgbWlzc2luZ1xuIiwKKwkJCSAgICAgIkdJQzYwMC9HSUM2MDBBRSBlcnJhdGEgd29ya2Fyb3VuZCAyMzg0Mzc0Iik7CisjZW5kaWYgLyogR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0ICovCisJCX0gZWxzZSB7CisJCQlWRVJCT1NFKCIlcyBub3QgYXBwbGllc1xuIiwKKwkJCQkiR0lDNjAwL0dJQzYwMEFFIGVycmF0YSB3b3JrYXJvdW5kIDIzODQzNzQiKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXJtL2dpYy92My9naWN2My5tayBiL2RyaXZlcnMvYXJtL2dpYy92My9naWN2My5tawppbmRleCBkN2UzNTM2Li4xZDIwZmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2FybS9naWMvdjMvZ2ljdjMubWsKKysrIGIvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzLm1rCkBAIC0xLDUgKzEsNSBAQAogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMCwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDEzLTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoYykgMjAyMSwgTlZJRElBIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCkBAIC0xMiw2ICsxMiw3IEBACiBHSUNWM19PVkVSUklERV9ESVNUSUZfUFdSX09QUwk/PQkwCiBHSUNfRU5BQkxFX1Y0X0VYVE4JCT89CTAKIEdJQ19FWFRfSU5USUQJCQk/PQkwCitHSUM2MDBfRVJSQVRBX1dBXzIzODQzNzQJPz0JJHtHSUNWM19TVVBQT1JUX0dJQzYwMH0KIAogR0lDVjNfU09VUkNFUwkrPQlkcml2ZXJzL2FybS9naWMvdjMvZ2ljdjNfbWFpbi5jCQlcCiAJCQlkcml2ZXJzL2FybS9naWMvdjMvZ2ljdjNfaGVscGVycy5jCVwKQEAgLTQ3LDMgKzQ4LDcgQEAKICMgU2V0IHN1cHBvcnQgZm9yIGV4dGVuZGVkIFBQSSBhbmQgU1BJIHJhbmdlCiAkKGV2YWwgJChjYWxsIGFzc2VydF9ib29sZWFuLEdJQ19FWFRfSU5USUQpKQogJChldmFsICQoY2FsbCBhZGRfZGVmaW5lLEdJQ19FWFRfSU5USUQpKQorCisjIFNldCBlcnJhdGEgd29ya2Fyb3VuZCBmb3IgR0lDNjAwL0dJQzYwMEFFCiskKGV2YWwgJChjYWxsIGFzc2VydF9ib29sZWFuLEdJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NCkpCiskKGV2YWwgJChjYWxsIGFkZF9kZWZpbmUsR0lDNjAwX0VSUkFUQV9XQV8yMzg0Mzc0KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXJtL2dpYy92My9naWN2M19oZWxwZXJzLmMgYi9kcml2ZXJzL2FybS9naWMvdjMvZ2ljdjNfaGVscGVycy5jCmluZGV4IDc1M2Q5OTUuLmYzODUyZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXJtL2dpYy92My9naWN2M19oZWxwZXJzLmMKKysrIGIvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzX2hlbHBlcnMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMSwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIyLCBBcm0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtNDA4LDMgKzQwOCwzNCBAQAogCiAJcmV0dXJuIHBhcnRfaWQ7CiB9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHByb2R1Y3QgSUQgYW5kIHJldmlzaW9uIG9mIEdJQworICogQGdpY2RfYmFzZTogICBiYXNlIGFkZHJlc3Mgb2YgdGhlIEdJQyBkaXN0cmlidXRvcgorICogQGdpY19wcm9kX2lkOiByZXRyaWV2ZWQgcHJvZHVjdCBpZCBvZiBHSUMKKyAqIEBnaWNfcmV2OiAgICAgcmV0cmlldmVkIHJldmlzaW9uIG9mIEdJQworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgZ2ljdjNfZ2V0X2NvbXBvbmVudF9wcm9kaWRfcmV2KGNvbnN0IHVpbnRwdHJfdCBnaWNkX2Jhc2UsCisJCQkJICAgIHVuc2lnbmVkIGludCAqZ2ljX3Byb2RfaWQsCisJCQkJICAgIHVpbnQ4X3QgKmdpY19yZXYpCit7CisJdW5zaWduZWQgaW50IGdpY2RfaWlkcjsKKwl1aW50OF90IGdpY192YXJpYW50OworCisJZ2ljZF9paWRyID0gZ2ljZF9yZWFkX2lpZHIoZ2ljZF9iYXNlKTsKKwkqZ2ljX3Byb2RfaWQgPSBnaWNkX2lpZHIgPj4gSUlEUl9QUk9EVUNUX0lEX1NISUZUOworCSpnaWNfcHJvZF9pZCAmPSBJSURSX1BST0RVQ1RfSURfTUFTSzsKKworCWdpY192YXJpYW50ID0gZ2ljZF9paWRyID4+IElJRFJfVkFSSUFOVF9TSElGVDsKKwlnaWNfdmFyaWFudCAmPSBJSURSX1ZBUklBTlRfTUFTSzsKKworCSpnaWNfcmV2ID0gZ2ljZF9paWRyID4+IElJRFJfUkVWX1NISUZUOworCSpnaWNfcmV2ICY9IElJRFJfUkVWX01BU0s7CisKKwkvKgorCSAqIHBhY2sgZ2ljIHZhcmlhbnQgYW5kIGdpY19yZXYgaW4gMSBieXRlCisJICogZ2ljX3JldiA9IGdpY192YXJpYW50Wzc6NF0gYW5kIGdpY19yZXZbMDozXQorCSAqLworCSpnaWNfcmV2ID0gKmdpY19yZXYgfCBnaWNfdmFyaWFudCA8PCAweDQ7CisKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXJtL2dpYy92My9naWN2M19tYWluLmMgYi9kcml2ZXJzL2FybS9naWMvdjMvZ2ljdjNfbWFpbi5jCmluZGV4IDUzYThmYWUuLjhlYWQ0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXJtL2dpYy92My9naWN2M19tYWluLmMKKysrIGIvZHJpdmVycy9hcm0vZ2ljL3YzL2dpY3YzX21haW4uYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMSwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIyLCBBcm0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtMTY5LDYgKzE2OSw4IEBACiAJZmx1c2hfZGNhY2hlX3JhbmdlKCh1aW50cHRyX3QpZ2ljdjNfZHJpdmVyX2RhdGEsCiAJCXNpemVvZigqZ2ljdjNfZHJpdmVyX2RhdGEpKTsKICNlbmRpZgorCWdpY3YzX2NoZWNrX2VycmF0YXNfYXBwbGllcyhwbGF0X2RyaXZlcl9kYXRhLT5naWNkX2Jhc2UpOworCiAJSU5GTygiR0lDdiV1IHdpdGglcyBsZWdhY3kgc3VwcG9ydCBkZXRlY3RlZC5cbiIsIGdpY192ZXJzaW9uLAogCQkJCShnaWN2Ml9jb21wYXQgPT0gMFUpID8gIiIgOiAib3V0Iik7CiAJSU5GTygiQVJNIEdJQ3YldSBkcml2ZXIgaW5pdGlhbGl6ZWQgaW4gRUwzXG4iLCBnaWNfdmVyc2lvbik7CkBAIC0zNjIsOSArMzY0LDE3IEBACiAJLyogQWRkIERTQiB0byBlbnN1cmUgdmlzaWJpbGl0eSBvZiBTeXN0ZW0gcmVnaXN0ZXIgd3JpdGVzICovCiAJZHNiKCk7CiAKLQkvKiBNYXJrIHRoZSBjb25uZWN0ZWQgY29yZSBhcyBhc2xlZXAgKi8KIAlnaWNyX2Jhc2UgPSBnaWN2M19kcml2ZXJfZGF0YS0+cmRpc3RpZl9iYXNlX2FkZHJzW3Byb2NfbnVtXTsKLQlhc3NlcnQoZ2ljcl9iYXNlICE9IDBVKTsKKwlhc3NlcnQoZ2ljcl9iYXNlICE9IDBVTCk7CisKKwkvKgorCSAqIGRzYigpIGFscmVhZHkgaXNzdWVkIHByZXZpb3VzbHkgYWZ0ZXIgY2xlYXJpbmcgdGhlIENQVSBncm91cAorCSAqIGVuYWJsZWQsIGFwcGx5IGJlbG93IHdvcmthcm91bmQgdG8gdG9nZ2xlIHRoZSAiRFBHKiIKKwkgKiBiaXRzIG9mIEdJQ1JfQ1RMUiByZWdpc3RlciBmb3IgdW5ibG9ja2luZyBldmVudC4KKwkgKi8KKwlnaWN2M19hcHBseV9lcnJhdGFfd2FfMjM4NDM3NChnaWNyX2Jhc2UpOworCisJLyogTWFyayB0aGUgY29ubmVjdGVkIGNvcmUgYXMgYXNsZWVwICovCiAJZ2ljdjNfcmRpc3RpZl9tYXJrX2NvcmVfYXNsZWVwKGdpY3JfYmFzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXV0aC9jY2EvY290LmMgYi9kcml2ZXJzL2F1dGgvY2NhL2NvdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZjMwODcKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2F1dGgvY2NhL2NvdC5jCkBAIC0wLDAgKzEsNjc1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCisgKi8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaW5jbHVkZSA8ZHJpdmVycy9hdXRoL2F1dGhfbW9kLmg+CisjaW5jbHVkZSBNQkVEVExTX0NPTkZJR19GSUxFCisjaW5jbHVkZSA8dG9vbHNfc2hhcmUvY2NhX29pZC5oPgorCisjaW5jbHVkZSA8cGxhdGZvcm1fZGVmLmg+CisKKy8qCisgKiBBbGxvY2F0ZSBzdGF0aWMgYnVmZmVycyB0byBzdG9yZSB0aGUgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycyBleHRyYWN0ZWQgZnJvbQorICogdGhlIGNlcnRpZmljYXRlcy4KKyAqLworc3RhdGljIHVuc2lnbmVkIGNoYXIgZndfY29uZmlnX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciB0Yl9md19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgdGJfZndfY29uZmlnX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciBod19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHNvY19md19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgc29jX2Z3X2NvbmZpZ19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworc3RhdGljIHVuc2lnbmVkIGNoYXIgcm1tX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CisKKyNpZmRlZiBJTUFHRV9CTDIKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG50X3dvcmxkX2JsX2hhc2hfYnVmW0hBU0hfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciB0b3NfZndfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHRvc19md19jb25maWdfaGFzaF9idWZbSEFTSF9ERVJfTEVOXTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIG50X2Z3X2NvbmZpZ19oYXNoX2J1ZltIQVNIX0RFUl9MRU5dOworI2lmIGRlZmluZWQoU1BEX3NwbWQpCitzdGF0aWMgdW5zaWduZWQgY2hhciBzcF9wa2dfaGFzaF9idWZbTUFYX1NQX0lEU11bSEFTSF9ERVJfTEVOXTsKKyNlbmRpZiAvKiBTUERfc3BtZCAqLworCitzdGF0aWMgdW5zaWduZWQgY2hhciBjb3JlX3N3ZF9wa19idWZbUEtfREVSX0xFTl07CitzdGF0aWMgdW5zaWduZWQgY2hhciBwbGF0X3BrX2J1ZltQS19ERVJfTEVOXTsKKyNlbmRpZiAvKiBJTUFHRV9CTDIgKi8KKworLyoKKyAqIFBhcmFtZXRlciB0eXBlIGRlc2NyaXB0b3JzLgorICovCitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCB0cnVzdGVkX252X2N0ciA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX05WX0NUUiwgVFJVU1RFRF9GV19OVkNPVU5URVJfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHN1YmplY3RfcGsgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9QVUJfS0VZLCAwKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNpZyA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1NJRywgMCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzaWdfYWxnID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fU0lHX0FMRywgMCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCByYXdfZGF0YSA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1JBV19EQVRBLCAwKTsKKworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdGJfZndfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFRSVVNURURfQk9PVF9GV19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCB0Yl9md19jb25maWdfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFRSVVNURURfQk9PVF9GV19DT05GSUdfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgaHdfY29uZmlnX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBIV19DT05GSUdfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgZndfY29uZmlnX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBGV19DT05GSUdfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc29jX2Z3X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTT0NfQVBfRldfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc29jX2Z3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU09DX0ZXX0NPTkZJR19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBybW1faGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFJNTV9IQVNIX09JRCk7CisKKyNpZmRlZiBJTUFHRV9CTDIKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IG5vbl90cnVzdGVkX252X2N0ciA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX05WX0NUUiwgTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX09JRCk7CisKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHByb3RfcGsgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9QVUJfS0VZLCBQUk9UX1BLX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzd2Rfcm90X3BrID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fUFVCX0tFWSwgU1dEX1JPVF9QS19PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgY29yZV9zd2RfcGsgPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9QVUJfS0VZLCBDT1JFX1NXRF9QS19PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgcGxhdF9wayA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX1BVQl9LRVksIFBMQVRfUEtfT0lEKTsKKworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3QgdG9zX2Z3X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBUUlVTVEVEX09TX0ZXX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHRvc19md19jb25maWdfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFRSVVNURURfT1NfRldfQ09ORklHX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IG50X3dvcmxkX2JsX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBOT05fVFJVU1RFRF9XT1JMRF9CT09UTE9BREVSX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IG50X2Z3X2NvbmZpZ19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgTk9OX1RSVVNURURfRldfQ09ORklHX0hBU0hfT0lEKTsKKyNpZiBkZWZpbmVkKFNQRF9zcG1kKQorc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc3BfcGtnMV9oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU1BfUEtHMV9IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzcF9wa2cyX2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTUF9QS0cyX0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNwX3BrZzNfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFNQX1BLRzNfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc3BfcGtnNF9oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU1BfUEtHNF9IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzcF9wa2c1X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTUF9QS0c1X0hBU0hfT0lEKTsKK3N0YXRpYyBhdXRoX3BhcmFtX3R5cGVfZGVzY190IHNwX3BrZzZfaGFzaCA9IEFVVEhfUEFSQU1fVFlQRV9ERVNDKAorCQlBVVRIX1BBUkFNX0hBU0gsIFNQX1BLRzZfSEFTSF9PSUQpOworc3RhdGljIGF1dGhfcGFyYW1fdHlwZV9kZXNjX3Qgc3BfcGtnN19oYXNoID0gQVVUSF9QQVJBTV9UWVBFX0RFU0MoCisJCUFVVEhfUEFSQU1fSEFTSCwgU1BfUEtHN19IQVNIX09JRCk7CitzdGF0aWMgYXV0aF9wYXJhbV90eXBlX2Rlc2NfdCBzcF9wa2c4X2hhc2ggPSBBVVRIX1BBUkFNX1RZUEVfREVTQygKKwkJQVVUSF9QQVJBTV9IQVNILCBTUF9QS0c4X0hBU0hfT0lEKTsKKyNlbmRpZiAvKiBTUERfc3BtZCAqLworI2VuZGlmIC8qIElNQUdFX0JMMiAqLworCisvKiBDQ0EgQ29udGVudCBDZXJ0aWZpY2F0ZSAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBjY2FfY29udGVudF9jZXJ0ID0geworCS5pbWdfaWQgPSBDQ0FfQ09OVEVOVF9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSBOVUxMLAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfU0lHLAorCQkJLnBhcmFtLnNpZyA9IHsKKwkJCQkucGsgPSAmc3ViamVjdF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZ0Yl9md19oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopdGJfZndfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmdGJfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0Yl9md19jb25maWdfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsyXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilmd19jb25maWdfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVszXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmaHdfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilod19jb25maWdfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVs0XSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc29jX2Z3X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzb2NfZndfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVs1XSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc29jX2Z3X2NvbmZpZ19oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopc29jX2Z3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzZdID0geworCQkJLnR5cGVfZGVzYyA9ICZybW1faGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXJtbV9oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKKyNpZmRlZiBJTUFHRV9CTDEKK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgYmwyX2ltYWdlID0geworCS5pbWdfaWQgPSBCTDJfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJmNjYV9jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmdGJfZndfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCB0Yl9md19jb25maWcgPSB7CisJLmltZ19pZCA9IFRCX0ZXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmY2NhX2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZ0Yl9md19jb25maWdfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBmd19jb25maWcgPSB7CisJLmltZ19pZCA9IEZXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmY2NhX2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZmd19jb25maWdfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKyNlbmRpZiAvKiBJTUFHRV9CTDEgKi8KKworI2lmZGVmIElNQUdFX0JMMgorLyogSFcgQ29uZmlnICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGh3X2NvbmZpZyA9IHsKKwkuaW1nX2lkID0gSFdfQ09ORklHX0lELAorCS5pbWdfdHlwZSA9IElNR19SQVcsCisJLnBhcmVudCA9ICZjY2FfY29udGVudF9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfSEFTSCwKKwkJCS5wYXJhbS5oYXNoID0geworCQkJCS5kYXRhID0gJnJhd19kYXRhLAorCQkJCS5oYXNoID0gJmh3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBCTDMxICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGJsMzFfaW1hZ2UgPSB7CisJLmltZ19pZCA9IEJMMzFfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJmNjYV9jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmc29jX2Z3X2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIEJMMzEgQ29uZmlnICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHNvY19md19jb25maWcgPSB7CisJLmltZ19pZCA9IFNPQ19GV19DT05GSUdfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJmNjYV9jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmc29jX2Z3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBSTU0gKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3Qgcm1tX2ltYWdlID0geworCS5pbWdfaWQgPSBSTU1fSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJmNjYV9jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmcm1tX2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIENvcmUgU1dEIEtleSBDZXJ0aWZpY2F0ZSAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBjb3JlX3N3ZF9rZXlfY2VydCA9IHsKKwkuaW1nX2lkID0gQ09SRV9TV0RfS0VZX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9IE5VTEwsIC8qIFNXRCBST09UIENFUlQgKi8KKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnN3ZF9yb3RfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIsCisJCQkJLnBsYXRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmY29yZV9zd2RfcGssCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiljb3JlX3N3ZF9wa19idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpUEtfREVSX0xFTgorCQkJfQorCQl9CisJfQorfTsKKworLyogU1BNQyBDb250ZW50IENlcnRpZmljYXRlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IHRydXN0ZWRfb3NfZndfY29udGVudF9jZXJ0ID0geworCS5pbWdfaWQgPSBUUlVTVEVEX09TX0ZXX0NPTlRFTlRfQ0VSVF9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfQ0VSVCwKKwkucGFyZW50ID0gJmNvcmVfc3dkX2tleV9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfU0lHLAorCQkJLnBhcmFtLnNpZyA9IHsKKwkJCQkucGsgPSAmY29yZV9zd2RfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIsCisJCQkJLnBsYXRfbnZfY3RyID0gJnRydXN0ZWRfbnZfY3RyCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmdG9zX2Z3X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKil0b3NfZndfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmdG9zX2Z3X2NvbmZpZ19oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopdG9zX2Z3X2NvbmZpZ19oYXNoX2J1ZiwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKKy8qIFNQTUMgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgYmwzMl9pbWFnZSA9IHsKKwkuaW1nX2lkID0gQkwzMl9JTUFHRV9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9vc19md19jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmdG9zX2Z3X2hhc2gKKwkJCX0KKwkJfQorCX0KK307CisKKy8qIFNQTSBDb25maWcgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgdG9zX2Z3X2NvbmZpZyA9IHsKKwkuaW1nX2lkID0gVE9TX0ZXX0NPTkZJR19JRCwKKwkuaW1nX3R5cGUgPSBJTUdfUkFXLAorCS5wYXJlbnQgPSAmdHJ1c3RlZF9vc19md19jb250ZW50X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9IQVNILAorCQkJLnBhcmFtLmhhc2ggPSB7CisJCQkJLmRhdGEgPSAmcmF3X2RhdGEsCisJCQkJLmhhc2ggPSAmdG9zX2Z3X2NvbmZpZ19oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBQbGF0Zm9ybSBLZXkgQ2VydGlmaWNhdGUgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgcGxhdF9rZXlfY2VydCA9IHsKKwkuaW1nX2lkID0gUExBVF9LRVlfQ0VSVF9JRCwKKwkuaW1nX3R5cGUgPSBJTUdfQ0VSVCwKKwkucGFyZW50ID0gTlVMTCwgLyogUExBVEZPUk0gUk9PVCBDRVJUICovCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZwcm90X3BrLAorCQkJCS5zaWcgPSAmc2lnLAorCQkJCS5hbGcgPSAmc2lnX2FsZywKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YQorCQkJfQorCQl9LAorCQlbMV0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX05WX0NUUiwKKwkJCS5wYXJhbS5udl9jdHIgPSB7CisJCQkJLmNlcnRfbnZfY3RyID0gJm5vbl90cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmbm9uX3RydXN0ZWRfbnZfY3RyCisJCQl9CisJCX0KKwl9LAorCS5hdXRoZW50aWNhdGVkX2RhdGEgPSAoY29uc3QgYXV0aF9wYXJhbV9kZXNjX3RbQ09UX01BWF9WRVJJRklFRF9QQVJBTVNdKSB7CisJCVswXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmcGxhdF9waywKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXBsYXRfcGtfYnVmLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KVBLX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKKy8qIE5vbi1UcnVzdGVkIEZpcm13YXJlICovCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IG5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCA9IHsKKwkuaW1nX2lkID0gTk9OX1RSVVNURURfRldfQ09OVEVOVF9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSAmcGxhdF9rZXlfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX1NJRywKKwkJCS5wYXJhbS5zaWcgPSB7CisJCQkJLnBrID0gJnBsYXRfcGssCisJCQkJLnNpZyA9ICZzaWcsCisJCQkJLmFsZyA9ICZzaWdfYWxnLAorCQkJCS5kYXRhID0gJnJhd19kYXRhCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfTlZfQ1RSLAorCQkJLnBhcmFtLm52X2N0ciA9IHsKKwkJCQkuY2VydF9udl9jdHIgPSAmbm9uX3RydXN0ZWRfbnZfY3RyLAorCQkJCS5wbGF0X252X2N0ciA9ICZub25fdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZudF93b3JsZF9ibF9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopbnRfd29ybGRfYmxfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmbnRfZndfY29uZmlnX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKiludF9md19jb25maWdfaGFzaF9idWYsCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0KKwl9Cit9OworCitzdGF0aWMgY29uc3QgYXV0aF9pbWdfZGVzY190IGJsMzNfaW1hZ2UgPSB7CisJLmltZ19pZCA9IEJMMzNfSU1BR0VfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJm5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZudF93b3JsZF9ibF9oYXNoCisJCQl9CisJCX0KKwl9Cit9OworCisvKiBOVCBGVyBDb25maWcgKi8KK3N0YXRpYyBjb25zdCBhdXRoX2ltZ19kZXNjX3QgbnRfZndfY29uZmlnID0geworCS5pbWdfaWQgPSBOVF9GV19DT05GSUdfSUQsCisJLmltZ190eXBlID0gSU1HX1JBVywKKwkucGFyZW50ID0gJm5vbl90cnVzdGVkX2Z3X2NvbnRlbnRfY2VydCwKKwkuaW1nX2F1dGhfbWV0aG9kcyA9IChjb25zdCBhdXRoX21ldGhvZF9kZXNjX3RbQVVUSF9NRVRIT0RfTlVNXSkgeworCQlbMF0gPSB7CisJCQkudHlwZSA9IEFVVEhfTUVUSE9EX0hBU0gsCisJCQkucGFyYW0uaGFzaCA9IHsKKwkJCQkuZGF0YSA9ICZyYXdfZGF0YSwKKwkJCQkuaGFzaCA9ICZudF9md19jb25maWdfaGFzaAorCQkJfQorCQl9CisJfQorfTsKKworLyoKKyAqIFNlY3VyZSBQYXJ0aXRpb25zCisgKi8KKyNpZiBkZWZpbmVkKFNQRF9zcG1kKQorc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBzaXBfc3BfY29udGVudF9jZXJ0ID0geworCS5pbWdfaWQgPSBTSVBfU1BfQ09OVEVOVF9DRVJUX0lELAorCS5pbWdfdHlwZSA9IElNR19DRVJULAorCS5wYXJlbnQgPSAmY29yZV9zd2Rfa2V5X2NlcnQsCisJLmltZ19hdXRoX21ldGhvZHMgPSAoY29uc3QgYXV0aF9tZXRob2RfZGVzY190W0FVVEhfTUVUSE9EX05VTV0pIHsKKwkJWzBdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9TSUcsCisJCQkucGFyYW0uc2lnID0geworCQkJCS5wayA9ICZjb3JlX3N3ZF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZ0cnVzdGVkX252X2N0ciwKKwkJCQkucGxhdF9udl9jdHIgPSAmdHJ1c3RlZF9udl9jdHIKKwkJCX0KKwkJfQorCX0sCisJLmF1dGhlbnRpY2F0ZWRfZGF0YSA9IChjb25zdCBhdXRoX3BhcmFtX2Rlc2NfdFtDT1RfTUFYX1ZFUklGSUVEX1BBUkFNU10pIHsKKwkJWzBdID0geworCQkJLnR5cGVfZGVzYyA9ICZzcF9wa2cxX2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzcF9wa2dfaGFzaF9idWZbMF0sCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsxXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc3BfcGtnMl9oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopc3BfcGtnX2hhc2hfYnVmWzFdLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9LAorCQlbMl0gPSB7CisJCQkudHlwZV9kZXNjID0gJnNwX3BrZzNfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNwX3BrZ19oYXNoX2J1ZlsyXSwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzNdID0geworCQkJLnR5cGVfZGVzYyA9ICZzcF9wa2c0X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzcF9wa2dfaGFzaF9idWZbM10sCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0KKwl9Cit9OworCitERUZJTkVfU0lQX1NQX1BLRygxKTsKK0RFRklORV9TSVBfU1BfUEtHKDIpOworREVGSU5FX1NJUF9TUF9QS0coMyk7CitERUZJTkVfU0lQX1NQX1BLRyg0KTsKKworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCBwbGF0X3NwX2NvbnRlbnRfY2VydCA9IHsKKwkuaW1nX2lkID0gUExBVF9TUF9DT05URU5UX0NFUlRfSUQsCisJLmltZ190eXBlID0gSU1HX0NFUlQsCisJLnBhcmVudCA9ICZwbGF0X2tleV9jZXJ0LAorCS5pbWdfYXV0aF9tZXRob2RzID0gKGNvbnN0IGF1dGhfbWV0aG9kX2Rlc2NfdFtBVVRIX01FVEhPRF9OVU1dKSB7CisJCVswXSA9IHsKKwkJCS50eXBlID0gQVVUSF9NRVRIT0RfU0lHLAorCQkJLnBhcmFtLnNpZyA9IHsKKwkJCQkucGsgPSAmcGxhdF9waywKKwkJCQkuc2lnID0gJnNpZywKKwkJCQkuYWxnID0gJnNpZ19hbGcsCisJCQkJLmRhdGEgPSAmcmF3X2RhdGEKKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGUgPSBBVVRIX01FVEhPRF9OVl9DVFIsCisJCQkucGFyYW0ubnZfY3RyID0geworCQkJCS5jZXJ0X252X2N0ciA9ICZub25fdHJ1c3RlZF9udl9jdHIsCisJCQkJLnBsYXRfbnZfY3RyID0gJm5vbl90cnVzdGVkX252X2N0cgorCQkJfQorCQl9CisJfSwKKwkuYXV0aGVudGljYXRlZF9kYXRhID0gKGNvbnN0IGF1dGhfcGFyYW1fZGVzY190W0NPVF9NQVhfVkVSSUZJRURfUEFSQU1TXSkgeworCQlbMF0gPSB7CisJCQkudHlwZV9kZXNjID0gJnNwX3BrZzVfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNwX3BrZ19oYXNoX2J1Zls0XSwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfSwKKwkJWzFdID0geworCQkJLnR5cGVfZGVzYyA9ICZzcF9wa2c2X2hhc2gsCisJCQkuZGF0YSA9IHsKKwkJCQkucHRyID0gKHZvaWQgKilzcF9wa2dfaGFzaF9idWZbNV0sCisJCQkJLmxlbiA9ICh1bnNpZ25lZCBpbnQpSEFTSF9ERVJfTEVOCisJCQl9CisJCX0sCisJCVsyXSA9IHsKKwkJCS50eXBlX2Rlc2MgPSAmc3BfcGtnN19oYXNoLAorCQkJLmRhdGEgPSB7CisJCQkJLnB0ciA9ICh2b2lkICopc3BfcGtnX2hhc2hfYnVmWzZdLAorCQkJCS5sZW4gPSAodW5zaWduZWQgaW50KUhBU0hfREVSX0xFTgorCQkJfQorCQl9LAorCQlbM10gPSB7CisJCQkudHlwZV9kZXNjID0gJnNwX3BrZzhfaGFzaCwKKwkJCS5kYXRhID0geworCQkJCS5wdHIgPSAodm9pZCAqKXNwX3BrZ19oYXNoX2J1Zls3XSwKKwkJCQkubGVuID0gKHVuc2lnbmVkIGludClIQVNIX0RFUl9MRU4KKwkJCX0KKwkJfQorCX0KK307CisKK0RFRklORV9QTEFUX1NQX1BLRyg1KTsKK0RFRklORV9QTEFUX1NQX1BLRyg2KTsKK0RFRklORV9QTEFUX1NQX1BLRyg3KTsKK0RFRklORV9QTEFUX1NQX1BLRyg4KTsKKyNlbmRpZiAvKiBTUERfc3BtZCAqLworI2VuZGlmIC8qIElNQUdFX0JMMiAqLworLyoKKyAqIENoYWluIG9mIHRydXN0IGRlZmluaXRpb24KKyAqLworI2lmZGVmIElNQUdFX0JMMQorc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCAqIGNvbnN0IGNvdF9kZXNjW10gPSB7CisJW0NDQV9DT05URU5UX0NFUlRfSURdCQkJPQkmY2NhX2NvbnRlbnRfY2VydCwKKwlbQkwyX0lNQUdFX0lEXQkJCQk9CSZibDJfaW1hZ2UsCisJW1RCX0ZXX0NPTkZJR19JRF0JCQk9CSZ0Yl9md19jb25maWcsCisJW0ZXX0NPTkZJR19JRF0JCQkJPQkmZndfY29uZmlnLAorfTsKKyNlbHNlIC8qIElNQUdFX0JMMiAqLworc3RhdGljIGNvbnN0IGF1dGhfaW1nX2Rlc2NfdCAqIGNvbnN0IGNvdF9kZXNjW10gPSB7CisJW0NDQV9DT05URU5UX0NFUlRfSURdCQkJPQkmY2NhX2NvbnRlbnRfY2VydCwKKwlbSFdfQ09ORklHX0lEXQkJCQk9CSZod19jb25maWcsCisJW0JMMzFfSU1BR0VfSURdCQkJCT0JJmJsMzFfaW1hZ2UsCisJW1NPQ19GV19DT05GSUdfSURdCQkJPQkmc29jX2Z3X2NvbmZpZywKKwlbUk1NX0lNQUdFX0lEXQkJCQk9CSZybW1faW1hZ2UsCisJW0NPUkVfU1dEX0tFWV9DRVJUX0lEXQkJCT0JJmNvcmVfc3dkX2tleV9jZXJ0LAorCVtUUlVTVEVEX09TX0ZXX0NPTlRFTlRfQ0VSVF9JRF0JCT0JJnRydXN0ZWRfb3NfZndfY29udGVudF9jZXJ0LAorCVtCTDMyX0lNQUdFX0lEXQkJCQk9CSZibDMyX2ltYWdlLAorCVtUT1NfRldfQ09ORklHX0lEXQkJCT0JJnRvc19md19jb25maWcsCisJW1BMQVRfS0VZX0NFUlRfSURdCQkJPQkmcGxhdF9rZXlfY2VydCwKKwlbTk9OX1RSVVNURURfRldfQ09OVEVOVF9DRVJUX0lEXQk9CSZub25fdHJ1c3RlZF9md19jb250ZW50X2NlcnQsCisJW0JMMzNfSU1BR0VfSURdCQkJCT0JJmJsMzNfaW1hZ2UsCisJW05UX0ZXX0NPTkZJR19JRF0JCQk9CSZudF9md19jb25maWcsCisjaWYgZGVmaW5lZChTUERfc3BtZCkKKwlbU0lQX1NQX0NPTlRFTlRfQ0VSVF9JRF0JCT0JJnNpcF9zcF9jb250ZW50X2NlcnQsCisJW1BMQVRfU1BfQ09OVEVOVF9DRVJUX0lEXQkJPQkmcGxhdF9zcF9jb250ZW50X2NlcnQsCisJW1NQX1BLRzFfSURdCQkJCT0JJnNwX3BrZzEsCisJW1NQX1BLRzJfSURdCQkJCT0JJnNwX3BrZzIsCisJW1NQX1BLRzNfSURdCQkJCT0JJnNwX3BrZzMsCisJW1NQX1BLRzRfSURdCQkJCT0JJnNwX3BrZzQsCisJW1NQX1BLRzVfSURdCQkJCT0JJnNwX3BrZzUsCisJW1NQX1BLRzZfSURdCQkJCT0JJnNwX3BrZzYsCisJW1NQX1BLRzdfSURdCQkJCT0JJnNwX3BrZzcsCisJW1NQX1BLRzhfSURdCQkJCT0gICAgICAgJnNwX3BrZzgsCisjZW5kaWYKK307CisjZW5kaWYgLyogSU1BR0VfQkwxICovCisKKy8qIFJlZ2lzdGVyIHRoZSBDb1QgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIG1vZHVsZSAqLworUkVHSVNURVJfQ09UKGNvdF9kZXNjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnhwL2Rkci9waHktZ2VuMi9waHkuYyBiL2RyaXZlcnMvbnhwL2Rkci9waHktZ2VuMi9waHkuYwppbmRleCBjODI0NWE4Li45ZTUyMTQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL254cC9kZHIvcGh5LWdlbjIvcGh5LmMKKysrIGIvZHJpdmVycy9ueHAvZGRyL3BoeS1nZW4yL3BoeS5jCkBAIC0yMjE2LDE0ICsyMjE2LDYgQEAKIAogCXNpemUgPSBQSFlfR0VOMl9NQVhfSU1BR0VfU0laRTsKIAlpbWFnZV9idWYgPSAodWludHB0cl90KXBoeV9nZW4yX2Z3X2ltZ19idWY7Ci0JcmV0ID0gbW1hcF9hZGRfZHluYW1pY19yZWdpb24ocGh5X2dlbjJfZndfaW1nX2J1ZiwKLQkJCXBoeV9nZW4yX2Z3X2ltZ19idWYsCi0JCQlQSFlfR0VOMl9NQVhfSU1BR0VfU0laRSwKLQkJCU1UX01FTU9SWSB8IE1UX1JXIHwgTVRfU0VDVVJFKTsKLQlpZiAocmV0ICE9IDApIHsKLQkJRVJST1IoIkZhaWxlZCB0byBhZGQgZHluYW1pYyBtZW1vcnkgcmVnaW9uLlxuIik7Ci0JCXJldHVybiByZXQ7Ci0JfQogCXJldCA9IGltZ19sb2FkcihpbWVtX2lkLCAmaW1hZ2VfYnVmLCAmc2l6ZSk7CiAJaWYgKHJldCAhPSAwKSB7CiAJCUVSUk9SKCJGYWlsZWQgdG8gbG9hZCAlZCBmaXJtd2FyZS5cbiIsIGltZW1faWQpOwpAQCAtMjU5Miw2ICsyNTg0LDE1IEBACiAJCX0KIAl9IGVsc2UgewogI2VuZGlmCisJCS8qIE1hcHBpbmcgSU1HIGJ1ZmZlciBmaXJzdGx5ICovCisJCXJldCA9IG1tYXBfYWRkX2R5bmFtaWNfcmVnaW9uKHByaXYtPnBoeV9nZW4yX2Z3X2ltZ19idWYsCisJCQlwcml2LT5waHlfZ2VuMl9md19pbWdfYnVmLAorCQkJUEhZX0dFTjJfTUFYX0lNQUdFX1NJWkUsCisJCQlNVF9NRU1PUlkgfCBNVF9SVyB8IE1UX1NFQ1VSRSk7CisJCWlmIChyZXQgIT0gMCkgeworCQkJRVJST1IoIkZhaWxlZCB0byBhZGQgZHluYW1pYyBtZW1vcnkgcmVnaW9uLlxuIik7CisJCQlyZXR1cm4gcmV0OworCQl9CiAKIAkJZGVidWcoIkxvYWQgMUQgZmlybXdhcmVcbiIpOwogCQlyZXQgPSBsb2FkX2Z3KHByaXYtPnBoeSwgJmlucHV0LCAwLCAmbXNnXzFkLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdC9jbGsvY2xrLXN0bTMyLWNvcmUuYyBiL2RyaXZlcnMvc3QvY2xrL2Nsay1zdG0zMi1jb3JlLmMKaW5kZXggZTFiNjk0MC4uODU4NGE1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdC9jbGsvY2xrLXN0bTMyLWNvcmUuYworKysgYi9kcml2ZXJzL3N0L2Nsay9jbGstc3RtMzItY29yZS5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIHsKIAlzdHJ1Y3QgY2xrX29zY2lsbGF0b3JfZGF0YSAqb3NjX2RhdGEgPSBjbGtfb3NjaWxsYXRvcl9nZXRfZGF0YShwcml2LCBpZCk7CiAKLQlyZXR1cm4gX2Nsa19zdG0zMl9nYXRlX3dhaXRfcmVhZHkocHJpdiwgb3NjX2RhdGEtPmdhdGVfaWQsIHJlYWR5X29uKTsKKwlyZXR1cm4gX2Nsa19zdG0zMl9nYXRlX3dhaXRfcmVhZHkocHJpdiwgb3NjX2RhdGEtPmdhdGVfcmR5X2lkLCByZWFkeV9vbik7CiB9CiAKIGludCBjbGtfb3NjaWxsYXRvcl93YWl0X3JlYWR5X29uKHN0cnVjdCBzdG0zMl9jbGtfcHJpdiAqcHJpdiwgaW50IGlkKQpAQCAtODM4LDggKzgzOCw5IEBACiAJCX0KIAl9CiAKLQlpZiAoKG1taW9fcmVhZF8zMihhZGRyZXNzKSAmIG1hc2tfcmR5KSAhPSBtYXNrX3Rlc3QpCisJaWYgKChtbWlvX3JlYWRfMzIoYWRkcmVzcykgJiBtYXNrX3JkeSkgIT0gbWFza190ZXN0KSB7CiAJCXJldHVybiAtRVRJTUVET1VUOworCX0KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb21tb24vdGJici9jb3RfZGVmLmggYi9pbmNsdWRlL2NvbW1vbi90YmJyL2NvdF9kZWYuaAppbmRleCA4MDBhZDA3Li5lMGMyMjEyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbW1vbi90YmJyL2NvdF9kZWYuaAorKysgYi9pbmNsdWRlL2NvbW1vbi90YmJyL2NvdF9kZWYuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMCwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtMTQsNiArMTQsOCBAQAogLyogVEJCUiBDb1QgZGVmaW5pdGlvbnMgKi8KICNpZiBkZWZpbmVkKFNQRF9zcG1kKQogI2RlZmluZSBDT1RfTUFYX1ZFUklGSUVEX1BBUkFNUwkJOAorI2VsaWYgZGVmaW5lZChBUk1fQ09UX2NjYSkKKyNkZWZpbmUgQ09UX01BWF9WRVJJRklFRF9QQVJBTVMJCTgKICNlbHNlCiAjZGVmaW5lIENPVF9NQVhfVkVSSUZJRURfUEFSQU1TCQk0CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJpdmVycy9hcm0vZ2ljdjMuaCBiL2luY2x1ZGUvZHJpdmVycy9hcm0vZ2ljdjMuaAppbmRleCA1ZWZlZmI2Li44MzcxZGQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RyaXZlcnMvYXJtL2dpY3YzLmgKKysrIGIvaW5jbHVkZS9kcml2ZXJzL2FybS9naWN2My5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNS0yMDIwLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC03Niw2ICs3Niw4IEBACiAKICNlbmRpZgkvKiBHSUNfRVhUX0lOVElEICovCiAKKyNkZWZpbmUgR0lDX1JFVihyLCBwKSAgICAgICAgICAgKChyIDw8IDQpIHwgcCkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEdJQ3YzIGFuZCAzLjEgc3BlY2lmaWMgRGlzdHJpYnV0b3IgaW50ZXJmYWNlIHJlZ2lzdGVyIG9mZnNldHMgYW5kIGNvbnN0YW50cwogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTE5Miw2ICsxOTQsMTUgQEAKICNkZWZpbmUgR0lDUl9DVExSX1VXUF9TSElGVAkzMQogI2RlZmluZSBHSUNSX0NUTFJfVVdQX01BU0sJVSgweDEpCiAjZGVmaW5lIEdJQ1JfQ1RMUl9VV1BfQklUCUJJVF8zMihHSUNSX0NUTFJfVVdQX1NISUZUKQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMVNfU0hJRlQJMjYKKyNkZWZpbmUgR0lDUl9DVExSX0RQRzFTX01BU0sJVSgweDEpCisjZGVmaW5lIEdJQ1JfQ1RMUl9EUEcxU19CSVQJQklUXzMyKEdJQ1JfQ1RMUl9EUEcxU19TSElGVCkKKyNkZWZpbmUgR0lDUl9DVExSX0RQRzFOU19TSElGVAkyNQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMU5TX01BU0sJVSgweDEpCisjZGVmaW5lIEdJQ1JfQ1RMUl9EUEcxTlNfQklUCUJJVF8zMihHSUNSX0NUTFJfRFBHMU5TX1NISUZUKQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9TSElGVAkyNAorI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9NQVNLCVUoMHgxKQorI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9CSVQJQklUXzMyKEdJQ1JfQ1RMUl9EUEcwX1NISUZUKQogI2RlZmluZSBHSUNSX0NUTFJfUldQX1NISUZUCTMKICNkZWZpbmUgR0lDUl9DVExSX1JXUF9NQVNLCVUoMHgxKQogI2RlZmluZSBHSUNSX0NUTFJfUldQX0JJVAlCSVRfMzIoR0lDUl9DVExSX1JXUF9TSElGVCkKQEAgLTIyNCwxMiArMjM1LDQwIEBACiAjZGVmaW5lIFRZUEVSX1BQSV9OVU1fTUFTSwlVKDB4MWYpCiAKIC8qIEdJQ1JfSUlEUiBiaXQgZGVmaW5pdGlvbnMgKi8KLSNkZWZpbmUgSUlEUl9QUk9EVUNUX0lEX01BU0sJVSgweGZmMDAwMDAwKQotI2RlZmluZSBJSURSX1ZBUklBTlRfTUFTSwlVKDB4MDAwZjAwMDApCi0jZGVmaW5lIElJRFJfUkVWSVNJT05fTUFTSwlVKDB4MDAwMGYwMDApCi0jZGVmaW5lIElJRFJfSU1QTEVNRU5URVJfTUFTSwlVKDB4MDAwMDBmZmYpCi0jZGVmaW5lIElJRFJfTU9ERUxfTUFTSwkJKElJRFJfUFJPRFVDVF9JRF9NQVNLIHwgXAotCQkJCSBJSURSX0lNUExFTUVOVEVSX01BU0spCisjZGVmaW5lIElJRFJfUFJPRFVDVF9JRF9NQVNLCVUoMHhmZikKKyNkZWZpbmUgSUlEUl9WQVJJQU5UX01BU0sJVSgweGYpCisjZGVmaW5lIElJRFJfUkVWX01BU0sJCVUoMHhmKQorI2RlZmluZSBJSURSX0lNUExFTUVOVEVSX01BU0sJVSgweGZmZikKKyNkZWZpbmUgSUlEUl9QUk9EVUNUX0lEX1NISUZUCTI0CisjZGVmaW5lIElJRFJfVkFSSUFOVF9TSElGVAkxNgorI2RlZmluZSBJSURSX1JFVl9TSElGVAkJMTIKKyNkZWZpbmUgSUlEUl9JTVBMRU1FTlRFUl9TSElGVAkwCisjZGVmaW5lIElJRFJfUFJPRFVDVF9JRF9CSVQJQklUXzMyKElJRFJfUFJPRFVDVF9JRF9TSElGVCkKKyNkZWZpbmUgSUlEUl9WQVJJQU5UX0JJVAlCSVRfMzIoSUlEUl9WQVJJQU5UX1NISUZUKQorI2RlZmluZSBJSURSX1JFVl9CSVQJCUJJVF8zMihJSURSX1JFVklTSU9OX1NISUZUKQorI2RlZmluZSBJSURSX0lNUExFTUVOVEVSX0JJVAlCSVRfMzIoSUlEUl9JTVBMRU1FTlRFUl9TSElGVCkKKworI2RlZmluZSBJSURSX01PREVMX01BU0sJCShJSURSX1BST0RVQ1RfSURfTUFTSyA8PCBJSURSX1BST0RVQ1RfSURfU0hJRlQgfCBcCisJCQkJIElJRFJfSU1QTEVNRU5URVJfTUFTSyA8PCBJSURSX0lNUExFTUVOVEVSX1NISUZUKQorCisjZGVmaW5lIEdJQ19QUk9EVUNUX0lEX0dJQzYwMAlVKDB4MikKKyNkZWZpbmUgR0lDX1BST0RVQ1RfSURfR0lDNjAwQUUJVSgweDMpCisjZGVmaW5lIEdJQ19QUk9EVUNUX0lEX0dJQzcwMAlVKDB4NCkKKworLyoKKyAqIE5vdGUgdGhhdCBiZWxvdyByZXZpc2lvbnMgYW5kIHZhcmlhbnRzIGRlZmluYXRpb25zIGFyZSBhcyBwZXIgR0lDNjAwL0dJQzYwMEFFCisgKiBzcGVjaWZpY2F0aW9uLgorICovCisjZGVmaW5lIEdJQ19SRVZfUDAJCVUoMHgxKQorI2RlZmluZSBHSUNfUkVWX1AxCQlVKDB4MykKKyNkZWZpbmUgR0lDX1JFVl9QMgkJVSgweDQpCisjZGVmaW5lIEdJQ19SRVZfUDMJCVUoMHg1KQorI2RlZmluZSBHSUNfUkVWX1A0CQlVKDB4NikKKyNkZWZpbmUgR0lDX1JFVl9QNgkJVSgweDcpCisKKyNkZWZpbmUgR0lDX1ZBUklBTlRfUjAJCVUoMHgwKQorI2RlZmluZSBHSUNfVkFSSUFOVF9SMQkJVSgweDEpCisjZGVmaW5lIEdJQ19WQVJJQU5UX1IyCQlVKDB4MikKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIEdJQ3YzIGFuZCAzLjEgQ1BVIGludGVyZmFjZSByZWdpc3RlcnMgJiBjb25zdGFudHMKQEAgLTU0Myw1ICs1ODIsMTcgQEAKIHZvaWQgZ2ljdjNfY2xlYXJfaW50ZXJydXB0X3BlbmRpbmcodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgcHJvY19udW0pOwogdW5zaWduZWQgaW50IGdpY3YzX3NldF9wbXIodW5zaWduZWQgaW50IG1hc2spOwogCit2b2lkIGdpY3YzX2dldF9jb21wb25lbnRfcHJvZGlkX3Jldihjb25zdCB1aW50cHRyX3QgZ2ljZF9iYXNlLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgKmdpY19wcm9kX2lkLAorCQkJCSAgICB1aW50OF90ICpnaWNfcmV2KTsKK3ZvaWQgZ2ljdjNfY2hlY2tfZXJyYXRhc19hcHBsaWVzKGNvbnN0IHVpbnRwdHJfdCBnaWNkX2Jhc2UpOworI2lmIEdJQzYwMF9FUlJBVEFfV0FfMjM4NDM3NAordm9pZCBnaWN2M19hcHBseV9lcnJhdGFfd2FfMjM4NDM3NChjb25zdCB1aW50cHRyX3QgZ2ljcl9iYXNlKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQgZ2ljdjNfYXBwbHlfZXJyYXRhX3dhXzIzODQzNzQoY29uc3QgdWludHB0cl90IGdpY3JfYmFzZSkKK3sKK30KKyNlbmRpZiAvKiBHSUM2MDBfRVJSQVRBX1dBXzIzODQzNzQgKi8KKwogI2VuZGlmIC8qIF9fQVNTRU1CTEVSX18gKi8KICNlbmRpZiAvKiBHSUNWM19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RyaXZlcnMvbnhwL2dpYy9naWN2My9wbGF0X2dpYy5oIGIvaW5jbHVkZS9kcml2ZXJzL254cC9naWMvZ2ljdjMvcGxhdF9naWMuaAppbmRleCAwYzBkMGZjLi43OTRiMDZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RyaXZlcnMvbnhwL2dpYy9naWN2My9wbGF0X2dpYy5oCisrKyBiL2luY2x1ZGUvZHJpdmVycy9ueHAvZ2ljL2dpY3YzL3BsYXRfZ2ljLmgKQEAgLTYxLDcgKzYxLDYgQEAKIAogI2RlZmluZSBHSUNSX0lDRU5BQkxFUjBfU0dJMTUgICAweDAwMDA4MDAwCiAjZGVmaW5lIEdJQ1JfQ1RMUl9SV1AgICAgICAgICAgIDB4OAotI2RlZmluZSBHSUNSX0NUTFJfRFBHMF9NQVNLICAgICAweDIwMDAwMDAKICNkZWZpbmUgR0lDUl9JR1JPVVBSMF9TR0kxNSAgICAgMHgwMDAwODAwMAogI2RlZmluZSBHSUNSX0lHUlBNT0RSMF9TR0kxNSAgICAweDAwMDA4MDAwCiAjZGVmaW5lIEdJQ1JfSVNFTkFCTEVSMF9TR0kxNSAgIDB4MDAwMDgwMDAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhwb3J0L2NvbW1vbi90YmJyL3RiYnJfaW1nX2RlZl9leHAuaCBiL2luY2x1ZGUvZXhwb3J0L2NvbW1vbi90YmJyL3RiYnJfaW1nX2RlZl9leHAuaAppbmRleCA5ODU0NGMwLi45OGEwMDk5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2V4cG9ydC9jb21tb24vdGJici90YmJyX2ltZ19kZWZfZXhwLmgKKysrIGIvaW5jbHVkZS9leHBvcnQvY29tbW9uL3RiYnIvdGJicl9pbWdfZGVmX2V4cC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxOS0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0xMDQsNyArMTA0LDE2IEBACiAvKiBSZWFsbSBNb25pdG9yIE1hbmFnZXIgKFJNTSkgKi8KICNkZWZpbmUgUk1NX0lNQUdFX0lECQkJVSgzNCkKIAorLyogQ0NBIENvbnRlbnQgQ2VydGlmaWNhdGUgSUQgKi8KKyNkZWZpbmUgQ0NBX0NPTlRFTlRfQ0VSVF9JRAkJVSgzNSkKKworLyogQ29yZSBTV0QgS2V5IENlcnRpZmljYXRlIElEICovCisjZGVmaW5lIENPUkVfU1dEX0tFWV9DRVJUX0lECQlVKDM2KQorCisvKiBQbGF0Zm9ybSBLZXkgQ2VydGlmaWNhdGUgSUQgKi8KKyNkZWZpbmUgUExBVF9LRVlfQ0VSVF9JRAkJVSgzNykKKwogLyogTWF4IEltYWdlcyAqLwotI2RlZmluZSBNQVhfSU1BR0VfSURTCQkJVSgzNSkKKyNkZWZpbmUgTUFYX0lNQUdFX0lEUwkJCVUoMzgpCiAKICNlbmRpZiAvKiBBUk1fVFJVU1RFRF9GSVJNV0FSRV9FWFBPUlRfQ09NTU9OX1RCQlJfVEJCUl9JTUdfREVGX0VYUF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYi9jcHVzL2FhcmNoNjQvY29ydGV4X2E3Ny5oIGIvaW5jbHVkZS9saWIvY3B1cy9hYXJjaDY0L2NvcnRleF9hNzcuaAppbmRleCA0YTg3MTY4Li42M2YxNTVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYi9jcHVzL2FhcmNoNjQvY29ydGV4X2E3Ny5oCisrKyBiL2luY2x1ZGUvbGliL2NwdXMvYWFyY2g2NC9jb3J0ZXhfYTc3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIENPUlRFWF9BNzdfQUNUTFIyX0VMMQkJCQlTM18wX0MxNV9DMV8xCiAjZGVmaW5lIENPUlRFWF9BNzdfQUNUTFIyX0VMMV9CSVRfMgkJCShVTEwoMSkgPDwgMikKKyNkZWZpbmUgQ09SVEVYX0E3N19BQ1RMUjJfRUwxX0JJVF8wCQkJVUxMKDEpCiAKICNkZWZpbmUgQ09SVEVYX0E3N19DUFVQU0VMUl9FTDMJCQkJUzNfNl9DMTVfQzhfMAogI2RlZmluZSBDT1JURVhfQTc3X0NQVVBDUl9FTDMJCQkJUzNfNl9DMTVfQzhfMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saWIvY3B1cy9hYXJjaDY0L25lb3ZlcnNlX3YxLmggYi9pbmNsdWRlL2xpYi9jcHVzL2FhcmNoNjQvbmVvdmVyc2VfdjEuaAppbmRleCA5ZWJhNGMxLi4xODFiZTFkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpYi9jcHVzL2FhcmNoNjQvbmVvdmVyc2VfdjEuaAorKysgYi9pbmNsdWRlL2xpYi9jcHVzL2FhcmNoNjQvbmVvdmVyc2VfdjEuaApAQCAtMzUsNSArMzUsNiBAQAogI2RlZmluZSBORU9WRVJTRV9WMV9BQ1RMUjJfRUwxX0JJVF8wCQkJCVVMTCgxKQogI2RlZmluZSBORU9WRVJTRV9WMV9BQ1RMUjJfRUwxX0JJVF8yCQkJCShVTEwoMSkgPDwgMikKICNkZWZpbmUgTkVPVkVSU0VfVjFfQUNUTFIyX0VMMV9CSVRfMjgJCQkJKFVMTCgxKSA8PCAyOCkKKyNkZWZpbmUgTkVPVkVSU0VfVjFfQUNUTFIyX0VMMV9CSVRfNDAJCQkJKFVMTCgxKSA8PCA0MCkKIAogI2VuZGlmIC8qIE5FT1ZFUlNFX1YxX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcGxhdC9hcm0vY29tbW9uL2FybV9kZWYuaCBiL2luY2x1ZGUvcGxhdC9hcm0vY29tbW9uL2FybV9kZWYuaAppbmRleCBhODIxMWJkLi5jYWFiMTRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL3BsYXQvYXJtL2NvbW1vbi9hcm1fZGVmLmgKKysrIGIvaW5jbHVkZS9wbGF0L2FybS9jb21tb24vYXJtX2RlZi5oCkBAIC01MjAsOSArNTIwLDIwIEBACiAgKiBCTDIgc3BlY2lmaWMgZGVmaW5lcy4KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjaWYgQkwyX0FUX0VMMworI2lmIEVOQUJMRV9QSUUKKy8qCisgKiBBcyB0aGUgQkwzMSBpbWFnZSBzaXplIGFwcGVhcnMgdG8gYmUgaW5jcmVhc2VkIHdoZW4gYnVpbHQgd2l0aCB0aGUgRU5BQkxFX1BJRQorICogb3B0aW9uLCBzZXQgQkwyIGJhc2UgYWRkcmVzcyB0byBoYXZlIGVub3VnaCBzcGFjZSBmb3IgQkwzMSBpbiBUcnVzdGVkIFNSQU0uCisgKi8KKyNkZWZpbmUgQkwyX0JBU0UJCQkoQVJNX1RSVVNURURfU1JBTV9CQVNFICsgXAorCQkJCQkoUExBVF9BUk1fVFJVU1RFRF9TUkFNX1NJWkUgPj4gMSkgKyBcCisJCQkJCTB4MzAwMCkKKyNlbHNlCiAvKiBQdXQgQkwyIHRvd2FyZHMgdGhlIG1pZGRsZSBvZiB0aGUgVHJ1c3RlZCBTUkFNICovCiAjZGVmaW5lIEJMMl9CQVNFCQkJKEFSTV9UUlVTVEVEX1NSQU1fQkFTRSArIFwKLQkJCQkJCShQTEFUX0FSTV9UUlVTVEVEX1NSQU1fU0laRSA+PiAxKSArIDB4MjAwMCkKKwkJCQkJKFBMQVRfQVJNX1RSVVNURURfU1JBTV9TSVpFID4+IDEpICsgXAorCQkJCQkweDIwMDApCisjZW5kaWYgLyogRU5BQkxFX1BJRSAqLwogI2RlZmluZSBCTDJfTElNSVQJCQkoQVJNX0JMX1JBTV9CQVNFICsgQVJNX0JMX1JBTV9TSVpFKQogCiAjZWxzZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90b29sc19zaGFyZS9jY2Ffb2lkLmggYi9pbmNsdWRlL3Rvb2xzX3NoYXJlL2NjYV9vaWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTg2YjhjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS90b29sc19zaGFyZS9jY2Ffb2lkLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpZm5kZWYgQ0NBX09JRF9ICisjZGVmaW5lIENDQV9PSURfSAorCisvKiBSZXVzZSB0aGUgT2JqZWN0IElEcyBkZWZpbmVkIGJ5IFRCQlIgZm9yIGNlcnRpZmljYXRlIGV4dGVuc2lvbnMuICovCisjaW5jbHVkZSAidGJicl9vaWQuaCIKKworLyoKKyAqIEFzc2lnbiBhcmJpdHJhcnkgT2JqZWN0IElEIHZhbHVlcyB0aGF0IGRvIG5vdCBjb25mbGljdCB3aXRoIGFueSBvZiB0aGUKKyAqIFRCQlIgcmVzZXJ2ZWQgT0lEcy4KKyAqLworLyogUGxhdGZvcm0gcm9vdC1vZi10cnVzdCBwdWJsaWMga2V5ICovCisjZGVmaW5lIFBST1RfUEtfT0lECQkJCSIxLjMuNi4xLjQuMS40MTI4LjIxMDAuMTEwMiIKKy8qIFNlY3VyZSBXb3JsZCByb290LW9mLXRydXN0IHB1YmxpYyBrZXkgKi8KKyNkZWZpbmUgU1dEX1JPVF9QS19PSUQJCQkJIjEuMy42LjEuNC4xLjQxMjguMjEwMC4xMTAzIgorLyogQ29yZSBTZWN1cmUgV29ybGQgcHVibGljIGtleSAqLworI2RlZmluZSBDT1JFX1NXRF9QS19PSUQJCQkJIjEuMy42LjEuNC4xLjQxMjguMjEwMC4xMTA0IgorLyogUGxhdGZvcm0gcHVibGljIGtleSAqLworI2RlZmluZSBQTEFUX1BLX09JRAkJCQkiMS4zLjYuMS40LjEuNDEyOC4yMTAwLjExMDUiCisvKiBSZWFsbSBNb25pdG9yIE1hbmFnZXIgKFJNTSkgSGFzaCAqLworI2RlZmluZSBSTU1fSEFTSF9PSUQJCQkJIjEuMy42LjEuNC4xLjQxMjguMjEwMC4xMTA2IgorCisjZW5kaWYgLyogQ0NBX09JRF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Rvb2xzX3NoYXJlL2Zpcm13YXJlX2ltYWdlX3BhY2thZ2UuaCBiL2luY2x1ZGUvdG9vbHNfc2hhcmUvZmlybXdhcmVfaW1hZ2VfcGFja2FnZS5oCmluZGV4IGJkNWIxNGIuLmI3M2VlYzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdG9vbHNfc2hhcmUvZmlybXdhcmVfaW1hZ2VfcGFja2FnZS5oCisrKyBiL2luY2x1ZGUvdG9vbHNfc2hhcmUvZmlybXdhcmVfaW1hZ2VfcGFja2FnZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE0LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0yNCw2ICsyNCwxMiBAQAogCXt7MHg0ZiwgMHg1MSwgMHgxZCwgMHgxMX0sIHsweDJiLCAweGU1fSwgezB4NGUsIDB4NDl9LCAweGI0LCAweGM1LCB7MHg4MywgMHhjMiwgMHhmNywgMHgxNSwgMHg4NCwgMHgwYX0gfQogI2RlZmluZSBVVUlEX1RSVVNURURfRldVX0NFUlQgXAogCXt7MHg3MSwgMHg0MCwgMHg4YSwgMHhiMn0sIHsweDE4LCAweGQ2fSwgezB4ODcsIDB4NGN9LCAweDhiLCAweDJlLCB7MHhjNiwgMHhkYywgMHhjZCwgMHg1MCwgMHhmMCwgMHg5Nn0gfQorI2RlZmluZSBVVUlEX0NDQV9DT05URU5UX0NFUlQgXAorCXt7MHgzNiwgIDB4ZDgsIDB4M2QsIDB4ODV9LCB7MHg3NiwgMHgxZH0sIHsweDRkLCAweGFmfSwgMHg5NiwgMHhmMSwgezB4Y2QsIDB4OTksIDB4ZDYsIDB4NTYsIDB4OWIsIDB4MDB9IH0KKyNkZWZpbmUgVVVJRF9DT1JFX1NXRF9LRVlfQ0VSVCBcCisJe3sweDUyLCAgMHgyMiwgMHgyZCwgMHgzMX0sIHsweDgyLCAweDBmfSwgezB4NDksIDB4NGR9LCAweDhiLCAweGJjLCB7MHhlYSwgMHg2OCwgMHgyNSwgMHhkMywgMHhjMywgMHg1YX0gfQorI2RlZmluZSBVVUlEX1BMQVRfS0VZX0NFUlQgXAorCXt7MHhkNCwgIDB4M2MsIDB4ZDksIDB4MDJ9LCB7MHg1YiwgMHg5Zn0sIHsweDQxLCAweDJlfSwgMHg4YSwgMHhjNiwgezB4OTIsIDB4YjYsIDB4ZDEsIDB4OGIsIDB4ZTYsIDB4MGR9IH0KICNkZWZpbmUgVVVJRF9UUlVTVEVEX0JPT1RfRklSTVdBUkVfQkwyIFwKIAl7ezB4NWYsIDB4ZjksIDB4ZWMsIDB4MGJ9LCB7MHg0ZCwgMHgyMn0sIHsweDNlLCAweDRkfSwgMHhhNSwgMHg0NCwgezB4YzMsIDB4OWQsIDB4ODEsIDB4YzcsIDB4M2YsIDB4MGF9IH0KICNkZWZpbmUgVVVJRF9TQ1BfRklSTVdBUkVfU0NQX0JMMiBcCmRpZmYgLS1naXQgYS9saWIvY3B1cy9hYXJjaDY0L2NvcnRleF9hNzcuUyBiL2xpYi9jcHVzL2FhcmNoNjQvY29ydGV4X2E3Ny5TCmluZGV4IGU3MzY1ZTIuLmFhNjZlOTQgMTAwNjQ0Ci0tLSBhL2xpYi9jcHVzL2FhcmNoNjQvY29ydGV4X2E3Ny5TCisrKyBiL2xpYi9jcHVzL2FhcmNoNjQvY29ydGV4X2E3Ny5TCkBAIC0xOTksNiArMTk5LDM0IEBACiAJYgljcHVfcmV2X3Zhcl9scwogZW5kZnVuYyBjaGVja19lcnJhdGFfMTc5MTU3OAogCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkgKiBFcnJhdGEgV29ya2Fyb3VuZCBmb3IgQ29ydGV4IEE3NyBFcnJhdGEgIzIzNTY1ODcuCisJICogVGhpcyBhcHBsaWVzIHRvIHJldmlzaW9ucyByMHAwLCByMXAwLCBhbmQgcjFwMSBhbmQgaXMgc3RpbGwgb3Blbi4KKwkgKiB4MDogdmFyaWFudFs0OjddIGFuZCByZXZpc2lvblswOjNdIG9mIGN1cnJlbnQgY3B1LgorCSAqIFNoYWxsIGNsb2JiZXI6IHgwLXgxNworCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICovCitmdW5jIGVycmF0YV9hNzdfMjM1NjU4N193YQorCS8qIENoZWNrIHdvcmthcm91bmQgY29tcGF0aWJpbGl0eS4gKi8KKwltb3YJeDE3LCB4MzAKKwlibAljaGVja19lcnJhdGFfMjM1NjU4NworCWNiegl4MCwgMWYKKworCS8qIFNldCBiaXQgMCBpbiBBQ1RMUjJfRUwxICovCisJbXJzCXgxLCBDT1JURVhfQTc3X0FDVExSMl9FTDEKKwlvcnIJeDEsIHgxLCAjQ09SVEVYX0E3N19BQ1RMUjJfRUwxX0JJVF8wCisJbXNyCUNPUlRFWF9BNzdfQUNUTFIyX0VMMSwgeDEKKwlpc2IKKzE6CisJcmV0CXgxNworZW5kZnVuYyBlcnJhdGFfYTc3XzIzNTY1ODdfd2EKKworZnVuYyBjaGVja19lcnJhdGFfMjM1NjU4NworCS8qIEFwcGxpZXMgdG8gcjBwMCwgcjFwMCwgYW5kIHIxcDEgcmlnaHQgbm93ICovCisJbW92CXgxLCAjMHgxMQorCWIJY3B1X3Jldl92YXJfbHMKK2VuZGZ1bmMgY2hlY2tfZXJyYXRhXzIzNTY1ODcKKwogZnVuYyBjaGVja19lcnJhdGFfY3ZlXzIwMjJfMjM5NjAKICNpZiBXT1JLQVJPVU5EX0NWRV8yMDIyXzIzOTYwCiAJbW92CXgwLCAjRVJSQVRBX0FQUExJRVMKQEAgLTIzOCw2ICsyNjYsMTEgQEAKIAlibAllcnJhdGFfYTc3XzE3OTE1Nzhfd2EKICNlbmRpZgogCisjaWYgRVJSQVRBX0E3N18yMzU2NTg3CisJbW92CXgwLCB4MTgKKwlibAllcnJhdGFfYTc3XzIzNTY1ODdfd2EKKyNlbmRpZgorCiAjaWYgSU1BR0VfQkwzMSAmJiBXT1JLQVJPVU5EX0NWRV8yMDIyXzIzOTYwCiAJLyoKIAkgKiBUaGUgQ29ydGV4LUE3NyBnZW5lcmljIHZlY3RvcnMgYXJlIG92ZXJyaWRkZW4gdG8gYXBwbHkgZXJyYXRhCkBAIC0yODUsNiArMzE4LDcgQEAKIAlyZXBvcnRfZXJyYXRhIEVSUkFUQV9BNzdfMTkyNTc2OSwgY29ydGV4X2E3NywgMTkyNTc2OQogCXJlcG9ydF9lcnJhdGEgRVJSQVRBX0E3N18xOTQ2MTY3LCBjb3J0ZXhfYTc3LCAxOTQ2MTY3CiAJcmVwb3J0X2VycmF0YSBFUlJBVEFfQTc3XzE3OTE1NzgsIGNvcnRleF9hNzcsIDE3OTE1NzgKKwlyZXBvcnRfZXJyYXRhIEVSUkFUQV9BNzdfMjM1NjU4NywgY29ydGV4X2E3NywgMjM1NjU4NwogCXJlcG9ydF9lcnJhdGEgV09SS0FST1VORF9DVkVfMjAyMl8yMzk2MCwgY29ydGV4X2E3NywgY3ZlXzIwMjJfMjM5NjAKIAogCWxkcAl4OCwgeDMwLCBbc3BdLCAjMTYKZGlmZiAtLWdpdCBhL2xpYi9jcHVzL2FhcmNoNjQvbmVvdmVyc2VfdjEuUyBiL2xpYi9jcHVzL2FhcmNoNjQvbmVvdmVyc2VfdjEuUwppbmRleCBiMzI0ZmU2Li4zNzhjYjkyIDEwMDY0NAotLS0gYS9saWIvY3B1cy9hYXJjaDY0L25lb3ZlcnNlX3YxLlMKKysrIGIvbGliL2NwdXMvYWFyY2g2NC9uZW92ZXJzZV92MS5TCkBAIC0zNTgsNiArMzU4LDM0IEBACiAJYgljcHVfcmV2X3Zhcl9scwogZW5kZnVuYyBjaGVja19lcnJhdGFfMjI5NDkxMgogCisJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICogRXJyYXRhIFdvcmthcm91bmQgZm9yIE5lb3ZlcnNlIFYxIEVycmF0YSAjMjM3MjIwMy4KKwkgKiBUaGlzIGFwcGxpZXMgdG8gcmV2aXNpb25zIDw9IHIxcDEgYW5kIGlzIHN0aWxsIG9wZW4uCisJICogeDA6IHZhcmlhbnRbNDo3XSBhbmQgcmV2aXNpb25bMDozXSBvZiBjdXJyZW50IGNwdS4KKwkgKiBTaGFsbCBjbG9iYmVyOiB4MC14MTcKKwkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJICovCitmdW5jIGVycmF0YV9uZW92ZXJzZV92MV8yMzcyMjAzX3dhCisJLyogQ2hlY2sgd29ya2Fyb3VuZCBjb21wYXRpYmlsaXR5LiAqLworCW1vdgl4MTcsIHgzMAorCWJsCWNoZWNrX2VycmF0YV8yMzcyMjAzCisJY2J6CXgwLCAxZgorCisJLyogU2V0IGJpdCA0MCBpbiBBQ1RMUjJfRUwxICovCisJbXJzCXgxLCBORU9WRVJTRV9WMV9BQ1RMUjJfRUwxCisJb3JyCXgxLCB4MSwgI05FT1ZFUlNFX1YxX0FDVExSMl9FTDFfQklUXzQwCisJbXNyCU5FT1ZFUlNFX1YxX0FDVExSMl9FTDEsIHgxCisJaXNiCisxOgorCXJldAl4MTcKK2VuZGZ1bmMgZXJyYXRhX25lb3ZlcnNlX3YxXzIzNzIyMDNfd2EKKworZnVuYyBjaGVja19lcnJhdGFfMjM3MjIwMworCS8qIEFwcGxpZXMgdG8gPD0gcjFwMS4gKi8KKwltb3YJeDEsICMweDExCisJYgljcHVfcmV2X3Zhcl9scworZW5kZnVuYyBjaGVja19lcnJhdGFfMjM3MjIwMworCiBmdW5jIGNoZWNrX2VycmF0YV9jdmVfMjAyMl8yMzk2MAogI2lmIFdPUktBUk9VTkRfQ1ZFXzIwMjJfMjM5NjAKIAltb3YJeDAsICNFUlJBVEFfQVBQTElFUwpAQCAtNDA3LDYgKzQzNSw3IEBACiAJcmVwb3J0X2VycmF0YSBFUlJBVEFfVjFfMjEwODI2NywgbmVvdmVyc2VfdjEsIDIxMDgyNjcKIAlyZXBvcnRfZXJyYXRhIEVSUkFUQV9WMV8yMjE2MzkyLCBuZW92ZXJzZV92MSwgMjIxNjM5MgogCXJlcG9ydF9lcnJhdGEgRVJSQVRBX1YxXzIyOTQ5MTIsIG5lb3ZlcnNlX3YxLCAyMjk0OTEyCisJcmVwb3J0X2VycmF0YSBFUlJBVEFfVjFfMjM3MjIwMywgbmVvdmVyc2VfdjEsIDIzNzIyMDMKIAlyZXBvcnRfZXJyYXRhIFdPUktBUk9VTkRfQ1ZFXzIwMjJfMjM5NjAsIG5lb3ZlcnNlX3YxLCBjdmVfMjAyMl8yMzk2MAogCiAJbGRwCXg4LCB4MzAsIFtzcF0sICMxNgpAQCAtNDcxLDYgKzUwMCwxMSBAQAogCWJsCWVycmF0YV9uZW92ZXJzZV92MV8yMjk0OTEyX3dhCiAjZW5kaWYKIAorI2lmIEVSUkFUQV9WMV8yMzcyMjAzCisJbW92CXgwLCB4MTgKKwlibAllcnJhdGFfbmVvdmVyc2VfdjFfMjM3MjIwM193YQorI2VuZGlmCisKICNpZiBJTUFHRV9CTDMxICYmIFdPUktBUk9VTkRfQ1ZFXzIwMjJfMjM5NjAKIAkvKgogCSAqIFRoZSBOZW92ZXJzZS1WMSBnZW5lcmljIHZlY3RvcnMgYXJlIG92ZXJyaWRkZW4gdG8gYXBwbHkgZXJyYXRhCmRpZmYgLS1naXQgYS9saWIvY3B1cy9jcHUtb3BzLm1rIGIvbGliL2NwdXMvY3B1LW9wcy5tawppbmRleCBkMDBiMzc1Li42ZDQ5ZGFiIDEwMDY0NAotLS0gYS9saWIvY3B1cy9jcHUtb3BzLm1rCisrKyBiL2xpYi9jcHVzL2NwdS1vcHMubWsKQEAgLTMwMyw2ICszMDMsMTAgQEAKICMgdG8gcmV2aXNpb25zIHIwcDAsIHIxcDAsIGFuZCByMXAxLCBpdCBpcyBzdGlsbCBvcGVuLgogRVJSQVRBX0E3N18xNzkxNTc4CT89MAogCisjIEZsYWcgdG8gYXBwbHkgZXJyYXR1bSAyMzU2NTg3IHdvcmthcm91bmQgZHVyaW5nIHJlc2V0LiBUaGlzIGVycmF0dW0gYXBwbGllcworIyB0byByZXZpc2lvbnMgcjBwMCwgcjFwMCwgYW5kIHIxcDEsIGl0IGlzIHN0aWxsIG9wZW4uCitFUlJBVEFfQTc3XzIzNTY1ODcJPz0wCisKICMgRmxhZyB0byBhcHBseSBlcnJhdHVtIDE2ODgzMDUgd29ya2Fyb3VuZCBkdXJpbmcgcmVzZXQuIFRoaXMgZXJyYXR1bSBhcHBsaWVzCiAjIHRvIHJldmlzaW9ucyByMHAwIC0gcjFwMCBvZiB0aGUgQTc4IGNwdS4KIEVSUkFUQV9BNzhfMTY4ODMwNQk/PTAKQEAgLTQ3Miw2ICs0NzYsMTAgQEAKICMgdG8gcmV2aXNpb25zIHIwcDAsIHIxcDAsIGFuZCByMXAxIG9mIHRoZSBOZW92ZXJzZSBWMSBjcHUgYW5kIGlzIHN0aWxsIG9wZW4uCiBFUlJBVEFfVjFfMjI5NDkxMgk/PTAKIAorIyBGbGFnIHRvIGFwcGx5IGVycmF0dW0gMjM3MjIwMyB3b3JrYXJvdW5kIGR1cmluZyByZXNldC4gVGhpcyBlcnJhdHVtIGFwcGxpZXMKKyMgdG8gcmV2aXNpb25zIHIwcDAsIHIxcDAgYW5kIHIxcDEgb2YgdGhlIE5lb3ZlcnNlIFYxIGNwdSBhbmQgaXMgc3RpbGwgb3Blbi4KK0VSUkFUQV9WMV8yMzcyMjAzCT89MAorCiAjIEZsYWcgdG8gYXBwbHkgZXJyYXR1bSAxOTg3MDMxIHdvcmthcm91bmQgZHVyaW5nIHJlc2V0LiBUaGlzIGVycmF0dW0gYXBwbGllcwogIyB0byByZXZpc2lvbnMgcjBwMCwgcjFwMCBhbmQgcjJwMCBvZiB0aGUgQ29ydGV4LUE3MTAgY3B1IGFuZCBpcyBzdGlsbCBvcGVuLgogRVJSQVRBX0E3MTBfMTk4NzAzMQk/PTAKQEAgLTg0Nyw2ICs4NTUsMTAgQEAKICQoZXZhbCAkKGNhbGwgYXNzZXJ0X2Jvb2xlYW4sRVJSQVRBX0E3N18xNzkxNTc4KSkKICQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxFUlJBVEFfQTc3XzE3OTE1NzgpKQogCisjIFByb2Nlc3MgRVJSQVRBX0E3N18yMzU2NTg3IGZsYWcKKyQoZXZhbCAkKGNhbGwgYXNzZXJ0X2Jvb2xlYW4sRVJSQVRBX0E3N18yMzU2NTg3KSkKKyQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxFUlJBVEFfQTc3XzIzNTY1ODcpKQorCiAjIFByb2Nlc3MgRVJSQVRBX0E3OF8xNjg4MzA1IGZsYWcKICQoZXZhbCAkKGNhbGwgYXNzZXJ0X2Jvb2xlYW4sRVJSQVRBX0E3OF8xNjg4MzA1KSkKICQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxFUlJBVEFfQTc4XzE2ODgzMDUpKQpAQCAtMTAxMSw2ICsxMDIzLDEwIEBACiAkKGV2YWwgJChjYWxsIGFzc2VydF9ib29sZWFuLEVSUkFUQV9WMV8yMjk0OTEyKSkKICQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxFUlJBVEFfVjFfMjI5NDkxMikpCiAKKyMgUHJvY2VzcyBFUlJBVEFfVjFfMjM3MjIwMyBmbGFnCiskKGV2YWwgJChjYWxsIGFzc2VydF9ib29sZWFuLEVSUkFUQV9WMV8yMzcyMjAzKSkKKyQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxFUlJBVEFfVjFfMjM3MjIwMykpCisKICMgUHJvY2VzcyBFUlJBVEFfQTcxMF8xOTg3MDMxIGZsYWcKICQoZXZhbCAkKGNhbGwgYXNzZXJ0X2Jvb2xlYW4sRVJSQVRBX0E3MTBfMTk4NzAzMSkpCiAkKGV2YWwgJChjYWxsIGFkZF9kZWZpbmUsRVJSQVRBX0E3MTBfMTk4NzAzMSkpCmRpZmYgLS1naXQgYS9saWIvcHNhL21lYXN1cmVkX2Jvb3QuYyBiL2xpYi9wc2EvbWVhc3VyZWRfYm9vdC5jCmluZGV4IDY5M2UwMWYuLjkwZTRlZjMgMTAwNjQ0Ci0tLSBhL2xpYi9wc2EvbWVhc3VyZWRfYm9vdC5jCisrKyBiL2xpYi9wc2EvbWVhc3VyZWRfYm9vdC5jCkBAIC0xNCw4ICsxNCw5IEBACiAKICNpbmNsdWRlICJtZWFzdXJlZF9ib290X3ByaXZhdGUuaCIKIAotc3RhdGljIHZvaWQgcHJpbnRfYnl0ZV9hcnJheShjb25zdCB1aW50OF90ICphcnJheSwgc2l6ZV90IGxlbikKK3N0YXRpYyB2b2lkIHByaW50X2J5dGVfYXJyYXkoY29uc3QgdWludDhfdCAqYXJyYXkgX191bnVzZWQsIHNpemVfdCBsZW4gX191bnVzZWQpCiB7CisjaWYgTE9HX0xFVkVMID49IExPR19MRVZFTF9JTkZPCiAJc2l6ZV90IGk7CiAKIAlpZiAoYXJyYXkgPT0gTlVMTCB8fCBsZW4gPT0gMFUpIHsKQEAgLTMxLDYgKzMyLDcgQEAKIAkJCX0KIAkJfQogCX0KKyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBsb2dfbWVhc3VyZW1lbnQodWludDhfdCBpbmRleCwKZGlmZiAtLWdpdCBhL21ha2VfaGVscGVycy90YmJyL3RiYnJfdG9vbHMubWsgYi9tYWtlX2hlbHBlcnMvdGJici90YmJyX3Rvb2xzLm1rCmluZGV4IDBhMjgwYjQuLjVlZjJkODUgMTAwNjQ0Ci0tLSBhL21ha2VfaGVscGVycy90YmJyL3RiYnJfdG9vbHMubWsKKysrIGIvbWFrZV9oZWxwZXJzL3RiYnIvdGJicl90b29scy5tawpAQCAtMSw1ICsxLDUgQEAKICMKLSMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjEsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoYykgMjAxNS0yMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAjCkBAIC0yNSw2ICsyNSw5IEBACiAjICAgS0VZX1NJWkUKICMgICBST1RfS0VZCiAjICAgUFJPVF9LRVkKKyMgICBQTEFUX0tFWQorIyAgIFNXRF9ST1RfS0VZCisjICAgQ09SRV9TV0RfS0VZCiAjICAgVFJVU1RFRF9XT1JMRF9LRVkKICMgICBOT05fVFJVU1RFRF9XT1JMRF9LRVkKICMgICBTQ1BfQkwyX0tFWQpAQCAtNDYsMTAgKzQ5LDE4IEBACiAkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtOVEZXX05WQ1RSX1ZBTH0sLS1udGZ3LW52Y3RyKSkKIAogIyBBZGQgVHJ1c3RlZCBLZXkgY2VydGlmaWNhdGUgdG8gdGhlIGZpcHRvb2wgYW5kIGNlcnRfY3JlYXRlIGNvbW1hbmQgbGluZSBvcHRpb25zCitpZm5lcSAoJHtDT1R9LGNjYSkKICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke1RSVVNURURfS0VZX0NFUlR9LC0tdHJ1c3RlZC1rZXktY2VydCkpCitlbHNlCiskKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9jY2EuY3J0LC0tY2NhLWNlcnQpKQorJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vY29yZS1zd2QuY3J0LC0tY29yZS1zd2QtY2VydCkpCiskKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9wbGF0LWtleS5jcnQsLS1wbGF0LWtleS1jZXJ0KSkKK2VuZGlmCiAKICMgQWRkIGZ3dSBjZXJ0aWZpY2F0ZSB0byB0aGUgZmlwdG9vbCBhbmQgY2VydF9jcmVhdGUgY29tbWFuZCBsaW5lIG9wdGlvbnMKK2lmbmVxICgke0NPVH0sY2NhKQogJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7RldVX0NFUlR9LC0tZnd1LWNlcnQsLEZXVV8pKQorZW5kaWYKIAogIyBBZGQgdGhlIGtleXMgdG8gdGhlIGNlcnRfY3JlYXRlIGNvbW1hbmQgbGluZSBvcHRpb25zIChwcml2YXRlIGtleXMgYXJlIE5PVAogIyBwYWNrZWQgaW4gdGhlIEZJUCkuIERldmVsb3BlcnMgY2FuIHVzZSB0aGVpciBvd24ga2V5cyBieSBzcGVjaWZ5aW5nIHRoZSBwcm9wZXIKQEAgLTYzLDYgKzc0LDkgQEAKICQoaWYgJHtST1RfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtST1RfS0VZfSwtLXJvdC1rZXkpKSkKICQoaWYgJHtST1RfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtST1RfS0VZfSwtLXJvdC1rZXksRldVXykpKQogJChpZiAke1BST1RfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtQUk9UX0tFWX0sLS1wcm90LWtleSkpKQorJChpZiAke1BMQVRfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtQTEFUX0tFWX0sLS1wbGF0LWtleSkpKQorJChpZiAke1NXRF9ST1RfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtTV0RfUk9UX0tFWX0sLS1zd2Qtcm90LWtleSkpKQorJChpZiAke0NPUkVfU1dEX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7Q09SRV9TV0RfS0VZfSwtLWNvcmUtc3dkLWtleSkpKQogJChpZiAke1RSVVNURURfV09STERfS0VZfSwkKGV2YWwgJChjYWxsIENFUlRfQUREX0NNRF9PUFQsJHtUUlVTVEVEX1dPUkxEX0tFWX0sLS10cnVzdGVkLXdvcmxkLWtleSkpKQogJChpZiAke05PTl9UUlVTVEVEX1dPUkxEX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7Tk9OX1RSVVNURURfV09STERfS0VZfSwtLW5vbi10cnVzdGVkLXdvcmxkLWtleSkpKQogCkBAIC03MCwyNSArODQsMzEgQEAKICMgQWRkIHRoZSBCTDIgQ29UIChpbWFnZSBjZXJ0KQogaWZlcSAoJHtORUVEX0JMMn0seWVzKQogaWZlcSAoJHtCTDJfQVRfRUwzfSwgMCkKK2lmbmVxICgke0NPVH0sY2NhKQogJChldmFsICQoY2FsbCBUT09MX0FERF9QQVlMT0FELCR7QlVJTERfUExBVH0vdGJfZncuY3J0LC0tdGItZnctY2VydCkpCiBlbmRpZgogZW5kaWYKK2VuZGlmCiAKICMgQWRkIHRoZSBTQ1BfQkwyIENvVCAoa2V5IGNlcnQgKyBpbWcgY2VydCkKIGlmbmVxICgke1NDUF9CTDJ9LCkKK2lmbmVxICgke0NPVH0sY2NhKQogICAgICQoaWYgJHtTQ1BfQkwyX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7U0NQX0JMMl9LRVl9LC0tc2NwLWZ3LWtleSkpKQogICAgICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L3NjcF9md19jb250ZW50LmNydCwtLXNjcC1mdy1jZXJ0KSkKICAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9zY3BfZndfa2V5LmNydCwtLXNjcC1mdy1rZXktY2VydCkpCiBlbmRpZgorZW5kaWYKIAogaWZlcSAoJHtBUkNIfSxhYXJjaDY0KQogaWZlcSAoJHtORUVEX0JMMzF9LHllcykKICMgQWRkIHRoZSBCTDMxIENvVCAoa2V5IGNlcnQgKyBpbWcgY2VydCkKICQoaWYgJHtCTDMxX0tFWX0sJChldmFsICQoY2FsbCBDRVJUX0FERF9DTURfT1BULCR7QkwzMV9LRVl9LC0tc29jLWZ3LWtleSkpKQoraWZuZXEgKCR7Q09UfSxjY2EpCiAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9zb2NfZndfY29udGVudC5jcnQsLS1zb2MtZnctY2VydCkpCiAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9zb2NfZndfa2V5LmNydCwtLXNvYy1mdy1rZXktY2VydCkpCiBlbmRpZgogZW5kaWYKK2VuZGlmCiAKICMgQWRkIHRoZSBCTDMyIENvVCAoa2V5IGNlcnQgKyBpbWcgY2VydCkKIGlmZXEgKCR7TkVFRF9CTDMyfSx5ZXMpCkBAIC0xMDIsNyArMTIyLDkgQEAKICAgICAkKGlmICR7QkwzM19LRVl9LCQoZXZhbCAkKGNhbGwgQ0VSVF9BRERfQ01EX09QVCwke0JMMzNfS0VZfSwtLW50LWZ3LWtleSkpKQogICAgICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L250X2Z3X2NvbnRlbnQuY3J0LC0tbnQtZnctY2VydCkpCiBpZm5lcSAoJHtDT1R9LGR1YWxyb290KQotICAgICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L250X2Z3X2tleS5jcnQsLS1udC1mdy1rZXktY2VydCkpCisgICAgaWZuZXEgKCR7Q09UfSxjY2EpCisgICAgICAgICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L250X2Z3X2tleS5jcnQsLS1udC1mdy1rZXktY2VydCkpCisgICAgZW5kaWYKIGVuZGlmCiBlbmRpZgogCkBAIC0xMTIsNCArMTM0LDcgQEAKIGlmZXEgKCR7Q09UfSxkdWFscm9vdCkKICAgICAkKGV2YWwgJChjYWxsIFRPT0xfQUREX1BBWUxPQUQsJHtCVUlMRF9QTEFUfS9wbGF0X3NwX2NvbnRlbnQuY3J0LC0tcGxhdC1zcC1jZXJ0KSkKIGVuZGlmCitpZmVxICgke0NPVH0sY2NhKQorICAgICQoZXZhbCAkKGNhbGwgVE9PTF9BRERfUEFZTE9BRCwke0JVSUxEX1BMQVR9L3BsYXRfc3BfY29udGVudC5jcnQsLS1wbGF0LXNwLWNlcnQpKQorZW5kaWYKIGVuZGlmCmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfYXJtX3RydXN0ZWRfYm9vdC5jIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2FybV90cnVzdGVkX2Jvb3QuYwppbmRleCA2NmNjM2U5Li43MTRjNDQ0IDEwMDY0NAotLS0gYS9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfYXJtX3RydXN0ZWRfYm9vdC5jCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9hcm1fdHJ1c3RlZF9ib290LmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE1LTIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMiwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTEzLDE4ICsxMywyMCBAQAogI2luY2x1ZGUgPGRyaXZlcnMvZGVsYXlfdGltZXIuaD4KICNpbmNsdWRlIDxsaWIvY2Fzc2VydC5oPgogI2luY2x1ZGUgPGxpYi9mY29uZi9mY29uZi5oPgotI2luY2x1ZGUgPHBsYXQvYXJtL2NvbW1vbi9wbGF0X2FybS5oPgotI2luY2x1ZGUgPHBsYXQvYXJtL2NvbW1vbi9mY29uZl9udl9jbnRyX2dldHRlci5oPgogI2luY2x1ZGUgPHBsYXQvY29tbW9uL2NvbW1vbl9kZWYuaD4KICNpbmNsdWRlIDxwbGF0L2NvbW1vbi9wbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHBsYXRmb3JtX2RlZi5oPgotCi0jaWYgZGVmaW5lZChBUk1fQ09UX3RiYnIpCi0jaW5jbHVkZSA8dG9vbHNfc2hhcmUvdGJicl9vaWQuaD4KKyNpZiBkZWZpbmVkKEFSTV9DT1RfY2NhKQorI2luY2x1ZGUgPHRvb2xzX3NoYXJlL2NjYV9vaWQuaD4KICNlbGlmIGRlZmluZWQoQVJNX0NPVF9kdWFscm9vdCkKICNpbmNsdWRlIDx0b29sc19zaGFyZS9kdWFscm9vdF9vaWQuaD4KKyNlbGlmIGRlZmluZWQoQVJNX0NPVF90YmJyKQorI2luY2x1ZGUgPHRvb2xzX3NoYXJlL3RiYnJfb2lkLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPHBsYXQvYXJtL2NvbW1vbi9mY29uZl9udl9jbnRyX2dldHRlci5oPgorI2luY2x1ZGUgPHBsYXQvYXJtL2NvbW1vbi9wbGF0X2FybS5oPgorI2luY2x1ZGUgPHBsYXRmb3JtX2RlZi5oPgorCiAjaWYgIUFSTV9DUllQVE9DRUxMX0lOVEVHCiAjaWYgIUFSTV9ST1RQS19MT0NBVElPTl9JRAogICAjZXJyb3IgIkFSTV9ST1RQS19MT0NBVElPTl9JRCBub3QgZGVmaW5lZCIKQEAgLTE4MSw2ICsxODMsNDAgQEAKIAkJcmV0dXJuIDE7CiAJfQogfQorCisjZWxpZiBkZWZpbmVkKEFSTV9DT1RfY2NhKQorCitpbnQgYXJtX2dldF9yb3Rwa19pbmZvKHZvaWQgKmNvb2tpZSwgdm9pZCAqKmtleV9wdHIsIHVuc2lnbmVkIGludCAqa2V5X2xlbiwKKwkJICAgICAgIHVuc2lnbmVkIGludCAqZmxhZ3MpCit7CisJLyoKKwkgKiBSZXR1cm4gdGhlIHJpZ2h0IHJvb3Qgb2YgdHJ1c3Qga2V5IGhhc2ggYmFzZWQgb24gdGhlIGNvb2tpZSB2YWx1ZToKKwkgKiAgLSBOVUxMIG1lYW5zIHRoZSBwcmltYXJ5IFJPVFBLLgorCSAqICAtIE90aGVyd2lzZSwgaW50ZXJwcmV0IGNvb2tpZSBhcyB0aGUgT0lEIG9mIHRoZSBjZXJ0aWZpY2F0ZQorCSAqICAgIGV4dGVuc2lvbiBjb250YWluaW5nIHRoZSBrZXkuCisJICovCisJaWYgKGNvb2tpZSA9PSBOVUxMKSB7CisJCXJldHVybiBnZXRfcm90cGtfaW5mbyhrZXlfcHRyLCBrZXlfbGVuLCBmbGFncyk7CisJfSBlbHNlIGlmIChzdHJjbXAoY29va2llLCBQUk9UX1BLX09JRCkgPT0gMCkgeworCQlleHRlcm4gdW5zaWduZWQgY2hhciBhcm1fcHJvdHBrX2hhc2hbXTsKKwkJZXh0ZXJuIHVuc2lnbmVkIGNoYXIgYXJtX3Byb3Rwa19oYXNoX2VuZFtdOworCQkqa2V5X3B0ciA9IGFybV9wcm90cGtfaGFzaDsKKwkJKmtleV9sZW4gPSBhcm1fcHJvdHBrX2hhc2hfZW5kIC0gYXJtX3Byb3Rwa19oYXNoOworCQkqZmxhZ3MgPSBST1RQS19JU19IQVNIOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKHN0cmNtcChjb29raWUsIFNXRF9ST1RfUEtfT0lEKSA9PSAwKSB7CisJCWV4dGVybiB1bnNpZ25lZCBjaGFyIGFybV9zd2Rfcm90cGtfaGFzaFtdOworCQlleHRlcm4gdW5zaWduZWQgY2hhciBhcm1fc3dkX3JvdHBrX2hhc2hfZW5kW107CisJCSprZXlfcHRyID0gYXJtX3N3ZF9yb3Rwa19oYXNoOworCQkqa2V5X2xlbiA9IGFybV9zd2Rfcm90cGtfaGFzaF9lbmQgLSBhcm1fc3dkX3JvdHBrX2hhc2g7CisJCSpmbGFncyA9IFJPVFBLX0lTX0hBU0g7CisJCXJldHVybiAwOworCX0gZWxzZSB7CisJCS8qIEludmFsaWQga2V5IElELiAqLworCQlyZXR1cm4gMTsKKwl9Cit9CisKICNlbmRpZgogCiAvKgpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2NvbW1vbi5tayBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9ib2FyZF9jb21tb24ubWsKaW5kZXggNWNkZjFiZi4uYjExODExYyAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2NvbW1vbi5taworKysgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vYm9hcmRfY29tbW9uLm1rCkBAIC0xLDUgKzEsNSBAQAogIwotIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMCwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDE1LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICMKQEAgLTM4LDYgKzM4LDEwIEBACiAKICQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZSxBUk1fUk9UUEtfTE9DQVRJT05fSUQpKQogCitpZmVxICgke0VOQUJMRV9STUV9LCAxKQorQ09UCTo9CWNjYQorZW5kaWYKKwogIyBGb3JjZSBnZW5lcmF0aW9uIG9mIHRoZSBuZXcgaGFzaCBpZiBST1RfS0VZIGlzIHNwZWNpZmllZAogaWZkZWYgUk9UX0tFWQogCUhBU0hfUFJFUkVRVUlTSVRFUyA9ICQoUk9UX0tFWSkgRk9SQ0UKQEAgLTg1LDcgKzg5LDMyIEBACiBCTDJfU09VUkNFUwkJKz0JcGxhdC9hcm0vYm9hcmQvY29tbW9uL3Byb3Rway9hcm1fZGV2X3Byb3Rway5TCiAKICQoQlVJTERfUExBVCkvYmwxL2FybV9kZXZfcHJvdHBrLm86ICQoQVJNX1BST1RQS19IQVNIKQorJChCVUlMRF9QTEFUKS9ibDIvYXJtX2Rldl9wcm90cGsubzogJChBUk1fUFJPVFBLX0hBU0gpCitlbmRpZgorCitpZmVxICgke0NPVH0sY2NhKQorIyBQbGF0Zm9ybSBhbmQgU2VjdXJlIFdvcmxkIFJvb3Qgb2YgVHJ1c3Qga2V5IGZpbGVzLgorQVJNX1BST1RfS0VZCQk6PQlwbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9wcm90cHJpdmtfcnNhLnBlbQorQVJNX1BST1RQS19IQVNICQk6PQlwbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9wcm90cGtfcnNhX3NoYTI1Ni5iaW4KK0FSTV9TV0RfUk9UX0tFWQkJOj0JcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9hcm1fc3dkX3JvdHByaXZrX3JzYS5wZW0KK0FSTV9TV0RfUk9UUEtfSEFTSAk6PQlwbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9zd2Rfcm90cGtfcnNhX3NoYTI1Ni5iaW4KKworIyBQcm92aWRlIHRoZSBwcml2YXRlIGtleXMgdG8gY2VydF9jcmVhdGUgdG9vbC4gSXQgbmVlZHMgdGhlbSB0byBzaWduIHRoZSBpbWFnZXMuCitQUk9UX0tFWQkJOj0JJHtBUk1fUFJPVF9LRVl9CitTV0RfUk9UX0tFWQkJOj0JJHtBUk1fU1dEX1JPVF9LRVl9CisKKyQoZXZhbCAkKGNhbGwgYWRkX2RlZmluZV92YWwsQVJNX1BST1RQS19IQVNILCciJChBUk1fUFJPVFBLX0hBU0gpIicpKQorJChldmFsICQoY2FsbCBhZGRfZGVmaW5lX3ZhbCxBUk1fU1dEX1JPVFBLX0hBU0gsJyIkKEFSTV9TV0RfUk9UUEtfSEFTSCkiJykpCisKK0JMMV9TT1VSQ0VTCQkrPQlwbGF0L2FybS9ib2FyZC9jb21tb24vcHJvdHBrL2FybV9kZXZfcHJvdHBrLlMgXAorCQkJCXBsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX2Rldl9zd2Rfcm90cGsuUworQkwyX1NPVVJDRVMJCSs9CXBsYXQvYXJtL2JvYXJkL2NvbW1vbi9wcm90cGsvYXJtX2Rldl9wcm90cGsuUyBcCisJCQkJcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9hcm1fZGV2X3N3ZF9yb3Rway5TCisKKyQoQlVJTERfUExBVCkvYmwxL2FybV9kZXZfcHJvdHBrLm86ICQoQVJNX1BST1RQS19IQVNIKQorJChCVUlMRF9QTEFUKS9ibDEvYXJtX2Rldl9zd2Rfcm90cGsubzogJChBUk1fU1dEX1JPVFBLX0hBU0gpCiAkKEJVSUxEX1BMQVQpL2JsMi9hcm1fZGV2X3Byb3Rway5vOiAkKEFSTV9QUk9UUEtfSEFTSCkKKyQoQlVJTERfUExBVCkvYmwyL2FybV9kZXZfc3dkX3JvdHBrLm86ICQoQVJNX1NXRF9ST1RQS19IQVNIKQogZW5kaWYKIAogZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvUkVBRE1FIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYyOGE1ZgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvUkVBRE1FCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHNvbWUgZGV2ZWxvcG1lbnQga2V5cyB0byBiZSB1c2VkIGFzIHRoZSBzZWN1cmUgd29ybGQKK3Jvb3Qtb2YtdHJ1c3Qga2V5IHVzZWQgaW4gdGhlIENDQSBjaGFpbiBvZiB0cnVzdC4KKworKiBzd2Rfcm90cHJpdmtfcnNhLnBlbSBpcyBhIDJLIFJTQSBwcml2YXRlIGtleSBpbiBQRU0gZm9ybWF0LiBJdCBoYXMgYmVlbgorICBnZW5lcmF0ZWQgdXNpbmcgdGhlIG9wZW5zc2wgY29tbWFuZCBsaW5lIHRvb2w6CisKKyAgb3BlbnNzbCBnZW5yc2EgMjA0OCA+IGFybV9zd2Rfcm90cHJpdmtfcnNhLnBlbQorCisqIHN3ZF9yb3Rwa19yc2Ffc2hhMjU2LmJpbiBpcyB0aGUgU0hBLTI1NiBoYXNoIG9mIHRoZSBERVItZW5jb2RlZCBwdWJsaWMga2V5CisgIGFzc29jaWF0ZWQgd2l0aCB0aGUgYWJvdmUgcHJpdmF0ZSBrZXkuIEl0IGhhcyBiZWVuIGdlbmVyYXRlZCB1c2luZyB0aGUgb3BlbnNzbAorICBjb21tYW5kIGxpbmUgdG9vbDoKKworICBvcGVuc3NsIHJzYSAtaW4gYXJtX3N3ZF9yb3Rwcml2a19yc2EucGVtIC1wdWJvdXQgLW91dGZvcm0gREVSIHwgXAorICAgIG9wZW5zc2wgZGdzdCAtc2hhMjU2IC1iaW5hcnkgPiBhcm1fc3dkX3JvdHBrX3JzYV9zaGEyNTYuYmluCmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9kZXZfc3dkX3JvdHBrLlMgYi9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9kZXZfc3dkX3JvdHBrLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU0ZjlkMgotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX2Rldl9zd2Rfcm90cGsuUwpAQCAtMCwwICsxLDE4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCisgKi8KKworCS5nbG9iYWwgYXJtX3N3ZF9yb3Rwa19oYXNoCisJLmdsb2JhbCBhcm1fc3dkX3JvdHBrX2hhc2hfZW5kCisKKwkuc2VjdGlvbiAucm9kYXRhLmFybV9zd2Rfcm90cGtfaGFzaCwgImEiCisKK2FybV9zd2Rfcm90cGtfaGFzaDoKKwkvKiBERVIgaGVhZGVyLiAqLworCS5ieXRlIDB4MzAsIDB4MzEsIDB4MzAsIDB4MEQsIDB4MDYsIDB4MDksIDB4NjAsIDB4ODYsIDB4NDgKKwkuYnl0ZSAweDAxLCAweDY1LCAweDAzLCAweDA0LCAweDAyLCAweDAxLCAweDA1LCAweDAwLCAweDA0LCAweDIwCisJLyogS2V5IGhhc2guICovCisJLmluY2JpbiBBUk1fU1dEX1JPVFBLX0hBU0gKK2FybV9zd2Rfcm90cGtfaGFzaF9lbmQ6CmRpZmYgLS1naXQgYS9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9zd2Rfcm90cGtfcnNhX3NoYTI1Ni5iaW4gYi9wbGF0L2FybS9ib2FyZC9jb21tb24vc3dkX3JvdHBrL2FybV9zd2Rfcm90cGtfcnNhX3NoYTI1Ni5iaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJmM2U2MAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX3N3ZF9yb3Rwa19yc2Ffc2hhMjU2LmJpbgpAQCAtMCwwICsxIEBACisRML7iwwuS5pwQyMsbFZMo7KgwindJ04HVHunjoWcGawpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX3N3ZF9yb3Rwcml2a19yc2EucGVtIGIvcGxhdC9hcm0vYm9hcmQvY29tbW9uL3N3ZF9yb3Rway9hcm1fc3dkX3JvdHByaXZrX3JzYS5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRlNjU1ZAotLS0gL2Rldi9udWxsCisrKyBiL3BsYXQvYXJtL2JvYXJkL2NvbW1vbi9zd2Rfcm90cGsvYXJtX3N3ZF9yb3Rwcml2a19yc2EucGVtCkBAIC0wLDAgKzEsMjcgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUVwUUlCQUFLQ0FRRUE4aWdUZDVRZFpkMTgxa3o5dklOcjdBdTM0UnIvcFExanBlc2ZMbGMxWlhDTkFJOXkKKy9yaFFscHcwMHk4cndPZmdac2YxOGdQd0dXV0doREpNc1hJN09QZW03QkVVcjh4S3VtdUp1Q2lPZEpoMVNUY1IKKy9Kb0Z2ejh3SlB5eWNqL0RPRVJSR3N6K1J2RkJzNmNMalNaSE5RZHpLRFcrREU1dlZKcG1OV0JWa29LN01DUkQKK1doL1BNWlZTb3E5UGVKT3pheVljc2lwS3ZpZlQxK1dvOXkyTUc1elREeGkyOHJMci9GQm0wQ3BUZXBCY1JlOEwKK3BtZ1M3WEpLaENRWXhkRFN6eGkvMHQvcVhBd1d1TUU0anYySGJOeHNVWmphaGlCWXBBMEJhZlhhblN1eFZIbHkKK3FwRDBCbUtBdTdQcGdLckVuVWNQdUhwWjJXK2EwNWxOazZ6amV3SURBUUFCQW9JQkFHM3R3WUNjVFlncnR2czEKKzhrMzh2eVpsMzNDaUtBR09oWGtSdHBMNzVmS0oySWl6bGptS0JKT0tqL1I2eW5zRkNIckFOYWRMSUZqM0hNeXcKK1pONTlBK09Ga1ZKRElzZjNqc2ozL29vS1p6a0k2TjEyMFlTQml6QlppQXFTYUpPeTNIV1RsZG43eTBiN1NKODgKK3F1TEZ5TGVMRFR6b3dNQ25icVRTZnFtbWROSlFBbitRKzdSWDVzWkd5QlFVRjJwUkFBNjdjT1l6YzNhNU1aNUUKK3pCT3MydThWYm9DM3VsRXE4NzZYV1FiY1hwUmgvYXAzZXBsUTFrQWR5eTY0SVBwMldieHF5WFcwSVFBUXFhcWgKKzZvajE5TUU2bVZENXd0RUxjWXNjSkNEYjdwQTZXSnRQcDZuei9vZzJpZkNKRS83NVQ1Uko2ZmM2ZUJGTWNvZlEKK1NUSUNsR0VDZ1lFQS9aQzBHWDFIVEtFS0szYzFUaVMzWnkwRFM1Wm9ONUtGSzdTcDFaQWpQRTYzaUFyMWEzejkKK0tlcGIrTDhUQlN3NTB0VkQ3NE1GNUNoRWlkL2doRjVCclZDMy9ZSmtpaU5wTTFGNTFTTUxHRmVpRFBSekpjeDUKK0tKa1NmbFg3UTM2QkFYcWo4NVl6NUFqZ1RQS2NCcVFSVlo2cE5aTjFIWTk5TWxvTWcyMldQUkVDZ1lFQTlIdFUKK0ZYbW5UcGxYYU5uaWhkcSt2TDVaNC9LRE0rMWYxRTk1eTFQQjh2a0xJK28xc3pWTkZQK0JZeit3NDJsS3RIVysKK2MrejQwQWhGQkdaUTBRQ3g4M05PeU9iQ1JlRmpFYlA4Tno3MUJzSGU2R3lNazl0U1BJcHp1OVhCNDlScys5RU8KK0RBdkZNNXkyajViSCtsWEUwcFN5UzNvQmY1MUw5WkNQaHAvdkI4c0NnWUVBeWR3QjFHenNidStoRmZzL3YyYngKK2Jyemg2N0hnWTZWTVNQLzVXRi8zL1JHNWdCOGhRNkhzTlFzeWpyTW1aQzdTRmFyYiszZTJIKzJDcXJSRW0zd2kKK0V1UzRwS1BDZ0VveWZMMDNIVnRaZ05aNjFvOWdmODNwQWszaDhCdG8vVkZmU0JzbkhFc09JbEtDcGg5WjROdUsKK1JUd2EvdURXRW1OaHlzenZPMDNwbGRFQ2dZRUEyekI3R1duaGMxbU5nYWJmTFkwSnR1U2VhUHp6WHFueVljSUQKK2V5VVQzUWdsVWNUWThsdldTUDR1ZmRJTGdFZlZQMmZWSWRBUzMwaWF3REFQUXVMeHFFZjRHYXl4L3I3cytHRTYKK3ZqbEdxeEZFRFhQTXNYOVFBcEZLNDl2b29wL0FPaUNiREhlOURPSHkxMWVpNFREbWJybjhCQ2xWa0pseEVhL1MKK3ppc3p2Zk1DZ1lFQTJWMHpYemlvb0kwdG9hT0pFV1psQVloRU9OUzVTRzJ6MjhITUxOZ2JkTWN1ZUdOaHNlYVIKK05CR2dQY3UzRVFoYkwvaEQwdEJzMDl1NmdqeTFXRDFpMEhZbm0xSzFZUTFmbHpmYmpVYTNCcVpFVE1iTmh1Z2QKK0NNOXl2MEdFTC91ZFp5T21PNDAxYVlsK1FHWFpYL1d3bExRT2U3V3FRWE9YSnZXNzNvU3F5N009CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vYm9hcmQvZnZwL2ZkdHMvZnZwX3RiX2Z3X2NvbmZpZy5kdHMgYi9wbGF0L2FybS9ib2FyZC9mdnAvZmR0cy9mdnBfdGJfZndfY29uZmlnLmR0cwppbmRleCBjZjRlZjJkLi42ZmQzMzRkIDEwMDY0NAotLS0gYS9wbGF0L2FybS9ib2FyZC9mdnAvZmR0cy9mdnBfdGJfZndfY29uZmlnLmR0cworKysgYi9wbGF0L2FybS9ib2FyZC9mdnAvZmR0cy9mdnBfdGJfZndfY29uZmlnLmR0cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMiwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC00Nyw2ICs0Nyw5IEBACiAJCQlzb2NfZndfY2ZnX3V1aWQgPSAiOTk3OTgxNGItMDM3Ni1mYjQ2LThjOGUtOGQyNjdmNzg1OWUwIjsKIAkJCXRvc19md19jZmdfdXVpZCA9ICIyNjI1N2MxYS1kYmM2LTdmNDctOGQ5Ni1jNGM0YjAyNDgwMjEiOwogCQkJbnRfZndfY2ZnX3V1aWQgPSAiMjhkYTk4MTUtOTNlOC03ZTQ0LWFjNjYtMWFhZjgwMTU1MGY5IjsKKwkJCWNjYV9jZXJ0X3V1aWQgPSAiMzZkODNkODUtNzYxZC00ZGFmLTk2ZjEtY2Q5OWQ2NTY5YjAwIjsKKwkJCWNvcmVfc3dkX2NlcnRfdXVpZCA9ICI1MjIyMmQzMS04MjBmLTQ5NGQtOGJiYy1lYTY4MjVkM2MzNWEiOworCQkJcGxhdF9jZXJ0X3V1aWQgPSAiZDQzY2Q5MDItNWI5Zi00MTJlLThhYzYtOTJiNmQxOGJlNjBkIjsKIAkJCXRfa2V5X2NlcnRfdXVpZCA9ICI4MjdlZTg5MC1mODYwLWU0MTEtYTFiNC03NzdhMjFiNGY5NGMiOwogCQkJc2NwX2Z3X2tleV91dWlkID0gIjAyNDIyMWExLWY4NjAtZTQxMS04ZDliLWYzM2MwZTE1YTAxNCI7CiAJCQlzb2NfZndfa2V5X3V1aWQgPSAiOGFiOGJlY2MtZjk2MC1lNDExLTlhZDAtZWI0ODIyZDhkY2Y4IjsKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL2Z2cC9pbmNsdWRlL3BsYXRmb3JtX2RlZi5oIGIvcGxhdC9hcm0vYm9hcmQvZnZwL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmgKaW5kZXggODJiZDdjOC4uYzc1YWNhNyAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vYm9hcmQvZnZwL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmgKKysrIGIvcGxhdC9hcm0vYm9hcmQvZnZwL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmgKQEAgLTE5Nyw2ICsxOTcsOSBAQAogIyBkZWZpbmUgUExBVF9BUk1fTUFYX0JMMl9TSVpFCShVTCgweDFFMDAwKSAtIEZWUF9CTDJfUk9NTElCX09QVElNSVpBVElPTikKICNlbGlmIENSWVBUT19TVVBQT1JUCiAjIGRlZmluZSBQTEFUX0FSTV9NQVhfQkwyX1NJWkUJKFVMKDB4MUQwMDApIC0gRlZQX0JMMl9ST01MSUJfT1BUSU1JWkFUSU9OKQorI2VsaWYgQVJNX0JMMzFfSU5fRFJBTQorLyogV2hlbiBBUk1fQkwzMV9JTl9EUkFNIGlzIHNldCwgQkwyIGNhbiB1c2UgYWxtb3N0IGFsbCBvZiBUcnVzdGVkIFNSQU0uICovCisjIGRlZmluZSBQTEFUX0FSTV9NQVhfQkwyX1NJWkUJKFVMKDB4MUYwMDApIC0gRlZQX0JMMl9ST01MSUJfT1BUSU1JWkFUSU9OKQogI2Vsc2UKICMgZGVmaW5lIFBMQVRfQVJNX01BWF9CTDJfU0laRQkoVUwoMHgxMzAwMCkgLSBGVlBfQkwyX1JPTUxJQl9PUFRJTUlaQVRJT04pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2JvYXJkL3JkbjIvZmR0cy9yZG4yX250X2Z3X2NvbmZpZy5kdHMgYi9wbGF0L2FybS9ib2FyZC9yZG4yL2ZkdHMvcmRuMl9udF9md19jb25maWcuZHRzCmluZGV4IGJiYzM2ZmMuLmRkNzAxNDEgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2JvYXJkL3JkbjIvZmR0cy9yZG4yX250X2Z3X2NvbmZpZy5kdHMKKysrIGIvcGxhdC9hcm0vYm9hcmQvcmRuMi9mZHRzL3JkbjJfbnRfZndfY29uZmlnLmR0cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjAgLSAyMDIyLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtMTgsNSArMTgsMjYgQEAKIAkJcGxhdGZvcm0taWQgPSA8MHgwPjsKIAkJY29uZmlnLWlkID0gPDB4MD47CiAJCW11bHRpLWNoaXAtbW9kZSA9IDwweDA+OworCQkvKgorCQkgKiBGaXJzdCBjZWxsIHBhaXI6IENvdW50IG9mIGlzb2xhdGVkIENQVXMgaW4gdGhlIGxpc3QuCisJCSAqIFJlc3Qgb2YgdGhlIGNlbGxzOiBNUElEIGxpc3Qgb2YgdGhlIGlzb2xhdGVkIENQVXMuCisJCSAqLworCQlpc29sYXRlZC1jcHUtbGlzdCA9IDwweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwCisJCQkJICAgICAweDAgMHgwPjsKIAl9OwogfTsKZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2NvbW1vbi9hcm1fY29tbW9uLm1rIGIvcGxhdC9hcm0vY29tbW9uL2FybV9jb21tb24ubWsKaW5kZXggYWQ0ODI5Ny4uMjkwYjRlZSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vY29tbW9uL2FybV9jb21tb24ubWsKKysrIGIvcGxhdC9hcm0vY29tbW9uL2FybV9jb21tb24ubWsKQEAgLTM3Myw2ICszNzMsOCBAQAogICAgICAgICBlbmRpZgogICAgIGVsc2UgaWZlcSAoJHtDT1R9LGR1YWxyb290KQogICAgICAgICBBVVRIX1NPVVJDRVMJKz0JZHJpdmVycy9hdXRoL2R1YWxyb290L2NvdC5jCisgICAgZWxzZSBpZmVxICgke0NPVH0sY2NhKQorICAgICAgICBBVVRIX1NPVVJDRVMJKz0JZHJpdmVycy9hdXRoL2NjYS9jb3QuYwogICAgIGVsc2UKICAgICAgICAgJChlcnJvciBVbmtub3duIGNoYWluIG9mIHRydXN0ICR7Q09UfSkKICAgICBlbmRpZgpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY29tbW9uL2Zjb25mL2FybV9mY29uZl9pby5jIGIvcGxhdC9hcm0vY29tbW9uL2Zjb25mL2FybV9mY29uZl9pby5jCmluZGV4IGFlYTJmMzguLjZjMzIzMzEgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2NvbW1vbi9mY29uZi9hcm1fZmNvbmZfaW8uYworKysgYi9wbGF0L2FybS9jb21tb24vZmNvbmYvYXJtX2Zjb25mX2lvLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKICAqLwpAQCAtNzIsNiArNzIsOSBAQAogI2lmIFRSVVNURURfQk9BUkRfQk9PVAogCVtUUlVTVEVEX0JPT1RfRldfQ0VSVF9JRF0gPSB7VVVJRF9UUlVTVEVEX0JPT1RfRldfQ0VSVH0sCiAjaWYgIUFSTV9JT19JTl9EVEIKKwlbQ0NBX0NPTlRFTlRfQ0VSVF9JRF0gPSB7VVVJRF9DQ0FfQ09OVEVOVF9DRVJUfSwKKwlbQ09SRV9TV0RfS0VZX0NFUlRfSURdID0ge1VVSURfQ09SRV9TV0RfS0VZX0NFUlR9LAorCVtQTEFUX0tFWV9DRVJUX0lEXSA9IHtVVUlEX1BMQVRfS0VZX0NFUlR9LAogCVtUUlVTVEVEX0tFWV9DRVJUX0lEXSA9IHtVVUlEX1RSVVNURURfS0VZX0NFUlR9LAogCVtTQ1BfRldfS0VZX0NFUlRfSURdID0ge1VVSURfU0NQX0ZXX0tFWV9DRVJUfSwKIAlbU09DX0ZXX0tFWV9DRVJUX0lEXSA9IHtVVUlEX1NPQ19GV19LRVlfQ0VSVH0sCkBAIC0xOTYsNiArMTk5LDIxIEBACiAJCW9wZW5fZmlwCiAJfSwKICNpZiAhQVJNX0lPX0lOX0RUQgorCVtDQ0FfQ09OVEVOVF9DRVJUX0lEXSA9IHsKKwkJJmZpcF9kZXZfaGFuZGxlLAorCQkodWludHB0cl90KSZhcm1fdXVpZF9zcGVjW0NDQV9DT05URU5UX0NFUlRfSURdLAorCQlvcGVuX2ZpcAorCX0sCisJW0NPUkVfU1dEX0tFWV9DRVJUX0lEXSA9IHsKKwkJJmZpcF9kZXZfaGFuZGxlLAorCQkodWludHB0cl90KSZhcm1fdXVpZF9zcGVjW0NPUkVfU1dEX0tFWV9DRVJUX0lEXSwKKwkJb3Blbl9maXAKKwl9LAorCVtQTEFUX0tFWV9DRVJUX0lEXSA9IHsKKwkJJmZpcF9kZXZfaGFuZGxlLAorCQkodWludHB0cl90KSZhcm1fdXVpZF9zcGVjW1BMQVRfS0VZX0NFUlRfSURdLAorCQlvcGVuX2ZpcAorCX0sCiAJW1RSVVNURURfS0VZX0NFUlRfSURdID0gewogCQkmZmlwX2Rldl9oYW5kbGUsCiAJCSh1aW50cHRyX3QpJmFybV91dWlkX3NwZWNbVFJVU1RFRF9LRVlfQ0VSVF9JRF0sCkBAIC0yNjAsNyArMjc4LDcgQEAKICNpZmRlZiBJTUFHRV9CTDIKIAogI2lmIFRSVVNURURfQk9BUkRfQk9PVAotI2RlZmluZSBGQ09ORl9BUk1fSU9fVVVJRF9OVU1CRVIJVSgyMSkKKyNkZWZpbmUgRkNPTkZfQVJNX0lPX1VVSURfTlVNQkVSCVUoMjQpCiAjZWxzZQogI2RlZmluZSBGQ09ORl9BUk1fSU9fVVVJRF9OVU1CRVIJVSgxMCkKICNlbmRpZgpAQCAtMjg2LDYgKzMwNCw5IEBACiAJe1RPU19GV19DT05GSUdfSUQsICJ0b3NfZndfY2ZnX3V1aWQifSwKIAl7TlRfRldfQ09ORklHX0lELCAibnRfZndfY2ZnX3V1aWQifSwKICNpZiBUUlVTVEVEX0JPQVJEX0JPT1QKKwl7Q0NBX0NPTlRFTlRfQ0VSVF9JRCwgImNjYV9jZXJ0X3V1aWQifSwKKwl7Q09SRV9TV0RfS0VZX0NFUlRfSUQsICJjb3JlX3N3ZF9jZXJ0X3V1aWQifSwKKwl7UExBVF9LRVlfQ0VSVF9JRCwgInBsYXRfY2VydF91dWlkIn0sCiAJe1RSVVNURURfS0VZX0NFUlRfSUQsICJ0X2tleV9jZXJ0X3V1aWQifSwKIAl7U0NQX0ZXX0tFWV9DRVJUX0lELCAic2NwX2Z3X2tleV91dWlkIn0sCiAJe1NPQ19GV19LRVlfQ0VSVF9JRCwgInNvY19md19rZXlfdXVpZCJ9LApkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9iYXNlX3BsYXRmb3JtX2RlZi5oIGIvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9iYXNlX3BsYXRmb3JtX2RlZi5oCmluZGV4IGM5YzhjMDQuLjU4YTE1M2EgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfYmFzZV9wbGF0Zm9ybV9kZWYuaAorKysgYi9wbGF0L2FybS9jc3Mvc2dpL2luY2x1ZGUvc2dpX2Jhc2VfcGxhdGZvcm1fZGVmLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjEsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTM1LDggKzM1LDggQEAKICMgaWYgU1BNX01NCiAjICBkZWZpbmUgUExBVF9BUk1fTU1BUF9FTlRSSUVTCQkoOSAgKyAoKENTU19TR0lfQ0hJUF9DT1VOVCAtIDEpICogMykpCiAjICBkZWZpbmUgTUFYX1hMQVRfVEFCTEVTCQkoNyAgKyAoKENTU19TR0lfQ0hJUF9DT1VOVCAtIDEpICogMykpCi0jICBkZWZpbmUgUExBVF9TUF9JTUFHRV9NTUFQX1JFR0lPTlMJOQotIyAgZGVmaW5lIFBMQVRfU1BfSU1BR0VfTUFYX1hMQVRfVEFCTEVTCTExCisjICBkZWZpbmUgUExBVF9TUF9JTUFHRV9NTUFQX1JFR0lPTlMJMTAKKyMgIGRlZmluZSBQTEFUX1NQX0lNQUdFX01BWF9YTEFUX1RBQkxFUwkxMgogIyBlbHNlCiAjICBkZWZpbmUgUExBVF9BUk1fTU1BUF9FTlRSSUVTCQkoNSArICgoQ1NTX1NHSV9DSElQX0NPVU5UIC0gMSkgKiAzKSkKICMgIGRlZmluZSBNQVhfWExBVF9UQUJMRVMJCSg2ICsgKChDU1NfU0dJX0NISVBfQ09VTlQgLSAxKSAqIDMpKQpAQCAtMTAxLDcgKzEwMSw3IEBACiAgKiBjYWxjdWxhdGVkIHVzaW5nIHRoZSBjdXJyZW50IEJMMzEgUFJPR0JJVFMgZGVidWcgc2l6ZSBwbHVzIHRoZSBzaXplcyBvZgogICogQkwyIGFuZCBCTDEtUlcKICAqLwotI2RlZmluZSBQTEFUX0FSTV9NQVhfQkwzMV9TSVpFCQkweDNCMDAwCisjZGVmaW5lIFBMQVRfQVJNX01BWF9CTDMxX1NJWkUJCTB4NDgwMDAKIAogLyoKICAqIFNpemUgb2YgY2FjaGVhYmxlIHN0YWNrcwpAQCAtMTMwLDYgKzEzMCwyMSBAQAogIyBkZWZpbmUgUExBVEZPUk1fU1RBQ0tfU0laRSAweDQ0MAogI2VuZGlmCiAKKy8qIFBMMDExIFVBUlQgcmVsYXRlZCBjb25zdGFudHMgKi8KKyNkZWZpbmUgU09DX0NTU19TRUNfVUFSVF9CQVNFCQkJVUwoMHgyQTQxMDAwMCkKKyNkZWZpbmUgU09DX0NTU19OU0VDX1VBUlRfQkFTRQkJCVVMKDB4MkE0MDAwMDApCisjZGVmaW5lIFNPQ19DU1NfVUFSVF9TSVpFCQkJVUwoMHgxMDAwMCkKKyNkZWZpbmUgU09DX0NTU19VQVJUX0NMS19JTl9IWgkJCVVMKDczNzI4MDApCisKKy8qIFVBUlQgcmVsYXRlZCBjb25zdGFudHMgKi8KKyNkZWZpbmUgUExBVF9BUk1fQk9PVF9VQVJUX0JBU0UJCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UKKyNkZWZpbmUgUExBVF9BUk1fQk9PVF9VQVJUX0NMS19JTl9IWgkJU09DX0NTU19VQVJUX0NMS19JTl9IWgorCisjZGVmaW5lIFBMQVRfQVJNX1JVTl9VQVJUX0JBU0UJCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UKKyNkZWZpbmUgUExBVF9BUk1fUlVOX1VBUlRfQ0xLX0lOX0haCQlTT0NfQ1NTX1VBUlRfQ0xLX0lOX0haCisKKyNkZWZpbmUgUExBVF9BUk1fQ1JBU0hfVUFSVF9CQVNFCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UKKyNkZWZpbmUgUExBVF9BUk1fQ1JBU0hfVUFSVF9DTEtfSU5fSFoJCVNPQ19DU1NfVUFSVF9DTEtfSU5fSFoKIAogI2RlZmluZSBQTEFUX0FSTV9OU1RJTUVSX0ZSQU1FX0lECTAKIApAQCAtMjU4LDQgKzI3MywyMSBAQAogCQlDU1NfU0dJX1JFTU9URV9DSElQX01FTV9PRkZTRVQobikgKyBBUk1fRFJBTTJfRU5ELAlcCiAJCUFSTV9UWkNfTlNfRFJBTV9TX0FDQ0VTUywgUExBVF9BUk1fVFpDX05TX0RFVl9BQ0NFU1N9CiAKKyNpZiBTUE1fTU0KKworLyoKKyAqIFN0YW5kLWFsb25lIE1NIGxvZ3Mgd291bGQgYmUgcm91dGVkIHZpYSBzZWN1cmUgVUFSVC4gRGVmaW5lIHBhZ2UgdGFibGUKKyAqIGVudHJ5IGZvciBzZWN1cmUgVUFSVCB3aGljaCB3b3VsZCBiZSBjb21tb24gdG8gYWxsIHBsYXRmb3Jtcy4KKyAqLworI2RlZmluZSBTT0NfUExBVEZPUk1fU0VDVVJFX1VBUlQJTUFQX1JFR0lPTl9GTEFUKAkJXAorCQkJCQlTT0NfQ1NTX1NFQ19VQVJUX0JBU0UsCQlcCisJCQkJCVNPQ19DU1NfVUFSVF9TSVpFLAkJXAorCQkJCQlNVF9ERVZJQ0UgfCBNVF9SVyB8IAkJXAorCQkJCQlNVF9TRUNVUkUgfCBNVF9VU0VSKQorCisjZW5kaWYKKworLyogU0RTIElEIGZvciB1bnVzYWJsZSBDUFUgTVBJRCBsaXN0IHN0cnVjdHVyZSAqLworI2RlZmluZSBTRFNfSVNPTEFURURfQ1BVX0xJU1RfSUQJCVUoMTI4KQorCiAjZW5kaWYgLyogU0dJX0JBU0VfUExBVEZPUk1fREVGX0ggKi8KZGlmZiAtLWdpdCBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX2Nzc19kZWYuaCBiL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX2Nzc19kZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzhiNDVhCi0tLSAvZGV2L251bGwKKysrIGIvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9zb2NfY3NzX2RlZi5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpZm5kZWYgU0dJX1NPQ19DU1NfREVGX0gKKyNkZWZpbmUgU0dJX1NPQ19DU1NfREVGX0gKKworI2luY2x1ZGUgPGxpYi91dGlsc19kZWYuaD4KKyNpbmNsdWRlIDxwbGF0L2FybS9ib2FyZC9jb21tb24vdjJtX2RlZi5oPgorI2luY2x1ZGUgPHBsYXQvYXJtL3NvYy9jb21tb24vc29jX2Nzc19kZWYuaD4KKyNpbmNsdWRlIDxwbGF0L2NvbW1vbi9jb21tb25fZGVmLmg+CisKKy8qCisgKiBEZWZpbml0aW9ucyBjb21tb24gdG8gYWxsIEFSTSBDU1N2MS1iYXNlZCBkZXZlbG9wbWVudCBwbGF0Zm9ybXMKKyAqLworCisvKiBQbGF0Zm9ybSBJRCBhZGRyZXNzICovCisjZGVmaW5lIEJPQVJEX0NTU19QTEFUX0lEX1JFR19BRERSCQlVTCgweDdmZmUwMGUwKQorCisvKiBQbGF0Zm9ybSBJRCByZWxhdGVkIGFjY2Vzc29ycyAqLworI2RlZmluZSBCT0FSRF9DU1NfUExBVF9JRF9SRUdfSURfTUFTSwkJMHgwZgorI2RlZmluZSBCT0FSRF9DU1NfUExBVF9JRF9SRUdfSURfU0hJRlQJCTB4MAorI2RlZmluZSBCT0FSRF9DU1NfUExBVF9UWVBFX0VNVUxBVE9SCQkweDAyCisKKyNpZm5kZWYgX19BU1NFTUJMRVJfXworCisjaW5jbHVkZSA8bGliL21taW8uaD4KKworI2RlZmluZSBCT0FSRF9DU1NfR0VUX1BMQVRfVFlQRShhZGRyKQkJCQkJXAorCSgobW1pb19yZWFkXzMyKGFkZHIpICYgQk9BUkRfQ1NTX1BMQVRfSURfUkVHX0lEX01BU0spCQlcCisJPj4gQk9BUkRfQ1NTX1BMQVRfSURfUkVHX0lEX1NISUZUKQorCisjZW5kaWYgLyogX19BU1NFTUJMRVJfXyAqLworCisjZGVmaW5lIE1BWF9JT19ERVZJQ0VTCQkJMworI2RlZmluZSBNQVhfSU9fSEFORExFUwkJCTQKKworLyogUmVzZXJ2ZSB0aGUgbGFzdCBibG9jayBvZiBmbGFzaCBmb3IgUFNDSSBNRU0gUFJPVEVDVCBmbGFnICovCisjZGVmaW5lIFBMQVRfQVJNX0ZMQVNIX0lNQUdFX0JBU0UJVjJNX0ZMQVNIMF9CQVNFCisjZGVmaW5lIFBMQVRfQVJNX0ZMQVNIX0lNQUdFX01BWF9TSVpFCShWMk1fRkxBU0gwX1NJWkUgLSBWMk1fRkxBU0hfQkxPQ0tfU0laRSkKKworI2RlZmluZSBQTEFUX0FSTV9OVk1fQkFTRQkJVjJNX0ZMQVNIMF9CQVNFCisjZGVmaW5lIFBMQVRfQVJNX05WTV9TSVpFCQkoVjJNX0ZMQVNIMF9TSVpFIC0gVjJNX0ZMQVNIX0JMT0NLX1NJWkUpCisKKyNlbmRpZiAvKiBTR0lfU09DX0NTU19ERUZfSCAqLwpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9zb2NfY3NzX2RlZl92Mi5oIGIvcGxhdC9hcm0vY3NzL3NnaS9pbmNsdWRlL3NnaV9zb2NfY3NzX2RlZl92Mi5oCmluZGV4IDYzOWI2ODcuLmFjZjMxZWIgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX2Nzc19kZWZfdjIuaAorKysgYi9wbGF0L2FybS9jc3Mvc2dpL2luY2x1ZGUvc2dpX3NvY19jc3NfZGVmX3YyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0yNCwxNyArMjQsMTAgQEAKIAogI2RlZmluZSBTT0NfQ1NTX1BDSUVfQ09OVFJPTF9CQVNFCVVMKDB4MGVmMjAwMDApCiAKLS8qIFBMMDExIFVBUlQgcmVsYXRlZCBjb25zdGFudHMgKi8KLSNkZWZpbmUgU09DX0NTU19VQVJUMV9CQVNFCQlVTCgweDBlZjgwMDAwKQotI2RlZmluZSBTT0NfQ1NTX1VBUlQwX0JBU0UJCVVMKDB4MGVmNzAwMDApCi0KIC8qIE1lbW9yeSBjb250cm9sbGVyICovCiAjZGVmaW5lIFNPQ19NRU1DTlRSTF9CQVNFCQlVTCgweDEwMDAwMDAwKQogI2RlZmluZSBTT0NfTUVNQ05UUkxfU0laRQkJVUwoMHgxMDAwMDAwMCkKIAotI2RlZmluZSBTT0NfQ1NTX1VBUlQwX0NMS19JTl9IWgkJVUwoNzM3MjgwMCkKLSNkZWZpbmUgU09DX0NTU19VQVJUMV9DTEtfSU5fSFoJCVVMKDczNzI4MDApCi0KIC8qIFNvQyBOSUMtNDAwIEdsb2JhbCBQcm9ncmFtbWVycyBWaWV3IChHUFYpICovCiAjZGVmaW5lIFNPQ19DU1NfTklDNDAwX0JBU0UJCVVMKDB4MEVEMDAwMDApCiAKQEAgLTIwNiwxNyArMTk5LDQgQEAKICNkZWZpbmUgUExBVF9BUk1fTlZNX0JBU0UJCVYyTV9GTEFTSDBfQkFTRQogI2RlZmluZSBQTEFUX0FSTV9OVk1fU0laRQkJKFYyTV9GTEFTSDBfU0laRSAtIFYyTV9GTEFTSF9CTE9DS19TSVpFKQogCi0vKiBVQVJUIHJlbGF0ZWQgY29uc3RhbnRzICovCi0jZGVmaW5lIFBMQVRfQVJNX0JPT1RfVUFSVF9CQVNFCQkJU09DX0NTU19VQVJUMF9CQVNFCi0jZGVmaW5lIFBMQVRfQVJNX0JPT1RfVUFSVF9DTEtfSU5fSFoJCVNPQ19DU1NfVUFSVDBfQ0xLX0lOX0haCi0KLSNkZWZpbmUgUExBVF9BUk1fUlVOX1VBUlRfQkFTRQkJCVNPQ19DU1NfVUFSVDFfQkFTRQotI2RlZmluZSBQTEFUX0FSTV9SVU5fVUFSVF9DTEtfSU5fSFoJCVNPQ19DU1NfVUFSVDFfQ0xLX0lOX0haCi0KLSNkZWZpbmUgUExBVF9BUk1fU1BfTUlOX1JVTl9VQVJUX0JBU0UJCVNPQ19DU1NfVUFSVDFfQkFTRQotI2RlZmluZSBQTEFUX0FSTV9TUF9NSU5fUlVOX1VBUlRfQ0xLX0lOX0haCVNPQ19DU1NfVUFSVDFfQ0xLX0lOX0haCi0KLSNkZWZpbmUgUExBVF9BUk1fQ1JBU0hfVUFSVF9CQVNFCQlQTEFUX0FSTV9SVU5fVUFSVF9CQVNFCi0jZGVmaW5lIFBMQVRfQVJNX0NSQVNIX1VBUlRfQ0xLX0lOX0haCQlQTEFUX0FSTV9SVU5fVUFSVF9DTEtfSU5fSFoKLQogI2VuZGlmIC8qIFNHSV9TT0NfQ1NTX0RFRl9WMl9IICovCmRpZmYgLS1naXQgYS9wbGF0L2FybS9jc3Mvc2dpL2luY2x1ZGUvc2dpX3NvY19wbGF0Zm9ybV9kZWYuaCBiL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX3BsYXRmb3JtX2RlZi5oCmluZGV4IDQwNWQ2MmYuLjNiOGQ5YzYgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX3BsYXRmb3JtX2RlZi5oCisrKyBiL3BsYXQvYXJtL2Nzcy9zZ2kvaW5jbHVkZS9zZ2lfc29jX3BsYXRmb3JtX2RlZi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC03LDEwICs3LDEwIEBACiAjaWZuZGVmIFNHSV9TT0NfUExBVEZPUk1fREVGX0gKICNkZWZpbmUgU0dJX1NPQ19QTEFURk9STV9ERUZfSAogCi0jaW5jbHVkZSA8c2dpX2Jhc2VfcGxhdGZvcm1fZGVmLmg+Ci0jaW5jbHVkZSA8cGxhdC9hcm0vYm9hcmQvY29tbW9uL2JvYXJkX2Nzc19kZWYuaD4KICNpbmNsdWRlIDxwbGF0L2FybS9ib2FyZC9jb21tb24vdjJtX2RlZi5oPgogI2luY2x1ZGUgPHBsYXQvYXJtL3NvYy9jb21tb24vc29jX2Nzc19kZWYuaD4KKyNpbmNsdWRlIDxzZ2lfYmFzZV9wbGF0Zm9ybV9kZWYuaD4KKyNpbmNsdWRlIDxzZ2lfc29jX2Nzc19kZWYuaD4KIAogLyogTWFwIHRoZSBTeXN0ZW0gcmVnaXN0ZXJzIHRvIGFjY2VzcyBmcm9tIFMtRUwwICovCiAjZGVmaW5lIENTU19TWVNURU1SRUdfREVWSUNFX0JBU0UJKDB4MUMwMTAwMDApCmRpZmYgLS1naXQgYS9wbGF0L2FybS9jc3Mvc2dpL3NnaS1jb21tb24ubWsgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaS1jb21tb24ubWsKaW5kZXggNzZjODAyNS4uNGFmNTc5ZSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2ktY29tbW9uLm1rCisrKyBiL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpLWNvbW1vbi5tawpAQCAtNDQsNyArNDQsOCBAQAogQkwxX1NPVVJDRVMJCSs9CSR7SU5URVJDT05ORUNUX1NPVVJDRVN9CQkJXAogCQkJCWRyaXZlcnMvYXJtL3Nic2Evc2JzYS5jCiAKLUJMMl9TT1VSQ0VTCQkrPQkke0NTU19FTlRfQkFTRX0vc2dpX2ltYWdlX2xvYWQuYworQkwyX1NPVVJDRVMJCSs9CSR7Q1NTX0VOVF9CQVNFfS9zZ2lfaW1hZ2VfbG9hZC5jCVwKKwkJCQlkcml2ZXJzL2FybS9jc3Mvc2RzL3Nkcy5jCiAKIEJMMzFfU09VUkNFUwkJKz0JJHtJTlRFUkNPTk5FQ1RfU09VUkNFU30JCQlcCiAJCQkJJHtFTlRfR0lDX1NPVVJDRVN9CQkJXApkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfaW1hZ2VfbG9hZC5jIGIvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfaW1hZ2VfbG9hZC5jCmluZGV4IDA5ZjNiNzIuLmFjNGJmZDIgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpX2ltYWdlX2xvYWQuYworKysgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaV9pbWFnZV9sb2FkLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjAsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTksMTYgKzksNjggQEAKICNpbmNsdWRlIDxhcmNoX2hlbHBlcnMuaD4KICNpbmNsdWRlIDxjb21tb24vZGVidWcuaD4KICNpbmNsdWRlIDxjb21tb24vZGVzY19pbWFnZV9sb2FkLmg+CisjaW5jbHVkZSA8ZHJpdmVycy9hcm0vY3NzL3Nkcy5oPgogI2luY2x1ZGUgPHBsYXQvYXJtL2NvbW1vbi9wbGF0X2FybS5oPgogI2luY2x1ZGUgPHBsYXQvY29tbW9uL3BsYXRmb3JtLmg+CiAKKyNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KKyNpbmNsdWRlIDxzZ2lfYmFzZV9wbGF0Zm9ybV9kZWYuaD4KICNpbmNsdWRlIDxzZ2lfdmFyaWFudC5oPgogCisvKgorICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIGlzb2xhdGVkIENQVXMgb2J0YWluZWQgZnJvbSBTRFMuCisgKi8KK3N0cnVjdCBpc29sYXRlZF9jcHVfbXBpZF9saXN0IHsKKwl1aW50NjRfdCBudW1fZW50cmllczsgLyogTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGxpc3QgKi8KKwl1aW50NjRfdCBtcGlkX2xpc3RbUExBVEZPUk1fQ09SRV9DT1VOVF07IC8qIExpc3Qgb2YgaXNvbGF0ZWQgQ1BVIE1QSURzICovCit9OworCisvKiBGdW5jdGlvbiB0byByZWFkIGlzb2xhdGVkIENQVSBNUElEIGxpc3QgZnJvbSBTRFMuICovCit2b2lkIHBsYXRfYXJtX3NnaV9nZXRfaXNvbGF0ZWRfY3B1X2xpc3Qoc3RydWN0IGlzb2xhdGVkX2NwdV9tcGlkX2xpc3QgKmxpc3QpCit7CisJaW50IHJldDsKKworCXJldCA9IHNkc19pbml0KCk7CisJaWYgKHJldCAhPSBTRFNfT0spIHsKKwkJRVJST1IoIlNEUyBpbml0aWFsaXphdGlvbiBmYWlsZWQsIGVycm9yOiAlZFxuIiwgcmV0KTsKKwkJcGFuaWMoKTsKKwl9CisKKwlyZXQgPSBzZHNfc3RydWN0X3JlYWQoU0RTX0lTT0xBVEVEX0NQVV9MSVNUX0lELCAwLCAmbGlzdC0+bnVtX2VudHJpZXMsCisJCQlzaXplb2YobGlzdC0+bnVtX2VudHJpZXMpLCBTRFNfQUNDRVNTX01PREVfQ0FDSEVEKTsKKwlpZiAocmV0ICE9IFNEU19PSykgeworCQlJTkZPKCJTRFMgQ1BVIG51bSBlbGVtZW50cyByZWFkIGZhaWxlZCwgZXJyb3I6ICVkXG4iLCByZXQpOworCQlsaXN0LT5udW1fZW50cmllcyA9IDA7CisJCXJldHVybjsKKwl9CisKKwlpZiAobGlzdC0+bnVtX2VudHJpZXMgPiBQTEFURk9STV9DT1JFX0NPVU5UKSB7CisJCUVSUk9SKCJJc29sYXRlZCBDUFUgbGlzdCBjb3VudCAlbGQgZ3JlYXRlciB0aGFuIG1heCIKKwkJICAgICAgIiBudW1iZXIgc3VwcG9ydGVkICVkXG4iLAorCQkgICAgICBsaXN0LT5udW1fZW50cmllcywgUExBVEZPUk1fQ09SRV9DT1VOVCk7CisJCXBhbmljKCk7CisJfSBlbHNlIGlmIChsaXN0LT5udW1fZW50cmllcyA9PSAwKSB7CisJCUlORk8oIlNEUyBpc29sYXRlZCBDUFUgbGlzdCBpcyBlbXB0eVxuIik7CisJCXJldHVybjsKKwl9CisKKwlyZXQgPSBzZHNfc3RydWN0X3JlYWQoU0RTX0lTT0xBVEVEX0NQVV9MSVNUX0lELAorCQkJc2l6ZW9mKGxpc3QtPm51bV9lbnRyaWVzKSwKKwkJCSZsaXN0LT5tcGlkX2xpc3QsCisJCQlzaXplb2YobGlzdC0+bXBpZF9saXN0WzBdKSAqIGxpc3QtPm51bV9lbnRyaWVzLAorCQkJU0RTX0FDQ0VTU19NT0RFX0NBQ0hFRCk7CisJaWYgKHJldCAhPSBTRFNfT0spIHsKKwkJRVJST1IoIlNEUyBDUFUgbGlzdCByZWFkIGZhaWxlZC4gZXJyb3I6ICVkXG4iLCByZXQpOworCQlwYW5pYygpOworCX0KK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIFRoaXMgZnVuY3Rpb24gaW5zZXJ0cyBQbGF0Zm9ybSBpbmZvcm1hdGlvbiB2aWEgZGV2aWNlIHRyZWUgbm9kZXMgYXMsCiAgKiBzeXN0ZW0taWQgewogICogICAgcGxhdGZvcm0taWQgPSA8MD47CiAgKiAgICBjb25maWctaWQgPSA8MD47CisgKiAgICBpc29sYXRlZC1jcHUtbGlzdCA9IDwwPgogICogfQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIHN0YXRpYyBpbnQgcGxhdF9zZ2lfYXBwZW5kX2NvbmZpZ19ub2RlKHZvaWQpCkBAIC0yNyw2ICs3OSw3IEBACiAJdm9pZCAqZmR0OwogCWludCBub2Rlb2Zmc2V0LCBlcnI7CiAJdW5zaWduZWQgaW50IHBsYXRpZCA9IDAsIHBsYXRjZmcgPSAwOworCXN0cnVjdCBpc29sYXRlZF9jcHVfbXBpZF9saXN0IGNwdV9tcGlkX2xpc3QgPSB7MH07CiAKIAltZW1fcGFyYW1zID0gZ2V0X2JsX21lbV9wYXJhbXNfbm9kZShOVF9GV19DT05GSUdfSUQpOwogCWlmIChtZW1fcGFyYW1zID09IE5VTEwpIHsKQEAgLTY5LDYgKzEyMiwxOCBAQAogCQlyZXR1cm4gLTE7CiAJfQogCisJcGxhdF9hcm1fc2dpX2dldF9pc29sYXRlZF9jcHVfbGlzdCgmY3B1X21waWRfbGlzdCk7CisJaWYgKGNwdV9tcGlkX2xpc3QubnVtX2VudHJpZXMgPiAwKSB7CisJCWVyciA9IGZkdF9zZXRwcm9wKGZkdCwgbm9kZW9mZnNldCwgImlzb2xhdGVkLWNwdS1saXN0IiwKKwkJCQkmY3B1X21waWRfbGlzdCwKKwkJCQkoc2l6ZW9mKGNwdV9tcGlkX2xpc3QubnVtX2VudHJpZXMpICoKKwkJCQkoY3B1X21waWRfbGlzdC5udW1fZW50cmllcyArIDEpKSk7CisJCWlmIChlcnIgPCAwKSB7CisJCQlFUlJPUigiRmFpbGVkIHRvIHNldCBpc29sYXRlZC1jcHUtbGlzdCwgZXJyb3I6ICVkXG4iLAorCQkJICAgICAgZXJyKTsKKwkJfQorCX0KKwogCWZsdXNoX2RjYWNoZV9yYW5nZSgodWludHB0cl90KWZkdCwgbWVtX3BhcmFtcy0+aW1hZ2VfaW5mby5pbWFnZV9zaXplKTsKIAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfcGxhdC5jIGIvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfcGxhdC5jCmluZGV4IDIwYzUyZTkuLmEwMTk5YzMgMTAwNjQ0Ci0tLSBhL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpX3BsYXQuYworKysgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaV9wbGF0LmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjEsIEFybSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiwgQXJtIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTg5LDYgKzg5LDcgQEAKIGNvbnN0IG1tYXBfcmVnaW9uX3QgcGxhdF9hcm1fc2VjdXJlX3BhcnRpdGlvbl9tbWFwW10gPSB7CiAJUExBVF9BUk1fU0VDVVJFX01BUF9TWVNURU1SRUcsCiAJUExBVF9BUk1fU0VDVVJFX01BUF9OT1IyLAorCVNPQ19QTEFURk9STV9TRUNVUkVfVUFSVCwKIAlQTEFUX0FSTV9TRUNVUkVfTUFQX0RFVklDRSwKIAlBUk1fU1BfSU1BR0VfTU1BUCwKIAlBUk1fU1BfSU1BR0VfTlNfQlVGX01NQVAsCmRpZmYgLS1naXQgYS9wbGF0L2FybS9jc3Mvc2dpL3NnaV9wbGF0X3YyLmMgYi9wbGF0L2FybS9jc3Mvc2dpL3NnaV9wbGF0X3YyLmMKaW5kZXggMWEyYTk2Ni4uY2VmNTM0NSAxMDA2NDQKLS0tIGEvcGxhdC9hcm0vY3NzL3NnaS9zZ2lfcGxhdF92Mi5jCisrKyBiL3BsYXQvYXJtL2Nzcy9zZ2kvc2dpX3BsYXRfdjIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiwgQVJNIExpbWl0ZWQgYW5kIENvbnRyaWJ1dG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlCiAgKi8KQEAgLTgzLDYgKzgzLDcgQEAKIGNvbnN0IG1tYXBfcmVnaW9uX3QgcGxhdF9hcm1fc2VjdXJlX3BhcnRpdGlvbl9tbWFwW10gPSB7CiAJUExBVF9BUk1fU0VDVVJFX01BUF9TWVNURU1SRUcsCiAJUExBVF9BUk1fU0VDVVJFX01BUF9OT1IyLAorCVNPQ19QTEFURk9STV9TRUNVUkVfVUFSVCwKIAlTT0NfUExBVEZPUk1fUEVSSVBIX01BUF9ERVZJQ0VfVVNFUiwKIAlBUk1fU1BfSU1BR0VfTU1BUCwKIAlBUk1fU1BfSU1BR0VfTlNfQlVGX01NQVAsCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuYyBiL3BsYXQveGlsaW54L2NvbW1vbi9pcGlfbWFpbGJveF9zZXJ2aWNlL2lwaV9tYWlsYm94X3N2Yy5jCmluZGV4IGY1MzExNTguLmE0NmFjODAgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L2NvbW1vbi9pcGlfbWFpbGJveF9zZXJ2aWNlL2lwaV9tYWlsYm94X3N2Yy5jCisrKyBiL3BsYXQveGlsaW54L2NvbW1vbi9pcGlfbWFpbGJveF9zZXJ2aWNlL2lwaV9tYWlsYm94X3N2Yy5jCkBAIC02NCw3ICs2NCw3IEBACiAgKiBmdW5jdGlvbiB3aXRoIHJ0X3N2Y19oYW5kbGUgc2lnbmF0dXJlCiAgKi8KIHVpbnQ2NF90IGlwaV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsCi0JCQkgdWludDY0X3QgeDMsIHVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsCisJCQkgdWludDY0X3QgeDMsIHVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsCiAJCQkgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKIHsKIAlpbnQgcmV0OwpkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvY29tbW9uL2lwaV9tYWlsYm94X3NlcnZpY2UvaXBpX21haWxib3hfc3ZjLmggYi9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuaAppbmRleCAxMDY4MmQ4Li5hZjEzZGI5IDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuaAorKysgYi9wbGF0L3hpbGlueC9jb21tb24vaXBpX21haWxib3hfc2VydmljZS9pcGlfbWFpbGJveF9zdmMuaApAQCAtMzMsNyArMzMsNyBAQAogCiAvKiBJUEkgU01DIGhhbmRsZXIgKi8KIHVpbnQ2NF90IGlwaV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsCi0JCQkgdWludDY0X3QgeDMsIHVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKKwkJCSB1aW50NjRfdCB4MywgdWludDY0X3QgeDQsIGNvbnN0IHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLAogCQkJIHVpbnQ2NF90IGZsYWdzKTsKIAogI2VuZGlmIC8qIElQSV9NQUlMQk9YX1NWQ19IICovCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvYWFyY2g2NC92ZXJzYWxfY29tbW9uLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvYWFyY2g2NC92ZXJzYWxfY29tbW9uLmMKaW5kZXggODk3ZWQ1OS4uZjU1Y2RlOSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL2FhcmNoNjQvdmVyc2FsX2NvbW1vbi5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9hYXJjaDY0L3ZlcnNhbF9jb21tb24uYwpAQCAtNDcsNyArNDcsNyBAQAogCWdlbmVyaWNfZGVsYXlfdGltZXJfaW5pdCgpOwogfQogCi11bnNpZ25lZCBpbnQgcGxhdF9nZXRfc3lzY250X2ZyZXEyKHZvaWQpCit1aW50MzJfdCBwbGF0X2dldF9zeXNjbnRfZnJlcTIodm9pZCkKIHsKIAlyZXR1cm4gVkVSU0FMX0NQVV9DTE9DSzsKIH0KZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9ibDMxX3ZlcnNhbF9zZXR1cC5jIGIvcGxhdC94aWxpbngvdmVyc2FsL2JsMzFfdmVyc2FsX3NldHVwLmMKaW5kZXggNzhiZmMyOS4uMGQwZDU5OCAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL2JsMzFfdmVyc2FsX3NldHVwLmMKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL2JsMzFfdmVyc2FsX3NldHVwLmMKQEAgLTY3LDE5ICs2NywxOSBAQAogCWlmIChWRVJTQUxfQ09OU09MRV9JUyhwbDAxMSkgfHwgKFZFUlNBTF9DT05TT0xFX0lTKHBsMDExXzEpKSkgewogCQlzdGF0aWMgY29uc29sZV90IHZlcnNhbF9ydW50aW1lX2NvbnNvbGU7CiAJCS8qIEluaXRpYWxpemUgdGhlIGNvbnNvbGUgdG8gcHJvdmlkZSBlYXJseSBkZWJ1ZyBzdXBwb3J0ICovCi0JCWludCByYyA9IGNvbnNvbGVfcGwwMTFfcmVnaXN0ZXIoKHVuc2lnbmVkIGxvbmcpVkVSU0FMX1VBUlRfQkFTRSwKLQkJCQkJCSh1bnNpZ25lZCBpbnQpVkVSU0FMX1VBUlRfQ0xPQ0ssCi0JCQkJCQkodW5zaWduZWQgaW50KVZFUlNBTF9VQVJUX0JBVURSQVRFLAorCQlpbnQzMl90IHJjID0gY29uc29sZV9wbDAxMV9yZWdpc3RlcigodW5zaWduZWQgbG9uZylWRVJTQUxfVUFSVF9CQVNFLAorCQkJCQkJKHVpbnQzMl90KVZFUlNBTF9VQVJUX0NMT0NLLAorCQkJCQkJKHVpbnQzMl90KVZFUlNBTF9VQVJUX0JBVURSQVRFLAogCQkJCQkJJnZlcnNhbF9ydW50aW1lX2NvbnNvbGUpOwogCQlpZiAocmMgPT0gMCkgewogCQkJcGFuaWMoKTsKIAkJfQogCi0JCWNvbnNvbGVfc2V0X3Njb3BlKCZ2ZXJzYWxfcnVudGltZV9jb25zb2xlLCAodW5zaWduZWQgaW50KShDT05TT0xFX0ZMQUdfQk9PVCB8CisJCWNvbnNvbGVfc2V0X3Njb3BlKCZ2ZXJzYWxfcnVudGltZV9jb25zb2xlLCAodWludDMyX3QpKENPTlNPTEVfRkxBR19CT09UIHwKIAkJCQkgIENPTlNPTEVfRkxBR19SVU5USU1FKSk7CiAJfSBlbHNlIGlmIChWRVJTQUxfQ09OU09MRV9JUyhkY2MpKSB7CiAJCS8qIEluaXRpYWxpemUgdGhlIGRjYyBjb25zb2xlIGZvciBkZWJ1ZyAqLwotCQlpbnQgcmMgPSBjb25zb2xlX2RjY19yZWdpc3RlcigpOworCQlpbnQzMl90IHJjID0gY29uc29sZV9kY2NfcmVnaXN0ZXIoKTsKIAkJaWYgKHJjID09IDApIHsKIAkJCXBhbmljKCk7CiAJCX0KQEAgLTEyNiw3ICsxMjYsNyBAQAogCiBzdGF0aWMgaW50ZXJydXB0X3R5cGVfaGFuZGxlcl90IHR5cGVfZWwzX2ludGVycnVwdF9oYW5kbGVyOwogCi1pbnQgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlkLCBpbnRlcnJ1cHRfdHlwZV9oYW5kbGVyX3QgaGFuZGxlcikKK2ludDMyX3QgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlkLCBpbnRlcnJ1cHRfdHlwZV9oYW5kbGVyX3QgaGFuZGxlcikKIHsKIAkvKiBWYWxpZGF0ZSAnaGFuZGxlcicqLwogCWlmIChoYW5kbGVyID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9pbmNsdWRlL3BsYXRfcHJpdmF0ZS5oIGIvcGxhdC94aWxpbngvdmVyc2FsL2luY2x1ZGUvcGxhdF9wcml2YXRlLmgKaW5kZXggZDEyZDEzYS4uMTA5Yzk1ZSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL2luY2x1ZGUvcGxhdF9wcml2YXRlLmgKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL2luY2x1ZGUvcGxhdF9wcml2YXRlLmgKQEAgLTIyLDExICsyMiwxMSBAQAogdm9pZCBwbGF0X3ZlcnNhbF9naWNfc2F2ZSh2b2lkKTsKIHZvaWQgcGxhdF92ZXJzYWxfZ2ljX3Jlc3VtZSh2b2lkKTsKIAotdW5zaWduZWQgaW50IHZlcnNhbF9jYWxjX2NvcmVfcG9zKHVfcmVnaXN0ZXJfdCBtcGlkcik7Cit1aW50MzJfdCB2ZXJzYWxfY2FsY19jb3JlX3Bvcyh1X3JlZ2lzdGVyX3QgbXBpZHIpOwogLyoKICAqIFJlZ2lzdGVyIGhhbmRsZXIgdG8gc3BlY2lmaWMgR0lDIGVudHJhbmNlCiAgKiBmb3IgSU5UUl9UWVBFX0VMMyB0eXBlIG9mIGludGVycnVwdAogICovCi1pbnQgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlycSwgaW50ZXJydXB0X3R5cGVfaGFuZGxlcl90IGZpcV9oYW5kbGVyKTsKK2ludDMyX3QgcmVxdWVzdF9pbnRyX3R5cGVfZWwzKHVpbnQzMl90IGlycSwgaW50ZXJydXB0X3R5cGVfaGFuZGxlcl90IGZpcV9oYW5kbGVyKTsKIAogI2VuZGlmIC8qIFBMQVRfUFJJVkFURV9IICovCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF9wc2NpLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF9wc2NpLmMKaW5kZXggZWIwNWU1OC4uYWNlY2JiMSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BsYXRfcHNjaS5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3BzY2kuYwpAQCAtMTksOSArMTksOSBAQAogCiBzdGF0aWMgdWludHB0cl90IHZlcnNhbF9zZWNfZW50cnk7CiAKLXN0YXRpYyBpbnQgdmVyc2FsX3B3cl9kb21haW5fb24odV9yZWdpc3Rlcl90IG1waWRyKQorc3RhdGljIGludDMyX3QgdmVyc2FsX3B3cl9kb21haW5fb24odV9yZWdpc3Rlcl90IG1waWRyKQogewotCWludCBjcHVfaWQgPSBwbGF0X2NvcmVfcG9zX2J5X21waWRyKG1waWRyKTsKKwlpbnQzMl90IGNwdV9pZCA9IHBsYXRfY29yZV9wb3NfYnlfbXBpZHIobXBpZHIpOwogCWNvbnN0IHN0cnVjdCBwbV9wcm9jICpwcm9jOwogCiAJVkVSQk9TRSgiJXM6IG1waWRyOiAweCVseFxuIiwgX19mdW5jX18sIG1waWRyKTsKQEAgLTMwLDcgKzMwLDcgQEAKIAkJcmV0dXJuIFBTQ0lfRV9JTlRFUk5fRkFJTDsKIAl9CiAKLQlwcm9jID0gcG1fZ2V0X3Byb2MoKHVuc2lnbmVkIGludCljcHVfaWQpOworCXByb2MgPSBwbV9nZXRfcHJvYygodWludDMyX3QpY3B1X2lkKTsKIAogCS8qIFNlbmQgcmVxdWVzdCB0byBQTUMgdG8gd2FrZSB1cCBzZWxlY3RlZCBBQ1BVIGNvcmUgKi8KIAkodm9pZClwbV9yZXFfd2FrZXVwKHByb2MtPm5vZGVfaWQsICh2ZXJzYWxfc2VjX2VudHJ5ICYgMHhGRkZGRkZGRlUpIHwgMHgxVSwKQEAgLTUwLDggKzUwLDggQEAKICAqLwogc3RhdGljIHZvaWQgdmVyc2FsX3B3cl9kb21haW5fc3VzcGVuZChjb25zdCBwc2NpX3Bvd2VyX3N0YXRlX3QgKnRhcmdldF9zdGF0ZSkKIHsKLQl1bnNpZ25lZCBpbnQgc3RhdGU7Ci0JdW5zaWduZWQgaW50IGNwdV9pZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKKwl1aW50MzJfdCBzdGF0ZTsKKwl1aW50MzJfdCBjcHVfaWQgPSBwbGF0X215X2NvcmVfcG9zKCk7CiAJY29uc3Qgc3RydWN0IHBtX3Byb2MgKnByb2MgPSBwbV9nZXRfcHJvYyhjcHVfaWQpOwogCiAJZm9yIChzaXplX3QgaSA9IDBVOyBpIDw9IFBMQVRfTUFYX1BXUl9MVkw7IGkrKykgewpAQCAtODgsNyArODgsNyBAQAogc3RhdGljIHZvaWQgdmVyc2FsX3B3cl9kb21haW5fc3VzcGVuZF9maW5pc2goCiAJCQkJCWNvbnN0IHBzY2lfcG93ZXJfc3RhdGVfdCAqdGFyZ2V0X3N0YXRlKQogewotCXVuc2lnbmVkIGludCBjcHVfaWQgPSBwbGF0X215X2NvcmVfcG9zKCk7CisJdWludDMyX3QgY3B1X2lkID0gcGxhdF9teV9jb3JlX3BvcygpOwogCWNvbnN0IHN0cnVjdCBwbV9wcm9jICpwcm9jID0gcG1fZ2V0X3Byb2MoY3B1X2lkKTsKIAogCWZvciAoc2l6ZV90IGkgPSAwVTsgaSA8PSBQTEFUX01BWF9QV1JfTFZMOyBpKyspIHsKQEAgLTE1Niw3ICsxNTYsNyBAQAogICovCiBzdGF0aWMgdm9pZCB2ZXJzYWxfcHdyX2RvbWFpbl9vZmYoY29uc3QgcHNjaV9wb3dlcl9zdGF0ZV90ICp0YXJnZXRfc3RhdGUpCiB7Ci0JdW5zaWduZWQgaW50IGNwdV9pZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKKwl1aW50MzJfdCBjcHVfaWQgPSBwbGF0X215X2NvcmVfcG9zKCk7CiAJY29uc3Qgc3RydWN0IHBtX3Byb2MgKnByb2MgPSBwbV9nZXRfcHJvYyhjcHVfaWQpOwogCiAJZm9yIChzaXplX3QgaSA9IDBVOyBpIDw9IFBMQVRfTUFYX1BXUl9MVkw7IGkrKykgewpAQCAtMTg4LDEyICsxODgsMTIgQEAKICAqCiAgKiBAcmV0dXJuCVJldHVybnMgc3RhdHVzLCBlaXRoZXIgc3VjY2VzcyBvciByZWFzb24KICAqLwotc3RhdGljIGludCB2ZXJzYWxfdmFsaWRhdGVfcG93ZXJfc3RhdGUodW5zaWduZWQgaW50IHBvd2VyX3N0YXRlLAorc3RhdGljIGludDMyX3QgdmVyc2FsX3ZhbGlkYXRlX3Bvd2VyX3N0YXRlKHVpbnQzMl90IHBvd2VyX3N0YXRlLAogCQkJCSAgICAgICBwc2NpX3Bvd2VyX3N0YXRlX3QgKnJlcV9zdGF0ZSkKIHsKIAlWRVJCT1NFKCIlczogcG93ZXJfc3RhdGU6IDB4JXhcbiIsIF9fZnVuY19fLCBwb3dlcl9zdGF0ZSk7CiAKLQl1bnNpZ25lZCBpbnQgcHN0YXRlID0gcHNjaV9nZXRfcHN0YXRlX3R5cGUocG93ZXJfc3RhdGUpOworCXVpbnQzMl90IHBzdGF0ZSA9IHBzY2lfZ2V0X3BzdGF0ZV90eXBlKHBvd2VyX3N0YXRlKTsKIAogCWFzc2VydChyZXFfc3RhdGUpOwogCmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF90b3BvbG9neS5jIGIvcGxhdC94aWxpbngvdmVyc2FsL3BsYXRfdG9wb2xvZ3kuYwppbmRleCA2NmQ0ZmFlLi42YTk0NTQ0IDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF90b3BvbG9neS5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3RvcG9sb2d5LmMKQEAgLTYsOSArNiw5IEBACiAKICNpbmNsdWRlIDxwbGF0Zm9ybV9kZWYuaD4KIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGxhdF9wb3dlcl9kb21haW5fdHJlZV9kZXNjW10gPSB7MSwgUExBVEZPUk1fQ09SRV9DT1VOVH07CitzdGF0aWMgY29uc3QgdWludDhfdCBwbGF0X3Bvd2VyX2RvbWFpbl90cmVlX2Rlc2NbXSA9IHsxLCBQTEFURk9STV9DT1JFX0NPVU5UfTsKIAotY29uc3QgdW5zaWduZWQgY2hhciAqcGxhdF9nZXRfcG93ZXJfZG9tYWluX3RyZWVfZGVzYyh2b2lkKQorY29uc3QgdWludDhfdCAqcGxhdF9nZXRfcG93ZXJfZG9tYWluX3RyZWVfZGVzYyh2b2lkKQogewogCXJldHVybiBwbGF0X3Bvd2VyX2RvbWFpbl90cmVlX2Rlc2M7CiB9CmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcGxhdF92ZXJzYWwuYyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3ZlcnNhbC5jCmluZGV4IDU0YzM1YjYuLjEzMmM3YjcgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3ZlcnNhbC5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbGF0X3ZlcnNhbC5jCkBAIC03LDcgKzcsNyBAQAogI2luY2x1ZGUgPHBsYXRfcHJpdmF0ZS5oPgogI2luY2x1ZGUgPHBsYXQvY29tbW9uL3BsYXRmb3JtLmg+CiAKLWludCBwbGF0X2NvcmVfcG9zX2J5X21waWRyKHVfcmVnaXN0ZXJfdCBtcGlkcikKK2ludDMyX3QgcGxhdF9jb3JlX3Bvc19ieV9tcGlkcih1X3JlZ2lzdGVyX3QgbXBpZHIpCiB7CiAJaWYgKChtcGlkciAmIE1QSURSX0NMVVNURVJfTUFTSykgIT0gMFUpIHsKIAkJcmV0dXJuIC0xOwpAQCAtMTcsNSArMTcsNSBAQAogCQlyZXR1cm4gLTE7CiAJfQogCi0JcmV0dXJuIChpbnQpdmVyc2FsX2NhbGNfY29yZV9wb3MobXBpZHIpOworCXJldHVybiAoaW50MzJfdCl2ZXJzYWxfY2FsY19jb3JlX3BvcyhtcGlkcik7CiB9CmRpZmYgLS1naXQgYS9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9hcGlfc3lzLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9hcGlfc3lzLmMKaW5kZXggMDQyNThjYy4uZGI3ODA0OSAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fYXBpX3N5cy5jCisrKyBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2FwaV9zeXMuYwpAQCAtMjgsMTQgKzI4LDE0IEBACiAjZGVmaW5lIE1PRFVMRV9JRF9NQVNLCQkweDAwMDBmZjAwCiAKIC8qIGRlZmF1bHQgc2h1dGRvd24vcmVib290IHNjb3BlIGlzIHN5c3RlbSgyKSAqLwotc3RhdGljIHVuc2lnbmVkIGludCBwbV9zaHV0ZG93bl9zY29wZSA9IFhQTV9TSFVURE9XTl9TVUJUWVBFX1JTVF9TWVNURU07CitzdGF0aWMgdWludDMyX3QgcG1fc2h1dGRvd25fc2NvcGUgPSBYUE1fU0hVVERPV05fU1VCVFlQRV9SU1RfU1lTVEVNOwogCiAvKioKICAqIHBtX2dldF9zaHV0ZG93bl9zY29wZSgpIC0gR2V0IHRoZSBjdXJyZW50bHkgc2V0IHNodXRkb3duIHNjb3BlCiAgKgogICogQHJldHVybglTaHV0ZG93biBzY29wZSB2YWx1ZQogICovCi11bnNpZ25lZCBpbnQgcG1fZ2V0X3NodXRkb3duX3Njb3BlKHZvaWQpCit1aW50MzJfdCBwbV9nZXRfc2h1dGRvd25fc2NvcGUodm9pZCkKIHsKIAlyZXR1cm4gcG1fc2h1dGRvd25fc2NvcGU7CiB9CkBAIC05Myw4ICs5Myw5IEBACiAJbW9kdWxlX2lkID0gKHgwICYgTU9EVUxFX0lEX01BU0spID4+IDg7CiAKIAkvL2RlZmF1bHQgbW9kdWxlIGlkIGlzIGZvciBMSUJQTQotCWlmIChtb2R1bGVfaWQgPT0gMCkKKwlpZiAobW9kdWxlX2lkID09IDApIHsKIAkJbW9kdWxlX2lkID0gTElCUE1fTU9EVUxFX0lEOworCX0KIAogCVBNX1BBQ0tfUEFZTE9BRDYocGF5bG9hZCwgbW9kdWxlX2lkLCBmbGFnLCB4MCwgeDEsIHgyLCB4MywgeDQsIHg1KTsKIAlyZXR1cm4gcG1faXBpX3NlbmRfc3luYyhwcmltYXJ5X3Byb2MsIHBheWxvYWQsICh1aW50MzJfdCAqKXJlc3VsdCwgUEFZTE9BRF9BUkdfQ05UKTsKQEAgLTExNSwxMiArMTE2LDEyIEBACiAgKiBAcmV0dXJuCVJldHVybnMgc3RhdHVzLCBlaXRoZXIgc3VjY2VzcyBvciBlcnJvcityZWFzb24KICAqLwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX3NlbGZfc3VzcGVuZCh1aW50MzJfdCBuaWQsCi0JCQkJICAgdW5zaWduZWQgaW50IGxhdGVuY3ksCi0JCQkJICAgdW5zaWduZWQgaW50IHN0YXRlLAorCQkJCSAgIHVpbnQzMl90IGxhdGVuY3ksCisJCQkJICAgdWludDMyX3Qgc3RhdGUsCiAJCQkJICAgdWludHB0cl90IGFkZHJlc3MsIHVpbnQzMl90IGZsYWcpCiB7CiAJdWludDMyX3QgcGF5bG9hZFtQQVlMT0FEX0FSR19DTlRdOwotCXVuc2lnbmVkIGludCBjcHVpZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKKwl1aW50MzJfdCBjcHVpZCA9IHBsYXRfbXlfY29yZV9wb3MoKTsKIAljb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYyA9IHBtX2dldF9wcm9jKGNwdWlkKTsKIAogCWlmIChwcm9jID09IE5VTEwpIHsKQEAgLTE4Miw3ICsxODMsNyBAQAogICogQHJldHVybglSZXR1cm5zIHN0YXR1cywgZWl0aGVyIHN1Y2Nlc3Mgb3IgZXJyb3IrcmVhc29uCiAgKi8KIGVudW0gcG1fcmV0X3N0YXR1cyBwbV9yZXFfc3VzcGVuZCh1aW50MzJfdCB0YXJnZXQsIHVpbnQ4X3QgYWNrLAotCQkJCSAgdW5zaWduZWQgaW50IGxhdGVuY3ksIHVuc2lnbmVkIGludCBzdGF0ZSwKKwkJCQkgIHVpbnQzMl90IGxhdGVuY3ksIHVpbnQzMl90IHN0YXRlLAogCQkJCSAgdWludDMyX3QgZmxhZykKIHsKIAl1aW50MzJfdCBwYXlsb2FkW1BBWUxPQURfQVJHX0NOVF07CkBAIC01MDEsNyArNTAyLDcgQEAKIAkJCXJldHVybiBQTV9SRVRfRVJST1JfQVJHUzsKIAkJfQogCQlnaWNkX3dyaXRlX2lyb3V0ZXIoZ2ljdjNfZHJpdmVyX2RhdGEtPmdpY2RfYmFzZSwKLQkJCQkgICh1bnNpZ25lZCBpbnQpUExBVF9WRVJTQUxfSVBJX0lSUSwgTU9ERSk7CisJCQkJICAodWludDMyX3QpUExBVF9WRVJTQUxfSVBJX0lSUSwgTU9ERSk7CiAJCXJldCA9ICBQTV9SRVRfU1VDQ0VTUzsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2FwaV9zeXMuaCBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2FwaV9zeXMuaAppbmRleCA4NmE0NmQwLi44MzQzNTMzIDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9hcGlfc3lzLmgKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fYXBpX3N5cy5oCkBAIC0xOCwxNCArMTgsMTQgQEAKIAkJCQkgICAgICAgdWludDMyX3QgeDIsIHVpbnQzMl90IHgzLCB1aW50MzJfdCB4NCwKIAkJCQkgICAgICAgdWludDMyX3QgeDUsIHVpbnQ2NF90ICpyZXN1bHQpOwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX3NlbGZfc3VzcGVuZCh1aW50MzJfdCBuaWQsCi0JCQkJICAgdW5zaWduZWQgaW50IGxhdGVuY3ksCi0JCQkJICAgdW5zaWduZWQgaW50IHN0YXRlLAorCQkJCSAgIHVpbnQzMl90IGxhdGVuY3ksCisJCQkJICAgdWludDMyX3Qgc3RhdGUsCiAJCQkJICAgdWludHB0cl90IGFkZHJlc3MsIHVpbnQzMl90IGZsYWcpOwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX2Fib3J0X3N1c3BlbmQoZW51bSBwbV9hYm9ydF9yZWFzb24gcmVhc29uLCB1aW50MzJfdCBmbGFnKTsKIGVudW0gcG1fcmV0X3N0YXR1cyBwbV9yZXFfc3VzcGVuZCh1aW50MzJfdCB0YXJnZXQsCiAJCQkJICB1aW50OF90IGFjaywKLQkJCQkgIHVuc2lnbmVkIGludCBsYXRlbmN5LAotCQkJCSAgdW5zaWduZWQgaW50IHN0YXRlLCB1aW50MzJfdCBmbGFnKTsKKwkJCQkgIHVpbnQzMl90IGxhdGVuY3ksCisJCQkJICB1aW50MzJfdCBzdGF0ZSwgdWludDMyX3QgZmxhZyk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fcmVxX3dha2V1cCh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHNldF9hZGRyZXNzLAogCQkJCSB1aW50cHRyX3QgYWRkcmVzcywgdWludDhfdCBhY2ssIHVpbnQzMl90IGZsYWcpOwogZW51bSBwbV9yZXRfc3RhdHVzIHBtX3NldF93YWtldXBfc291cmNlKHVpbnQzMl90IHRhcmdldCwgdWludDMyX3QgZGV2aWNlX2lkLApAQCAtNDgsNyArNDgsNyBAQAogCQkJCXVpbnQzMl90ICp2YWx1ZSwgdWludDMyX3QgZmxhZyk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fcXVlcnlfZGF0YSh1aW50MzJfdCBxaWQsIHVpbnQzMl90IGFyZzEsIHVpbnQzMl90IGFyZzIsCiAJCQkJIHVpbnQzMl90IGFyZzMsIHVpbnQzMl90ICpkYXRhLCB1aW50MzJfdCBmbGFnKTsKLXVuc2lnbmVkIGludCBwbV9nZXRfc2h1dGRvd25fc2NvcGUodm9pZCk7Cit1aW50MzJfdCBwbV9nZXRfc2h1dGRvd25fc2NvcGUodm9pZCk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fZmVhdHVyZV9jaGVjayh1aW50MzJfdCBhcGlfaWQsIHVpbnQzMl90ICpyZXRfcGF5bG9hZCwKIAkJCQkgICAgdWludDMyX3QgZmxhZyk7CiBlbnVtIHBtX3JldF9zdGF0dXMgcG1fbG9hZF9wZGkodWludDMyX3Qgc3JjLCB1aW50MzJfdCBhZGRyZXNzX2xvdywKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX2NsaWVudC5jIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fY2xpZW50LmMKaW5kZXggNDAxMmYzMi4uY2U1ZTUzMyAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fY2xpZW50LmMKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fY2xpZW50LmMKQEAgLTEwNSw3ICsxMDUsNyBAQAogICoKICAqIFJldHVybjoJUE0gbm9kZSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzcGVjaWZpZWQgaW50ZXJydXB0CiAgKi8KLXN0YXRpYyBlbnVtIHBtX2RldmljZV9ub2RlX2lkeCBpcnFfdG9fcG1fbm9kZV9pZHgodW5zaWduZWQgaW50IGlycSkKK3N0YXRpYyBlbnVtIHBtX2RldmljZV9ub2RlX2lkeCBpcnFfdG9fcG1fbm9kZV9pZHgodWludDMyX3QgaXJxKQogewogCWFzc2VydChpcnEgPD0gSVJRX01BWCk7CiAJcmV0dXJuIGlycV9ub2RlX21hcFtpcnFdOwpAQCAtMTcwLDcgKzE3MCw3IEBACiAgKiByZXF1aXJlZCBwcmlvciB0byBzZW5kaW5nIHN1c3BlbmQgcmVxdWVzdCB0byBQTVUKICAqIEFjdGlvbnMgdGFrZW4gZGVwZW5kIG9uIHRoZSBzdGF0ZSBzeXN0ZW0gaXMgc3VzcGVuZGluZyB0by4KICAqLwotdm9pZCBwbV9jbGllbnRfc3VzcGVuZChjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYywgdW5zaWduZWQgaW50IHN0YXRlKQordm9pZCBwbV9jbGllbnRfc3VzcGVuZChjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYywgdWludDMyX3Qgc3RhdGUpCiB7CiAJYmFrZXJ5X2xvY2tfZ2V0KCZwbV9jbGllbnRfc2VjdXJlX2xvY2spOwogCkBAIC0yMTEsNyArMjExLDcgQEAKICAqCiAgKiBSZXR1cm46IHRoZSBjcHUgSUQgKHN0YXJ0aW5nIGZyb20gMCkgZm9yIHRoZSBzdWJzeXN0ZW0KICAqLwotc3RhdGljIHVuc2lnbmVkIGludCBwbV9nZXRfY3B1aWQodWludDMyX3QgbmlkKQorc3RhdGljIHVpbnQzMl90IHBtX2dldF9jcHVpZCh1aW50MzJfdCBuaWQpCiB7CiAJZm9yIChzaXplX3QgaSA9IDBVOyBpIDwgQVJSQVlfU0laRShwbV9wcm9jc19hbGwpOyBpKyspIHsKIAkJaWYgKHBtX3Byb2NzX2FsbFtpXS5ub2RlX2lkID09IG5pZCkgewpAQCAtMjI5LDcgKzIyOSw3IEBACiAgKi8KIHZvaWQgcG1fY2xpZW50X3dha2V1cChjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcHJvYykKIHsKLQl1bnNpZ25lZCBpbnQgY3B1aWQgPSBwbV9nZXRfY3B1aWQocHJvYy0+bm9kZV9pZCk7CisJdWludDMyX3QgY3B1aWQgPSBwbV9nZXRfY3B1aWQocHJvYy0+bm9kZV9pZCk7CiAKIAlpZiAoY3B1aWQgPT0gVU5ERUZJTkVEX0NQVUlEKSB7CiAJCXJldHVybjsKQEAgLTI1MSw3ICsyNTEsNyBAQAogICoKICAqIFJldHVybjogcG9pbnRlciB0byBhIHByb2Mgc3RydWN0dXJlIGlmIHByb2MgaXMgZm91bmQsIG90aGVyd2lzZSBOVUxMCiAgKi8KLWNvbnN0IHN0cnVjdCBwbV9wcm9jICpwbV9nZXRfcHJvYyh1bnNpZ25lZCBpbnQgY3B1aWQpCitjb25zdCBzdHJ1Y3QgcG1fcHJvYyAqcG1fZ2V0X3Byb2ModWludDMyX3QgY3B1aWQpCiB7CiAJaWYgKGNwdWlkIDwgQVJSQVlfU0laRShwbV9wcm9jc19hbGwpKSB7CiAJCXJldHVybiAmcG1fcHJvY3NfYWxsW2NwdWlkXTsKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMgYi9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5jCmluZGV4IDI0YjY4ZTcuLmY0ZDA0YjggMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMKKysrIGIvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uYwpAQCAtMjUsMTkgKzI1LDE5IEBACiAKIC8qIHBtX3VwID0gdHJ1ZSAtIFVQLCBwbV91cCA9IGZhbHNlIC0gRE9XTiAqLwogc3RhdGljIGJvb2wgcG1fdXA7Ci1zdGF0aWMgdW5zaWduZWQgaW50IHNnaSA9ICh1bnNpZ25lZCBpbnQpSU5WQUxJRF9TR0k7CitzdGF0aWMgdWludDMyX3Qgc2dpID0gKHVpbnQzMl90KUlOVkFMSURfU0dJOwogCiBzdGF0aWMgdWludDY0X3QgaXBpX2ZpcV9oYW5kbGVyKHVpbnQzMl90IGlkLCB1aW50MzJfdCBmbGFncywgdm9pZCAqaGFuZGxlLAogCQkJCXZvaWQgKmNvb2tpZSkKIHsKLQl1bnNpZ25lZCBpbnQgY3B1OwotCXVuc2lnbmVkIGludCByZWc7CisJdWludDMyX3QgY3B1OworCXVpbnQzMl90IHJlZzsKIAogCSh2b2lkKXBsYXRfaWNfYWNrbm93bGVkZ2VfaW50ZXJydXB0KCk7CiAJY3B1ID0gcGxhdF9teV9jb3JlX3BvcygpICsgMVU7CiAKLQlpZiAoKHVuc2lnbmVkIGludClzZ2kgIT0gKHVuc2lnbmVkIGludClJTlZBTElEX1NHSSkgewotCQlyZWcgPSAoY3B1IHwgKCh1bnNpZ25lZCBpbnQpc2dpIDw8ICh1bnNpZ25lZCBpbnQpWFNDVUdJQ19TR0lSX0VMMV9JTklUSURfU0hJRlQpKTsKKwlpZiAoKHVpbnQzMl90KXNnaSAhPSAodWludDMyX3QpSU5WQUxJRF9TR0kpIHsKKwkJcmVnID0gKGNwdSB8ICgodWludDMyX3Qpc2dpIDw8ICh1aW50MzJfdClYU0NVR0lDX1NHSVJfRUwxX0lOSVRJRF9TSElGVCkpOwogCQl3cml0ZV9pY2NfYXNnaTFyX2VsMShyZWcpOwogCX0KIApAQCAtNTksNyArNTksNyBAQAogICogVXBkYXRlIHRoZSBTR0kgbnVtYmVyIHRvIGJlIHVzZWQuCiAgKgogICovCi1pbnQgcG1fcmVnaXN0ZXJfc2dpKHVuc2lnbmVkIGludCBzZ2lfbnVtLCB1bnNpZ25lZCBpbnQgcmVzZXQpCitpbnQgcG1fcmVnaXN0ZXJfc2dpKHVpbnQzMl90IHNnaV9udW0sIHVpbnQzMl90IHJlc2V0KQogewogCWlmIChyZXNldCA9PSAxVSkgewogCQlzZ2kgPSBJTlZBTElEX1NHSTsKQEAgLTc0LDcgKzc0LDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0Jc2dpID0gKHVuc2lnbmVkIGludClzZ2lfbnVtOworCXNnaSA9ICh1aW50MzJfdClzZ2lfbnVtOwogCXJldHVybiAwOwogfQogCkBAIC05Myw3ICs5Myw3IEBACiAgKi8KIGludCBwbV9zZXR1cCh2b2lkKQogewotCWludCBzdGF0dXMsIHJldCA9IDA7CisJaW50MzJfdCBzdGF0dXMsIHJldCA9IDA7CiAKIAlzdGF0dXMgPSBwbV9pcGlfaW5pdChwcmltYXJ5X3Byb2MpOwogCkBAIC0yMzksNyArMjM5LDcgQEAKIAogCWNhc2UgVEZfQV9QTV9SRUdJU1RFUl9TR0k6CiAJewotCQlpbnQgcmV0OworCQlpbnQzMl90IHJldDsKIAogCQlyZXQgPSBwbV9yZWdpc3Rlcl9zZ2kocG1fYXJnWzBdLCBwbV9hcmdbMV0pOwogCQlpZiAocmV0ICE9IDApIHsKQEAgLTMyNCw3ICszMjQsNyBAQAogICogZnVuY3Rpb24gd2l0aCBydF9zdmNfaGFuZGxlIHNpZ25hdHVyZQogICovCiB1aW50NjRfdCBwbV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsIHVpbnQ2NF90IHgzLAotCQkJdWludDY0X3QgeDQsIHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwgdWludDY0X3QgZmxhZ3MpCiB7CiAJdWludHB0cl90IHJldDsKIAl1aW50MzJfdCBwbV9hcmdbUEFZTE9BRF9BUkdfQ05UXSA9IHswfTsKQEAgLTMzMiw4ICszMzIsOSBAQAogCXVpbnQzMl90IGFwaV9pZDsKIAogCS8qIEhhbmRsZSBjYXNlIHdoZXJlIFBNIHdhc24ndCBpbml0aWFsaXplZCBwcm9wZXJseSAqLwotCWlmICghcG1fdXApCisJaWYgKCFwbV91cCkgewogCQlTTUNfUkVUMShoYW5kbGUsIFNNQ19VTkspOworCX0KIAogCS8qCiAJICogTWFyayBCSVQyNCBwYXlsb2FkIChpLmUgMXN0IGJpdCBvZiBwbV9hcmdbM10gKSBhcyBub24tc2VjdXJlICgxKQpAQCAtMzUyLDE2ICszNTMsMTkgQEAKIAlhcGlfaWQgPSBzbWNfZmlkICYgRlVOQ0lEX05VTV9NQVNLOwogCiAJcmV0ID0gZWVtaV9mb3JfY29tcGF0aWJpbGl0eShhcGlfaWQsIHBtX2FyZywgaGFuZGxlLCBzZWN1cml0eV9mbGFnKTsKLQlpZiAocmV0ICE9ICh1aW50cHRyX3QpMCkKKwlpZiAocmV0ICE9ICh1aW50cHRyX3QpMCkgewogCQlyZXR1cm4gcmV0OworCX0KIAogCXJldCA9IGVlbWlfcHNjaV9kZWJ1Z2ZzX2hhbmRsZXIoYXBpX2lkLCBwbV9hcmcsIGhhbmRsZSwgZmxhZ3MpOwotCWlmIChyZXQgIT0gICh1aW50cHRyX3QpMCkKKwlpZiAocmV0ICE9ICAodWludHB0cl90KTApIHsKIAkJcmV0dXJuIHJldDsKKwl9CiAKIAlyZXQgPSBURl9BX3NwZWNpZmljX2hhbmRsZXIoYXBpX2lkLCBwbV9hcmcsIGhhbmRsZSwgc2VjdXJpdHlfZmxhZyk7Ci0JaWYgKHJldCAhPSAgKHVpbnRwdHJfdCkwKQorCWlmIChyZXQgIT0gICh1aW50cHRyX3QpMCkgewogCQlyZXR1cm4gcmV0OworCX0KIAogCXJldCA9IGVlbWlfaGFuZGxlcihhcGlfaWQsIHBtX2FyZywgaGFuZGxlLCBzZWN1cml0eV9mbGFnKTsKIApkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaCBiL3BsYXQveGlsaW54L3ZlcnNhbC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmgKaW5kZXggMmRmZjViMi4uYjZlNzY0ZiAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvdmVyc2FsL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaAorKysgYi9wbGF0L3hpbGlueC92ZXJzYWwvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5oCkBAIC05LDEwICs5LDEwIEBACiAKICNpbmNsdWRlIDxwbV9jb21tb24uaD4KIAotaW50IHBtX3NldHVwKHZvaWQpOworaW50MzJfdCBwbV9zZXR1cCh2b2lkKTsKIHVpbnQ2NF90IHBtX3NtY19oYW5kbGVyKHVpbnQzMl90IHNtY19maWQsIHVpbnQ2NF90IHgxLCB1aW50NjRfdCB4MiwgdWludDY0X3QgeDMsCi0JCQl1aW50NjRfdCB4NCwgdm9pZCAqY29va2llLCB2b2lkICpoYW5kbGUsCisJCQl1aW50NjRfdCB4NCwgY29uc3Qgdm9pZCAqY29va2llLCB2b2lkICpoYW5kbGUsCiAJCQl1aW50NjRfdCBmbGFncyk7CiAKLWludCBwbV9yZWdpc3Rlcl9zZ2kodW5zaWduZWQgaW50IHNnaV9udW0sIHVuc2lnbmVkIGludCByZXNldCk7CitpbnQzMl90IHBtX3JlZ2lzdGVyX3NnaSh1aW50MzJfdCBzZ2lfbnVtLCB1aW50MzJfdCByZXNldCk7CiAjZW5kaWYgLyogUE1fU1ZDX01BSU5fSCAqLwpkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvdmVyc2FsL3ZlcnNhbF9naWN2My5jIGIvcGxhdC94aWxpbngvdmVyc2FsL3ZlcnNhbF9naWN2My5jCmluZGV4IDA4ZTdjZjkuLmQ0MTA5MDYgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3ZlcnNhbC92ZXJzYWxfZ2ljdjMuYworKysgYi9wbGF0L3hpbGlueC92ZXJzYWwvdmVyc2FsX2dpY3YzLmMKQEAgLTUzLDcgKzUzLDcgQEAKICAqICAgLSBBbGwgQ1BVcyBpbXBsZW1lbnRlZCBpbiB0aGUgc3lzdGVtIGhhdmUgTVBJRFJfRUwxLk1UIGJpdCBzZXQ7CiAgKiAgIC0gTm8gQ1BVcyBpbXBsZW1lbnRlZCBpbiB0aGUgc3lzdGVtIHVzZSBhZmZpbml0eSBsZXZlbCAzLgogICovCi1zdGF0aWMgdW5zaWduZWQgaW50IHZlcnNhbF9naWN2M19tcGlkcl9oYXNoKHVfcmVnaXN0ZXJfdCBtcGlkcikKK3N0YXRpYyB1aW50MzJfdCB2ZXJzYWxfZ2ljdjNfbXBpZHJfaGFzaCh1X3JlZ2lzdGVyX3QgbXBpZHIpCiB7CiAJbXBpZHIgfD0gKHJlYWRfbXBpZHJfZWwxKCkgJiBNUElEUl9NVF9NQVNLKTsKIAlyZXR1cm4gdmVyc2FsX2NhbGNfY29yZV9wb3MobXBpZHIpOwpkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvenlucW1wL2luY2x1ZGUvcGxhdGZvcm1fZGVmLmggYi9wbGF0L3hpbGlueC96eW5xbXAvaW5jbHVkZS9wbGF0Zm9ybV9kZWYuaAppbmRleCA5YzE2MDBhLi42NmJiZjMwIDEwMDY0NAotLS0gYS9wbGF0L3hpbGlueC96eW5xbXAvaW5jbHVkZS9wbGF0Zm9ybV9kZWYuaAorKysgYi9wbGF0L3hpbGlueC96eW5xbXAvaW5jbHVkZS9wbGF0Zm9ybV9kZWYuaApAQCAtNDAsOCArNDAsOCBAQAogIyBkZWZpbmUgQkwzMV9CQVNFCQkJVSgweGZmZmVhMDAwKQogIyBkZWZpbmUgQkwzMV9MSU1JVAkJCVUoMHgxMDAwMDAwMDApCiAjZWxzZQotIyBkZWZpbmUgQkwzMV9CQVNFCQkJVSgweDEwMDApCi0jIGRlZmluZSBCTDMxX0xJTUlUCQkJVSgweDdmZmZmKQorIyBkZWZpbmUgQkwzMV9CQVNFCQkJVSgweGZmZjVhMDAwKQorIyBkZWZpbmUgQkwzMV9MSU1JVAkJCVUoMHgxMDAwMDAwMDApCiAjZW5kaWYKICNlbHNlCiAjIGRlZmluZSBCTDMxX0JBU0UJCQkoWllOUU1QX0FURl9NRU1fQkFTRSkKZGlmZiAtLWdpdCBhL3BsYXQveGlsaW54L3p5bnFtcC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMgYi9wbGF0L3hpbGlueC96eW5xbXAvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5jCmluZGV4IDk1M2JiNGEuLjQ5M2ZmODUgMTAwNjQ0Ci0tLSBhL3BsYXQveGlsaW54L3p5bnFtcC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmMKKysrIGIvcGxhdC94aWxpbngvenlucW1wL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAgKiBmdW5jdGlvbiB3aXRoIHJ0X3N2Y19oYW5kbGUgc2lnbmF0dXJlCiAgKi8KIHVpbnQ2NF90IHBtX3NtY19oYW5kbGVyKHVpbnQzMl90IHNtY19maWQsIHVpbnQ2NF90IHgxLCB1aW50NjRfdCB4MiwgdWludDY0X3QgeDMsCi0JCQl1aW50NjRfdCB4NCwgdm9pZCAqY29va2llLCB2b2lkICpoYW5kbGUsIHVpbnQ2NF90IGZsYWdzKQorCQkJdWludDY0X3QgeDQsIGNvbnN0IHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKIHsKIAllbnVtIHBtX3JldF9zdGF0dXMgcmV0OwogCXVpbnQzMl90IHBheWxvYWRbUEFZTE9BRF9BUkdfQ05UXTsKQEAgLTU3NSw3ICs1NzUsNyBAQAogICogZnVuY3Rpb24gd2l0aCBydF9zdmNfaGFuZGxlIHNpZ25hdHVyZQogICovCiB1aW50NjRfdCBlbV9zbWNfaGFuZGxlcih1aW50MzJfdCBzbWNfZmlkLCB1aW50NjRfdCB4MSwgdWludDY0X3QgeDIsIHVpbnQ2NF90IHgzLAotCQkJdWludDY0X3QgeDQsIHZvaWQgKmNvb2tpZSwgdm9pZCAqaGFuZGxlLCB1aW50NjRfdCBmbGFncykKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwgdWludDY0X3QgZmxhZ3MpCiB7CiAJZW51bSBwbV9yZXRfc3RhdHVzIHJldDsKIApkaWZmIC0tZ2l0IGEvcGxhdC94aWxpbngvenlucW1wL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaCBiL3BsYXQveGlsaW54L3p5bnFtcC9wbV9zZXJ2aWNlL3BtX3N2Y19tYWluLmgKaW5kZXggYWJhZGQ0MC4uOWNmZjNjYiAxMDA2NDQKLS0tIGEvcGxhdC94aWxpbngvenlucW1wL3BtX3NlcnZpY2UvcG1fc3ZjX21haW4uaAorKysgYi9wbGF0L3hpbGlueC96eW5xbXAvcG1fc2VydmljZS9wbV9zdmNfbWFpbi5oCkBAIC0xMSwxMCArMTEsMTAgQEAKIAogaW50IHBtX3NldHVwKHZvaWQpOwogdWludDY0X3QgcG1fc21jX2hhbmRsZXIodWludDMyX3Qgc21jX2ZpZCwgdWludDY0X3QgeDEsIHVpbnQ2NF90IHgyLCB1aW50NjRfdCB4MywKLQkJCXVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKIAkJCXVpbnQ2NF90IGZsYWdzKTsKIAogdWludDY0X3QgZW1fc21jX2hhbmRsZXIodWludDMyX3Qgc21jX2ZpZCwgdWludDY0X3QgeDEsIHVpbnQ2NF90IHgyLCB1aW50NjRfdCB4MywKLQkJCXVpbnQ2NF90IHg0LCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKKwkJCXVpbnQ2NF90IHg0LCBjb25zdCB2b2lkICpjb29raWUsIHZvaWQgKmhhbmRsZSwKIAkJCXVpbnQ2NF90IGZsYWdzKTsKICNlbmRpZiAvKiBQTV9TVkNfTUFJTl9IICovCmRpZmYgLS1naXQgYS90b29scy9jZXJ0X2NyZWF0ZS9NYWtlZmlsZSBiL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlCmluZGV4IGNhNTQ4YjguLmQ5NTEyODYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlCisrKyBiL3Rvb2xzL2NlcnRfY3JlYXRlL01ha2VmaWxlCkBAIC0zNSw2ICszNSw4IEBACiAgIGluY2x1ZGUgc3JjL3RiYnIvdGJici5tawogZWxzZSBpZmVxICgke0NPVH0sZHVhbHJvb3QpCiAgIGluY2x1ZGUgc3JjL2R1YWxyb290L2NvdC5taworZWxzZSBpZmVxICgke0NPVH0sY2NhKQorICBpbmNsdWRlIHNyYy9jY2EvY290Lm1rCiBlbHNlCiAgICQoZXJyb3IgVW5rbm93biBjaGFpbiBvZiB0cnVzdCAke0NPVH0pCiBlbmRpZgpkaWZmIC0tZ2l0IGEvdG9vbHMvY2VydF9jcmVhdGUvaW5jbHVkZS9jY2EvY2NhX2NvdC5oIGIvdG9vbHMvY2VydF9jcmVhdGUvaW5jbHVkZS9jY2EvY2NhX2NvdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NTg1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9jZXJ0X2NyZWF0ZS9pbmNsdWRlL2NjYS9jY2FfY290LmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpZm5kZWYgQ0NBX0NPVF9ICisjZGVmaW5lIENDQV9DT1RfSAorCisvKiBDZXJ0aWZpY2F0ZXMuICovCitlbnVtIHsKKwkvKiBDZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHNpbGljb24gcHJvdmlkZXIuICovCisJQ0NBX0NPTlRFTlRfQ0VSVCwKKwlDT1JFX1NXRF9LRVlfQ0VSVCwKKwlTUE1DX0NPTlRFTlRfQ0VSVCwKKwlTSVBfU0VDVVJFX1BBUlRJVElPTl9DT05URU5UX0NFUlQsCisKKwkvKiBDZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHBsYXRmb3JtIG93bmVyLiAqLworCVBMQVRfS0VZX0NFUlQsCisJUExBVF9TRUNVUkVfUEFSVElUSU9OX0NPTlRFTlRfQ0VSVCwKKwlOT05fVFJVU1RFRF9GV19DT05URU5UX0NFUlQsCit9OworCisvKiBDZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiAqLworZW51bSB7CisJLyogRXh0ZW5zaW9ucyB1c2VkIGluIGNlcnRpZmljYXRlcyBvd25lZCBieSB0aGUgc2lsaWNvbiBwcm92aWRlci4gKi8KKwlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhULAorCVRSVVNURURfQk9PVF9GV19DT05GSUdfSEFTSF9FWFQsCisJSFdfQ09ORklHX0hBU0hfRVhULAorCUZXX0NPTkZJR19IQVNIX0VYVCwKKwlTV0RfUk9UX1BLX0VYVCwKKwlDT1JFX1NXRF9QS19FWFQsCisJU09DX0FQX0ZXX0hBU0hfRVhULAorCVNPQ19GV19DT05GSUdfSEFTSF9FWFQsCisJUk1NX0hBU0hfRVhULAorCVRSVVNURURfT1NfRldfSEFTSF9FWFQsCisJVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9FWFQsCisJU1BfUEtHMV9IQVNIX0VYVCwKKwlTUF9QS0cyX0hBU0hfRVhULAorCVNQX1BLRzNfSEFTSF9FWFQsCisJU1BfUEtHNF9IQVNIX0VYVCwKKworCS8qIEV4dGVuc2lvbnMgdXNlZCBpbiBjZXJ0aWZpY2F0ZXMgb3duZWQgYnkgdGhlIHBsYXRmb3JtIG93bmVyLiAqLworCVBST1RfUEtfRVhULAorCVBMQVRfUEtfRVhULAorCVNQX1BLRzVfSEFTSF9FWFQsCisJU1BfUEtHNl9IQVNIX0VYVCwKKwlTUF9QS0c3X0hBU0hfRVhULAorCVNQX1BLRzhfSEFTSF9FWFQsCisJTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwlOT05fVFJVU1RFRF9XT1JMRF9CT09UTE9BREVSX0hBU0hfRVhULAorCU5PTl9UUlVTVEVEX0ZXX0NPTkZJR19IQVNIX0VYVCwKK307CisKKy8qIEtleXMuICovCitlbnVtIHsKKwkvKiBLZXlzIG93bmVkIGJ5IHRoZSBzaWxpY29uIHByb3ZpZGVyLiAqLworCVJPVF9LRVksCisJU1dEX1JPVF9LRVksCisJQ09SRV9TV0RfS0VZLAorCisJLyogS2V5cyBvd25lZCBieSB0aGUgcGxhdGZvcm0gb3duZXIuICovCisJUFJPVF9LRVksCisJUExBVF9LRVksCit9OworCisjZW5kaWYgLyogQ0NBX0NPVF9IICovCmRpZmYgLS1naXQgYS90b29scy9jZXJ0X2NyZWF0ZS9zcmMvY2NhL2NvdC5jIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2NjYS9jb3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTM1ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2NjYS9jb3QuYwpAQCAtMCwwICsxLDQzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgQXJtIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICovCisKKyNpbmNsdWRlICJjY2EvY2NhX2NvdC5oIgorCisjaW5jbHVkZSA8Y2NhX29pZC5oPgorCisjaW5jbHVkZSAiY2VydC5oIgorI2luY2x1ZGUgImV4dC5oIgorI2luY2x1ZGUgImtleS5oIgorCisvKgorICogQ2VydGlmaWNhdGVzIHVzZWQgaW4gdGhlIGNoYWluIG9mIHRydXN0LgorICoKKyAqIEFsbCBjZXJ0aWZpY2F0ZXMgYXJlIHNlbGYtc2lnbmVkIHNvIHRoZSBpc3N1ZXIgY2VydGlmaWNhdGUgZmllbGQgcG9pbnRzIHRvCisgKiBpdHNlbGYuCisgKi8KK3N0YXRpYyBjZXJ0X3QgY290X2NlcnRzW10gPSB7CisJW0NDQV9DT05URU5UX0NFUlRdID0geworCQkuaWQgPSBDQ0FfQ09OVEVOVF9DRVJULAorCQkub3B0ID0gImNjYS1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIkNDQSBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiQ0NBIENvbnRlbnQgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gUk9UX0tFWSwKKwkJLmlzc3VlciA9IENDQV9DT05URU5UX0NFUlQsCisJCS5leHQgPSB7CisJCQlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTT0NfQVBfRldfSEFTSF9FWFQsCisJCQlTT0NfRldfQ09ORklHX0hBU0hfRVhULAorCQkJUk1NX0hBU0hfRVhULAorCQkJVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhULAorCQkJVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX0VYVCwKKwkJCUhXX0NPTkZJR19IQVNIX0VYVCwKKwkJCUZXX0NPTkZJR19IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSA4CisJfSwKKworCVtDT1JFX1NXRF9LRVlfQ0VSVF0gPSB7CisJCS5pZCA9IENPUkVfU1dEX0tFWV9DRVJULAorCQkub3B0ID0gImNvcmUtc3dkLWNlcnQiLAorCQkuaGVscF9tc2cgPSAiQ29yZSBTZWN1cmUgV29ybGQgS2V5IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiQ29yZSBTZWN1cmUgV29ybGQgS2V5IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFNXRF9ST1RfS0VZLAorCQkuaXNzdWVyID0gQ09SRV9TV0RfS0VZX0NFUlQsCisJCS5leHQgPSB7CisJCQlUUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTV0RfUk9UX1BLX0VYVCwKKwkJCUNPUkVfU1dEX1BLX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtTUE1DX0NPTlRFTlRfQ0VSVF0gPSB7CisJCS5pZCA9IFNQTUNfQ09OVEVOVF9DRVJULAorCQkub3B0ID0gInRvcy1mdy1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIlNQTUMgQ29udGVudCBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlNQTUMgQ29udGVudCBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBDT1JFX1NXRF9LRVksCisJCS5pc3N1ZXIgPSBTUE1DX0NPTlRFTlRfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCVRSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCVRSVVNURURfT1NfRldfSEFTSF9FWFQsCisJCQlUUlVTVEVEX09TX0ZXX0NPTkZJR19IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtTSVBfU0VDVVJFX1BBUlRJVElPTl9DT05URU5UX0NFUlRdID0geworCQkuaWQgPSBTSVBfU0VDVVJFX1BBUlRJVElPTl9DT05URU5UX0NFUlQsCisJCS5vcHQgPSAic2lwLXNwLWNlcnQiLAorCQkuaGVscF9tc2cgPSAiU2lQIG93bmVkIFNlY3VyZSBQYXJ0aXRpb24gQ29udGVudCBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlNpUCBvd25lZCBTZWN1cmUgUGFydGl0aW9uIENvbnRlbnQgQ2VydGlmaWNhdGUiLAorCQkua2V5ID0gQ09SRV9TV0RfS0VZLAorCQkuaXNzdWVyID0gU0lQX1NFQ1VSRV9QQVJUSVRJT05fQ09OVEVOVF9DRVJULAorCQkuZXh0ID0geworCQkJVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJU1BfUEtHMV9IQVNIX0VYVCwKKwkJCVNQX1BLRzJfSEFTSF9FWFQsCisJCQlTUF9QS0czX0hBU0hfRVhULAorCQkJU1BfUEtHNF9IQVNIX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSA1CisJfSwKKworCVtQTEFUX0tFWV9DRVJUXSA9IHsKKwkJLmlkID0gUExBVF9LRVlfQ0VSVCwKKwkJLm9wdCA9ICJwbGF0LWtleS1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIlBsYXRmb3JtIEtleSBDZXJ0aWZpY2F0ZSAob3V0cHV0IGZpbGUpIiwKKwkJLmNuID0gIlBsYXRmb3JtIEtleSBDZXJ0aWZpY2F0ZSIsCisJCS5rZXkgPSBQUk9UX0tFWSwKKwkJLmlzc3VlciA9IFBMQVRfS0VZX0NFUlQsCisJCS5leHQgPSB7CisJCQlOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfRVhULAorCQkJUFJPVF9QS19FWFQsCisJCQlQTEFUX1BLX0VYVCwKKwkJfSwKKwkJLm51bV9leHQgPSAzCisJfSwKKworCVtQTEFUX1NFQ1VSRV9QQVJUSVRJT05fQ09OVEVOVF9DRVJUXSA9IHsKKwkJLmlkID0gUExBVF9TRUNVUkVfUEFSVElUSU9OX0NPTlRFTlRfQ0VSVCwKKwkJLm9wdCA9ICJwbGF0LXNwLWNlcnQiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0gb3duZWQgU2VjdXJlIFBhcnRpdGlvbiBDb250ZW50IENlcnRpZmljYXRlIChvdXRwdXQgZmlsZSkiLAorCQkuY24gPSAiUGxhdGZvcm0gb3duZWQgU2VjdXJlIFBhcnRpdGlvbiBDb250ZW50IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFBMQVRfS0VZLAorCQkuaXNzdWVyID0gUExBVF9TRUNVUkVfUEFSVElUSU9OX0NPTlRFTlRfQ0VSVCwKKwkJLmV4dCA9IHsKKwkJCU5PTl9UUlVTVEVEX0ZXX05WQ09VTlRFUl9FWFQsCisJCQlTUF9QS0c1X0hBU0hfRVhULAorCQkJU1BfUEtHNl9IQVNIX0VYVCwKKwkJCVNQX1BLRzdfSEFTSF9FWFQsCisJCQlTUF9QS0c4X0hBU0hfRVhULAorCQl9LAorCQkubnVtX2V4dCA9IDUKKwl9LAorCisJW05PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVF0gPSB7CisJCS5pZCA9IE5PTl9UUlVTVEVEX0ZXX0NPTlRFTlRfQ0VSVCwKKwkJLm9wdCA9ICJudC1mdy1jZXJ0IiwKKwkJLmhlbHBfbXNnID0gIk5vbi1UcnVzdGVkIEZpcm13YXJlIENvbnRlbnQgQ2VydGlmaWNhdGUgKG91dHB1dCBmaWxlKSIsCisJCS5jbiA9ICJOb24tVHJ1c3RlZCBGaXJtd2FyZSBDb250ZW50IENlcnRpZmljYXRlIiwKKwkJLmtleSA9IFBMQVRfS0VZLAorCQkuaXNzdWVyID0gTk9OX1RSVVNURURfRldfQ09OVEVOVF9DRVJULAorCQkuZXh0ID0geworCQkJTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX0VYVCwKKwkJCU5PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9FWFQsCisJCQlOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9FWFQsCisJCX0sCisJCS5udW1fZXh0ID0gMworCX0sCit9OworCitSRUdJU1RFUl9DT1QoY290X2NlcnRzKTsKKworCisvKiBDZXJ0aWZpY2F0ZSBleHRlbnNpb25zLiAqLworc3RhdGljIGV4dF90IGNvdF9leHRbXSA9IHsKKwlbVFJVU1RFRF9GV19OVkNPVU5URVJfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfRldfTlZDT1VOVEVSX09JRCwKKwkJLm9wdCA9ICJ0ZnctbnZjdHIiLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBGaXJtd2FyZSBOb24tVm9sYXRpbGUgY291bnRlciB2YWx1ZSIsCisJCS5zbiA9ICJUcnVzdGVkV29ybGROVkNvdW50ZXIiLAorCQkubG4gPSAiVHJ1c3RlZCBXb3JsZCBOb24tVm9sYXRpbGUgY291bnRlciIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfSU5URUdFUiwKKwkJLnR5cGUgPSBFWFRfVFlQRV9OVkNPVU5URVIsCisJCS5hdHRyLm52Y3RyX3R5cGUgPSBOVkNUUl9UWVBFX1RGVworCX0sCisKKwlbVFJVU1RFRF9CT09UX0ZXX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFRSVVNURURfQk9PVF9GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0Yi1mdyIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIEJvb3QgRmlybXdhcmUgaW1hZ2UgZmlsZSIsCisJCS5zbiA9ICJUcnVzdGVkQm9vdEZpcm13YXJlSGFzaCIsCisJCS5sbiA9ICJUcnVzdGVkIEJvb3QgRmlybXdhcmUgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW1RSVVNURURfQk9PVF9GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9CT09UX0ZXX0NPTkZJR19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0Yi1mdy1jb25maWciLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBCb290IEZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRCb290RmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlRydXN0ZWQgQm9vdCBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW0hXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBIV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAiaHctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIkhXIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIkhXQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJIVyBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW0ZXX0NPTkZJR19IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBGV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAiZnctY29uZmlnIiwKKwkJLmhlbHBfbXNnID0gIkZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIkZpcm13YXJlQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1NXRF9ST1RfUEtfRVhUXSA9IHsKKwkJLm9pZCA9IFNXRF9ST1RfUEtfT0lELAorCQkuc24gPSAiU1dEUm9US2V5IiwKKwkJLmxuID0gIlNlY3VyZSBXb3JsZCBSb290IG9mIFRydXN0IFB1YmxpYyBLZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBTV0RfUk9UX0tFWQorCX0sCisKKwlbQ09SRV9TV0RfUEtfRVhUXSA9IHsKKwkJLm9pZCA9IENPUkVfU1dEX1BLX09JRCwKKwkJLnNuID0gIkNPUkVTV0RLZXkiLAorCQkubG4gPSAiQ29yZSBTZWN1cmUgV29ybGQgUHVibGljIEtleSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX1BLRVksCisJCS5hdHRyLmtleSA9IENPUkVfU1dEX0tFWQorCX0sCisKKwlbU09DX0FQX0ZXX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19BUF9GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJzb2MtZnciLAorCQkuaGVscF9tc2cgPSAiU29DIEFQIEZpcm13YXJlIGltYWdlIGZpbGUiLAorCQkuc24gPSAiU29DQVBGaXJtd2FyZUhhc2giLAorCQkubG4gPSAiU29DIEFQIEZpcm13YXJlIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNICisJfSwKKworCVtTT0NfRldfQ09ORklHX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNPQ19GV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAic29jLWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJTb0MgRmlybXdhcmUgQ29uZmlnIGZpbGUiLAorCQkuc24gPSAiU29jRmlybXdhcmVDb25maWdIYXNoIiwKKwkJLmxuID0gIlNvQyBGaXJtd2FyZSBDb25maWcgaGFzaCIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCisJW1JNTV9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBSTU1fSEFTSF9PSUQsCisJCS5vcHQgPSAicm1tLWZ3IiwKKwkJLmhlbHBfbXNnID0gIlJNTSBGaXJtd2FyZSBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlJNTUZpcm13YXJlSGFzaCIsCisJCS5sbiA9ICJSTU0gRmlybXdhcmUgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gKKwl9LAorCisJW1RSVVNURURfT1NfRldfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9PU19GV19IQVNIX09JRCwKKwkJLm9wdCA9ICJ0b3MtZnciLAorCQkuaGVscF9tc2cgPSAiVHJ1c3RlZCBPUyBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRPU0hhc2giLAorCQkubG4gPSAiVHJ1c3RlZCBPUyBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSAorCX0sCisKKwlbVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gVFJVU1RFRF9PU19GV19DT05GSUdfSEFTSF9PSUQsCisJCS5vcHQgPSAidG9zLWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJUcnVzdGVkIE9TIEZpcm13YXJlIENvbmZpZyBmaWxlIiwKKwkJLnNuID0gIlRydXN0ZWRPU0Zpcm13YXJlQ29uZmlnSGFzaCIsCisJCS5sbiA9ICJUcnVzdGVkIE9TIEZpcm13YXJlIENvbmZpZyBoYXNoIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisKKwlbU1BfUEtHMV9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0cxX0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzEiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlMSBmaWxlIiwKKwkJLnNuID0gIlNQUGtnMUhhc2giLAorCQkubG4gPSAiU1AgUGtnMSBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisJW1NQX1BLRzJfSEFTSF9FWFRdID0geworCQkub2lkID0gU1BfUEtHMl9IQVNIX09JRCwKKwkJLm9wdCA9ICJzcC1wa2cyIiwKKwkJLmhlbHBfbXNnID0gIlNlY3VyZSBQYXJ0aXRpb24gUGFja2FnZTIgZmlsZSIsCisJCS5zbiA9ICJTUFBrZzJIYXNoIiwKKwkJLmxuID0gIlNQIFBrZzIgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCVtTUF9QS0czX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNQX1BLRzNfSEFTSF9PSUQsCisJCS5vcHQgPSAic3AtcGtnMyIsCisJCS5oZWxwX21zZyA9ICJTZWN1cmUgUGFydGl0aW9uIFBhY2thZ2UzIGZpbGUiLAorCQkuc24gPSAiU1BQa2czSGFzaCIsCisJCS5sbiA9ICJTUCBQa2czIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKwlbU1BfUEtHNF9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0c0X0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzQiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlNCBmaWxlIiwKKwkJLnNuID0gIlNQUGtnNEhhc2giLAorCQkubG4gPSAiU1AgUGtnNCBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisKKwlbUFJPVF9QS19FWFRdID0geworCQkub2lkID0gUFJPVF9QS19PSUQsCisJCS5zbiA9ICJQbGF0Zm9ybVJvVEtleSIsCisJCS5sbiA9ICJQbGF0Zm9ybSBSb290IG9mIFRydXN0IFB1YmxpYyBLZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBQUk9UX0tFWQorCX0sCisKKwlbUExBVF9QS19FWFRdID0geworCQkub2lkID0gUExBVF9QS19PSUQsCisJCS5zbiA9ICJQTEFUS2V5IiwKKwkJLmxuID0gIlBsYXRmb3JtIFB1YmxpYyBLZXkiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9QS0VZLAorCQkuYXR0ci5rZXkgPSBQTEFUX0tFWQorCX0sCisKKwlbU1BfUEtHNV9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0c1X0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzUiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlNSBmaWxlIiwKKwkJLnNuID0gIlNQUGtnNUhhc2giLAorCQkubG4gPSAiU1AgUGtnNSBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisJW1NQX1BLRzZfSEFTSF9FWFRdID0geworCQkub2lkID0gU1BfUEtHNl9IQVNIX09JRCwKKwkJLm9wdCA9ICJzcC1wa2c2IiwKKwkJLmhlbHBfbXNnID0gIlNlY3VyZSBQYXJ0aXRpb24gUGFja2FnZTYgZmlsZSIsCisJCS5zbiA9ICJTUFBrZzZIYXNoIiwKKwkJLmxuID0gIlNQIFBrZzYgaGFzaCAoU0hBMjU2KSIsCisJCS5hc24xX3R5cGUgPSBWX0FTTjFfT0NURVRfU1RSSU5HLAorCQkudHlwZSA9IEVYVF9UWVBFX0hBU0gsCisJCS5vcHRpb25hbCA9IDEKKwl9LAorCVtTUF9QS0c3X0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IFNQX1BLRzdfSEFTSF9PSUQsCisJCS5vcHQgPSAic3AtcGtnNyIsCisJCS5oZWxwX21zZyA9ICJTZWN1cmUgUGFydGl0aW9uIFBhY2thZ2U3IGZpbGUiLAorCQkuc24gPSAiU1BQa2c3SGFzaCIsCisJCS5sbiA9ICJTUCBQa2c3IGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKKwlbU1BfUEtHOF9IQVNIX0VYVF0gPSB7CisJCS5vaWQgPSBTUF9QS0c4X0hBU0hfT0lELAorCQkub3B0ID0gInNwLXBrZzgiLAorCQkuaGVscF9tc2cgPSAiU2VjdXJlIFBhcnRpdGlvbiBQYWNrYWdlOCBmaWxlIiwKKwkJLnNuID0gIlNQUGtnOEhhc2giLAorCQkubG4gPSAiU1AgUGtnOCBoYXNoIChTSEEyNTYpIiwKKwkJLmFzbjFfdHlwZSA9IFZfQVNOMV9PQ1RFVF9TVFJJTkcsCisJCS50eXBlID0gRVhUX1RZUEVfSEFTSCwKKwkJLm9wdGlvbmFsID0gMQorCX0sCisKKwlbTk9OX1RSVVNURURfRldfTlZDT1VOVEVSX0VYVF0gPSB7CisJCS5vaWQgPSBOT05fVFJVU1RFRF9GV19OVkNPVU5URVJfT0lELAorCQkub3B0ID0gIm50ZnctbnZjdHIiLAorCQkuaGVscF9tc2cgPSAiTm9uLVRydXN0ZWQgRmlybXdhcmUgTm9uLVZvbGF0aWxlIGNvdW50ZXIgdmFsdWUiLAorCQkuc24gPSAiTm9ybWFsV29ybGROVkNvdW50ZXIiLAorCQkubG4gPSAiTm9uLVRydXN0ZWQgRmlybXdhcmUgTm9uLVZvbGF0aWxlIGNvdW50ZXIiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX0lOVEVHRVIsCisJCS50eXBlID0gRVhUX1RZUEVfTlZDT1VOVEVSLAorCQkuYXR0ci5udmN0cl90eXBlID0gTlZDVFJfVFlQRV9OVEZXCisJfSwKKworCVtOT05fVFJVU1RFRF9XT1JMRF9CT09UTE9BREVSX0hBU0hfRVhUXSA9IHsKKwkJLm9pZCA9IE5PTl9UUlVTVEVEX1dPUkxEX0JPT1RMT0FERVJfSEFTSF9PSUQsCisJCS5vcHQgPSAibnQtZnciLAorCQkuaGVscF9tc2cgPSAiTm9uLVRydXN0ZWQgV29ybGQgQm9vdGxvYWRlciBpbWFnZSBmaWxlIiwKKwkJLnNuID0gIk5vblRydXN0ZWRXb3JsZEJvb3Rsb2FkZXJIYXNoIiwKKwkJLmxuID0gIk5vbi1UcnVzdGVkIFdvcmxkIGhhc2ggKFNIQTI1NikiLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNICisJfSwKKworCVtOT05fVFJVU1RFRF9GV19DT05GSUdfSEFTSF9FWFRdID0geworCQkub2lkID0gTk9OX1RSVVNURURfRldfQ09ORklHX0hBU0hfT0lELAorCQkub3B0ID0gIm50LWZ3LWNvbmZpZyIsCisJCS5oZWxwX21zZyA9ICJOb24gVHJ1c3RlZCBPUyBGaXJtd2FyZSBDb25maWcgZmlsZSIsCisJCS5zbiA9ICJOb25UcnVzdGVkT1NGaXJtd2FyZUNvbmZpZ0hhc2giLAorCQkubG4gPSAiTm9uLVRydXN0ZWQgT1MgRmlybXdhcmUgQ29uZmlnIGhhc2giLAorCQkuYXNuMV90eXBlID0gVl9BU04xX09DVEVUX1NUUklORywKKwkJLnR5cGUgPSBFWFRfVFlQRV9IQVNILAorCQkub3B0aW9uYWwgPSAxCisJfSwKK307CisKK1JFR0lTVEVSX0VYVEVOU0lPTlMoY290X2V4dCk7CisKKy8qIEtleXMgdXNlZCB0byBlc3RhYmxpc2ggdGhlIGNoYWluIG9mIHRydXN0LiAqLworc3RhdGljIGtleV90IGNvdF9rZXlzW10gPSB7CisJW1JPVF9LRVldID0geworCQkuaWQgPSBST1RfS0VZLAorCQkub3B0ID0gInJvdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUm9vdCBPZiBUcnVzdCBrZXkgKGlucHV0L291dHB1dCBmaWxlKSIsCisJCS5kZXNjID0gIlJvb3QgT2YgVHJ1c3Qga2V5IgorCX0sCisKKwlbU1dEX1JPVF9LRVldID0geworCQkuaWQgPSBTV0RfUk9UX0tFWSwKKwkJLm9wdCA9ICJzd2Qtcm90LWtleSIsCisJCS5oZWxwX21zZyA9ICJTZWN1cmUgV29ybGQgUm9vdCBvZiBUcnVzdCBrZXkiLAorCQkuZGVzYyA9ICJTZWN1cmUgV29ybGQgUm9vdCBvZiBUcnVzdCBrZXkiCisJfSwKKworCVtDT1JFX1NXRF9LRVldID0geworCQkuaWQgPSBDT1JFX1NXRF9LRVksCisJCS5vcHQgPSAiY29yZS1zd2Qta2V5IiwKKwkJLmhlbHBfbXNnID0gIkNvcmUgU2VjdXJlIFdvcmxkIGtleSIsCisJCS5kZXNjID0gIkNvcmUgU2VjdXJlIFdvcmxkIGtleSIKKwl9LAorCisJW1BST1RfS0VZXSA9IHsKKwkJLmlkID0gUFJPVF9LRVksCisJCS5vcHQgPSAicHJvdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0gUm9vdCBvZiBUcnVzdCBrZXkiLAorCQkuZGVzYyA9ICJQbGF0Zm9ybSBSb290IG9mIFRydXN0IGtleSIKKwl9LAorCisJW1BMQVRfS0VZXSA9IHsKKwkJLmlkID0gUExBVF9LRVksCisJCS5vcHQgPSAicGxhdC1rZXkiLAorCQkuaGVscF9tc2cgPSAiUGxhdGZvcm0ga2V5IiwKKwkJLmRlc2MgPSAiUGxhdGZvcm0ga2V5IgorCX0sCit9OworCitSRUdJU1RFUl9LRVlTKGNvdF9rZXlzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2NlcnRfY3JlYXRlL3NyYy9jY2EvY290Lm1rIGIvdG9vbHMvY2VydF9jcmVhdGUvc3JjL2NjYS9jb3QubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjODBiYgotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2NlcnRfY3JlYXRlL3NyYy9jY2EvY290Lm1rCkBAIC0wLDAgKzEsMTAgQEAKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBBcm0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorIworCitQTEFUX01TRwkJOj0JQ29uZmlkZW50aWFsIENvbXB1dGUgQXJjaGl0ZWN0dXJlIHJvb3Qgb2YgdHJ1c3QKK1BMQVRfSU5DTFVERQkJOj0JLi4vLi4vaW5jbHVkZS90b29sc19zaGFyZQorCitPQkpFQ1RTICs9IHNyYy9jY2EvY290Lm8KZGlmZiAtLWdpdCBhL3Rvb2xzL2ZpcHRvb2wvdGJicl9jb25maWcuYyBiL3Rvb2xzL2ZpcHRvb2wvdGJicl9jb25maWcuYwppbmRleCA0OTk4YmIyLi5jZGJmMzg5IDEwMDY0NAotLS0gYS90b29scy9maXB0b29sL3RiYnJfY29uZmlnLmMKKysrIGIvdG9vbHMvZmlwdG9vbC90YmJyX2NvbmZpZy5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIxLCBBUk0gTGltaXRlZCBhbmQgQ29udHJpYnV0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIsIEFSTSBMaW1pdGVkIGFuZCBDb250cmlidXRvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQogICovCkBAIC0xNzIsNiArMTcyLDIxIEBACiAJCS5jbWRsaW5lX25hbWUgPSAicGxhdC1zcC1jZXJ0IgogCX0sCiAJeworCQkubmFtZSA9ICJDQ0EgQ29udGVudCBDZXJ0aWZpY2F0ZSIsCisJCS51dWlkID0gVVVJRF9DQ0FfQ09OVEVOVF9DRVJULAorCQkuY21kbGluZV9uYW1lID0gImNjYS1jZXJ0IgorCX0sCisJeworCQkubmFtZSA9ICJDb3JlIFNlY3VyZSBXb3JsZCBLZXkgQ2VydGlmaWNhdGUiLAorCQkudXVpZCA9IFVVSURfQ09SRV9TV0RfS0VZX0NFUlQsCisJCS5jbWRsaW5lX25hbWUgPSAiY29yZS1zd2QtY2VydCIKKwl9LAorCXsKKwkJLm5hbWUgPSAiUGxhdGZvcm0gS2V5IENlcnRpZmljYXRlIiwKKwkJLnV1aWQgPSBVVUlEX1BMQVRfS0VZX0NFUlQsCisJCS5jbWRsaW5lX25hbWUgPSAicGxhdC1rZXktY2VydCIKKwl9LAorCXsKIAkJLm5hbWUgPSBOVUxMLAogCQkudXVpZCA9IHsgezB9IH0sCiAJCS5jbWRsaW5lX25hbWUgPSBOVUxMLAo=