From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from imap1.codethink.co.uk ([176.9.8.82]:40696 "EHLO imap1.codethink.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726457AbeLMSwf (ORCPT ); Thu, 13 Dec 2018 13:52:35 -0500 Message-ID: <1544727123.19315.56.camel@codethink.co.uk> Subject: Re: Security fixes for 4.4 From: Ben Hutchings To: Greg Kroah-Hartman , Sasha Levin Cc: stable Date: Thu, 13 Dec 2018 18:52:03 +0000 In-Reply-To: <1544727079.19315.55.camel@codethink.co.uk> References: <1544727079.19315.55.camel@codethink.co.uk> Content-Type: multipart/mixed; boundary="=-bCKOGlwihLOZOGAfxHS8" Mime-Version: 1.0 Sender: stable-owner@vger.kernel.org List-ID: --=-bCKOGlwihLOZOGAfxHS8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit And here they really are. Ben. On Thu, 2018-12-13 at 18:51 +0000, Ben Hutchings wrote: > I've backported a number of fixes for security issues affecting 4.4- > stable.  All of these are already fixed in the newer stable branches. > > For the BPF fix, I verified that the self-tests (taken from 4.14) > didn't regress and temporarily added logging to check that the > mitigation is applied when needed. > > For the KVM changes, I verified that IBPB/IBRS are now exposed to and > used by a guest on Intel hardware. > > I also verified that the current self-tests for timers, usercopy and > vm > didn't regress. > > Ben. > -- Ben Hutchings, Software Developer   Codethink Ltd https://www.codethink.co.uk/ Dale House, 35 Dale Street Manchester, M1 2HF, United Kingdom --=-bCKOGlwihLOZOGAfxHS8 Content-Type: application/mbox; name="security-4.4.mbox" Content-Disposition: attachment; filename="security-4.4.mbox" Content-Transfer-Encoding: base64 RnJvbSA3ZTJjNzgwMWNjY2ExNmEzNjU0YmU3ZWU1YjI1MGVkODcwYWExZDI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFNha2Ftb3RvIDxvLXRha2FzaGlAc2FrYW1vY2No aS5qcD4KRGF0ZTogV2VkLCAxNCBKdW4gMjAxNyAxOTozMDowMyArMDkwMApTdWJqZWN0OiBbUEFU Q0ggMDEvMzRdIEFMU0E6IHBjbTogcmVtb3ZlIFNORFJWX1BDTV9JT0NUTDFfSU5GTyBpbnRlcm5h bAogY29tbWFuZAoKY29tbWl0IGUxMWYwZjkwYTYyNmY5Mzg5OTY4N2IxY2M5MDllZTM3ZGQ2YzU4 MDkgdXBzdHJlYW0uCgpEcml2ZXJzIGNhbiBpbXBsZW1lbnQgJ3N0cnVjdCBzbmRfcGNtX29wcy5p b2N0bCcgdG8gaGFuZGxlIHNvbWUgcmVxdWVzdHMKZnJvbSBBTFNBIFBDTSBjb3JlLiBUaGVzZSBy ZXF1ZXN0cyBhcmUgaW50ZXJuYWwgcHVycG9zZSBpbiBrZXJuZWwgbGFuZC4KVXN1YWxseSBjb21t b24gc2V0IG9mIG9wZXJhdGlvbnMgYXJlIHVzZWQgZm9yIGl0LgoKU05EUlZfUENNX0lPQ1RMMV9J TkZPIGlzIG9uZSBvZiB0aGUgcmVxdWVzdHMuIEFjY29yZGluZyB0byBjb2RlIGNvbW1lbnQsCml0 IGhhcyBiZWVuIG9ic29sZXRlZCBpbiB0aGUgb2xkIGRheXMuCgpXZSBjYW4gc2VlIG9sZCByZWxl YXNlcyBpbiBmdHAuYWxzYS1wcm9qZWN0Lm9yZy4gVGhlIGNvbW1hbmQgd2FzIGZpcnN0bHkKaW50 cm9kdWNlZCBpbiB2MC41LjAgcmVsZWFzZSBhcyBTTkRfUENNX0lPQ1RMMV9JTkZPLCB0byBhbGxv dyBkcml2ZXJzIHRvCmZpbGwgZGF0YSBvZiAnc3RydWN0IHNuZF9wY21fY2hhbm5lbF9pbmZvJyB0 eXBlLiBJbiB2MC45LjAgcmVsZWFzZSwKdGhpcyB3YXMgb2Jzb2xldGVkIGJ5IHRoZSBvdGhlciBj b21tYW5kcyBmb3IgaW9jdGwoMikgc3VjaCBhcwpTTkRSVl9QQ01fSU9DVExfQ0hBTk5FTF9JTkZP LgoKVGhpcyBjb21taXQgcmVtb3ZlcyB0aGUgbG9uZy1hYmFuZG9uZWQgY29tbWFuZCwgYnllLgoK U2lnbmVkLW9mZi1ieTogVGFrYXNoaSBTYWthbW90byA8by10YWthc2hpQHNha2Ftb2NjaGkuanA+ ClNpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KU2lnbmVkLW9mZi1i eTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogaW5j bHVkZS9zb3VuZC9wY20uaCAgICAgfCAyICstCiBzb3VuZC9jb3JlL3BjbV9saWIuYyAgICB8IDIg LS0KIHNvdW5kL2NvcmUvcGNtX25hdGl2ZS5jIHwgNiArLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291 bmQvcGNtLmggYi9pbmNsdWRlL3NvdW5kL3BjbS5oCmluZGV4IGIwYmUwOTI3OTk0My4uZmZjMTYx OTA2ZDM2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3NvdW5kL3BjbS5oCisrKyBiL2luY2x1ZGUvc291 bmQvcGNtLmgKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdHJ1Y3Qgc25kX3BjbV9vcHMgewogI2VuZGlm CiAKICNkZWZpbmUgU05EUlZfUENNX0lPQ1RMMV9SRVNFVAkJMAotI2RlZmluZSBTTkRSVl9QQ01f SU9DVEwxX0lORk8JCTEKKy8qIDEgaXMgYWJzZW50IHNsb3QuICovCiAjZGVmaW5lIFNORFJWX1BD TV9JT0NUTDFfQ0hBTk5FTF9JTkZPCTIKICNkZWZpbmUgU05EUlZfUENNX0lPQ1RMMV9HU1RBVEUJ CTMKICNkZWZpbmUgU05EUlZfUENNX0lPQ1RMMV9GSUZPX1NJWkUJNApkaWZmIC0tZ2l0IGEvc291 bmQvY29yZS9wY21fbGliLmMgYi9zb3VuZC9jb3JlL3BjbV9saWIuYwppbmRleCA1YmM3ZGRmOGZj NzAuLjNjZTJiODc3MTc2MiAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbGliLmMKKysrIGIv c291bmQvY29yZS9wY21fbGliLmMKQEAgLTE4NDksOCArMTg0OSw2IEBAIGludCBzbmRfcGNtX2xp Yl9pb2N0bChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwKIAkJICAgICAgdW5z aWduZWQgaW50IGNtZCwgdm9pZCAqYXJnKQogewogCXN3aXRjaCAoY21kKSB7Ci0JY2FzZSBTTkRS Vl9QQ01fSU9DVEwxX0lORk86Ci0JCXJldHVybiAwOwogCWNhc2UgU05EUlZfUENNX0lPQ1RMMV9S RVNFVDoKIAkJcmV0dXJuIHNuZF9wY21fbGliX2lvY3RsX3Jlc2V0KHN1YnN0cmVhbSwgYXJnKTsK IAljYXNlIFNORFJWX1BDTV9JT0NUTDFfQ0hBTk5FTF9JTkZPOgpkaWZmIC0tZ2l0IGEvc291bmQv Y29yZS9wY21fbmF0aXZlLmMgYi9zb3VuZC9jb3JlL3BjbV9uYXRpdmUuYwppbmRleCAzZGU4ODk3 NGVlYjYuLmQ3ZmI2ZjQ4MWY2NyAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbmF0aXZlLmMK KysrIGIvc291bmQvY29yZS9wY21fbmF0aXZlLmMKQEAgLTIxMywxMSArMjEzLDcgQEAgaW50IHNu ZF9wY21faW5mbyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwgc3RydWN0IHNu ZF9wY21faW5mbyAqaW5mbykKIAlpbmZvLT5zdWJkZXZpY2VzX2F2YWlsID0gcHN0ci0+c3Vic3Ry ZWFtX2NvdW50IC0gcHN0ci0+c3Vic3RyZWFtX29wZW5lZDsKIAlzdHJsY3B5KGluZm8tPnN1Ym5h bWUsIHN1YnN0cmVhbS0+bmFtZSwgc2l6ZW9mKGluZm8tPnN1Ym5hbWUpKTsKIAlydW50aW1lID0g c3Vic3RyZWFtLT5ydW50aW1lOwotCS8qIEFCOiBGSVhNRSEhISBUaGlzIGlzIGRlZmluaXRlbHkg bm9uc2Vuc2UgKi8KLQlpZiAocnVudGltZSkgewotCQlpbmZvLT5zeW5jID0gcnVudGltZS0+c3lu YzsKLQkJc3Vic3RyZWFtLT5vcHMtPmlvY3RsKHN1YnN0cmVhbSwgU05EUlZfUENNX0lPQ1RMMV9J TkZPLCBpbmZvKTsKLQl9CisKIAlyZXR1cm4gMDsKIH0KIAoKRnJvbSBiZWIzNDg5YjBkNDdmZDY0 NzgxOWFhNTU3NzMzM2JiMTdmM2VhZTI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9 P1VURi04P3E/UmFkaW09MjBLcj1DND04RG09QzM9QTE9QzU9OTk/PSA8cmtyY21hckByZWRoYXQu Y29tPgpEYXRlOiBNb24sIDggQXVnIDIwMTYgMjA6MTY6MjIgKzAyMDAKU3ViamVjdDogW1BBVENI IDAyLzM0XSBLVk06IG5WTVg6IGZpeCBtc3IgYml0bWFwcyB0byBwcmV2ZW50IEwyIGZyb20gYWNj ZXNzaW5nCiBMMCB4MkFQSUMKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3Bs YWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCmNvbW1p dCBkMDQ4YzA5ODIxOGU5MWVkMGUxMGRmYTFmMGY4MGUyNTY3ZmU0ZWY3IHVwc3RyZWFtLgoKbXNy IGJpdG1hcCBjYW4gYmUgdXNlZCB0byBhdm9pZCBhIFZNIGV4aXQgKGludGVyY2VwdGlvbikgb24g Z3Vlc3QgTVNSCmFjY2Vzc2VzLiAgSW4gc29tZSBjb25maWd1cmF0aW9ucyBvZiBWTVggY29udHJv bHMsIHRoZSBndWVzdCBjYW4gZXZlbgpkaXJlY3RseSBhY2Nlc3MgaG9zdCdzIHgyQVBJQyBNU1Jz LiAgU2VlIFNETSAyOS41IFZJUlRVQUxJWklORyBNU1ItQkFTRUQKQVBJQyBBQ0NFU1NFUy4KCkwy IGNvdWxkIHJlYWQgYWxsIEwwJ3MgeDJBUElDIE1TUnMgYW5kIHdyaXRlIFRQUiwgRU9JLCBhbmQg U0VMRl9JUEkuClRvIGRvIHNvLCBMMSB3b3VsZCBmaXJzdCB0cmljayBLVk0gdG8gZGlzYWJsZSBh bGwgcG9zc2libGUgaW50ZXJjZXB0aW9ucwpieSBlbmFibGluZyBBUElDdiBmZWF0dXJlcyBhbmQg dGhlbiB3b3VsZCB0dXJuIHRob3NlIGZlYXR1cmVzIG9mZjsKbmVzdGVkX3ZteF9tZXJnZV9tc3Jf Yml0bWFwKCkgb25seSBkaXNhYmxlZCBpbnRlcmNlcHRpb25zLCBzbyBWTVggd291bGQKbm90IGlu dGVyY2VwdCBwcmV2aW91c2x5IGVuYWJsZWQgTVNScyBldmVuIHRob3VnaCB0aGV5IHdlcmUgbm90 IHNhZmUKd2l0aCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24uCgpDb3JyZWN0bHkgcmUtZW5hYmxpbmcg aW50ZXJjZXB0aW9ucyBpcyBub3QgZW5vdWdoIGFzIGEgc2Vjb25kIGJ1ZyB3b3VsZApzdGlsbCBh bGxvdyBMMStMMiB0byBhY2Nlc3MgaG9zdCdzIE1TUnM6IG1zciBiaXRtYXAgd2FzIHNoYXJlZCBm b3IgYWxsClZNQ1NzLCBzbyBMMSBjb3VsZCB0cmlnZ2VyIGEgcmFjZSB0byBnZXQgdGhlIGRlc2ly ZWQgY29tYmluYXRpb24gb2YgbXNyCmJpdG1hcCBhbmQgVk1YIGNvbnRyb2xzLgoKVGhpcyBmaXgg YWxsb2NhdGVzIGEgbXNyIGJpdG1hcCBmb3IgZXZlcnkgTDEgVkNQVSwgYWxsb3dzIG9ubHkgc2Fm ZQp4MkFQSUMgTVNScyBmcm9tIEwxJ3MgbXNyIGJpdG1hcCwgYW5kIGRpc2FibGVzIG1zciBiaXRt YXBzIGlmIHRoZXkgd291bGQKaGF2ZSB0byBpbnRlcmNlcHQgZXZlcnl0aGluZyBhbnl3YXkuCgpG aXhlczogM2FmMThkOWM1ZmU5ICgiS1ZNOiBuVk1YOiBQcmVwYXJlIGZvciB1c2luZyBoYXJkd2Fy ZSBNU1IgYml0bWFwIikKUmVwb3J0ZWQtYnk6IEppbSBNYXR0c29uIDxqbWF0dHNvbkBnb29nbGUu Y29tPgpTdWdnZXN0ZWQtYnk6IFdpbmN5IFZhbiA8ZmFud2VueWkwNTI5QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFdhbnBlbmcgTGkgPHdhbnBlbmcubGlAaG90bWFpbC5jb20+ClNpZ25lZC1vZmYt Ynk6IFJhZGltIEtyxI1tw6HFmSA8cmtyY21hckByZWRoYXQuY29tPgpbYndoOiBCYWNrcG9ydGVk IHRvIDQuNDoKIC0gaGFuZGxlX3Ztb24oKSBkb2Vzbid0IGFsbG9jYXRlIGEgY2FjaGVkIHZtY3Mx MgogLSBBZGp1c3QgY29udGV4dF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1 dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJjaC94ODYva3ZtL3ZteC5jIHwgOTYgKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva3ZtL3ZteC5jIGIvYXJjaC94ODYva3ZtL3ZteC5jCmluZGV4IGM1YTRiMTk3 OGNiZi4uM2RmNjM2NDAwZWM4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vdm14LmMKKysrIGIv YXJjaC94ODYva3ZtL3ZteC5jCkBAIC00MzEsNiArNDMxLDggQEAgc3RydWN0IG5lc3RlZF92bXgg ewogCXUxNiBwb3N0ZWRfaW50cl9udjsKIAl1NjQgbXNyX2lhMzJfZmVhdHVyZV9jb250cm9sOwog CisJdW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcDsKKwogCXN0cnVjdCBocnRpbWVyIHByZWVtcHRp b25fdGltZXI7CiAJYm9vbCBwcmVlbXB0aW9uX3RpbWVyX2V4cGlyZWQ7CiAKQEAgLTkxMiw3ICs5 MTQsNiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyAqdm14X21zcl9iaXRtYXBfbGVnYWN5Owogc3Rh dGljIHVuc2lnbmVkIGxvbmcgKnZteF9tc3JfYml0bWFwX2xvbmdtb2RlOwogc3RhdGljIHVuc2ln bmVkIGxvbmcgKnZteF9tc3JfYml0bWFwX2xlZ2FjeV94MmFwaWM7CiBzdGF0aWMgdW5zaWduZWQg bG9uZyAqdm14X21zcl9iaXRtYXBfbG9uZ21vZGVfeDJhcGljOwotc3RhdGljIHVuc2lnbmVkIGxv bmcgKnZteF9tc3JfYml0bWFwX25lc3RlZDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nICp2bXhfdm1y ZWFkX2JpdG1hcDsKIHN0YXRpYyB1bnNpZ25lZCBsb25nICp2bXhfdm13cml0ZV9iaXRtYXA7CiAK QEAgLTIzNTgsNyArMjM1OSw3IEBAIHN0YXRpYyB2b2lkIHZteF9zZXRfbXNyX2JpdG1hcChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJdW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcDsKIAogCWlmIChp c19ndWVzdF9tb2RlKHZjcHUpKQotCQltc3JfYml0bWFwID0gdm14X21zcl9iaXRtYXBfbmVzdGVk OworCQltc3JfYml0bWFwID0gdG9fdm14KHZjcHUpLT5uZXN0ZWQubXNyX2JpdG1hcDsKIAllbHNl IGlmICh2Y3B1LT5hcmNoLmFwaWNfYmFzZSAmIFgyQVBJQ19FTkFCTEUpIHsKIAkJaWYgKGlzX2xv bmdfbW9kZSh2Y3B1KSkKIAkJCW1zcl9iaXRtYXAgPSB2bXhfbXNyX2JpdG1hcF9sb25nbW9kZV94 MmFwaWM7CkBAIC02MTkyLDEzICs2MTkzLDYgQEAgc3RhdGljIF9faW5pdCBpbnQgaGFyZHdhcmVf c2V0dXAodm9pZCkKIAlpZiAoIXZteF9tc3JfYml0bWFwX2xvbmdtb2RlX3gyYXBpYykKIAkJZ290 byBvdXQ0OwogCi0JaWYgKG5lc3RlZCkgewotCQl2bXhfbXNyX2JpdG1hcF9uZXN0ZWQgPQotCQkJ KHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7Ci0JCWlmICghdm14 X21zcl9iaXRtYXBfbmVzdGVkKQotCQkJZ290byBvdXQ1OwotCX0KLQogCXZteF92bXJlYWRfYml0 bWFwID0gKHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CiAJaWYg KCF2bXhfdm1yZWFkX2JpdG1hcCkKIAkJZ290byBvdXQ2OwpAQCAtNjIxNiw4ICs2MjEwLDYgQEAg c3RhdGljIF9faW5pdCBpbnQgaGFyZHdhcmVfc2V0dXAodm9pZCkKIAogCW1lbXNldCh2bXhfbXNy X2JpdG1hcF9sZWdhY3ksIDB4ZmYsIFBBR0VfU0laRSk7CiAJbWVtc2V0KHZteF9tc3JfYml0bWFw X2xvbmdtb2RlLCAweGZmLCBQQUdFX1NJWkUpOwotCWlmIChuZXN0ZWQpCi0JCW1lbXNldCh2bXhf bXNyX2JpdG1hcF9uZXN0ZWQsIDB4ZmYsIFBBR0VfU0laRSk7CiAKIAlpZiAoc2V0dXBfdm1jc19j b25maWcoJnZtY3NfY29uZmlnKSA8IDApIHsKIAkJciA9IC1FSU87CkBAIC02MzU0LDkgKzYzNDYs NiBAQCBvdXQ4Ogogb3V0NzoKIAlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpdm14X3ZtcmVhZF9i aXRtYXApOwogb3V0NjoKLQlpZiAobmVzdGVkKQotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcp dm14X21zcl9iaXRtYXBfbmVzdGVkKTsKLW91dDU6CiAJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25n KXZteF9tc3JfYml0bWFwX2xvbmdtb2RlX3gyYXBpYyk7CiBvdXQ0OgogCWZyZWVfcGFnZSgodW5z aWduZWQgbG9uZyl2bXhfbXNyX2JpdG1hcF9sb25nbW9kZSk7CkBAIC02MzgyLDggKzYzNzEsNiBA QCBzdGF0aWMgX19leGl0IHZvaWQgaGFyZHdhcmVfdW5zZXR1cCh2b2lkKQogCWZyZWVfcGFnZSgo dW5zaWduZWQgbG9uZyl2bXhfaW9fYml0bWFwX2EpOwogCWZyZWVfcGFnZSgodW5zaWduZWQgbG9u Zyl2bXhfdm13cml0ZV9iaXRtYXApOwogCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl2bXhfdm1y ZWFkX2JpdG1hcCk7Ci0JaWYgKG5lc3RlZCkKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZt eF9tc3JfYml0bWFwX25lc3RlZCk7CiAKIAlmcmVlX2t2bV9hcmVhKCk7CiB9CkBAIC02ODI1LDEw ICs2ODEyLDE3IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3Ztb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KQogCQlyZXR1cm4gMTsKIAl9CiAKKwlpZiAoY3B1X2hhc192bXhfbXNyX2JpdG1hcCgpKSB7CisJ CXZteC0+bmVzdGVkLm1zcl9iaXRtYXAgPQorCQkJCSh1bnNpZ25lZCBsb25nICopX19nZXRfZnJl ZV9wYWdlKEdGUF9LRVJORUwpOworCQlpZiAoIXZteC0+bmVzdGVkLm1zcl9iaXRtYXApCisJCQln b3RvIG91dF9tc3JfYml0bWFwOworCX0KKwogCWlmIChlbmFibGVfc2hhZG93X3ZtY3MpIHsKIAkJ c2hhZG93X3ZtY3MgPSBhbGxvY192bWNzKCk7CiAJCWlmICghc2hhZG93X3ZtY3MpCi0JCQlyZXR1 cm4gLUVOT01FTTsKKwkJCWdvdG8gb3V0X3NoYWRvd192bWNzOwogCQkvKiBtYXJrIHZtY3MgYXMg c2hhZG93ICovCiAJCXNoYWRvd192bWNzLT5yZXZpc2lvbl9pZCB8PSAoMXUgPDwgMzEpOwogCQkv KiBpbml0IHNoYWRvdyB2bWNzICovCkBAIC02ODUwLDYgKzY4NDQsMTIgQEAgc3RhdGljIGludCBo YW5kbGVfdm1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJc2tpcF9lbXVsYXRlZF9pbnN0cnVj dGlvbih2Y3B1KTsKIAluZXN0ZWRfdm14X3N1Y2NlZWQodmNwdSk7CiAJcmV0dXJuIDE7CisKK291 dF9zaGFkb3dfdm1jczoKKwlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpdm14LT5uZXN0ZWQubXNy X2JpdG1hcCk7CisKK291dF9tc3JfYml0bWFwOgorCXJldHVybiAtRU5PTUVNOwogfQogCiAvKgpA QCAtNjkxOSw2ICs2OTE5LDEwIEBAIHN0YXRpYyB2b2lkIGZyZWVfbmVzdGVkKHN0cnVjdCB2Y3B1 X3ZteCAqdm14KQogCXZteC0+bmVzdGVkLnZteG9uID0gZmFsc2U7CiAJZnJlZV92cGlkKHZteC0+ bmVzdGVkLnZwaWQwMik7CiAJbmVzdGVkX3JlbGVhc2Vfdm1jczEyKHZteCk7CisJaWYgKHZteC0+ bmVzdGVkLm1zcl9iaXRtYXApIHsKKwkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteC0+bmVz dGVkLm1zcl9iaXRtYXApOworCQl2bXgtPm5lc3RlZC5tc3JfYml0bWFwID0gTlVMTDsKKwl9CiAJ aWYgKGVuYWJsZV9zaGFkb3dfdm1jcykKIAkJZnJlZV92bWNzKHZteC0+bmVzdGVkLmN1cnJlbnRf c2hhZG93X3ZtY3MpOwogCS8qIFVucGluIHBoeXNpY2FsIG1lbW9yeSB3ZSByZWZlcnJlZCB0byBp biBjdXJyZW50IHZtY3MwMiAqLwpAQCAtOTI0OCw4ICs5MjUyLDEwIEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBuZXN0ZWRfdm14X21lcmdlX21zcl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAog ewogCWludCBtc3I7CiAJc3RydWN0IHBhZ2UgKnBhZ2U7Ci0JdW5zaWduZWQgbG9uZyAqbXNyX2Jp dG1hcDsKKwl1bnNpZ25lZCBsb25nICptc3JfYml0bWFwX2wxOworCXVuc2lnbmVkIGxvbmcgKm1z cl9iaXRtYXBfbDAgPSB0b192bXgodmNwdSktPm5lc3RlZC5tc3JfYml0bWFwOwogCisJLyogVGhp cyBzaG9ydGN1dCBpcyBvayBiZWNhdXNlIHdlIHN1cHBvcnQgb25seSB4MkFQSUMgTVNScyBzbyBm YXIuICovCiAJaWYgKCFuZXN0ZWRfY3B1X2hhc192aXJ0X3gyYXBpY19tb2RlKHZtY3MxMikpCiAJ CXJldHVybiBmYWxzZTsKIApAQCAtOTI1OCw1OCArOTI2NCwzMiBAQCBzdGF0aWMgaW5saW5lIGJv b2wgbmVzdGVkX3ZteF9tZXJnZV9tc3JfYml0bWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJ V0FSTl9PTigxKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KLQltc3JfYml0bWFwID0gKHVuc2lnbmVk IGxvbmcgKilrbWFwKHBhZ2UpOworCW1zcl9iaXRtYXBfbDEgPSAodW5zaWduZWQgbG9uZyAqKWtt YXAocGFnZSk7CisKKwltZW1zZXQobXNyX2JpdG1hcF9sMCwgMHhmZiwgUEFHRV9TSVpFKTsKIAog CWlmIChuZXN0ZWRfY3B1X2hhc192aXJ0X3gyYXBpY19tb2RlKHZtY3MxMikpIHsKIAkJaWYgKG5l c3RlZF9jcHVfaGFzX2FwaWNfcmVnX3ZpcnQodm1jczEyKSkKIAkJCWZvciAobXNyID0gMHg4MDA7 IG1zciA8PSAweDhmZjsgbXNyKyspCiAJCQkJbmVzdGVkX3ZteF9kaXNhYmxlX2ludGVyY2VwdF9m b3JfbXNyKAotCQkJCQltc3JfYml0bWFwLAotCQkJCQl2bXhfbXNyX2JpdG1hcF9uZXN0ZWQsCisJ CQkJCW1zcl9iaXRtYXBfbDEsIG1zcl9iaXRtYXBfbDAsCiAJCQkJCW1zciwgTVNSX1RZUEVfUik7 Ci0JCS8qIFRQUiBpcyBhbGxvd2VkICovCi0JCW5lc3RlZF92bXhfZGlzYWJsZV9pbnRlcmNlcHRf Zm9yX21zcihtc3JfYml0bWFwLAotCQkJCXZteF9tc3JfYml0bWFwX25lc3RlZCwKKworCQluZXN0 ZWRfdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IoCisJCQkJbXNyX2JpdG1hcF9sMSwgbXNy X2JpdG1hcF9sMCwKIAkJCQlBUElDX0JBU0VfTVNSICsgKEFQSUNfVEFTS1BSSSA+PiA0KSwKIAkJ CQlNU1JfVFlQRV9SIHwgTVNSX1RZUEVfVyk7CisKIAkJaWYgKG5lc3RlZF9jcHVfaGFzX3ZpZCh2 bWNzMTIpKSB7Ci0JCQkvKiBFT0kgYW5kIHNlbGYtSVBJIGFyZSBhbGxvd2VkICovCiAJCQluZXN0 ZWRfdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IoCi0JCQkJbXNyX2JpdG1hcCwKLQkJCQl2 bXhfbXNyX2JpdG1hcF9uZXN0ZWQsCisJCQkJbXNyX2JpdG1hcF9sMSwgbXNyX2JpdG1hcF9sMCwK IAkJCQlBUElDX0JBU0VfTVNSICsgKEFQSUNfRU9JID4+IDQpLAogCQkJCU1TUl9UWVBFX1cpOwog CQkJbmVzdGVkX3ZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKAotCQkJCW1zcl9iaXRtYXAs Ci0JCQkJdm14X21zcl9iaXRtYXBfbmVzdGVkLAorCQkJCW1zcl9iaXRtYXBfbDEsIG1zcl9iaXRt YXBfbDAsCiAJCQkJQVBJQ19CQVNFX01TUiArIChBUElDX1NFTEZfSVBJID4+IDQpLAogCQkJCU1T Ul9UWVBFX1cpOwogCQl9Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogRW5hYmxlIHJlYWRpbmcgaW50 ZXJjZXB0IG9mIGFsbCB0aGUgeDJhcGljCi0JCSAqIE1TUnMuIFdlIHNob3VsZCBub3QgcmVseSBv biB2bWNzMTIgdG8gZG8gYW55Ci0JCSAqIG9wdGltaXphdGlvbnMgaGVyZSwgaXQgbWF5IGhhdmUg YmVlbiBtb2RpZmllZAotCQkgKiBieSBMMS4KLQkJICovCi0JCWZvciAobXNyID0gMHg4MDA7IG1z ciA8PSAweDhmZjsgbXNyKyspCi0JCQlfX3ZteF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9tc3IoCi0J CQkJdm14X21zcl9iaXRtYXBfbmVzdGVkLAotCQkJCW1zciwKLQkJCQlNU1JfVFlQRV9SKTsKLQot CQlfX3ZteF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9tc3IoCi0JCQkJdm14X21zcl9iaXRtYXBfbmVz dGVkLAotCQkJCUFQSUNfQkFTRV9NU1IgKyAoQVBJQ19UQVNLUFJJID4+IDQpLAotCQkJCU1TUl9U WVBFX1cpOwotCQlfX3ZteF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9tc3IoCi0JCQkJdm14X21zcl9i aXRtYXBfbmVzdGVkLAotCQkJCUFQSUNfQkFTRV9NU1IgKyAoQVBJQ19FT0kgPj4gNCksCi0JCQkJ TVNSX1RZUEVfVyk7Ci0JCV9fdm14X2VuYWJsZV9pbnRlcmNlcHRfZm9yX21zcigKLQkJCQl2bXhf bXNyX2JpdG1hcF9uZXN0ZWQsCi0JCQkJQVBJQ19CQVNFX01TUiArIChBUElDX1NFTEZfSVBJID4+ IDQpLAotCQkJCU1TUl9UWVBFX1cpOwogCX0KIAlrdW5tYXAocGFnZSk7CiAJbmVzdGVkX3JlbGVh c2VfcGFnZV9jbGVhbihwYWdlKTsKQEAgLTk3MjksMTAgKzk3MDksMTAgQEAgc3RhdGljIHZvaWQg cHJlcGFyZV92bWNzMDIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNz MTIpCiAJfQogCiAJaWYgKGNwdV9oYXNfdm14X21zcl9iaXRtYXAoKSAmJgotCSAgICBleGVjX2Nv bnRyb2wgJiBDUFVfQkFTRURfVVNFX01TUl9CSVRNQVBTKSB7Ci0JCW5lc3RlZF92bXhfbWVyZ2Vf bXNyX2JpdG1hcCh2Y3B1LCB2bWNzMTIpOwotCQkvKiBNU1JfQklUTUFQIHdpbGwgYmUgc2V0IGJ5 IGZvbGxvd2luZyB2bXhfc2V0X2VmZXIuICovCi0JfSBlbHNlCisJICAgIGV4ZWNfY29udHJvbCAm IENQVV9CQVNFRF9VU0VfTVNSX0JJVE1BUFMgJiYKKwkgICAgbmVzdGVkX3ZteF9tZXJnZV9tc3Jf Yml0bWFwKHZjcHUsIHZtY3MxMikpCisJCTsgLyogTVNSX0JJVE1BUCB3aWxsIGJlIHNldCBieSBm b2xsb3dpbmcgdm14X3NldF9lZmVyLiAqLworCWVsc2UKIAkJZXhlY19jb250cm9sICY9IH5DUFVf QkFTRURfVVNFX01TUl9CSVRNQVBTOwogCiAJLyoKCkZyb20gMGFhYjkxNTA2OGIwNjc2NWQwY2Vi OTllZjU3M2M0NWNmNGUxZDEwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRGF2aWQg TWF0bGFjayA8ZG1hdGxhY2tAZ29vZ2xlLmNvbT4KRGF0ZTogVHVlLCAxIEF1ZyAyMDE3IDE0OjAw OjQwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAwMy8zNF0gS1ZNOiBuVk1YOiBtYXJrIHZtY3MxMiBw YWdlcyBkaXJ0eSBvbiBMMiBleGl0Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cgpj b21taXQgYzlmMDQ0MDdmMmUwYjNmYzlmZjc5MTNjNjVmY2ZjYjBhNGI2MTU3MCB1cHN0cmVhbS4K ClRoZSBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcyBvZiBMMSdzIFZpcnR1YWwgQVBJQyBQYWdlIGFu ZCBQb3N0ZWQKSW50ZXJydXB0IGRlc2NyaXB0b3IgYXJlIGxvYWRlZCBpbnRvIHRoZSBWTUNTMDIu IFRoZSBDUFUgbWF5IHdyaXRlCnRvIHRoZXNlIHBhZ2VzIHZpYSB0aGVpciBob3N0IHBoeXNpY2Fs IGFkZHJlc3Mgd2hpbGUgTDIgaXMgcnVubmluZywKYnlwYXNzaW5nIGFkZHJlc3MtdHJhbnNsYXRp b24tYmFzZWQgZGlydHkgdHJhY2tpbmcgKGUuZy4gRVBUIHdyaXRlCnByb3RlY3Rpb24pLiBNYXJr IHRoZW0gZGlydHkgb24gZXZlcnkgZXhpdCBmcm9tIEwyIHRvIHByZXZlbnQgdGhlbQpmcm9tIGdl dHRpbmcgb3V0IG9mIHN5bmMgd2l0aCBkaXJ0eSB0cmFja2luZy4KCkFsc28gbWFyayB0aGUgdmly dHVhbCBBUElDIHBhZ2UgYW5kIHRoZSBwb3N0ZWQgaW50ZXJydXB0IGRlc2NyaXB0b3IKZGlydHkg d2hlbiBLVk0gaXMgdmlydHVhbGl6aW5nIHBvc3RlZCBpbnRlcnJ1cHQgcHJvY2Vzc2luZy4KClNp Z25lZC1vZmYtYnk6IERhdmlkIE1hdGxhY2sgPGRtYXRsYWNrQGdvb2dsZS5jb20+ClJldmlld2Vk LWJ5OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBS YWRpbSBLcsSNbcOhxZkgPHJrcmNtYXJAcmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIEh1 dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJjaC94ODYva3Zt L3ZteC5jIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMK aW5kZXggM2RmNjM2NDAwZWM4Li5iODg2YTdjOWVkNGIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2 bS92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14LmMKQEAgLTQ1MjcsNiArNDUyNywyOCBAQCBz dGF0aWMgaW50IHZteF9jcHVfdXNlc19hcGljdihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJcmV0 dXJuIGVuYWJsZV9hcGljdiAmJiBsYXBpY19pbl9rZXJuZWwodmNwdSk7CiB9CiAKK3N0YXRpYyB2 b2lkIG5lc3RlZF9tYXJrX3ZtY3MxMl9wYWdlc19kaXJ0eShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUp Cit7CisJc3RydWN0IHZtY3MxMiAqdm1jczEyID0gZ2V0X3ZtY3MxMih2Y3B1KTsKKwlnZm5fdCBn Zm47CisKKwkvKgorCSAqIERvbid0IG5lZWQgdG8gbWFyayB0aGUgQVBJQyBhY2Nlc3MgcGFnZSBk aXJ0eTsgaXQgaXMgbmV2ZXIKKwkgKiB3cml0dGVuIHRvIGJ5IHRoZSBDUFUgZHVyaW5nIEFQSUMg dmlydHVhbGl6YXRpb24uCisJICovCisKKwlpZiAobmVzdGVkX2NwdV9oYXModm1jczEyLCBDUFVf QkFTRURfVFBSX1NIQURPVykpIHsKKwkJZ2ZuID0gdm1jczEyLT52aXJ0dWFsX2FwaWNfcGFnZV9h ZGRyID4+IFBBR0VfU0hJRlQ7CisJCWt2bV92Y3B1X21hcmtfcGFnZV9kaXJ0eSh2Y3B1LCBnZm4p OworCX0KKworCWlmIChuZXN0ZWRfY3B1X2hhc19wb3N0ZWRfaW50cih2bWNzMTIpKSB7CisJCWdm biA9IHZtY3MxMi0+cG9zdGVkX2ludHJfZGVzY19hZGRyID4+IFBBR0VfU0hJRlQ7CisJCWt2bV92 Y3B1X21hcmtfcGFnZV9kaXJ0eSh2Y3B1LCBnZm4pOworCX0KK30KKworCiBzdGF0aWMgdm9pZCB2 bXhfY29tcGxldGVfbmVzdGVkX3Bvc3RlZF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 KQogewogCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUpOwpAQCAtNDUzNCwxOCAr NDU1NiwxNSBAQCBzdGF0aWMgdm9pZCB2bXhfY29tcGxldGVfbmVzdGVkX3Bvc3RlZF9pbnRlcnJ1 cHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCXZvaWQgKnZhcGljX3BhZ2U7CiAJdTE2IHN0YXR1 czsKIAotCWlmICh2bXgtPm5lc3RlZC5waV9kZXNjICYmCi0JICAgIHZteC0+bmVzdGVkLnBpX3Bl bmRpbmcpIHsKLQkJdm14LT5uZXN0ZWQucGlfcGVuZGluZyA9IGZhbHNlOwotCQlpZiAoIXBpX3Rl c3RfYW5kX2NsZWFyX29uKHZteC0+bmVzdGVkLnBpX2Rlc2MpKQotCQkJcmV0dXJuOwotCi0JCW1h eF9pcnIgPSBmaW5kX2xhc3RfYml0KAotCQkJKHVuc2lnbmVkIGxvbmcgKil2bXgtPm5lc3RlZC5w aV9kZXNjLT5waXIsIDI1Nik7CisJaWYgKCF2bXgtPm5lc3RlZC5waV9kZXNjIHx8ICF2bXgtPm5l c3RlZC5waV9wZW5kaW5nKQorCQlyZXR1cm47CiAKLQkJaWYgKG1heF9pcnIgPT0gMjU2KQotCQkJ cmV0dXJuOworCXZteC0+bmVzdGVkLnBpX3BlbmRpbmcgPSBmYWxzZTsKKwlpZiAoIXBpX3Rlc3Rf YW5kX2NsZWFyX29uKHZteC0+bmVzdGVkLnBpX2Rlc2MpKQorCQlyZXR1cm47CiAKKwltYXhfaXJy ID0gZmluZF9sYXN0X2JpdCgodW5zaWduZWQgbG9uZyAqKXZteC0+bmVzdGVkLnBpX2Rlc2MtPnBp ciwgMjU2KTsKKwlpZiAobWF4X2lyciAhPSAyNTYpIHsKIAkJdmFwaWNfcGFnZSA9IGttYXAodm14 LT5uZXN0ZWQudmlydHVhbF9hcGljX3BhZ2UpOwogCQlfX2t2bV9hcGljX3VwZGF0ZV9pcnIodm14 LT5uZXN0ZWQucGlfZGVzYy0+cGlyLCB2YXBpY19wYWdlKTsKIAkJa3VubWFwKHZteC0+bmVzdGVk LnZpcnR1YWxfYXBpY19wYWdlKTsKQEAgLTQ1NTcsNiArNDU3Niw4IEBAIHN0YXRpYyB2b2lkIHZt eF9jb21wbGV0ZV9uZXN0ZWRfcG9zdGVkX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUp CiAJCQl2bWNzX3dyaXRlMTYoR1VFU1RfSU5UUl9TVEFUVVMsIHN0YXR1cyk7CiAJCX0KIAl9CisK KwluZXN0ZWRfbWFya192bWNzMTJfcGFnZXNfZGlydHkodmNwdSk7CiB9CiAKIHN0YXRpYyBpbmxp bmUgYm9vbCBrdm1fdmNwdV90cmlnZ2VyX3Bvc3RlZF9pbnRlcnJ1cHQoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KQpAQCAtNzc2MSw2ICs3NzgyLDE4IEBAIHN0YXRpYyBib29sIG5lc3RlZF92bXhfZXhp dF9oYW5kbGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkJCQl2bWNzX3JlYWQzMihWTV9FWElU X0lOVFJfRVJST1JfQ09ERSksCiAJCQkJS1ZNX0lTQV9WTVgpOwogCisJLyoKKwkgKiBUaGUgaG9z dCBwaHlzaWNhbCBhZGRyZXNzZXMgb2Ygc29tZSBwYWdlcyBvZiBndWVzdCBtZW1vcnkKKwkgKiBh cmUgbG9hZGVkIGludG8gVk1DUzAyIChlLmcuIEwxJ3MgVmlydHVhbCBBUElDIFBhZ2UpLiBUaGUg Q1BVCisJICogbWF5IHdyaXRlIHRvIHRoZXNlIHBhZ2VzIHZpYSB0aGVpciBob3N0IHBoeXNpY2Fs IGFkZHJlc3Mgd2hpbGUKKwkgKiBMMiBpcyBydW5uaW5nLCBieXBhc3NpbmcgYW55IGFkZHJlc3Mt dHJhbnNsYXRpb24tYmFzZWQgZGlydHkKKwkgKiB0cmFja2luZyAoZS5nLiBFUFQgd3JpdGUgcHJv dGVjdGlvbikuCisJICoKKwkgKiBNYXJrIHRoZW0gZGlydHkgb24gZXZlcnkgZXhpdCBmcm9tIEwy IHRvIHByZXZlbnQgdGhlbSBmcm9tCisJICogZ2V0dGluZyBvdXQgb2Ygc3luYyB3aXRoIGRpcnR5 IHRyYWNraW5nLgorCSAqLworCW5lc3RlZF9tYXJrX3ZtY3MxMl9wYWdlc19kaXJ0eSh2Y3B1KTsK KwogCWlmICh2bXgtPm5lc3RlZC5uZXN0ZWRfcnVuX3BlbmRpbmcpCiAJCXJldHVybiBmYWxzZTsK IAoKRnJvbSBiZDA1ZjQ0ZGJmYTFmZTZjZTcwYjRmMjQzMjM1MWZkMjBhMmZjZDQ3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gTWF0dHNvbiA8am1hdHRzb25AZ29vZ2xlLmNvbT4K RGF0ZTogTW9uLCAyNyBOb3YgMjAxNyAxNzoyMjoyNSAtMDYwMApTdWJqZWN0OiBbUEFUQ0ggMDQv MzRdIEtWTTogblZNWDogRWxpbWluYXRlIHZtY3MwMiBwb29sCk1JTUUtVmVyc2lvbjogMS4wCkNv bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA4Yml0Cgpjb21taXQgZGUzYTAwMjFhNjA2MzVkZTk2YWE5MjcxM2MxYTMxYTk2NzQ3 ZDcyYyB1cHN0cmVhbS4KClRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYWR2YW50YWdlcyBvZiBh IHZtY3MwMiBwb29sIGhhdmUgbmV2ZXIgYmVlbgpyZWFsaXplZC4gVG8gc2ltcGxpZnkgdGhlIGNv ZGUsIGVsaW1pbmF0ZSB0aGUgcG9vbC4gSW5zdGVhZCwgYSBzaW5nbGUKdm1jczAyIGlzIGFsbG9j YXRlZCBwZXIgVkNQVSB3aGVuIHRoZSBWQ1BVIGVudGVycyBWTVggb3BlcmF0aW9uLgoKU2lnbmVk LW9mZi1ieTogSmltIE1hdHRzb24gPGptYXR0c29uQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYtYnk6 IE1hcmsgS2FuZGEgPG1hcmsua2FuZGFAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEFtZXlhIE1v cmUgPGFtZXlhLm1vcmVAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmlkIEhpbGRlbmJyYW5k IDxkYXZpZEByZWRoYXQuY29tPgpSZXZpZXdlZC1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlA cmVkaGF0LmNvbT4KU2lnbmVkLW9mZi1ieTogUmFkaW0gS3LEjW3DocWZIDxya3JjbWFyQHJlZGhh dC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24uY28udWs+ ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlv bi5vcmc+Cltid2g6IEJhY2twb3J0ZWQgdG8gNC40OgogLSBObyBsb2FkZWRfdm1jczo6c2hhZG93 X3ZtY3MgZmllbGQgdG8gaW5pdGlhbGlzZQogLSBBZGp1c3QgY29udGV4dF0KU2lnbmVkLW9mZi1i eTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJj aC94ODYva3ZtL3ZteC5jIHwgMTQ0ICsrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMTIy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBiL2FyY2gveDg2 L2t2bS92bXguYwppbmRleCBiODg2YTdjOWVkNGIuLmNmMTMxZjQxZDRiOSAxMDA2NDQKLS0tIGEv YXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtMTcyLDcgKzE3 Miw2IEBAIG1vZHVsZV9wYXJhbShwbGVfd2luZG93X21heCwgaW50LCBTX0lSVUdPKTsKIGV4dGVy biBjb25zdCB1bG9uZyB2bXhfcmV0dXJuOwogCiAjZGVmaW5lIE5SX0FVVE9MT0FEX01TUlMgOAot I2RlZmluZSBWTUNTMDJfUE9PTF9TSVpFIDEKIAogc3RydWN0IHZtY3MgewogCXUzMiByZXZpc2lv bl9pZDsKQEAgLTIwNSw3ICsyMDQsNyBAQCBzdHJ1Y3Qgc2hhcmVkX21zcl9lbnRyeSB7CiAgKiBz dG9yZWQgaW4gZ3Vlc3QgbWVtb3J5IHNwZWNpZmllZCBieSBWTVBUUkxELCBidXQgaXMgb3BhcXVl IHRvIHRoZSBndWVzdCwKICAqIHdoaWNoIG11c3QgYWNjZXNzIGl0IHVzaW5nIFZNUkVBRC9WTVdS SVRFL1ZNQ0xFQVIgaW5zdHJ1Y3Rpb25zLgogICogTW9yZSB0aGFuIG9uZSBvZiB0aGVzZSBzdHJ1 Y3R1cmVzIG1heSBleGlzdCwgaWYgTDEgcnVucyBtdWx0aXBsZSBMMiBndWVzdHMuCi0gKiBuZXN0 ZWRfdm14X3J1bigpIHdpbGwgdXNlIHRoZSBkYXRhIGhlcmUgdG8gYnVpbGQgYSB2bWNzMDI6IGEg Vk1DUyBmb3IgdGhlCisgKiBuZXN0ZWRfdm14X3J1bigpIHdpbGwgdXNlIHRoZSBkYXRhIGhlcmUg dG8gYnVpbGQgdGhlIHZtY3MwMjogYSBWTUNTIGZvciB0aGUKICAqIHVuZGVybHlpbmcgaGFyZHdh cmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJ1biBMMi4KICAqIFRoaXMgc3RydWN0dXJlIGlzIHBh Y2tlZCB0byBlbnN1cmUgdGhhdCBpdHMgbGF5b3V0IGlzIGlkZW50aWNhbCBhY3Jvc3MKICAqIG1h Y2hpbmVzIChuZWNlc3NhcnkgZm9yIGxpdmUgbWlncmF0aW9uKS4KQEAgLTM4NCwxMyArMzgzLDYg QEAgc3RydWN0IF9fcGFja2VkIHZtY3MxMiB7CiAgKi8KICNkZWZpbmUgVk1DUzEyX1NJWkUgMHgx MDAwCiAKLS8qIFVzZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3Qgdm1jczAyIHVzZWQgZm9yIHNvbWUg cmVjZW50bHkgdXNlZCB2bWNzMTJzICovCi1zdHJ1Y3Qgdm1jczAyX2xpc3QgewotCXN0cnVjdCBs aXN0X2hlYWQgbGlzdDsKLQlncGFfdCB2bXB0cjsKLQlzdHJ1Y3QgbG9hZGVkX3ZtY3Mgdm1jczAy OwotfTsKLQogLyoKICAqIFRoZSBuZXN0ZWRfdm14IHN0cnVjdHVyZSBpcyBwYXJ0IG9mIHZjcHVf dm14LCBhbmQgaG9sZHMgaW5mb3JtYXRpb24gd2UgbmVlZAogICogZm9yIGNvcnJlY3QgZW11bGF0 aW9uIG9mIFZNWCAoaS5lLiwgbmVzdGVkIFZNWCkgb24gdGhpcyB2Y3B1LgpAQCAtNDEyLDE2ICs0 MDQsMTYgQEAgc3RydWN0IG5lc3RlZF92bXggewogCSAqLwogCWJvb2wgc3luY19zaGFkb3dfdm1j czsKIAotCS8qIHZtY3MwMl9saXN0IGNhY2hlIG9mIFZNQ1NzIHJlY2VudGx5IHVzZWQgdG8gcnVu IEwyIGd1ZXN0cyAqLwotCXN0cnVjdCBsaXN0X2hlYWQgdm1jczAyX3Bvb2w7Ci0JaW50IHZtY3Mw Ml9udW07CiAJdTY0IHZtY3MwMV90c2Nfb2Zmc2V0OwogCWJvb2wgY2hhbmdlX3ZtY3MwMV92aXJ0 dWFsX3gyYXBpY19tb2RlOwogCS8qIEwyIG11c3QgcnVuIG5leHQsIGFuZCBtdXN0bid0IGRlY2lk ZSB0byBleGl0IHRvIEwxLiAqLwogCWJvb2wgbmVzdGVkX3J1bl9wZW5kaW5nOworCisJc3RydWN0 IGxvYWRlZF92bWNzIHZtY3MwMjsKKwogCS8qCi0JICogR3Vlc3QgcGFnZXMgcmVmZXJyZWQgdG8g aW4gdm1jczAyIHdpdGggaG9zdC1waHlzaWNhbCBwb2ludGVycywgc28KLQkgKiB3ZSBtdXN0IGtl ZXAgdGhlbSBwaW5uZWQgd2hpbGUgTDIgcnVucy4KKwkgKiBHdWVzdCBwYWdlcyByZWZlcnJlZCB0 byBpbiB0aGUgdm1jczAyIHdpdGggaG9zdC1waHlzaWNhbAorCSAqIHBvaW50ZXJzLCBzbyB3ZSBt dXN0IGtlZXAgdGhlbSBwaW5uZWQgd2hpbGUgTDIgcnVucy4KIAkgKi8KIAlzdHJ1Y3QgcGFnZSAq YXBpY19hY2Nlc3NfcGFnZTsKIAlzdHJ1Y3QgcGFnZSAqdmlydHVhbF9hcGljX3BhZ2U7CkBAIC02 NDM1LDkzICs2NDI3LDYgQEAgc3RhdGljIGludCBoYW5kbGVfbW9uaXRvcihzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpCiB9CiAKIC8qCi0gKiBUbyBydW4gYW4gTDIgZ3Vlc3QsIHdlIG5lZWQgYSB2bWNz MDIgYmFzZWQgb24gdGhlIEwxLXNwZWNpZmllZCB2bWNzMTIuCi0gKiBXZSBjb3VsZCByZXVzZSBh IHNpbmdsZSBWTUNTIGZvciBhbGwgdGhlIEwyIGd1ZXN0cywgYnV0IHdlIGFsc28gd2FudCB0aGUK LSAqIG9wdGlvbiB0byBhbGxvY2F0ZSBhIHNlcGFyYXRlIHZtY3MwMiBmb3IgZWFjaCBzZXBhcmF0 ZSBsb2FkZWQgdm1jczEyIC0gdGhpcwotICogYWxsb3dzIGtlZXBpbmcgdGhlbSBsb2FkZWQgb24g dGhlIHByb2Nlc3NvciwgYW5kIGluIHRoZSBmdXR1cmUgd2lsbCBhbGxvdwotICogb3B0aW1pemF0 aW9ucyB3aGVyZSBwcmVwYXJlX3ZtY3MwMiBkb2Vzbid0IG5lZWQgdG8gc2V0IGFsbCB0aGUgZmll bGRzIG9uCi0gKiBldmVyeSBlbnRyeSBpZiB0aGV5IG5ldmVyIGNoYW5nZS4KLSAqIFNvIHdlIGtl ZXAsIGluIHZteC0+bmVzdGVkLnZtY3MwMl9wb29sLCBhIGNhY2hlIG9mIHNpemUgVk1DUzAyX1BP T0xfU0laRQotICogKD49MCkgd2l0aCBhIHZtY3MwMiBmb3IgZWFjaCByZWNlbnRseSBsb2FkZWQg dm1jczEycywgbW9zdCByZWNlbnQgZmlyc3QuCi0gKgotICogVGhlIGZvbGxvd2luZyBmdW5jdGlv bnMgYWxsb2NhdGUgYW5kIGZyZWUgYSB2bWNzMDIgaW4gdGhpcyBwb29sLgotICovCi0KLS8qIEdl dCBhIFZNQ1MgZnJvbSB0aGUgcG9vbCB0byB1c2UgYXMgdm1jczAyIGZvciB0aGUgY3VycmVudCB2 bWNzMTIuICovCi1zdGF0aWMgc3RydWN0IGxvYWRlZF92bWNzICpuZXN0ZWRfZ2V0X2N1cnJlbnRf dm1jczAyKHN0cnVjdCB2Y3B1X3ZteCAqdm14KQotewotCXN0cnVjdCB2bWNzMDJfbGlzdCAqaXRl bTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZW0sICZ2bXgtPm5lc3RlZC52bWNzMDJfcG9vbCwg bGlzdCkKLQkJaWYgKGl0ZW0tPnZtcHRyID09IHZteC0+bmVzdGVkLmN1cnJlbnRfdm1wdHIpIHsK LQkJCWxpc3RfbW92ZSgmaXRlbS0+bGlzdCwgJnZteC0+bmVzdGVkLnZtY3MwMl9wb29sKTsKLQkJ CXJldHVybiAmaXRlbS0+dm1jczAyOwotCQl9Ci0KLQlpZiAodm14LT5uZXN0ZWQudm1jczAyX251 bSA+PSBtYXgoVk1DUzAyX1BPT0xfU0laRSwgMSkpIHsKLQkJLyogUmVjeWNsZSB0aGUgbGVhc3Qg cmVjZW50bHkgdXNlZCBWTUNTLiAqLwotCQlpdGVtID0gbGlzdF9lbnRyeSh2bXgtPm5lc3RlZC52 bWNzMDJfcG9vbC5wcmV2LAotCQkJc3RydWN0IHZtY3MwMl9saXN0LCBsaXN0KTsKLQkJaXRlbS0+ dm1wdHIgPSB2bXgtPm5lc3RlZC5jdXJyZW50X3ZtcHRyOwotCQlsaXN0X21vdmUoJml0ZW0tPmxp c3QsICZ2bXgtPm5lc3RlZC52bWNzMDJfcG9vbCk7Ci0JCXJldHVybiAmaXRlbS0+dm1jczAyOwot CX0KLQotCS8qIENyZWF0ZSBhIG5ldyBWTUNTICovCi0JaXRlbSA9IGttYWxsb2Moc2l6ZW9mKHN0 cnVjdCB2bWNzMDJfbGlzdCksIEdGUF9LRVJORUwpOwotCWlmICghaXRlbSkKLQkJcmV0dXJuIE5V TEw7Ci0JaXRlbS0+dm1jczAyLnZtY3MgPSBhbGxvY192bWNzKCk7Ci0JaWYgKCFpdGVtLT52bWNz MDIudm1jcykgewotCQlrZnJlZShpdGVtKTsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCWxvYWRlZF92 bWNzX2luaXQoJml0ZW0tPnZtY3MwMik7Ci0JaXRlbS0+dm1wdHIgPSB2bXgtPm5lc3RlZC5jdXJy ZW50X3ZtcHRyOwotCWxpc3RfYWRkKCYoaXRlbS0+bGlzdCksICYodm14LT5uZXN0ZWQudm1jczAy X3Bvb2wpKTsKLQl2bXgtPm5lc3RlZC52bWNzMDJfbnVtKys7Ci0JcmV0dXJuICZpdGVtLT52bWNz MDI7Ci19Ci0KLS8qIEZyZWUgYW5kIHJlbW92ZSBmcm9tIHBvb2wgYSB2bWNzMDIgc2F2ZWQgZm9y IGEgdm1jczEyIChpZiB0aGVyZSBpcyBvbmUpICovCi1zdGF0aWMgdm9pZCBuZXN0ZWRfZnJlZV92 bWNzMDIoc3RydWN0IHZjcHVfdm14ICp2bXgsIGdwYV90IHZtcHRyKQotewotCXN0cnVjdCB2bWNz MDJfbGlzdCAqaXRlbTsKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0ZW0sICZ2bXgtPm5lc3RlZC52 bWNzMDJfcG9vbCwgbGlzdCkKLQkJaWYgKGl0ZW0tPnZtcHRyID09IHZtcHRyKSB7Ci0JCQlmcmVl X2xvYWRlZF92bWNzKCZpdGVtLT52bWNzMDIpOwotCQkJbGlzdF9kZWwoJml0ZW0tPmxpc3QpOwot CQkJa2ZyZWUoaXRlbSk7Ci0JCQl2bXgtPm5lc3RlZC52bWNzMDJfbnVtLS07Ci0JCQlyZXR1cm47 Ci0JCX0KLX0KLQotLyoKLSAqIEZyZWUgYWxsIFZNQ1NzIHNhdmVkIGZvciB0aGlzIHZjcHUsIGV4 Y2VwdCB0aGUgb25lIHBvaW50ZWQgYnkKLSAqIHZteC0+bG9hZGVkX3ZtY3MuIFdlIG11c3QgYmUg cnVubmluZyBMMSwgc28gdm14LT5sb2FkZWRfdm1jcwotICogbXVzdCBiZSAmdm14LT52bWNzMDEu Ci0gKi8KLXN0YXRpYyB2b2lkIG5lc3RlZF9mcmVlX2FsbF9zYXZlZF92bWNzcyhzdHJ1Y3QgdmNw dV92bXggKnZteCkKLXsKLQlzdHJ1Y3Qgdm1jczAyX2xpc3QgKml0ZW0sICpuOwotCi0JV0FSTl9P Tih2bXgtPmxvYWRlZF92bWNzICE9ICZ2bXgtPnZtY3MwMSk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKGl0ZW0sIG4sICZ2bXgtPm5lc3RlZC52bWNzMDJfcG9vbCwgbGlzdCkgewotCQkvKgot CQkgKiBTb21ldGhpbmcgd2lsbCBsZWFrIGlmIHRoZSBhYm92ZSBXQVJOIHRyaWdnZXJzLiAgQmV0 dGVyIHRoYW4KLQkJICogYSB1c2UtYWZ0ZXItZnJlZS4KLQkJICovCi0JCWlmICh2bXgtPmxvYWRl ZF92bWNzID09ICZpdGVtLT52bWNzMDIpCi0JCQljb250aW51ZTsKLQotCQlmcmVlX2xvYWRlZF92 bWNzKCZpdGVtLT52bWNzMDIpOwotCQlsaXN0X2RlbCgmaXRlbS0+bGlzdCk7Ci0JCWtmcmVlKGl0 ZW0pOwotCQl2bXgtPm5lc3RlZC52bWNzMDJfbnVtLS07Ci0JfQotfQotCi0vKgogICogVGhlIGZv bGxvd2luZyAzIGZ1bmN0aW9ucywgbmVzdGVkX3ZteF9zdWNjZWVkKCkvZmFpbFZhbGlkKCkvZmFp bEludmFsaWQoKSwKICAqIHNldCB0aGUgc3VjY2VzcyBvciBlcnJvciBjb2RlIG9mIGFuIGVtdWxh dGVkIFZNWCBpbnN0cnVjdGlvbiwgYXMgc3BlY2lmaWVkCiAgKiBieSBWb2wgMkIsIFZNWCBJbnN0 cnVjdGlvbiBSZWZlcmVuY2UsICJDb252ZW50aW9ucyIuCkBAIC02ODMzLDYgKzY3MzgsMTEgQEAg c3RhdGljIGludCBoYW5kbGVfdm1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCXJldHVybiAx OwogCX0KIAorCXZteC0+bmVzdGVkLnZtY3MwMi52bWNzID0gYWxsb2Nfdm1jcygpOworCWlmICgh dm14LT5uZXN0ZWQudm1jczAyLnZtY3MpCisJCWdvdG8gb3V0X3ZtY3MwMjsKKwlsb2FkZWRfdm1j c19pbml0KCZ2bXgtPm5lc3RlZC52bWNzMDIpOworCiAJaWYgKGNwdV9oYXNfdm14X21zcl9iaXRt YXAoKSkgewogCQl2bXgtPm5lc3RlZC5tc3JfYml0bWFwID0KIAkJCQkodW5zaWduZWQgbG9uZyAq KV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVMKTsKQEAgLTY4NTEsOSArNjc2MSw2IEBAIHN0YXRp YyBpbnQgaGFuZGxlX3Ztb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQl2bXgtPm5lc3RlZC5j dXJyZW50X3NoYWRvd192bWNzID0gc2hhZG93X3ZtY3M7CiAJfQogCi0JSU5JVF9MSVNUX0hFQUQo Jih2bXgtPm5lc3RlZC52bWNzMDJfcG9vbCkpOwotCXZteC0+bmVzdGVkLnZtY3MwMl9udW0gPSAw OwotCiAJaHJ0aW1lcl9pbml0KCZ2bXgtPm5lc3RlZC5wcmVlbXB0aW9uX3RpbWVyLCBDTE9DS19N T05PVE9OSUMsCiAJCSAgICAgSFJUSU1FUl9NT0RFX1JFTCk7CiAJdm14LT5uZXN0ZWQucHJlZW1w dGlvbl90aW1lci5mdW5jdGlvbiA9IHZteF9wcmVlbXB0aW9uX3RpbWVyX2ZuOwpAQCAtNjg3MCw2 ICs2Nzc3LDkgQEAgb3V0X3NoYWRvd192bWNzOgogCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl2 bXgtPm5lc3RlZC5tc3JfYml0bWFwKTsKIAogb3V0X21zcl9iaXRtYXA6CisJZnJlZV9sb2FkZWRf dm1jcygmdm14LT5uZXN0ZWQudm1jczAyKTsKKworb3V0X3ZtY3MwMjoKIAlyZXR1cm4gLUVOT01F TTsKIH0KIApAQCAtNjk0Niw3ICs2ODU2LDcgQEAgc3RhdGljIHZvaWQgZnJlZV9uZXN0ZWQoc3Ry dWN0IHZjcHVfdm14ICp2bXgpCiAJfQogCWlmIChlbmFibGVfc2hhZG93X3ZtY3MpCiAJCWZyZWVf dm1jcyh2bXgtPm5lc3RlZC5jdXJyZW50X3NoYWRvd192bWNzKTsKLQkvKiBVbnBpbiBwaHlzaWNh bCBtZW1vcnkgd2UgcmVmZXJyZWQgdG8gaW4gY3VycmVudCB2bWNzMDIgKi8KKwkvKiBVbnBpbiBw aHlzaWNhbCBtZW1vcnkgd2UgcmVmZXJyZWQgdG8gaW4gdGhlIHZtY3MwMiAqLwogCWlmICh2bXgt Pm5lc3RlZC5hcGljX2FjY2Vzc19wYWdlKSB7CiAJCW5lc3RlZF9yZWxlYXNlX3BhZ2Uodm14LT5u ZXN0ZWQuYXBpY19hY2Nlc3NfcGFnZSk7CiAJCXZteC0+bmVzdGVkLmFwaWNfYWNjZXNzX3BhZ2Ug PSBOVUxMOwpAQCAtNjk2Miw3ICs2ODcyLDcgQEAgc3RhdGljIHZvaWQgZnJlZV9uZXN0ZWQoc3Ry dWN0IHZjcHVfdm14ICp2bXgpCiAJCXZteC0+bmVzdGVkLnBpX2Rlc2MgPSBOVUxMOwogCX0KIAot CW5lc3RlZF9mcmVlX2FsbF9zYXZlZF92bWNzcyh2bXgpOworCWZyZWVfbG9hZGVkX3ZtY3MoJnZt eC0+bmVzdGVkLnZtY3MwMik7CiB9CiAKIC8qIEVtdWxhdGUgdGhlIFZNWE9GRiBpbnN0cnVjdGlv biAqLwpAQCAtNjk5Niw4ICs2OTA2LDYgQEAgc3RhdGljIGludCBoYW5kbGVfdm1jbGVhcihzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCQl2bXB0ciArIG9mZnNldG9mKHN0cnVjdCB2bWNzMTIsIGxh dW5jaF9zdGF0ZSksCiAJCQkmemVybywgc2l6ZW9mKHplcm8pKTsKIAotCW5lc3RlZF9mcmVlX3Zt Y3MwMih2bXgsIHZtcHRyKTsKLQogCXNraXBfZW11bGF0ZWRfaW5zdHJ1Y3Rpb24odmNwdSk7CiAJ bmVzdGVkX3ZteF9zdWNjZWVkKHZjcHUpOwogCXJldHVybiAxOwpAQCAtNzc4NCwxMCArNzY5Miwx MSBAQCBzdGF0aWMgYm9vbCBuZXN0ZWRfdm14X2V4aXRfaGFuZGxlZChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpCiAKIAkvKgogCSAqIFRoZSBob3N0IHBoeXNpY2FsIGFkZHJlc3NlcyBvZiBzb21lIHBh Z2VzIG9mIGd1ZXN0IG1lbW9yeQotCSAqIGFyZSBsb2FkZWQgaW50byBWTUNTMDIgKGUuZy4gTDEn cyBWaXJ0dWFsIEFQSUMgUGFnZSkuIFRoZSBDUFUKLQkgKiBtYXkgd3JpdGUgdG8gdGhlc2UgcGFn ZXMgdmlhIHRoZWlyIGhvc3QgcGh5c2ljYWwgYWRkcmVzcyB3aGlsZQotCSAqIEwyIGlzIHJ1bm5p bmcsIGJ5cGFzc2luZyBhbnkgYWRkcmVzcy10cmFuc2xhdGlvbi1iYXNlZCBkaXJ0eQotCSAqIHRy YWNraW5nIChlLmcuIEVQVCB3cml0ZSBwcm90ZWN0aW9uKS4KKwkgKiBhcmUgbG9hZGVkIGludG8g dGhlIHZtY3MwMiAoZS5nLiB2bWNzMTIncyBWaXJ0dWFsIEFQSUMKKwkgKiBQYWdlKS4gVGhlIENQ VSBtYXkgd3JpdGUgdG8gdGhlc2UgcGFnZXMgdmlhIHRoZWlyIGhvc3QKKwkgKiBwaHlzaWNhbCBh ZGRyZXNzIHdoaWxlIEwyIGlzIHJ1bm5pbmcsIGJ5cGFzc2luZyBhbnkKKwkgKiBhZGRyZXNzLXRy YW5zbGF0aW9uLWJhc2VkIGRpcnR5IHRyYWNraW5nIChlLmcuIEVQVCB3cml0ZQorCSAqIHByb3Rl Y3Rpb24pLgogCSAqCiAJICogTWFyayB0aGVtIGRpcnR5IG9uIGV2ZXJ5IGV4aXQgZnJvbSBMMiB0 byBwcmV2ZW50IHRoZW0gZnJvbQogCSAqIGdldHRpbmcgb3V0IG9mIHN5bmMgd2l0aCBkaXJ0eSB0 cmFja2luZy4KQEAgLTk4ODksNyArOTc5OCw2IEBAIHN0YXRpYyBpbnQgbmVzdGVkX3ZteF9ydW4o c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxhdW5jaCkKIAlzdHJ1Y3Qgdm1jczEyICp2bWNz MTI7CiAJc3RydWN0IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7CiAJaW50IGNwdTsKLQlz dHJ1Y3QgbG9hZGVkX3ZtY3MgKnZtY3MwMjsKIAlib29sIGlhMzJlOwogCXUzMiBtc3JfZW50cnlf aWR4OwogCkBAIC0xMDAyOSwxMCArOTkzNyw2IEBAIHN0YXRpYyBpbnQgbmVzdGVkX3ZteF9ydW4o c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxhdW5jaCkKIAkgKiB0aGUgbmVzdGVkIGVudHJ5 LgogCSAqLwogCi0Jdm1jczAyID0gbmVzdGVkX2dldF9jdXJyZW50X3ZtY3MwMih2bXgpOwotCWlm ICghdm1jczAyKQotCQlyZXR1cm4gLUVOT01FTTsKLQogCWVudGVyX2d1ZXN0X21vZGUodmNwdSk7 CiAKIAl2bXgtPm5lc3RlZC52bWNzMDFfdHNjX29mZnNldCA9IHZtY3NfcmVhZDY0KFRTQ19PRkZT RVQpOwpAQCAtMTAwNDEsNyArOTk0NSw3IEBAIHN0YXRpYyBpbnQgbmVzdGVkX3ZteF9ydW4oc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGxhdW5jaCkKIAkJdm14LT5uZXN0ZWQudm1jczAxX2Rl YnVnY3RsID0gdm1jc19yZWFkNjQoR1VFU1RfSUEzMl9ERUJVR0NUTCk7CiAKIAljcHUgPSBnZXRf Y3B1KCk7Ci0Jdm14LT5sb2FkZWRfdm1jcyA9IHZtY3MwMjsKKwl2bXgtPmxvYWRlZF92bWNzID0g JnZteC0+bmVzdGVkLnZtY3MwMjsKIAl2bXhfdmNwdV9wdXQodmNwdSk7CiAJdm14X3ZjcHVfbG9h ZCh2Y3B1LCBjcHUpOwogCXZjcHUtPmNwdSA9IGNwdTsKQEAgLTEwNTUzLDEwICsxMDQ1Nyw2IEBA IHN0YXRpYyB2b2lkIG5lc3RlZF92bXhfdm1leGl0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMy IGV4aXRfcmVhc29uLAogCXZtX2V4aXRfY29udHJvbHNfaW5pdCh2bXgsIHZtY3NfcmVhZDMyKFZN X0VYSVRfQ09OVFJPTFMpKTsKIAl2bXhfc2VnbWVudF9jYWNoZV9jbGVhcih2bXgpOwogCi0JLyog aWYgbm8gdm1jczAyIGNhY2hlIHJlcXVlc3RlZCwgcmVtb3ZlIHRoZSBvbmUgd2UgdXNlZCAqLwot CWlmIChWTUNTMDJfUE9PTF9TSVpFID09IDApCi0JCW5lc3RlZF9mcmVlX3ZtY3MwMih2bXgsIHZt eC0+bmVzdGVkLmN1cnJlbnRfdm1wdHIpOwotCiAJbG9hZF92bWNzMTJfaG9zdF9zdGF0ZSh2Y3B1 LCB2bWNzMTIpOwogCiAJLyogVXBkYXRlIFRTQ19PRkZTRVQgaWYgVFNDIHdhcyBjaGFuZ2VkIHdo aWxlIEwyIHJhbiAqLwoKRnJvbSA3NWNlYzc5YTY0YmE2M2Y2YmNmMzg1ZDdjYWE4OTk3YjNmNWNj NjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYW9sbyBCb256aW5pIDxwYm9uemlu aUByZWRoYXQuY29tPgpEYXRlOiBUaHUsIDExIEphbiAyMDE4IDEyOjE2OjE1ICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAwNS8zNF0gS1ZNOiBWTVg6IGludHJvZHVjZSBhbGxvY19sb2FkZWRfdm1jcwoK Y29tbWl0IGYyMWYxNjVlZjkyMmMyMTQ2Y2M1YmRjNjIwZjU0Mjk1M2M0MTcxNGIgdXBzdHJlYW0u CgpHcm91cCB0b2dldGhlciB0aGUgY2FsbHMgdG8gYWxsb2Nfdm1jcyBhbmQgbG9hZGVkX3ZtY3Nf aW5pdC4gIFNvb24gd2UnbGwgYWxzbwphbGxvY2F0ZSBhbiBNU1IgYml0bWFwIHRoZXJlLgoKU2ln bmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KU2lnbmVkLW9m Zi1ieTogRGF2aWQgV29vZGhvdXNlIDxkd213QGFtYXpvbi5jby51az4KU2lnbmVkLW9mZi1ieTog R3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KW2J3aDogQmFj a3BvcnRlZCB0byA0LjQ6CiAtIE5vIGxvYWRlZF92bWNzOjpzaGFkb3dfdm1jcyBmaWVsZCB0byBp bml0aWFsaXNlCiAtIEFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdz IDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9rdm0vdm14LmMg fCAzNSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQs IDIyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2t2bS92bXguYyBiL2FyY2gveDg2L2t2bS92bXguYwppbmRleCBjZjEzMWY0MWQ0YjkuLjVmZmMy NzMxZTE0ZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2 bS92bXguYwpAQCAtMzM0NSwxMSArMzM0NSw2IEBAIHN0YXRpYyBzdHJ1Y3Qgdm1jcyAqYWxsb2Nf dm1jc19jcHUoaW50IGNwdSkKIAlyZXR1cm4gdm1jczsKIH0KIAotc3RhdGljIHN0cnVjdCB2bWNz ICphbGxvY192bWNzKHZvaWQpCi17Ci0JcmV0dXJuIGFsbG9jX3ZtY3NfY3B1KHJhd19zbXBfcHJv Y2Vzc29yX2lkKCkpOwotfQotCiBzdGF0aWMgdm9pZCBmcmVlX3ZtY3Moc3RydWN0IHZtY3MgKnZt Y3MpCiB7CiAJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyl2bWNzLCB2bWNzX2NvbmZpZy5vcmRl cik7CkBAIC0zMzY3LDYgKzMzNjIsMjEgQEAgc3RhdGljIHZvaWQgZnJlZV9sb2FkZWRfdm1jcyhz dHJ1Y3QgbG9hZGVkX3ZtY3MgKmxvYWRlZF92bWNzKQogCWxvYWRlZF92bWNzLT52bWNzID0gTlVM TDsKIH0KIAorc3RhdGljIHN0cnVjdCB2bWNzICphbGxvY192bWNzKHZvaWQpCit7CisJcmV0dXJu IGFsbG9jX3ZtY3NfY3B1KHJhd19zbXBfcHJvY2Vzc29yX2lkKCkpOworfQorCitzdGF0aWMgaW50 IGFsbG9jX2xvYWRlZF92bWNzKHN0cnVjdCBsb2FkZWRfdm1jcyAqbG9hZGVkX3ZtY3MpCit7CisJ bG9hZGVkX3ZtY3MtPnZtY3MgPSBhbGxvY192bWNzKCk7CisJaWYgKCFsb2FkZWRfdm1jcy0+dm1j cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlsb2FkZWRfdm1jc19pbml0KGxvYWRlZF92bWNzKTsK KwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgZnJlZV9rdm1fYXJlYSh2b2lkKQogewogCWlu dCBjcHU7CkBAIC02Njk5LDYgKzY3MDksNyBAQCBzdGF0aWMgaW50IGhhbmRsZV92bW9uKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSkKIAlzdHJ1Y3Qgdm1jcyAqc2hhZG93X3ZtY3M7CiAJY29uc3QgdTY0 IFZNWE9OX05FRURFRF9GRUFUVVJFUyA9IEZFQVRVUkVfQ09OVFJPTF9MT0NLRUQKIAkJfCBGRUFU VVJFX0NPTlRST0xfVk1YT05fRU5BQkxFRF9PVVRTSURFX1NNWDsKKwlpbnQgcjsKIAogCS8qIFRo ZSBJbnRlbCBWTVggSW5zdHJ1Y3Rpb24gUmVmZXJlbmNlIGxpc3RzIGEgYnVuY2ggb2YgYml0cyB0 aGF0CiAJICogYXJlIHByZXJlcXVpc2l0ZSB0byBydW5uaW5nIFZNWE9OLCBtb3N0IG5vdGFibHkg Y3I0LlZNWEUgbXVzdCBiZQpAQCAtNjczOCwxMCArNjc0OSw5IEBAIHN0YXRpYyBpbnQgaGFuZGxl X3Ztb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlyZXR1cm4gMTsKIAl9CiAKLQl2bXgtPm5l c3RlZC52bWNzMDIudm1jcyA9IGFsbG9jX3ZtY3MoKTsKLQlpZiAoIXZteC0+bmVzdGVkLnZtY3Mw Mi52bWNzKQorCXIgPSBhbGxvY19sb2FkZWRfdm1jcygmdm14LT5uZXN0ZWQudm1jczAyKTsKKwlp ZiAociA8IDApCiAJCWdvdG8gb3V0X3ZtY3MwMjsKLQlsb2FkZWRfdm1jc19pbml0KCZ2bXgtPm5l c3RlZC52bWNzMDIpOwogCiAJaWYgKGNwdV9oYXNfdm14X21zcl9iaXRtYXAoKSkgewogCQl2bXgt Pm5lc3RlZC5tc3JfYml0bWFwID0KQEAgLTg4MDIsMTYgKzg4MTIsMTUgQEAgc3RhdGljIHN0cnVj dCBrdm1fdmNwdSAqdm14X2NyZWF0ZV92Y3B1KHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgaW50 IGlkKQogCWlmICghdm14LT5ndWVzdF9tc3JzKQogCQlnb3RvIGZyZWVfcG1sOwogCi0Jdm14LT5s b2FkZWRfdm1jcyA9ICZ2bXgtPnZtY3MwMTsKLQl2bXgtPmxvYWRlZF92bWNzLT52bWNzID0gYWxs b2Nfdm1jcygpOwotCWlmICghdm14LT5sb2FkZWRfdm1jcy0+dm1jcykKLQkJZ290byBmcmVlX21z cnM7CiAJaWYgKCF2bW1fZXhjbHVzaXZlKQogCQlrdm1fY3B1X3ZteG9uKF9fcGEocGVyX2NwdSh2 bXhhcmVhLCByYXdfc21wX3Byb2Nlc3Nvcl9pZCgpKSkpOwotCWxvYWRlZF92bWNzX2luaXQodm14 LT5sb2FkZWRfdm1jcyk7CisJZXJyID0gYWxsb2NfbG9hZGVkX3ZtY3MoJnZteC0+dm1jczAxKTsK IAlpZiAoIXZtbV9leGNsdXNpdmUpCiAJCWt2bV9jcHVfdm14b2ZmKCk7CisJaWYgKGVyciA8IDAp CisJCWdvdG8gZnJlZV9tc3JzOwogCisJdm14LT5sb2FkZWRfdm1jcyA9ICZ2bXgtPnZtY3MwMTsK IAljcHUgPSBnZXRfY3B1KCk7CiAJdm14X3ZjcHVfbG9hZCgmdm14LT52Y3B1LCBjcHUpOwogCXZt eC0+dmNwdS5jcHUgPSBjcHU7CgpGcm9tIGUyOTQ1MWE4ZGUyYTY0MzNkY2UyOTJlYWE1MTAzNWJj NzE2ZmE1MzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFBhb2xvIEJvbnppbmkgPHBi b256aW5pQHJlZGhhdC5jb20+CkRhdGU6IFR1ZSwgMTYgSmFuIDIwMTggMTY6NTE6MTggKzAxMDAK U3ViamVjdDogW1BBVENIIDA2LzM0XSBLVk06IFZNWDogbWFrZSBNU1IgYml0bWFwcyBwZXItVkNQ VQoKY29tbWl0IDkwNGUxNGZiN2NiOTY0MDFhN2RjODAzY2EyODYzZmQ1YmEzMmZmZTYgdXBzdHJl YW0uCgpQbGFjZSB0aGUgTVNSIGJpdG1hcCBpbiBzdHJ1Y3QgbG9hZGVkX3ZtY3MsIGFuZCB1cGRh dGUgaXQgaW4gcGxhY2UKZXZlcnkgdGltZSB0aGUgeDJhcGljIG9yIEFQSUN2IHN0YXRlIGNhbiBj aGFuZ2UuICBUaGlzIGlzIHJhcmUgYW5kCnRoZSBsb29wIGNhbiBoYW5kbGUgNjQgTVNScyBwZXIg aXRlcmF0aW9uLCBpbiBhIHNpbWlsYXIgZmFzaGlvbiBhcwpuZXN0ZWRfdm14X3ByZXBhcmVfbXNy X2JpdG1hcC4KClRoaXMgcHJlcGFyZXMgZm9yIGNob29zaW5nLCBvbiBhIHBlci1WTSBiYXNpcywg d2hldGhlciB0byBpbnRlcmNlcHQKdGhlIFNQRUNfQ1RSTCBhbmQgUFJFRF9DTUQgTVNScy4KClN1 Z2dlc3RlZC1ieTogSmltIE1hdHRzb24gPGptYXR0c29uQGdvb2dsZS5jb20+ClNpZ25lZC1vZmYt Ynk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERh dmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24uY28udWs+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3Jv YWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Cltid2g6IEJhY2twb3J0ZWQg dG8gNC40OgogLSBBUElDdiBzdXBwb3J0IGxvb2tlZCBkaWZmZXJlbnQKIC0gV2Ugc3RpbGwgbmVl ZCB0byBpbnRlcmNlcHQgdGhlIEFQSUNfSUQgTVNSCiAtIEFkanVzdCBjb250ZXh0XQpTaWduZWQt b2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0t CiBhcmNoL3g4Ni9rdm0vdm14LmMgfCAyNTQgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygr KSwgMTQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBiL2Fy Y2gveDg2L2t2bS92bXguYwppbmRleCA1ZmZjMjczMWUxNGQuLmUwMDY0ODU1ZmJkYiAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtMTA5 LDYgKzEwOSwxNCBAQCBzdGF0aWMgdTY0IF9fcmVhZF9tb3N0bHkgaG9zdF94c3M7CiBzdGF0aWMg Ym9vbCBfX3JlYWRfbW9zdGx5IGVuYWJsZV9wbWwgPSAxOwogbW9kdWxlX3BhcmFtX25hbWVkKHBt bCwgZW5hYmxlX3BtbCwgYm9vbCwgU19JUlVHTyk7CiAKKyNkZWZpbmUgTVNSX1RZUEVfUgkxCisj ZGVmaW5lIE1TUl9UWVBFX1cJMgorI2RlZmluZSBNU1JfVFlQRV9SVwkzCisKKyNkZWZpbmUgTVNS X0JJVE1BUF9NT0RFX1gyQVBJQwkJMQorI2RlZmluZSBNU1JfQklUTUFQX01PREVfWDJBUElDX0FQ SUNWCTIKKyNkZWZpbmUgTVNSX0JJVE1BUF9NT0RFX0xNCQk0CisKICNkZWZpbmUgS1ZNX1ZNWF9U U0NfTVVMVElQTElFUl9NQVggICAgIDB4ZmZmZmZmZmZmZmZmZmZmZlVMTAogCiAjZGVmaW5lIEtW TV9HVUVTVF9DUjBfTUFTSyAoWDg2X0NSMF9OVyB8IFg4Nl9DUjBfQ0QpCkBAIC0xODgsNiArMTk2 LDcgQEAgc3RydWN0IGxvYWRlZF92bWNzIHsKIAlzdHJ1Y3Qgdm1jcyAqdm1jczsKIAlpbnQgY3B1 OwogCWludCBsYXVuY2hlZDsKKwl1bnNpZ25lZCBsb25nICptc3JfYml0bWFwOwogCXN0cnVjdCBs aXN0X2hlYWQgbG9hZGVkX3ZtY3NzX29uX2NwdV9saW5rOwogfTsKIApAQCAtNDIzLDggKzQzMiw2 IEBAIHN0cnVjdCBuZXN0ZWRfdm14IHsKIAl1MTYgcG9zdGVkX2ludHJfbnY7CiAJdTY0IG1zcl9p YTMyX2ZlYXR1cmVfY29udHJvbDsKIAotCXVuc2lnbmVkIGxvbmcgKm1zcl9iaXRtYXA7Ci0KIAlz dHJ1Y3QgaHJ0aW1lciBwcmVlbXB0aW9uX3RpbWVyOwogCWJvb2wgcHJlZW1wdGlvbl90aW1lcl9l eHBpcmVkOwogCkBAIC01MjUsNiArNTMyLDcgQEAgc3RydWN0IHZjcHVfdm14IHsKIAl1bnNpZ25l ZCBsb25nICAgICAgICAgaG9zdF9yc3A7CiAJdTggICAgICAgICAgICAgICAgICAgIGZhaWw7CiAJ Ym9vbCAgICAgICAgICAgICAgICAgIG5taV9rbm93bl91bm1hc2tlZDsKKwl1OAkJICAgICAgbXNy X2JpdG1hcF9tb2RlOwogCXUzMiAgICAgICAgICAgICAgICAgICBleGl0X2ludHJfaW5mbzsKIAl1 MzIgICAgICAgICAgICAgICAgICAgaWR0X3ZlY3RvcmluZ19pbmZvOwogCXVsb25nICAgICAgICAg ICAgICAgICByZmxhZ3M7CkBAIC04ODMsNiArODkxLDcgQEAgc3RhdGljIHZvaWQgdm14X3N5bmNf cGlyX3RvX2lycl9kdW1teShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpOwogc3RhdGljIHZvaWQgY29w eV92bWNzMTJfdG9fc2hhZG93KHN0cnVjdCB2Y3B1X3ZteCAqdm14KTsKIHN0YXRpYyB2b2lkIGNv cHlfc2hhZG93X3RvX3ZtY3MxMihzdHJ1Y3QgdmNwdV92bXggKnZteCk7CiBzdGF0aWMgaW50IGFs bG9jX2lkZW50aXR5X3BhZ2V0YWJsZShzdHJ1Y3Qga3ZtICprdm0pOworc3RhdGljIHZvaWQgdm14 X3VwZGF0ZV9tc3JfYml0bWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7CiAKIHN0YXRpYyBERUZJ TkVfUEVSX0NQVShzdHJ1Y3Qgdm1jcyAqLCB2bXhhcmVhKTsKIHN0YXRpYyBERUZJTkVfUEVSX0NQ VShzdHJ1Y3Qgdm1jcyAqLCBjdXJyZW50X3ZtY3MpOwpAQCAtOTAyLDEwICs5MTEsNiBAQCBzdGF0 aWMgREVGSU5FX1BFUl9DUFUoc3BpbmxvY2tfdCwgYmxvY2tlZF92Y3B1X29uX2NwdV9sb2NrKTsK IAogc3RhdGljIHVuc2lnbmVkIGxvbmcgKnZteF9pb19iaXRtYXBfYTsKIHN0YXRpYyB1bnNpZ25l ZCBsb25nICp2bXhfaW9fYml0bWFwX2I7Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyAqdm14X21zcl9i aXRtYXBfbGVnYWN5Owotc3RhdGljIHVuc2lnbmVkIGxvbmcgKnZteF9tc3JfYml0bWFwX2xvbmdt b2RlOwotc3RhdGljIHVuc2lnbmVkIGxvbmcgKnZteF9tc3JfYml0bWFwX2xlZ2FjeV94MmFwaWM7 Ci1zdGF0aWMgdW5zaWduZWQgbG9uZyAqdm14X21zcl9iaXRtYXBfbG9uZ21vZGVfeDJhcGljOwog c3RhdGljIHVuc2lnbmVkIGxvbmcgKnZteF92bXJlYWRfYml0bWFwOwogc3RhdGljIHVuc2lnbmVk IGxvbmcgKnZteF92bXdyaXRlX2JpdG1hcDsKIApAQCAtMjM0NiwyNyArMjM1MSw2IEBAIHN0YXRp YyB2b2lkIG1vdmVfbXNyX3VwKHN0cnVjdCB2Y3B1X3ZteCAqdm14LCBpbnQgZnJvbSwgaW50IHRv KQogCXZteC0+Z3Vlc3RfbXNyc1tmcm9tXSA9IHRtcDsKIH0KIAotc3RhdGljIHZvaWQgdm14X3Nl dF9tc3JfYml0bWFwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKLXsKLQl1bnNpZ25lZCBsb25nICpt c3JfYml0bWFwOwotCi0JaWYgKGlzX2d1ZXN0X21vZGUodmNwdSkpCi0JCW1zcl9iaXRtYXAgPSB0 b192bXgodmNwdSktPm5lc3RlZC5tc3JfYml0bWFwOwotCWVsc2UgaWYgKHZjcHUtPmFyY2guYXBp Y19iYXNlICYgWDJBUElDX0VOQUJMRSkgewotCQlpZiAoaXNfbG9uZ19tb2RlKHZjcHUpKQotCQkJ bXNyX2JpdG1hcCA9IHZteF9tc3JfYml0bWFwX2xvbmdtb2RlX3gyYXBpYzsKLQkJZWxzZQotCQkJ bXNyX2JpdG1hcCA9IHZteF9tc3JfYml0bWFwX2xlZ2FjeV94MmFwaWM7Ci0JfSBlbHNlIHsKLQkJ aWYgKGlzX2xvbmdfbW9kZSh2Y3B1KSkKLQkJCW1zcl9iaXRtYXAgPSB2bXhfbXNyX2JpdG1hcF9s b25nbW9kZTsKLQkJZWxzZQotCQkJbXNyX2JpdG1hcCA9IHZteF9tc3JfYml0bWFwX2xlZ2FjeTsK LQl9Ci0KLQl2bWNzX3dyaXRlNjQoTVNSX0JJVE1BUCwgX19wYShtc3JfYml0bWFwKSk7Ci19Ci0K IC8qCiAgKiBTZXQgdXAgdGhlIHZtY3MgdG8gYXV0b21hdGljYWxseSBzYXZlIGFuZCByZXN0b3Jl IHN5c3RlbQogICogbXNycy4gIERvbid0IHRvdWNoIHRoZSA2NC1iaXQgbXNycyBpZiB0aGUgZ3Vl c3QgaXMgaW4gbGVnYWN5CkBAIC0yNDA3LDcgKzIzOTEsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9t c3JzKHN0cnVjdCB2Y3B1X3ZteCAqdm14KQogCXZteC0+c2F2ZV9ubXNycyA9IHNhdmVfbm1zcnM7 CiAKIAlpZiAoY3B1X2hhc192bXhfbXNyX2JpdG1hcCgpKQotCQl2bXhfc2V0X21zcl9iaXRtYXAo JnZteC0+dmNwdSk7CisJCXZteF91cGRhdGVfbXNyX2JpdG1hcCgmdm14LT52Y3B1KTsKIH0KIAog LyoKQEAgLTMzNjAsNiArMzM0NCw4IEBAIHN0YXRpYyB2b2lkIGZyZWVfbG9hZGVkX3ZtY3Moc3Ry dWN0IGxvYWRlZF92bWNzICpsb2FkZWRfdm1jcykKIAlsb2FkZWRfdm1jc19jbGVhcihsb2FkZWRf dm1jcyk7CiAJZnJlZV92bWNzKGxvYWRlZF92bWNzLT52bWNzKTsKIAlsb2FkZWRfdm1jcy0+dm1j cyA9IE5VTEw7CisJaWYgKGxvYWRlZF92bWNzLT5tc3JfYml0bWFwKQorCQlmcmVlX3BhZ2UoKHVu c2lnbmVkIGxvbmcpbG9hZGVkX3ZtY3MtPm1zcl9iaXRtYXApOwogfQogCiBzdGF0aWMgc3RydWN0 IHZtY3MgKmFsbG9jX3ZtY3Modm9pZCkKQEAgLTMzNzQsNyArMzM2MCwxOCBAQCBzdGF0aWMgaW50 IGFsbG9jX2xvYWRlZF92bWNzKHN0cnVjdCBsb2FkZWRfdm1jcyAqbG9hZGVkX3ZtY3MpCiAJCXJl dHVybiAtRU5PTUVNOwogCiAJbG9hZGVkX3ZtY3NfaW5pdChsb2FkZWRfdm1jcyk7CisKKwlpZiAo Y3B1X2hhc192bXhfbXNyX2JpdG1hcCgpKSB7CisJCWxvYWRlZF92bWNzLT5tc3JfYml0bWFwID0g KHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7CisJCWlmICghbG9h ZGVkX3ZtY3MtPm1zcl9iaXRtYXApCisJCQlnb3RvIG91dF92bWNzOworCQltZW1zZXQobG9hZGVk X3ZtY3MtPm1zcl9iaXRtYXAsIDB4ZmYsIFBBR0VfU0laRSk7CisJfQogCXJldHVybiAwOworCitv dXRfdm1jczoKKwlmcmVlX2xvYWRlZF92bWNzKGxvYWRlZF92bWNzKTsKKwlyZXR1cm4gLUVOT01F TTsKIH0KIAogc3RhdGljIHZvaWQgZnJlZV9rdm1fYXJlYSh2b2lkKQpAQCAtNDM3MywxMCArNDM3 MCw4IEBAIHN0YXRpYyB2b2lkIGZyZWVfdnBpZChpbnQgdnBpZCkKIAlzcGluX3VubG9jaygmdm14 X3ZwaWRfbG9jayk7CiB9CiAKLSNkZWZpbmUgTVNSX1RZUEVfUgkxCi0jZGVmaW5lIE1TUl9UWVBF X1cJMgotc3RhdGljIHZvaWQgX192bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih1bnNpZ25l ZCBsb25nICptc3JfYml0bWFwLAotCQkJCQkJdTMyIG1zciwgaW50IHR5cGUpCitzdGF0aWMgdm9p ZCBfX2Fsd2F5c19pbmxpbmUgdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IodW5zaWduZWQg bG9uZyAqbXNyX2JpdG1hcCwKKwkJCQkJCQkgIHUzMiBtc3IsIGludCB0eXBlKQogewogCWludCBm ID0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOwogCkBAIC00NDEwLDggKzQ0MDUsOCBAQCBzdGF0aWMg dm9pZCBfX3ZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHVuc2lnbmVkIGxvbmcgKm1zcl9i aXRtYXAsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBfX3ZteF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9t c3IodW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcCwKLQkJCQkJCXUzMiBtc3IsIGludCB0eXBlKQor c3RhdGljIHZvaWQgX19hbHdheXNfaW5saW5lIHZteF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9tc3Io dW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcCwKKwkJCQkJCQkgdTMyIG1zciwgaW50IHR5cGUpCiB7 CiAJaW50IGYgPSBzaXplb2YodW5zaWduZWQgbG9uZyk7CiAKQEAgLTQ0OTEsMzcgKzQ0ODYsNzYg QEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKHVuc2ln bmVkIGxvbmcgKm1zcl9iaXRtYXBfbDEsCiAJfQogfQogCi1zdGF0aWMgdm9pZCB2bXhfZGlzYWJs ZV9pbnRlcmNlcHRfZm9yX21zcih1MzIgbXNyLCBib29sIGxvbmdtb2RlX29ubHkpCitzdGF0aWMg dm9pZCBfX2Fsd2F5c19pbmxpbmUgdm14X3NldF9pbnRlcmNlcHRfZm9yX21zcih1bnNpZ25lZCBs b25nICptc3JfYml0bWFwLAorCQkJICAgICAJCQkgICAgICB1MzIgbXNyLCBpbnQgdHlwZSwgYm9v bCB2YWx1ZSkKIHsKLQlpZiAoIWxvbmdtb2RlX29ubHkpCi0JCV9fdm14X2Rpc2FibGVfaW50ZXJj ZXB0X2Zvcl9tc3Iodm14X21zcl9iaXRtYXBfbGVnYWN5LAotCQkJCQkJbXNyLCBNU1JfVFlQRV9S IHwgTVNSX1RZUEVfVyk7Ci0JX192bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2bXhfbXNy X2JpdG1hcF9sb25nbW9kZSwKLQkJCQkJCW1zciwgTVNSX1RZUEVfUiB8IE1TUl9UWVBFX1cpOwor CWlmICh2YWx1ZSkKKwkJdm14X2VuYWJsZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0bWFwLCBt c3IsIHR5cGUpOworCWVsc2UKKwkJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2Jp dG1hcCwgbXNyLCB0eXBlKTsKIH0KIAotc3RhdGljIHZvaWQgdm14X2VuYWJsZV9pbnRlcmNlcHRf bXNyX3JlYWRfeDJhcGljKHUzMiBtc3IpCitzdGF0aWMgdTggdm14X21zcl9iaXRtYXBfbW9kZShz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0JX192bXhfZW5hYmxlX2ludGVyY2VwdF9mb3JfbXNy KHZteF9tc3JfYml0bWFwX2xlZ2FjeV94MmFwaWMsCi0JCQltc3IsIE1TUl9UWVBFX1IpOwotCV9f dm14X2VuYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2bXhfbXNyX2JpdG1hcF9sb25nbW9kZV94MmFw aWMsCi0JCQltc3IsIE1TUl9UWVBFX1IpOworCXU4IG1vZGUgPSAwOworCisJaWYgKGlycWNoaXBf aW5fa2VybmVsKHZjcHUtPmt2bSkgJiYgYXBpY194MmFwaWNfbW9kZSh2Y3B1LT5hcmNoLmFwaWMp KSB7CisJCW1vZGUgfD0gTVNSX0JJVE1BUF9NT0RFX1gyQVBJQzsKKwkJaWYgKGVuYWJsZV9hcGlj dikKKwkJCW1vZGUgfD0gTVNSX0JJVE1BUF9NT0RFX1gyQVBJQ19BUElDVjsKKwl9CisKKwlpZiAo aXNfbG9uZ19tb2RlKHZjcHUpKQorCQltb2RlIHw9IE1TUl9CSVRNQVBfTU9ERV9MTTsKKworCXJl dHVybiBtb2RlOwogfQogCi1zdGF0aWMgdm9pZCB2bXhfZGlzYWJsZV9pbnRlcmNlcHRfbXNyX3Jl YWRfeDJhcGljKHUzMiBtc3IpCisjZGVmaW5lIFgyQVBJQ19NU1IocikgKEFQSUNfQkFTRV9NU1Ig KyAoKHIpID4+IDQpKQorCitzdGF0aWMgdm9pZCB2bXhfdXBkYXRlX21zcl9iaXRtYXBfeDJhcGlj KHVuc2lnbmVkIGxvbmcgKm1zcl9iaXRtYXAsCisJCQkJCSB1OCBtb2RlKQogewotCV9fdm14X2Rp c2FibGVfaW50ZXJjZXB0X2Zvcl9tc3Iodm14X21zcl9iaXRtYXBfbGVnYWN5X3gyYXBpYywKLQkJ CW1zciwgTVNSX1RZUEVfUik7Ci0JX192bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2bXhf bXNyX2JpdG1hcF9sb25nbW9kZV94MmFwaWMsCi0JCQltc3IsIE1TUl9UWVBFX1IpOworCWludCBt c3I7CisKKwlmb3IgKG1zciA9IDB4ODAwOyBtc3IgPD0gMHg4ZmY7IG1zciArPSBCSVRTX1BFUl9M T05HKSB7CisJCXVuc2lnbmVkIHdvcmQgPSBtc3IgLyBCSVRTX1BFUl9MT05HOworCQltc3JfYml0 bWFwW3dvcmRdID0gKG1vZGUgJiBNU1JfQklUTUFQX01PREVfWDJBUElDX0FQSUNWKSA/IDAgOiB+ MDsKKwkJbXNyX2JpdG1hcFt3b3JkICsgKDB4ODAwIC8gc2l6ZW9mKGxvbmcpKV0gPSB+MDsKKwl9 CisKKwlpZiAobW9kZSAmIE1TUl9CSVRNQVBfTU9ERV9YMkFQSUMpIHsKKwkJLyoKKwkJICogVFBS IHJlYWRzIGFuZCB3cml0ZXMgY2FuIGJlIHZpcnR1YWxpemVkIGV2ZW4gaWYgdmlydHVhbCBpbnRl cnJ1cHQKKwkJICogZGVsaXZlcnkgaXMgbm90IGluIHVzZS4KKwkJICovCisJCXZteF9kaXNhYmxl X2ludGVyY2VwdF9mb3JfbXNyKG1zcl9iaXRtYXAsIFgyQVBJQ19NU1IoQVBJQ19UQVNLUFJJKSwg TVNSX1RZUEVfUlcpOworCQlpZiAobW9kZSAmIE1TUl9CSVRNQVBfTU9ERV9YMkFQSUNfQVBJQ1Yp IHsKKwkJCXZteF9lbmFibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgWDJBUElDX01T UihBUElDX0lEKSwgTVNSX1RZUEVfUik7CisJCQl2bXhfZW5hYmxlX2ludGVyY2VwdF9mb3JfbXNy KG1zcl9iaXRtYXAsIFgyQVBJQ19NU1IoQVBJQ19UTUNDVCksIE1TUl9UWVBFX1IpOworCQkJdm14 X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgWDJBUElDX01TUihBUElDX0VP SSksIE1TUl9UWVBFX1cpOworCQkJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2Jp dG1hcCwgWDJBUElDX01TUihBUElDX1NFTEZfSVBJKSwgTVNSX1RZUEVfVyk7CisJCX0KKwl9CiB9 CiAKLXN0YXRpYyB2b2lkIHZteF9kaXNhYmxlX2ludGVyY2VwdF9tc3Jfd3JpdGVfeDJhcGljKHUz MiBtc3IpCitzdGF0aWMgdm9pZCB2bXhfdXBkYXRlX21zcl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KQogewotCV9fdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3Iodm14X21zcl9iaXRt YXBfbGVnYWN5X3gyYXBpYywKLQkJCW1zciwgTVNSX1RZUEVfVyk7Ci0JX192bXhfZGlzYWJsZV9p bnRlcmNlcHRfZm9yX21zcih2bXhfbXNyX2JpdG1hcF9sb25nbW9kZV94MmFwaWMsCi0JCQltc3Is IE1TUl9UWVBFX1cpOworCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUpOworCXVu c2lnbmVkIGxvbmcgKm1zcl9iaXRtYXAgPSB2bXgtPnZtY3MwMS5tc3JfYml0bWFwOworCXU4IG1v ZGUgPSB2bXhfbXNyX2JpdG1hcF9tb2RlKHZjcHUpOworCXU4IGNoYW5nZWQgPSBtb2RlIF4gdm14 LT5tc3JfYml0bWFwX21vZGU7CisKKwlpZiAoIWNoYW5nZWQpCisJCXJldHVybjsKKworCXZteF9z ZXRfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgTVNSX0tFUk5FTF9HU19CQVNFLCBNU1Jf VFlQRV9SVywKKwkJCQkgICEobW9kZSAmIE1TUl9CSVRNQVBfTU9ERV9MTSkpOworCisJaWYgKGNo YW5nZWQgJiAoTVNSX0JJVE1BUF9NT0RFX1gyQVBJQyB8IE1TUl9CSVRNQVBfTU9ERV9YMkFQSUNf QVBJQ1YpKQorCQl2bXhfdXBkYXRlX21zcl9iaXRtYXBfeDJhcGljKG1zcl9iaXRtYXAsIG1vZGUp OworCisJdm14LT5tc3JfYml0bWFwX21vZGUgPSBtb2RlOwogfQogCiBzdGF0aWMgaW50IHZteF9j cHVfdXNlc19hcGljdihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCkBAIC00ODQyLDcgKzQ4NzYsNyBA QCBzdGF0aWMgaW50IHZteF92Y3B1X3NldHVwKHN0cnVjdCB2Y3B1X3ZteCAqdm14KQogCQl2bWNz X3dyaXRlNjQoVk1XUklURV9CSVRNQVAsIF9fcGEodm14X3Ztd3JpdGVfYml0bWFwKSk7CiAJfQog CWlmIChjcHVfaGFzX3ZteF9tc3JfYml0bWFwKCkpCi0JCXZtY3Nfd3JpdGU2NChNU1JfQklUTUFQ LCBfX3BhKHZteF9tc3JfYml0bWFwX2xlZ2FjeSkpOworCQl2bWNzX3dyaXRlNjQoTVNSX0JJVE1B UCwgX19wYSh2bXgtPnZtY3MwMS5tc3JfYml0bWFwKSk7CiAKIAl2bWNzX3dyaXRlNjQoVk1DU19M SU5LX1BPSU5URVIsIC0xdWxsKTsgLyogMjIuMy4xLjUgKi8KIApAQCAtNjE4Myw3ICs2MjE3LDcg QEAgc3RhdGljIHZvaWQgd2FrZXVwX2hhbmRsZXIodm9pZCkKIAogc3RhdGljIF9faW5pdCBpbnQg aGFyZHdhcmVfc2V0dXAodm9pZCkKIHsKLQlpbnQgciA9IC1FTk9NRU0sIGksIG1zcjsKKwlpbnQg ciA9IC1FTk9NRU0sIGk7CiAKIAlyZG1zcmxfc2FmZShNU1JfRUZFUiwgJmhvc3RfZWZlcik7CiAK QEAgLTYxOTgsMzEgKzYyMzIsMTMgQEAgc3RhdGljIF9faW5pdCBpbnQgaGFyZHdhcmVfc2V0dXAo dm9pZCkKIAlpZiAoIXZteF9pb19iaXRtYXBfYikKIAkJZ290byBvdXQ7CiAKLQl2bXhfbXNyX2Jp dG1hcF9sZWdhY3kgPSAodW5zaWduZWQgbG9uZyAqKV9fZ2V0X2ZyZWVfcGFnZShHRlBfS0VSTkVM KTsKLQlpZiAoIXZteF9tc3JfYml0bWFwX2xlZ2FjeSkKLQkJZ290byBvdXQxOwotCi0Jdm14X21z cl9iaXRtYXBfbGVnYWN5X3gyYXBpYyA9Ci0JCQkJKHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVl X3BhZ2UoR0ZQX0tFUk5FTCk7Ci0JaWYgKCF2bXhfbXNyX2JpdG1hcF9sZWdhY3lfeDJhcGljKQot CQlnb3RvIG91dDI7Ci0KLQl2bXhfbXNyX2JpdG1hcF9sb25nbW9kZSA9ICh1bnNpZ25lZCBsb25n ICopX19nZXRfZnJlZV9wYWdlKEdGUF9LRVJORUwpOwotCWlmICghdm14X21zcl9iaXRtYXBfbG9u Z21vZGUpCi0JCWdvdG8gb3V0MzsKLQotCXZteF9tc3JfYml0bWFwX2xvbmdtb2RlX3gyYXBpYyA9 Ci0JCQkJKHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5FTCk7Ci0JaWYg KCF2bXhfbXNyX2JpdG1hcF9sb25nbW9kZV94MmFwaWMpCi0JCWdvdG8gb3V0NDsKLQogCXZteF92 bXJlYWRfYml0bWFwID0gKHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVlX3BhZ2UoR0ZQX0tFUk5F TCk7CiAJaWYgKCF2bXhfdm1yZWFkX2JpdG1hcCkKLQkJZ290byBvdXQ2OworCQlnb3RvIG91dDE7 CiAKIAl2bXhfdm13cml0ZV9iaXRtYXAgPSAodW5zaWduZWQgbG9uZyAqKV9fZ2V0X2ZyZWVfcGFn ZShHRlBfS0VSTkVMKTsKIAlpZiAoIXZteF92bXdyaXRlX2JpdG1hcCkKLQkJZ290byBvdXQ3Owor CQlnb3RvIG91dDI7CiAKIAltZW1zZXQodm14X3ZtcmVhZF9iaXRtYXAsIDB4ZmYsIFBBR0VfU0la RSk7CiAJbWVtc2V0KHZteF92bXdyaXRlX2JpdG1hcCwgMHhmZiwgUEFHRV9TSVpFKTsKQEAgLTYy MzEsMTIgKzYyNDcsOSBAQCBzdGF0aWMgX19pbml0IGludCBoYXJkd2FyZV9zZXR1cCh2b2lkKQog CiAJbWVtc2V0KHZteF9pb19iaXRtYXBfYiwgMHhmZiwgUEFHRV9TSVpFKTsKIAotCW1lbXNldCh2 bXhfbXNyX2JpdG1hcF9sZWdhY3ksIDB4ZmYsIFBBR0VfU0laRSk7Ci0JbWVtc2V0KHZteF9tc3Jf Yml0bWFwX2xvbmdtb2RlLCAweGZmLCBQQUdFX1NJWkUpOwotCiAJaWYgKHNldHVwX3ZtY3NfY29u ZmlnKCZ2bWNzX2NvbmZpZykgPCAwKSB7CiAJCXIgPSAtRUlPOwotCQlnb3RvIG91dDg7CisJCWdv dG8gb3V0MzsKIAl9CiAKIAlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX05YKSkKQEAgLTYz MDIsMzggKzYzMTUsOCBAQCBzdGF0aWMgX19pbml0IGludCBoYXJkd2FyZV9zZXR1cCh2b2lkKQog CQlrdm1feDg2X29wcy0+c3luY19waXJfdG9faXJyID0gdm14X3N5bmNfcGlyX3RvX2lycl9kdW1t eTsKIAl9CiAKLQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihNU1JfRlNfQkFTRSwgZmFs c2UpOwotCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKE1TUl9HU19CQVNFLCBmYWxzZSk7 Ci0Jdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IoTVNSX0tFUk5FTF9HU19CQVNFLCB0cnVl KTsKLQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcihNU1JfSUEzMl9TWVNFTlRFUl9DUywg ZmFsc2UpOwotCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKE1TUl9JQTMyX1NZU0VOVEVS X0VTUCwgZmFsc2UpOwotCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKE1TUl9JQTMyX1NZ U0VOVEVSX0VJUCwgZmFsc2UpOwotCi0JbWVtY3B5KHZteF9tc3JfYml0bWFwX2xlZ2FjeV94MmFw aWMsCi0JCQl2bXhfbXNyX2JpdG1hcF9sZWdhY3ksIFBBR0VfU0laRSk7Ci0JbWVtY3B5KHZteF9t c3JfYml0bWFwX2xvbmdtb2RlX3gyYXBpYywKLQkJCXZteF9tc3JfYml0bWFwX2xvbmdtb2RlLCBQ QUdFX1NJWkUpOwotCiAJc2V0X2JpdCgwLCB2bXhfdnBpZF9iaXRtYXApOyAvKiAwIGlzIHJlc2Vy dmVkIGZvciBob3N0ICovCiAKLQlpZiAoZW5hYmxlX2FwaWN2KSB7Ci0JCWZvciAobXNyID0gMHg4 MDA7IG1zciA8PSAweDhmZjsgbXNyKyspCi0JCQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfbXNyX3Jl YWRfeDJhcGljKG1zcik7Ci0KLQkJLyogQWNjb3JkaW5nIFNETSwgaW4geDJhcGljIG1vZGUsIHRo ZSB3aG9sZSBpZCByZWcgaXMgdXNlZC4KLQkJICogQnV0IGluIEtWTSwgaXQgb25seSB1c2UgdGhl IGhpZ2hlc3QgZWlnaHQgYml0cy4gTmVlZCB0bwotCQkgKiBpbnRlcmNlcHQgaXQgKi8KLQkJdm14 X2VuYWJsZV9pbnRlcmNlcHRfbXNyX3JlYWRfeDJhcGljKDB4ODAyKTsKLQkJLyogVE1DQ1QgKi8K LQkJdm14X2VuYWJsZV9pbnRlcmNlcHRfbXNyX3JlYWRfeDJhcGljKDB4ODM5KTsKLQkJLyogVFBS ICovCi0JCXZteF9kaXNhYmxlX2ludGVyY2VwdF9tc3Jfd3JpdGVfeDJhcGljKDB4ODA4KTsKLQkJ LyogRU9JICovCi0JCXZteF9kaXNhYmxlX2ludGVyY2VwdF9tc3Jfd3JpdGVfeDJhcGljKDB4ODBi KTsKLQkJLyogU0VMRi1JUEkgKi8KLQkJdm14X2Rpc2FibGVfaW50ZXJjZXB0X21zcl93cml0ZV94 MmFwaWMoMHg4M2YpOwotCX0KLQogCWlmIChlbmFibGVfZXB0KSB7CiAJCWt2bV9tbXVfc2V0X21h c2tfcHRlcygwdWxsLAogCQkJKGVuYWJsZV9lcHRfYWRfYml0cykgPyBWTVhfRVBUX0FDQ0VTU19C SVQgOiAwdWxsLApAQCAtNjM2NCwxOCArNjM0NywxMCBAQCBzdGF0aWMgX19pbml0IGludCBoYXJk d2FyZV9zZXR1cCh2b2lkKQogCiAJcmV0dXJuIGFsbG9jX2t2bV9hcmVhKCk7CiAKLW91dDg6Ci0J ZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteF92bXdyaXRlX2JpdG1hcCk7Ci1vdXQ3OgotCWZy ZWVfcGFnZSgodW5zaWduZWQgbG9uZyl2bXhfdm1yZWFkX2JpdG1hcCk7Ci1vdXQ2OgotCWZyZWVf cGFnZSgodW5zaWduZWQgbG9uZyl2bXhfbXNyX2JpdG1hcF9sb25nbW9kZV94MmFwaWMpOwotb3V0 NDoKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpdm14X21zcl9iaXRtYXBfbG9uZ21vZGUpOwog b3V0MzoKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpdm14X21zcl9iaXRtYXBfbGVnYWN5X3gy YXBpYyk7CisJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteF92bXdyaXRlX2JpdG1hcCk7CiBv dXQyOgotCWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl2bXhfbXNyX2JpdG1hcF9sZWdhY3kpOwor CWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZyl2bXhfdm1yZWFkX2JpdG1hcCk7CiBvdXQxOgogCWZy ZWVfcGFnZSgodW5zaWduZWQgbG9uZyl2bXhfaW9fYml0bWFwX2IpOwogb3V0OgpAQCAtNjM4Niwx MCArNjM2MSw2IEBAIG91dDoKIAogc3RhdGljIF9fZXhpdCB2b2lkIGhhcmR3YXJlX3Vuc2V0dXAo dm9pZCkKIHsKLQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpdm14X21zcl9iaXRtYXBfbGVnYWN5 X3gyYXBpYyk7Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteF9tc3JfYml0bWFwX2xvbmdt b2RlX3gyYXBpYyk7Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteF9tc3JfYml0bWFwX2xl Z2FjeSk7Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteF9tc3JfYml0bWFwX2xvbmdtb2Rl KTsKIAlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpdm14X2lvX2JpdG1hcF9iKTsKIAlmcmVlX3Bh Z2UoKHVuc2lnbmVkIGxvbmcpdm14X2lvX2JpdG1hcF9hKTsKIAlmcmVlX3BhZ2UoKHVuc2lnbmVk IGxvbmcpdm14X3Ztd3JpdGVfYml0bWFwKTsKQEAgLTY3NTMsMTMgKzY3MjQsNiBAQCBzdGF0aWMg aW50IGhhbmRsZV92bW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlpZiAociA8IDApCiAJCWdv dG8gb3V0X3ZtY3MwMjsKIAotCWlmIChjcHVfaGFzX3ZteF9tc3JfYml0bWFwKCkpIHsKLQkJdm14 LT5uZXN0ZWQubXNyX2JpdG1hcCA9Ci0JCQkJKHVuc2lnbmVkIGxvbmcgKilfX2dldF9mcmVlX3Bh Z2UoR0ZQX0tFUk5FTCk7Ci0JCWlmICghdm14LT5uZXN0ZWQubXNyX2JpdG1hcCkKLQkJCWdvdG8g b3V0X21zcl9iaXRtYXA7Ci0JfQotCiAJaWYgKGVuYWJsZV9zaGFkb3dfdm1jcykgewogCQlzaGFk b3dfdm1jcyA9IGFsbG9jX3ZtY3MoKTsKIAkJaWYgKCFzaGFkb3dfdm1jcykKQEAgLTY3ODQsOSAr Njc0OCw2IEBAIHN0YXRpYyBpbnQgaGFuZGxlX3Ztb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQog CXJldHVybiAxOwogCiBvdXRfc2hhZG93X3ZtY3M6Ci0JZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25n KXZteC0+bmVzdGVkLm1zcl9iaXRtYXApOwotCi1vdXRfbXNyX2JpdG1hcDoKIAlmcmVlX2xvYWRl ZF92bWNzKCZ2bXgtPm5lc3RlZC52bWNzMDIpOwogCiBvdXRfdm1jczAyOgpAQCAtNjg2MCwxMCAr NjgyMSw2IEBAIHN0YXRpYyB2b2lkIGZyZWVfbmVzdGVkKHN0cnVjdCB2Y3B1X3ZteCAqdm14KQog CXZteC0+bmVzdGVkLnZteG9uID0gZmFsc2U7CiAJZnJlZV92cGlkKHZteC0+bmVzdGVkLnZwaWQw Mik7CiAJbmVzdGVkX3JlbGVhc2Vfdm1jczEyKHZteCk7Ci0JaWYgKHZteC0+bmVzdGVkLm1zcl9i aXRtYXApIHsKLQkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25nKXZteC0+bmVzdGVkLm1zcl9iaXRt YXApOwotCQl2bXgtPm5lc3RlZC5tc3JfYml0bWFwID0gTlVMTDsKLQl9CiAJaWYgKGVuYWJsZV9z aGFkb3dfdm1jcykKIAkJZnJlZV92bWNzKHZteC0+bmVzdGVkLmN1cnJlbnRfc2hhZG93X3ZtY3Mp OwogCS8qIFVucGluIHBoeXNpY2FsIG1lbW9yeSB3ZSByZWZlcnJlZCB0byBpbiB0aGUgdm1jczAy ICovCkBAIC04MjAwLDcgKzgxNTcsNyBAQCBzdGF0aWMgdm9pZCB2bXhfc2V0X3ZpcnR1YWxfeDJh cGljX21vZGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIHNldCkKIAl9CiAJdm1jc193cml0 ZTMyKFNFQ09OREFSWV9WTV9FWEVDX0NPTlRST0wsIHNlY19leGVjX2NvbnRyb2wpOwogCi0Jdm14 X3NldF9tc3JfYml0bWFwKHZjcHUpOworCXZteF91cGRhdGVfbXNyX2JpdG1hcCh2Y3B1KTsKIH0K IAogc3RhdGljIHZvaWQgdm14X3NldF9hcGljX2FjY2Vzc19wYWdlX2FkZHIoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBocGFfdCBocGEpCkBAIC04NzgwLDYgKzg3MzcsNyBAQCBzdGF0aWMgc3RydWN0 IGt2bV92Y3B1ICp2bXhfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNpZ25lZCBpbnQg aWQpCiB7CiAJaW50IGVycjsKIAlzdHJ1Y3QgdmNwdV92bXggKnZteCA9IGttZW1fY2FjaGVfemFs bG9jKGt2bV92Y3B1X2NhY2hlLCBHRlBfS0VSTkVMKTsKKwl1bnNpZ25lZCBsb25nICptc3JfYml0 bWFwOwogCWludCBjcHU7CiAKIAlpZiAoIXZteCkKQEAgLTg4MjAsNiArODc3OCwxNSBAQCBzdGF0 aWMgc3RydWN0IGt2bV92Y3B1ICp2bXhfY3JlYXRlX3ZjcHUoc3RydWN0IGt2bSAqa3ZtLCB1bnNp Z25lZCBpbnQgaWQpCiAJaWYgKGVyciA8IDApCiAJCWdvdG8gZnJlZV9tc3JzOwogCisJbXNyX2Jp dG1hcCA9IHZteC0+dm1jczAxLm1zcl9iaXRtYXA7CisJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zv cl9tc3IobXNyX2JpdG1hcCwgTVNSX0ZTX0JBU0UsIE1TUl9UWVBFX1JXKTsKKwl2bXhfZGlzYWJs ZV9pbnRlcmNlcHRfZm9yX21zcihtc3JfYml0bWFwLCBNU1JfR1NfQkFTRSwgTVNSX1RZUEVfUlcp OworCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKG1zcl9iaXRtYXAsIE1TUl9LRVJORUxf R1NfQkFTRSwgTVNSX1RZUEVfUlcpOworCXZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKG1z cl9iaXRtYXAsIE1TUl9JQTMyX1NZU0VOVEVSX0NTLCBNU1JfVFlQRV9SVyk7CisJdm14X2Rpc2Fi bGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwgTVNSX0lBMzJfU1lTRU5URVJfRVNQLCBN U1JfVFlQRV9SVyk7CisJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3IobXNyX2JpdG1hcCwg TVNSX0lBMzJfU1lTRU5URVJfRUlQLCBNU1JfVFlQRV9SVyk7CisJdm14LT5tc3JfYml0bWFwX21v ZGUgPSAwOworCiAJdm14LT5sb2FkZWRfdm1jcyA9ICZ2bXgtPnZtY3MwMTsKIAljcHUgPSBnZXRf Y3B1KCk7CiAJdm14X3ZjcHVfbG9hZCgmdm14LT52Y3B1LCBjcHUpOwpAQCAtOTIwNCw3ICs5MTcx LDcgQEAgc3RhdGljIGlubGluZSBib29sIG5lc3RlZF92bXhfbWVyZ2VfbXNyX2JpdG1hcChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJaW50IG1zcjsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAl1bnNp Z25lZCBsb25nICptc3JfYml0bWFwX2wxOwotCXVuc2lnbmVkIGxvbmcgKm1zcl9iaXRtYXBfbDAg PSB0b192bXgodmNwdSktPm5lc3RlZC5tc3JfYml0bWFwOworCXVuc2lnbmVkIGxvbmcgKm1zcl9i aXRtYXBfbDAgPSB0b192bXgodmNwdSktPm5lc3RlZC52bWNzMDIubXNyX2JpdG1hcDsKIAogCS8q IFRoaXMgc2hvcnRjdXQgaXMgb2sgYmVjYXVzZSB3ZSBzdXBwb3J0IG9ubHkgeDJBUElDIE1TUnMg c28gZmFyLiAqLwogCWlmICghbmVzdGVkX2NwdV9oYXNfdmlydF94MmFwaWNfbW9kZSh2bWNzMTIp KQpAQCAtOTcxNSw2ICs5NjgyLDkgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV92bWNzMDIoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qgdm1jczEyICp2bWNzMTIpCiAJZWxzZQogCQl2bWNzX3dy aXRlNjQoVFNDX09GRlNFVCwgdm14LT5uZXN0ZWQudm1jczAxX3RzY19vZmZzZXQpOwogCisJaWYg KGNwdV9oYXNfdm14X21zcl9iaXRtYXAoKSkKKwkJdm1jc193cml0ZTY0KE1TUl9CSVRNQVAsIF9f cGEodm14LT5uZXN0ZWQudm1jczAyLm1zcl9iaXRtYXApKTsKKwogCWlmIChlbmFibGVfdnBpZCkg ewogCQkvKgogCQkgKiBUaGVyZSBpcyBubyBkaXJlY3QgbWFwcGluZyBiZXR3ZWVuIHZwaWQwMiBh bmQgdnBpZDEyLCB0aGUKQEAgLTEwNDE1LDcgKzEwMzg1LDcgQEAgc3RhdGljIHZvaWQgbG9hZF92 bWNzMTJfaG9zdF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJdm1jc193cml0ZTY0KEdV RVNUX0lBMzJfREVCVUdDVEwsIDApOwogCiAJaWYgKGNwdV9oYXNfdm14X21zcl9iaXRtYXAoKSkK LQkJdm14X3NldF9tc3JfYml0bWFwKHZjcHUpOworCQl2bXhfdXBkYXRlX21zcl9iaXRtYXAodmNw dSk7CiAKIAlpZiAobmVzdGVkX3ZteF9sb2FkX21zcih2Y3B1LCB2bWNzMTItPnZtX2V4aXRfbXNy X2xvYWRfYWRkciwKIAkJCQl2bWNzMTItPnZtX2V4aXRfbXNyX2xvYWRfY291bnQpKQoKRnJvbSA4 NTFjNGMxYmE2Y2ExNTIzOWVjMmVjZGM1YTgxNjA2Y2MwNzJlMWQ0IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBBc2hvayBSYWogPGFzaG9rLnJhakBpbnRlbC5jb20+CkRhdGU6IFRodSwg MSBGZWIgMjAxOCAyMjo1OTo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDcvMzRdIEtWTS94ODY6 IEFkZCBJQlBCIHN1cHBvcnQKCmNvbW1pdCAxNWQ0NTA3MTUyM2Q4OWIzZmI3MzcyZTIxMzVmYmQ3 MmY2YWY5NTA2IHVwc3RyZWFtLgoKVGhlIEluZGlyZWN0IEJyYW5jaCBQcmVkaWN0b3IgQmFycmll ciAoSUJQQikgaXMgYW4gaW5kaXJlY3QgYnJhbmNoCmNvbnRyb2wgbWVjaGFuaXNtLiBJdCBrZWVw cyBlYXJsaWVyIGJyYW5jaGVzIGZyb20gaW5mbHVlbmNpbmcKbGF0ZXIgb25lcy4KClVubGlrZSBJ QlJTIGFuZCBTVElCUCwgSUJQQiBkb2VzIG5vdCBkZWZpbmUgYSBuZXcgbW9kZSBvZiBvcGVyYXRp b24uCkl0J3MgYSBjb21tYW5kIHRoYXQgZW5zdXJlcyBwcmVkaWN0ZWQgYnJhbmNoIHRhcmdldHMg YXJlbid0IHVzZWQgYWZ0ZXIKdGhlIGJhcnJpZXIuIEFsdGhvdWdoIElCUlMgYW5kIElCUEIgYXJl IGVudW1lcmF0ZWQgYnkgdGhlIHNhbWUgQ1BVSUQKZW51bWVyYXRpb24sIElCUEIgaXMgdmVyeSBk aWZmZXJlbnQuCgpJQlBCIGhlbHBzIG1pdGlnYXRlIGFnYWluc3QgdGhyZWUgcG90ZW50aWFsIGF0 dGFja3M6CgoqIE1pdGlnYXRlIGd1ZXN0cyBmcm9tIGJlaW5nIGF0dGFja2VkIGJ5IG90aGVyIGd1 ZXN0cy4KICAtIFRoaXMgaXMgYWRkcmVzc2VkIGJ5IGlzc2luZyBJQlBCIHdoZW4gd2UgZG8gYSBn dWVzdCBzd2l0Y2guCgoqIE1pdGlnYXRlIGF0dGFja3MgZnJvbSBndWVzdC9yaW5nMy0+aG9zdC9y aW5nMy4KICBUaGVzZSB3b3VsZCByZXF1aXJlIGEgSUJQQiBkdXJpbmcgY29udGV4dCBzd2l0Y2gg aW4gaG9zdCwgb3IgYWZ0ZXIKICBWTUVYSVQuIFRoZSBob3N0IHByb2Nlc3MgaGFzIHR3byB3YXlz IHRvIG1pdGlnYXRlCiAgLSBFaXRoZXIgaXQgY2FuIGJlIGNvbXBpbGVkIHdpdGggcmV0cG9saW5l CiAgLSBJZiBpdHMgZ29pbmcgdGhyb3VnaCBjb250ZXh0IHN3aXRjaCwgYW5kIGhhcyBzZXQgIWR1 bXBhYmxlIHRoZW4KICAgIHRoZXJlIGlzIGEgSUJQQiBpbiB0aGF0IHBhdGguCiAgICAoVGltJ3Mg cGF0Y2g6IGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTAxOTI4NzEpCiAgLSBU aGUgY2FzZSB3aGVyZSBhZnRlciBhIFZNRVhJVCB5b3UgcmV0dXJuIGJhY2sgdG8gUWVtdSBtaWdo dCBtYWtlCiAgICBRZW11IGF0dGFja2FibGUgZnJvbSBndWVzdCB3aGVuIFFlbXUgaXNuJ3QgY29t cGlsZWQgd2l0aCByZXRwb2xpbmUuCiAgVGhlcmUgYXJlIGlzc3VlcyByZXBvcnRlZCB3aGVuIGRv aW5nIElCUEIgb24gZXZlcnkgVk1FWElUIHRoYXQgcmVzdWx0ZWQKICBpbiBzb21lIHRzYyBjYWxp YnJhdGlvbiB3b2VzIGluIGd1ZXN0LgoKKiBNaXRpZ2F0ZSBndWVzdC9yaW5nMC0+aG9zdC9yaW5n MCBhdHRhY2tzLgogIFdoZW4gaG9zdCBrZXJuZWwgaXMgdXNpbmcgcmV0cG9saW5lIGl0IGlzIHNh ZmUgYWdhaW5zdCB0aGVzZSBhdHRhY2tzLgogIElmIGhvc3Qga2VybmVsIGlzbid0IHVzaW5nIHJl dHBvbGluZSB3ZSBtaWdodCBuZWVkIHRvIGRvIGEgSUJQQiBmbHVzaCBvbgogIGV2ZXJ5IFZNRVhJ VC4KCkV2ZW4gd2hlbiB1c2luZyByZXRwb2xpbmUgZm9yIGluZGlyZWN0IGNhbGxzLCBpbiBjZXJ0 YWluIGNvbmRpdGlvbnMgJ3JldCcKY2FuIHVzZSB0aGUgQlRCIG9uIFNreWxha2UtZXJhIENQVXMu IFRoZXJlIGFyZSBvdGhlciBtaXRpZ2F0aW9ucwphdmFpbGFibGUgbGlrZSBSU0Igc3R1ZmZpbmcv Y2xlYXJpbmcuCgoqIElCUEIgaXMgaXNzdWVkIG9ubHkgZm9yIFNWTSBkdXJpbmcgc3ZtX2ZyZWVf dmNwdSgpLgogIFZNWCBoYXMgYSB2bWNsZWFyIGFuZCBTVk0gZG9lc24ndC4gIEZvbGxvdyBkaXNj dXNzaW9uIGhlcmU6CiAgaHR0cHM6Ly9sa21sLm9yZy9sa21sLzIwMTgvMS8xNS8xNDYKClBsZWFz ZSByZWZlciB0byB0aGUgZm9sbG93aW5nIHNwZWMgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgZW51 bWVyYXRpb24KYW5kIGNvbnRyb2wuCgpSZWZlciBoZXJlIHRvIGdldCBkb2N1bWVudGF0aW9uIGFi b3V0IG1pdGlnYXRpb25zLgoKaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vZW4tdXMvc2lkZS1j aGFubmVsLXNlY3VyaXR5LXN1cHBvcnQKCltwZXRlcno6IHJlYmFzZSBhbmQgY2hhbmdlbG9nIHJl d3JpdGVdCltrYXJhaG1lZDogLSByZWJhc2UKICAgICAgICAgICAtIHZteDogZXhwb3NlIFBSRURf Q01EIGlmIGd1ZXN0IGhhcyBpdCBpbiBDUFVJRAogICAgICAgICAgIC0gc3ZtOiBvbmx5IHBhc3Mg dGhyb3VnaCBJQlBCIGlmIGd1ZXN0IGhhcyBpdCBpbiBDUFVJRAogICAgICAgICAgIC0gdm14OiBz dXBwb3J0ICFjcHVfaGFzX3ZteF9tc3JfYml0bWFwKCldCiAgICAgICAgICAgLSB2bXg6IHN1cHBv cnQgbmVzdGVkXQpbZHdtdzI6IEV4cG9zZSBDUFVJRCBiaXQgdG9vIChBTUQgSUJQQiBvbmx5IGZv ciBub3cgYXMgd2UgbGFjayBJQlJTKQogICAgICAgIFBSRURfQ01EIGlzIGEgd3JpdGUtb25seSBN U1JdCgpTaWduZWQtb2ZmLWJ5OiBBc2hvayBSYWogPGFzaG9rLnJhakBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IFBldGVyIFppamxzdHJhIChJbnRlbCkgPHBldGVyekBpbmZyYWRlYWQub3JnPgpT aWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVrPgpTaWduZWQt b2ZmLWJ5OiBLYXJpbUFsbGFoIEFobWVkIDxrYXJhaG1lZEBhbWF6b24uZGU+ClNpZ25lZC1vZmYt Ynk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpSZXZpZXdlZC1ieTogS29u cmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogQW5kcmVhIEFy Y2FuZ2VsaSA8YWFyY2FuZ2VAcmVkaGF0LmNvbT4KQ2M6IEFuZGkgS2xlZW4gPGFrQGxpbnV4Lmlu dGVsLmNvbT4KQ2M6IGt2bUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IEFzaXQgTWFsbGljayA8YXNpdC5r Lm1hbGxpY2tAaW50ZWwuY29tPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZv dW5kYXRpb24ub3JnPgpDYzogQW5keSBMdXRvbWlyc2tpIDxsdXRvQGtlcm5lbC5vcmc+CkNjOiBE YXZlIEhhbnNlbiA8ZGF2ZS5oYW5zZW5AaW50ZWwuY29tPgpDYzogQXJqYW4gVmFuIERlIFZlbiA8 YXJqYW4udmFuLmRlLnZlbkBpbnRlbC5jb20+CkNjOiBHcmVnIEtIIDxncmVna2hAbGludXhmb3Vu ZGF0aW9uLm9yZz4KQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6 IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CkNjOiBEYW4gV2lsbGlhbXMgPGRh bi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6IFRpbSBDaGVuIDx0aW0uYy5jaGVuQGxpbnV4Lmlu dGVsLmNvbT4KTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzE1MTU3MjA3MzktNDM4MTkt Ni1naXQtc2VuZC1lbWFpbC1hc2hvay5yYWpAaW50ZWwuY29tCkxpbms6IGh0dHBzOi8vbGttbC5r ZXJuZWwub3JnL3IvMTUxNzUyMjM4Ni0xODQxMC0zLWdpdC1zZW5kLWVtYWlsLWthcmFobWVkQGFt YXpvbi5kZQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVr PgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRp b24ub3JnPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDogYWRqdXN0IGNvbnRleHRdClNpZ25lZC1v ZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0K IGFyY2gveDg2L2t2bS9jcHVpZC5jIHwgMTEgKysrKysrKy0KIGFyY2gveDg2L2t2bS9jcHVpZC5o IHwgMTIgKysrKysrKysKIGFyY2gveDg2L2t2bS9zdm0uYyAgIHwgMjggKysrKysrKysrKysrKysr KysrKwogYXJjaC94ODYva3ZtL3ZteC5jICAgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tCiA0IGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9jcHVpZC5j IGIvYXJjaC94ODYva3ZtL2NwdWlkLmMKaW5kZXggMzM4ZDEzZDRmZDJmLi4zNTE5NmY4ZTFiYTYg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9jcHVpZC5jCisrKyBiL2FyY2gveDg2L2t2bS9jcHVp ZC5jCkBAIC0zNDEsNiArMzQxLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fZG9fY3B1aWRfZW50 KHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICplbnRyeSwgdTMyIGZ1bmN0aW9uLAogCQlGKDNETk9X UFJFRkVUQ0gpIHwgRihPU1ZXKSB8IDAgLyogSUJTICovIHwgRihYT1ApIHwKIAkJMCAvKiBTS0lO SVQsIFdEVCwgTFdQICovIHwgRihGTUE0KSB8IEYoVEJNKTsKIAorCS8qIGNwdWlkIDB4ODAwMDAw MDguZWJ4ICovCisJY29uc3QgdTMyIGt2bV9jcHVpZF84MDAwXzAwMDhfZWJ4X3g4Nl9mZWF0dXJl cyA9CisJCUYoSUJQQik7CisKIAkvKiBjcHVpZCAweEMwMDAwMDAxLmVkeCAqLwogCWNvbnN0IHUz MiBrdm1fc3VwcG9ydGVkX3dvcmQ1X3g4Nl9mZWF0dXJlcyA9CiAJCUYoWFNUT1JFKSB8IEYoWFNU T1JFX0VOKSB8IEYoWENSWVBUKSB8IEYoWENSWVBUX0VOKSB8CkBAIC01ODMsNyArNTg3LDEyIEBA IHN0YXRpYyBpbmxpbmUgaW50IF9fZG9fY3B1aWRfZW50KHN0cnVjdCBrdm1fY3B1aWRfZW50cnky ICplbnRyeSwgdTMyIGZ1bmN0aW9uLAogCQlpZiAoIWdfcGh5c19hcykKIAkJCWdfcGh5c19hcyA9 IHBoeXNfYXM7CiAJCWVudHJ5LT5lYXggPSBnX3BoeXNfYXMgfCAodmlydF9hcyA8PCA4KTsKLQkJ ZW50cnktPmVieCA9IGVudHJ5LT5lZHggPSAwOworCQllbnRyeS0+ZWR4ID0gMDsKKwkJLyogSUJQ QiBpc24ndCBuZWNlc3NhcmlseSBwcmVzZW50IGluIGhhcmR3YXJlIGNwdWlkICovCisJCWlmIChi b290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpCisJCQllbnRyeS0+ZWJ4IHw9IEYoSUJQQik7 CisJCWVudHJ5LT5lYnggJj0ga3ZtX2NwdWlkXzgwMDBfMDAwOF9lYnhfeDg2X2ZlYXR1cmVzOwor CQljcHVpZF9tYXNrKCZlbnRyeS0+ZWJ4LCBDUFVJRF84MDAwXzAwMDhfRUJYKTsKIAkJYnJlYWs7 CiAJfQogCWNhc2UgMHg4MDAwMDAxOToKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9jcHVpZC5o IGIvYXJjaC94ODYva3ZtL2NwdWlkLmgKaW5kZXggZDE1MzRmZWVmY2ZlLi4yMTMxMDIzODk3OTUg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9jcHVpZC5oCisrKyBiL2FyY2gveDg2L2t2bS9jcHVp ZC5oCkBAIC0xNTksNiArMTU5LDE4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9jcHVpZF9o YXNfcmR0c2NwKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlyZXR1cm4gYmVzdCAmJiAoYmVzdC0+ ZWR4ICYgYml0KFg4Nl9GRUFUVVJFX1JEVFNDUCkpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wg Z3Vlc3RfY3B1aWRfaGFzX2licGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBr dm1fY3B1aWRfZW50cnkyICpiZXN0OworCisJYmVzdCA9IGt2bV9maW5kX2NwdWlkX2VudHJ5KHZj cHUsIDB4ODAwMDAwMDgsIDApOworCWlmIChiZXN0ICYmIChiZXN0LT5lYnggJiBiaXQoWDg2X0ZF QVRVUkVfSUJQQikpKQorCQlyZXR1cm4gdHJ1ZTsKKwliZXN0ID0ga3ZtX2ZpbmRfY3B1aWRfZW50 cnkodmNwdSwgNywgMCk7CisJcmV0dXJuIGJlc3QgJiYgKGJlc3QtPmVkeCAmIGJpdChYODZfRkVB VFVSRV9TUEVDX0NUUkwpKTsKK30KKworCiAvKgogICogTlJJUFMgaXMgcHJvdmlkZWQgdGhyb3Vn aCBjcHVpZGZuIDB4ODAwMDAwMGEuZWR4IGJpdCAzCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2t2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0uYwppbmRleCBkZjc4MjdhOTgxZGQuLmQ0ODk4 MzZkYTZmNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS5jCisrKyBiL2FyY2gveDg2L2t2 bS9zdm0uYwpAQCAtMTgyLDYgKzE4Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ZtX2RpcmVj dF9hY2Nlc3NfbXNycyB7CiAJeyAuaW5kZXggPSBNU1JfQ1NUQVIsCQkJCS5hbHdheXMgPSB0cnVl ICB9LAogCXsgLmluZGV4ID0gTVNSX1NZU0NBTExfTUFTSywJCQkuYWx3YXlzID0gdHJ1ZSAgfSwK ICNlbmRpZgorCXsgLmluZGV4ID0gTVNSX0lBMzJfUFJFRF9DTUQsCQkJLmFsd2F5cyA9IGZhbHNl IH0sCiAJeyAuaW5kZXggPSBNU1JfSUEzMl9MQVNUQlJBTkNIRlJPTUlQLAkJLmFsd2F5cyA9IGZh bHNlIH0sCiAJeyAuaW5kZXggPSBNU1JfSUEzMl9MQVNUQlJBTkNIVE9JUCwJCS5hbHdheXMgPSBm YWxzZSB9LAogCXsgLmluZGV4ID0gTVNSX0lBMzJfTEFTVElOVEZST01JUCwJCS5hbHdheXMgPSBm YWxzZSB9LApAQCAtNDExLDYgKzQxMiw3IEBAIHN0cnVjdCBzdm1fY3B1X2RhdGEgewogCXN0cnVj dCBrdm1fbGR0dHNzX2Rlc2MgKnRzc19kZXNjOwogCiAJc3RydWN0IHBhZ2UgKnNhdmVfYXJlYTsK KwlzdHJ1Y3Qgdm1jYiAqY3VycmVudF92bWNiOwogfTsKIAogc3RhdGljIERFRklORV9QRVJfQ1BV KHN0cnVjdCBzdm1fY3B1X2RhdGEgKiwgc3ZtX2RhdGEpOwpAQCAtMTIxMCwxMSArMTIxMiwxNyBA QCBzdGF0aWMgdm9pZCBzdm1fZnJlZV92Y3B1KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlfX2Zy ZWVfcGFnZXModmlydF90b19wYWdlKHN2bS0+bmVzdGVkLm1zcnBtKSwgTVNSUE1fQUxMT0NfT1JE RVIpOwogCWt2bV92Y3B1X3VuaW5pdCh2Y3B1KTsKIAlrbWVtX2NhY2hlX2ZyZWUoa3ZtX3ZjcHVf Y2FjaGUsIHN2bSk7CisJLyoKKwkgKiBUaGUgdm1jYiBwYWdlIGNhbiBiZSByZWN5Y2xlZCwgY2F1 c2luZyBhIGZhbHNlIG5lZ2F0aXZlIGluCisJICogc3ZtX3ZjcHVfbG9hZCgpLiBTbyBkbyBhIGZ1 bGwgSUJQQiBub3cuCisJICovCisJaW5kaXJlY3RfYnJhbmNoX3ByZWRpY3Rpb25fYmFycmllcigp OwogfQogCiBzdGF0aWMgdm9pZCBzdm1fdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg aW50IGNwdSkKIHsKIAlzdHJ1Y3QgdmNwdV9zdm0gKnN2bSA9IHRvX3N2bSh2Y3B1KTsKKwlzdHJ1 Y3Qgc3ZtX2NwdV9kYXRhICpzZCA9IHBlcl9jcHUoc3ZtX2RhdGEsIGNwdSk7CiAJaW50IGk7CiAK IAlpZiAodW5saWtlbHkoY3B1ICE9IHZjcHUtPmNwdSkpIHsKQEAgLTEyMzksNiArMTI0NywxMCBA QCBzdGF0aWMgdm9pZCBzdm1fdmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNw dSkKIAkJCXdybXNybChNU1JfQU1ENjRfVFNDX1JBVElPLCB0c2NfcmF0aW8pOwogCQl9CiAJfQor CWlmIChzZC0+Y3VycmVudF92bWNiICE9IHN2bS0+dm1jYikgeworCQlzZC0+Y3VycmVudF92bWNi ID0gc3ZtLT52bWNiOworCQlpbmRpcmVjdF9icmFuY2hfcHJlZGljdGlvbl9iYXJyaWVyKCk7CisJ fQogfQogCiBzdGF0aWMgdm9pZCBzdm1fdmNwdV9wdXQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQpA QCAtMzEyNSw2ICszMTM3LDIyIEBAIHN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcikKIAljYXNlIE1TUl9JQTMyX1RTQzoKIAkJ a3ZtX3dyaXRlX3RzYyh2Y3B1LCBtc3IpOwogCQlicmVhazsKKwljYXNlIE1TUl9JQTMyX1BSRURf Q01EOgorCQlpZiAoIW1zci0+aG9zdF9pbml0aWF0ZWQgJiYKKwkJICAgICFndWVzdF9jcHVpZF9o YXNfaWJwYih2Y3B1KSkKKwkJCXJldHVybiAxOworCisJCWlmIChkYXRhICYgflBSRURfQ01EX0lC UEIpCisJCQlyZXR1cm4gMTsKKworCQlpZiAoIWRhdGEpCisJCQlicmVhazsKKworCQl3cm1zcmwo TVNSX0lBMzJfUFJFRF9DTUQsIFBSRURfQ01EX0lCUEIpOworCQlpZiAoaXNfZ3Vlc3RfbW9kZSh2 Y3B1KSkKKwkJCWJyZWFrOworCQlzZXRfbXNyX2ludGVyY2VwdGlvbihzdm0tPm1zcnBtLCBNU1Jf SUEzMl9QUkVEX0NNRCwgMCwgMSk7CisJCWJyZWFrOwogCWNhc2UgTVNSX1NUQVI6CiAJCXN2bS0+ dm1jYi0+c2F2ZS5zdGFyID0gZGF0YTsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9r dm0vdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggZTAwNjQ4NTVmYmRiLi5hMTkxMTZm YWQ2ODAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYworKysgYi9hcmNoL3g4Ni9rdm0v dm14LmMKQEAgLTU0NCw2ICs1NDQsNyBAQCBzdHJ1Y3QgdmNwdV92bXggewogCXU2NCAJCSAgICAg IG1zcl9ob3N0X2tlcm5lbF9nc19iYXNlOwogCXU2NCAJCSAgICAgIG1zcl9ndWVzdF9rZXJuZWxf Z3NfYmFzZTsKICNlbmRpZgorCiAJdTMyIHZtX2VudHJ5X2NvbnRyb2xzX3NoYWRvdzsKIAl1MzIg dm1fZXhpdF9jb250cm9sc19zaGFkb3c7CiAJLyoKQEAgLTg5Miw2ICs4OTMsOCBAQCBzdGF0aWMg dm9pZCBjb3B5X3ZtY3MxMl90b19zaGFkb3coc3RydWN0IHZjcHVfdm14ICp2bXgpOwogc3RhdGlj IHZvaWQgY29weV9zaGFkb3dfdG9fdm1jczEyKHN0cnVjdCB2Y3B1X3ZteCAqdm14KTsKIHN0YXRp YyBpbnQgYWxsb2NfaWRlbnRpdHlfcGFnZXRhYmxlKHN0cnVjdCBrdm0gKmt2bSk7CiBzdGF0aWMg dm9pZCB2bXhfdXBkYXRlX21zcl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKK3N0YXRp YyB2b2lkIF9fYWx3YXlzX2lubGluZSB2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih1bnNp Z25lZCBsb25nICptc3JfYml0bWFwLAorCQkJCQkJCSAgdTMyIG1zciwgaW50IHR5cGUpOwogCiBz dGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHZtY3MgKiwgdm14YXJlYSk7CiBzdGF0aWMgREVG SU5FX1BFUl9DUFUoc3RydWN0IHZtY3MgKiwgY3VycmVudF92bWNzKTsKQEAgLTE2ODcsNiArMTY5 MCwyOSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZXhjZXB0aW9uX2JpdG1hcChzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpCiAJdm1jc193cml0ZTMyKEVYQ0VQVElPTl9CSVRNQVAsIGViKTsKIH0KIAorLyoK KyAqIENoZWNrIGlmIE1TUiBpcyBpbnRlcmNlcHRlZCBmb3IgTDAxIE1TUiBiaXRtYXAuCisgKi8K K3N0YXRpYyBib29sIG1zcl93cml0ZV9pbnRlcmNlcHRlZF9sMDEoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCB1MzIgbXNyKQoreworCXVuc2lnbmVkIGxvbmcgKm1zcl9iaXRtYXA7CisJaW50IGYgPSBz aXplb2YodW5zaWduZWQgbG9uZyk7CisKKwlpZiAoIWNwdV9oYXNfdm14X21zcl9iaXRtYXAoKSkK KwkJcmV0dXJuIHRydWU7CisKKwltc3JfYml0bWFwID0gdG9fdm14KHZjcHUpLT52bWNzMDEubXNy X2JpdG1hcDsKKworCWlmIChtc3IgPD0gMHgxZmZmKSB7CisJCXJldHVybiAhIXRlc3RfYml0KG1z ciwgbXNyX2JpdG1hcCArIDB4ODAwIC8gZik7CisJfSBlbHNlIGlmICgobXNyID49IDB4YzAwMDAw MDApICYmIChtc3IgPD0gMHhjMDAwMWZmZikpIHsKKwkJbXNyICY9IDB4MWZmZjsKKwkJcmV0dXJu ICEhdGVzdF9iaXQobXNyLCBtc3JfYml0bWFwICsgMHhjMDAgLyBmKTsKKwl9CisKKwlyZXR1cm4g dHJ1ZTsKK30KKwogc3RhdGljIHZvaWQgY2xlYXJfYXRvbWljX3N3aXRjaF9tc3Jfc3BlY2lhbChz dHJ1Y3QgdmNwdV92bXggKnZteCwKIAkJdW5zaWduZWQgbG9uZyBlbnRyeSwgdW5zaWduZWQgbG9u ZyBleGl0KQogewpAQCAtMjA3Miw2ICsyMDk4LDcgQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVfbG9h ZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGludCBjcHUpCiAJaWYgKHBlcl9jcHUoY3VycmVudF92 bWNzLCBjcHUpICE9IHZteC0+bG9hZGVkX3ZtY3MtPnZtY3MpIHsKIAkJcGVyX2NwdShjdXJyZW50 X3ZtY3MsIGNwdSkgPSB2bXgtPmxvYWRlZF92bWNzLT52bWNzOwogCQl2bWNzX2xvYWQodm14LT5s b2FkZWRfdm1jcy0+dm1jcyk7CisJCWluZGlyZWN0X2JyYW5jaF9wcmVkaWN0aW9uX2JhcnJpZXIo KTsKIAl9CiAKIAlpZiAodm14LT5sb2FkZWRfdm1jcy0+Y3B1ICE9IGNwdSkgewpAQCAtMjkwNCw2 ICsyOTMxLDMzIEBAIHN0YXRpYyBpbnQgdm14X3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZvKQogCWNhc2UgTVNSX0lBMzJfVFNDOgogCQlrdm1f d3JpdGVfdHNjKHZjcHUsIG1zcl9pbmZvKTsKIAkJYnJlYWs7CisJY2FzZSBNU1JfSUEzMl9QUkVE X0NNRDoKKwkJaWYgKCFtc3JfaW5mby0+aG9zdF9pbml0aWF0ZWQgJiYKKwkJICAgICFndWVzdF9j cHVpZF9oYXNfaWJwYih2Y3B1KSkKKwkJCXJldHVybiAxOworCisJCWlmIChkYXRhICYgflBSRURf Q01EX0lCUEIpCisJCQlyZXR1cm4gMTsKKworCQlpZiAoIWRhdGEpCisJCQlicmVhazsKKworCQl3 cm1zcmwoTVNSX0lBMzJfUFJFRF9DTUQsIFBSRURfQ01EX0lCUEIpOworCisJCS8qCisJCSAqIEZv ciBub24tbmVzdGVkOgorCQkgKiBXaGVuIGl0J3Mgd3JpdHRlbiAodG8gbm9uLXplcm8pIGZvciB0 aGUgZmlyc3QgdGltZSwgcGFzcworCQkgKiBpdCB0aHJvdWdoLgorCQkgKgorCQkgKiBGb3IgbmVz dGVkOgorCQkgKiBUaGUgaGFuZGxpbmcgb2YgdGhlIE1TUiBiaXRtYXAgZm9yIEwyIGd1ZXN0cyBp cyBkb25lIGluCisJCSAqIG5lc3RlZF92bXhfbWVyZ2VfbXNyX2JpdG1hcC4gV2Ugc2hvdWxkIG5v dCB0b3VjaCB0aGUKKwkJICogdm1jczAyLm1zcl9iaXRtYXAgaGVyZSBzaW5jZSBpdCBnZXRzIGNv bXBsZXRlbHkgb3ZlcndyaXR0ZW4KKwkJICogaW4gdGhlIG1lcmdpbmcuCisJCSAqLworCQl2bXhf ZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2bXgtPnZtY3MwMS5tc3JfYml0bWFwLCBNU1JfSUEz Ml9QUkVEX0NNRCwKKwkJCQkJICAgICAgTVNSX1RZUEVfVyk7CisJCWJyZWFrOwogCWNhc2UgTVNS X0lBMzJfQ1JfUEFUOgogCQlpZiAodm1jc19jb25maWcudm1lbnRyeV9jdHJsICYgVk1fRU5UUllf TE9BRF9JQTMyX1BBVCkgewogCQkJaWYgKCFrdm1fbXRycl92YWxpZCh2Y3B1LCBNU1JfSUEzMl9D Ul9QQVQsIGRhdGEpKQpAQCAtOTE3Miw5ICs5MjI2LDIzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBu ZXN0ZWRfdm14X21lcmdlX21zcl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCXN0cnVj dCBwYWdlICpwYWdlOwogCXVuc2lnbmVkIGxvbmcgKm1zcl9iaXRtYXBfbDE7CiAJdW5zaWduZWQg bG9uZyAqbXNyX2JpdG1hcF9sMCA9IHRvX3ZteCh2Y3B1KS0+bmVzdGVkLnZtY3MwMi5tc3JfYml0 bWFwOworCS8qCisJICogcHJlZF9jbWQgaXMgdHJ5aW5nIHRvIHZlcmlmeSB0d28gdGhpbmdzOgor CSAqCisJICogMS4gTDAgZ2F2ZSBhIHBlcm1pc3Npb24gdG8gTDEgdG8gYWN0dWFsbHkgcGFzc3Ro cm91Z2ggdGhlIE1TUi4gVGhpcworCSAqICAgIGVuc3VyZXMgdGhhdCB3ZSBkbyBub3QgYWNjaWRl bnRhbGx5IGdlbmVyYXRlIGFuIEwwMiBNU1IgYml0bWFwCisJICogICAgZnJvbSB0aGUgTDEyIE1T UiBiaXRtYXAgdGhhdCBpcyB0b28gcGVybWlzc2l2ZS4KKwkgKiAyLiBUaGF0IEwxIG9yIEwycyBo YXZlIGFjdHVhbGx5IHVzZWQgdGhlIE1TUi4gVGhpcyBhdm9pZHMKKwkgKiAgICB1bm5lY2Vzc2Fy aWx5IG1lcmdpbmcgb2YgdGhlIGJpdG1hcCBpZiB0aGUgTVNSIGlzIHVudXNlZC4gVGhpcworCSAq ICAgIHdvcmtzIHByb3Blcmx5IGJlY2F1c2Ugd2Ugb25seSB1cGRhdGUgdGhlIEwwMSBNU1IgYml0 bWFwIGxhemlseS4KKwkgKiAgICBTbyBldmVuIGlmIEwwIHNob3VsZCBwYXNzIEwxIHRoZXNlIE1T UnMsIHRoZSBMMDEgYml0bWFwIGlzIG9ubHkKKwkgKiAgICB1cGRhdGVkIHRvIHJlZmxlY3QgdGhp cyB3aGVuIEwxIChvciBpdHMgTDJzKSBhY3R1YWxseSB3cml0ZSB0bworCSAqICAgIHRoZSBNU1Iu CisJICovCisJYm9vbCBwcmVkX2NtZCA9IG1zcl93cml0ZV9pbnRlcmNlcHRlZF9sMDEodmNwdSwg TVNSX0lBMzJfUFJFRF9DTUQpOwogCi0JLyogVGhpcyBzaG9ydGN1dCBpcyBvayBiZWNhdXNlIHdl IHN1cHBvcnQgb25seSB4MkFQSUMgTVNScyBzbyBmYXIuICovCi0JaWYgKCFuZXN0ZWRfY3B1X2hh c192aXJ0X3gyYXBpY19tb2RlKHZtY3MxMikpCisJaWYgKCFuZXN0ZWRfY3B1X2hhc192aXJ0X3gy YXBpY19tb2RlKHZtY3MxMikgJiYKKwkgICAgIXByZWRfY21kKQogCQlyZXR1cm4gZmFsc2U7CiAK IAlwYWdlID0gbmVzdGVkX2dldF9wYWdlKHZjcHUsIHZtY3MxMi0+bXNyX2JpdG1hcCk7CkBAIC05 MjA5LDYgKzkyNzcsMTMgQEAgc3RhdGljIGlubGluZSBib29sIG5lc3RlZF92bXhfbWVyZ2VfbXNy X2JpdG1hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJTVNSX1RZUEVfVyk7CiAJCX0KIAl9 CisKKwlpZiAocHJlZF9jbWQpCisJCW5lc3RlZF92bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21z cigKKwkJCQkJbXNyX2JpdG1hcF9sMSwgbXNyX2JpdG1hcF9sMCwKKwkJCQkJTVNSX0lBMzJfUFJF RF9DTUQsCisJCQkJCU1TUl9UWVBFX1cpOworCiAJa3VubWFwKHBhZ2UpOwogCW5lc3RlZF9yZWxl YXNlX3BhZ2VfY2xlYW4ocGFnZSk7CiAKCkZyb20gNzU1ZmUxZjIzZjk0YWQ0NDY1OTU4YTEzOWYz NWIxOTY0OTU5MzExZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS2FyaW1BbGxhaCBB aG1lZCA8a2FyYWhtZWRAYW1hem9uLmRlPgpEYXRlOiBUaHUsIDEgRmViIDIwMTggMjI6NTk6NDQg KzAxMDAKU3ViamVjdDogW1BBVENIIDA4LzM0XSBLVk0vVk1YOiBFbXVsYXRlIE1TUl9JQTMyX0FS Q0hfQ0FQQUJJTElUSUVTCgpjb21taXQgMjhjMWM5ZmFiZjQ4ZDZhZDU5NjI3M2ExMWM0NmUwZDBk YTNlMTRjZCB1cHN0cmVhbS4KCkludGVsIHByb2Nlc3NvcnMgdXNlIE1TUl9JQTMyX0FSQ0hfQ0FQ QUJJTElUSUVTIE1TUiB0byBpbmRpY2F0ZSBSRENMX05PCihiaXQgMCkgYW5kIElCUlNfQUxMIChi aXQgMSkuIFRoaXMgaXMgYSByZWFkLW9ubHkgTVNSLiBCeSBkZWZhdWx0IHRoZQpjb250ZW50cyB3 aWxsIGNvbWUgZGlyZWN0bHkgZnJvbSB0aGUgaGFyZHdhcmUsIGJ1dCB1c2VyLXNwYWNlIGNhbiBz dGlsbApvdmVycmlkZSBpdC4KCltkd213MjogVGhlIGJpdCBpbiBrdm1fY3B1aWRfN18wX2VkeF94 ODZfZmVhdHVyZXMgY2FuIGJlIHVuY29uZGl0aW9uYWxdCgpTaWduZWQtb2ZmLWJ5OiBLYXJpbUFs bGFoIEFobWVkIDxrYXJhaG1lZEBhbWF6b24uZGU+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Ro b3VzZSA8ZHdtd0BhbWF6b24uY28udWs+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8 dGdseEBsaW51dHJvbml4LmRlPgpSZXZpZXdlZC1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlA cmVkaGF0LmNvbT4KUmV2aWV3ZWQtYnk6IERhcnJlbiBLZW5ueSA8ZGFycmVuLmtlbm55QG9yYWNs ZS5jb20+ClJldmlld2VkLWJ5OiBKaW0gTWF0dHNvbiA8am1hdHRzb25AZ29vZ2xlLmNvbT4KUmV2 aWV3ZWQtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4K Q2M6IEFuZHJlYSBBcmNhbmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+CkNjOiBBbmRpIEtsZWVu IDxha0BsaW51eC5pbnRlbC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRl bC5jb20+CkNjOiBrdm1Admdlci5rZXJuZWwub3JnCkNjOiBEYXZlIEhhbnNlbiA8ZGF2ZS5oYW5z ZW5AaW50ZWwuY29tPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRp b24ub3JnPgpDYzogQW5keSBMdXRvbWlyc2tpIDxsdXRvQGtlcm5lbC5vcmc+CkNjOiBBc2l0IE1h bGxpY2sgPGFzaXQuay5tYWxsaWNrQGludGVsLmNvbT4KQ2M6IEFyamFuIFZhbiBEZSBWZW4gPGFy amFuLnZhbi5kZS52ZW5AaW50ZWwuY29tPgpDYzogR3JlZyBLSCA8Z3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmc+CkNjOiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KQ2M6 IFRpbSBDaGVuIDx0aW0uYy5jaGVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFzaG9rIFJhaiA8YXNo b2sucmFqQGludGVsLmNvbT4KTGluazogaHR0cHM6Ly9sa21sLmtlcm5lbC5vcmcvci8xNTE3NTIy Mzg2LTE4NDEwLTQtZ2l0LXNlbmQtZW1haWwta2FyYWhtZWRAYW1hem9uLmRlClNpZ25lZC1vZmYt Ynk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24uY28udWs+ClNpZ25lZC1vZmYtYnk6IEdy ZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+Cltid2g6IEJhY2tw b3J0ZWQgdG8gNC40OiBhZGp1c3QgY29udGV4dF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5n cyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJjaC94ODYva3ZtL2NwdWlk LmMgfCAxMSArKysrKysrKystLQogYXJjaC94ODYva3ZtL2NwdWlkLmggfCAgOCArKysrKysrKwog YXJjaC94ODYva3ZtL3ZteC5jICAgfCAxNSArKysrKysrKysrKysrKysKIGFyY2gveDg2L2t2bS94 ODYuYyAgIHwgIDEgKwogNCBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9jcHVpZC5jIGIvYXJjaC94ODYva3Zt L2NwdWlkLmMKaW5kZXggMzUxOTZmOGUxYmE2Li4yZjM0ODNlMzk1YmYgMTAwNjQ0Ci0tLSBhL2Fy Y2gveDg2L2t2bS9jcHVpZC5jCisrKyBiL2FyY2gveDg2L2t2bS9jcHVpZC5jCkBAIC0zNjIsNiAr MzYyLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fZG9fY3B1aWRfZW50KHN0cnVjdCBrdm1fY3B1 aWRfZW50cnkyICplbnRyeSwgdTMyIGZ1bmN0aW9uLAogCWNvbnN0IHUzMiBrdm1fc3VwcG9ydGVk X3dvcmQxMF94ODZfZmVhdHVyZXMgPQogCQlGKFhTQVZFT1BUKSB8IEYoWFNBVkVDKSB8IEYoWEdF VEJWMSkgfCBmX3hzYXZlczsKIAorCS8qIGNwdWlkIDcuMC5lZHgqLworCWNvbnN0IHUzMiBrdm1f Y3B1aWRfN18wX2VkeF94ODZfZmVhdHVyZXMgPQorCQlGKEFSQ0hfQ0FQQUJJTElUSUVTKTsKKwog CS8qIGFsbCBjYWxscyB0byBjcHVpZF9jb3VudCgpIHNob3VsZCBiZSBtYWRlIG9uIHRoZSBzYW1l IGNwdSAqLwogCWdldF9jcHUoKTsKIApAQCAtNDM5LDExICs0NDMsMTQgQEAgc3RhdGljIGlubGlu ZSBpbnQgX19kb19jcHVpZF9lbnQoc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmVudHJ5LCB1MzIg ZnVuY3Rpb24sCiAJCQljcHVpZF9tYXNrKCZlbnRyeS0+ZWJ4LCA5KTsKIAkJCS8vIFRTQ19BREpV U1QgaXMgZW11bGF0ZWQKIAkJCWVudHJ5LT5lYnggfD0gRihUU0NfQURKVVNUKTsKLQkJfSBlbHNl CisJCQllbnRyeS0+ZWR4ICY9IGt2bV9jcHVpZF83XzBfZWR4X3g4Nl9mZWF0dXJlczsKKwkJCWNw dWlkX21hc2soJmVudHJ5LT5lZHgsIENQVUlEXzdfRURYKTsKKwkJfSBlbHNlIHsKIAkJCWVudHJ5 LT5lYnggPSAwOworCQkJZW50cnktPmVkeCA9IDA7CisJCX0KIAkJZW50cnktPmVheCA9IDA7CiAJ CWVudHJ5LT5lY3ggPSAwOwotCQllbnRyeS0+ZWR4ID0gMDsKIAkJYnJlYWs7CiAJfQogCWNhc2Ug OToKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9jcHVpZC5oIGIvYXJjaC94ODYva3ZtL2NwdWlk LmgKaW5kZXggMjEzMTAyMzg5Nzk1Li42N2MzNTQ4NmQ4ZDAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2 L2t2bS9jcHVpZC5oCisrKyBiL2FyY2gveDg2L2t2bS9jcHVpZC5oCkBAIC0xNzAsNiArMTcwLDE0 IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9jcHVpZF9oYXNfaWJwYihzdHJ1Y3Qga3ZtX3Zj cHUgKnZjcHUpCiAJcmV0dXJuIGJlc3QgJiYgKGJlc3QtPmVkeCAmIGJpdChYODZfRkVBVFVSRV9T UEVDX0NUUkwpKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGd1ZXN0X2NwdWlkX2hhc19hcmNo X2NhcGFiaWxpdGllcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCit7CisJc3RydWN0IGt2bV9jcHVp ZF9lbnRyeTIgKmJlc3Q7CisKKwliZXN0ID0ga3ZtX2ZpbmRfY3B1aWRfZW50cnkodmNwdSwgNywg MCk7CisJcmV0dXJuIGJlc3QgJiYgKGJlc3QtPmVkeCAmIGJpdChYODZfRkVBVFVSRV9BUkNIX0NB UEFCSUxJVElFUykpOworfQorCiAKIC8qCiAgKiBOUklQUyBpcyBwcm92aWRlZCB0aHJvdWdoIGNw dWlkZm4gMHg4MDAwMDAwYS5lZHggYml0IDMKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXgu YyBiL2FyY2gveDg2L2t2bS92bXguYwppbmRleCBhMTkxMTZmYWQ2ODAuLjNhNTEzOTk3YjFjYiAx MDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpA QCAtNTQ1LDYgKzU0NSw4IEBAIHN0cnVjdCB2Y3B1X3ZteCB7CiAJdTY0IAkJICAgICAgbXNyX2d1 ZXN0X2tlcm5lbF9nc19iYXNlOwogI2VuZGlmCiAKKwl1NjQgCQkgICAgICBhcmNoX2NhcGFiaWxp dGllczsKKwogCXUzMiB2bV9lbnRyeV9jb250cm9sc19zaGFkb3c7CiAJdTMyIHZtX2V4aXRfY29u dHJvbHNfc2hhZG93OwogCS8qCkBAIC0yODMyLDYgKzI4MzQsMTIgQEAgc3RhdGljIGludCB2bXhf Z2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8p CiAJY2FzZSBNU1JfSUEzMl9UU0M6CiAJCW1zcl9pbmZvLT5kYXRhID0gZ3Vlc3RfcmVhZF90c2Mo dmNwdSk7CiAJCWJyZWFrOworCWNhc2UgTVNSX0lBMzJfQVJDSF9DQVBBQklMSVRJRVM6CisJCWlm ICghbXNyX2luZm8tPmhvc3RfaW5pdGlhdGVkICYmCisJCSAgICAhZ3Vlc3RfY3B1aWRfaGFzX2Fy Y2hfY2FwYWJpbGl0aWVzKHZjcHUpKQorCQkJcmV0dXJuIDE7CisJCW1zcl9pbmZvLT5kYXRhID0g dG9fdm14KHZjcHUpLT5hcmNoX2NhcGFiaWxpdGllczsKKwkJYnJlYWs7CiAJY2FzZSBNU1JfSUEz Ml9TWVNFTlRFUl9DUzoKIAkJbXNyX2luZm8tPmRhdGEgPSB2bWNzX3JlYWQzMihHVUVTVF9TWVNF TlRFUl9DUyk7CiAJCWJyZWFrOwpAQCAtMjk1OCw2ICsyOTY2LDExIEBAIHN0YXRpYyBpbnQgdm14 X3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcl9pbmZv KQogCQl2bXhfZGlzYWJsZV9pbnRlcmNlcHRfZm9yX21zcih2bXgtPnZtY3MwMS5tc3JfYml0bWFw LCBNU1JfSUEzMl9QUkVEX0NNRCwKIAkJCQkJICAgICAgTVNSX1RZUEVfVyk7CiAJCWJyZWFrOwor CWNhc2UgTVNSX0lBMzJfQVJDSF9DQVBBQklMSVRJRVM6CisJCWlmICghbXNyX2luZm8tPmhvc3Rf aW5pdGlhdGVkKQorCQkJcmV0dXJuIDE7CisJCXZteC0+YXJjaF9jYXBhYmlsaXRpZXMgPSBkYXRh OworCQlicmVhazsKIAljYXNlIE1TUl9JQTMyX0NSX1BBVDoKIAkJaWYgKHZtY3NfY29uZmlnLnZt ZW50cnlfY3RybCAmIFZNX0VOVFJZX0xPQURfSUEzMl9QQVQpIHsKIAkJCWlmICgha3ZtX210cnJf dmFsaWQodmNwdSwgTVNSX0lBMzJfQ1JfUEFULCBkYXRhKSkKQEAgLTUwMDIsNiArNTAxNSw4IEBA IHN0YXRpYyBpbnQgdm14X3ZjcHVfc2V0dXAoc3RydWN0IHZjcHVfdm14ICp2bXgpCiAJCSsrdm14 LT5ubXNyczsKIAl9CiAKKwlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FSQ0hfQ0FQQUJJ TElUSUVTKSkKKwkJcmRtc3JsKE1TUl9JQTMyX0FSQ0hfQ0FQQUJJTElUSUVTLCB2bXgtPmFyY2hf Y2FwYWJpbGl0aWVzKTsKIAogCXZtX2V4aXRfY29udHJvbHNfaW5pdCh2bXgsIHZtY3NfY29uZmln LnZtZXhpdF9jdHJsKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94 ODYva3ZtL3g4Ni5jCmluZGV4IGU2YWIwMzRmMGJjNy4uMjc2Zjk3OGVmZWVkIDEwMDY0NAotLS0g YS9hcmNoL3g4Ni9rdm0veDg2LmMKKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC05NjEsNiAr OTYxLDcgQEAgc3RhdGljIHUzMiBtc3JzX3RvX3NhdmVbXSA9IHsKICNlbmRpZgogCU1TUl9JQTMy X1RTQywgTVNSX0lBMzJfQ1JfUEFULCBNU1JfVk1fSFNBVkVfUEEsCiAJTVNSX0lBMzJfRkVBVFVS RV9DT05UUk9MLCBNU1JfSUEzMl9CTkRDRkdTLCBNU1JfVFNDX0FVWCwKKwlNU1JfSUEzMl9BUkNI X0NBUEFCSUxJVElFUwogfTsKIAogc3RhdGljIHVuc2lnbmVkIG51bV9tc3JzX3RvX3NhdmU7CgpG cm9tIDBjMDA2NTZkM2FhZTdlY2MzMmE2Zjk4MDcxMWI2ZjJkYjE5N2U4M2EgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IEthcmltQWxsYWggQWhtZWQgPGthcmFobWVkQGFtYXpvbi5kZT4K RGF0ZTogVGh1LCAxIEZlYiAyMDE4IDIyOjU5OjQ1ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOS8z NF0gS1ZNL1ZNWDogQWxsb3cgZGlyZWN0IGFjY2VzcyB0byBNU1JfSUEzMl9TUEVDX0NUUkwKCmNv bW1pdCBkMjhiMzg3ZmI3NGRhOTVkNjlkMjYxNTczMmY1MGNjZWIzOGU5YTRkIHVwc3RyZWFtLgoK WyBCYXNlZCBvbiBhIHBhdGNoIGZyb20gQXNob2sgUmFqIDxhc2hvay5yYWpAaW50ZWwuY29tPiBd CgpBZGQgZGlyZWN0IGFjY2VzcyB0byBNU1JfSUEzMl9TUEVDX0NUUkwgZm9yIGd1ZXN0cy4gVGhp cyBpcyBuZWVkZWQgZm9yCmd1ZXN0cyB0aGF0IHdpbGwgb25seSBtaXRpZ2F0ZSBTcGVjdHJlIFYy IHRocm91Z2ggSUJSUytJQlBCIGFuZCB3aWxsIG5vdApiZSB1c2luZyBhIHJldHBvbGluZStJQlBC IGJhc2VkIGFwcHJvYWNoLgoKVG8gYXZvaWQgdGhlIG92ZXJoZWFkIG9mIHNhdmluZyBhbmQgcmVz dG9yaW5nIHRoZSBNU1JfSUEzMl9TUEVDX0NUUkwgZm9yCmd1ZXN0cyB0aGF0IGRvIG5vdCBhY3R1 YWxseSB1c2UgdGhlIE1TUiwgb25seSBzdGFydCBzYXZpbmcgYW5kIHJlc3RvcmluZwp3aGVuIGEg bm9uLXplcm8gaXMgd3JpdHRlbiB0byBpdC4KCk5vIGF0dGVtcHQgaXMgbWFkZSB0byBoYW5kbGUg U1RJQlAgaGVyZSwgaW50ZW50aW9uYWxseS4gRmlsdGVyaW5nIFNUSUJQCm1heSBiZSBhZGRlZCBp biBhIGZ1dHVyZSBwYXRjaCwgd2hpY2ggbWF5IHJlcXVpcmUgdHJhcHBpbmcgYWxsIHdyaXRlcwpp ZiB3ZSBkb24ndCB3YW50IHRvIHBhc3MgaXQgdGhyb3VnaCBkaXJlY3RseSB0byB0aGUgZ3Vlc3Qu CgpbZHdtdzI6IENsZWFuIHVwIENQVUlEIGJpdHMsIHNhdmUvcmVzdG9yZSBtYW51YWxseSwgaGFu ZGxlIHJlc2V0XQoKU2lnbmVkLW9mZi1ieTogS2FyaW1BbGxhaCBBaG1lZCA8a2FyYWhtZWRAYW1h em9uLmRlPgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVr PgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KUmV2 aWV3ZWQtYnk6IERhcnJlbiBLZW5ueSA8ZGFycmVuLmtlbm55QG9yYWNsZS5jb20+ClJldmlld2Vk LWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClJldmll d2VkLWJ5OiBKaW0gTWF0dHNvbiA8am1hdHRzb25AZ29vZ2xlLmNvbT4KQ2M6IEFuZHJlYSBBcmNh bmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+CkNjOiBBbmRpIEtsZWVuIDxha0BsaW51eC5pbnRl bC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBrdm1A dmdlci5rZXJuZWwub3JnCkNjOiBEYXZlIEhhbnNlbiA8ZGF2ZS5oYW5zZW5AaW50ZWwuY29tPgpD YzogVGltIENoZW4gPHRpbS5jLmNoZW5AbGludXguaW50ZWwuY29tPgpDYzogQW5keSBMdXRvbWly c2tpIDxsdXRvQGtlcm5lbC5vcmc+CkNjOiBBc2l0IE1hbGxpY2sgPGFzaXQuay5tYWxsaWNrQGlu dGVsLmNvbT4KQ2M6IEFyamFuIFZhbiBEZSBWZW4gPGFyamFuLnZhbi5kZS52ZW5AaW50ZWwuY29t PgpDYzogR3JlZyBLSCA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CkNjOiBQYW9sbyBCb256 aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFt c0BpbnRlbC5jb20+CkNjOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlv bi5vcmc+CkNjOiBBc2hvayBSYWogPGFzaG9rLnJhakBpbnRlbC5jb20+Ckxpbms6IGh0dHBzOi8v bGttbC5rZXJuZWwub3JnL3IvMTUxNzUyMjM4Ni0xODQxMC01LWdpdC1zZW5kLWVtYWlsLWthcmFo bWVkQGFtYXpvbi5kZQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9u LmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZv dW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdz QGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9rdm0vY3B1aWQuYyB8ICAgOCArKy0tCiBh cmNoL3g4Ni9rdm0vY3B1aWQuaCB8ICAxMSArKysrKysKIGFyY2gveDg2L2t2bS92bXguYyAgIHwg MTAzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQog YXJjaC94ODYva3ZtL3g4Ni5jICAgfCAgIDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTE4IGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2NwdWlk LmMgYi9hcmNoL3g4Ni9rdm0vY3B1aWQuYwppbmRleCAyZjM0ODNlMzk1YmYuLjBhYjcyYTgzODdk NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2NwdWlkLmMKKysrIGIvYXJjaC94ODYva3ZtL2Nw dWlkLmMKQEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBfX2RvX2NwdWlkX2Vu dChzdHJ1Y3Qga3ZtX2NwdWlkX2VudHJ5MiAqZW50cnksIHUzMiBmdW5jdGlvbiwKIAogCS8qIGNw dWlkIDB4ODAwMDAwMDguZWJ4ICovCiAJY29uc3QgdTMyIGt2bV9jcHVpZF84MDAwXzAwMDhfZWJ4 X3g4Nl9mZWF0dXJlcyA9Ci0JCUYoSUJQQik7CisJCUYoSUJQQikgfCBGKElCUlMpOwogCiAJLyog Y3B1aWQgMHhDMDAwMDAwMS5lZHggKi8KIAljb25zdCB1MzIga3ZtX3N1cHBvcnRlZF93b3JkNV94 ODZfZmVhdHVyZXMgPQpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fZG9f Y3B1aWRfZW50KHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICplbnRyeSwgdTMyIGZ1bmN0aW9uLAog CiAJLyogY3B1aWQgNy4wLmVkeCovCiAJY29uc3QgdTMyIGt2bV9jcHVpZF83XzBfZWR4X3g4Nl9m ZWF0dXJlcyA9Ci0JCUYoQVJDSF9DQVBBQklMSVRJRVMpOworCQlGKFNQRUNfQ1RSTCkgfCBGKEFS Q0hfQ0FQQUJJTElUSUVTKTsKIAogCS8qIGFsbCBjYWxscyB0byBjcHVpZF9jb3VudCgpIHNob3Vs ZCBiZSBtYWRlIG9uIHRoZSBzYW1lIGNwdSAqLwogCWdldF9jcHUoKTsKQEAgLTU5NSw5ICs1OTUs MTEgQEAgc3RhdGljIGlubGluZSBpbnQgX19kb19jcHVpZF9lbnQoc3RydWN0IGt2bV9jcHVpZF9l bnRyeTIgKmVudHJ5LCB1MzIgZnVuY3Rpb24sCiAJCQlnX3BoeXNfYXMgPSBwaHlzX2FzOwogCQll bnRyeS0+ZWF4ID0gZ19waHlzX2FzIHwgKHZpcnRfYXMgPDwgOCk7CiAJCWVudHJ5LT5lZHggPSAw OwotCQkvKiBJQlBCIGlzbid0IG5lY2Vzc2FyaWx5IHByZXNlbnQgaW4gaGFyZHdhcmUgY3B1aWQg Ki8KKwkJLyogSUJSUyBhbmQgSUJQQiBhcmVuJ3QgbmVjZXNzYXJpbHkgcHJlc2VudCBpbiBoYXJk d2FyZSBjcHVpZCAqLwogCQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lCUEIpKQogCQkJ ZW50cnktPmVieCB8PSBGKElCUEIpOworCQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0lC UlMpKQorCQkJZW50cnktPmVieCB8PSBGKElCUlMpOwogCQllbnRyeS0+ZWJ4ICY9IGt2bV9jcHVp ZF84MDAwXzAwMDhfZWJ4X3g4Nl9mZWF0dXJlczsKIAkJY3B1aWRfbWFzaygmZW50cnktPmVieCwg Q1BVSURfODAwMF8wMDA4X0VCWCk7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3Zt L2NwdWlkLmggYi9hcmNoL3g4Ni9rdm0vY3B1aWQuaAppbmRleCA2N2MzNTQ4NmQ4ZDAuLjdmNzRk N2UxOGEwMSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2NwdWlkLmgKKysrIGIvYXJjaC94ODYv a3ZtL2NwdWlkLmgKQEAgLTE3MCw2ICsxNzAsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGd1ZXN0 X2NwdWlkX2hhc19pYnBiKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlyZXR1cm4gYmVzdCAmJiAo YmVzdC0+ZWR4ICYgYml0KFg4Nl9GRUFUVVJFX1NQRUNfQ1RSTCkpOwogfQogCitzdGF0aWMgaW5s aW5lIGJvb2wgZ3Vlc3RfY3B1aWRfaGFzX2licnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQorewor CXN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICpiZXN0OworCisJYmVzdCA9IGt2bV9maW5kX2NwdWlk X2VudHJ5KHZjcHUsIDB4ODAwMDAwMDgsIDApOworCWlmIChiZXN0ICYmIChiZXN0LT5lYnggJiBi aXQoWDg2X0ZFQVRVUkVfSUJSUykpKQorCQlyZXR1cm4gdHJ1ZTsKKwliZXN0ID0ga3ZtX2ZpbmRf Y3B1aWRfZW50cnkodmNwdSwgNywgMCk7CisJcmV0dXJuIGJlc3QgJiYgKGJlc3QtPmVkeCAmIGJp dChYODZfRkVBVFVSRV9TUEVDX0NUUkwpKTsKK30KKwogc3RhdGljIGlubGluZSBib29sIGd1ZXN0 X2NwdWlkX2hhc19hcmNoX2NhcGFiaWxpdGllcyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJ c3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmJlc3Q7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v dm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggM2E1MTM5OTdiMWNiLi5iMTE4ZDQxNWNh MDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14 LmMKQEAgLTU0Niw2ICs1NDYsNyBAQCBzdHJ1Y3QgdmNwdV92bXggewogI2VuZGlmCiAKIAl1NjQg CQkgICAgICBhcmNoX2NhcGFiaWxpdGllczsKKwl1NjQgCQkgICAgICBzcGVjX2N0cmw7CiAKIAl1 MzIgdm1fZW50cnlfY29udHJvbHNfc2hhZG93OwogCXUzMiB2bV9leGl0X2NvbnRyb2xzX3NoYWRv dzsKQEAgLTE2OTMsNiArMTY5NCwyOSBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfZXhjZXB0aW9uX2Jp dG1hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB9CiAKIC8qCisgKiBDaGVjayBpZiBNU1IgaXMg aW50ZXJjZXB0ZWQgZm9yIGN1cnJlbnRseSBsb2FkZWQgTVNSIGJpdG1hcC4KKyAqLworc3RhdGlj IGJvb2wgbXNyX3dyaXRlX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1z cikKK3sKKwl1bnNpZ25lZCBsb25nICptc3JfYml0bWFwOworCWludCBmID0gc2l6ZW9mKHVuc2ln bmVkIGxvbmcpOworCisJaWYgKCFjcHVfaGFzX3ZteF9tc3JfYml0bWFwKCkpCisJCXJldHVybiB0 cnVlOworCisJbXNyX2JpdG1hcCA9IHRvX3ZteCh2Y3B1KS0+bG9hZGVkX3ZtY3MtPm1zcl9iaXRt YXA7CisKKwlpZiAobXNyIDw9IDB4MWZmZikgeworCQlyZXR1cm4gISF0ZXN0X2JpdChtc3IsIG1z cl9iaXRtYXAgKyAweDgwMCAvIGYpOworCX0gZWxzZSBpZiAoKG1zciA+PSAweGMwMDAwMDAwKSAm JiAobXNyIDw9IDB4YzAwMDFmZmYpKSB7CisJCW1zciAmPSAweDFmZmY7CisJCXJldHVybiAhIXRl c3RfYml0KG1zciwgbXNyX2JpdG1hcCArIDB4YzAwIC8gZik7CisJfQorCisJcmV0dXJuIHRydWU7 Cit9CisKKy8qCiAgKiBDaGVjayBpZiBNU1IgaXMgaW50ZXJjZXB0ZWQgZm9yIEwwMSBNU1IgYml0 bWFwLgogICovCiBzdGF0aWMgYm9vbCBtc3Jfd3JpdGVfaW50ZXJjZXB0ZWRfbDAxKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSwgdTMyIG1zcikKQEAgLTI4MzQsNiArMjg1OCwxMyBAQCBzdGF0aWMgaW50 IHZteF9nZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3Jf aW5mbykKIAljYXNlIE1TUl9JQTMyX1RTQzoKIAkJbXNyX2luZm8tPmRhdGEgPSBndWVzdF9yZWFk X3RzYyh2Y3B1KTsKIAkJYnJlYWs7CisJY2FzZSBNU1JfSUEzMl9TUEVDX0NUUkw6CisJCWlmICgh bXNyX2luZm8tPmhvc3RfaW5pdGlhdGVkICYmCisJCSAgICAhZ3Vlc3RfY3B1aWRfaGFzX2licnMo dmNwdSkpCisJCQlyZXR1cm4gMTsKKworCQltc3JfaW5mby0+ZGF0YSA9IHRvX3ZteCh2Y3B1KS0+ c3BlY19jdHJsOworCQlicmVhazsKIAljYXNlIE1TUl9JQTMyX0FSQ0hfQ0FQQUJJTElUSUVTOgog CQlpZiAoIW1zcl9pbmZvLT5ob3N0X2luaXRpYXRlZCAmJgogCQkgICAgIWd1ZXN0X2NwdWlkX2hh c19hcmNoX2NhcGFiaWxpdGllcyh2Y3B1KSkKQEAgLTI5MzksNiArMjk3MCwzNiBAQCBzdGF0aWMg aW50IHZteF9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICpt c3JfaW5mbykKIAljYXNlIE1TUl9JQTMyX1RTQzoKIAkJa3ZtX3dyaXRlX3RzYyh2Y3B1LCBtc3Jf aW5mbyk7CiAJCWJyZWFrOworCWNhc2UgTVNSX0lBMzJfU1BFQ19DVFJMOgorCQlpZiAoIW1zcl9p bmZvLT5ob3N0X2luaXRpYXRlZCAmJgorCQkgICAgIWd1ZXN0X2NwdWlkX2hhc19pYnJzKHZjcHUp KQorCQkJcmV0dXJuIDE7CisKKwkJLyogVGhlIFNUSUJQIGJpdCBkb2Vzbid0IGZhdWx0IGV2ZW4g aWYgaXQncyBub3QgYWR2ZXJ0aXNlZCAqLworCQlpZiAoZGF0YSAmIH4oU1BFQ19DVFJMX0lCUlMg fCBTUEVDX0NUUkxfU1RJQlApKQorCQkJcmV0dXJuIDE7CisKKwkJdm14LT5zcGVjX2N0cmwgPSBk YXRhOworCisJCWlmICghZGF0YSkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIEZvciBub24tbmVz dGVkOgorCQkgKiBXaGVuIGl0J3Mgd3JpdHRlbiAodG8gbm9uLXplcm8pIGZvciB0aGUgZmlyc3Qg dGltZSwgcGFzcworCQkgKiBpdCB0aHJvdWdoLgorCQkgKgorCQkgKiBGb3IgbmVzdGVkOgorCQkg KiBUaGUgaGFuZGxpbmcgb2YgdGhlIE1TUiBiaXRtYXAgZm9yIEwyIGd1ZXN0cyBpcyBkb25lIGlu CisJCSAqIG5lc3RlZF92bXhfbWVyZ2VfbXNyX2JpdG1hcC4gV2Ugc2hvdWxkIG5vdCB0b3VjaCB0 aGUKKwkJICogdm1jczAyLm1zcl9iaXRtYXAgaGVyZSBzaW5jZSBpdCBnZXRzIGNvbXBsZXRlbHkg b3ZlcndyaXR0ZW4KKwkJICogaW4gdGhlIG1lcmdpbmcuIFdlIHVwZGF0ZSB0aGUgdm1jczAxIGhl cmUgZm9yIEwxIGFzIHdlbGwKKwkJICogc2luY2UgaXQgd2lsbCBlbmQgdXAgdG91Y2hpbmcgdGhl IE1TUiBhbnl3YXkgbm93LgorCQkgKi8KKwkJdm14X2Rpc2FibGVfaW50ZXJjZXB0X2Zvcl9tc3Io dm14LT52bWNzMDEubXNyX2JpdG1hcCwKKwkJCQkJICAgICAgTVNSX0lBMzJfU1BFQ19DVFJMLAor CQkJCQkgICAgICBNU1JfVFlQRV9SVyk7CisJCWJyZWFrOwogCWNhc2UgTVNSX0lBMzJfUFJFRF9D TUQ6CiAJCWlmICghbXNyX2luZm8tPmhvc3RfaW5pdGlhdGVkICYmCiAJCSAgICAhZ3Vlc3RfY3B1 aWRfaGFzX2licGIodmNwdSkpCkBAIC01MDQ1LDYgKzUxMDYsNyBAQCBzdGF0aWMgdm9pZCB2bXhf dmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudCkKIAl1NjQg Y3IwOwogCiAJdm14LT5ybW9kZS52bTg2X2FjdGl2ZSA9IDA7CisJdm14LT5zcGVjX2N0cmwgPSAw OwogCiAJdm14LT5zb2Z0X3ZubWlfYmxvY2tlZCA9IDA7CiAKQEAgLTg1ODksNiArODY1MSwxNSBA QCBzdGF0aWMgdm9pZCBfX25vY2xvbmUgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSkKIAlhdG9taWNfc3dpdGNoX3BlcmZfbXNycyh2bXgpOwogCWRlYnVnY3RsbXNyID0gZ2V0X2Rl YnVnY3RsbXNyKCk7CiAKKwkvKgorCSAqIElmIHRoaXMgdkNQVSBoYXMgdG91Y2hlZCBTUEVDX0NU UkwsIHJlc3RvcmUgdGhlIGd1ZXN0J3MgdmFsdWUgaWYKKwkgKiBpdCdzIG5vbi16ZXJvLiBTaW5j ZSB2bWVudHJ5IGlzIHNlcmlhbGlzaW5nIG9uIGFmZmVjdGVkIENQVXMsIHRoZXJlCisJICogaXMg bm8gbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgY29uZGl0aW9uYWwgYnJhbmNoIG92ZXIgdGhlIHdy bXNyCisJICogYmVpbmcgc3BlY3VsYXRpdmVseSB0YWtlbi4KKwkgKi8KKwlpZiAodm14LT5zcGVj X2N0cmwpCisJCXdybXNybChNU1JfSUEzMl9TUEVDX0NUUkwsIHZteC0+c3BlY19jdHJsKTsKKwog CXZteC0+X19sYXVuY2hlZCA9IHZteC0+bG9hZGVkX3ZtY3MtPmxhdW5jaGVkOwogCWFzbSgKIAkJ LyogU3RvcmUgaG9zdCByZWdpc3RlcnMgKi8KQEAgLTg3MDcsNiArODc3OCwyNyBAQCBzdGF0aWMg dm9pZCBfX25vY2xvbmUgdm14X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKICNlbmRp ZgogCSAgICAgICk7CiAKKwkvKgorCSAqIFdlIGRvIG5vdCB1c2UgSUJSUyBpbiB0aGUga2VybmVs LiBJZiB0aGlzIHZDUFUgaGFzIHVzZWQgdGhlCisJICogU1BFQ19DVFJMIE1TUiBpdCBtYXkgaGF2 ZSBsZWZ0IGl0IG9uOyBzYXZlIHRoZSB2YWx1ZSBhbmQKKwkgKiB0dXJuIGl0IG9mZi4gVGhpcyBp cyBtdWNoIG1vcmUgZWZmaWNpZW50IHRoYW4gYmxpbmRseSBhZGRpbmcKKwkgKiBpdCB0byB0aGUg YXRvbWljIHNhdmUvcmVzdG9yZSBsaXN0LiBFc3BlY2lhbGx5IGFzIHRoZSBmb3JtZXIKKwkgKiAo U2F2aW5nIGd1ZXN0IE1TUnMgb24gdm1leGl0KSBkb2Vzbid0IGV2ZW4gZXhpc3QgaW4gS1ZNLgor CSAqCisJICogRm9yIG5vbi1uZXN0ZWQgY2FzZToKKwkgKiBJZiB0aGUgTDAxIE1TUiBiaXRtYXAg ZG9lcyBub3QgaW50ZXJjZXB0IHRoZSBNU1IsIHRoZW4gd2UgbmVlZCB0bworCSAqIHNhdmUgaXQu CisJICoKKwkgKiBGb3IgbmVzdGVkIGNhc2U6CisJICogSWYgdGhlIEwwMiBNU1IgYml0bWFwIGRv ZXMgbm90IGludGVyY2VwdCB0aGUgTVNSLCB0aGVuIHdlIG5lZWQgdG8KKwkgKiBzYXZlIGl0Lgor CSAqLworCWlmICghbXNyX3dyaXRlX2ludGVyY2VwdGVkKHZjcHUsIE1TUl9JQTMyX1NQRUNfQ1RS TCkpCisJCXJkbXNybChNU1JfSUEzMl9TUEVDX0NUUkwsIHZteC0+c3BlY19jdHJsKTsKKworCWlm ICh2bXgtPnNwZWNfY3RybCkKKwkJd3Jtc3JsKE1TUl9JQTMyX1NQRUNfQ1RSTCwgMCk7CisKIAkv KiBFbGltaW5hdGUgYnJhbmNoIHRhcmdldCBwcmVkaWN0aW9ucyBmcm9tIGd1ZXN0IG1vZGUgKi8K IAl2bWV4aXRfZmlsbF9SU0IoKTsKIApAQCAtOTI0Miw3ICs5MzM0LDcgQEAgc3RhdGljIGlubGlu ZSBib29sIG5lc3RlZF92bXhfbWVyZ2VfbXNyX2JpdG1hcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs CiAJdW5zaWduZWQgbG9uZyAqbXNyX2JpdG1hcF9sMTsKIAl1bnNpZ25lZCBsb25nICptc3JfYml0 bWFwX2wwID0gdG9fdm14KHZjcHUpLT5uZXN0ZWQudm1jczAyLm1zcl9iaXRtYXA7CiAJLyoKLQkg KiBwcmVkX2NtZCBpcyB0cnlpbmcgdG8gdmVyaWZ5IHR3byB0aGluZ3M6CisJICogcHJlZF9jbWQg JiBzcGVjX2N0cmwgYXJlIHRyeWluZyB0byB2ZXJpZnkgdHdvIHRoaW5nczoKIAkgKgogCSAqIDEu IEwwIGdhdmUgYSBwZXJtaXNzaW9uIHRvIEwxIHRvIGFjdHVhbGx5IHBhc3N0aHJvdWdoIHRoZSBN U1IuIFRoaXMKIAkgKiAgICBlbnN1cmVzIHRoYXQgd2UgZG8gbm90IGFjY2lkZW50YWxseSBnZW5l cmF0ZSBhbiBMMDIgTVNSIGJpdG1hcApAQCAtOTI1NSw5ICs5MzQ3LDEwIEBAIHN0YXRpYyBpbmxp bmUgYm9vbCBuZXN0ZWRfdm14X21lcmdlX21zcl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1 LAogCSAqICAgIHRoZSBNU1IuCiAJICovCiAJYm9vbCBwcmVkX2NtZCA9IG1zcl93cml0ZV9pbnRl cmNlcHRlZF9sMDEodmNwdSwgTVNSX0lBMzJfUFJFRF9DTUQpOworCWJvb2wgc3BlY19jdHJsID0g bXNyX3dyaXRlX2ludGVyY2VwdGVkX2wwMSh2Y3B1LCBNU1JfSUEzMl9TUEVDX0NUUkwpOwogCiAJ aWYgKCFuZXN0ZWRfY3B1X2hhc192aXJ0X3gyYXBpY19tb2RlKHZtY3MxMikgJiYKLQkgICAgIXBy ZWRfY21kKQorCSAgICAhcHJlZF9jbWQgJiYgIXNwZWNfY3RybCkKIAkJcmV0dXJuIGZhbHNlOwog CiAJcGFnZSA9IG5lc3RlZF9nZXRfcGFnZSh2Y3B1LCB2bWNzMTItPm1zcl9iaXRtYXApOwpAQCAt OTI5Myw2ICs5Mzg2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBuZXN0ZWRfdm14X21lcmdlX21z cl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAogCQl9CiAJfQogCisJaWYgKHNwZWNfY3Ry bCkKKwkJbmVzdGVkX3ZteF9kaXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKAorCQkJCQltc3JfYml0 bWFwX2wxLCBtc3JfYml0bWFwX2wwLAorCQkJCQlNU1JfSUEzMl9TUEVDX0NUUkwsCisJCQkJCU1T Ul9UWVBFX1IgfCBNU1JfVFlQRV9XKTsKKwogCWlmIChwcmVkX2NtZCkKIAkJbmVzdGVkX3ZteF9k aXNhYmxlX2ludGVyY2VwdF9mb3JfbXNyKAogCQkJCQltc3JfYml0bWFwX2wxLCBtc3JfYml0bWFw X2wwLApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5j CmluZGV4IDI3NmY5NzhlZmVlZC4uMTJhOTFlYTg1ZDNhIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9r dm0veDg2LmMKKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC05NjEsNyArOTYxLDcgQEAgc3Rh dGljIHUzMiBtc3JzX3RvX3NhdmVbXSA9IHsKICNlbmRpZgogCU1TUl9JQTMyX1RTQywgTVNSX0lB MzJfQ1JfUEFULCBNU1JfVk1fSFNBVkVfUEEsCiAJTVNSX0lBMzJfRkVBVFVSRV9DT05UUk9MLCBN U1JfSUEzMl9CTkRDRkdTLCBNU1JfVFNDX0FVWCwKLQlNU1JfSUEzMl9BUkNIX0NBUEFCSUxJVElF UworCU1TUl9JQTMyX1NQRUNfQ1RSTCwgTVNSX0lBMzJfQVJDSF9DQVBBQklMSVRJRVMKIH07CiAK IHN0YXRpYyB1bnNpZ25lZCBudW1fbXNyc190b19zYXZlOwoKRnJvbSAxNmY5YWI1NWJjZDNmYzZl OWNmOTliYmVmMjE0ODgyOWMwNjJmYjJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBL YXJpbUFsbGFoIEFobWVkIDxrYXJhaG1lZEBhbWF6b24uZGU+CkRhdGU6IFNhdCwgMyBGZWIgMjAx OCAxNTo1NjoyMyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMzRdIEtWTS9TVk06IEFsbG93IGRp cmVjdCBhY2Nlc3MgdG8gTVNSX0lBMzJfU1BFQ19DVFJMCgpjb21taXQgYjJhYzU4ZjkwNTQwZTM5 MzI0ZTdhMjlhN2FkNDcxNDA3YWUwYmY0OCB1cHN0cmVhbS4KClsgQmFzZWQgb24gYSBwYXRjaCBm cm9tIFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+IF0KCi4uLiBiYXNpY2FsbHkg ZG9pbmcgZXhhY3RseSB3aGF0IHdlIGRvIGZvciBWTVg6CgotIFBhc3N0aHJvdWdoIFNQRUNfQ1RS TCB0byBndWVzdHMgKGlmIGVuYWJsZWQgaW4gZ3Vlc3QgQ1BVSUQpCi0gU2F2ZSBhbmQgcmVzdG9y ZSBTUEVDX0NUUkwgYXJvdW5kIFZNRXhpdCBhbmQgVk1FbnRyeSBvbmx5IGlmIHRoZSBndWVzdAog IGFjdHVhbGx5IHVzZWQgaXQuCgpTaWduZWQtb2ZmLWJ5OiBLYXJpbUFsbGFoIEFobWVkIDxrYXJh aG1lZEBhbWF6b24uZGU+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6 b24uY28udWs+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4 LmRlPgpSZXZpZXdlZC1ieTogRGFycmVuIEtlbm55IDxkYXJyZW4ua2VubnlAb3JhY2xlLmNvbT4K UmV2aWV3ZWQtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNv bT4KQ2M6IEFuZHJlYSBBcmNhbmdlbGkgPGFhcmNhbmdlQHJlZGhhdC5jb20+CkNjOiBBbmRpIEts ZWVuIDxha0BsaW51eC5pbnRlbC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBp bnRlbC5jb20+CkNjOiBrdm1Admdlci5rZXJuZWwub3JnCkNjOiBEYXZlIEhhbnNlbiA8ZGF2ZS5o YW5zZW5AaW50ZWwuY29tPgpDYzogVGltIENoZW4gPHRpbS5jLmNoZW5AbGludXguaW50ZWwuY29t PgpDYzogQW5keSBMdXRvbWlyc2tpIDxsdXRvQGtlcm5lbC5vcmc+CkNjOiBBc2l0IE1hbGxpY2sg PGFzaXQuay5tYWxsaWNrQGludGVsLmNvbT4KQ2M6IEFyamFuIFZhbiBEZSBWZW4gPGFyamFuLnZh bi5kZS52ZW5AaW50ZWwuY29tPgpDYzogR3JlZyBLSCA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5v cmc+CkNjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgpDYzogRGFuIFdpbGxp YW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNjOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFs ZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CkNjOiBBc2hvayBSYWogPGFzaG9rLnJhakBpbnRlbC5j b20+Ckxpbms6IGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMTUxNzY2OTc4My0yMDczMi0xLWdp dC1zZW5kLWVtYWlsLWthcmFobWVkQGFtYXpvbi5kZQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29k aG91c2UgPGR3bXdAYW1hem9uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRt YW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hp bmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9rdm0vc3Zt LmMgfCA4OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIDEgZmlsZSBjaGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvYXJj aC94ODYva3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS5jCmluZGV4IGQ0ODk4MzZkYTZmNS4u OWEzOTBmYjk1YjRiIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtLmMKKysrIGIvYXJjaC94 ODYva3ZtL3N2bS5jCkBAIC0xNDcsNiArMTQ3LDggQEAgc3RydWN0IHZjcHVfc3ZtIHsKIAkJdTY0 IGdzX2Jhc2U7CiAJfSBob3N0OwogCisJdTY0IHNwZWNfY3RybDsKKwogCXUzMiAqbXNycG07CiAK IAl1bG9uZyBubWlfaXJldF9yaXA7CkBAIC0xODIsNiArMTg0LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBzdm1fZGlyZWN0X2FjY2Vzc19tc3JzIHsKIAl7IC5pbmRleCA9IE1TUl9DU1RBUiwJCQkJ LmFsd2F5cyA9IHRydWUgIH0sCiAJeyAuaW5kZXggPSBNU1JfU1lTQ0FMTF9NQVNLLAkJCS5hbHdh eXMgPSB0cnVlICB9LAogI2VuZGlmCisJeyAuaW5kZXggPSBNU1JfSUEzMl9TUEVDX0NUUkwsCQkJ LmFsd2F5cyA9IGZhbHNlIH0sCiAJeyAuaW5kZXggPSBNU1JfSUEzMl9QUkVEX0NNRCwJCQkuYWx3 YXlzID0gZmFsc2UgfSwKIAl7IC5pbmRleCA9IE1TUl9JQTMyX0xBU1RCUkFOQ0hGUk9NSVAsCQku YWx3YXlzID0gZmFsc2UgfSwKIAl7IC5pbmRleCA9IE1TUl9JQTMyX0xBU1RCUkFOQ0hUT0lQLAkJ LmFsd2F5cyA9IGZhbHNlIH0sCkBAIC03NjQsNiArNzY3LDI1IEBAIHN0YXRpYyBib29sIHZhbGlk X21zcl9pbnRlcmNlcHQodTMyIGluZGV4KQogCXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJv b2wgbXNyX3dyaXRlX2ludGVyY2VwdGVkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdW5zaWduZWQg bXNyKQoreworCXU4IGJpdF93cml0ZTsKKwl1bnNpZ25lZCBsb25nIHRtcDsKKwl1MzIgb2Zmc2V0 OworCXUzMiAqbXNycG07CisKKwltc3JwbSA9IGlzX2d1ZXN0X21vZGUodmNwdSkgPyB0b19zdm0o dmNwdSktPm5lc3RlZC5tc3JwbToKKwkJCQkgICAgICB0b19zdm0odmNwdSktPm1zcnBtOworCisJ b2Zmc2V0ICAgID0gc3ZtX21zcnBtX29mZnNldChtc3IpOworCWJpdF93cml0ZSA9IDIgKiAobXNy ICYgMHgwZikgKyAxOworCXRtcCAgICAgICA9IG1zcnBtW29mZnNldF07CisKKwlCVUdfT04ob2Zm c2V0ID09IE1TUl9JTlZBTElEKTsKKworCXJldHVybiAhIXRlc3RfYml0KGJpdF93cml0ZSwgICZ0 bXApOworfQorCiBzdGF0aWMgdm9pZCBzZXRfbXNyX2ludGVyY2VwdGlvbih1MzIgKm1zcnBtLCB1 bnNpZ25lZCBtc3IsCiAJCQkJIGludCByZWFkLCBpbnQgd3JpdGUpCiB7CkBAIC0xMTIyLDYgKzEx NDQsOCBAQCBzdGF0aWMgdm9pZCBzdm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUs IGJvb2wgaW5pdF9ldmVudCkKIAl1MzIgZHVtbXk7CiAJdTMyIGVheCA9IDE7CiAKKwlzdm0tPnNw ZWNfY3RybCA9IDA7CisKIAlpZiAoIWluaXRfZXZlbnQpIHsKIAkJc3ZtLT52Y3B1LmFyY2guYXBp Y19iYXNlID0gQVBJQ19ERUZBVUxUX1BIWVNfQkFTRSB8CiAJCQkJCSAgIE1TUl9JQTMyX0FQSUNC QVNFX0VOQUJMRTsKQEAgLTMwNjMsNiArMzA4NywxMyBAQCBzdGF0aWMgaW50IHN2bV9nZXRfbXNy KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAljYXNl IE1TUl9WTV9DUjoKIAkJbXNyX2luZm8tPmRhdGEgPSBzdm0tPm5lc3RlZC52bV9jcl9tc3I7CiAJ CWJyZWFrOworCWNhc2UgTVNSX0lBMzJfU1BFQ19DVFJMOgorCQlpZiAoIW1zcl9pbmZvLT5ob3N0 X2luaXRpYXRlZCAmJgorCQkgICAgIWd1ZXN0X2NwdWlkX2hhc19pYnJzKHZjcHUpKQorCQkJcmV0 dXJuIDE7CisKKwkJbXNyX2luZm8tPmRhdGEgPSBzdm0tPnNwZWNfY3RybDsKKwkJYnJlYWs7CiAJ Y2FzZSBNU1JfSUEzMl9VQ09ERV9SRVY6CiAJCW1zcl9pbmZvLT5kYXRhID0gMHgwMTAwMDA2NTsK IAkJYnJlYWs7CkBAIC0zMTM3LDYgKzMxNjgsMzMgQEAgc3RhdGljIGludCBzdm1fc2V0X21zcihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQogCWNhc2UgTVNSX0lB MzJfVFNDOgogCQlrdm1fd3JpdGVfdHNjKHZjcHUsIG1zcik7CiAJCWJyZWFrOworCWNhc2UgTVNS X0lBMzJfU1BFQ19DVFJMOgorCQlpZiAoIW1zci0+aG9zdF9pbml0aWF0ZWQgJiYKKwkJICAgICFn dWVzdF9jcHVpZF9oYXNfaWJycyh2Y3B1KSkKKwkJCXJldHVybiAxOworCisJCS8qIFRoZSBTVElC UCBiaXQgZG9lc24ndCBmYXVsdCBldmVuIGlmIGl0J3Mgbm90IGFkdmVydGlzZWQgKi8KKwkJaWYg KGRhdGEgJiB+KFNQRUNfQ1RSTF9JQlJTIHwgU1BFQ19DVFJMX1NUSUJQKSkKKwkJCXJldHVybiAx OworCisJCXN2bS0+c3BlY19jdHJsID0gZGF0YTsKKworCQlpZiAoIWRhdGEpCisJCQlicmVhazsK KworCQkvKgorCQkgKiBGb3Igbm9uLW5lc3RlZDoKKwkJICogV2hlbiBpdCdzIHdyaXR0ZW4gKHRv IG5vbi16ZXJvKSBmb3IgdGhlIGZpcnN0IHRpbWUsIHBhc3MKKwkJICogaXQgdGhyb3VnaC4KKwkJ ICoKKwkJICogRm9yIG5lc3RlZDoKKwkJICogVGhlIGhhbmRsaW5nIG9mIHRoZSBNU1IgYml0bWFw IGZvciBMMiBndWVzdHMgaXMgZG9uZSBpbgorCQkgKiBuZXN0ZWRfc3ZtX3ZtcnVuX21zcnBtLgor CQkgKiBXZSB1cGRhdGUgdGhlIEwxIE1TUiBiaXQgYXMgd2VsbCBzaW5jZSBpdCB3aWxsIGVuZCB1 cAorCQkgKiB0b3VjaGluZyB0aGUgTVNSIGFueXdheSBub3cuCisJCSAqLworCQlzZXRfbXNyX2lu dGVyY2VwdGlvbihzdm0tPm1zcnBtLCBNU1JfSUEzMl9TUEVDX0NUUkwsIDEsIDEpOworCQlicmVh azsKIAljYXNlIE1TUl9JQTMyX1BSRURfQ01EOgogCQlpZiAoIW1zci0+aG9zdF9pbml0aWF0ZWQg JiYKIAkJICAgICFndWVzdF9jcHVpZF9oYXNfaWJwYih2Y3B1KSkKQEAgLTM4MzksNiArMzg5Nywx NSBAQCBzdGF0aWMgdm9pZCBzdm1fdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCiAJ bG9jYWxfaXJxX2VuYWJsZSgpOwogCisJLyoKKwkgKiBJZiB0aGlzIHZDUFUgaGFzIHRvdWNoZWQg U1BFQ19DVFJMLCByZXN0b3JlIHRoZSBndWVzdCdzIHZhbHVlIGlmCisJICogaXQncyBub24temVy by4gU2luY2Ugdm1lbnRyeSBpcyBzZXJpYWxpc2luZyBvbiBhZmZlY3RlZCBDUFVzLCB0aGVyZQor CSAqIGlzIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNvbmRpdGlvbmFsIGJyYW5jaCBvdmVy IHRoZSB3cm1zcgorCSAqIGJlaW5nIHNwZWN1bGF0aXZlbHkgdGFrZW4uCisJICovCisJaWYgKHN2 bS0+c3BlY19jdHJsKQorCQl3cm1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCBzdm0tPnNwZWNfY3Ry bCk7CisKIAlhc20gdm9sYXRpbGUgKAogCQkicHVzaCAlJSIgX0FTTV9CUCAiOyBcblx0IgogCQki bW92ICVjW3JieF0oJVtzdm1dKSwgJSUiIF9BU01fQlggIiBcblx0IgpAQCAtMzkzMSw2ICszOTk4 LDI3IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAj ZW5kaWYKIAkJKTsKIAorCS8qCisJICogV2UgZG8gbm90IHVzZSBJQlJTIGluIHRoZSBrZXJuZWwu IElmIHRoaXMgdkNQVSBoYXMgdXNlZCB0aGUKKwkgKiBTUEVDX0NUUkwgTVNSIGl0IG1heSBoYXZl IGxlZnQgaXQgb247IHNhdmUgdGhlIHZhbHVlIGFuZAorCSAqIHR1cm4gaXQgb2ZmLiBUaGlzIGlz IG11Y2ggbW9yZSBlZmZpY2llbnQgdGhhbiBibGluZGx5IGFkZGluZworCSAqIGl0IHRvIHRoZSBh dG9taWMgc2F2ZS9yZXN0b3JlIGxpc3QuIEVzcGVjaWFsbHkgYXMgdGhlIGZvcm1lcgorCSAqIChT YXZpbmcgZ3Vlc3QgTVNScyBvbiB2bWV4aXQpIGRvZXNuJ3QgZXZlbiBleGlzdCBpbiBLVk0uCisJ ICoKKwkgKiBGb3Igbm9uLW5lc3RlZCBjYXNlOgorCSAqIElmIHRoZSBMMDEgTVNSIGJpdG1hcCBk b2VzIG5vdCBpbnRlcmNlcHQgdGhlIE1TUiwgdGhlbiB3ZSBuZWVkIHRvCisJICogc2F2ZSBpdC4K KwkgKgorCSAqIEZvciBuZXN0ZWQgY2FzZToKKwkgKiBJZiB0aGUgTDAyIE1TUiBiaXRtYXAgZG9l cyBub3QgaW50ZXJjZXB0IHRoZSBNU1IsIHRoZW4gd2UgbmVlZCB0bworCSAqIHNhdmUgaXQuCisJ ICovCisJaWYgKCFtc3Jfd3JpdGVfaW50ZXJjZXB0ZWQodmNwdSwgTVNSX0lBMzJfU1BFQ19DVFJM KSkKKwkJcmRtc3JsKE1TUl9JQTMyX1NQRUNfQ1RSTCwgc3ZtLT5zcGVjX2N0cmwpOworCisJaWYg KHN2bS0+c3BlY19jdHJsKQorCQl3cm1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCAwKTsKKwogCS8q IEVsaW1pbmF0ZSBicmFuY2ggdGFyZ2V0IHByZWRpY3Rpb25zIGZyb20gZ3Vlc3QgbW9kZSAqLwog CXZtZXhpdF9maWxsX1JTQigpOwogCgpGcm9tIGU2YzgwOGI3MWRkYjYzN2U0Mzg1MzFmM2E5YTc2 YTVhZTdhMGYzZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFBhb2xvIEJvbnppbmkg PHBib256aW5pQHJlZGhhdC5jb20+CkRhdGU6IFRodSwgMjIgRmViIDIwMTggMTY6NDM6MTcgKzAx MDAKU3ViamVjdDogW1BBVENIIDExLzM0XSBLVk0veDg2OiBSZW1vdmUgaW5kaXJlY3QgTVNSIG9w IGNhbGxzIGZyb20gU1BFQ19DVFJMCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Cgpj b21taXQgZWNiNTg2YmQyOWM5OWZiNGRlNTk5ZGVjMzg4NjU4ZTc0Mzg4ZGFhZCB1cHN0cmVhbS4K CkhhdmluZyBhIHBhcmF2aXJ0IGluZGlyZWN0IGNhbGwgaW4gdGhlIElCUlMgcmVzdG9yZSBwYXRo IGlzIG5vdCBhCmdvb2QgaWRlYSwgc2luY2Ugd2UgYXJlIHRyeWluZyB0byBwcm90ZWN0IGZyb20g c3BlY3VsYXRpdmUgZXhlY3V0aW9uCm9mIGJvZ3VzIGluZGlyZWN0IGJyYW5jaCB0YXJnZXRzLiAg SXQgaXMgYWxzbyBzbG93ZXIsIHNvIHVzZQpuYXRpdmVfd3Jtc3JsKCkgb24gdGhlIHZtZW50cnkg cGF0aCB0b28uCgpTaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQu Y29tPgpSZXZpZXdlZC1ieTogSmltIE1hdHRzb24gPGptYXR0c29uQGdvb2dsZS5jb20+CkNjOiBE YXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVrPgpDYzogS2FyaW1BbGxhaCBBaG1lZCA8 a2FyYWhtZWRAYW1hem9uLmRlPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZv dW5kYXRpb24ub3JnPgpDYzogUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgpD YzogUmFkaW0gS3LEjW3DocWZIDxya3JjbWFyQHJlZGhhdC5jb20+CkNjOiBUaG9tYXMgR2xlaXhu ZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IGt2bUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IHN0YWJs ZUB2Z2VyLmtlcm5lbC5vcmcKRml4ZXM6IGQyOGIzODdmYjc0ZGE5NWQ2OWQyNjE1NzMyZjUwY2Nl YjM4ZTlhNGQKTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIwMTgwMjIyMTU0MzE4LjIw MzYxLTItcGJvbnppbmlAcmVkaGF0LmNvbQpTaWduZWQtb2ZmLWJ5OiBJbmdvIE1vbG5hciA8bWlu Z29Aa2VybmVsLm9yZz4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hA bGludXhmb3VuZGF0aW9uLm9yZz4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6IGFkanVzdCBjb250 ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGlu ay5jby51az4KLS0tCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgfCA3ICsrKystLS0KIGFyY2gveDg2L2t2 bS92bXguYyB8IDcgKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS5jIGIvYXJjaC94ODYv a3ZtL3N2bS5jCmluZGV4IDlhMzkwZmI5NWI0Yi4uZTFmMjBlMGQ2MmMyIDEwMDY0NAotLS0gYS9h cmNoL3g4Ni9rdm0vc3ZtLmMKKysrIGIvYXJjaC94ODYva3ZtL3N2bS5jCkBAIC0zNyw2ICszNyw3 IEBACiAjaW5jbHVkZSA8YXNtL2Rlc2MuaD4KICNpbmNsdWRlIDxhc20vZGVidWdyZWcuaD4KICNp bmNsdWRlIDxhc20va3ZtX3BhcmEuaD4KKyNpbmNsdWRlIDxhc20vbWljcm9jb2RlLmg+CiAjaW5j bHVkZSA8YXNtL3NwZWMtY3RybC5oPgogCiAjaW5jbHVkZSA8YXNtL3ZpcnRleHQuaD4KQEAgLTM5 MDQsNyArMzkwNSw3IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpCiAJICogYmVpbmcgc3BlY3VsYXRpdmVseSB0YWtlbi4KIAkgKi8KIAlpZiAoc3ZtLT5z cGVjX2N0cmwpCi0JCXdybXNybChNU1JfSUEzMl9TUEVDX0NUUkwsIHN2bS0+c3BlY19jdHJsKTsK KwkJbmF0aXZlX3dybXNybChNU1JfSUEzMl9TUEVDX0NUUkwsIHN2bS0+c3BlY19jdHJsKTsKIAog CWFzbSB2b2xhdGlsZSAoCiAJCSJwdXNoICUlIiBfQVNNX0JQICI7IFxuXHQiCkBAIC00MDE0LDEw ICs0MDE1LDEwIEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUpCiAJICogc2F2ZSBpdC4KIAkgKi8KIAlpZiAoIW1zcl93cml0ZV9pbnRlcmNlcHRlZCh2Y3B1 LCBNU1JfSUEzMl9TUEVDX0NUUkwpKQotCQlyZG1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCBzdm0t PnNwZWNfY3RybCk7CisJCXN2bS0+c3BlY19jdHJsID0gbmF0aXZlX3JlYWRfbXNyKE1TUl9JQTMy X1NQRUNfQ1RSTCk7CiAKIAlpZiAoc3ZtLT5zcGVjX2N0cmwpCi0JCXdybXNybChNU1JfSUEzMl9T UEVDX0NUUkwsIDApOworCQluYXRpdmVfd3Jtc3JsKE1TUl9JQTMyX1NQRUNfQ1RSTCwgMCk7CiAK IAkvKiBFbGltaW5hdGUgYnJhbmNoIHRhcmdldCBwcmVkaWN0aW9ucyBmcm9tIGd1ZXN0IG1vZGUg Ki8KIAl2bWV4aXRfZmlsbF9SU0IoKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBi L2FyY2gveDg2L2t2bS92bXguYwppbmRleCBiMTE4ZDQxNWNhMDguLmY3YjVjMDA5ODU5ZSAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC5jCisrKyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAt NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPGFzbS9rZXhlYy5oPgogI2luY2x1ZGUgPGFzbS9hcGlj Lmg+CiAjaW5jbHVkZSA8YXNtL2lycV9yZW1hcHBpbmcuaD4KKyNpbmNsdWRlIDxhc20vbWljcm9j b2RlLmg+CiAjaW5jbHVkZSA8YXNtL3NwZWMtY3RybC5oPgogCiAjaW5jbHVkZSAidHJhY2UuaCIK QEAgLTg2NTgsNyArODY1OSw3IEBAIHN0YXRpYyB2b2lkIF9fbm9jbG9uZSB2bXhfdmNwdV9ydW4o c3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCSAqIGJlaW5nIHNwZWN1bGF0aXZlbHkgdGFrZW4uCiAJ ICovCiAJaWYgKHZteC0+c3BlY19jdHJsKQotCQl3cm1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCB2 bXgtPnNwZWNfY3RybCk7CisJCW5hdGl2ZV93cm1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCB2bXgt PnNwZWNfY3RybCk7CiAKIAl2bXgtPl9fbGF1bmNoZWQgPSB2bXgtPmxvYWRlZF92bWNzLT5sYXVu Y2hlZDsKIAlhc20oCkBAIC04Nzk0LDEwICs4Nzk1LDEwIEBAIHN0YXRpYyB2b2lkIF9fbm9jbG9u ZSB2bXhfdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCSAqIHNhdmUgaXQuCiAJICov CiAJaWYgKCFtc3Jfd3JpdGVfaW50ZXJjZXB0ZWQodmNwdSwgTVNSX0lBMzJfU1BFQ19DVFJMKSkK LQkJcmRtc3JsKE1TUl9JQTMyX1NQRUNfQ1RSTCwgdm14LT5zcGVjX2N0cmwpOworCQl2bXgtPnNw ZWNfY3RybCA9IG5hdGl2ZV9yZWFkX21zcihNU1JfSUEzMl9TUEVDX0NUUkwpOwogCiAJaWYgKHZt eC0+c3BlY19jdHJsKQotCQl3cm1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCAwKTsKKwkJbmF0aXZl X3dybXNybChNU1JfSUEzMl9TUEVDX0NUUkwsIDApOwogCiAJLyogRWxpbWluYXRlIGJyYW5jaCB0 YXJnZXQgcHJlZGljdGlvbnMgZnJvbSBndWVzdCBtb2RlICovCiAJdm1leGl0X2ZpbGxfUlNCKCk7 CgpGcm9tIGEzZWI5ZjA0MzA2ZmZkMTE2YmQyYzI5MDMyNjI4MDIwNTFiN2Y4NTYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3Vu ZGF0aW9uLm9yZz4KRGF0ZTogVGh1LCAxNyBEZWMgMjAxNSAwOTo0NTowOSAtMDgwMApTdWJqZWN0 OiBbUEFUQ0ggMTIvMzRdIHg4NjogcmVvcmdhbml6ZSBTTUFQIGhhbmRsaW5nIGluIHVzZXIgc3Bh Y2UgYWNjZXNzZXMKCmNvbW1pdCAxMWYxYTRiOTc1NWY1ZGJjM2U4MjJhOTY1MDJlYmU5YjA0NGIx NGQ4IHVwc3RyZWFtLgoKVGhpcyByZW9yZ2FuaXplcyBob3cgd2UgZG8gdGhlIHN0YWMvY2xhYyBp bnN0cnVjdGlvbnMgaW4gdGhlIHVzZXIgYWNjZXNzCmNvZGUuICBJbnN0ZWFkIG9mIGFkZGluZyB0 aGUgaW5zdHJ1Y3Rpb25zIGRpcmVjdGx5IHRvIHRoZSBzYW1lIGlubGluZQphc20gdGhhdCBkb2Vz IHRoZSBhY3R1YWwgdXNlciBsZXZlbCBhY2Nlc3MgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZywgYWRk CnRoZW0gYXQgYSBoaWdoZXIgbGV2ZWwuCgpUaGlzIGlzIG1haW5seSBwcmVwYXJhdGlvbiBmb3Ig dGhlIG5leHQgc3RlcCwgd2hlcmUgd2Ugd2lsbCBleHBvc2UgYW4KaW50ZXJmYWNlIHRvIGFsbG93 IHVzZXJzIHRvIG1hcmsgc2V2ZXJhbCBhY2Nlc3NlcyB0b2dldGhlciBhcyBiZWluZyB1c2VyCnNw YWNlIGFjY2Vzc2VzLCBidXQgaXQgZG9lcyBhbHJlYWR5IGNsZWFuIHVwIHNvbWUgY29kZToKCiAt IHRoZSBpbmxpbmVkIHRyaXZpYWwgY2FzZXMgb2YgY29weV9pbl91c2VyKCkgbm93IGRvIHN0YWMv Y2xhYyBqdXN0CiAgIG9uY2Ugb3ZlciB0aGUgYWNjZXNzZXM6IHRoZXkgdXNlZCB0byBkbyBvbmUg cGFpciBhcm91bmQgdGhlIHVzZXIKICAgc3BhY2UgcmVhZCwgYW5kIGFub3RoZXIgcGFpciBhcm91 bmQgdGhlIHdyaXRlLWJhY2suCgogLSB0aGUge2dldCxwdXR9X3VzZXJfZXgoKSBtYWNyb3MgdGhh dCBhcmUgdXNlZCB3aXRoIHRoZSBjYXRjaC90cnkKICAgaGFuZGxpbmcgZG9uJ3QgZG8gYW55IHN0 YWMvY2xhYyBhdCBhbGwsIGJlY2F1c2UgdGhhdCBoYXBwZW5zIGluIHRoZQogICB0cnkvY2F0Y2gg c3Vycm91bmRpbmcgdGhlbS4KCk90aGVyIHRoYW4gdGhvc2UgdHdvIGNsZWFudXBzIHRoYXQgaGFw cGVuZWQgbmF0dXJhbGx5IGZyb20gdGhlCnJlLW9yZ2FuaXphdGlvbiwgdGhpcyBzaG91bGQgbm90 IG1ha2UgYW55IGRpZmZlcmVuY2UuIFlldC4KClNpZ25lZC1vZmYtYnk6IExpbnVzIFRvcnZhbGRz IDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNo aW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJjaC94ODYvaW5jbHVk ZS9hc20vdWFjY2Vzcy5oICAgIHwgNTMgKysrKysrKysrKysrKystLS0tLS0tLQogYXJjaC94ODYv aW5jbHVkZS9hc20vdWFjY2Vzc182NC5oIHwgOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCA0NiBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmggYi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggZDc4OGIwY2RjMGFkLi5lOTNhNjlm OWEyMjUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3MuaAorKysgYi9h cmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTE0NCw2ICsxNDQsOSBAQCBleHRlcm4g aW50IF9fZ2V0X3VzZXJfNCh2b2lkKTsKIGV4dGVybiBpbnQgX19nZXRfdXNlcl84KHZvaWQpOwog ZXh0ZXJuIGludCBfX2dldF91c2VyX2JhZCh2b2lkKTsKIAorI2RlZmluZSBfX3VhY2Nlc3NfYmVn aW4oKSBzdGFjKCkKKyNkZWZpbmUgX191YWNjZXNzX2VuZCgpICAgY2xhYygpCisKIC8qCiAgKiBU aGlzIGlzIGEgdHlwZTogZWl0aGVyIHVuc2lnbmVkIGxvbmcsIGlmIHRoZSBhcmd1bWVudCBmaXRz IGludG8KICAqIHRoYXQgdHlwZSwgb3Igb3RoZXJ3aXNlIHVuc2lnbmVkIGxvbmcgbG9uZy4KQEAg LTIwMywxMCArMjA2LDEwIEBAIF9fdHlwZW9mX18oX19idWlsdGluX2Nob29zZV9leHByKHNpemVv Zih4KSA+IHNpemVvZigwVUwpLCAwVUxMLCAwVUwpKQogCiAjaWZkZWYgQ09ORklHX1g4Nl8zMgog I2RlZmluZSBfX3B1dF91c2VyX2FzbV91NjQoeCwgYWRkciwgZXJyLCBlcnJyZXQpCQkJXAotCWFz bSB2b2xhdGlsZShBU01fU1RBQyAiXG4iCQkJCQlcCisJYXNtIHZvbGF0aWxlKCJcbiIJCQkJCQlc CiAJCSAgICAgIjE6CW1vdmwgJSVlYXgsMCglMilcbiIJCQlcCiAJCSAgICAgIjI6CW1vdmwgJSVl ZHgsNCglMilcbiIJCQlcCi0JCSAgICAgIjM6ICIgQVNNX0NMQUMgIlxuIgkJCQlcCisJCSAgICAg IjM6IgkJCQkJCVwKIAkJICAgICAiLnNlY3Rpb24gLmZpeHVwLFwiYXhcIlxuIgkJCQlcCiAJCSAg ICAgIjQ6CW1vdmwgJTMsJTBcbiIJCQkJXAogCQkgICAgICIJam1wIDNiXG4iCQkJCQlcCkBAIC0y MTcsMTAgKzIyMCwxMCBAQCBfX3R5cGVvZl9fKF9fYnVpbHRpbl9jaG9vc2VfZXhwcihzaXplb2Yo eCkgPiBzaXplb2YoMFVMKSwgMFVMTCwgMFVMKSkKIAkJICAgICA6ICJBIiAoeCksICJyIiAoYWRk ciksICJpIiAoZXJycmV0KSwgIjAiIChlcnIpKQogCiAjZGVmaW5lIF9fcHV0X3VzZXJfYXNtX2V4 X3U2NCh4LCBhZGRyKQkJCQkJXAotCWFzbSB2b2xhdGlsZShBU01fU1RBQyAiXG4iCQkJCQlcCisJ YXNtIHZvbGF0aWxlKCJcbiIJCQkJCQlcCiAJCSAgICAgIjE6CW1vdmwgJSVlYXgsMCglMSlcbiIJ CQlcCiAJCSAgICAgIjI6CW1vdmwgJSVlZHgsNCglMSlcbiIJCQlcCi0JCSAgICAgIjM6ICIgQVNN X0NMQUMgIlxuIgkJCQlcCisJCSAgICAgIjM6IgkJCQkJCVwKIAkJICAgICBfQVNNX0VYVEFCTEVf RVgoMWIsIDJiKQkJCQlcCiAJCSAgICAgX0FTTV9FWFRBQkxFX0VYKDJiLCAzYikJCQkJXAogCQkg ICAgIDogOiAiQSIgKHgpLCAiciIgKGFkZHIpKQpAQCAtMzE0LDYgKzMxNywxMCBAQCBkbyB7CQkJ CQkJCQkJXAogCX0JCQkJCQkJCVwKIH0gd2hpbGUgKDApCiAKKy8qCisgKiBUaGlzIGRvZXNuJ3Qg ZG8gX191YWNjZXNzX2JlZ2luL2VuZCAtIHRoZSBleGNlcHRpb24gaGFuZGxpbmcKKyAqIGFyb3Vu ZCBpdCBtdXN0IGRvIHRoYXQuCisgKi8KICNkZWZpbmUgX19wdXRfdXNlcl9zaXplX2V4KHgsIHB0 ciwgc2l6ZSkJCQkJXAogZG8gewkJCQkJCQkJCVwKIAlfX2Noa191c2VyX3B0cihwdHIpOwkJCQkJ CVwKQEAgLTM2OCw5ICszNzUsOSBAQCBkbyB7CQkJCQkJCQkJXAogfSB3aGlsZSAoMCkKIAogI2Rl ZmluZSBfX2dldF91c2VyX2FzbSh4LCBhZGRyLCBlcnIsIGl0eXBlLCBydHlwZSwgbHR5cGUsIGVy cnJldCkJXAotCWFzbSB2b2xhdGlsZShBU01fU1RBQyAiXG4iCQkJCQlcCisJYXNtIHZvbGF0aWxl KCJcbiIJCQkJCQlcCiAJCSAgICAgIjE6CW1vdiJpdHlwZSIgJTIsJSJydHlwZSIxXG4iCQlcCi0J CSAgICAgIjI6ICIgQVNNX0NMQUMgIlxuIgkJCQlcCisJCSAgICAgIjI6XG4iCQkJCQkJXAogCQkg ICAgICIuc2VjdGlvbiAuZml4dXAsXCJheFwiXG4iCQkJCVwKIAkJICAgICAiMzoJbW92ICUzLCUw XG4iCQkJCVwKIAkJICAgICAiCXhvciJpdHlwZSIgJSJydHlwZSIxLCUicnR5cGUiMVxuIgkJXApA QCAtMzgwLDYgKzM4NywxMCBAQCBkbyB7CQkJCQkJCQkJXAogCQkgICAgIDogIj1yIiAoZXJyKSwg bHR5cGUoeCkJCQkJXAogCQkgICAgIDogIm0iIChfX20oYWRkcikpLCAiaSIgKGVycnJldCksICIw IiAoZXJyKSkKIAorLyoKKyAqIFRoaXMgZG9lc24ndCBkbyBfX3VhY2Nlc3NfYmVnaW4vZW5kIC0g dGhlIGV4Y2VwdGlvbiBoYW5kbGluZworICogYXJvdW5kIGl0IG11c3QgZG8gdGhhdC4KKyAqLwog I2RlZmluZSBfX2dldF91c2VyX3NpemVfZXgoeCwgcHRyLCBzaXplKQkJCQlcCiBkbyB7CQkJCQkJ CQkJXAogCV9fY2hrX3VzZXJfcHRyKHB0cik7CQkJCQkJXApAQCAtNDEwLDcgKzQyMSw5IEBAIGRv IHsJCQkJCQkJCQlcCiAjZGVmaW5lIF9fcHV0X3VzZXJfbm9jaGVjayh4LCBwdHIsIHNpemUpCQkJ XAogKHsJCQkJCQkJCVwKIAlpbnQgX19wdV9lcnI7CQkJCQkJXAorCV9fdWFjY2Vzc19iZWdpbigp OwkJCQkJXAogCV9fcHV0X3VzZXJfc2l6ZSgoeCksIChwdHIpLCAoc2l6ZSksIF9fcHVfZXJyLCAt RUZBVUxUKTsJXAorCV9fdWFjY2Vzc19lbmQoKTsJCQkJCVwKIAlfX2J1aWx0aW5fZXhwZWN0KF9f cHVfZXJyLCAwKTsJCQkJXAogfSkKIApAQCAtNDE4LDcgKzQzMSw5IEBAIGRvIHsJCQkJCQkJCQlc CiAoewkJCQkJCQkJCVwKIAlpbnQgX19ndV9lcnI7CQkJCQkJCVwKIAl1bnNpZ25lZCBsb25nIF9f Z3VfdmFsOwkJCQkJCVwKKwlfX3VhY2Nlc3NfYmVnaW4oKTsJCQkJCQlcCiAJX19nZXRfdXNlcl9z aXplKF9fZ3VfdmFsLCAocHRyKSwgKHNpemUpLCBfX2d1X2VyciwgLUVGQVVMVCk7CVwKKwlfX3Vh Y2Nlc3NfZW5kKCk7CQkJCQkJXAogCSh4KSA9IChfX2ZvcmNlIF9fdHlwZW9mX18oKihwdHIpKSlf X2d1X3ZhbDsJCQlcCiAJX19idWlsdGluX2V4cGVjdChfX2d1X2VyciwgMCk7CQkJCQlcCiB9KQpA QCAtNDMzLDkgKzQ0OCw5IEBAIHN0cnVjdCBfX2xhcmdlX3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcg YnVmWzEwMF07IH07CiAgKiBhbGlhc2luZyBpc3N1ZXMuCiAgKi8KICNkZWZpbmUgX19wdXRfdXNl cl9hc20oeCwgYWRkciwgZXJyLCBpdHlwZSwgcnR5cGUsIGx0eXBlLCBlcnJyZXQpCVwKLQlhc20g dm9sYXRpbGUoQVNNX1NUQUMgIlxuIgkJCQkJXAorCWFzbSB2b2xhdGlsZSgiXG4iCQkJCQkJXAog CQkgICAgICIxOgltb3YiaXR5cGUiICUicnR5cGUiMSwlMlxuIgkJXAotCQkgICAgICIyOiAiIEFT TV9DTEFDICJcbiIJCQkJXAorCQkgICAgICIyOlxuIgkJCQkJCVwKIAkJICAgICAiLnNlY3Rpb24g LmZpeHVwLFwiYXhcIlxuIgkJCQlcCiAJCSAgICAgIjM6CW1vdiAlMywlMFxuIgkJCQlcCiAJCSAg ICAgIglqbXAgMmJcbiIJCQkJCVwKQEAgLTQ1NSwxMSArNDcwLDExIEBAIHN0cnVjdCBfX2xhcmdl X3N0cnVjdCB7IHVuc2lnbmVkIGxvbmcgYnVmWzEwMF07IH07CiAgKi8KICNkZWZpbmUgdWFjY2Vz c190cnkJZG8gewkJCQkJCVwKIAljdXJyZW50X3RocmVhZF9pbmZvKCktPnVhY2Nlc3NfZXJyID0g MDsJCQkJXAotCXN0YWMoKTsJCQkJCQkJCVwKKwlfX3VhY2Nlc3NfYmVnaW4oKTsJCQkJCQlcCiAJ YmFycmllcigpOwogCiAjZGVmaW5lIHVhY2Nlc3NfY2F0Y2goZXJyKQkJCQkJCVwKLQljbGFjKCk7 CQkJCQkJCQlcCisJX191YWNjZXNzX2VuZCgpOwkJCQkJCVwKIAkoZXJyKSB8PSAoY3VycmVudF90 aHJlYWRfaW5mbygpLT51YWNjZXNzX2VyciA/IC1FRkFVTFQgOiAwKTsJXAogfSB3aGlsZSAoMCkK IApAQCAtNTU3LDEyICs1NzIsMTMgQEAgZXh0ZXJuIHZvaWQgX19jbXB4Y2hnX3dyb25nX3NpemUo dm9pZCkKIAlfX3R5cGVvZl9fKHB0cikgX191dmFsID0gKHV2YWwpOwkJCQlcCiAJX190eXBlb2Zf XygqKHB0cikpIF9fb2xkID0gKG9sZCk7CQkJCVwKIAlfX3R5cGVvZl9fKCoocHRyKSkgX19uZXcg PSAobmV3KTsJCQkJXAorCV9fdWFjY2Vzc19iZWdpbigpOwkJCQkJCVwKIAlzd2l0Y2ggKHNpemUp IHsJCQkJCQkJXAogCWNhc2UgMToJCQkJCQkJCVwKIAl7CQkJCQkJCQlcCi0JCWFzbSB2b2xhdGls ZSgiXHQiIEFTTV9TVEFDICJcbiIJCQkJXAorCQlhc20gdm9sYXRpbGUoIlxuIgkJCQkJXAogCQkJ IjE6XHQiIExPQ0tfUFJFRklYICJjbXB4Y2hnYiAlNCwgJTJcbiIJCVwKLQkJCSIyOlx0IiBBU01f Q0xBQyAiXG4iCQkJCVwKKwkJCSIyOlxuIgkJCQkJCVwKIAkJCSJcdC5zZWN0aW9uIC5maXh1cCwg XCJheFwiXG4iCQkJXAogCQkJIjM6XHRtb3YgICAgICUzLCAlMFxuIgkJCQlcCiAJCQkiXHRqbXAg ICAgIDJiXG4iCQkJCVwKQEAgLTU3Niw5ICs1OTIsOSBAQCBleHRlcm4gdm9pZCBfX2NtcHhjaGdf d3Jvbmdfc2l6ZSh2b2lkKQogCX0JCQkJCQkJCVwKIAljYXNlIDI6CQkJCQkJCQlcCiAJewkJCQkJ CQkJXAotCQlhc20gdm9sYXRpbGUoIlx0IiBBU01fU1RBQyAiXG4iCQkJCVwKKwkJYXNtIHZvbGF0 aWxlKCJcbiIJCQkJCVwKIAkJCSIxOlx0IiBMT0NLX1BSRUZJWCAiY21weGNoZ3cgJTQsICUyXG4i CQlcCi0JCQkiMjpcdCIgQVNNX0NMQUMgIlxuIgkJCQlcCisJCQkiMjpcbiIJCQkJCQlcCiAJCQki XHQuc2VjdGlvbiAuZml4dXAsIFwiYXhcIlxuIgkJCVwKIAkJCSIzOlx0bW92ICAgICAlMywgJTBc biIJCQkJXAogCQkJIlx0am1wICAgICAyYlxuIgkJCQlcCkBAIC01OTIsOSArNjA4LDkgQEAgZXh0 ZXJuIHZvaWQgX19jbXB4Y2hnX3dyb25nX3NpemUodm9pZCkKIAl9CQkJCQkJCQlcCiAJY2FzZSA0 OgkJCQkJCQkJXAogCXsJCQkJCQkJCVwKLQkJYXNtIHZvbGF0aWxlKCJcdCIgQVNNX1NUQUMgIlxu IgkJCQlcCisJCWFzbSB2b2xhdGlsZSgiXG4iCQkJCQlcCiAJCQkiMTpcdCIgTE9DS19QUkVGSVgg ImNtcHhjaGdsICU0LCAlMlxuIgkJXAotCQkJIjI6XHQiIEFTTV9DTEFDICJcbiIJCQkJXAorCQkJ IjI6XG4iCQkJCQkJXAogCQkJIlx0LnNlY3Rpb24gLmZpeHVwLCBcImF4XCJcbiIJCQlcCiAJCQki MzpcdG1vdiAgICAgJTMsICUwXG4iCQkJCVwKIAkJCSJcdGptcCAgICAgMmJcbiIJCQkJXApAQCAt NjExLDkgKzYyNyw5IEBAIGV4dGVybiB2b2lkIF9fY21weGNoZ193cm9uZ19zaXplKHZvaWQpCiAJ CWlmICghSVNfRU5BQkxFRChDT05GSUdfWDg2XzY0KSkJCQkJXAogCQkJX19jbXB4Y2hnX3dyb25n X3NpemUoKTsJCQkJXAogCQkJCQkJCQkJXAotCQlhc20gdm9sYXRpbGUoIlx0IiBBU01fU1RBQyAi XG4iCQkJCVwKKwkJYXNtIHZvbGF0aWxlKCJcbiIJCQkJCVwKIAkJCSIxOlx0IiBMT0NLX1BSRUZJ WCAiY21weGNoZ3EgJTQsICUyXG4iCQlcCi0JCQkiMjpcdCIgQVNNX0NMQUMgIlxuIgkJCQlcCisJ CQkiMjpcbiIJCQkJCQlcCiAJCQkiXHQuc2VjdGlvbiAuZml4dXAsIFwiYXhcIlxuIgkJCVwKIAkJ CSIzOlx0bW92ICAgICAlMywgJTBcbiIJCQkJXAogCQkJIlx0am1wICAgICAyYlxuIgkJCQlcCkBA IC02MjgsNiArNjQ0LDcgQEAgZXh0ZXJuIHZvaWQgX19jbXB4Y2hnX3dyb25nX3NpemUodm9pZCkK IAlkZWZhdWx0OgkJCQkJCQlcCiAJCV9fY21weGNoZ193cm9uZ19zaXplKCk7CQkJCQlcCiAJfQkJ CQkJCQkJXAorCV9fdWFjY2Vzc19lbmQoKTsJCQkJCQlcCiAJKl9fdXZhbCA9IF9fb2xkOwkJCQkJ CVwKIAlfX3JldDsJCQkJCQkJCVwKIH0pCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS91YWNjZXNzXzY0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzXzY0LmgKaW5kZXgg ZDgzYTU1Yjk1YTQ4Li4zMDc2OTg2ODhmYTEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUv YXNtL3VhY2Nlc3NfNjQuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzXzY0LmgK QEAgLTU2LDM1ICs1Niw0OSBAQCBpbnQgX19jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKmRz dCwgY29uc3Qgdm9pZCBfX3VzZXIgKnNyYywgdW5zaWduZWQgc2l6ZSkKIAlpZiAoIV9fYnVpbHRp bl9jb25zdGFudF9wKHNpemUpKQogCQlyZXR1cm4gY29weV91c2VyX2dlbmVyaWMoZHN0LCAoX19m b3JjZSB2b2lkICopc3JjLCBzaXplKTsKIAlzd2l0Y2ggKHNpemUpIHsKLQljYXNlIDE6X19nZXRf dXNlcl9hc20oKih1OCAqKWRzdCwgKHU4IF9fdXNlciAqKXNyYywKKwljYXNlIDE6CisJCV9fdWFj Y2Vzc19iZWdpbigpOworCQlfX2dldF91c2VyX2FzbSgqKHU4ICopZHN0LCAodTggX191c2VyICop c3JjLAogCQkJICAgICAgcmV0LCAiYiIsICJiIiwgIj1xIiwgMSk7CisJCV9fdWFjY2Vzc19lbmQo KTsKIAkJcmV0dXJuIHJldDsKLQljYXNlIDI6X19nZXRfdXNlcl9hc20oKih1MTYgKilkc3QsICh1 MTYgX191c2VyICopc3JjLAorCWNhc2UgMjoKKwkJX191YWNjZXNzX2JlZ2luKCk7CisJCV9fZ2V0 X3VzZXJfYXNtKCoodTE2ICopZHN0LCAodTE2IF9fdXNlciAqKXNyYywKIAkJCSAgICAgIHJldCwg InciLCAidyIsICI9ciIsIDIpOworCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7Ci0J Y2FzZSA0Ol9fZ2V0X3VzZXJfYXNtKCoodTMyICopZHN0LCAodTMyIF9fdXNlciAqKXNyYywKKwlj YXNlIDQ6CisJCV9fdWFjY2Vzc19iZWdpbigpOworCQlfX2dldF91c2VyX2FzbSgqKHUzMiAqKWRz dCwgKHUzMiBfX3VzZXIgKilzcmMsCiAJCQkgICAgICByZXQsICJsIiwgImsiLCAiPXIiLCA0KTsK KwkJX191YWNjZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwotCWNhc2UgODpfX2dldF91c2VyX2Fz bSgqKHU2NCAqKWRzdCwgKHU2NCBfX3VzZXIgKilzcmMsCisJY2FzZSA4OgorCQlfX3VhY2Nlc3Nf YmVnaW4oKTsKKwkJX19nZXRfdXNlcl9hc20oKih1NjQgKilkc3QsICh1NjQgX191c2VyICopc3Jj LAogCQkJICAgICAgcmV0LCAicSIsICIiLCAiPXIiLCA4KTsKKwkJX191YWNjZXNzX2VuZCgpOwog CQlyZXR1cm4gcmV0OwogCWNhc2UgMTA6CisJCV9fdWFjY2Vzc19iZWdpbigpOwogCQlfX2dldF91 c2VyX2FzbSgqKHU2NCAqKWRzdCwgKHU2NCBfX3VzZXIgKilzcmMsCiAJCQkgICAgICAgcmV0LCAi cSIsICIiLCAiPXIiLCAxMCk7Ci0JCWlmICh1bmxpa2VseShyZXQpKQotCQkJcmV0dXJuIHJldDsK LQkJX19nZXRfdXNlcl9hc20oKih1MTYgKikoOCArIChjaGFyICopZHN0KSwKLQkJCSAgICAgICAo dTE2IF9fdXNlciAqKSg4ICsgKGNoYXIgX191c2VyICopc3JjKSwKLQkJCSAgICAgICByZXQsICJ3 IiwgInciLCAiPXIiLCAyKTsKKwkJaWYgKGxpa2VseSghcmV0KSkKKwkJCV9fZ2V0X3VzZXJfYXNt KCoodTE2ICopKDggKyAoY2hhciAqKWRzdCksCisJCQkJICAgICAgICh1MTYgX191c2VyICopKDgg KyAoY2hhciBfX3VzZXIgKilzcmMpLAorCQkJCSAgICAgICByZXQsICJ3IiwgInciLCAiPXIiLCAy KTsKKwkJX191YWNjZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwogCWNhc2UgMTY6CisJCV9fdWFj Y2Vzc19iZWdpbigpOwogCQlfX2dldF91c2VyX2FzbSgqKHU2NCAqKWRzdCwgKHU2NCBfX3VzZXIg KilzcmMsCiAJCQkgICAgICAgcmV0LCAicSIsICIiLCAiPXIiLCAxNik7Ci0JCWlmICh1bmxpa2Vs eShyZXQpKQotCQkJcmV0dXJuIHJldDsKLQkJX19nZXRfdXNlcl9hc20oKih1NjQgKikoOCArIChj aGFyICopZHN0KSwKLQkJCSAgICAgICAodTY0IF9fdXNlciAqKSg4ICsgKGNoYXIgX191c2VyICop c3JjKSwKLQkJCSAgICAgICByZXQsICJxIiwgIiIsICI9ciIsIDgpOworCQlpZiAobGlrZWx5KCFy ZXQpKQorCQkJX19nZXRfdXNlcl9hc20oKih1NjQgKikoOCArIChjaGFyICopZHN0KSwKKwkJCQkg ICAgICAgKHU2NCBfX3VzZXIgKikoOCArIChjaGFyIF9fdXNlciAqKXNyYyksCisJCQkJICAgICAg IHJldCwgInEiLCAiIiwgIj1yIiwgOCk7CisJCV9fdWFjY2Vzc19lbmQoKTsKIAkJcmV0dXJuIHJl dDsKIAlkZWZhdWx0OgogCQlyZXR1cm4gY29weV91c2VyX2dlbmVyaWMoZHN0LCAoX19mb3JjZSB2 b2lkICopc3JjLCBzaXplKTsKQEAgLTEwNiwzNSArMTIwLDUxIEBAIGludCBfX2NvcHlfdG9fdXNl cl9ub2NoZWNrKHZvaWQgX191c2VyICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgdW5zaWduZWQgc2l6 ZSkKIAlpZiAoIV9fYnVpbHRpbl9jb25zdGFudF9wKHNpemUpKQogCQlyZXR1cm4gY29weV91c2Vy X2dlbmVyaWMoKF9fZm9yY2Ugdm9pZCAqKWRzdCwgc3JjLCBzaXplKTsKIAlzd2l0Y2ggKHNpemUp IHsKLQljYXNlIDE6X19wdXRfdXNlcl9hc20oKih1OCAqKXNyYywgKHU4IF9fdXNlciAqKWRzdCwK KwljYXNlIDE6CisJCV9fdWFjY2Vzc19iZWdpbigpOworCQlfX3B1dF91c2VyX2FzbSgqKHU4ICop c3JjLCAodTggX191c2VyICopZHN0LAogCQkJICAgICAgcmV0LCAiYiIsICJiIiwgImlxIiwgMSk7 CisJCV9fdWFjY2Vzc19lbmQoKTsKIAkJcmV0dXJuIHJldDsKLQljYXNlIDI6X19wdXRfdXNlcl9h c20oKih1MTYgKilzcmMsICh1MTYgX191c2VyICopZHN0LAorCWNhc2UgMjoKKwkJX191YWNjZXNz X2JlZ2luKCk7CisJCV9fcHV0X3VzZXJfYXNtKCoodTE2ICopc3JjLCAodTE2IF9fdXNlciAqKWRz dCwKIAkJCSAgICAgIHJldCwgInciLCAidyIsICJpciIsIDIpOworCQlfX3VhY2Nlc3NfZW5kKCk7 CiAJCXJldHVybiByZXQ7Ci0JY2FzZSA0Ol9fcHV0X3VzZXJfYXNtKCoodTMyICopc3JjLCAodTMy IF9fdXNlciAqKWRzdCwKKwljYXNlIDQ6CisJCV9fdWFjY2Vzc19iZWdpbigpOworCQlfX3B1dF91 c2VyX2FzbSgqKHUzMiAqKXNyYywgKHUzMiBfX3VzZXIgKilkc3QsCiAJCQkgICAgICByZXQsICJs IiwgImsiLCAiaXIiLCA0KTsKKwkJX191YWNjZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwotCWNh c2UgODpfX3B1dF91c2VyX2FzbSgqKHU2NCAqKXNyYywgKHU2NCBfX3VzZXIgKilkc3QsCisJY2Fz ZSA4OgorCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJX19wdXRfdXNlcl9hc20oKih1NjQgKilzcmMs ICh1NjQgX191c2VyICopZHN0LAogCQkJICAgICAgcmV0LCAicSIsICIiLCAiZXIiLCA4KTsKKwkJ X191YWNjZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwogCWNhc2UgMTA6CisJCV9fdWFjY2Vzc19i ZWdpbigpOwogCQlfX3B1dF91c2VyX2FzbSgqKHU2NCAqKXNyYywgKHU2NCBfX3VzZXIgKilkc3Qs CiAJCQkgICAgICAgcmV0LCAicSIsICIiLCAiZXIiLCAxMCk7Ci0JCWlmICh1bmxpa2VseShyZXQp KQotCQkJcmV0dXJuIHJldDsKLQkJYXNtKCIiOjo6Im1lbW9yeSIpOwotCQlfX3B1dF91c2VyX2Fz bSg0Wyh1MTYgKilzcmNdLCA0ICsgKHUxNiBfX3VzZXIgKilkc3QsCi0JCQkgICAgICAgcmV0LCAi dyIsICJ3IiwgImlyIiwgMik7CisJCWlmIChsaWtlbHkoIXJldCkpIHsKKwkJCWFzbSgiIjo6OiJt ZW1vcnkiKTsKKwkJCV9fcHV0X3VzZXJfYXNtKDRbKHUxNiAqKXNyY10sIDQgKyAodTE2IF9fdXNl ciAqKWRzdCwKKwkJCQkgICAgICAgcmV0LCAidyIsICJ3IiwgImlyIiwgMik7CisJCX0KKwkJX191 YWNjZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwogCWNhc2UgMTY6CisJCV9fdWFjY2Vzc19iZWdp bigpOwogCQlfX3B1dF91c2VyX2FzbSgqKHU2NCAqKXNyYywgKHU2NCBfX3VzZXIgKilkc3QsCiAJ CQkgICAgICAgcmV0LCAicSIsICIiLCAiZXIiLCAxNik7Ci0JCWlmICh1bmxpa2VseShyZXQpKQot CQkJcmV0dXJuIHJldDsKLQkJYXNtKCIiOjo6Im1lbW9yeSIpOwotCQlfX3B1dF91c2VyX2FzbSgx Wyh1NjQgKilzcmNdLCAxICsgKHU2NCBfX3VzZXIgKilkc3QsCi0JCQkgICAgICAgcmV0LCAicSIs ICIiLCAiZXIiLCA4KTsKKwkJaWYgKGxpa2VseSghcmV0KSkgeworCQkJYXNtKCIiOjo6Im1lbW9y eSIpOworCQkJX19wdXRfdXNlcl9hc20oMVsodTY0ICopc3JjXSwgMSArICh1NjQgX191c2VyICop ZHN0LAorCQkJCSAgICAgICByZXQsICJxIiwgIiIsICJlciIsIDgpOworCQl9CisJCV9fdWFjY2Vz c19lbmQoKTsKIAkJcmV0dXJuIHJldDsKIAlkZWZhdWx0OgogCQlyZXR1cm4gY29weV91c2VyX2dl bmVyaWMoKF9fZm9yY2Ugdm9pZCAqKWRzdCwgc3JjLCBzaXplKTsKQEAgLTE2MCwzOSArMTkwLDQ3 IEBAIGludCBfX2NvcHlfaW5fdXNlcih2b2lkIF9fdXNlciAqZHN0LCBjb25zdCB2b2lkIF9fdXNl ciAqc3JjLCB1bnNpZ25lZCBzaXplKQogCXN3aXRjaCAoc2l6ZSkgewogCWNhc2UgMTogewogCQl1 OCB0bXA7CisJCV9fdWFjY2Vzc19iZWdpbigpOwogCQlfX2dldF91c2VyX2FzbSh0bXAsICh1OCBf X3VzZXIgKilzcmMsCiAJCQkgICAgICAgcmV0LCAiYiIsICJiIiwgIj1xIiwgMSk7CiAJCWlmIChs aWtlbHkoIXJldCkpCiAJCQlfX3B1dF91c2VyX2FzbSh0bXAsICh1OCBfX3VzZXIgKilkc3QsCiAJ CQkJICAgICAgIHJldCwgImIiLCAiYiIsICJpcSIsIDEpOworCQlfX3VhY2Nlc3NfZW5kKCk7CiAJ CXJldHVybiByZXQ7CiAJfQogCWNhc2UgMjogewogCQl1MTYgdG1wOworCQlfX3VhY2Nlc3NfYmVn aW4oKTsKIAkJX19nZXRfdXNlcl9hc20odG1wLCAodTE2IF9fdXNlciAqKXNyYywKIAkJCSAgICAg ICByZXQsICJ3IiwgInciLCAiPXIiLCAyKTsKIAkJaWYgKGxpa2VseSghcmV0KSkKIAkJCV9fcHV0 X3VzZXJfYXNtKHRtcCwgKHUxNiBfX3VzZXIgKilkc3QsCiAJCQkJICAgICAgIHJldCwgInciLCAi dyIsICJpciIsIDIpOworCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7CiAJfQogCiAJ Y2FzZSA0OiB7CiAJCXUzMiB0bXA7CisJCV9fdWFjY2Vzc19iZWdpbigpOwogCQlfX2dldF91c2Vy X2FzbSh0bXAsICh1MzIgX191c2VyICopc3JjLAogCQkJICAgICAgIHJldCwgImwiLCAiayIsICI9 ciIsIDQpOwogCQlpZiAobGlrZWx5KCFyZXQpKQogCQkJX19wdXRfdXNlcl9hc20odG1wLCAodTMy IF9fdXNlciAqKWRzdCwKIAkJCQkgICAgICAgcmV0LCAibCIsICJrIiwgImlyIiwgNCk7CisJCV9f dWFjY2Vzc19lbmQoKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAJY2FzZSA4OiB7CiAJCXU2NCB0bXA7 CisJCV9fdWFjY2Vzc19iZWdpbigpOwogCQlfX2dldF91c2VyX2FzbSh0bXAsICh1NjQgX191c2Vy ICopc3JjLAogCQkJICAgICAgIHJldCwgInEiLCAiIiwgIj1yIiwgOCk7CiAJCWlmIChsaWtlbHko IXJldCkpCiAJCQlfX3B1dF91c2VyX2FzbSh0bXAsICh1NjQgX191c2VyICopZHN0LAogCQkJCSAg ICAgICByZXQsICJxIiwgIiIsICJlciIsIDgpOworCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVy biByZXQ7CiAJfQogCWRlZmF1bHQ6CgpGcm9tIDFkY2M5NjAyY2I4NGNiM2NiMzE2ZDRmOWI2NWRi MDIzODZiZGQ2ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IExpbnVzIFRvcnZhbGRz IDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KRGF0ZTogVHVlLCAyMyBGZWIgMjAxNiAx NDo1ODo1MiAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMzRdIHg4NjogZml4IFNNQVAgaW4gMzIt Yml0IGVudmlyb25tZW50cwoKY29tbWl0IGRlOWU0NzhiOWQ0OWYzYTAyMTQzMTBkOTIxNDUwY2Y1 YmI0YTIxZTYgdXBzdHJlYW0uCgpJbiBjb21taXQgMTFmMWE0Yjk3NTVmICgieDg2OiByZW9yZ2Fu aXplIFNNQVAgaGFuZGxpbmcgaW4gdXNlciBzcGFjZQphY2Nlc3NlcyIpIEkgY2hhbmdlZCBob3cg dGhlIHN0YWMvY2xhYyBpbnN0cnVjdGlvbnMgd2VyZSBnZW5lcmF0ZWQKYXJvdW5kIHRoZSB1c2Vy IHNwYWNlIGFjY2Vzc2VzLCB3aGljaCB0aGVuIG1hZGUgaXQgcG9zc2libGUgdG8gZG8KYmF0Y2hl ZCBhY2Nlc3NlcyBlZmZpY2llbnRseSBmb3IgdXNlciBzdHJpbmcgY29waWVzIGV0Yy4KCkhvd2V2 ZXIsIGluIGRvaW5nIHNvLCBJIGNvbXBsZXRlbHkgc3BhY2VkIG91dCwgYW5kIGRpZG4ndCBldmVu IHRoaW5rCmFib3V0IHRoZSAzMi1iaXQgY2FzZS4gIEFuZCBub2JvZHkgcmVhbGx5IGV2ZW4gc2Vl bWVkIHRvIG5vdGljZSwgYmVjYXVzZQpTTUFQIGRvZXNuJ3QgZXZlbiBleGlzdCB1bnRpbCBtb2Rl cm4gU2t5bGFrZSBwcm9jZXNzb3JzLCBhbmQgeW91J2QgaGF2ZQp0byBiZSBjcmF6eSB0byBydW4g MzItYml0IGtlcm5lbHMgb24gYSBtb2Rlcm4gQ1BVLgoKV2hpY2ggYnJpbmdzIHVzIHRvIEFuZHkg THV0b21pcnNraS4KCkhlIGFjdHVhbGx5IHRlc3RlZCB0aGUgMzItYml0IGtlcm5lbCBvbiBuZXcg aGFyZHdhcmUsIGFuZCBub3RpY2VkIHRoYXQKaXQgZG9lc24ndCB3b3JrLiAgTXkgYmFkLiAgVGhl IHRyaXZpYWwgZml4IGlzIHRvIGFkZCB0aGUgcmVxdWlyZWQKdWFjY2VzcyBiZWdpbi9lbmQgbWFy a2VycyBhcm91bmQgdGhlIHJhdyBhY2Nlc3NlcyBpbiA8YXNtL3VhY2Nlc3NfMzIuaD4uCgpJIGZl ZWwgYSBiaXQgYmFkIGFib3V0IHRoaXMgcGF0Y2gsIGp1c3QgYmVjYXVzZSB0aGF0IGhlYWRlciBm aWxlIHJlYWxseQpzaG91bGQgYmUgY2xlYW5lZCB1cCB0byBhdm9pZCBhbGwgdGhlIGR1cGxpY2F0 ZWQgY29kZSBpbiBpdCwgYW5kIHRoaXMKY29tbWl0IGp1c3QgZXhwYW5kcyBvbiB0aGUgcHJvYmxl bS4gIEJ1dCB0aGlzIGp1c3QgZml4ZXMgdGhlIGJ1ZyB3aXRob3V0CmFueSBiaWdnZXIgY2xlYW51 cCBzdXJnZXJ5LgoKUmVwb3J0ZWQtYW5kLXRlc3RlZC1ieTogQW5keSBMdXRvbWlyc2tpIDxsdXRv QGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51 eC1mb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNo aW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzc18z Mi5oIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNiBp bnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzc18z Mi5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzc18zMi5oCmluZGV4IGY1ZGNiNTIwNGRj ZC4uM2ZlMGVhYzU5NDYyIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNz XzMyLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzc18zMi5oCkBAIC00OCwyMCAr NDgsMjggQEAgX19jb3B5X3RvX3VzZXJfaW5hdG9taWModm9pZCBfX3VzZXIgKnRvLCBjb25zdCB2 b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiAKIAkJc3dpdGNoIChuKSB7CiAJCWNhc2UgMToK KwkJCV9fdWFjY2Vzc19iZWdpbigpOwogCQkJX19wdXRfdXNlcl9zaXplKCoodTggKilmcm9tLCAo dTggX191c2VyICopdG8sCiAJCQkJCTEsIHJldCwgMSk7CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJ CQlyZXR1cm4gcmV0OwogCQljYXNlIDI6CisJCQlfX3VhY2Nlc3NfYmVnaW4oKTsKIAkJCV9fcHV0 X3VzZXJfc2l6ZSgqKHUxNiAqKWZyb20sICh1MTYgX191c2VyICopdG8sCiAJCQkJCTIsIHJldCwg Mik7CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQlyZXR1cm4gcmV0OwogCQljYXNlIDQ6CisJCQlf X3VhY2Nlc3NfYmVnaW4oKTsKIAkJCV9fcHV0X3VzZXJfc2l6ZSgqKHUzMiAqKWZyb20sICh1MzIg X191c2VyICopdG8sCiAJCQkJCTQsIHJldCwgNCk7CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQly ZXR1cm4gcmV0OwogCQljYXNlIDg6CisJCQlfX3VhY2Nlc3NfYmVnaW4oKTsKIAkJCV9fcHV0X3Vz ZXJfc2l6ZSgqKHU2NCAqKWZyb20sICh1NjQgX191c2VyICopdG8sCiAJCQkJCTgsIHJldCwgOCk7 CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQlyZXR1cm4gcmV0OwogCQl9CiAJfQpAQCAtMTAzLDEz ICsxMTEsMTkgQEAgX19jb3B5X2Zyb21fdXNlcl9pbmF0b21pYyh2b2lkICp0bywgY29uc3Qgdm9p ZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIAogCQlzd2l0Y2ggKG4pIHsKIAkJY2Fz ZSAxOgorCQkJX191YWNjZXNzX2JlZ2luKCk7CiAJCQlfX2dldF91c2VyX3NpemUoKih1OCAqKXRv LCBmcm9tLCAxLCByZXQsIDEpOworCQkJX191YWNjZXNzX2VuZCgpOwogCQkJcmV0dXJuIHJldDsK IAkJY2FzZSAyOgorCQkJX191YWNjZXNzX2JlZ2luKCk7CiAJCQlfX2dldF91c2VyX3NpemUoKih1 MTYgKil0bywgZnJvbSwgMiwgcmV0LCAyKTsKKwkJCV9fdWFjY2Vzc19lbmQoKTsKIAkJCXJldHVy biByZXQ7CiAJCWNhc2UgNDoKKwkJCV9fdWFjY2Vzc19iZWdpbigpOwogCQkJX19nZXRfdXNlcl9z aXplKCoodTMyICopdG8sIGZyb20sIDQsIHJldCwgNCk7CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJ CQlyZXR1cm4gcmV0OwogCQl9CiAJfQpAQCAtMTQ4LDEzICsxNjIsMTkgQEAgX19jb3B5X2Zyb21f dXNlcih2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikK IAogCQlzd2l0Y2ggKG4pIHsKIAkJY2FzZSAxOgorCQkJX191YWNjZXNzX2JlZ2luKCk7CiAJCQlf X2dldF91c2VyX3NpemUoKih1OCAqKXRvLCBmcm9tLCAxLCByZXQsIDEpOworCQkJX191YWNjZXNz X2VuZCgpOwogCQkJcmV0dXJuIHJldDsKIAkJY2FzZSAyOgorCQkJX191YWNjZXNzX2JlZ2luKCk7 CiAJCQlfX2dldF91c2VyX3NpemUoKih1MTYgKil0bywgZnJvbSwgMiwgcmV0LCAyKTsKKwkJCV9f dWFjY2Vzc19lbmQoKTsKIAkJCXJldHVybiByZXQ7CiAJCWNhc2UgNDoKKwkJCV9fdWFjY2Vzc19i ZWdpbigpOwogCQkJX19nZXRfdXNlcl9zaXplKCoodTMyICopdG8sIGZyb20sIDQsIHJldCwgNCk7 CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQlyZXR1cm4gcmV0OwogCQl9CiAJfQpAQCAtMTcwLDEz ICsxOTAsMTkgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBsb25nIF9fY29weV9m cm9tX3VzZXJfbm9jYWNoZSh2b2lkICp0bywKIAogCQlzd2l0Y2ggKG4pIHsKIAkJY2FzZSAxOgor CQkJX191YWNjZXNzX2JlZ2luKCk7CiAJCQlfX2dldF91c2VyX3NpemUoKih1OCAqKXRvLCBmcm9t LCAxLCByZXQsIDEpOworCQkJX191YWNjZXNzX2VuZCgpOwogCQkJcmV0dXJuIHJldDsKIAkJY2Fz ZSAyOgorCQkJX191YWNjZXNzX2JlZ2luKCk7CiAJCQlfX2dldF91c2VyX3NpemUoKih1MTYgKil0 bywgZnJvbSwgMiwgcmV0LCAyKTsKKwkJCV9fdWFjY2Vzc19lbmQoKTsKIAkJCXJldHVybiByZXQ7 CiAJCWNhc2UgNDoKKwkJCV9fdWFjY2Vzc19iZWdpbigpOwogCQkJX19nZXRfdXNlcl9zaXplKCoo dTMyICopdG8sIGZyb20sIDQsIHJldCwgNCk7CisJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQlyZXR1 cm4gcmV0OwogCQl9CiAJfQoKRnJvbSAyNjQ0MDQ1OWNhNTAyOTdiMGQwNGI4NDBkOTQzM2Q1NWNj N2M0YTM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW4gV2lsbGlhbXMgPGRhbi5q LndpbGxpYW1zQGludGVsLmNvbT4KRGF0ZTogTW9uLCAyOSBKYW4gMjAxOCAxNzowMjozOSAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggMTQvMzRdIHg4NjogSW50cm9kdWNlIF9fdWFjY2Vzc19iZWdpbl9u b3NwZWMoKSBhbmQKIHVhY2Nlc3NfdHJ5X25vc3BlYwoKY29tbWl0IGIzYmJmYjNmYjVkMjU3NzZi OGUzZjM2MWQyZWVkYWFiYjBiNDk2Y2QgdXBzdHJlYW0uCgpGb3IgX19nZXRfdXNlcigpIHBhdGhz LCBkbyBub3QgYWxsb3cgdGhlIGtlcm5lbCB0byBzcGVjdWxhdGUgb24gdGhlIHZhbHVlCm9mIGEg dXNlciBjb250cm9sbGVkIHBvaW50ZXIuIEluIGFkZGl0aW9uIHRvIHRoZSAnc3RhYycgaW5zdHJ1 Y3Rpb24gZm9yClN1cGVydmlzb3IgTW9kZSBBY2Nlc3MgUHJvdGVjdGlvbiAoU01BUCksIGEgYmFy cmllcl9ub3NwZWMoKSBjYXVzZXMgdGhlCmFjY2Vzc19vaygpIHJlc3VsdCB0byByZXNvbHZlIGlu IHRoZSBwaXBlbGluZSBiZWZvcmUgdGhlIENQVSBtaWdodCB0YWtlIGFueQpzcGVjdWxhdGl2ZSBh Y3Rpb24gb24gdGhlIHBvaW50ZXIgdmFsdWUuIEdpdmVuIHRoZSBjb3N0IG9mICdzdGFjJyB0aGUK c3BlY3VsYXRpb24gYmFycmllciBpcyBwbGFjZWQgYWZ0ZXIgJ3N0YWMnIHRvIGhvcGVmdWxseSBv dmVybGFwIHRoZSBjb3N0IG9mCmRpc2FibGluZyBTTUFQIHdpdGggdGhlIGNvc3Qgb2YgZmx1c2hp bmcgdGhlIGluc3RydWN0aW9uIHBpcGVsaW5lLgoKU2luY2UgX19nZXRfdXNlciBpcyBhIG1ham9y IGtlcm5lbCBpbnRlcmZhY2UgdGhhdCBkZWFscyB3aXRoIHVzZXIKY29udHJvbGxlZCBwb2ludGVy cywgdGhlIF9fdWFjY2Vzc19iZWdpbl9ub3NwZWMoKSBtZWNoYW5pc20gd2lsbCBwcmV2ZW50CnNw ZWN1bGF0aXZlIGV4ZWN1dGlvbiBwYXN0IGFuIGFjY2Vzc19vaygpIHBlcm1pc3Npb24gY2hlY2su IFdoaWxlCnNwZWN1bGF0aXZlIGV4ZWN1dGlvbiBwYXN0IGFjY2Vzc19vaygpIGlzIG5vdCBlbm91 Z2ggdG8gbGVhZCB0byBhIGtlcm5lbAptZW1vcnkgbGVhaywgaXQgaXMgYSBuZWNlc3NhcnkgcHJl Y29uZGl0aW9uLgoKVG8gYmUgY2xlYXIsIF9fdWFjY2Vzc19iZWdpbl9ub3NwZWMoKSBpcyBhZGRy ZXNzaW5nIGEgY2xhc3Mgb2YgcG90ZW50aWFsCnByb2JsZW1zIG5lYXIgX19nZXRfdXNlcigpIHVz YWdlcy4KCk5vdGUsIHRoYXQgd2hpbGUgdGhlIGJhcnJpZXJfbm9zcGVjKCkgaW4gX191YWNjZXNz X2JlZ2luX25vc3BlYygpIGlzIHVzZWQKdG8gcHJvdGVjdCBfX2dldF91c2VyKCksIHBvaW50ZXIg bWFza2luZyBzaW1pbGFyIHRvIGFycmF5X2luZGV4X25vc3BlYygpCndpbGwgYmUgdXNlZCBmb3Ig Z2V0X3VzZXIoKSBzaW5jZSBpdCBpbmNvcnBvcmF0ZXMgYSBib3VuZHMgY2hlY2sgbmVhciB0aGUK dXNhZ2UuCgp1YWNjZXNzX3RyeV9ub3NwZWMgcHJvdmlkZXMgdGhlIHNhbWUgbWVjaGFuaXNtIGZv ciBnZXRfdXNlcl90cnkuCgpObyBmdW5jdGlvbmFsIGNoYW5nZXMuCgpTdWdnZXN0ZWQtYnk6IExp bnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KU3VnZ2VzdGVkLWJ5 OiBBbmRpIEtsZWVuIDxha0BsaW51eC5pbnRlbC5jb20+ClN1Z2dlc3RlZC1ieTogSW5nbyBNb2xu YXIgPG1pbmdvQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERhbiBXaWxsaWFtcyA8ZGFuLmou d2lsbGlhbXNAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhA bGludXRyb25peC5kZT4KQ2M6IGxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCkNjOiBUb20gTGVu ZGFja3kgPHRob21hcy5sZW5kYWNreUBhbWQuY29tPgpDYzogS2VlcyBDb29rIDxrZWVzY29va0Bj aHJvbWl1bS5vcmc+CkNjOiBrZXJuZWwtaGFyZGVuaW5nQGxpc3RzLm9wZW53YWxsLmNvbQpDYzog Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmcKQ2M6IEFsIFZpcm8gPHZpcm9AemVuaXYubGludXgu b3JnLnVrPgpDYzogYWxhbkBsaW51eC5pbnRlbC5jb20KTGluazogaHR0cHM6Ly9sa21sLmtlcm5l bC5vcmcvci8xNTE3Mjc0MTU5MjIuMzM0NTEuNTc5NjYxNDI3MzEwNDM0NjU4My5zdGdpdEBkd2ls bGlhMi1kZXNrMy5hbXIuY29ycC5pbnRlbC5jb20KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6IHVz ZSBjdXJyZW50X3RocmVhZF9pbmZvKCldClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJl bi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3Vh Y2Nlc3MuaCB8IDkgKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdWFjY2Vzcy5oIGIvYXJjaC94ODYvaW5j bHVkZS9hc20vdWFjY2Vzcy5oCmluZGV4IGU5M2E2OWY5YTIyNS4uNGI1MGJjNTJlYTNlIDEwMDY0 NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKKysrIGIvYXJjaC94ODYvaW5j bHVkZS9hc20vdWFjY2Vzcy5oCkBAIC0xNDYsNiArMTQ2LDExIEBAIGV4dGVybiBpbnQgX19nZXRf dXNlcl9iYWQodm9pZCk7CiAKICNkZWZpbmUgX191YWNjZXNzX2JlZ2luKCkgc3RhYygpCiAjZGVm aW5lIF9fdWFjY2Vzc19lbmQoKSAgIGNsYWMoKQorI2RlZmluZSBfX3VhY2Nlc3NfYmVnaW5fbm9z cGVjKCkJXAorKHsJCQkJCVwKKwlzdGFjKCk7CQkJCVwKKwliYXJyaWVyX25vc3BlYygpOwkJXAor fSkKIAogLyoKICAqIFRoaXMgaXMgYSB0eXBlOiBlaXRoZXIgdW5zaWduZWQgbG9uZywgaWYgdGhl IGFyZ3VtZW50IGZpdHMgaW50bwpAQCAtNDczLDYgKzQ3OCwxMCBAQCBzdHJ1Y3QgX19sYXJnZV9z dHJ1Y3QgeyB1bnNpZ25lZCBsb25nIGJ1ZlsxMDBdOyB9OwogCV9fdWFjY2Vzc19iZWdpbigpOwkJ CQkJCVwKIAliYXJyaWVyKCk7CiAKKyNkZWZpbmUgdWFjY2Vzc190cnlfbm9zcGVjIGRvIHsJCQkJ CQlcCisJY3VycmVudF90aHJlYWRfaW5mbygpLT51YWNjZXNzX2VyciA9IDA7CQkJCVwKKwlfX3Vh Y2Nlc3NfYmVnaW5fbm9zcGVjKCk7CQkJCQlcCisKICNkZWZpbmUgdWFjY2Vzc19jYXRjaChlcnIp CQkJCQkJXAogCV9fdWFjY2Vzc19lbmQoKTsJCQkJCQlcCiAJKGVycikgfD0gKGN1cnJlbnRfdGhy ZWFkX2luZm8oKS0+dWFjY2Vzc19lcnIgPyAtRUZBVUxUIDogMCk7CVwKCkZyb20gY2ZlNjZmMjU4 ZDRjOWJmYTc3ZDg3YzQ0NzEyNWU2MTkzYjFjOTgxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkRhdGU6IE1vbiwg MjkgSmFuIDIwMTggMTc6MDI6NDQgLTA4MDAKU3ViamVjdDogW1BBVENIIDE1LzM0XSB4ODYvdXNl cmNvcHk6IFJlcGxhY2Ugb3BlbiBjb2RlZCBzdGFjL2NsYWMgd2l0aAogX191YWNjZXNzX3tiZWdp biwgZW5kfQoKY29tbWl0IGI1YzRhZTRmMzUzMjVkNTIwYjIzMGJhYjZlYjMzMTA2MTNiNzJhYzEg dXBzdHJlYW0uCgpJbiBwcmVwYXJhdGlvbiBmb3IgY29udmVydGluZyBzb21lIF9fdWFjY2Vzc19i ZWdpbigpIGluc3RhbmNlcyB0bwpfX3VhY2Vzc19iZWdpbl9ub3NwZWMoKSwgbWFrZSBzdXJlIGFs bCAnZnJvbSB1c2VyJyB1YWNjZXNzIHBhdGhzIGFyZQp1c2luZyB0aGUgX2JlZ2luKCksIF9lbmQo KSBoZWxwZXJzIHJhdGhlciB0aGFuIG9wZW4tY29kZWQgc3RhYygpIGFuZApjbGFjKCkuCgpObyBm dW5jdGlvbmFsIGNoYW5nZXMuCgpTdWdnZXN0ZWQtYnk6IEluZ28gTW9sbmFyIDxtaW5nb0ByZWRo YXQuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+ CkNjOiBsaW51eC1hcmNoQHZnZXIua2VybmVsLm9yZwpDYzogVG9tIExlbmRhY2t5IDx0aG9tYXMu bGVuZGFja3lAYW1kLmNvbT4KQ2M6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgpD Yzoga2VybmVsLWhhcmRlbmluZ0BsaXN0cy5vcGVud2FsbC5jb20KQ2M6IGdyZWdraEBsaW51eGZv dW5kYXRpb24ub3JnCkNjOiBBbCBWaXJvIDx2aXJvQHplbml2LmxpbnV4Lm9yZy51az4KQ2M6IHRv cnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnCkNjOiBhbGFuQGxpbnV4LmludGVsLmNvbQpMaW5r OiBodHRwczovL2xrbWwua2VybmVsLm9yZy9yLzE1MTcyNzQxNjQzOC4zMzQ1MS4xNzMwOTQ2NTIz MjA1NzE3Njk2Ni5zdGdpdEBkd2lsbGlhMi1kZXNrMy5hbXIuY29ycC5pbnRlbC5jb20KW2J3aDog QmFja3BvcnRlZCB0byA0LjQ6CiAtIENvbnZlcnQgc2V2ZXJhbCBtb3JlIGZ1bmN0aW9ucyB0byB1 c2UgX191YWNjZXNzX2JlZ2luX25vc3BlYygpLCB0aGF0CiAgIGFyZSBqdXN0IHdyYXBwZXJzIGlu IG1haW5saW5lCiAtIEFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdz IDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9saWIvdXNlcmNv cHlfMzIuYyB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5z ZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvbGliL3Vz ZXJjb3B5XzMyLmMgYi9hcmNoL3g4Ni9saWIvdXNlcmNvcHlfMzIuYwppbmRleCA5MWQ5M2I5NWJk ODYuLjU3NTU5NDJmNWViMiAxMDA2NDQKLS0tIGEvYXJjaC94ODYvbGliL3VzZXJjb3B5XzMyLmMK KysrIGIvYXJjaC94ODYvbGliL3VzZXJjb3B5XzMyLmMKQEAgLTU3MCwxMiArNTcwLDEyIEBAIGRv IHsJCQkJCQkJCQlcCiB1bnNpZ25lZCBsb25nIF9fY29weV90b191c2VyX2xsKHZvaWQgX191c2Vy ICp0bywgY29uc3Qgdm9pZCAqZnJvbSwKIAkJCQl1bnNpZ25lZCBsb25nIG4pCiB7Ci0Jc3RhYygp OworCV9fdWFjY2Vzc19iZWdpbigpOwogCWlmIChtb3ZzbF9pc19vayh0bywgZnJvbSwgbikpCiAJ CV9fY29weV91c2VyKHRvLCBmcm9tLCBuKTsKIAllbHNlCiAJCW4gPSBfX2NvcHlfdXNlcl9pbnRl bCh0bywgZnJvbSwgbik7Ci0JY2xhYygpOworCV9fdWFjY2Vzc19lbmQoKTsKIAlyZXR1cm4gbjsK IH0KIEVYUE9SVF9TWU1CT0woX19jb3B5X3RvX3VzZXJfbGwpOwpAQCAtNTgzLDEyICs1ODMsMTIg QEAgRVhQT1JUX1NZTUJPTChfX2NvcHlfdG9fdXNlcl9sbCk7CiB1bnNpZ25lZCBsb25nIF9fY29w eV9mcm9tX3VzZXJfbGwodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLAogCQkJCQl1 bnNpZ25lZCBsb25nIG4pCiB7Ci0Jc3RhYygpOworCV9fdWFjY2Vzc19iZWdpbigpOwogCWlmICht b3ZzbF9pc19vayh0bywgZnJvbSwgbikpCiAJCV9fY29weV91c2VyX3plcm9pbmcodG8sIGZyb20s IG4pOwogCWVsc2UKIAkJbiA9IF9fY29weV91c2VyX3plcm9pbmdfaW50ZWwodG8sIGZyb20sIG4p OwotCWNsYWMoKTsKKwlfX3VhY2Nlc3NfZW5kKCk7CiAJcmV0dXJuIG47CiB9CiBFWFBPUlRfU1lN Qk9MKF9fY29weV9mcm9tX3VzZXJfbGwpOwpAQCAtNTk2LDEzICs1OTYsMTMgQEAgRVhQT1JUX1NZ TUJPTChfX2NvcHlfZnJvbV91c2VyX2xsKTsKIHVuc2lnbmVkIGxvbmcgX19jb3B5X2Zyb21fdXNl cl9sbF9ub3plcm8odm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLAogCQkJCQkgdW5z aWduZWQgbG9uZyBuKQogewotCXN0YWMoKTsKKwlfX3VhY2Nlc3NfYmVnaW4oKTsKIAlpZiAobW92 c2xfaXNfb2sodG8sIGZyb20sIG4pKQogCQlfX2NvcHlfdXNlcih0bywgZnJvbSwgbik7CiAJZWxz ZQogCQluID0gX19jb3B5X3VzZXJfaW50ZWwoKHZvaWQgX191c2VyICopdG8sCiAJCQkJICAgICAg KGNvbnN0IHZvaWQgKilmcm9tLCBuKTsKLQljbGFjKCk7CisJX191YWNjZXNzX2VuZCgpOwogCXJl dHVybiBuOwogfQogRVhQT1JUX1NZTUJPTChfX2NvcHlfZnJvbV91c2VyX2xsX25vemVybyk7CkBA IC02MTAsNyArNjEwLDcgQEAgRVhQT1JUX1NZTUJPTChfX2NvcHlfZnJvbV91c2VyX2xsX25vemVy byk7CiB1bnNpZ25lZCBsb25nIF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSh2b2lkICp0bywg Y29uc3Qgdm9pZCBfX3VzZXIgKmZyb20sCiAJCQkJCXVuc2lnbmVkIGxvbmcgbikKIHsKLQlzdGFj KCk7CisJX191YWNjZXNzX2JlZ2luKCk7CiAjaWZkZWYgQ09ORklHX1g4Nl9JTlRFTF9VU0VSQ09Q WQogCWlmIChuID4gNjQgJiYgY3B1X2hhc194bW0yKQogCQluID0gX19jb3B5X3VzZXJfemVyb2lu Z19pbnRlbF9ub2NhY2hlKHRvLCBmcm9tLCBuKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB1bnNpZ25l ZCBsb25nIF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSh2b2lkICp0bywgY29uc3Qgdm9pZCBf X3VzZXIgKmZyb20sCiAjZWxzZQogCV9fY29weV91c2VyX3plcm9pbmcodG8sIGZyb20sIG4pOwog I2VuZGlmCi0JY2xhYygpOworCV9fdWFjY2Vzc19lbmQoKTsKIAlyZXR1cm4gbjsKIH0KIEVYUE9S VF9TWU1CT0woX19jb3B5X2Zyb21fdXNlcl9sbF9ub2NhY2hlKTsKQEAgLTYyNyw3ICs2MjcsNyBA QCBFWFBPUlRfU1lNQk9MKF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSk7CiB1bnNpZ25lZCBs b25nIF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZV9ub3plcm8odm9pZCAqdG8sIGNvbnN0IHZv aWQgX191c2VyICpmcm9tLAogCQkJCQl1bnNpZ25lZCBsb25nIG4pCiB7Ci0Jc3RhYygpOworCV9f dWFjY2Vzc19iZWdpbigpOwogI2lmZGVmIENPTkZJR19YODZfSU5URUxfVVNFUkNPUFkKIAlpZiAo biA+IDY0ICYmIGNwdV9oYXNfeG1tMikKIAkJbiA9IF9fY29weV91c2VyX2ludGVsX25vY2FjaGUo dG8sIGZyb20sIG4pOwpAQCAtNjM2LDcgKzYzNiw3IEBAIHVuc2lnbmVkIGxvbmcgX19jb3B5X2Zy b21fdXNlcl9sbF9ub2NhY2hlX25vemVybyh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIgKmZy CiAjZWxzZQogCV9fY29weV91c2VyKHRvLCBmcm9tLCBuKTsKICNlbmRpZgotCWNsYWMoKTsKKwlf X3VhY2Nlc3NfZW5kKCk7CiAJcmV0dXJuIG47CiB9CiBFWFBPUlRfU1lNQk9MKF9fY29weV9mcm9t X3VzZXJfbGxfbm9jYWNoZV9ub3plcm8pOwoKRnJvbSBiNTNkMWNhMGY4NzNiNjUzODc0MmJhYzQ1 ZDJiYjk5NjU3ZTdmYzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBEYW4gV2lsbGlh bXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KRGF0ZTogTW9uLCAyOSBKYW4gMjAxOCAxNzow Mjo0OSAtMDgwMApTdWJqZWN0OiBbUEFUQ0ggMTYvMzRdIHg4Ni91YWNjZXNzOiBVc2UgX191YWNj ZXNzX2JlZ2luX25vc3BlYygpIGFuZAogdWFjY2Vzc190cnlfbm9zcGVjCgpjb21taXQgMzA0ZWMx YjA1MDMxMDU0OGRiMzMwNjNlNTY3MTIzZmFlOGZkMDMwMSB1cHN0cmVhbS4KClF1b3RpbmcgTGlu dXM6CgogICAgSSBkbyB0aGluayB0aGF0IGl0IHdvdWxkIGJlIGEgZ29vZCBpZGVhIHRvIHZlcnkg ZXhwcmVzc2x5IGRvY3VtZW50CiAgICB0aGUgZmFjdCB0aGF0IGl0J3Mgbm90IHRoYXQgdGhlIHVz ZXIgYWNjZXNzIGl0c2VsZiBpcyB1bnNhZmUuIEkgZG8KICAgIGFncmVlIHRoYXQgdGhpbmdzIGxp a2UgImdldF91c2VyKCkiIHdhbnQgdG8gYmUgcHJvdGVjdGVkLCBidXQgbm90CiAgICBiZWNhdXNl IG9mIGFueSBkaXJlY3QgYnVncyBvciBwcm9ibGVtcyB3aXRoIGdldF91c2VyKCkgYW5kIGZyaWVu ZHMsCiAgICBidXQgc2ltcGx5IGJlY2F1c2UgZ2V0X3VzZXIoKSBpcyBhbiBleGNlbGxlbnQgc291 cmNlIG9mIGEgcG9pbnRlcgogICAgdGhhdCBpcyBvYnZpb3VzbHkgY29udHJvbGxlZCBmcm9tIGEg cG90ZW50aWFsbHkgYXR0YWNraW5nIHVzZXIKICAgIHNwYWNlLiBTbyBpdCdzIGEgcHJpbWUgY2Fu ZGlkYXRlIGZvciB0aGVuIGZpbmRpbmcgX3N1YnNlcXVlbnRfCiAgICBhY2Nlc3NlcyB0aGF0IGNh biB0aGVuIGJlIHVzZWQgdG8gcGVydHVyYiB0aGUgY2FjaGUuCgpfX3VhY2Nlc3NfYmVnaW5fbm9z cGVjKCkgY292ZXJzIF9fZ2V0X3VzZXIoKSBhbmQgY29weV9mcm9tX2l0ZXIoKSB3aGVyZSB0aGUK bGltaXQgY2hlY2sgaXMgZmFyIGF3YXkgZnJvbSB0aGUgdXNlciBwb2ludGVyIGRlLXJlZmVyZW5j ZS4gSW4gdGhvc2UgY2FzZXMKYSBiYXJyaWVyX25vc3BlYygpIHByZXZlbnRzIHNwZWN1bGF0aW9u IHdpdGggYSBwb3RlbnRpYWwgcG9pbnRlciB0bwpwcml2aWxlZ2VkIG1lbW9yeS4gdWFjY2Vzc190 cnlfbm9zcGVjIGNvdmVycyBnZXRfdXNlcl90cnkuCgpTdWdnZXN0ZWQtYnk6IExpbnVzIFRvcnZh bGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KU3VnZ2VzdGVkLWJ5OiBBbmRpIEts ZWVuIDxha0BsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IERhbiBXaWxsaWFtcyA8ZGFu Lmoud2lsbGlhbXNAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2xlaXhuZXIgPHRn bHhAbGludXRyb25peC5kZT4KQ2M6IGxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCkNjOiBLZWVz IENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KQ2M6IGtlcm5lbC1oYXJkZW5pbmdAbGlzdHMu b3BlbndhbGwuY29tCkNjOiBncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZwpDYzogQWwgVmlybyA8 dmlyb0B6ZW5pdi5saW51eC5vcmcudWs+CkNjOiBhbGFuQGxpbnV4LmludGVsLmNvbQpMaW5rOiBo dHRwczovL2xrbWwua2VybmVsLm9yZy9yLzE1MTcyNzQxNjk1My4zMzQ1MS4xMDUwODI4NDIyODUy NjE3MDYwNC5zdGdpdEBkd2lsbGlhMi1kZXNrMy5hbXIuY29ycC5pbnRlbC5jb20KW2J3aDogQmFj a3BvcnRlZCB0byA0LjQ6CiAtIENvbnZlcnQgc2V2ZXJhbCBtb3JlIGZ1bmN0aW9ucyB0byB1c2Ug X191YWNjZXNzX2JlZ2luX25vc3BlYygpLCB0aGF0CiAgIGFyZSBqdXN0IHdyYXBwZXJzIGluIG1h aW5saW5lCiAtIEFkanVzdCBjb250ZXh0XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxi ZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS91 YWNjZXNzLmggICAgfCAgNiArKystLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3NfMzIu aCB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS91 YWNjZXNzXzY0LmggfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQogYXJjaC94ODYvbGliL3VzZXJj b3B5XzMyLmMgICAgICAgIHwgMTAgKysrKystLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNl cnRpb25zKCspLCAzMSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS91YWNjZXNzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKaW5kZXggNGI1 MGJjNTJlYTNlLi42ZjhlYWRmMDY4MWYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L3VhY2Nlc3MuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNzLmgKQEAgLTQzNiw3 ICs0MzYsNyBAQCBkbyB7CQkJCQkJCQkJXAogKHsJCQkJCQkJCQlcCiAJaW50IF9fZ3VfZXJyOwkJ CQkJCQlcCiAJdW5zaWduZWQgbG9uZyBfX2d1X3ZhbDsJCQkJCQlcCi0JX191YWNjZXNzX2JlZ2lu KCk7CQkJCQkJXAorCV9fdWFjY2Vzc19iZWdpbl9ub3NwZWMoKTsJCQkJCVwKIAlfX2dldF91c2Vy X3NpemUoX19ndV92YWwsIChwdHIpLCAoc2l6ZSksIF9fZ3VfZXJyLCAtRUZBVUxUKTsJXAogCV9f dWFjY2Vzc19lbmQoKTsJCQkJCQlcCiAJKHgpID0gKF9fZm9yY2UgX190eXBlb2ZfXygqKHB0cikp KV9fZ3VfdmFsOwkJCVwKQEAgLTU0Niw3ICs1NDYsNyBAQCBzdHJ1Y3QgX19sYXJnZV9zdHJ1Y3Qg eyB1bnNpZ25lZCBsb25nIGJ1ZlsxMDBdOyB9OwogICoJZ2V0X3VzZXJfZXgoLi4uKTsKICAqIH0g Z2V0X3VzZXJfY2F0Y2goZXJyKQogICovCi0jZGVmaW5lIGdldF91c2VyX3RyeQkJdWFjY2Vzc190 cnkKKyNkZWZpbmUgZ2V0X3VzZXJfdHJ5CQl1YWNjZXNzX3RyeV9ub3NwZWMKICNkZWZpbmUgZ2V0 X3VzZXJfY2F0Y2goZXJyKQl1YWNjZXNzX2NhdGNoKGVycikKIAogI2RlZmluZSBnZXRfdXNlcl9l eCh4LCBwdHIpCWRvIHsJCQkJCVwKQEAgLTU4MSw3ICs1ODEsNyBAQCBleHRlcm4gdm9pZCBfX2Nt cHhjaGdfd3Jvbmdfc2l6ZSh2b2lkKQogCV9fdHlwZW9mX18ocHRyKSBfX3V2YWwgPSAodXZhbCk7 CQkJCVwKIAlfX3R5cGVvZl9fKCoocHRyKSkgX19vbGQgPSAob2xkKTsJCQkJXAogCV9fdHlwZW9m X18oKihwdHIpKSBfX25ldyA9IChuZXcpOwkJCQlcCi0JX191YWNjZXNzX2JlZ2luKCk7CQkJCQkJ XAorCV9fdWFjY2Vzc19iZWdpbl9ub3NwZWMoKTsJCQkJCVwKIAlzd2l0Y2ggKHNpemUpIHsJCQkJ CQkJXAogCWNhc2UgMToJCQkJCQkJCVwKIAl7CQkJCQkJCQlcCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9pbmNsdWRlL2FzbS91YWNjZXNzXzMyLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91YWNjZXNz XzMyLmgKaW5kZXggM2ZlMGVhYzU5NDYyLi5mNTc1ZWUzYWVhNWMgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3NfMzIuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS91 YWNjZXNzXzMyLmgKQEAgLTQ4LDI1ICs0OCwyNSBAQCBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh2 b2lkIF9fdXNlciAqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikKIAogCQlz d2l0Y2ggKG4pIHsKIAkJY2FzZSAxOgotCQkJX191YWNjZXNzX2JlZ2luKCk7CisJCQlfX3VhY2Nl c3NfYmVnaW5fbm9zcGVjKCk7CiAJCQlfX3B1dF91c2VyX3NpemUoKih1OCAqKWZyb20sICh1OCBf X3VzZXIgKil0bywKIAkJCQkJMSwgcmV0LCAxKTsKIAkJCV9fdWFjY2Vzc19lbmQoKTsKIAkJCXJl dHVybiByZXQ7CiAJCWNhc2UgMjoKLQkJCV9fdWFjY2Vzc19iZWdpbigpOworCQkJX191YWNjZXNz X2JlZ2luX25vc3BlYygpOwogCQkJX19wdXRfdXNlcl9zaXplKCoodTE2ICopZnJvbSwgKHUxNiBf X3VzZXIgKil0bywKIAkJCQkJMiwgcmV0LCAyKTsKIAkJCV9fdWFjY2Vzc19lbmQoKTsKIAkJCXJl dHVybiByZXQ7CiAJCWNhc2UgNDoKLQkJCV9fdWFjY2Vzc19iZWdpbigpOworCQkJX191YWNjZXNz X2JlZ2luX25vc3BlYygpOwogCQkJX19wdXRfdXNlcl9zaXplKCoodTMyICopZnJvbSwgKHUzMiBf X3VzZXIgKil0bywKIAkJCQkJNCwgcmV0LCA0KTsKIAkJCV9fdWFjY2Vzc19lbmQoKTsKIAkJCXJl dHVybiByZXQ7CiAJCWNhc2UgODoKLQkJCV9fdWFjY2Vzc19iZWdpbigpOworCQkJX191YWNjZXNz X2JlZ2luX25vc3BlYygpOwogCQkJX19wdXRfdXNlcl9zaXplKCoodTY0ICopZnJvbSwgKHU2NCBf X3VzZXIgKil0bywKIAkJCQkJOCwgcmV0LCA4KTsKIAkJCV9fdWFjY2Vzc19lbmQoKTsKQEAgLTEx MSwxNyArMTExLDE3IEBAIF9fY29weV9mcm9tX3VzZXJfaW5hdG9taWModm9pZCAqdG8sIGNvbnN0 IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiAKIAkJc3dpdGNoIChuKSB7CiAJ CWNhc2UgMToKLQkJCV9fdWFjY2Vzc19iZWdpbigpOworCQkJX191YWNjZXNzX2JlZ2luX25vc3Bl YygpOwogCQkJX19nZXRfdXNlcl9zaXplKCoodTggKil0bywgZnJvbSwgMSwgcmV0LCAxKTsKIAkJ CV9fdWFjY2Vzc19lbmQoKTsKIAkJCXJldHVybiByZXQ7CiAJCWNhc2UgMjoKLQkJCV9fdWFjY2Vz c19iZWdpbigpOworCQkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQkJX19nZXRfdXNlcl9z aXplKCoodTE2ICopdG8sIGZyb20sIDIsIHJldCwgMik7CiAJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJ CQlyZXR1cm4gcmV0OwogCQljYXNlIDQ6Ci0JCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJCV9fdWFj Y2Vzc19iZWdpbl9ub3NwZWMoKTsKIAkJCV9fZ2V0X3VzZXJfc2l6ZSgqKHUzMiAqKXRvLCBmcm9t LCA0LCByZXQsIDQpOwogCQkJX191YWNjZXNzX2VuZCgpOwogCQkJcmV0dXJuIHJldDsKQEAgLTE2 MiwxNyArMTYyLDE3IEBAIF9fY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191 c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pCiAKIAkJc3dpdGNoIChuKSB7CiAJCWNhc2UgMToK LQkJCV9fdWFjY2Vzc19iZWdpbigpOworCQkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQkJ X19nZXRfdXNlcl9zaXplKCoodTggKil0bywgZnJvbSwgMSwgcmV0LCAxKTsKIAkJCV9fdWFjY2Vz c19lbmQoKTsKIAkJCXJldHVybiByZXQ7CiAJCWNhc2UgMjoKLQkJCV9fdWFjY2Vzc19iZWdpbigp OworCQkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQkJX19nZXRfdXNlcl9zaXplKCoodTE2 ICopdG8sIGZyb20sIDIsIHJldCwgMik7CiAJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQlyZXR1cm4g cmV0OwogCQljYXNlIDQ6Ci0JCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJCV9fdWFjY2Vzc19iZWdp bl9ub3NwZWMoKTsKIAkJCV9fZ2V0X3VzZXJfc2l6ZSgqKHUzMiAqKXRvLCBmcm9tLCA0LCByZXQs IDQpOwogCQkJX191YWNjZXNzX2VuZCgpOwogCQkJcmV0dXJuIHJldDsKQEAgLTE5MCwxNyArMTkw LDE3IEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgbG9uZyBfX2NvcHlfZnJvbV91 c2VyX25vY2FjaGUodm9pZCAqdG8sCiAKIAkJc3dpdGNoIChuKSB7CiAJCWNhc2UgMToKLQkJCV9f dWFjY2Vzc19iZWdpbigpOworCQkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQkJX19nZXRf dXNlcl9zaXplKCoodTggKil0bywgZnJvbSwgMSwgcmV0LCAxKTsKIAkJCV9fdWFjY2Vzc19lbmQo KTsKIAkJCXJldHVybiByZXQ7CiAJCWNhc2UgMjoKLQkJCV9fdWFjY2Vzc19iZWdpbigpOworCQkJ X191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQkJX19nZXRfdXNlcl9zaXplKCoodTE2ICopdG8s IGZyb20sIDIsIHJldCwgMik7CiAJCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCQlyZXR1cm4gcmV0Owog CQljYXNlIDQ6Ci0JCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJCV9fdWFjY2Vzc19iZWdpbl9ub3Nw ZWMoKTsKIAkJCV9fZ2V0X3VzZXJfc2l6ZSgqKHUzMiAqKXRvLCBmcm9tLCA0LCByZXQsIDQpOwog CQkJX191YWNjZXNzX2VuZCgpOwogCQkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2luY2x1ZGUvYXNtL3VhY2Nlc3NfNjQuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3VhY2Nlc3Nf NjQuaAppbmRleCAzMDc2OTg2ODhmYTEuLmRjMmQwMGU3Y2VkMyAxMDA2NDQKLS0tIGEvYXJjaC94 ODYvaW5jbHVkZS9hc20vdWFjY2Vzc182NC5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Vh Y2Nlc3NfNjQuaApAQCAtNTcsMzEgKzU3LDMxIEBAIGludCBfX2NvcHlfZnJvbV91c2VyX25vY2hl Y2sodm9pZCAqZHN0LCBjb25zdCB2b2lkIF9fdXNlciAqc3JjLCB1bnNpZ25lZCBzaXplKQogCQly ZXR1cm4gY29weV91c2VyX2dlbmVyaWMoZHN0LCAoX19mb3JjZSB2b2lkICopc3JjLCBzaXplKTsK IAlzd2l0Y2ggKHNpemUpIHsKIAljYXNlIDE6Ci0JCV9fdWFjY2Vzc19iZWdpbigpOworCQlfX3Vh Y2Nlc3NfYmVnaW5fbm9zcGVjKCk7CiAJCV9fZ2V0X3VzZXJfYXNtKCoodTggKilkc3QsICh1OCBf X3VzZXIgKilzcmMsCiAJCQkgICAgICByZXQsICJiIiwgImIiLCAiPXEiLCAxKTsKIAkJX191YWNj ZXNzX2VuZCgpOwogCQlyZXR1cm4gcmV0OwogCWNhc2UgMjoKLQkJX191YWNjZXNzX2JlZ2luKCk7 CisJCV9fdWFjY2Vzc19iZWdpbl9ub3NwZWMoKTsKIAkJX19nZXRfdXNlcl9hc20oKih1MTYgKilk c3QsICh1MTYgX191c2VyICopc3JjLAogCQkJICAgICAgcmV0LCAidyIsICJ3IiwgIj1yIiwgMik7 CiAJCV9fdWFjY2Vzc19lbmQoKTsKIAkJcmV0dXJuIHJldDsKIAljYXNlIDQ6Ci0JCV9fdWFjY2Vz c19iZWdpbigpOworCQlfX3VhY2Nlc3NfYmVnaW5fbm9zcGVjKCk7CiAJCV9fZ2V0X3VzZXJfYXNt KCoodTMyICopZHN0LCAodTMyIF9fdXNlciAqKXNyYywKIAkJCSAgICAgIHJldCwgImwiLCAiayIs ICI9ciIsIDQpOwogCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7CiAJY2FzZSA4Ogot CQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQlfX2dl dF91c2VyX2FzbSgqKHU2NCAqKWRzdCwgKHU2NCBfX3VzZXIgKilzcmMsCiAJCQkgICAgICByZXQs ICJxIiwgIiIsICI9ciIsIDgpOwogCQlfX3VhY2Nlc3NfZW5kKCk7CiAJCXJldHVybiByZXQ7CiAJ Y2FzZSAxMDoKLQkJX191YWNjZXNzX2JlZ2luKCk7CisJCV9fdWFjY2Vzc19iZWdpbl9ub3NwZWMo KTsKIAkJX19nZXRfdXNlcl9hc20oKih1NjQgKilkc3QsICh1NjQgX191c2VyICopc3JjLAogCQkJ ICAgICAgIHJldCwgInEiLCAiIiwgIj1yIiwgMTApOwogCQlpZiAobGlrZWx5KCFyZXQpKQpAQCAt OTEsNyArOTEsNyBAQCBpbnQgX19jb3B5X2Zyb21fdXNlcl9ub2NoZWNrKHZvaWQgKmRzdCwgY29u c3Qgdm9pZCBfX3VzZXIgKnNyYywgdW5zaWduZWQgc2l6ZSkKIAkJX191YWNjZXNzX2VuZCgpOwog CQlyZXR1cm4gcmV0OwogCWNhc2UgMTY6Ci0JCV9fdWFjY2Vzc19iZWdpbigpOworCQlfX3VhY2Nl c3NfYmVnaW5fbm9zcGVjKCk7CiAJCV9fZ2V0X3VzZXJfYXNtKCoodTY0ICopZHN0LCAodTY0IF9f dXNlciAqKXNyYywKIAkJCSAgICAgICByZXQsICJxIiwgIiIsICI9ciIsIDE2KTsKIAkJaWYgKGxp a2VseSghcmV0KSkKQEAgLTE5MCw3ICsxOTAsNyBAQCBpbnQgX19jb3B5X2luX3VzZXIodm9pZCBf X3VzZXIgKmRzdCwgY29uc3Qgdm9pZCBfX3VzZXIgKnNyYywgdW5zaWduZWQgc2l6ZSkKIAlzd2l0 Y2ggKHNpemUpIHsKIAljYXNlIDE6IHsKIAkJdTggdG1wOwotCQlfX3VhY2Nlc3NfYmVnaW4oKTsK KwkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQlfX2dldF91c2VyX2FzbSh0bXAsICh1OCBf X3VzZXIgKilzcmMsCiAJCQkgICAgICAgcmV0LCAiYiIsICJiIiwgIj1xIiwgMSk7CiAJCWlmIChs aWtlbHkoIXJldCkpCkBAIC0yMDEsNyArMjAxLDcgQEAgaW50IF9fY29weV9pbl91c2VyKHZvaWQg X191c2VyICpkc3QsIGNvbnN0IHZvaWQgX191c2VyICpzcmMsIHVuc2lnbmVkIHNpemUpCiAJfQog CWNhc2UgMjogewogCQl1MTYgdG1wOwotCQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJX191YWNjZXNz X2JlZ2luX25vc3BlYygpOwogCQlfX2dldF91c2VyX2FzbSh0bXAsICh1MTYgX191c2VyICopc3Jj LAogCQkJICAgICAgIHJldCwgInciLCAidyIsICI9ciIsIDIpOwogCQlpZiAobGlrZWx5KCFyZXQp KQpAQCAtMjEzLDcgKzIxMyw3IEBAIGludCBfX2NvcHlfaW5fdXNlcih2b2lkIF9fdXNlciAqZHN0 LCBjb25zdCB2b2lkIF9fdXNlciAqc3JjLCB1bnNpZ25lZCBzaXplKQogCiAJY2FzZSA0OiB7CiAJ CXUzMiB0bXA7Ci0JCV9fdWFjY2Vzc19iZWdpbigpOworCQlfX3VhY2Nlc3NfYmVnaW5fbm9zcGVj KCk7CiAJCV9fZ2V0X3VzZXJfYXNtKHRtcCwgKHUzMiBfX3VzZXIgKilzcmMsCiAJCQkgICAgICAg cmV0LCAibCIsICJrIiwgIj1yIiwgNCk7CiAJCWlmIChsaWtlbHkoIXJldCkpCkBAIC0yMjQsNyAr MjI0LDcgQEAgaW50IF9fY29weV9pbl91c2VyKHZvaWQgX191c2VyICpkc3QsIGNvbnN0IHZvaWQg X191c2VyICpzcmMsIHVuc2lnbmVkIHNpemUpCiAJfQogCWNhc2UgODogewogCQl1NjQgdG1wOwot CQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwkJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCQlfX2dl dF91c2VyX2FzbSh0bXAsICh1NjQgX191c2VyICopc3JjLAogCQkJICAgICAgIHJldCwgInEiLCAi IiwgIj1yIiwgOCk7CiAJCWlmIChsaWtlbHkoIXJldCkpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9s aWIvdXNlcmNvcHlfMzIuYyBiL2FyY2gveDg2L2xpYi91c2VyY29weV8zMi5jCmluZGV4IDU3NTU5 NDJmNWViMi4uMGE2ZmNhZTQwNGY4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9saWIvdXNlcmNvcHlf MzIuYworKysgYi9hcmNoL3g4Ni9saWIvdXNlcmNvcHlfMzIuYwpAQCAtNTcwLDcgKzU3MCw3IEBA IGRvIHsJCQkJCQkJCQlcCiB1bnNpZ25lZCBsb25nIF9fY29weV90b191c2VyX2xsKHZvaWQgX191 c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwKIAkJCQl1bnNpZ25lZCBsb25nIG4pCiB7Ci0JX191 YWNjZXNzX2JlZ2luKCk7CisJX191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCWlmIChtb3ZzbF9p c19vayh0bywgZnJvbSwgbikpCiAJCV9fY29weV91c2VyKHRvLCBmcm9tLCBuKTsKIAllbHNlCkBA IC01ODMsNyArNTgzLDcgQEAgRVhQT1JUX1NZTUJPTChfX2NvcHlfdG9fdXNlcl9sbCk7CiB1bnNp Z25lZCBsb25nIF9fY29weV9mcm9tX3VzZXJfbGwodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2Vy ICpmcm9tLAogCQkJCQl1bnNpZ25lZCBsb25nIG4pCiB7Ci0JX191YWNjZXNzX2JlZ2luKCk7CisJ X191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCWlmIChtb3ZzbF9pc19vayh0bywgZnJvbSwgbikp CiAJCV9fY29weV91c2VyX3plcm9pbmcodG8sIGZyb20sIG4pOwogCWVsc2UKQEAgLTU5Niw3ICs1 OTYsNyBAQCBFWFBPUlRfU1lNQk9MKF9fY29weV9mcm9tX3VzZXJfbGwpOwogdW5zaWduZWQgbG9u ZyBfX2NvcHlfZnJvbV91c2VyX2xsX25vemVybyh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIg KmZyb20sCiAJCQkJCSB1bnNpZ25lZCBsb25nIG4pCiB7Ci0JX191YWNjZXNzX2JlZ2luKCk7CisJ X191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogCWlmIChtb3ZzbF9pc19vayh0bywgZnJvbSwgbikp CiAJCV9fY29weV91c2VyKHRvLCBmcm9tLCBuKTsKIAllbHNlCkBAIC02MTAsNyArNjEwLDcgQEAg RVhQT1JUX1NZTUJPTChfX2NvcHlfZnJvbV91c2VyX2xsX25vemVybyk7CiB1bnNpZ25lZCBsb25n IF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSh2b2lkICp0bywgY29uc3Qgdm9pZCBfX3VzZXIg KmZyb20sCiAJCQkJCXVuc2lnbmVkIGxvbmcgbikKIHsKLQlfX3VhY2Nlc3NfYmVnaW4oKTsKKwlf X3VhY2Nlc3NfYmVnaW5fbm9zcGVjKCk7CiAjaWZkZWYgQ09ORklHX1g4Nl9JTlRFTF9VU0VSQ09Q WQogCWlmIChuID4gNjQgJiYgY3B1X2hhc194bW0yKQogCQluID0gX19jb3B5X3VzZXJfemVyb2lu Z19pbnRlbF9ub2NhY2hlKHRvLCBmcm9tLCBuKTsKQEAgLTYyNyw3ICs2MjcsNyBAQCBFWFBPUlRf U1lNQk9MKF9fY29weV9mcm9tX3VzZXJfbGxfbm9jYWNoZSk7CiB1bnNpZ25lZCBsb25nIF9fY29w eV9mcm9tX3VzZXJfbGxfbm9jYWNoZV9ub3plcm8odm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2Vy ICpmcm9tLAogCQkJCQl1bnNpZ25lZCBsb25nIG4pCiB7Ci0JX191YWNjZXNzX2JlZ2luKCk7CisJ X191YWNjZXNzX2JlZ2luX25vc3BlYygpOwogI2lmZGVmIENPTkZJR19YODZfSU5URUxfVVNFUkNP UFkKIAlpZiAobiA+IDY0ICYmIGNwdV9oYXNfeG1tMikKIAkJbiA9IF9fY29weV91c2VyX2ludGVs X25vY2FjaGUodG8sIGZyb20sIG4pOwoKRnJvbSA5Y2YwMGZkMGRmMjc0OTM4OWYwYzM0NmJlMzMz MGU2NjNlODI2NGJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb25yYWQgUnplc3p1 dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkRhdGU6IFdlZCwgMjUgQXByIDIwMTgg MjI6MDQ6MTkgLTA0MDAKU3ViamVjdDogW1BBVENIIDE3LzM0XSB4ODYvYnVncywgS1ZNOiBTdXBw b3J0IHRoZSBjb21iaW5hdGlvbiBvZiBndWVzdCBhbmQKIGhvc3QgSUJSUwoKY29tbWl0IDVjZjY4 NzU0ODcwNTQxMmRhNDdjOWNlYzM0MmZkOTUyZDcxZWQzZDUgdXBzdHJlYW0uCgpBIGd1ZXN0IG1h eSBtb2RpZnkgdGhlIFNQRUNfQ1RSTCBNU1IgZnJvbSB0aGUgdmFsdWUgdXNlZCBieSB0aGUKa2Vy bmVsLiBTaW5jZSB0aGUga2VybmVsIGRvZXNuJ3QgdXNlIElCUlMsIHRoaXMgbWVhbnMgYSB2YWx1 ZSBvZiB6ZXJvIGlzCndoYXQgaXMgbmVlZGVkIGluIHRoZSBob3N0LgoKQnV0IHRoZSAzMzY5OTYt U3BlY3VsYXRpdmUtRXhlY3V0aW9uLVNpZGUtQ2hhbm5lbC1NaXRpZ2F0aW9ucy5wZGYgcmVmZXJz IHRvCnRoZSBvdGhlciBiaXRzIGFzIHJlc2VydmVkIHNvIHRoZSBrZXJuZWwgc2hvdWxkIHJlc3Bl Y3QgdGhlIGJvb3QgdGltZQpTUEVDX0NUUkwgdmFsdWUgYW5kIHVzZSB0aGF0LgoKVGhpcyBhbGxv d3MgdG8gZGVhbCB3aXRoIGZ1dHVyZSBleHRlbnNpb25zIHRvIHRoZSBTUEVDX0NUUkwgaW50ZXJm YWNlIGlmCmFueSBhdCBhbGwuCgpOb3RlOiBUaGlzIHVzZXMgd3Jtc3JsKCkgaW5zdGVhZCBvZiBu YXRpdmVfd3Jtc2woKS4gSSBkb2VzIG5vdCBtYWtlIGFueQpkaWZmZXJlbmNlIGFzIHBhcmF2aXJ0 IHdpbGwgb3Zlci13cml0ZSB0aGUgY2FsbHEgKjB4ZmZmLi4gd2l0aCB0aGUgd3Jtc3JsCmFzc2Vt YmxlciBjb2RlLgoKU2lnbmVkLW9mZi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQu d2lsa0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGlu dXRyb25peC5kZT4KUmV2aWV3ZWQtYnk6IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KUmV2 aWV3ZWQtYnk6IEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3JnPgpbYndoOiBCYWNrcG9ydGVk IHRvIDQuNDogVGhpcyB3YXMgcGFydGx5IGFwcGxpZWQgYmVmb3JlOyBhcHBseSBqdXN0IHRoZQog bWlzc2luZyBiaXRzXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdz QGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgfCA2ICsrLS0tLQogYXJj aC94ODYva3ZtL3ZteC5jIHwgNiArKy0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25z KCspLCA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0uYyBiL2Fy Y2gveDg2L2t2bS9zdm0uYwppbmRleCBlMWYyMGUwZDYyYzIuLmY4NjMwMzU5Mjc2OCAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL3N2bS5jCisrKyBiL2FyY2gveDg2L2t2bS9zdm0uYwpAQCAtMzkw NCw4ICszOTA0LDcgQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAq dmNwdSkKIAkgKiBpcyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZSBjb25kaXRpb25hbCBicmFu Y2ggb3ZlciB0aGUgd3Jtc3IKIAkgKiBiZWluZyBzcGVjdWxhdGl2ZWx5IHRha2VuLgogCSAqLwot CWlmIChzdm0tPnNwZWNfY3RybCkKLQkJbmF0aXZlX3dybXNybChNU1JfSUEzMl9TUEVDX0NUUkws IHN2bS0+c3BlY19jdHJsKTsKKwl4ODZfc3BlY19jdHJsX3NldF9ndWVzdChzdm0tPnNwZWNfY3Ry bCk7CiAKIAlhc20gdm9sYXRpbGUgKAogCQkicHVzaCAlJSIgX0FTTV9CUCAiOyBcblx0IgpAQCAt NDAxNyw4ICs0MDE2LDcgQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSkKIAlpZiAoIW1zcl93cml0ZV9pbnRlcmNlcHRlZCh2Y3B1LCBNU1JfSUEzMl9TUEVD X0NUUkwpKQogCQlzdm0tPnNwZWNfY3RybCA9IG5hdGl2ZV9yZWFkX21zcihNU1JfSUEzMl9TUEVD X0NUUkwpOwogCi0JaWYgKHN2bS0+c3BlY19jdHJsKQotCQluYXRpdmVfd3Jtc3JsKE1TUl9JQTMy X1NQRUNfQ1RSTCwgMCk7CisJeDg2X3NwZWNfY3RybF9yZXN0b3JlX2hvc3Qoc3ZtLT5zcGVjX2N0 cmwpOwogCiAJLyogRWxpbWluYXRlIGJyYW5jaCB0YXJnZXQgcHJlZGljdGlvbnMgZnJvbSBndWVz dCBtb2RlICovCiAJdm1leGl0X2ZpbGxfUlNCKCk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v dm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggZjdiNWMwMDk4NTllLi4wZmZmZDI0NzAz N2IgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYworKysgYi9hcmNoL3g4Ni9rdm0vdm14 LmMKQEAgLTg2NTgsOCArODY1OCw3IEBAIHN0YXRpYyB2b2lkIF9fbm9jbG9uZSB2bXhfdmNwdV9y dW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCSAqIGlzIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQg dGhlIGNvbmRpdGlvbmFsIGJyYW5jaCBvdmVyIHRoZSB3cm1zcgogCSAqIGJlaW5nIHNwZWN1bGF0 aXZlbHkgdGFrZW4uCiAJICovCi0JaWYgKHZteC0+c3BlY19jdHJsKQotCQluYXRpdmVfd3Jtc3Js KE1TUl9JQTMyX1NQRUNfQ1RSTCwgdm14LT5zcGVjX2N0cmwpOworCXg4Nl9zcGVjX2N0cmxfc2V0 X2d1ZXN0KHZteC0+c3BlY19jdHJsKTsKIAogCXZteC0+X19sYXVuY2hlZCA9IHZteC0+bG9hZGVk X3ZtY3MtPmxhdW5jaGVkOwogCWFzbSgKQEAgLTg3OTcsOCArODc5Niw3IEBAIHN0YXRpYyB2b2lk IF9fbm9jbG9uZSB2bXhfdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWlmICghbXNy X3dyaXRlX2ludGVyY2VwdGVkKHZjcHUsIE1TUl9JQTMyX1NQRUNfQ1RSTCkpCiAJCXZteC0+c3Bl Y19jdHJsID0gbmF0aXZlX3JlYWRfbXNyKE1TUl9JQTMyX1NQRUNfQ1RSTCk7CiAKLQlpZiAodm14 LT5zcGVjX2N0cmwpCi0JCW5hdGl2ZV93cm1zcmwoTVNSX0lBMzJfU1BFQ19DVFJMLCAwKTsKKwl4 ODZfc3BlY19jdHJsX3Jlc3RvcmVfaG9zdCh2bXgtPnNwZWNfY3RybCk7CiAKIAkvKiBFbGltaW5h dGUgYnJhbmNoIHRhcmdldCBwcmVkaWN0aW9ucyBmcm9tIGd1ZXN0IG1vZGUgKi8KIAl2bWV4aXRf ZmlsbF9SU0IoKTsKCkZyb20gNzc3OGFhZDI5NzljYzRhOTY2NDA1NzdlZTZkODc4ZmRmYTc2NzJj YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgpEYXRlOiBXZWQsIDI1IEFwciAyMDE4IDIyOjA0OjI1IC0w NDAwClN1YmplY3Q6IFtQQVRDSCAxOC8zNF0geDg2L0tWTS9WTVg6IEV4cG9zZSBTUEVDX0NUUkwg Qml0KDIpIHRvIHRoZSBndWVzdApNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKY29t bWl0IGRhMzk1NTZmNjZmNWNmZThmOWM5ODkyMDY5NzRmMWNiMTZjYTVkN2MgdXBzdHJlYW0uCgpF eHBvc2UgdGhlIENQVUlELjcuRURYWzMxXSBiaXQgdG8gdGhlIGd1ZXN0LCBhbmQgYWxzbyBndWFy ZCBhZ2FpbnN0IHZhcmlvdXMKY29tYmluYXRpb25zIG9mIFNQRUNfQ1RSTCBNU1IgdmFsdWVzLgoK VGhlIGhhbmRsaW5nIG9mIHRoZSBNU1IgKHRvIHRha2UgaW50byBhY2NvdW50IHRoZSBob3N0IHZh bHVlIG9mIFNQRUNfQ1RSTApCaXQoMikpIGlzIHRha2VuIGNhcmUgb2YgaW4gcGF0Y2g6CgogIEtW TS9TVk0vVk1YL3g4Ni9zcGVjdHJlX3YyOiBTdXBwb3J0IHRoZSBjb21iaW5hdGlvbiBvZiBndWVz dCBhbmQgaG9zdCBJQlJTCgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtv bnJhZC53aWxrQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGds eEBsaW51dHJvbml4LmRlPgpSZXZpZXdlZC1ieTogSW5nbyBNb2xuYXIgPG1pbmdvQGtlcm5lbC5v cmc+CgpbZHdtdzI6IEhhbmRsZSA0LjkgZ3Vlc3QgQ1BVSUQgZGlmZmVyZW5jZXMsIHJlbmFtZQog ICAgICAgIGd1ZXN0X2NwdV9oYXNfaWJycygpIOKGkiBndWVzdF9jcHVfaGFzX3NwZWNfY3RybCgp XQpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVrPgpTaWdu ZWQtb2ZmLWJ5OiBHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3Jn PgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDogVXBkYXRlIGZlYXR1cmUgYml0IG5hbWVdClNpZ25l ZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgot LS0KIGFyY2gveDg2L2t2bS9jcHVpZC5jIHwgMiArLQogYXJjaC94ODYva3ZtL2NwdWlkLmggfCA0 ICsrLS0KIGFyY2gveDg2L2t2bS9zdm0uYyAgIHwgNCArKy0tCiBhcmNoL3g4Ni9rdm0vdm14LmMg ICB8IDYgKysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vY3B1aWQuYyBiL2FyY2gveDg2L2t2bS9j cHVpZC5jCmluZGV4IDBhYjcyYTgzODdkNC4uNmIyMGUwYTgyM2RhIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9rdm0vY3B1aWQuYworKysgYi9hcmNoL3g4Ni9rdm0vY3B1aWQuYwpAQCAtMzY0LDcgKzM2 NCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fZG9fY3B1aWRfZW50KHN0cnVjdCBrdm1fY3B1aWRf ZW50cnkyICplbnRyeSwgdTMyIGZ1bmN0aW9uLAogCiAJLyogY3B1aWQgNy4wLmVkeCovCiAJY29u c3QgdTMyIGt2bV9jcHVpZF83XzBfZWR4X3g4Nl9mZWF0dXJlcyA9Ci0JCUYoU1BFQ19DVFJMKSB8 IEYoQVJDSF9DQVBBQklMSVRJRVMpOworCQlGKFNQRUNfQ1RSTCkgfCBGKFNQRUNfQ1RSTF9TU0JE KSB8IEYoQVJDSF9DQVBBQklMSVRJRVMpOwogCiAJLyogYWxsIGNhbGxzIHRvIGNwdWlkX2NvdW50 KCkgc2hvdWxkIGJlIG1hZGUgb24gdGhlIHNhbWUgY3B1ICovCiAJZ2V0X2NwdSgpOwpkaWZmIC0t Z2l0IGEvYXJjaC94ODYva3ZtL2NwdWlkLmggYi9hcmNoL3g4Ni9rdm0vY3B1aWQuaAppbmRleCA3 Zjc0ZDdlMThhMDEuLjMxZmY1ZDJkMDUzNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL2NwdWlk LmgKKysrIGIvYXJjaC94ODYva3ZtL2NwdWlkLmgKQEAgLTE3MCw3ICsxNzAsNyBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZ3Vlc3RfY3B1aWRfaGFzX2licGIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQog CXJldHVybiBiZXN0ICYmIChiZXN0LT5lZHggJiBiaXQoWDg2X0ZFQVRVUkVfU1BFQ19DVFJMKSk7 CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBndWVzdF9jcHVpZF9oYXNfaWJycyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpCitzdGF0aWMgaW5saW5lIGJvb2wgZ3Vlc3RfY3B1aWRfaGFzX3NwZWNfY3Ry bChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7CiAJc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmJl c3Q7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3Vlc3RfY3B1aWRf aGFzX2licnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWlmIChiZXN0ICYmIChiZXN0LT5lYngg JiBiaXQoWDg2X0ZFQVRVUkVfSUJSUykpKQogCQlyZXR1cm4gdHJ1ZTsKIAliZXN0ID0ga3ZtX2Zp bmRfY3B1aWRfZW50cnkodmNwdSwgNywgMCk7Ci0JcmV0dXJuIGJlc3QgJiYgKGJlc3QtPmVkeCAm IGJpdChYODZfRkVBVFVSRV9TUEVDX0NUUkwpKTsKKwlyZXR1cm4gYmVzdCAmJiAoYmVzdC0+ZWR4 ICYgKGJpdChYODZfRkVBVFVSRV9TUEVDX0NUUkwpIHwgYml0KFg4Nl9GRUFUVVJFX1NQRUNfQ1RS TF9TU0JEKSkpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgZ3Vlc3RfY3B1aWRfaGFzX2FyY2hf Y2FwYWJpbGl0aWVzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKZGlmZiAtLWdpdCBhL2FyY2gveDg2 L2t2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0uYwppbmRleCBmODYzMDM1OTI3NjguLjliM2Fj OGM1NGE1OSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3N2bS5jCisrKyBiL2FyY2gveDg2L2t2 bS9zdm0uYwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgc3RhdGljIGludCBzdm1fZ2V0X21zcihzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2luZm8pCiAJCWJyZWFrOwog CWNhc2UgTVNSX0lBMzJfU1BFQ19DVFJMOgogCQlpZiAoIW1zcl9pbmZvLT5ob3N0X2luaXRpYXRl ZCAmJgotCQkgICAgIWd1ZXN0X2NwdWlkX2hhc19pYnJzKHZjcHUpKQorCQkgICAgIWd1ZXN0X2Nw dWlkX2hhc19zcGVjX2N0cmwodmNwdSkpCiAJCQlyZXR1cm4gMTsKIAogCQltc3JfaW5mby0+ZGF0 YSA9IHN2bS0+c3BlY19jdHJsOwpAQCAtMzE3MSw3ICszMTcxLDcgQEAgc3RhdGljIGludCBzdm1f c2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQogCQli cmVhazsKIAljYXNlIE1TUl9JQTMyX1NQRUNfQ1RSTDoKIAkJaWYgKCFtc3ItPmhvc3RfaW5pdGlh dGVkICYmCi0JCSAgICAhZ3Vlc3RfY3B1aWRfaGFzX2licnModmNwdSkpCisJCSAgICAhZ3Vlc3Rf Y3B1aWRfaGFzX3NwZWNfY3RybCh2Y3B1KSkKIAkJCXJldHVybiAxOwogCiAJCS8qIFRoZSBTVElC UCBiaXQgZG9lc24ndCBmYXVsdCBldmVuIGlmIGl0J3Mgbm90IGFkdmVydGlzZWQgKi8KZGlmZiAt LWdpdCBhL2FyY2gveDg2L2t2bS92bXguYyBiL2FyY2gveDg2L2t2bS92bXguYwppbmRleCAwZmZm ZDI0NzAzN2IuLmVhMmUzNmQ4NTU2OSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3ZteC5jCisr KyBiL2FyY2gveDg2L2t2bS92bXguYwpAQCAtMjg2MSw3ICsyODYxLDcgQEAgc3RhdGljIGludCB2 bXhfZ2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyX2lu Zm8pCiAJCWJyZWFrOwogCWNhc2UgTVNSX0lBMzJfU1BFQ19DVFJMOgogCQlpZiAoIW1zcl9pbmZv LT5ob3N0X2luaXRpYXRlZCAmJgotCQkgICAgIWd1ZXN0X2NwdWlkX2hhc19pYnJzKHZjcHUpKQor CQkgICAgIWd1ZXN0X2NwdWlkX2hhc19zcGVjX2N0cmwodmNwdSkpCiAJCQlyZXR1cm4gMTsKIAog CQltc3JfaW5mby0+ZGF0YSA9IHRvX3ZteCh2Y3B1KS0+c3BlY19jdHJsOwpAQCAtMjk3MywxMSAr Mjk3MywxMSBAQCBzdGF0aWMgaW50IHZteF9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg c3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAkJYnJlYWs7CiAJY2FzZSBNU1JfSUEzMl9TUEVD X0NUUkw6CiAJCWlmICghbXNyX2luZm8tPmhvc3RfaW5pdGlhdGVkICYmCi0JCSAgICAhZ3Vlc3Rf Y3B1aWRfaGFzX2licnModmNwdSkpCisJCSAgICAhZ3Vlc3RfY3B1aWRfaGFzX3NwZWNfY3RybCh2 Y3B1KSkKIAkJCXJldHVybiAxOwogCiAJCS8qIFRoZSBTVElCUCBiaXQgZG9lc24ndCBmYXVsdCBl dmVuIGlmIGl0J3Mgbm90IGFkdmVydGlzZWQgKi8KLQkJaWYgKGRhdGEgJiB+KFNQRUNfQ1RSTF9J QlJTIHwgU1BFQ19DVFJMX1NUSUJQKSkKKwkJaWYgKGRhdGEgJiB+KFNQRUNfQ1RSTF9JQlJTIHwg U1BFQ19DVFJMX1NUSUJQIHwgU1BFQ19DVFJMX1NTQkQpKQogCQkJcmV0dXJuIDE7CiAKIAkJdm14 LT5zcGVjX2N0cmwgPSBkYXRhOwoKRnJvbSA5NTljMDM1NTFmZTk0YjRjOTRjNjY4ZWVhZGMwM2I4 ZTRjY2ZiMDc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgR2xlaXhuZXIg PHRnbHhAbGludXRyb25peC5kZT4KRGF0ZTogRnJpLCAxMSBNYXkgMjAxOCAxNToyMTowMSArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMTkvMzRdIEtWTTogU1ZNOiBNb3ZlIHNwZWMgY29udHJvbCBjYWxs IGFmdGVyIHJlc3RvcmUgb2YgR1MKCmNvbW1pdCAxNWU2YzIyZmQ4ZTVhNDJjNWVkNmQ0ODdiN2M5 ZmU0NGMyNTE3NzY1IHVwc3RyZWFtLgoKc3ZtX3ZjcHVfcnVuKCkgaW52b2tlcyB4ODZfc3BlY19j dHJsX3Jlc3RvcmVfaG9zdCgpIGFmdGVyIFZNRVhJVCwgYnV0CmJlZm9yZSB0aGUgaG9zdCBHUyBp cyByZXN0b3JlZC4geDg2X3NwZWNfY3RybF9yZXN0b3JlX2hvc3QoKSB1c2VzICdjdXJyZW50Jwp0 byBkZXRlcm1pbmUgdGhlIGhvc3QgU1NCRCBzdGF0ZSBvZiB0aGUgdGhyZWFkLiAnY3VycmVudCcg aXMgR1MgYmFzZWQsIGJ1dApob3N0IEdTIGlzIG5vdCB5ZXQgcmVzdG9yZWQgYW5kIHRoZSBhY2Nl c3MgY2F1c2VzIGEgdHJpcGxlIGZhdWx0LgoKTW92ZSB0aGUgY2FsbCBhZnRlciB0aGUgaG9zdCBH UyByZXN0b3JlLgoKRml4ZXM6IDg4NWY4MmJmYmM2ZiB4ODYvcHJvY2VzczogQWxsb3cgcnVudGlt ZSBjb250cm9sIG9mIFNwZWN1bGF0aXZlIFN0b3JlIEJ5cGFzcwpTaWduZWQtb2ZmLWJ5OiBUaG9t YXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KUmV2aWV3ZWQtYnk6IEJvcmlzbGF2IFBl dGtvdiA8YnBAc3VzZS5kZT4KUmV2aWV3ZWQtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29u cmFkLndpbGtAb3JhY2xlLmNvbT4KQWNrZWQtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJl ZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24uY28u dWs+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRh dGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29k ZXRoaW5rLmNvLnVrPgotLS0KIGFyY2gveDg2L2t2bS9zdm0uYyB8IDI0ICsrKysrKysrKysrKy0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0u YwppbmRleCA5YjNhYzhjNTRhNTkuLjQ5ZDU1NDNlYmM5OCAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a3ZtL3N2bS5jCisrKyBiL2FyY2gveDg2L2t2bS9zdm0uYwpAQCAtMzk5OCw2ICszOTk4LDE4IEBA IHN0YXRpYyB2b2lkIHN2bV92Y3B1X3J1bihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAjZW5kaWYK IAkJKTsKIAorCS8qIEVsaW1pbmF0ZSBicmFuY2ggdGFyZ2V0IHByZWRpY3Rpb25zIGZyb20gZ3Vl c3QgbW9kZSAqLworCXZtZXhpdF9maWxsX1JTQigpOworCisjaWZkZWYgQ09ORklHX1g4Nl82NAor CXdybXNybChNU1JfR1NfQkFTRSwgc3ZtLT5ob3N0LmdzX2Jhc2UpOworI2Vsc2UKKwlsb2Fkc2Vn bWVudChmcywgc3ZtLT5ob3N0LmZzKTsKKyNpZm5kZWYgQ09ORklHX1g4Nl8zMl9MQVpZX0dTCisJ bG9hZHNlZ21lbnQoZ3MsIHN2bS0+aG9zdC5ncyk7CisjZW5kaWYKKyNlbmRpZgorCiAJLyoKIAkg KiBXZSBkbyBub3QgdXNlIElCUlMgaW4gdGhlIGtlcm5lbC4gSWYgdGhpcyB2Q1BVIGhhcyB1c2Vk IHRoZQogCSAqIFNQRUNfQ1RSTCBNU1IgaXQgbWF5IGhhdmUgbGVmdCBpdCBvbjsgc2F2ZSB0aGUg dmFsdWUgYW5kCkBAIC00MDE4LDE4ICs0MDMwLDYgQEAgc3RhdGljIHZvaWQgc3ZtX3ZjcHVfcnVu KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAogCXg4Nl9zcGVjX2N0cmxfcmVzdG9yZV9ob3N0KHN2 bS0+c3BlY19jdHJsKTsKIAotCS8qIEVsaW1pbmF0ZSBicmFuY2ggdGFyZ2V0IHByZWRpY3Rpb25z IGZyb20gZ3Vlc3QgbW9kZSAqLwotCXZtZXhpdF9maWxsX1JTQigpOwotCi0jaWZkZWYgQ09ORklH X1g4Nl82NAotCXdybXNybChNU1JfR1NfQkFTRSwgc3ZtLT5ob3N0LmdzX2Jhc2UpOwotI2Vsc2UK LQlsb2Fkc2VnbWVudChmcywgc3ZtLT5ob3N0LmZzKTsKLSNpZm5kZWYgQ09ORklHX1g4Nl8zMl9M QVpZX0dTCi0JbG9hZHNlZ21lbnQoZ3MsIHN2bS0+aG9zdC5ncyk7Ci0jZW5kaWYKLSNlbmRpZgot CiAJcmVsb2FkX3Rzcyh2Y3B1KTsKIAogCWxvY2FsX2lycV9kaXNhYmxlKCk7CgpGcm9tIDM5YTNh NjM1NDViYmNkZTE5ZTc4NTJkMjdhZjM5MjU2NzY0YzlmNmIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpEYXRlOiBXZWQs IDkgTWF5IDIwMTggMjM6MDE6MDEgKzAyMDAKU3ViamVjdDogW1BBVENIIDIwLzM0XSB4ODYvYnVn cywgS1ZNOiBFeHRlbmQgc3BlY3VsYXRpb24gY29udHJvbCBmb3IKIFZJUlRfU1BFQ19DVFJMCgpj b21taXQgY2NiY2QyNjc0NDcyYTk3OGI0OGM5MWMxZmJmYjY2YzBmZjk1OWYyNCB1cHN0cmVhbS4K CkFNRCBpcyBwcm9wb3NpbmcgYSBWSVJUX1NQRUNfQ1RSTCBNU1IgdG8gaGFuZGxlIHRoZSBTcGVj dWxhdGl2ZSBTdG9yZQpCeXBhc3MgRGlzYWJsZSB2aWEgTVNSX0FNRDY0X0xTX0NGRyBzbyB0aGF0 IGd1ZXN0cyBkbyBub3QgaGF2ZSB0byBjYXJlCmFib3V0IHRoZSBiaXQgcG9zaXRpb24gb2YgdGhl IFNTQkQgYml0IGFuZCB0aHVzIGZhY2lsaXRhdGUgbWlncmF0aW9uLgpBbHNvLCB0aGUgc2libGlu ZyBjb29yZGluYXRpb24gb24gRmFtaWx5IDE3SCBDUFVzIGNhbiBvbmx5IGJlIGRvbmUgb24KdGhl IGhvc3QuCgpFeHRlbmQgeDg2X3NwZWNfY3RybF9zZXRfZ3Vlc3QoKSBhbmQgeDg2X3NwZWNfY3Ry bF9yZXN0b3JlX2hvc3QoKSB3aXRoIGFuCmV4dHJhIGFyZ3VtZW50IGZvciB0aGUgVklSVF9TUEVD X0NUUkwgTVNSLgoKSGFuZCBpbiAwIGZyb20gVk1YIGFuZCBpbiBTVk0gYWRkIGEgbmV3IHZpcnRf c3BlY19jdHJsIG1lbWJlciB0byB0aGUgQ1BVCmRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGdvaW5n IHRvIGJlIHVzZWQgaW4gbGF0ZXIgcGF0Y2hlcyBmb3IgdGhlIGFjdHVhbAppbXBsZW1lbnRhdGlv bi4KClNpZ25lZC1vZmYtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpS ZXZpZXdlZC1ieTogQm9yaXNsYXYgUGV0a292IDxicEBzdXNlLmRlPgpSZXZpZXdlZC1ieTogS29u cmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBHcmVn IEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpbYndoOiBCYWNrcG9y dGVkIHRvIDQuNDogVGhpcyB3YXMgcGFydGx5IGFwcGxpZWQgYmVmb3JlOyBhcHBseSBqdXN0IHRo ZQogbWlzc2luZyBiaXRzXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hp bmdzQGNvZGV0aGluay5jby51az4KLS0tCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgfCAxMSArKysrKysr KystLQogYXJjaC94ODYva3ZtL3ZteC5jIHwgIDUgKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTIg aW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0v c3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMKaW5kZXggNDlkNTU0M2ViYzk4Li45YWJjYzA4ZjRl OTMgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0uYworKysgYi9hcmNoL3g4Ni9rdm0vc3Zt LmMKQEAgLTE0OSw2ICsxNDksMTIgQEAgc3RydWN0IHZjcHVfc3ZtIHsKIAl9IGhvc3Q7CiAKIAl1 NjQgc3BlY19jdHJsOworCS8qCisJICogQ29udGFpbnMgZ3Vlc3QtY29udHJvbGxlZCBiaXRzIG9m IFZJUlRfU1BFQ19DVFJMLCB3aGljaCB3aWxsIGJlCisJICogdHJhbnNsYXRlZCBpbnRvIHRoZSBh cHByb3ByaWF0ZSBMMl9DRkcgYml0cyBvbiB0aGUgaG9zdCB0bworCSAqIHBlcmZvcm0gc3BlY3Vs YXRpdmUgY29udHJvbC4KKwkgKi8KKwl1NjQgdmlydF9zcGVjX2N0cmw7CiAKIAl1MzIgKm1zcnBt OwogCkBAIC0xMTQ2LDYgKzExNTIsNyBAQCBzdGF0aWMgdm9pZCBzdm1fdmNwdV9yZXNldChzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudCkKIAl1MzIgZWF4ID0gMTsKIAogCXN2 bS0+c3BlY19jdHJsID0gMDsKKwlzdm0tPnZpcnRfc3BlY19jdHJsID0gMDsKIAogCWlmICghaW5p dF9ldmVudCkgewogCQlzdm0tPnZjcHUuYXJjaC5hcGljX2Jhc2UgPSBBUElDX0RFRkFVTFRfUEhZ U19CQVNFIHwKQEAgLTM5MDQsNyArMzkxMSw3IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X3J1bihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJICogaXMgbm8gbmVlZCB0byB3b3JyeSBhYm91dCB0aGUg Y29uZGl0aW9uYWwgYnJhbmNoIG92ZXIgdGhlIHdybXNyCiAJICogYmVpbmcgc3BlY3VsYXRpdmVs eSB0YWtlbi4KIAkgKi8KLQl4ODZfc3BlY19jdHJsX3NldF9ndWVzdChzdm0tPnNwZWNfY3RybCk7 CisJeDg2X3NwZWNfY3RybF9zZXRfZ3Vlc3Qoc3ZtLT5zcGVjX2N0cmwsIHN2bS0+dmlydF9zcGVj X2N0cmwpOwogCiAJYXNtIHZvbGF0aWxlICgKIAkJInB1c2ggJSUiIF9BU01fQlAgIjsgXG5cdCIK QEAgLTQwMjgsNyArNDAzNSw3IEBAIHN0YXRpYyB2b2lkIHN2bV92Y3B1X3J1bihzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpCiAJaWYgKCFtc3Jfd3JpdGVfaW50ZXJjZXB0ZWQodmNwdSwgTVNSX0lBMzJf U1BFQ19DVFJMKSkKIAkJc3ZtLT5zcGVjX2N0cmwgPSBuYXRpdmVfcmVhZF9tc3IoTVNSX0lBMzJf U1BFQ19DVFJMKTsKIAotCXg4Nl9zcGVjX2N0cmxfcmVzdG9yZV9ob3N0KHN2bS0+c3BlY19jdHJs KTsKKwl4ODZfc3BlY19jdHJsX3Jlc3RvcmVfaG9zdChzdm0tPnNwZWNfY3RybCwgc3ZtLT52aXJ0 X3NwZWNfY3RybCk7CiAKIAlyZWxvYWRfdHNzKHZjcHUpOwogCmRpZmYgLS1naXQgYS9hcmNoL3g4 Ni9rdm0vdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggZWEyZTM2ZDg1NTY5Li5lOTk5 OTRjYzEyNjYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYworKysgYi9hcmNoL3g4Ni9r dm0vdm14LmMKQEAgLTg2NTgsOSArODY1OCwxMCBAQCBzdGF0aWMgdm9pZCBfX25vY2xvbmUgdm14 X3ZjcHVfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAkgKiBpcyBubyBuZWVkIHRvIHdvcnJ5 IGFib3V0IHRoZSBjb25kaXRpb25hbCBicmFuY2ggb3ZlciB0aGUgd3Jtc3IKIAkgKiBiZWluZyBz cGVjdWxhdGl2ZWx5IHRha2VuLgogCSAqLwotCXg4Nl9zcGVjX2N0cmxfc2V0X2d1ZXN0KHZteC0+ c3BlY19jdHJsKTsKKwl4ODZfc3BlY19jdHJsX3NldF9ndWVzdCh2bXgtPnNwZWNfY3RybCwgMCk7 CiAKIAl2bXgtPl9fbGF1bmNoZWQgPSB2bXgtPmxvYWRlZF92bWNzLT5sYXVuY2hlZDsKKwogCWFz bSgKIAkJLyogU3RvcmUgaG9zdCByZWdpc3RlcnMgKi8KIAkJInB1c2ggJSUiIF9BU01fRFggIjsg cHVzaCAlJSIgX0FTTV9CUCAiOyIKQEAgLTg3OTYsNyArODc5Nyw3IEBAIHN0YXRpYyB2b2lkIF9f bm9jbG9uZSB2bXhfdmNwdV9ydW4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCWlmICghbXNyX3dy aXRlX2ludGVyY2VwdGVkKHZjcHUsIE1TUl9JQTMyX1NQRUNfQ1RSTCkpCiAJCXZteC0+c3BlY19j dHJsID0gbmF0aXZlX3JlYWRfbXNyKE1TUl9JQTMyX1NQRUNfQ1RSTCk7CiAKLQl4ODZfc3BlY19j dHJsX3Jlc3RvcmVfaG9zdCh2bXgtPnNwZWNfY3RybCk7CisJeDg2X3NwZWNfY3RybF9yZXN0b3Jl X2hvc3Qodm14LT5zcGVjX2N0cmwsIDApOwogCiAJLyogRWxpbWluYXRlIGJyYW5jaCB0YXJnZXQg cHJlZGljdGlvbnMgZnJvbSBndWVzdCBtb2RlICovCiAJdm1leGl0X2ZpbGxfUlNCKCk7CgpGcm9t IDZmNmFjNGZlZTc4ZTk0YThhNGM0ZWNlZTgzOTA2YjViZmY1YzM3YjAgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IEJvcmlzbGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KRGF0ZTogV2VkLCAy IE1heSAyMDE4IDE4OjE1OjE0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyMS8zNF0geDg2L3NwZWN1 bGF0aW9uOiBVc2Ugc3ludGhldGljIGJpdHMgZm9yIElCUlMvSUJQQi9TVElCUApNSU1FLVZlcnNp b246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1U cmFuc2Zlci1FbmNvZGluZzogOGJpdAoKY29tbWl0IGU3YzU4N2RhMTI1MjkxZGIzOWRkZjFmNDli MThlNTk3MGFkYmFjMTcgdXBzdHJlYW0uCgpJbnRlbCBhbmQgQU1EIGhhdmUgZGlmZmVyZW50IENQ VUlEIGJpdHMgaGVuY2UgZm9yIHRob3NlIHVzZSBzeW50aGV0aWMgYml0cwp3aGljaCBnZXQgc2V0 IG9uIHRoZSByZXNwZWN0aXZlIHZlbmRvcidzIGluIGluaXRfc3BlY3VsYXRpb25fY29udHJvbCgp LiBTbwp0aGF0IGRlYmFjbGVzIGxpa2Ugd2hhdCB0aGUgY29tbWl0IG1lc3NhZ2Ugb2YKCiAgYzY1 NzMyZTRmNzIxICgieDg2L2NwdTogUmVzdG9yZSBDUFVJRF84MDAwXzAwMDhfRUJYIHJlbG9hZCIp Cgp0YWxrcyBhYm91dCBkb24ndCBoYXBwZW4gYW55bW9yZS4KClNpZ25lZC1vZmYtYnk6IEJvcmlz bGF2IFBldGtvdiA8YnBAc3VzZS5kZT4KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0 Z2x4QGxpbnV0cm9uaXguZGU+ClJldmlld2VkLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtv bnJhZC53aWxrQG9yYWNsZS5jb20+ClRlc3RlZC1ieTogSsO2cmcgT3R0ZSA8anJnLm90dGVAZ21h aWwuY29tPgpDYzogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3Jn PgpDYzogIktpcmlsbCBBLiBTaHV0ZW1vdiIgPGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5j b20+Ckxpbms6IGh0dHBzOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxODA1MDQxNjE4MTUuR0c5MjU3 QHBkLnRuaWMKU2lnbmVkLW9mZi1ieTogRGF2aWQgV29vZGhvdXNlIDxkd213QGFtYXpvbi5jby51 az4KU2lnbmVkLW9mZi1ieTogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0 aW9uLm9yZz4KW2J3aDogQmFja3BvcnRlZCB0byA0LjQ6IFRoaXMgd2FzIHBhcnRseSBhcHBsaWVk IGJlZm9yZTsgYXBwbHkganVzdCB0aGUKIG1pc3NpbmcgYml0c10KU2lnbmVkLW9mZi1ieTogQmVu IEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogYXJjaC94ODYv a3ZtL2NwdWlkLmMgfCAxMCArKysrKy0tLS0tCiBhcmNoL3g4Ni9rdm0vY3B1aWQuaCB8ICA0ICsr LS0KIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9jcHVpZC5jIGIvYXJjaC94ODYva3ZtL2NwdWlkLmMKaW5k ZXggNmIyMGUwYTgyM2RhLi5iMDM3MWE3N2NiYzggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9j cHVpZC5jCisrKyBiL2FyY2gveDg2L2t2bS9jcHVpZC5jCkBAIC0zNDMsNyArMzQzLDcgQEAgc3Rh dGljIGlubGluZSBpbnQgX19kb19jcHVpZF9lbnQoc3RydWN0IGt2bV9jcHVpZF9lbnRyeTIgKmVu dHJ5LCB1MzIgZnVuY3Rpb24sCiAKIAkvKiBjcHVpZCAweDgwMDAwMDA4LmVieCAqLwogCWNvbnN0 IHUzMiBrdm1fY3B1aWRfODAwMF8wMDA4X2VieF94ODZfZmVhdHVyZXMgPQotCQlGKElCUEIpIHwg RihJQlJTKTsKKwkJRihBTURfSUJQQikgfCBGKEFNRF9JQlJTKTsKIAogCS8qIGNwdWlkIDB4QzAw MDAwMDEuZWR4ICovCiAJY29uc3QgdTMyIGt2bV9zdXBwb3J0ZWRfd29yZDVfeDg2X2ZlYXR1cmVz ID0KQEAgLTU5NiwxMCArNTk2LDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IF9fZG9fY3B1aWRfZW50 KHN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICplbnRyeSwgdTMyIGZ1bmN0aW9uLAogCQllbnRyeS0+ ZWF4ID0gZ19waHlzX2FzIHwgKHZpcnRfYXMgPDwgOCk7CiAJCWVudHJ5LT5lZHggPSAwOwogCQkv KiBJQlJTIGFuZCBJQlBCIGFyZW4ndCBuZWNlc3NhcmlseSBwcmVzZW50IGluIGhhcmR3YXJlIGNw dWlkICovCi0JCWlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJQQikpCi0JCQllbnRyeS0+ ZWJ4IHw9IEYoSUJQQik7Ci0JCWlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfSUJSUykpCi0J CQllbnRyeS0+ZWJ4IHw9IEYoSUJSUyk7CisJCWlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVf QU1EX0lCUEIpKQorCQkJZW50cnktPmVieCB8PSBGKEFNRF9JQlBCKTsKKwkJaWYgKGJvb3RfY3B1 X2hhcyhYODZfRkVBVFVSRV9BTURfSUJSUykpCisJCQllbnRyeS0+ZWJ4IHw9IEYoQU1EX0lCUlMp OwogCQllbnRyeS0+ZWJ4ICY9IGt2bV9jcHVpZF84MDAwXzAwMDhfZWJ4X3g4Nl9mZWF0dXJlczsK IAkJY3B1aWRfbWFzaygmZW50cnktPmVieCwgQ1BVSURfODAwMF8wMDA4X0VCWCk7CiAJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2NwdWlkLmggYi9hcmNoL3g4Ni9rdm0vY3B1aWQu aAppbmRleCAzMWZmNWQyZDA1MzYuLmJhODk4ODcwN2U5ZCAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a3ZtL2NwdWlkLmgKKysrIGIvYXJjaC94ODYva3ZtL2NwdWlkLmgKQEAgLTE2NCw3ICsxNjQsNyBA QCBzdGF0aWMgaW5saW5lIGJvb2wgZ3Vlc3RfY3B1aWRfaGFzX2licGIoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KQogCXN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICpiZXN0OwogCiAJYmVzdCA9IGt2bV9m aW5kX2NwdWlkX2VudHJ5KHZjcHUsIDB4ODAwMDAwMDgsIDApOwotCWlmIChiZXN0ICYmIChiZXN0 LT5lYnggJiBiaXQoWDg2X0ZFQVRVUkVfSUJQQikpKQorCWlmIChiZXN0ICYmIChiZXN0LT5lYngg JiBiaXQoWDg2X0ZFQVRVUkVfQU1EX0lCUEIpKSkKIAkJcmV0dXJuIHRydWU7CiAJYmVzdCA9IGt2 bV9maW5kX2NwdWlkX2VudHJ5KHZjcHUsIDcsIDApOwogCXJldHVybiBiZXN0ICYmIChiZXN0LT5l ZHggJiBiaXQoWDg2X0ZFQVRVUkVfU1BFQ19DVFJMKSk7CkBAIC0xNzUsNyArMTc1LDcgQEAgc3Rh dGljIGlubGluZSBib29sIGd1ZXN0X2NwdWlkX2hhc19zcGVjX2N0cmwoc3RydWN0IGt2bV92Y3B1 ICp2Y3B1KQogCXN0cnVjdCBrdm1fY3B1aWRfZW50cnkyICpiZXN0OwogCiAJYmVzdCA9IGt2bV9m aW5kX2NwdWlkX2VudHJ5KHZjcHUsIDB4ODAwMDAwMDgsIDApOwotCWlmIChiZXN0ICYmIChiZXN0 LT5lYnggJiBiaXQoWDg2X0ZFQVRVUkVfSUJSUykpKQorCWlmIChiZXN0ICYmIChiZXN0LT5lYngg JiBiaXQoWDg2X0ZFQVRVUkVfQU1EX0lCUlMpKSkKIAkJcmV0dXJuIHRydWU7CiAJYmVzdCA9IGt2 bV9maW5kX2NwdWlkX2VudHJ5KHZjcHUsIDcsIDApOwogCXJldHVybiBiZXN0ICYmIChiZXN0LT5l ZHggJiAoYml0KFg4Nl9GRUFUVVJFX1NQRUNfQ1RSTCkgfCBiaXQoWDg2X0ZFQVRVUkVfU1BFQ19D VFJMX1NTQkQpKSk7CgpGcm9tIDA1YjQ2ZGJiYWE5YTQ1NzljMzEwZDZmMzMzZGU3NDYxNDQ4YWY5 MDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFRvbSBMZW5kYWNreSA8dGhvbWFzLmxl bmRhY2t5QGFtZC5jb20+CkRhdGU6IFRodSwgMTAgTWF5IDIwMTggMjI6MDY6MzkgKzAyMDAKU3Vi amVjdDogW1BBVENIIDIyLzM0XSBLVk06IFNWTTogSW1wbGVtZW50IFZJUlRfU1BFQ19DVFJMIHN1 cHBvcnQgZm9yIFNTQkQKCmNvbW1pdCBiYzIyNmYwN2RjZDNjOWVmMGI3ZjYyMzZmZTM1NmVhNGE5 Y2I0NzY5IHVwc3RyZWFtLgoKRXhwb3NlIHRoZSBuZXcgdmlydHVhbGl6ZWQgYXJjaGl0ZWN0dXJh bCBtZWNoYW5pc20sIFZJUlRfU1NCRCwgZm9yIHVzaW5nCnNwZWN1bGF0aXZlIHN0b3JlIGJ5cGFz cyBkaXNhYmxlIChTU0JEKSB1bmRlciBTVk0uICBUaGlzIHdpbGwgYWxsb3cgZ3Vlc3RzCnRvIHVz ZSBTU0JEIG9uIGhhcmR3YXJlIHRoYXQgdXNlcyBub24tYXJjaGl0ZWN0dXJhbCBtZWNoYW5pc21z IGZvciBlbmFibGluZwpTU0JELgoKWyB0Z2x4OiBGb2xkZWQgdGhlIG1pZ3JhdGlvbiBmaXh1cCBm cm9tIFBhb2xvIEJvbnppbmkgXQoKU2lnbmVkLW9mZi1ieTogVG9tIExlbmRhY2t5IDx0aG9tYXMu bGVuZGFja3lAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxp bnV0cm9uaXguZGU+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24u Y28udWs+ClNpZ25lZC1vZmYtYnk6IEdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91 bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NA Y29kZXRoaW5rLmNvLnVrPgotLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggfCAg MiArLQogYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyAgICB8ICAzICsrLQogYXJjaC94ODYv a3ZtL2NwdWlkLmMgICAgICAgICAgICB8IDExICsrKysrKysrKy0tCiBhcmNoL3g4Ni9rdm0vY3B1 aWQuaCAgICAgICAgICAgIHwgIDkgKysrKysrKysrCiBhcmNoL3g4Ni9rdm0vc3ZtLmMgICAgICAg ICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKy0tCiBhcmNoL3g4Ni9rdm0vdm14LmMgICAg ICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrLS0tCiBhcmNoL3g4Ni9rdm0veDg2LmMgICAg ICAgICAgICAgIHwgMTMgKysrKy0tLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRp b25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS9rdm1faG9zdC5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaAppbmRleCAzYTM3 Y2RiZGZiYWEuLmMwNDhkMGQ3MGNjNCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9hc20v a3ZtX2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCkBAIC03NjUs NyArNzY1LDcgQEAgc3RydWN0IGt2bV94ODZfb3BzIHsKIAlpbnQgKCpoYXJkd2FyZV9zZXR1cCko dm9pZCk7ICAgICAgICAgICAgICAgLyogX19pbml0ICovCiAJdm9pZCAoKmhhcmR3YXJlX3Vuc2V0 dXApKHZvaWQpOyAgICAgICAgICAgIC8qIF9fZXhpdCAqLwogCWJvb2wgKCpjcHVfaGFzX2FjY2Vs ZXJhdGVkX3Rwcikodm9pZCk7Ci0JYm9vbCAoKmNwdV9oYXNfaGlnaF9yZWFsX21vZGVfc2VnYmFz ZSkodm9pZCk7CisJYm9vbCAoKmhhc19lbXVsYXRlZF9tc3IpKGludCBpbmRleCk7CiAJdm9pZCAo KmNwdWlkX3VwZGF0ZSkoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTsKIAogCS8qIENyZWF0ZSwgYnV0 IGRvIG5vdCBhdHRhY2ggdGhpcyBWQ1BVICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwv Y3B1L2NvbW1vbi5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwppbmRleCBiMTJjMDI4 N2Q2Y2YuLmU4YjQ2ZjU3NTMwNiAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21t b24uYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L2NvbW1vbi5jCkBAIC02OTMsNyArNjkzLDgg QEAgc3RhdGljIHZvaWQgaW5pdF9zcGVjdWxhdGlvbl9jb250cm9sKHN0cnVjdCBjcHVpbmZvX3g4 NiAqYykKIAlpZiAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9JTlRFTF9TVElCUCkpCiAJCXNldF9j cHVfY2FwKGMsIFg4Nl9GRUFUVVJFX1NUSUJQKTsKIAotCWlmIChjcHVfaGFzKGMsIFg4Nl9GRUFU VVJFX1NQRUNfQ1RSTF9TU0JEKSkKKwlpZiAoY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9TUEVDX0NU UkxfU1NCRCkgfHwKKwkgICAgY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9WSVJUX1NTQkQpKQogCQlz ZXRfY3B1X2NhcChjLCBYODZfRkVBVFVSRV9TU0JEKTsKIAogCWlmIChjcHVfaGFzKGMsIFg4Nl9G RUFUVVJFX0FNRF9JQlJTKSkgewpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2NwdWlkLmMgYi9h cmNoL3g4Ni9rdm0vY3B1aWQuYwppbmRleCBiMDM3MWE3N2NiYzguLmI4NTdiYjlmNmYyMyAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva3ZtL2NwdWlkLmMKKysrIGIvYXJjaC94ODYva3ZtL2NwdWlkLmMK QEAgLTM0Myw3ICszNDMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBfX2RvX2NwdWlkX2VudChzdHJ1 Y3Qga3ZtX2NwdWlkX2VudHJ5MiAqZW50cnksIHUzMiBmdW5jdGlvbiwKIAogCS8qIGNwdWlkIDB4 ODAwMDAwMDguZWJ4ICovCiAJY29uc3QgdTMyIGt2bV9jcHVpZF84MDAwXzAwMDhfZWJ4X3g4Nl9m ZWF0dXJlcyA9Ci0JCUYoQU1EX0lCUEIpIHwgRihBTURfSUJSUyk7CisJCUYoQU1EX0lCUEIpIHwg RihBTURfSUJSUykgfCBGKFZJUlRfU1NCRCk7CiAKIAkvKiBjcHVpZCAweEMwMDAwMDAxLmVkeCAq LwogCWNvbnN0IHUzMiBrdm1fc3VwcG9ydGVkX3dvcmQ1X3g4Nl9mZWF0dXJlcyA9CkBAIC01OTUs MTMgKzU5NSwyMCBAQCBzdGF0aWMgaW5saW5lIGludCBfX2RvX2NwdWlkX2VudChzdHJ1Y3Qga3Zt X2NwdWlkX2VudHJ5MiAqZW50cnksIHUzMiBmdW5jdGlvbiwKIAkJCWdfcGh5c19hcyA9IHBoeXNf YXM7CiAJCWVudHJ5LT5lYXggPSBnX3BoeXNfYXMgfCAodmlydF9hcyA8PCA4KTsKIAkJZW50cnkt PmVkeCA9IDA7Ci0JCS8qIElCUlMgYW5kIElCUEIgYXJlbid0IG5lY2Vzc2FyaWx5IHByZXNlbnQg aW4gaGFyZHdhcmUgY3B1aWQgKi8KKwkJLyoKKwkJICogSUJSUywgSUJQQiBhbmQgVklSVF9TU0JE IGFyZW4ndCBuZWNlc3NhcmlseSBwcmVzZW50IGluCisJCSAqIGhhcmR3YXJlIGNwdWlkCisJCSAq LwogCQlpZiAoYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0FNRF9JQlBCKSkKIAkJCWVudHJ5LT5l YnggfD0gRihBTURfSUJQQik7CiAJCWlmIChib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQU1EX0lC UlMpKQogCQkJZW50cnktPmVieCB8PSBGKEFNRF9JQlJTKTsKKwkJaWYgKGJvb3RfY3B1X2hhcyhY ODZfRkVBVFVSRV9WSVJUX1NTQkQpKQorCQkJZW50cnktPmVieCB8PSBGKFZJUlRfU1NCRCk7CiAJ CWVudHJ5LT5lYnggJj0ga3ZtX2NwdWlkXzgwMDBfMDAwOF9lYnhfeDg2X2ZlYXR1cmVzOwogCQlj cHVpZF9tYXNrKCZlbnRyeS0+ZWJ4LCBDUFVJRF84MDAwXzAwMDhfRUJYKTsKKwkJaWYgKGJvb3Rf Y3B1X2hhcyhYODZfRkVBVFVSRV9MU19DRkdfU1NCRCkpCisJCQllbnRyeS0+ZWJ4IHw9IEYoVklS VF9TU0JEKTsKIAkJYnJlYWs7CiAJfQogCWNhc2UgMHg4MDAwMDAxOToKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L2t2bS9jcHVpZC5oIGIvYXJjaC94ODYva3ZtL2NwdWlkLmgKaW5kZXggYmE4OTg4NzA3 ZTlkLi43MmYxNTlmNGQ0NTYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9jcHVpZC5oCisrKyBi L2FyY2gveDg2L2t2bS9jcHVpZC5oCkBAIC0xODksNiArMTg5LDE1IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBndWVzdF9jcHVpZF9oYXNfYXJjaF9jYXBhYmlsaXRpZXMoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1KQogCXJldHVybiBiZXN0ICYmIChiZXN0LT5lZHggJiBiaXQoWDg2X0ZFQVRVUkVfQVJDSF9D QVBBQklMSVRJRVMpKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGd1ZXN0X2NwdWlkX2hhc192 aXJ0X3NzYmQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQoreworCXN0cnVjdCBrdm1fY3B1aWRfZW50 cnkyICpiZXN0OworCisJYmVzdCA9IGt2bV9maW5kX2NwdWlkX2VudHJ5KHZjcHUsIDB4ODAwMDAw MDgsIDApOworCXJldHVybiBiZXN0ICYmIChiZXN0LT5lYnggJiBiaXQoWDg2X0ZFQVRVUkVfVklS VF9TU0JEKSk7Cit9CisKKwogCiAvKgogICogTlJJUFMgaXMgcHJvdmlkZWQgdGhyb3VnaCBjcHVp ZGZuIDB4ODAwMDAwMGEuZWR4IGJpdCAzCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtLmMg Yi9hcmNoL3g4Ni9rdm0vc3ZtLmMKaW5kZXggOWFiY2MwOGY0ZTkzLi5lY2RmNzI0ZGEzNzEgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0uYworKysgYi9hcmNoL3g4Ni9rdm0vc3ZtLmMKQEAg LTMxMDIsNiArMzEwMiwxMyBAQCBzdGF0aWMgaW50IHN2bV9nZXRfbXNyKHN0cnVjdCBrdm1fdmNw dSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3JfaW5mbykKIAogCQltc3JfaW5mby0+ZGF0YSA9 IHN2bS0+c3BlY19jdHJsOwogCQlicmVhazsKKwljYXNlIE1TUl9BTUQ2NF9WSVJUX1NQRUNfQ1RS TDoKKwkJaWYgKCFtc3JfaW5mby0+aG9zdF9pbml0aWF0ZWQgJiYKKwkJICAgICFndWVzdF9jcHVp ZF9oYXNfdmlydF9zc2JkKHZjcHUpKQorCQkJcmV0dXJuIDE7CisKKwkJbXNyX2luZm8tPmRhdGEg PSBzdm0tPnZpcnRfc3BlY19jdHJsOworCQlicmVhazsKIAljYXNlIE1TUl9JQTMyX1VDT0RFX1JF VjoKIAkJbXNyX2luZm8tPmRhdGEgPSAweDAxMDAwMDY1OwogCQlicmVhazsKQEAgLTMyMTksNiAr MzIyNiwxNiBAQCBzdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwg c3RydWN0IG1zcl9kYXRhICptc3IpCiAJCQlicmVhazsKIAkJc2V0X21zcl9pbnRlcmNlcHRpb24o c3ZtLT5tc3JwbSwgTVNSX0lBMzJfUFJFRF9DTUQsIDAsIDEpOwogCQlicmVhazsKKwljYXNlIE1T Ul9BTUQ2NF9WSVJUX1NQRUNfQ1RSTDoKKwkJaWYgKCFtc3ItPmhvc3RfaW5pdGlhdGVkICYmCisJ CSAgICAhZ3Vlc3RfY3B1aWRfaGFzX3ZpcnRfc3NiZCh2Y3B1KSkKKwkJCXJldHVybiAxOworCisJ CWlmIChkYXRhICYgflNQRUNfQ1RSTF9TU0JEKQorCQkJcmV0dXJuIDE7CisKKwkJc3ZtLT52aXJ0 X3NwZWNfY3RybCA9IGRhdGE7CisJCWJyZWFrOwogCWNhc2UgTVNSX1NUQVI6CiAJCXN2bS0+dm1j Yi0+c2F2ZS5zdGFyID0gZGF0YTsKIAkJYnJlYWs7CkBAIC00MTM3LDcgKzQxNTQsNyBAQCBzdGF0 aWMgYm9vbCBzdm1fY3B1X2hhc19hY2NlbGVyYXRlZF90cHIodm9pZCkKIAlyZXR1cm4gZmFsc2U7 CiB9CiAKLXN0YXRpYyBib29sIHN2bV9oYXNfaGlnaF9yZWFsX21vZGVfc2VnYmFzZSh2b2lkKQor c3RhdGljIGJvb2wgc3ZtX2hhc19lbXVsYXRlZF9tc3IoaW50IGluZGV4KQogewogCXJldHVybiB0 cnVlOwogfQpAQCAtNDQyMSw3ICs0NDM4LDcgQEAgc3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyBz dm1feDg2X29wcyA9IHsKIAkuaGFyZHdhcmVfZW5hYmxlID0gc3ZtX2hhcmR3YXJlX2VuYWJsZSwK IAkuaGFyZHdhcmVfZGlzYWJsZSA9IHN2bV9oYXJkd2FyZV9kaXNhYmxlLAogCS5jcHVfaGFzX2Fj Y2VsZXJhdGVkX3RwciA9IHN2bV9jcHVfaGFzX2FjY2VsZXJhdGVkX3RwciwKLQkuY3B1X2hhc19o aWdoX3JlYWxfbW9kZV9zZWdiYXNlID0gc3ZtX2hhc19oaWdoX3JlYWxfbW9kZV9zZWdiYXNlLAor CS5oYXNfZW11bGF0ZWRfbXNyID0gc3ZtX2hhc19lbXVsYXRlZF9tc3IsCiAKIAkudmNwdV9jcmVh dGUgPSBzdm1fY3JlYXRlX3ZjcHUsCiAJLnZjcHVfZnJlZSA9IHN2bV9mcmVlX3ZjcHUsCmRpZmYg LS1naXQgYS9hcmNoL3g4Ni9rdm0vdm14LmMgYi9hcmNoL3g4Ni9rdm0vdm14LmMKaW5kZXggZTk5 OTk0Y2MxMjY2Li5lNGI1ZmQ3MmNhMjQgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS92bXguYwor KysgYi9hcmNoL3g4Ni9rdm0vdm14LmMKQEAgLTg0NTgsOSArODQ1OCwyMSBAQCBzdGF0aWMgdm9p ZCB2bXhfaGFuZGxlX2V4dGVybmFsX2ludHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogCQlsb2Nh bF9pcnFfZW5hYmxlKCk7CiB9CiAKLXN0YXRpYyBib29sIHZteF9oYXNfaGlnaF9yZWFsX21vZGVf c2VnYmFzZSh2b2lkKQorc3RhdGljIGJvb2wgdm14X2hhc19lbXVsYXRlZF9tc3IoaW50IGluZGV4 KQogewotCXJldHVybiBlbmFibGVfdW5yZXN0cmljdGVkX2d1ZXN0IHx8IGVtdWxhdGVfaW52YWxp ZF9ndWVzdF9zdGF0ZTsKKwlzd2l0Y2ggKGluZGV4KSB7CisJY2FzZSBNU1JfSUEzMl9TTUJBU0U6 CisJCS8qCisJCSAqIFdlIGNhbm5vdCBkbyBTTU0gdW5sZXNzIHdlIGNhbiBydW4gdGhlIGd1ZXN0 IGluIGJpZworCQkgKiByZWFsIG1vZGUuCisJCSAqLworCQlyZXR1cm4gZW5hYmxlX3VucmVzdHJp Y3RlZF9ndWVzdCB8fCBlbXVsYXRlX2ludmFsaWRfZ3Vlc3Rfc3RhdGU7CisJY2FzZSBNU1JfQU1E NjRfVklSVF9TUEVDX0NUUkw6CisJCS8qIFRoaXMgaXMgQU1EIG9ubHkuICAqLworCQlyZXR1cm4g ZmFsc2U7CisJZGVmYXVsdDoKKwkJcmV0dXJuIHRydWU7CisJfQogfQogCiBzdGF0aWMgYm9vbCB2 bXhfbXB4X3N1cHBvcnRlZCh2b2lkKQpAQCAtMTA5NTIsNyArMTA5NjQsNyBAQCBzdGF0aWMgc3Ry dWN0IGt2bV94ODZfb3BzIHZteF94ODZfb3BzID0gewogCS5oYXJkd2FyZV9lbmFibGUgPSBoYXJk d2FyZV9lbmFibGUsCiAJLmhhcmR3YXJlX2Rpc2FibGUgPSBoYXJkd2FyZV9kaXNhYmxlLAogCS5j cHVfaGFzX2FjY2VsZXJhdGVkX3RwciA9IHJlcG9ydF9mbGV4cHJpb3JpdHksCi0JLmNwdV9oYXNf aGlnaF9yZWFsX21vZGVfc2VnYmFzZSA9IHZteF9oYXNfaGlnaF9yZWFsX21vZGVfc2VnYmFzZSwK KwkuaGFzX2VtdWxhdGVkX21zciA9IHZteF9oYXNfZW11bGF0ZWRfbXNyLAogCiAJLnZjcHVfY3Jl YXRlID0gdm14X2NyZWF0ZV92Y3B1LAogCS52Y3B1X2ZyZWUgPSB2bXhfZnJlZV92Y3B1LApkaWZm IC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IDEy YTkxZWE4NWQzYS4uYWExYTAyNzdhNjc4IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMK KysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC05ODUsNiArOTg1LDcgQEAgc3RhdGljIHUzMiBl bXVsYXRlZF9tc3JzW10gPSB7CiAJTVNSX0lBMzJfTUNHX1NUQVRVUywKIAlNU1JfSUEzMl9NQ0df Q1RMLAogCU1TUl9JQTMyX1NNQkFTRSwKKwlNU1JfQU1ENjRfVklSVF9TUEVDX0NUUkwsCiB9Owog CiBzdGF0aWMgdW5zaWduZWQgbnVtX2VtdWxhdGVkX21zcnM7CkBAIC0yNTg0LDcgKzI1ODUsNyBA QCBpbnQga3ZtX3ZtX2lvY3RsX2NoZWNrX2V4dGVuc2lvbihzdHJ1Y3Qga3ZtICprdm0sIGxvbmcg ZXh0KQogCQkgKiBmcmluZ2UgY2FzZSB0aGF0IGlzIG5vdCBlbmFibGVkIGV4Y2VwdCB2aWEgc3Bl Y2lmaWMgc2V0dGluZ3MKIAkJICogb2YgdGhlIG1vZHVsZSBwYXJhbWV0ZXJzLgogCQkgKi8KLQkJ ciA9IGt2bV94ODZfb3BzLT5jcHVfaGFzX2hpZ2hfcmVhbF9tb2RlX3NlZ2Jhc2UoKTsKKwkJciA9 IGt2bV94ODZfb3BzLT5oYXNfZW11bGF0ZWRfbXNyKE1TUl9JQTMyX1NNQkFTRSk7CiAJCWJyZWFr OwogCWNhc2UgS1ZNX0NBUF9DT0FMRVNDRURfTU1JTzoKIAkJciA9IEtWTV9DT0FMRVNDRURfTU1J T19QQUdFX09GRlNFVDsKQEAgLTQwNzMsMTQgKzQwNzQsOCBAQCBzdGF0aWMgdm9pZCBrdm1faW5p dF9tc3JfbGlzdCh2b2lkKQogCW51bV9tc3JzX3RvX3NhdmUgPSBqOwogCiAJZm9yIChpID0gaiA9 IDA7IGkgPCBBUlJBWV9TSVpFKGVtdWxhdGVkX21zcnMpOyBpKyspIHsKLQkJc3dpdGNoIChlbXVs YXRlZF9tc3JzW2ldKSB7Ci0JCWNhc2UgTVNSX0lBMzJfU01CQVNFOgotCQkJaWYgKCFrdm1feDg2 X29wcy0+Y3B1X2hhc19oaWdoX3JlYWxfbW9kZV9zZWdiYXNlKCkpCi0JCQkJY29udGludWU7Ci0J CQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOwotCQl9CisJCWlmICgha3ZtX3g4Nl9vcHMt Pmhhc19lbXVsYXRlZF9tc3IoZW11bGF0ZWRfbXNyc1tpXSkpCisJCQljb250aW51ZTsKIAogCQlp ZiAoaiA8IGkpCiAJCQllbXVsYXRlZF9tc3JzW2pdID0gZW11bGF0ZWRfbXNyc1tpXTsKCkZyb20g NDc5MzE0MjNjNmU2ZTBiY2E5YTEzZDMwZGIwYjRlZDk0MzdlMGZhOCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAZmIuY29tPgpEYXRlOiBUaHUs IDEgU2VwIDIwMTYgMTg6Mzc6MjEgLTA3MDAKU3ViamVjdDogW1BBVENIIDIzLzM0XSBicGY6IHN1 cHBvcnQgOC1ieXRlIG1ldGFmaWVsZCBhY2Nlc3MKCmNvbW1pdCBjZWRhZjUyNjkzZjAyMzcyMDEw NTQ4YzYzYjJlNjMyMjhiOTU5MDk5IHVwc3RyZWFtLgoKVGhlIHZlcmlmaWVyIHN1cHBvcnRlZCBv bmx5IDQtYnl0ZSBtZXRhZmllbGRzIGluCnN0cnVjdCBfX3NrX2J1ZmYgYW5kIHN0cnVjdCB4ZHBf bWQuIFRoZSBtZXRhZmllbGRzIGluIHVwY29taW5nCnN0cnVjdCBicGZfcGVyZl9ldmVudCBhcmUg OC1ieXRlIHRvIG1hdGNoIHJlZ2lzdGVyIHdpZHRoIGluIHN0cnVjdCBwdF9yZWdzLgpUZWFjaCB2 ZXJpZmllciB0byByZWNvZ25pemUgOC1ieXRlIG1ldGFmaWVsZCBhY2Nlc3MuClRoZSBwYXRjaCBk b2Vzbid0IGFmZmVjdCBzYWZldHkgb2Ygc29ja2V0cyBhbmQgeGRwIHByb2dyYW1zLgpUaGV5IGNo ZWNrIGZvciA0LWJ5dGUgb25seSBjdHggYWNjZXNzIGJlZm9yZSB0aGVzZSBjb25kaXRpb25zIGFy ZSBoaXQuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3Jn PgpBY2tlZC1ieTogRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KU2lnbmVk LW9mZi1ieTogRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgpTaWduZWQtb2Zm LWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4KLS0tCiBr ZXJuZWwvYnBmL3ZlcmlmaWVyLmMgfCA5ICsrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5z ZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3Zlcmlm aWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMzVkZmE5ZTlkNjllLi5hOTM3NjEx YzI1NzAgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYworKysgYi9rZXJuZWwvYnBm L3ZlcmlmaWVyLmMKQEAgLTE4NDQsNyArMTg0NCw4IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2soc3Ry dWN0IHZlcmlmaWVyX2VudiAqZW52KQogCQkJaWYgKGVycikKIAkJCQlyZXR1cm4gZXJyOwogCi0J CQlpZiAoQlBGX1NJWkUoaW5zbi0+Y29kZSkgIT0gQlBGX1cpIHsKKwkJCWlmIChCUEZfU0laRShp bnNuLT5jb2RlKSAhPSBCUEZfVyAmJgorCQkJICAgIEJQRl9TSVpFKGluc24tPmNvZGUpICE9IEJQ Rl9EVykgewogCQkJCWluc25faWR4Kys7CiAJCQkJY29udGludWU7CiAJCQl9CkBAIC0yMjIwLDkg KzIyMjEsMTEgQEAgc3RhdGljIGludCBjb252ZXJ0X2N0eF9hY2Nlc3NlcyhzdHJ1Y3QgdmVyaWZp ZXJfZW52ICplbnYpCiAJZm9yIChpID0gMDsgaSA8IGluc25fY250OyBpKyssIGluc24rKykgewog CQl1MzIgY250OwogCi0JCWlmIChpbnNuLT5jb2RlID09IChCUEZfTERYIHwgQlBGX01FTSB8IEJQ Rl9XKSkKKwkJaWYgKGluc24tPmNvZGUgPT0gKEJQRl9MRFggfCBCUEZfTUVNIHwgQlBGX1cpIHx8 CisJCSAgICBpbnNuLT5jb2RlID09IChCUEZfTERYIHwgQlBGX01FTSB8IEJQRl9EVykpCiAJCQl0 eXBlID0gQlBGX1JFQUQ7Ci0JCWVsc2UgaWYgKGluc24tPmNvZGUgPT0gKEJQRl9TVFggfCBCUEZf TUVNIHwgQlBGX1cpKQorCQllbHNlIGlmIChpbnNuLT5jb2RlID09IChCUEZfU1RYIHwgQlBGX01F TSB8IEJQRl9XKSB8fAorCQkJIGluc24tPmNvZGUgPT0gKEJQRl9TVFggfCBCUEZfTUVNIHwgQlBG X0RXKSkKIAkJCXR5cGUgPSBCUEZfV1JJVEU7CiAJCWVsc2UKIAkJCWNvbnRpbnVlOwoKRnJvbSAw MjBkOWMwOThlZDFkY2M5NDNjNzFjMmY1ZDM3MDE5ZGI4MjgyNjNmIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51 az4KRGF0ZTogV2VkLCA1IERlYyAyMDE4IDIyOjQ1OjE1ICswMDAwClN1YmplY3Q6IFtQQVRDSCAy NC8zNF0gYnBmL3ZlcmlmaWVyOiBBZGQgc3BpIHZhcmlhYmxlIHRvIGNoZWNrX3N0YWNrX3dyaXRl KCkKCkV4dHJhY3RlZCBmcm9tIGNvbW1pdCBkYzUwM2E4YWQ5ODQgImJwZi92ZXJpZmllcjogdHJh Y2sgbGl2ZW5lc3MgZm9yCnBydW5pbmciLgoKQ2M6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlv Z2VhcmJveC5uZXQ+CkNjOiBBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3JnPgpTaWdu ZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5jby51az4K LS0tCiBrZXJuZWwvYnBmL3ZlcmlmaWVyLmMgfCA4ICsrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYv dmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwppbmRleCBhOTM3NjExYzI1NzAuLjQ3 NTZiODhjODI4ZSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCisrKyBiL2tlcm5l bC9icGYvdmVyaWZpZXIuYwpAQCAtNTcyLDcgKzU3Miw3IEBAIHN0YXRpYyBib29sIGlzX3NwaWxs YWJsZV9yZWd0eXBlKGVudW0gYnBmX3JlZ190eXBlIHR5cGUpCiBzdGF0aWMgaW50IGNoZWNrX3N0 YWNrX3dyaXRlKHN0cnVjdCB2ZXJpZmllcl9zdGF0ZSAqc3RhdGUsIGludCBvZmYsIGludCBzaXpl LAogCQkJICAgICBpbnQgdmFsdWVfcmVnbm8pCiB7Ci0JaW50IGk7CisJaW50IGksIHNwaSA9IChN QVhfQlBGX1NUQUNLICsgb2ZmKSAvIEJQRl9SRUdfU0laRTsKIAkvKiBjYWxsZXIgY2hlY2tlZCB0 aGF0IG9mZiAlIHNpemUgPT0gMCBhbmQgLU1BWF9CUEZfU1RBQ0sgPD0gb2ZmIDwgMCwKIAkgKiBz byBpdCdzIGFsaWduZWQgYWNjZXNzIGFuZCBbb2ZmLCBvZmYgKyBzaXplKSBhcmUgd2l0aGluIHN0 YWNrIGxpbWl0cwogCSAqLwpAQCAtNTg3LDE1ICs1ODcsMTMgQEAgc3RhdGljIGludCBjaGVja19z dGFja193cml0ZShzdHJ1Y3QgdmVyaWZpZXJfc3RhdGUgKnN0YXRlLCBpbnQgb2ZmLCBpbnQgc2l6 ZSwKIAkJfQogCiAJCS8qIHNhdmUgcmVnaXN0ZXIgc3RhdGUgKi8KLQkJc3RhdGUtPnNwaWxsZWRf cmVnc1soTUFYX0JQRl9TVEFDSyArIG9mZikgLyBCUEZfUkVHX1NJWkVdID0KLQkJCXN0YXRlLT5y ZWdzW3ZhbHVlX3JlZ25vXTsKKwkJc3RhdGUtPnNwaWxsZWRfcmVnc1tzcGldID0gc3RhdGUtPnJl Z3NbdmFsdWVfcmVnbm9dOwogCiAJCWZvciAoaSA9IDA7IGkgPCBCUEZfUkVHX1NJWkU7IGkrKykK IAkJCXN0YXRlLT5zdGFja19zbG90X3R5cGVbTUFYX0JQRl9TVEFDSyArIG9mZiArIGldID0gU1RB Q0tfU1BJTEw7CiAJfSBlbHNlIHsKIAkJLyogcmVndWxhciB3cml0ZSBvZiBkYXRhIGludG8gc3Rh Y2sgKi8KLQkJc3RhdGUtPnNwaWxsZWRfcmVnc1soTUFYX0JQRl9TVEFDSyArIG9mZikgLyBCUEZf UkVHX1NJWkVdID0KLQkJCShzdHJ1Y3QgcmVnX3N0YXRlKSB7fTsKKwkJc3RhdGUtPnNwaWxsZWRf cmVnc1tzcGldID0gKHN0cnVjdCByZWdfc3RhdGUpIHt9OwogCiAJCWZvciAoaSA9IDA7IGkgPCBz aXplOyBpKyspCiAJCQlzdGF0ZS0+c3RhY2tfc2xvdF90eXBlW01BWF9CUEZfU1RBQ0sgKyBvZmYg KyBpXSA9IFNUQUNLX01JU0M7CgpGcm9tIDljZTBiOTE4YWIyY2Q1YmFiMTQ3Mzk2ZDg3MGE5NDdi NWI2ZDRiNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJlbiBIdXRjaGluZ3MgPGJl bi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgpEYXRlOiBXZWQsIDUgRGVjIDIwMTggMjI6NDE6 MzYgKzAwMDAKU3ViamVjdDogW1BBVENIIDI1LzM0XSBicGYvdmVyaWZpZXI6IFBhc3MgaW5zdHJ1 Y3Rpb24gaW5kZXggdG8KIGNoZWNrX21lbV9hY2Nlc3MoKSBhbmQgY2hlY2tfeGFkZCgpCgpFeHRy YWN0ZWQgZnJvbSBjb21taXQgMzFmZDg1ODE2ZGJlICJicGY6IHBlcm1pdHMgbmFycm93ZXIgbG9h ZCBmcm9tCmJwZiBwcm9ncmFtIGNvbnRleHQgZmllbGRzIi4KCkNjOiBEYW5pZWwgQm9ya21hbm4g PGRhbmllbEBpb2dlYXJib3gubmV0PgpDYzogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVs Lm9yZz4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhp bmsuY28udWs+Ci0tLQoga2VybmVsL2JwZi92ZXJpZmllci5jIHwgMTYgKysrKysrKystLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5k ZXggNDc1NmI4OGM4MjhlLi4wNjBjYjhjYmE1NmIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVy aWZpZXIuYworKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTY5NCw3ICs2OTQsNyBAQCBz dGF0aWMgYm9vbCBpc19jdHhfcmVnKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwgaW50IHJlZ25v KQogICogaWYgdD09d3JpdGUgJiYgdmFsdWVfcmVnbm89PS0xLCBzb21lIHVua25vd24gdmFsdWUg aXMgc3RvcmVkIGludG8gbWVtb3J5CiAgKiBpZiB0PT1yZWFkICYmIHZhbHVlX3JlZ25vPT0tMSwg ZG9uJ3QgY2FyZSB3aGF0IHdlIHJlYWQgZnJvbSBtZW1vcnkKICAqLwotc3RhdGljIGludCBjaGVj a19tZW1fYWNjZXNzKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwgdTMyIHJlZ25vLCBpbnQgb2Zm LAorc3RhdGljIGludCBjaGVja19tZW1fYWNjZXNzKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwg aW50IGluc25faWR4LCB1MzIgcmVnbm8sIGludCBvZmYsCiAJCQkgICAgaW50IGJwZl9zaXplLCBl bnVtIGJwZl9hY2Nlc3NfdHlwZSB0LAogCQkJICAgIGludCB2YWx1ZV9yZWdubykKIHsKQEAgLTc1 OCw3ICs3NTgsNyBAQCBzdGF0aWMgaW50IGNoZWNrX21lbV9hY2Nlc3Moc3RydWN0IHZlcmlmaWVy X2VudiAqZW52LCB1MzIgcmVnbm8sIGludCBvZmYsCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGlj IGludCBjaGVja194YWRkKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9pbnNu ICppbnNuKQorc3RhdGljIGludCBjaGVja194YWRkKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwg aW50IGluc25faWR4LCBzdHJ1Y3QgYnBmX2luc24gKmluc24pCiB7CiAJc3RydWN0IHJlZ19zdGF0 ZSAqcmVncyA9IGVudi0+Y3VyX3N0YXRlLnJlZ3M7CiAJaW50IGVycjsKQEAgLTc5MSwxMyArNzkx LDEzIEBAIHN0YXRpYyBpbnQgY2hlY2tfeGFkZChzdHJ1Y3QgdmVyaWZpZXJfZW52ICplbnYsIHN0 cnVjdCBicGZfaW5zbiAqaW5zbikKIAl9CiAKIAkvKiBjaGVjayB3aGV0aGVyIGF0b21pY19hZGQg Y2FuIHJlYWQgdGhlIG1lbW9yeSAqLwotCWVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNu LT5kc3RfcmVnLCBpbnNuLT5vZmYsCisJZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25f aWR4LCBpbnNuLT5kc3RfcmVnLCBpbnNuLT5vZmYsCiAJCQkgICAgICAgQlBGX1NJWkUoaW5zbi0+ Y29kZSksIEJQRl9SRUFELCAtMSk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKIAogCS8qIGNo ZWNrIHdoZXRoZXIgYXRvbWljX2FkZCBjYW4gd3JpdGUgaW50byB0aGUgc2FtZSBtZW1vcnkgKi8K LQlyZXR1cm4gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc24tPmRzdF9yZWcsIGluc24tPm9mZiwK KwlyZXR1cm4gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4LCBpbnNuLT5kc3RfcmVnLCBp bnNuLT5vZmYsCiAJCQkJQlBGX1NJWkUoaW5zbi0+Y29kZSksIEJQRl9XUklURSwgLTEpOwogfQog CkBAIC0xODM2LDcgKzE4MzYsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrKHN0cnVjdCB2ZXJpZmll cl9lbnYgKmVudikKIAkJCS8qIGNoZWNrIHRoYXQgbWVtb3J5IChzcmNfcmVnICsgb2ZmKSBpcyBy ZWFkYWJsZSwKIAkJCSAqIHRoZSBzdGF0ZSBvZiBkc3RfcmVnIHdpbGwgYmUgdXBkYXRlZCBieSB0 aGlzIGZ1bmMKIAkJCSAqLwotCQkJZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc24tPnNy Y19yZWcsIGluc24tPm9mZiwKKwkJCWVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNuX2lk eCwgaW5zbi0+c3JjX3JlZywgaW5zbi0+b2ZmLAogCQkJCQkgICAgICAgQlBGX1NJWkUoaW5zbi0+ Y29kZSksIEJQRl9SRUFELAogCQkJCQkgICAgICAgaW5zbi0+ZHN0X3JlZyk7CiAJCQlpZiAoZXJy KQpAQCAtMTg3NSw3ICsxODc1LDcgQEAgc3RhdGljIGludCBkb19jaGVjayhzdHJ1Y3QgdmVyaWZp ZXJfZW52ICplbnYpCiAJCQllbnVtIGJwZl9yZWdfdHlwZSAqcHJldl9kc3RfdHlwZSwgZHN0X3Jl Z190eXBlOwogCiAJCQlpZiAoQlBGX01PREUoaW5zbi0+Y29kZSkgPT0gQlBGX1hBREQpIHsKLQkJ CQllcnIgPSBjaGVja194YWRkKGVudiwgaW5zbik7CisJCQkJZXJyID0gY2hlY2tfeGFkZChlbnYs IGluc25faWR4LCBpbnNuKTsKIAkJCQlpZiAoZXJyKQogCQkJCQlyZXR1cm4gZXJyOwogCQkJCWlu c25faWR4Kys7CkBAIC0xODk0LDcgKzE4OTQsNyBAQCBzdGF0aWMgaW50IGRvX2NoZWNrKHN0cnVj dCB2ZXJpZmllcl9lbnYgKmVudikKIAkJCWRzdF9yZWdfdHlwZSA9IHJlZ3NbaW5zbi0+ZHN0X3Jl Z10udHlwZTsKIAogCQkJLyogY2hlY2sgdGhhdCBtZW1vcnkgKGRzdF9yZWcgKyBvZmYpIGlzIHdy aXRlYWJsZSAqLwotCQkJZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc24tPmRzdF9yZWcs IGluc24tPm9mZiwKKwkJCWVyciA9IGNoZWNrX21lbV9hY2Nlc3MoZW52LCBpbnNuX2lkeCwgaW5z bi0+ZHN0X3JlZywgaW5zbi0+b2ZmLAogCQkJCQkgICAgICAgQlBGX1NJWkUoaW5zbi0+Y29kZSks IEJQRl9XUklURSwKIAkJCQkJICAgICAgIGluc24tPnNyY19yZWcpOwogCQkJaWYgKGVycikKQEAg LTE5MjksNyArMTkyOSw3IEBAIHN0YXRpYyBpbnQgZG9fY2hlY2soc3RydWN0IHZlcmlmaWVyX2Vu diAqZW52KQogCQkJfQogCiAJCQkvKiBjaGVjayB0aGF0IG1lbW9yeSAoZHN0X3JlZyArIG9mZikg aXMgd3JpdGVhYmxlICovCi0JCQllcnIgPSBjaGVja19tZW1fYWNjZXNzKGVudiwgaW5zbi0+ZHN0 X3JlZywgaW5zbi0+b2ZmLAorCQkJZXJyID0gY2hlY2tfbWVtX2FjY2VzcyhlbnYsIGluc25faWR4 LCBpbnNuLT5kc3RfcmVnLCBpbnNuLT5vZmYsCiAJCQkJCSAgICAgICBCUEZfU0laRShpbnNuLT5j b2RlKSwgQlBGX1dSSVRFLAogCQkJCQkgICAgICAgLTEpOwogCQkJaWYgKGVycikKCkZyb20gZjcx N2QxYjE0YjVjMmE0OTI2MzUxYzIxYWYwZGNjYzNmMjEyMmU3NSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9yZz4KRGF0ZTogVHVl LCAxNSBNYXkgMjAxOCAwOToyNzowNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMjYvMzRdIGJwZjog UHJldmVudCBtZW1vcnkgZGlzYW1iaWd1YXRpb24gYXR0YWNrCgpjb21taXQgYWY4NmNhNGUzMDg4 ZmU1ZWFjZjJmN2U1OGMwMWZhNjhjYTA2NzY3MiB1cHN0cmVhbS4KCkRldGVjdCBjb2RlIHBhdHRl cm5zIHdoZXJlIG1hbGljaW91cyAnc3BlY3VsYXRpdmUgc3RvcmUgYnlwYXNzJyBjYW4gYmUgdXNl ZAphbmQgc2FuaXRpemUgc3VjaCBwYXR0ZXJucy4KCiAzOTogKGJmKSByMyA9IHIxMAogNDA6ICgw NykgcjMgKz0gLTIxNgogNDE6ICg3OSkgcjggPSAqKHU2NCAqKShyNyArMCkgICAvLyBzbG93IHJl YWQKIDQyOiAoN2EpICoodTY0ICopKHIxMCAtNzIpID0gMCAgLy8gdmVyaWZpZXIgaW5zZXJ0cyB0 aGlzIGluc3RydWN0aW9uCiA0MzogKDdiKSAqKHU2NCAqKShyOCArMCkgPSByMyAgIC8vIHRoaXMg c3RvcmUgYmVjb21lcyBzbG93IGR1ZSB0byByOAogNDQ6ICg3OSkgcjEgPSAqKHU2NCAqKShyNiAr MCkgICAvLyBjcHUgc3BlY3VsYXRpdmVseSBleGVjdXRlcyB0aGlzIGxvYWQKIDQ1OiAoNzEpIHIy ID0gKih1OCAqKShyMSArMCkgICAgLy8gc3BlY3VsYXRpdmVseSBhcmJpdHJhcnkgJ2xvYWQgYnl0 ZScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgbm93IHNhbml0aXplZAoK QWJvdmUgY29kZSBhZnRlciB4ODYgSklUIGJlY29tZXM6CiBlNTogbW92ICAgICVyYnAsJXJkeAog ZTg6IGFkZCAgICAkMHhmZmZmZmZmZmZmZmZmZjI4LCVyZHgKIGVmOiBtb3YgICAgMHgwKCVyMTMp LCVyMTQKIGYzOiBtb3ZxICAgJDB4MCwtMHg0OCglcmJwKQogZmI6IG1vdiAgICAlcmR4LDB4MCgl cjE0KQogZmY6IG1vdiAgICAweDAoJXJieCksJXJkaQoxMDM6IG1vdnpicSAweDAoJXJkaSksJXJz aQoKU2lnbmVkLW9mZi1ieTogQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9yZz4KU2ln bmVkLW9mZi1ieTogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+Cltid2g6IEJh Y2twb3J0ZWQgdG8gNC40OgogLSBBZGQgdmVyaWZpZXJfZW52IHBhcmFtZXRlciB0byBjaGVja19z dGFja193cml0ZSgpCiAtIExvb2sgdXAgc3RhY2sgc2xvdF90eXBlcyB3aXRoIHN0YXRlLT5zdGFj a19zbG90X3R5cGVbXSByYXRoZXIgdGhhbgogICBzdGF0ZS0+c3RhY2tbXS5zbG90X3R5cGVbXQog LSBEcm9wIGJwZl92ZXJpZmllcl9lbnYgYXJndW1lbnQgdG8gdmVyYm9zZSgpCiAtIEFkanVzdCBm aWxlbmFtZSwgY29udGV4dF0KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNo aW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQoga2VybmVsL2JwZi92ZXJpZmllci5jIHwgNjMgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUg Y2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9r ZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggMDYwY2I4 Y2JhNTZiLi5jNDNjYTk4NTc0NzkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYwor KysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKQEAgLTE5MSw2ICsxOTEsNyBAQCBzdHJ1Y3QgYnBm X2luc25fYXV4X2RhdGEgewogCQllbnVtIGJwZl9yZWdfdHlwZSBwdHJfdHlwZTsJLyogcG9pbnRl ciB0eXBlIGZvciBsb2FkL3N0b3JlIGluc25zICovCiAJCXN0cnVjdCBicGZfbWFwICptYXBfcHRy OwkvKiBwb2ludGVyIGZvciBjYWxsIGluc24gaW50byBsb29rdXBfZWxlbSAqLwogCX07CisJaW50 IHNhbml0aXplX3N0YWNrX29mZjsgLyogc3RhY2sgc2xvdCB0byBiZSBjbGVhcmVkICovCiAJYm9v bCBzZWVuOyAvKiB0aGlzIGluc24gd2FzIHByb2Nlc3NlZCBieSB0aGUgdmVyaWZpZXIgKi8KIH07 CiAKQEAgLTU2OSw4ICs1NzAsOSBAQCBzdGF0aWMgYm9vbCBpc19zcGlsbGFibGVfcmVndHlwZShl bnVtIGJwZl9yZWdfdHlwZSB0eXBlKQogLyogY2hlY2tfc3RhY2tfcmVhZC93cml0ZSBmdW5jdGlv bnMgdHJhY2sgc3BpbGwvZmlsbCBvZiByZWdpc3RlcnMsCiAgKiBzdGFjayBib3VuZGFyeSBhbmQg YWxpZ25tZW50IGFyZSBjaGVja2VkIGluIGNoZWNrX21lbV9hY2Nlc3MoKQogICovCi1zdGF0aWMg aW50IGNoZWNrX3N0YWNrX3dyaXRlKHN0cnVjdCB2ZXJpZmllcl9zdGF0ZSAqc3RhdGUsIGludCBv ZmYsIGludCBzaXplLAotCQkJICAgICBpbnQgdmFsdWVfcmVnbm8pCitzdGF0aWMgaW50IGNoZWNr X3N0YWNrX3dyaXRlKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwKKwkJCSAgICAgc3RydWN0IHZl cmlmaWVyX3N0YXRlICpzdGF0ZSwgaW50IG9mZiwKKwkJCSAgICAgaW50IHNpemUsIGludCB2YWx1 ZV9yZWdubywgaW50IGluc25faWR4KQogewogCWludCBpLCBzcGkgPSAoTUFYX0JQRl9TVEFDSyAr IG9mZikgLyBCUEZfUkVHX1NJWkU7CiAJLyogY2FsbGVyIGNoZWNrZWQgdGhhdCBvZmYgJSBzaXpl ID09IDAgYW5kIC1NQVhfQlBGX1NUQUNLIDw9IG9mZiA8IDAsCkBAIC01ODksOCArNTkxLDMyIEBA IHN0YXRpYyBpbnQgY2hlY2tfc3RhY2tfd3JpdGUoc3RydWN0IHZlcmlmaWVyX3N0YXRlICpzdGF0 ZSwgaW50IG9mZiwgaW50IHNpemUsCiAJCS8qIHNhdmUgcmVnaXN0ZXIgc3RhdGUgKi8KIAkJc3Rh dGUtPnNwaWxsZWRfcmVnc1tzcGldID0gc3RhdGUtPnJlZ3NbdmFsdWVfcmVnbm9dOwogCi0JCWZv ciAoaSA9IDA7IGkgPCBCUEZfUkVHX1NJWkU7IGkrKykKKwkJZm9yIChpID0gMDsgaSA8IEJQRl9S RUdfU0laRTsgaSsrKSB7CisJCQlpZiAoc3RhdGUtPnN0YWNrX3Nsb3RfdHlwZVtNQVhfQlBGX1NU QUNLICsgb2ZmICsgaV0gPT0gU1RBQ0tfTUlTQyAmJgorCQkJICAgICFlbnYtPmFsbG93X3B0cl9s ZWFrcykgeworCQkJCWludCAqcG9mZiA9ICZlbnYtPmluc25fYXV4X2RhdGFbaW5zbl9pZHhdLnNh bml0aXplX3N0YWNrX29mZjsKKwkJCQlpbnQgc29mZiA9ICgtc3BpIC0gMSkgKiBCUEZfUkVHX1NJ WkU7CisKKwkJCQkvKiBkZXRlY3RlZCByZXVzZSBvZiBpbnRlZ2VyIHN0YWNrIHNsb3Qgd2l0aCBh IHBvaW50ZXIKKwkJCQkgKiB3aGljaCBtZWFucyBlaXRoZXIgbGx2bSBpcyByZXVzaW5nIHN0YWNr IHNsb3Qgb3IKKwkJCQkgKiBhbiBhdHRhY2tlciBpcyB0cnlpbmcgdG8gZXhwbG9pdCBDVkUtMjAx OC0zNjM5CisJCQkJICogKHNwZWN1bGF0aXZlIHN0b3JlIGJ5cGFzcykKKwkJCQkgKiBIYXZlIHRv IHNhbml0aXplIHRoYXQgc2xvdCB3aXRoIHByZWVtcHRpdmUKKwkJCQkgKiBzdG9yZSBvZiB6ZXJv LgorCQkJCSAqLworCQkJCWlmICgqcG9mZiAmJiAqcG9mZiAhPSBzb2ZmKSB7CisJCQkJCS8qIGRp c2FsbG93IHByb2dyYW1zIHdoZXJlIHNpbmdsZSBpbnNuIHN0b3JlcworCQkJCQkgKiBpbnRvIHR3 byBkaWZmZXJlbnQgc3RhY2sgc2xvdHMsIHNpbmNlIHZlcmlmaWVyCisJCQkJCSAqIGNhbm5vdCBz YW5pdGl6ZSB0aGVtCisJCQkJCSAqLworCQkJCQl2ZXJib3NlKCJpbnNuICVkIGNhbm5vdCBhY2Nl c3MgdHdvIHN0YWNrIHNsb3RzIGZwJWQgYW5kIGZwJWQiLAorCQkJCQkJaW5zbl9pZHgsICpwb2Zm LCBzb2ZmKTsKKwkJCQkJcmV0dXJuIC1FSU5WQUw7CisJCQkJfQorCQkJCSpwb2ZmID0gc29mZjsK KwkJCX0KIAkJCXN0YXRlLT5zdGFja19zbG90X3R5cGVbTUFYX0JQRl9TVEFDSyArIG9mZiArIGld ID0gU1RBQ0tfU1BJTEw7CisJCX0KIAl9IGVsc2UgewogCQkvKiByZWd1bGFyIHdyaXRlIG9mIGRh dGEgaW50byBzdGFjayAqLwogCQlzdGF0ZS0+c3BpbGxlZF9yZWdzW3NwaV0gPSAoc3RydWN0IHJl Z19zdGF0ZSkge307CkBAIC03NDYsNyArNzcyLDggQEAgc3RhdGljIGludCBjaGVja19tZW1fYWNj ZXNzKHN0cnVjdCB2ZXJpZmllcl9lbnYgKmVudiwgaW50IGluc25faWR4LCB1MzIgcmVnbm8sIGkK IAkJCQl2ZXJib3NlKCJhdHRlbXB0IHRvIGNvcnJ1cHQgc3BpbGxlZCBwb2ludGVyIG9uIHN0YWNr XG4iKTsKIAkJCQlyZXR1cm4gLUVBQ0NFUzsKIAkJCX0KLQkJCWVyciA9IGNoZWNrX3N0YWNrX3dy aXRlKHN0YXRlLCBvZmYsIHNpemUsIHZhbHVlX3JlZ25vKTsKKwkJCWVyciA9IGNoZWNrX3N0YWNr X3dyaXRlKGVudiwgc3RhdGUsIG9mZiwgc2l6ZSwKKwkJCQkJCXZhbHVlX3JlZ25vLCBpbnNuX2lk eCk7CiAJCX0gZWxzZSB7CiAJCQllcnIgPSBjaGVja19zdGFja19yZWFkKHN0YXRlLCBvZmYsIHNp emUsIHZhbHVlX3JlZ25vKTsKIAkJfQpAQCAtMjIyOCw2ICsyMjU1LDM0IEBAIHN0YXRpYyBpbnQg Y29udmVydF9jdHhfYWNjZXNzZXMoc3RydWN0IHZlcmlmaWVyX2VudiAqZW52KQogCQllbHNlCiAJ CQljb250aW51ZTsKIAorCQlpZiAodHlwZSA9PSBCUEZfV1JJVEUgJiYKKwkJICAgIGVudi0+aW5z bl9hdXhfZGF0YVtpICsgZGVsdGFdLnNhbml0aXplX3N0YWNrX29mZikgeworCQkJc3RydWN0IGJw Zl9pbnNuIHBhdGNoW10gPSB7CisJCQkJLyogU2FuaXRpemUgc3VzcGljaW91cyBzdGFjayBzbG90 IHdpdGggemVyby4KKwkJCQkgKiBUaGVyZSBhcmUgbm8gbWVtb3J5IGRlcGVuZGVuY2llcyBmb3Ig dGhpcyBzdG9yZSwKKwkJCQkgKiBzaW5jZSBpdCdzIG9ubHkgdXNpbmcgZnJhbWUgcG9pbnRlciBh bmQgaW1tZWRpYXRlCisJCQkJICogY29uc3RhbnQgb2YgemVybworCQkJCSAqLworCQkJCUJQRl9T VF9NRU0oQlBGX0RXLCBCUEZfUkVHX0ZQLAorCQkJCQkgICBlbnYtPmluc25fYXV4X2RhdGFbaSAr IGRlbHRhXS5zYW5pdGl6ZV9zdGFja19vZmYsCisJCQkJCSAgIDApLAorCQkJCS8qIHRoZSBvcmln aW5hbCBTVFggaW5zdHJ1Y3Rpb24gd2lsbCBpbW1lZGlhdGVseQorCQkJCSAqIG92ZXJ3cml0ZSB0 aGUgc2FtZSBzdGFjayBzbG90IHdpdGggYXBwcm9wcmlhdGUgdmFsdWUKKwkJCQkgKi8KKwkJCQkq aW5zbiwKKwkJCX07CisKKwkJCWNudCA9IEFSUkFZX1NJWkUocGF0Y2gpOworCQkJbmV3X3Byb2cg PSBicGZfcGF0Y2hfaW5zbl9kYXRhKGVudiwgaSArIGRlbHRhLCBwYXRjaCwgY250KTsKKwkJCWlm ICghbmV3X3Byb2cpCisJCQkJcmV0dXJuIC1FTk9NRU07CisKKwkJCWRlbHRhICAgICs9IGNudCAt IDE7CisJCQllbnYtPnByb2cgPSBuZXdfcHJvZzsKKwkJCWluc24gICAgICA9IG5ld19wcm9nLT5p bnNuc2kgKyBpICsgZGVsdGE7CisJCQljb250aW51ZTsKKwkJfQorCiAJCWlmIChlbnYtPmluc25f YXV4X2RhdGFbaSArIGRlbHRhXS5wdHJfdHlwZSAhPSBQVFJfVE9fQ1RYKQogCQkJY29udGludWU7 CiAKCkZyb20gOWMzZDM1NGM0Y2IyMjQzOTk0NmVmOWVkOGZlOWZjMmVmZjZkZjk2NSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTGlvciBEYXZpZCA8cWNhX2xpb3JkQHFjYS5xdWFsY29t bS5jb20+CkRhdGU6IFR1ZSwgMTQgTm92IDIwMTcgMTU6MjU6MzkgKzAyMDAKU3ViamVjdDogW1BB VENIIDI3LzM0XSB3aWw2MjEwOiBtaXNzaW5nIGxlbmd0aCBjaGVjayBpbiB3bWlfc2V0X2llCgpj b21taXQgYjVhOGZmY2FlNDEwM2E5ZDgyM2VhM2FhM2E3NjFmNjU3NzlmYmUyYSB1cHN0cmVhbS4K CkFkZCBhIGxlbmd0aCBjaGVjayBpbiB3bWlfc2V0X2llIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRl Z2VyCm92ZXJmbG93LgoKU2lnbmVkLW9mZi1ieTogTGlvciBEYXZpZCA8cWNhX2xpb3JkQHFjYS5x dWFsY29tbS5jb20+ClNpZ25lZC1vZmYtYnk6IE1heWEgRXJleiA8cWNhX21lcmV6QHFjYS5xdWFs Y29tbS5jb20+ClNpZ25lZC1vZmYtYnk6IEthbGxlIFZhbG8gPGt2YWxvQHFjYS5xdWFsY29tbS5j b20+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5r LmNvLnVrPgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jIHwgOCAr KysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd21pLmMKaW5kZXggNmVkMjZiYWNhMGU1Li43 YWY4NDc5YWNiOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEw L3dtaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dtaS5jCkBAIC0x MDM1LDggKzEwMzUsMTQgQEAgaW50IHdtaV9zZXRfaWUoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2ls LCB1OCB0eXBlLCB1MTYgaWVfbGVuLCBjb25zdCB2b2lkICppZSkKIAl9OwogCWludCByYzsKIAl1 MTYgbGVuID0gc2l6ZW9mKHN0cnVjdCB3bWlfc2V0X2FwcGllX2NtZCkgKyBpZV9sZW47Ci0Jc3Ry dWN0IHdtaV9zZXRfYXBwaWVfY21kICpjbWQgPSBremFsbG9jKGxlbiwgR0ZQX0tFUk5FTCk7CisJ c3RydWN0IHdtaV9zZXRfYXBwaWVfY21kICpjbWQ7CiAKKwlpZiAobGVuIDwgaWVfbGVuKSB7CisJ CXJjID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJY21kID0ga3phbGxvYyhsZW4sIEdG UF9LRVJORUwpOwogCWlmICghY21kKSB7CiAJCXJjID0gLUVOT01FTTsKIAkJZ290byBvdXQ7CgpG cm9tIDc1NmQ5NTU0YWRiNGQyNzMwZTA3NzYyNTZjMzI3YjkxOGEyNDU5YjEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpE YXRlOiBUaHUsIDEgTm92IDIwMTggMTM6MDI6MzggLTA3MDAKU3ViamVjdDogW1BBVENIIDI4LzM0 XSBwb3NpeC10aW1lcnM6IFNhbml0aXplIG92ZXJydW4gaGFuZGxpbmcKCmNvbW1pdCA3OGM5YzRk ZmJmOGMwNDg4Mzk0MTQ0NWExOTUyNzZiYjRiYjkyYzc2IHVwc3RyZWFtLgoKVGhlIHBvc2l4IHRp bWVyIG92ZXJydW4gaGFuZGxpbmcgaXMgYnJva2VuIGJlY2F1c2UgdGhlIGZvcndhcmRpbmcgZnVu Y3Rpb25zCmNhbiByZXR1cm4gYSBodWdlIG51bWJlciBvZiBvdmVycnVucyB3aGljaCBkb2VzIG5v dCBmaXQgaW4gYW4gaW50LiBBcyBhCmNvbnNlcXVlbmNlIHRpbWVyX2dldG92ZXJydW4oMikgYW5k IHNpZ2luZm86OnNpX292ZXJydW4gY2FuIHR1cm4gaW50bwpyYW5kb20gbnVtYmVyIGdlbmVyYXRv cnMuCgpUaGUga19jbG9jazo6dGltZXJfZm9yd2FyZCgpIGNhbGxiYWNrcyByZXR1cm4gYSA2NCBi aXQgdmFsdWUgbm93LiBNYWtlCmtfaXRpbWVyOjp0aV9vdmVycnVuW19sYXN0XSA2NGJpdCBhcyB3 ZWxsLCBzbyB0aGUga2VybmVsIGludGVybmFsCmFjY291bnRpbmcgaXMgY29ycmVjdC4gM1JlbW92 ZSB0aGUgdGVtcG9yYXJ5IChpbnQpIGNhc3RzLgoKQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHdoaWNo IGNsYW1wcyB0aGUgb3ZlcnJ1biB2YWx1ZSByZXR1cm5lZCB0byB1c2VyIHNwYWNlCnZpYSB0aW1l cl9nZXRvdmVycnVuKDIpIG9yIHNpZ2luZm86OnNpX292ZXJydW4gbGltaXRlZCB0byBhIHBvc2l0 aXZlIHZhbHVlCmJldHdlZW4gMCBhbmQgSU5UX01BWC4gSU5UX01BWCBpcyBhbiBpbmRpY2F0b3Ig Zm9yIHVzZXIgc3BhY2UgdGhhdCB0aGUKb3ZlcnJ1biB2YWx1ZSBoYXMgYmVlbiBjbGFtcGVkLgoK UmVwb3J0ZWQtYnk6IFRlYW0gT1dMMzM3IDxpY3l0eHdAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5 OiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQWNrZWQtYnk6IEpvaG4gU3R1 bHR6IDxqb2huLnN0dWx0ekBsaW5hcm8ub3JnPgpDYzogUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBp bmZyYWRlYWQub3JnPgpDYzogTWljaGFlbCBLZXJyaXNrIDxtdGsubWFucGFnZXNAZ21haWwuY29t PgpMaW5rOiBodHRwczovL2xrbWwua2VybmVsLm9yZy9yLzIwMTgwNjI2MTMyNzA1LjAxODYyMzU3 M0BsaW51dHJvbml4LmRlCltmbG9yaWFuOiBNYWtlIHBhdGNoIGFwcGx5IHRvIHY0LjkuMTM1XQpT aWduZWQtb2ZmLWJ5OiBGbG9yaWFuIEZhaW5lbGxpIDxmLmZhaW5lbGxpQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IFRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgpTaWduZWQtb2Zm LWJ5OiBTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBI dXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGluY2x1ZGUvbGlu dXgvcG9zaXgtdGltZXJzLmggICB8ICA0ICsrLS0KIGtlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1l cnMuYyB8ICAyICstCiBrZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYyAgICAgfCAyOSArKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCsp LCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVy cy5oIGIvaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaAppbmRleCA5MDdmM2ZkMTkxYWMuLjNl MjhhMWE4ZDgyMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wb3NpeC10aW1lcnMuaAorKysg Yi9pbmNsdWRlL2xpbnV4L3Bvc2l4LXRpbWVycy5oCkBAIC02NSw4ICs2NSw4IEBAIHN0cnVjdCBr X2l0aW1lciB7CiAJc3BpbmxvY2tfdCBpdF9sb2NrOwogCWNsb2NraWRfdCBpdF9jbG9jazsJCS8q IHdoaWNoIHRpbWVyIHR5cGUgKi8KIAl0aW1lcl90IGl0X2lkOwkJCS8qIHRpbWVyIGlkICovCi0J aW50IGl0X292ZXJydW47CQkJLyogb3ZlcnJ1biBvbiBwZW5kaW5nIHNpZ25hbCAgKi8KLQlpbnQg aXRfb3ZlcnJ1bl9sYXN0OwkJLyogb3ZlcnJ1biBvbiBsYXN0IGRlbGl2ZXJlZCBzaWduYWwgKi8K KwlzNjQgaXRfb3ZlcnJ1bjsJCQkvKiBvdmVycnVuIG9uIHBlbmRpbmcgc2lnbmFsICAqLworCXM2 NCBpdF9vdmVycnVuX2xhc3Q7CQkvKiBvdmVycnVuIG9uIGxhc3QgZGVsaXZlcmVkIHNpZ25hbCAq LwogCWludCBpdF9yZXF1ZXVlX3BlbmRpbmc7CQkvKiB3YWl0aW5nIHRvIHJlcXVldWUgdGhpcyB0 aW1lciAqLwogI2RlZmluZSBSRVFVRVVFX1BFTkRJTkcgMQogCWludCBpdF9zaWdldl9ub3RpZnk7 CQkvKiBub3RpZnkgd29yZCBvZiBzaWdldmVudCBzdHJ1Y3QgKi8KZGlmZiAtLWdpdCBhL2tlcm5l bC90aW1lL3Bvc2l4LWNwdS10aW1lcnMuYyBiL2tlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMu YwppbmRleCA4MDAxNmIzMjlkOTQuLjhmYzY4ZTYwYzc5NSAxMDA2NDQKLS0tIGEva2VybmVsL3Rp bWUvcG9zaXgtY3B1LXRpbWVycy5jCisrKyBiL2tlcm5lbC90aW1lL3Bvc2l4LWNwdS10aW1lcnMu YwpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGJ1bXBfY3B1X3RpbWVyKHN0cnVjdCBr X2l0aW1lciAqdGltZXIsCiAJCQljb250aW51ZTsKIAogCQl0aW1lci0+aXQuY3B1LmV4cGlyZXMg Kz0gaW5jcjsKLQkJdGltZXItPml0X292ZXJydW4gKz0gMSA8PCBpOworCQl0aW1lci0+aXRfb3Zl cnJ1biArPSAxTEwgPDwgaTsKIAkJZGVsdGEgLT0gaW5jcjsKIAl9CiB9CmRpZmYgLS1naXQgYS9r ZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYyBiL2tlcm5lbC90aW1lL3Bvc2l4LXRpbWVycy5jCmlu ZGV4IGZjN2MzN2FkOTBhMC4uMGU2ZWQyZTdkMDY2IDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS9w b3NpeC10aW1lcnMuYworKysgYi9rZXJuZWwvdGltZS9wb3NpeC10aW1lcnMuYwpAQCAtMzU1LDYg KzM1NSwxNyBAQCBzdGF0aWMgX19pbml0IGludCBpbml0X3Bvc2l4X3RpbWVycyh2b2lkKQogCiBf X2luaXRjYWxsKGluaXRfcG9zaXhfdGltZXJzKTsKIAorLyoKKyAqIFRoZSBzaWdpbmZvIHNpX292 ZXJydW4gZmllbGQgYW5kIHRoZSByZXR1cm4gdmFsdWUgb2YgdGltZXJfZ2V0b3ZlcnJ1bigyKQor ICogYXJlIG9mIHR5cGUgaW50LiBDbGFtcCB0aGUgb3ZlcnJ1biB2YWx1ZSB0byBJTlRfTUFYCisg Ki8KK3N0YXRpYyBpbmxpbmUgaW50IHRpbWVyX292ZXJydW5fdG9faW50KHN0cnVjdCBrX2l0aW1l ciAqdGltciwgaW50IGJhc2V2YWwpCit7CisJczY0IHN1bSA9IHRpbXItPml0X292ZXJydW5fbGFz dCArIChzNjQpYmFzZXZhbDsKKworCXJldHVybiBzdW0gPiAoczY0KUlOVF9NQVggPyBJTlRfTUFY IDogKGludClzdW07Cit9CisKIHN0YXRpYyB2b2lkIHNjaGVkdWxlX25leHRfdGltZXIoc3RydWN0 IGtfaXRpbWVyICp0aW1yKQogewogCXN0cnVjdCBocnRpbWVyICp0aW1lciA9ICZ0aW1yLT5pdC5y ZWFsLnRpbWVyOwpAQCAtMzYyLDEyICszNzMsMTEgQEAgc3RhdGljIHZvaWQgc2NoZWR1bGVfbmV4 dF90aW1lcihzdHJ1Y3Qga19pdGltZXIgKnRpbXIpCiAJaWYgKHRpbXItPml0LnJlYWwuaW50ZXJ2 YWwudHY2NCA9PSAwKQogCQlyZXR1cm47CiAKLQl0aW1yLT5pdF9vdmVycnVuICs9ICh1bnNpZ25l ZCBpbnQpIGhydGltZXJfZm9yd2FyZCh0aW1lciwKLQkJCQkJCXRpbWVyLT5iYXNlLT5nZXRfdGlt ZSgpLAotCQkJCQkJdGltci0+aXQucmVhbC5pbnRlcnZhbCk7CisJdGltci0+aXRfb3ZlcnJ1biAr PSBocnRpbWVyX2ZvcndhcmQodGltZXIsIHRpbWVyLT5iYXNlLT5nZXRfdGltZSgpLAorCQkJCQkg ICAgdGltci0+aXQucmVhbC5pbnRlcnZhbCk7CiAKIAl0aW1yLT5pdF9vdmVycnVuX2xhc3QgPSB0 aW1yLT5pdF9vdmVycnVuOwotCXRpbXItPml0X292ZXJydW4gPSAtMTsKKwl0aW1yLT5pdF9vdmVy cnVuID0gLTFMTDsKIAkrK3RpbXItPml0X3JlcXVldWVfcGVuZGluZzsKIAlocnRpbWVyX3Jlc3Rh cnQodGltZXIpOwogfQpAQCAtMzk2LDcgKzQwNiw3IEBAIHZvaWQgZG9fc2NoZWR1bGVfbmV4dF90 aW1lcihzdHJ1Y3Qgc2lnaW5mbyAqaW5mbykKIAkJZWxzZQogCQkJc2NoZWR1bGVfbmV4dF90aW1l cih0aW1yKTsKIAotCQlpbmZvLT5zaV9vdmVycnVuICs9IHRpbXItPml0X292ZXJydW5fbGFzdDsK KwkJaW5mby0+c2lfb3ZlcnJ1biA9IHRpbWVyX292ZXJydW5fdG9faW50KHRpbXIsIGluZm8tPnNp X292ZXJydW4pOwogCX0KIAogCWlmICh0aW1yKQpAQCAtNDkxLDggKzUwMSw3IEBAIHN0YXRpYyBl bnVtIGhydGltZXJfcmVzdGFydCBwb3NpeF90aW1lcl9mbihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIp CiAJCQkJCW5vdyA9IGt0aW1lX2FkZChub3csIGtqKTsKIAkJCX0KICNlbmRpZgotCQkJdGltci0+ aXRfb3ZlcnJ1biArPSAodW5zaWduZWQgaW50KQotCQkJCWhydGltZXJfZm9yd2FyZCh0aW1lciwg bm93LAorCQkJdGltci0+aXRfb3ZlcnJ1biArPSBocnRpbWVyX2ZvcndhcmQodGltZXIsIG5vdywK IAkJCQkJCXRpbXItPml0LnJlYWwuaW50ZXJ2YWwpOwogCQkJcmV0ID0gSFJUSU1FUl9SRVNUQVJU OwogCQkJKyt0aW1yLT5pdF9yZXF1ZXVlX3BlbmRpbmc7CkBAIC02MzMsNyArNjQyLDcgQEAgU1lT Q0FMTF9ERUZJTkUzKHRpbWVyX2NyZWF0ZSwgY29uc3QgY2xvY2tpZF90LCB3aGljaF9jbG9jaywK IAlpdF9pZF9zZXQgPSBJVF9JRF9TRVQ7CiAJbmV3X3RpbWVyLT5pdF9pZCA9ICh0aW1lcl90KSBu ZXdfdGltZXJfaWQ7CiAJbmV3X3RpbWVyLT5pdF9jbG9jayA9IHdoaWNoX2Nsb2NrOwotCW5ld190 aW1lci0+aXRfb3ZlcnJ1biA9IC0xOworCW5ld190aW1lci0+aXRfb3ZlcnJ1biA9IC0xTEw7CiAK IAlpZiAodGltZXJfZXZlbnRfc3BlYykgewogCQlpZiAoY29weV9mcm9tX3VzZXIoJmV2ZW50LCB0 aW1lcl9ldmVudF9zcGVjLCBzaXplb2YgKGV2ZW50KSkpIHsKQEAgLTc2Miw3ICs3NzEsNyBAQCBj b21tb25fdGltZXJfZ2V0KHN0cnVjdCBrX2l0aW1lciAqdGltciwgc3RydWN0IGl0aW1lcnNwZWMg KmN1cl9zZXR0aW5nKQogCSAqLwogCWlmIChpdi50djY0ICYmICh0aW1yLT5pdF9yZXF1ZXVlX3Bl bmRpbmcgJiBSRVFVRVVFX1BFTkRJTkcgfHwKIAkJCXRpbXItPml0X3NpZ2V2X25vdGlmeSA9PSBT SUdFVl9OT05FKSkKLQkJdGltci0+aXRfb3ZlcnJ1biArPSAodW5zaWduZWQgaW50KSBocnRpbWVy X2ZvcndhcmQodGltZXIsIG5vdywgaXYpOworCQl0aW1yLT5pdF9vdmVycnVuICs9IGhydGltZXJf Zm9yd2FyZCh0aW1lciwgbm93LCBpdik7CiAKIAlyZW1haW5pbmcgPSBfX2hydGltZXJfZXhwaXJl c19yZW1haW5pbmdfYWRqdXN0ZWQodGltZXIsIG5vdyk7CiAJLyogUmV0dXJuIDAgb25seSwgd2hl biB0aGUgdGltZXIgaXMgZXhwaXJlZCBhbmQgbm90IHBlbmRpbmcgKi8KQEAgLTgyNCw3ICs4MzMs NyBAQCBTWVNDQUxMX0RFRklORTEodGltZXJfZ2V0b3ZlcnJ1biwgdGltZXJfdCwgdGltZXJfaWQp CiAJaWYgKCF0aW1yKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCW92ZXJydW4gPSB0aW1yLT5pdF9v dmVycnVuX2xhc3Q7CisJb3ZlcnJ1biA9IHRpbWVyX292ZXJydW5fdG9faW50KHRpbXIsIDApOwog CXVubG9ja190aW1lcih0aW1yLCBmbGFncyk7CiAKIAlyZXR1cm4gb3ZlcnJ1bjsKCkZyb20gYWI3 MWIxZTRmNDRhNmQ0MDMyZWE4YjcxZTU5ZTFmM2U4ZWI5NmIyNiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogTWlrZSBLcmF2ZXR6IDxtaWtlLmtyYXZldHpAb3JhY2xlLmNvbT4KRGF0ZTog RnJpLCAzMSBNYXIgMjAxNyAxNToxMjowNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMjkvMzRdIG1t L2h1Z2V0bGIuYzogZG9uJ3QgY2FsbCByZWdpb25fYWJvcnQgaWYgcmVnaW9uX2NoZwogZmFpbHMK CmNvbW1pdCBmZjhjMGM1M2M0NzUzMGZmZWE4MmMyMmEwYTZkZjYzMzJiNTZjOTU3IHVwc3RyZWFt LgoKQ2hhbmdlcyB0byBodWdldGxiZnMgcmVzZXJ2YXRpb24gbWFwcyBpcyBhIHR3byBzdGVwIHBy b2Nlc3MuICBUaGUgZmlyc3QKc3RlcCBpcyBhIGNhbGwgdG8gcmVnaW9uX2NoZyB0byBkZXRlcm1p bmUgd2hhdCBuZWVkcyB0byBiZSBjaGFuZ2VkLCBhbmQKcHJlcGFyZSB0aGF0IGNoYW5nZS4gIFRo aXMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgY2FsbCB0byBjYWxsIHRvCnJlZ2lvbl9hZGQgdG8g Y29tbWl0IHRoZSBjaGFuZ2UsIG9yIHJlZ2lvbl9hYm9ydCB0byBhYm9ydCB0aGUgY2hhbmdlLgoK VGhlIGVycm9yIHBhdGggaW4gaHVnZXRsYl9yZXNlcnZlX3BhZ2VzIGNhbGxlZCByZWdpb25fYWJv cnQgYWZ0ZXIgYQpmYWlsZWQgY2FsbCB0byByZWdpb25fY2hnLiAgQXMgYSByZXN1bHQsIHRoZSBh ZGRzX2luX3Byb2dyZXNzIGNvdW50ZXIgaW4KdGhlIHJlc2VydmF0aW9uIG1hcCBpcyBvZmYgYnkg MS4gIFRoaXMgaXMgY2F1Z2h0IGJ5IGEgVk1fQlVHX09OIGluCnJlc3ZfbWFwX3JlbGVhc2Ugd2hl biB0aGUgcmVzZXJ2YXRpb24gbWFwIGlzIGZyZWVkLgoKc3l6a2FsbGVyIGZ1enplciAod2hlbiB1 c2luZyBhbiBpbmplY3RlZCBrbWFsbG9jIGZhaWx1cmUpIGZvdW5kIHRoaXMKYnVnLCB0aGF0IHJl c3VsdGVkIGluIHRoZSBmb2xsb3dpbmc6Cgoga2VybmVsIEJVRyBhdCBtbS9odWdldGxiLmM6NzQy IQogQ2FsbCBUcmFjZToKICBodWdldGxiZnNfZXZpY3RfaW5vZGUrMHg3Yi8weGEwIGZzL2h1Z2V0 bGJmcy9pbm9kZS5jOjQ5MwogIGV2aWN0KzB4NDgxLzB4OTIwIGZzL2lub2RlLmM6NTUzCiAgaXB1 dF9maW5hbCBmcy9pbm9kZS5jOjE1MTUgW2lubGluZV0KICBpcHV0KzB4NjJiLzB4YTIwIGZzL2lu b2RlLmM6MTU0MgogIGh1Z2V0bGJfZmlsZV9zZXR1cCsweDU5My8weDlmMCBmcy9odWdldGxiZnMv aW5vZGUuYzoxMzA2CiAgbmV3c2VnKzB4NDIyLzB4ZDMwIGlwYy9zaG0uYzo1NzUKICBpcGNnZXRf bmV3IGlwYy91dGlsLmM6Mjg1IFtpbmxpbmVdCiAgaXBjZ2V0KzB4MjFlLzB4NTgwIGlwYy91dGls LmM6NjM5CiAgU1lTQ19zaG1nZXQgaXBjL3NobS5jOjY3MyBbaW5saW5lXQogIFN5U19zaG1nZXQr MHgxNTgvMHgyMzAgaXBjL3NobS5jOjY1NwogIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBhdGgrMHgx Zi8weGMyCiBSSVA6IHJlc3ZfbWFwX3JlbGVhc2UrMHgyNjUvMHgzMzAgbW0vaHVnZXRsYi5jOjc0 MgoKTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzE0OTA4MjE2ODItMjMyMjgtMS1naXQt c2VuZC1lbWFpbC1taWtlLmtyYXZldHpAb3JhY2xlLmNvbQpTaWduZWQtb2ZmLWJ5OiBNaWtlIEty YXZldHogPG1pa2Uua3JhdmV0ekBvcmFjbGUuY29tPgpSZXBvcnRlZC1ieTogRG1pdHJ5IFZ5dWtv diA8ZHZ5dWtvdkBnb29nbGUuY29tPgpBY2tlZC1ieTogSGlsbGYgRGFudG9uIDxoaWxsZi56akBh bGliYWJhLWluYy5jb20+ClNpZ25lZC1vZmYtYnk6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgt Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0Bs aW51eC1mb3VuZGF0aW9uLm9yZz4KU2lnbmVkLW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1 dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0tLQogbW0vaHVnZXRsYi5jIHwgNCArKystCiAxIGZp bGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv bW0vaHVnZXRsYi5jIGIvbW0vaHVnZXRsYi5jCmluZGV4IDZmOTlhMGY5MDZiYi4uNTkxZTI5N2Yw YWNlIDEwMDY0NAotLS0gYS9tbS9odWdldGxiLmMKKysrIGIvbW0vaHVnZXRsYi5jCkBAIC00MTQy LDcgKzQxNDIsOSBAQCBpbnQgaHVnZXRsYl9yZXNlcnZlX3BhZ2VzKHN0cnVjdCBpbm9kZSAqaW5v ZGUsCiAJcmV0dXJuIDA7CiBvdXRfZXJyOgogCWlmICghdm1hIHx8IHZtYS0+dm1fZmxhZ3MgJiBW TV9NQVlTSEFSRSkKLQkJcmVnaW9uX2Fib3J0KHJlc3ZfbWFwLCBmcm9tLCB0byk7CisJCS8qIERv bid0IGNhbGwgcmVnaW9uX2Fib3J0IGlmIHJlZ2lvbl9jaGcgZmFpbGVkICovCisJCWlmIChjaGcg Pj0gMCkKKwkJCXJlZ2lvbl9hYm9ydChyZXN2X21hcCwgZnJvbSwgdG8pOwogCWlmICh2bWEgJiYg aXNfdm1hX3Jlc3Zfc2V0KHZtYSwgSFBBR0VfUkVTVl9PV05FUikpCiAJCWtyZWZfcHV0KCZyZXN2 X21hcC0+cmVmcywgcmVzdl9tYXBfcmVsZWFzZSk7CiAJcmV0dXJuIHJldDsKCkZyb20gNTk5OWEw ODM1MzZlZThhOGE5OTM0ZGRkZTI1ZTZiNzg5ZThkZTU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogTWlrZSBLcmF2ZXR6IDxtaWtlLmtyYXZldHpAb3JhY2xlLmNvbT4KRGF0ZTogVGh1 LCAxMyBBcHIgMjAxNyAxNDo1NjozMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMzAvMzRdIGh1Z2V0 bGJmczogZml4IG9mZnNldCBvdmVyZmxvdyBpbiBodWdldGxiZnMgbW1hcAoKY29tbWl0IDA0NWM3 YTNmNTNkOTQwM2I2MmQzOTZiNmQwNTFjNGJlNTA0NGNkYjQgdXBzdHJlYW0uCgpJZiBtbWFwKCkg bWFwcyBhIGZpbGUsIGl0IGNhbiBiZSBwYXNzZWQgYW4gb2Zmc2V0IGludG8gdGhlIGZpbGUgYXQg d2hpY2gKdGhlIG1hcHBpbmcgaXMgdG8gc3RhcnQuICBPZmZzZXQgY291bGQgYmUgYSBuZWdhdGl2 ZSB2YWx1ZSB3aGVuCnJlcHJlc2VudGVkIGFzIGEgbG9mZl90LiAgVGhlIG9mZnNldCBwbHVzIGxl bmd0aCB3aWxsIGJlIHVzZWQgdG8gdXBkYXRlCnRoZSBmaWxlIHNpemUgKGlfc2l6ZSkgd2hpY2gg aXMgYWxzbyBhIGxvZmZfdC4KClZhbGlkYXRlIHRoZSB2YWx1ZSBvZiBvZmZzZXQgYW5kIG9mZnNl dCArIGxlbmd0aCB0byBtYWtlIHN1cmUgdGhleSBkbwpub3Qgb3ZlcmZsb3cgYW5kIGFwcGVhciBh cyBuZWdhdGl2ZS4KCkZvdW5kIGJ5IHN5emNhbGxlciB3aXRoIGNvbW1pdCBmZjhjMGM1M2M0NzUg KCJtbS9odWdldGxiLmM6IGRvbid0IGNhbGwKcmVnaW9uX2Fib3J0IGlmIHJlZ2lvbl9jaGcgZmFp bHMiKSBhcHBsaWVkLiAgUHJpb3IgdG8gdGhpcyBjb21taXQsIHRoZQpvdmVyZmxvdyB3b3VsZCBz dGlsbCBvY2N1ciBidXQgd2Ugd291bGQgbHVja2lseSByZXR1cm4gRU5PTUVNLgoKVG8gcmVwcm9k dWNlOgoKICAgbW1hcCgwLCAweDIwMDAsIDAsIDB4NDAwMjEsIDB4ZmZmZmZmZmZmZmZmZmZmZlVM TCwgMHg4MDAwMDAwMDAwMDAwMDAwVUxMKTsKClJlc3VsdGVkIGluLAoKICBrZXJuZWwgQlVHIGF0 IG1tL2h1Z2V0bGIuYzo3NDIhCiAgQ2FsbCBUcmFjZToKICAgaHVnZXRsYmZzX2V2aWN0X2lub2Rl KzB4ODAvMHhhMAogICBldmljdCsweDI0YS8weDYyMAogICBpcHV0KzB4NDhmLzB4OGMwCiAgIGRl bnRyeV91bmxpbmtfaW5vZGUrMHgzMWYvMHg0ZDAKICAgX19kZW50cnlfa2lsbCsweDI5Mi8weDVl MAogICBkcHV0KzB4NzMwLzB4ODMwCiAgIF9fZnB1dCsweDQzOC8weDcyMAogICBfX19fZnB1dCsw eDFhLzB4MjAKICAgdGFza193b3JrX3J1bisweGZlLzB4MTgwCiAgIGV4aXRfdG9fdXNlcm1vZGVf bG9vcCsweDEzMy8weDE1MAogICBzeXNjYWxsX3JldHVybl9zbG93cGF0aCsweDE4NC8weDFjMAog ICBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4YWIvMHhhZAoKRml4ZXM6IGZmOGMwYzUzYzQ3 NSAoIm1tL2h1Z2V0bGIuYzogZG9uJ3QgY2FsbCByZWdpb25fYWJvcnQgaWYgcmVnaW9uX2NoZyBm YWlscyIpCkxpbms6IGh0dHA6Ly9sa21sLmtlcm5lbC5vcmcvci8xNDkxOTUxMTE4LTMwNjc4LTEt Z2l0LXNlbmQtZW1haWwtbWlrZS5rcmF2ZXR6QG9yYWNsZS5jb20KUmVwb3J0ZWQtYnk6IFZlZ2Fy ZCBOb3NzdW0gPHZlZ2FyZC5ub3NzdW1Ab3JhY2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogTWlrZSBL cmF2ZXR6IDxtaWtlLmtyYXZldHpAb3JhY2xlLmNvbT4KQWNrZWQtYnk6IEhpbGxmIERhbnRvbiA8 aGlsbGYuempAYWxpYmFiYS1pbmMuY29tPgpDYzogRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29n bGUuY29tPgpDYzogTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+CkNjOiAiS2lyaWxsIEEg LiBTaHV0ZW1vdiIgPGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5jb20+CkNjOiBBbmRyZXkg UnlhYmluaW4gPGFyeWFiaW5pbkB2aXJ0dW96em8uY29tPgpDYzogTmFveWEgSG9yaWd1Y2hpIDxu LWhvcmlndWNoaUBhaC5qcC5uZWMuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxh a3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8 dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGlu Z3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNvLnVrPgotLS0KIGZzL2h1Z2V0bGJmcy9pbm9k ZS5jIHwgMTUgKysrKysrKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygr KSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9odWdldGxiZnMvaW5vZGUuYyBiL2Zz L2h1Z2V0bGJmcy9pbm9kZS5jCmluZGV4IGExN2RhOGI1N2ZjNi4uOTUwOTE3OTdjNGQxIDEwMDY0 NAotLS0gYS9mcy9odWdldGxiZnMvaW5vZGUuYworKysgYi9mcy9odWdldGxiZnMvaW5vZGUuYwpA QCAtMTM2LDE3ICsxMzYsMjYgQEAgc3RhdGljIGludCBodWdldGxiZnNfZmlsZV9tbWFwKHN0cnVj dCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKIAl2bWEtPnZtX2ZsYWdz IHw9IFZNX0hVR0VUTEIgfCBWTV9ET05URVhQQU5EOwogCXZtYS0+dm1fb3BzID0gJmh1Z2V0bGJf dm1fb3BzOwogCisJLyoKKwkgKiBPZmZzZXQgcGFzc2VkIHRvIG1tYXAgKGJlZm9yZSBwYWdlIHNo aWZ0KSBjb3VsZCBoYXZlIGJlZW4KKwkgKiBuZWdhdGl2ZSB3aGVuIHJlcHJlc2VudGVkIGFzIGEg KGwpb2ZmX3QuCisJICovCisJaWYgKCgobG9mZl90KXZtYS0+dm1fcGdvZmYgPDwgUEFHRV9TSElG VCkgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCWlmICh2bWEtPnZtX3Bnb2ZmICYgKH5odWdl X3BhZ2VfbWFzayhoKSA+PiBQQUdFX1NISUZUKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAl2bWFf bGVuID0gKGxvZmZfdCkodm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0KTsKKwlsZW4gPSB2bWFf bGVuICsgKChsb2ZmX3Qpdm1hLT52bV9wZ29mZiA8PCBQQUdFX1NISUZUKTsKKwkvKiBjaGVjayBm b3Igb3ZlcmZsb3cgKi8KKwlpZiAobGVuIDwgdm1hX2xlbikKKwkJcmV0dXJuIC1FSU5WQUw7CiAK IAltdXRleF9sb2NrKCZpbm9kZS0+aV9tdXRleCk7CiAJZmlsZV9hY2Nlc3NlZChmaWxlKTsKIAog CXJldCA9IC1FTk9NRU07Ci0JbGVuID0gdm1hX2xlbiArICgobG9mZl90KXZtYS0+dm1fcGdvZmYg PDwgUEFHRV9TSElGVCk7Ci0KIAlpZiAoaHVnZXRsYl9yZXNlcnZlX3BhZ2VzKGlub2RlLAogCQkJ CXZtYS0+dm1fcGdvZmYgPj4gaHVnZV9wYWdlX29yZGVyKGgpLAogCQkJCWxlbiA+PiBodWdlX3Bh Z2Vfc2hpZnQoaCksIHZtYSwKQEAgLTE1NSw3ICsxNjQsNyBAQCBzdGF0aWMgaW50IGh1Z2V0bGJm c19maWxlX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1h KQogCiAJcmV0ID0gMDsKIAlpZiAodm1hLT52bV9mbGFncyAmIFZNX1dSSVRFICYmIGlub2RlLT5p X3NpemUgPCBsZW4pCi0JCWlub2RlLT5pX3NpemUgPSBsZW47CisJCWlfc2l6ZV93cml0ZShpbm9k ZSwgbGVuKTsKIG91dDoKIAltdXRleF91bmxvY2soJmlub2RlLT5pX211dGV4KTsKIAoKRnJvbSA1 N2YyNGJkMmJiOTRhMDQ3NDMzNzI5YThmZmJmNzE1ZmUxMWM0NmJjIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBNaWtlIEtyYXZldHogPG1pa2Uua3JhdmV0ekBvcmFjbGUuY29tPgpEYXRl OiBUaHUsIDIyIE1hciAyMDE4IDE2OjE3OjEzIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAzMS8zNF0g aHVnZXRsYmZzOiBjaGVjayBmb3IgcGdvZmYgdmFsdWUgb3ZlcmZsb3cKCmNvbW1pdCA2MzQ4OWY4 ZTgyMTE0NDAwMGUwYmRjYTdlNjVhOGQxY2MyM2E3ZWU3IHVwc3RyZWFtLgoKQSB2bWEgd2l0aCB2 bV9wZ29mZiBsYXJnZSBlbm91Z2ggdG8gb3ZlcmZsb3cgYSBsb2ZmX3QgdHlwZSB3aGVuCmNvbnZl cnRlZCB0byBhIGJ5dGUgb2Zmc2V0IGNhbiBiZSBwYXNzZWQgdmlhIHRoZSByZW1hcF9maWxlX3Bh Z2VzIHN5c3RlbQpjYWxsLiAgVGhlIGh1Z2V0bGJmcyBtbWFwIHJvdXRpbmUgdXNlcyB0aGUgYnl0 ZSBvZmZzZXQgdG8gY2FsY3VsYXRlCnJlc2VydmF0aW9ucyBhbmQgZmlsZSBzaXplLgoKQSBzZXF1 ZW5jZSBzdWNoIGFzOgoKICBtbWFwKDB4MjBhMDAwMDAsIDB4NjAwMDAwLCAwLCAweDY2MDMzLCAt MSwgMCk7CiAgcmVtYXBfZmlsZV9wYWdlcygweDIwYTAwMDAwLCAweDYwMDAwMCwgMCwgMHgyMDAw MDAwMDAwMDAwMCwgMCk7Cgp3aWxsIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIHdoZW4gdGFzayBl eGl0cy9maWxlIGNsb3NlZCwKCiAga2VybmVsIEJVRyBhdCBtbS9odWdldGxiLmM6NzQ5IQogIENh bGwgVHJhY2U6CiAgICBodWdldGxiZnNfZXZpY3RfaW5vZGUrMHgyZi8weDQwCiAgICBldmljdCsw eGNiLzB4MTkwCiAgICBfX2RlbnRyeV9raWxsKzB4Y2IvMHgxNTAKICAgIF9fZnB1dCsweDE2NC8w eDFlMAogICAgdGFza193b3JrX3J1bisweDg0LzB4YTAKICAgIGV4aXRfdG9fdXNlcm1vZGVfbG9v cCsweDdkLzB4ODAKICAgIGRvX3N5c2NhbGxfNjQrMHgxOGIvMHgxOTAKICAgIGVudHJ5X1NZU0NB TExfNjRfYWZ0ZXJfaHdmcmFtZSsweDNkLzB4YTIKClRoZSBvdmVyZmxvd2VkIHBnb2ZmIHZhbHVl IGNhdXNlcyBodWdldGxiZnMgdG8gdHJ5IHRvIHNldCB1cCBhIG1hcHBpbmcKd2l0aCBhIG5lZ2F0 aXZlIHJhbmdlIChlbmQgPCBzdGFydCkgdGhhdCBsZWF2ZXMgaW52YWxpZCBzdGF0ZSB3aGljaApj YXVzZXMgdGhlIEJVRy4KClRoZSBwcmV2aW91cyBvdmVyZmxvdyBmaXggdG8gdGhpcyBjb2RlIHdh cyBpbmNvbXBsZXRlIGFuZCBkaWQgbm90IHRha2UKdGhlIHJlbWFwX2ZpbGVfcGFnZXMgc3lzdGVt IGNhbGwgaW50byBhY2NvdW50LgoKW21pa2Uua3JhdmV0ekBvcmFjbGUuY29tOiB2M10KICBMaW5r OiBodHRwOi8vbGttbC5rZXJuZWwub3JnL3IvMjAxODAzMDkwMDI3MjYuNzI0OC0xLW1pa2Uua3Jh dmV0ekBvcmFjbGUuY29tCltha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnOiBpbmNsdWRlIG1tZGVi dWcuaF0KW2FrcG1AbGludXgtZm91bmRhdGlvbi5vcmc6IGZpeCAtdmUgbGVmdCBzaGlmdCBjb3Vu dCBvbiBzaF0KTGluazogaHR0cDovL2xrbWwua2VybmVsLm9yZy9yLzIwMTgwMzA4MjEwNTAyLjE1 OTUyLTEtbWlrZS5rcmF2ZXR6QG9yYWNsZS5jb20KRml4ZXM6IDA0NWM3YTNmNTNkOSAoImh1Z2V0 bGJmczogZml4IG9mZnNldCBvdmVyZmxvdyBpbiBodWdldGxiZnMgbW1hcCIpClNpZ25lZC1vZmYt Ynk6IE1pa2UgS3JhdmV0eiA8bWlrZS5rcmF2ZXR6QG9yYWNsZS5jb20+ClJlcG9ydGVkLWJ5OiBO aWMgTG9zYnkgPGJsdXJiZHVzdEBnbWFpbC5jb20+CkFja2VkLWJ5OiBNaWNoYWwgSG9ja28gPG1o b2Nrb0BzdXNlLmNvbT4KQ2M6ICJLaXJpbGwgQSAuIFNodXRlbW92IiA8a2lyaWxsLnNodXRlbW92 QGxpbnV4LmludGVsLmNvbT4KQ2M6IFlpc2hlbmcgWGllIDx4aWV5aXNoZW5nMUBodWF3ZWkuY29t PgpDYzogPHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmc+ClNpZ25lZC1vZmYtYnk6IEFuZHJldyBNb3J0 b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IExpbnVzIFRvcnZh bGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KW2J3aDogQmFja3BvcnRlZCB0byA0 LjQ6IFVzZSBhIGNvbmRpdGlvbmFsIFdBUk4oKSBpbnN0ZWFkIG9mIFZNX1dBUk4oKV0KU2lnbmVk LW9mZi1ieTogQmVuIEh1dGNoaW5ncyA8YmVuLmh1dGNoaW5nc0Bjb2RldGhpbmsuY28udWs+Ci0t LQogZnMvaHVnZXRsYmZzL2lub2RlLmMgfCAxNyArKysrKysrKysrKysrKy0tLQogbW0vaHVnZXRs Yi5jICAgICAgICAgfCAgOCArKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jIGIv ZnMvaHVnZXRsYmZzL2lub2RlLmMKaW5kZXggOTUwOTE3OTdjNGQxLi5mYThlYjU5YjA2YTggMTAw NjQ0Ci0tLSBhL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jCisrKyBiL2ZzL2h1Z2V0bGJmcy9pbm9kZS5j CkBAIC0xMTgsNiArMTE4LDE2IEBAIHN0YXRpYyB2b2lkIGh1Z2VfcGFnZXZlY19yZWxlYXNlKHN0 cnVjdCBwYWdldmVjICpwdmVjKQogCXBhZ2V2ZWNfcmVpbml0KHB2ZWMpOwogfQogCisvKgorICog TWFzayB1c2VkIHdoZW4gY2hlY2tpbmcgdGhlIHBhZ2Ugb2Zmc2V0IHZhbHVlIHBhc3NlZCBpbiB2 aWEgc3lzdGVtCisgKiBjYWxscy4gIFRoaXMgdmFsdWUgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBs b2ZmX3Qgd2hpY2ggaXMgc2lnbmVkLgorICogVGhlcmVmb3JlLCB3ZSB3YW50IHRvIGNoZWNrIHRo ZSB1cHBlciBQQUdFX1NISUZUICsgMSBiaXRzIG9mIHRoZQorICogdmFsdWUuICBUaGUgZXh0cmEg Yml0ICgtIDEgaW4gdGhlIHNoaWZ0IHZhbHVlKSBpcyB0byB0YWtlIHRoZSBzaWduCisgKiBiaXQg aW50byBhY2NvdW50LgorICovCisjZGVmaW5lIFBHT0ZGX0xPRkZUX01BWCBcCisJKCgoMVVMIDw8 IChQQUdFX1NISUZUICsgMSkpIC0gMSkgPDwgIChCSVRTX1BFUl9MT05HIC0gKFBBR0VfU0hJRlQg KyAxKSkpCisKIHN0YXRpYyBpbnQgaHVnZXRsYmZzX2ZpbGVfbW1hcChzdHJ1Y3QgZmlsZSAqZmls ZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCiB7CiAJc3RydWN0IGlub2RlICppbm9kZSA9 IGZpbGVfaW5vZGUoZmlsZSk7CkBAIC0xMzcsMTIgKzE0NywxMyBAQCBzdGF0aWMgaW50IGh1Z2V0 bGJmc19maWxlX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKQogCXZtYS0+dm1fb3BzID0gJmh1Z2V0bGJfdm1fb3BzOwogCiAJLyoKLQkgKiBPZmZzZXQg cGFzc2VkIHRvIG1tYXAgKGJlZm9yZSBwYWdlIHNoaWZ0KSBjb3VsZCBoYXZlIGJlZW4KLQkgKiBu ZWdhdGl2ZSB3aGVuIHJlcHJlc2VudGVkIGFzIGEgKGwpb2ZmX3QuCisJICogcGFnZSBiYXNlZCBv ZmZzZXQgaW4gdm1fcGdvZmYgY291bGQgYmUgc3VmZmljaWVudGx5IGxhcmdlIHRvCisJICogb3Zl cmZsb3cgYSAobClvZmZfdCB3aGVuIGNvbnZlcnRlZCB0byBieXRlIG9mZnNldC4KIAkgKi8KLQlp ZiAoKChsb2ZmX3Qpdm1hLT52bV9wZ29mZiA8PCBQQUdFX1NISUZUKSA8IDApCisJaWYgKHZtYS0+ dm1fcGdvZmYgJiBQR09GRl9MT0ZGVF9NQVgpCiAJCXJldHVybiAtRUlOVkFMOwogCisJLyogbXVz dCBiZSBodWdlIHBhZ2UgYWxpZ25lZCAqLwogCWlmICh2bWEtPnZtX3Bnb2ZmICYgKH5odWdlX3Bh Z2VfbWFzayhoKSA+PiBQQUdFX1NISUZUKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKZGlmZiAtLWdp dCBhL21tL2h1Z2V0bGIuYyBiL21tL2h1Z2V0bGIuYwppbmRleCA1OTFlMjk3ZjBhY2UuLmYxYTQ1 ZjUwNzdmZSAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYi5jCisrKyBiL21tL2h1Z2V0bGIuYwpAQCAt NDA1Myw2ICs0MDUzLDE0IEBAIGludCBodWdldGxiX3Jlc2VydmVfcGFnZXMoc3RydWN0IGlub2Rl ICppbm9kZSwKIAlzdHJ1Y3QgcmVzdl9tYXAgKnJlc3ZfbWFwOwogCWxvbmcgZ2JsX3Jlc2VydmU7 CiAKKwkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gKi8KKwlpZiAoZnJvbSA+IHRvKSB7Cisj aWZkZWYgQ09ORklHX0RFQlVHX1ZNCisJCVdBUk4oMSwgIiVzIGNhbGxlZCB3aXRoIGEgbmVnYXRp dmUgcmFuZ2VcbiIsIF9fZnVuY19fKTsKKyNlbmRpZgorCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisK IAkvKgogCSAqIE9ubHkgYXBwbHkgaHVnZXBhZ2UgcmVzZXJ2YXRpb24gaWYgYXNrZWQuIEF0IGZh dWx0IHRpbWUsIGFuCiAJICogYXR0ZW1wdCB3aWxsIGJlIG1hZGUgZm9yIFZNX05PUkVTRVJWRSB0 byBhbGxvY2F0ZSBhIHBhZ2UKCkZyb20gMDRjMjgxMWRjOWZlYWIxM2QwMzYwNDA2MmZmMjVmN2My YWRjYjNjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTWlrZSBLcmF2ZXR6IDxtaWtl LmtyYXZldHpAb3JhY2xlLmNvbT4KRGF0ZTogVGh1LCA1IEFwciAyMDE4IDE2OjE4OjIxIC0wNzAw ClN1YmplY3Q6IFtQQVRDSCAzMi8zNF0gaHVnZXRsYmZzOiBmaXggYnVnIGluIHBnb2ZmIG92ZXJm bG93IGNoZWNraW5nCgpjb21taXQgNWRmNjNjMmExNDlhZTY1YTllYzIzOWU3YzJhZjQ0ZWZhNmY3 OWJlYiB1cHN0cmVhbS4KClRoaXMgaXMgYSBmaXggZm9yIGEgcmVncmVzc2lvbiBpbiAzMiBiaXQg a2VybmVscyBjYXVzZWQgYnkgYW4gaW52YWxpZApjaGVjayBmb3IgcGdvZmYgb3ZlcmZsb3cgaW4g aHVnZXRsYmZzIG1tYXAgc2V0dXAuICBUaGUgY2hlY2sgaW5jb3JyZWN0bHkKc3BlY2lmaWVkIHRo YXQgdGhlIHNpemUgb2YgYSBsb2ZmX3Qgd2FzIHRoZSBzYW1lIGFzIHRoZSBzaXplIG9mIGEgbG9u Zy4KVGhlIHJlZ3Jlc3Npb24gcHJldmVudHMgbWFwcGluZyBodWdldGxiZnMgZmlsZXMgYXQgb2Zm c2V0cyBncmVhdGVyIHRoYW4KNEdCIG9uIDMyIGJpdCBrZXJuZWxzLgoKT24gMzIgYml0IGtlcm5l bHMgY29udmVyc2lvbiBmcm9tIGEgcGFnZSBiYXNlZCB1bnNpZ25lZCBsb25nIGNhbiBub3QKb3Zl cmZsb3cgYSBsb2ZmX3QgYnl0ZSBvZmZzZXQuICBUaGVyZWZvcmUsIHNraXAgdGhpcyBjaGVjayBp ZgpzaXplb2YodW5zaWduZWQgbG9uZykgIT0gc2l6ZW9mKGxvZmZfdCkuCgpMaW5rOiBodHRwOi8v bGttbC5rZXJuZWwub3JnL3IvMjAxODAzMzAxNDU0MDIuNTA1My0xLW1pa2Uua3JhdmV0ekBvcmFj bGUuY29tCkZpeGVzOiA2MzQ4OWY4ZTgyMTEgKCJodWdldGxiZnM6IGNoZWNrIGZvciBwZ29mZiB2 YWx1ZSBvdmVyZmxvdyIpClJlcG9ydGVkLWJ5OiBEYW4gUnVlIDxkYW4ucnVlQGxpbmFyby5vcmc+ ClNpZ25lZC1vZmYtYnk6IE1pa2UgS3JhdmV0eiA8bWlrZS5rcmF2ZXR6QG9yYWNsZS5jb20+ClRl c3RlZC1ieTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBsaW5hcm8ub3JnPgpDYzogTWlj aGFsIEhvY2tvIDxtaG9ja29Aa2VybmVsLm9yZz4KQ2M6IFlpc2hlbmcgWGllIDx4aWV5aXNoZW5n MUBodWF3ZWkuY29tPgpDYzogIktpcmlsbCBBIC4gU2h1dGVtb3YiIDxraXJpbGwuc2h1dGVtb3ZA bGludXguaW50ZWwuY29tPgpDYzogTmljIExvc2J5IDxibHVyYmR1c3RAZ21haWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgpTaWdu ZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+ ClNpZ25lZC1vZmYtYnk6IEJlbiBIdXRjaGluZ3MgPGJlbi5odXRjaGluZ3NAY29kZXRoaW5rLmNv LnVrPgotLS0KIGZzL2h1Z2V0bGJmcy9pbm9kZS5jIHwgMTAgKysrKysrKy0tLQogMSBmaWxlIGNo YW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9o dWdldGxiZnMvaW5vZGUuYyBiL2ZzL2h1Z2V0bGJmcy9pbm9kZS5jCmluZGV4IGZhOGViNTliMDZh OC4uYWIzNGY2MTNmYTg1IDEwMDY0NAotLS0gYS9mcy9odWdldGxiZnMvaW5vZGUuYworKysgYi9m cy9odWdldGxiZnMvaW5vZGUuYwpAQCAtMTQ4LDEwICsxNDgsMTQgQEAgc3RhdGljIGludCBodWdl dGxiZnNfZmlsZV9tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKIAogCS8qCiAJICogcGFnZSBiYXNlZCBvZmZzZXQgaW4gdm1fcGdvZmYgY291bGQgYmUg c3VmZmljaWVudGx5IGxhcmdlIHRvCi0JICogb3ZlcmZsb3cgYSAobClvZmZfdCB3aGVuIGNvbnZl cnRlZCB0byBieXRlIG9mZnNldC4KKwkgKiBvdmVyZmxvdyBhIGxvZmZfdCB3aGVuIGNvbnZlcnRl ZCB0byBieXRlIG9mZnNldC4gIFRoaXMgY2FuCisJICogb25seSBoYXBwZW4gb24gYXJjaGl0ZWN0 dXJlcyB3aGVyZSBzaXplb2YobG9mZl90KSA9PQorCSAqIHNpemVvZih1bnNpZ25lZCBsb25nKS4g IFNvLCBvbmx5IGNoZWNrIGluIHRob3NlIGluc3RhbmNlcy4KIAkgKi8KLQlpZiAodm1hLT52bV9w Z29mZiAmIFBHT0ZGX0xPRkZUX01BWCkKLQkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKHNpemVvZih1 bnNpZ25lZCBsb25nKSA9PSBzaXplb2YobG9mZl90KSkgeworCQlpZiAodm1hLT52bV9wZ29mZiAm IFBHT0ZGX0xPRkZUX01BWCkKKwkJCXJldHVybiAtRUlOVkFMOworCX0KIAogCS8qIG11c3QgYmUg aHVnZSBwYWdlIGFsaWduZWQgKi8KIAlpZiAodm1hLT52bV9wZ29mZiAmICh+aHVnZV9wYWdlX21h c2soaCkgPj4gUEFHRV9TSElGVCkpCgpGcm9tIDczNDQ3Y2NiMjYyNDIwMzU2NzM5ZTkwYWM2MjE0 MDY1ZGM4MGJlNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEtlZXMgQ29vayA8a2Vl c2Nvb2tAY2hyb21pdW0ub3JnPgpEYXRlOiBUdWUsIDEwIEp1bCAyMDE4IDE2OjIyOjIyIC0wNzAw ClN1YmplY3Q6IFtQQVRDSCAzMy8zNF0gc3dpb3RsYjogY2xlYW4gdXAgcmVwb3J0aW5nCgpjb21t aXQgN2Q2M2ZiM2FmODdhYTY3YWE3ZDI0NDY2ZTc5MmY5ZDdjNTdkOGU3OSB1cHN0cmVhbS4KClRo aXMgcmVtb3ZlcyBuZWVkbGVzcyB1c2Ugb2YgJyVwJywgYW5kIHJlZmFjdG9ycyB0aGUgcHJpbnRr IGNhbGxzIHRvCnVzZSBwcl8qKCkgaGVscGVycyBpbnN0ZWFkLgoKU2lnbmVkLW9mZi1ieTogS2Vl cyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+ClJldmlld2VkLWJ5OiBLb25yYWQgUnplc3p1 dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+ClNpZ25lZC1vZmYtYnk6IENocmlzdG9w aCBIZWxsd2lnIDxoY2hAbHN0LmRlPgpbYndoOiBCYWNrcG9ydGVkIHRvIDQuNDoKIC0gQWRqdXN0 IGZpbGVuYW1lCiAtIFJlbW92ZSAic3dpb3RsYjogIiBwcmVmaXggZnJvbSBhbiBhZGRpdGlvbmFs IGxvZyBtZXNzYWdlXQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdz QGNvZGV0aGluay5jby51az4KLS0tCiBsaWIvc3dpb3RsYi5jIHwgMjAgKysrKysrKysrLS0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2xpYi9zd2lvdGxiLmMgYi9saWIvc3dpb3RsYi5jCmluZGV4IDc3MTIzNGQw NTBjNy4uNmJjNDUyYjMzYjc2IDEwMDY0NAotLS0gYS9saWIvc3dpb3RsYi5jCisrKyBiL2xpYi9z d2lvdGxiLmMKQEAgLTE3LDYgKzE3LDggQEAKICAqIDA4LzEyLzExIGJlY2t5YglBZGQgaGlnaG1l bSBzdXBwb3J0CiAgKi8KIAorI2RlZmluZSBwcl9mbXQoZm10KSAic29mdHdhcmUgSU8gVExCOiAi IGZtdAorCiAjaW5jbHVkZSA8bGludXgvY2FjaGUuaD4KICNpbmNsdWRlIDxsaW51eC9kbWEtbWFw cGluZy5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CkBAIC0xNDMsMjAgKzE0NSwxNiBAQCBzdGF0 aWMgYm9vbCBub19pb3RsYl9tZW1vcnk7CiB2b2lkIHN3aW90bGJfcHJpbnRfaW5mbyh2b2lkKQog ewogCXVuc2lnbmVkIGxvbmcgYnl0ZXMgPSBpb190bGJfbnNsYWJzIDw8IElPX1RMQl9TSElGVDsK LQl1bnNpZ25lZCBjaGFyICp2c3RhcnQsICp2ZW5kOwogCiAJaWYgKG5vX2lvdGxiX21lbW9yeSkg ewotCQlwcl93YXJuKCJzb2Z0d2FyZSBJTyBUTEI6IE5vIGxvdyBtZW1cbiIpOworCQlwcl93YXJu KCJObyBsb3cgbWVtXG4iKTsKIAkJcmV0dXJuOwogCX0KIAotCXZzdGFydCA9IHBoeXNfdG9fdmly dChpb190bGJfc3RhcnQpOwotCXZlbmQgPSBwaHlzX3RvX3ZpcnQoaW9fdGxiX2VuZCk7Ci0KLQlw cmludGsoS0VSTl9JTkZPICJzb2Z0d2FyZSBJTyBUTEIgW21lbSAlIzAxMGxseC0lIzAxMGxseF0g KCVsdU1CKSBtYXBwZWQgYXQgWyVwLSVwXVxuIiwKKwlwcl9pbmZvKCJtYXBwZWQgW21lbSAlIzAx MGxseC0lIzAxMGxseF0gKCVsdU1CKVxuIiwKIAkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylp b190bGJfc3RhcnQsCiAJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpaW9fdGxiX2VuZCwKLQkg ICAgICAgYnl0ZXMgPj4gMjAsIHZzdGFydCwgdmVuZCAtIDEpOworCSAgICAgICBieXRlcyA+PiAy MCk7CiB9CiAKIGludCBfX2luaXQgc3dpb3RsYl9pbml0X3dpdGhfdGJsKGNoYXIgKnRsYiwgdW5z aWduZWQgbG9uZyBuc2xhYnMsIGludCB2ZXJib3NlKQpAQCAtMjMwLDcgKzIyOCw3IEBAIHN3aW90 bGJfaW5pdChpbnQgdmVyYm9zZSkKIAlpZiAoaW9fdGxiX3N0YXJ0KQogCQltZW1ibG9ja19mcmVl X2Vhcmx5KGlvX3RsYl9zdGFydCwKIAkJCQkgICAgUEFHRV9BTElHTihpb190bGJfbnNsYWJzIDw8 IElPX1RMQl9TSElGVCkpOwotCXByX3dhcm4oIkNhbm5vdCBhbGxvY2F0ZSBTV0lPVExCIGJ1ZmZl ciIpOworCXByX3dhcm4oIkNhbm5vdCBhbGxvY2F0ZSBidWZmZXIiKTsKIAlub19pb3RsYl9tZW1v cnkgPSB0cnVlOwogfQogCkBAIC0yNzIsOCArMjcwLDggQEAgc3dpb3RsYl9sYXRlX2luaXRfd2l0 aF9kZWZhdWx0X3NpemUoc2l6ZV90IGRlZmF1bHRfc2l6ZSkKIAkJcmV0dXJuIC1FTk9NRU07CiAJ fQogCWlmIChvcmRlciAhPSBnZXRfb3JkZXIoYnl0ZXMpKSB7Ci0JCXByaW50ayhLRVJOX1dBUk5J TkcgIldhcm5pbmc6IG9ubHkgYWJsZSB0byBhbGxvY2F0ZSAlbGQgTUIgIgotCQkgICAgICAgImZv ciBzb2Z0d2FyZSBJTyBUTEJcbiIsIChQQUdFX1NJWkUgPDwgb3JkZXIpID4+IDIwKTsKKwkJcHJf d2Fybigib25seSBhYmxlIHRvIGFsbG9jYXRlICVsZCBNQlxuIiwKKwkJCShQQUdFX1NJWkUgPDwg b3JkZXIpID4+IDIwKTsKIAkJaW9fdGxiX25zbGFicyA9IFNMQUJTX1BFUl9QQUdFIDw8IG9yZGVy OwogCX0KIAlyYyA9IHN3aW90bGJfbGF0ZV9pbml0X3dpdGhfdGJsKHZzdGFydCwgaW9fdGxiX25z bGFicyk7CkBAIC02ODAsNyArNjc4LDcgQEAgc3dpb3RsYl9hbGxvY19jb2hlcmVudChzdHJ1Y3Qg ZGV2aWNlICpod2Rldiwgc2l6ZV90IHNpemUsCiAJcmV0dXJuIHJldDsKIAogZXJyX3dhcm46Ci0J cHJfd2Fybigic3dpb3RsYjogY29oZXJlbnQgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIGRldmljZSAl cyBzaXplPSV6dVxuIiwKKwlwcl93YXJuKCJjb2hlcmVudCBhbGxvY2F0aW9uIGZhaWxlZCBmb3Ig ZGV2aWNlICVzIHNpemU9JXp1XG4iLAogCQlkZXZfbmFtZShod2RldiksIHNpemUpOwogCWR1bXBf c3RhY2soKTsKIAoKRnJvbSBmMGJmMzA5YmFkNGE5MGE4ZjUyOTM1NzkyYmM2ZjNlNzY2M2M0YjVk IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIEF4Ym9lIDxheGJvZUBrZXJuZWwu ZGs+CkRhdGU6IE1vbiwgMjEgTWF5IDIwMTggMTI6MjE6MTQgLTA2MDAKU3ViamVjdDogW1BBVENI IDM0LzM0XSBzcjogcGFzcyBkb3duIGNvcnJlY3RseSBzaXplZCBTQ1NJIHNlbnNlIGJ1ZmZlcgoK Y29tbWl0IGY3MDY4MTE0ZDQ1ZWM1NTk5NmI5MDQwZTk4MTExYWZhNTZlMDEwZmUgdXBzdHJlYW0u CgpXZSdyZSBjYXN0aW5nIHRoZSBDRFJPTSBsYXllciByZXF1ZXN0X3NlbnNlIHRvIHRoZSBTQ1NJ IHNlbnNlCmJ1ZmZlciwgYnV0IHRoZSBmb3JtZXIgaXMgNjQgYnl0ZXMgYW5kIHRoZSBsYXR0ZXIg aXMgOTYgYnl0ZXMuCkFzIHdlIGdlbmVyYWxseSBhbGxvY2F0ZSB0aGVzZSBvbiB0aGUgc3RhY2ss IHdlIGVuZCB1cCBibG93aW5nCnVwIHRoZSBzdGFjay4KCkZpeCB0aGlzIGJ5IHdyYXBwaW5nIHRo ZSBzY3NpX2V4ZWN1dGUoKSBjYWxsIHdpdGggYSBwcm9wZXJseQpzaXplZCBzZW5zZSBidWZmZXIs IGFuZCBjb3B5aW5nIGJhY2sgdGhlIGJpdHMgZm9yIHRoZSBDRFJPTQpsYXllci4KClJlcG9ydGVk LWJ5OiBQaW90ciBHYWJyaWVsIEtvc2luc2tpIDxwZy5rb3NpbnNraUBnbWFpbC5jb20+ClJlcG9y dGVkLWJ5OiBEYW5pZWwgU2hhcGlyYSA8ZGFuaWVsQHR3aXN0bG9jay5jb20+ClRlc3RlZC1ieTog S2VlcyBDb29rIDxrZWVzY29va0BjaHJvbWl1bS5vcmc+CkZpeGVzOiA4MmVkNGRiNDk5YjggKCJi bG9jazogc3BsaXQgc2NzaV9yZXF1ZXN0IG91dCBvZiBzdHJ1Y3QgcmVxdWVzdCIpClNpZ25lZC1v ZmYtYnk6IEplbnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5kaz4KW2J3aDogRGVzcGl0ZSB3aGF0IHRo ZSAiRml4ZXMiIGZpZWxkIHNheXMsIGEgYnVmZmVyIG92ZXJydW4gd2FzIGFscmVhZHkKIHBvc3Np YmxlIGlmIHRoZSBzZW5zZSBkYXRhIHdhcyByZWFsbHkgPiA2NCBieXRlcyBsb25nLgogQmFja3Bv cnRlZCB0byA0LjQ6CiAtIFdlIGFsd2F5cyBuZWVkIHRvIGFsbG9jYXRlIGEgc2Vuc2UgYnVmZmVy IGluIG9yZGVyIHRvIGNhbGwKICAgc2NzaV9ub3JtYWxpemVfc2Vuc2UoKQogLSBSZW1vdmUgdGhl IGV4aXN0aW5nIGNvbmRpdGlvbmFsIGhlYXAtYWxsb2NhdGlvbiBvZiB0aGUgc2Vuc2UgYnVmZmVy XQpTaWduZWQtb2ZmLWJ5OiBCZW4gSHV0Y2hpbmdzIDxiZW4uaHV0Y2hpbmdzQGNvZGV0aGluay5j by51az4KLS0tCiBkcml2ZXJzL3Njc2kvc3JfaW9jdGwuYyB8IDIxICsrKysrKystLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3NyX2lvY3RsLmMgYi9kcml2ZXJzL3Njc2kvc3JfaW9j dGwuYwppbmRleCAwMzA1NGMwZTc2ODkuLjNjM2U4MTE1ZjczZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9zY3NpL3NyX2lvY3RsLmMKKysrIGIvZHJpdmVycy9zY3NpL3NyX2lvY3RsLmMKQEAgLTE4Nywz MCArMTg3LDI1IEBAIGludCBzcl9kb19pb2N0bChTY3NpX0NEICpjZCwgc3RydWN0IHBhY2tldF9j b21tYW5kICpjZ2MpCiAJc3RydWN0IHNjc2lfZGV2aWNlICpTRGV2OwogCXN0cnVjdCBzY3NpX3Nl bnNlX2hkciBzc2hkcjsKIAlpbnQgcmVzdWx0LCBlcnIgPSAwLCByZXRyaWVzID0gMDsKLQlzdHJ1 Y3QgcmVxdWVzdF9zZW5zZSAqc2Vuc2UgPSBjZ2MtPnNlbnNlOworCXVuc2lnbmVkIGNoYXIgc2Vu c2VfYnVmZmVyW1NDU0lfU0VOU0VfQlVGRkVSU0laRV07CiAKIAlTRGV2ID0gY2QtPmRldmljZTsK IAotCWlmICghc2Vuc2UpIHsKLQkJc2Vuc2UgPSBrbWFsbG9jKFNDU0lfU0VOU0VfQlVGRkVSU0la RSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICghc2Vuc2UpIHsKLQkJCWVyciA9IC1FTk9NRU07Ci0JCQln b3RvIG91dDsKLQkJfQotCX0KLQogICAgICAgcmV0cnk6CiAJaWYgKCFzY3NpX2Jsb2NrX3doZW5f cHJvY2Vzc2luZ19lcnJvcnMoU0RldikpIHsKIAkJZXJyID0gLUVOT0RFVjsKIAkJZ290byBvdXQ7 CiAJfQogCi0JbWVtc2V0KHNlbnNlLCAwLCBzaXplb2YoKnNlbnNlKSk7CisJbWVtc2V0KHNlbnNl X2J1ZmZlciwgMCwgc2l6ZW9mKHNlbnNlX2J1ZmZlcikpOwogCXJlc3VsdCA9IHNjc2lfZXhlY3V0 ZShTRGV2LCBjZ2MtPmNtZCwgY2djLT5kYXRhX2RpcmVjdGlvbiwKLQkJCSAgICAgIGNnYy0+YnVm ZmVyLCBjZ2MtPmJ1ZmxlbiwgKGNoYXIgKilzZW5zZSwKKwkJCSAgICAgIGNnYy0+YnVmZmVyLCBj Z2MtPmJ1Zmxlbiwgc2Vuc2VfYnVmZmVyLAogCQkJICAgICAgY2djLT50aW1lb3V0LCBJT0NUTF9S RVRSSUVTLCAwLCBOVUxMKTsKIAotCXNjc2lfbm9ybWFsaXplX3NlbnNlKChjaGFyICopc2Vuc2Us IHNpemVvZigqc2Vuc2UpLCAmc3NoZHIpOworCXNjc2lfbm9ybWFsaXplX3NlbnNlKHNlbnNlX2J1 ZmZlciwgc2l6ZW9mKHNlbnNlX2J1ZmZlciksICZzc2hkcik7CisKKwlpZiAoY2djLT5zZW5zZSkK KwkJbWVtY3B5KGNnYy0+c2Vuc2UsIHNlbnNlX2J1ZmZlciwgc2l6ZW9mKCpjZ2MtPnNlbnNlKSk7 CiAKIAkvKiBNaW5pbWFsIGVycm9yIGNoZWNraW5nLiAgSWdub3JlIGNhc2VzIHdlIGtub3cgYWJv dXQsIGFuZCByZXBvcnQgdGhlIHJlc3QuICovCiAJaWYgKGRyaXZlcl9ieXRlKHJlc3VsdCkgIT0g MCkgewpAQCAtMjYxLDggKzI1Niw2IEBAIGludCBzcl9kb19pb2N0bChTY3NpX0NEICpjZCwgc3Ry dWN0IHBhY2tldF9jb21tYW5kICpjZ2MpCiAKIAkvKiBXYWtlIHVwIGEgcHJvY2VzcyB3YWl0aW5n IGZvciBkZXZpY2UgKi8KICAgICAgIG91dDoKLQlpZiAoIWNnYy0+c2Vuc2UpCi0JCWtmcmVlKHNl bnNlKTsKIAljZ2MtPnN0YXQgPSBlcnI7CiAJcmV0dXJuIGVycjsKIH0K --=-bCKOGlwihLOZOGAfxHS8--