From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Michael Catanzaro To: git-commits@fedoraproject.org Subject: [rpms/glib2] cve-2026-58016-f44: Enable GnuTLS-based GHmac in Fedora and reenable glib2-static in RHEL Date: Tue, 11 Aug 2026 10:37:24 GMT Message-ID: <178644464440.1.11313599040704646782.rpms-glib2-1f79f0520372@fedoraproject.org> List-ID: X-Git-Repo: rpms/glib2 X-Git-Branch: cve-2026-58016-f44 X-Git-Rev: 1f79f0520372d7802c298defcde49252386ce119 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2xpYjIKICAgICAgICAgICAgQnJhbmNoIDogY3ZlLTIwMjYtNTgwMTYtZjQ0 CiAgICAgICAgICAgIENvbW1pdCA6IDFmNzlmMDUyMDM3MmQ3ODAyYzI5OGRlZmNkZTQ5MjUyMzg2 Y2UxMTkKICAgICAgICAgICAgQXV0aG9yIDogTWljaGFlbCBDYXRhbnphcm8gPG1jYXRhbnphcm9A cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyMS0wNi0xN1QxMDo0NTozMC0wNTow MAogICAgICAgICAgICBTdGF0cyAgOiArMTMyNS8tOTEyIGluIDcgZmlsZShzKQogICAgICAgICAg ICBVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dsaWIyL2MvMWY3 OWYwNTIwMzcyZDc4MDJjMjk4ZGVmY2RlNDkyNTIzODZjZTExOT9icmFuY2g9Y3ZlLTIwMjYtNTgw MTYtZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIEVuYWJsZSBHbnVUTFMtYmFzZWQg R0htYWMgaW4gRmVkb3JhIGFuZCByZWVuYWJsZSBnbGliMi1zdGF0aWMgaW4gUkhFTApDb25zb2xp ZGF0ZSBHRGVza3RvcEFwcEluZm8gY2hhbmdlcyBpbnRvIGdkZXNrdG9wYXBwaW5mby5wYXRjaApE aXNhYmxlIGNoZWNrLXJwYXRoIHNpbmNlIGl0IHNlZW1zIHRvIGJlIGJyb2tlbgoKLS0tCmRpZmYg LS1naXQgYS8wMDAxLXRlc3RzLUl0ZXJhdGUtbWFpbmxvb3AtZHVyaW5nLWxhdW5jaC10ZXN0LnBh dGNoIGIvMDAwMS10ZXN0cy1JdGVyYXRlLW1haW5sb29wLWR1cmluZy1sYXVuY2gtdGVzdC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI5MDQzMS4uMDAwMDAwMAotLS0gYS8w MDAxLXRlc3RzLUl0ZXJhdGUtbWFpbmxvb3AtZHVyaW5nLWxhdW5jaC10ZXN0LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA1ZTQyMzg0Y2M0NDk5MjkzMjU5YThhMzdh NzM3MDE0YTU2ZGUzNGRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVuamFtaW4g QmVyZyA8YmJlcmdAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgMjMgT2N0IDIwMjAgMTg6MjA6MDEg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIHRlc3RzOiBJdGVyYXRlIG1haW5sb29wIGR1cmlu ZyBsYXVuY2ggdGVzdAotCi1XaGVuIGxhdW5jaGluZyBhbiBhcHBsaWNhdGlvbiwgd2Ugd2FpdCBm b3IgdGhlIERCdXMgcmVzcG9uc2UgZnJvbQotc3lzdGVtZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBi aW5hcnkuIEJlY2F1c2Ugb2YgdGhpcyB0aGUgbWFpbiBsb29wIG5lZWRzCi10byBiZSBpdGVyYXRl ZCBmb3Igc3Bhd25pbmcgdG8gY29tcGxldGVkIGFuZCB0aGUgZmlsZSB0byBiZSBjcmVhdGVkLgot Ci1XaXRob3V0IHRoaXMgdGhlIHRlc3Qgd2lsbCB0aW1lIG91dCBpZiBHTGliIHdhcyBhYmxlIHRv IGNvbm5lY3QgdG8gdGhlCi1zZXNzaW9uIGJ1cy4KLS0tLQotIGdpby90ZXN0cy9kZXNrdG9wLWFw cC1pbmZvLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAt LWdpdCBhL2dpby90ZXN0cy9kZXNrdG9wLWFwcC1pbmZvLmMgYi9naW8vdGVzdHMvZGVza3RvcC1h cHAtaW5mby5jCi1pbmRleCBmY2MyOWM1NzkuLjc0MzIzMGNiYiAxMDA2NDQKLS0tLSBhL2dpby90 ZXN0cy9kZXNrdG9wLWFwcC1pbmZvLmMKLSsrKyBiL2dpby90ZXN0cy9kZXNrdG9wLWFwcC1pbmZv LmMKLUBAIC0zMzQsNiArMzM0LDcgQEAgd2FpdF9mb3JfZmlsZSAoY29uc3QgZ2NoYXIgKndhbnRf dGhpcywKLSAgICAqLwotICAgd2hpbGUgKGFjY2VzcyAod2FudF90aGlzLCBGX09LKSAhPSAwKQot ICAgICB7Ci0rICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uIChOVUxMLCBGQUxTRSk7Ci0g ICAgICAgZ191c2xlZXAgKDEwMDAwMCk7IC8qIDEwMG1zICovCi0gICAgICAgZ19hc3NlcnRfY21w dWludCAocmV0cmllcywgPiwgMCk7Ci0gICAgICAgcmV0cmllcy0tOwotLS0gCi0yLjMxLjEKLQoK ZGlmZiAtLWdpdCBhLzAwMDItZ2Rlc2t0b3BhcHBpbmZvLU1vdmUtbGF1bmNoZWQtYXBwbGljYXRp b25zLWludG8tdHJhbi5wYXRjaCBiLzAwMDItZ2Rlc2t0b3BhcHBpbmZvLU1vdmUtbGF1bmNoZWQt YXBwbGljYXRpb25zLWludG8tdHJhbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggYTRlNjI5MC4uMDAwMDAwMAotLS0gYS8wMDAyLWdkZXNrdG9wYXBwaW5mby1Nb3ZlLWxhdW5j aGVkLWFwcGxpY2F0aW9ucy1pbnRvLXRyYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzODgg KzAsMCBAQAotRnJvbSBiYTNiODVhOGZlYTAxNTFlNzRkZTUwZTg0MWE3ZjE2ZjliMDc3YTU2IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQmVuamFtaW4gQmVyZyA8YmJlcmdAcmVkaGF0 LmNvbT4KLURhdGU6IE1vbiwgMjcgSnVsIDIwMjAgMjI6MjI6MzIgKzAyMDAKLVN1YmplY3Q6IFtQ QVRDSCAyLzRdIGdkZXNrdG9wYXBwaW5mbzogTW92ZSBsYXVuY2hlZCBhcHBsaWNhdGlvbnMgaW50 bwotIHRyYW5zaWVudCBzY29wZQotCi1UcnkgdG8gbW92ZSB0aGUgc3Bhd25lZCBleGVjdXRhYmxl IGludG8gaXRzIG93biBzeXN0ZW1kIHNjb3BlLiBUbyBhdm9pZAotcG9zc2libGUgcmFjZSBjb25k aXRpb25zIGFuZCBlbnN1cmUgcHJvcGVyIGFjY291bnRpbmcsIHdlIGRlbGF5IHRoZQotZXhlY3V0 aW9uIG9mIHRoZSByZWFsIGNvbW1hbmQgdW50aWwgYWZ0ZXIgdGhlIERCdXMgY2FsbCB0byBzeXN0 ZW1kIGhhcwotZmluaXNoZWQuCi0KLUZyb20gdGhlIHR3byBhcHByb2FjaGVzIHdlIGNhbiB0YWtl IGhlcmUsIHRoaXMgaXMgYmV0dGVyIGluIHRoZSBzZW5zZQotdGhhdCB3ZSBoYXZlIGEgY2hpbGQg dGhhdCB0aGUgQVBJIGNvbnN1bWVyIGNhbiB3YXRjaC4gQVBJIGNvbnN1bWVycwotc2hvdWxkIG5v dCBiZSBkb2luZyB0aGlzLCBob3dldmVyLCBnbm9tZS1zZXNzaW9uIG5lZWRzIHRvIHdhdGNoIGNo aWxkcmVuCi1kdXJpbmcgc2Vzc2lvbiBzdGFydHVwLiBVbnRpbCBnbm9tZS1zZXNzaW9uIGlzIGZp eGVkLCB3ZSB3aWxsIG5vdCBiZQotYWJsZSB0byBjaGFuZ2UgdGhpcy4KLQotVGhlIGFsdGVybmF0 aXZlIGFwcHJvYWNoIGlzIHRvIGRlbGVnYXRlIGxhdW5jaGluZyBpdHNlbGYgdG8gc3lzdGVtZCBi eQotY3JlYXRpbmcgYSB0cmFuc2llbnQgLnNlcnZpY2UgdW5pdCBpbnN0ZWFkLiBUaGlzIGlzIGNs ZWFuZXIgYW5kIGhhcyBlLmcuCi10aGUgYWR2YW50YWdlIHRoYXQgc3lzdGVtZCB3aWxsIHRha2Ug Y2FyZSBvZiBsb2cgcmVkaXJlY3Rpb24gYW5kIHNpbWlsYXIKLWlzc3Vlcy4KLQotTm90ZSB0aGF0 IHRoaXMgcGF0Y2ggaXMgaW5jb21wbGV0ZS4gVGhlIERCdXMgY2FsbCBpcyBkb25lIGluIGEgImZp cmUgYW5kCi1mb3JnZXQiIG1hbm5lciwgd2hpY2ggaXMgZmluZSBpbiBtb3N0IGNhc2VzLCBidXQg bWVhbnMgdGhhdCAiZ2lvIG9wZW4iCi13aWxsIGZhaWwgdG8gbW92ZSB0aGUgY2hpbGQgaW50byB0 aGUgbmV3IHNjb3BlIGFzIGdpbyBxdWl0cyBiZWZvcmUgdGhlCi1EQnVzIGNhbGwgZmluaXNoZXMu Ci0tLS0KLSBnaW8vZ2Rlc2t0b3BhcHBpbmZvLmMgfCAyNjQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIyNyBpbnNlcnRpb25zKCsp LCAzNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dpby9nZGVza3RvcGFwcGluZm8uYyBi L2dpby9nZGVza3RvcGFwcGluZm8uYwotaW5kZXggMWE0Yjk3OTE4Li5hZmRjZDQyYWMgMTAwNjQ0 Ci0tLS0gYS9naW8vZ2Rlc2t0b3BhcHBpbmZvLmMKLSsrKyBiL2dpby9nZGVza3RvcGFwcGluZm8u YwotQEAgLTI3MzAsNiArMjczMCwxNDggQEAgbm90aWZ5X2Rlc2t0b3BfbGF1bmNoIChHREJ1c0Nv bm5lY3Rpb24gICpzZXNzaW9uX2J1cywKLSAKLSAjZGVmaW5lIF9TUEFXTl9GTEFHU19ERUZBVUxU IChHX1NQQVdOX1NFQVJDSF9QQVRIKQotIAotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRl ZmluZWQoX19CSU9OSUNfXykKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBpbnQgcGlwZVsyXTsKLSsg IEdTcGF3bkNoaWxkU2V0dXBGdW5jIHVzZXJfc2V0dXA7Ci0rICBncG9pbnRlciAgICAgICAgICAg ICB1c2VyX3NldHVwX2RhdGE7Ci0rfSBTcGF3bldyYXBwZXJEYXRhOwotKwotK3N0YXRpYyB2b2lk Ci0rbGF1bmNoX3VyaXNfd2l0aF9zcGF3bl9kZWxheV9leGVjIChncG9pbnRlciB1c2VyX2RhdGEp Ci0rewotKyAgU3Bhd25XcmFwcGVyRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsKLSsgIC8qIENs ZWFyIENMT0VYRUMgYWdhaW4sIGFzIHRoYXQgd2FzIHNldCBkdWUgdG8KLSsgICAqIEdfU1BBV05f TEVBVkVfREVTQ1JJUFRPUlNfT1BFTiBub3QgYmVpbmcgc2V0LiAqLwotKyAgZmNudGwgKGRhdGEt PnBpcGVbMF0sIEZfU0VURkQsIDApOwotKwotKyAgLyogTm8gbmVlZCB0byBjbG9zZSByZWFkIHNp ZGUsIHdlIGhhdmUgQ0xPRVhFQyBzZXQuICovCi0rCi0rICBpZiAoZGF0YS0+dXNlcl9zZXR1cCkK LSsgICAgZGF0YS0+dXNlcl9zZXR1cCAoZGF0YS0+dXNlcl9zZXR1cF9kYXRhKTsKLSt9Ci0rCi0r c3RhdGljIGdjaGFyICoKLStzeXN0ZW1kX3VuaXRfbmFtZV9lc2NhcGUgKGNvbnN0IGdjaGFyICpp bikKLSt7Ci0rICAvKiBBZGFwdGVkIGZyb20gc3lzdGVtZCBzb3VyY2UgKi8KLSsgIEdTdHJpbmcg KiBjb25zdCBzdHIgPSBnX3N0cmluZ19zaXplZF9uZXcgKHN0cmxlbiAoaW4pKTsKLSsKLSsgIGZv ciAoOyAqaW47IGluKyspCi0rICAgIHsKLSsgICAgICBpZiAoZ19hc2NpaV9pc2FsbnVtICgqaW4p IHx8ICppbiA9PSAnOicgfHwgKmluID09ICdfJyB8fCAqaW4gPT0gJy4nKQotKyAgICAgICAgZ19z dHJpbmdfYXBwZW5kX2MgKHN0ciwgKmluKTsKLSsgICAgICBlbHNlCi0rICAgICAgICBnX3N0cmlu Z19hcHBlbmRfcHJpbnRmIChzdHIsICJcXHglMDJ4IiwgKmluKTsKLSsgICAgfQotKyAgcmV0dXJu IGdfc3RyaW5nX2ZyZWUgKHN0ciwgRkFMU0UpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2NyZWF0 ZV9zeXN0ZW1kX3Njb3BlIChHREJ1c0Nvbm5lY3Rpb24gICAgKnNlc3Npb25fYnVzLAotKyAgICAg ICAgICAgICAgICAgICAgICBHRGVza3RvcEFwcEluZm8gICAgKmluZm8sCi0rICAgICAgICAgICAg ICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgcGlkLAotKyAgICAgICAgICAgICAgICAgICAg ICBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLAotKyAgICAgICAgICAgICAgICAgICAgICBn cG9pbnRlciAgICAgICAgICAgIHVzZXJfZGF0YSkKLSt7Ci0rICBHVmFyaWFudEJ1aWxkZXIgYnVp bGRlcjsKLSsgIGNvbnN0IGNoYXIgKmFwcF9uYW1lID0gZ19nZXRfYXBwbGljYXRpb25fbmFtZSAo KTsKLSsgIGNoYXIgKmFwcGlkID0gTlVMTDsKLSsgIGNoYXIgKmFwcGlkX2VzY2FwZWQgPSBOVUxM OwotKyAgY2hhciAqc25pZF9lc2NhcGVkID0gTlVMTDsKLSsgIGNoYXIgKnVuaXRfbmFtZSA9IE5V TEw7Ci0rCi0rICAvKiBJbiB0aGlzIG9yZGVyOgotKyAgICogIDEuIEFjdHVhbCBhcHBsaWNhdGlv biBJRCBmcm9tIGZpbGUKLSsgICAqICAyLiBTdHJpcHBpbmcgdGhlIC5kZXNrdG9wIGZyb20gdGhl IGRlc2t0b3AgSUQKLSsgICAqICAzLiBGYWxsIGJhY2sgdG8gdXNpbmcgdGhlIGJpbmFyeSBuYW1l Ci0rICAgKi8KLSsgIGlmIChpbmZvLT5hcHBfaWQpCi0rICAgIGFwcGlkID0gZ19zdHJkdXAgKGlu Zm8tPmFwcF9pZCk7Ci0rICBlbHNlIGlmIChpbmZvLT5kZXNrdG9wX2lkICYmIGdfc3RyX2hhc19z dWZmaXggKGluZm8tPmRlc2t0b3BfaWQsICIuZGVza3RvcCIpKQotKyAgICBhcHBpZCA9IGdfc3Ry bmR1cCAoaW5mby0+ZGVza3RvcF9pZCwgc3RybGVuIChpbmZvLT5kZXNrdG9wX2lkKSAtIDgpOwot KyAgZWxzZQotKyAgICBhcHBpZCA9IGdfcGF0aF9nZXRfYmFzZW5hbWUgKGluZm8tPmJpbmFyeSk7 Ci0rCi0rICBhcHBpZF9lc2NhcGVkID0gc3lzdGVtZF91bml0X25hbWVfZXNjYXBlIChhcHBpZCk7 Ci0rCi0rICAvKiBHZW5lcmF0ZSBhIG5hbWUgY29uZm9ybWluZyB0bwotKyAgICogICBodHRwczov L3N5c3RlbWQuaW8vREVTS1RPUF9FTlZJUk9OTUVOVFMvCi0rICAgKiBXZSB1c2UgdGhlIFBJRCB0 byBkaXNhbWJpZ3VhdGUsIGFzIHRoYXQgc2hvdWxkIGJlIHVuaXF1ZSBlbm91Z2guCi0rICAgKi8K LSsgIHVuaXRfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImFwcC1nbGliLSVzLSVkLnNjb3BlIiwg YXBwaWRfZXNjYXBlZCwgcGlkKTsKLSsKLSsgIGdfdmFyaWFudF9idWlsZGVyX2luaXQgKCZidWls ZGVyLCBHX1ZBUklBTlRfVFlQRSAoIihzc2Eoc3YpYShzYShzdikpKSIpKTsKLSsgIGdfdmFyaWFu dF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsICJzIiwgdW5pdF9uYW1lKTsKLSsgIGdfdmFyaWFudF9i dWlsZGVyX2FkZCAoJmJ1aWxkZXIsICJzIiwgImZhaWwiKTsKLSsKLSsgIGdfdmFyaWFudF9idWls ZGVyX29wZW4gKCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRSAoImEoc3YpIikpOwotKwotKyAgLyog QWRkIGEgZ2VuZXJpYyBodW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiwgY2FuIGJlIGNoYW5nZWQg YXQgd2lsbC4gKi8KLSsgIGlmIChhcHBfbmFtZSkKLSsgICAgZ192YXJpYW50X2J1aWxkZXJfYWRk ICgmYnVpbGRlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHN2KSIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIkRlc2NyaXB0aW9uIiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICBnX3ZhcmlhbnRfbmV3X3Rha2Vfc3RyaW5nIChnX3N0cmR1cF9wcmludGYgKCJBcHBs aWNhdGlvbiBsYXVuY2hlZCBieSAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBfbmFtZSkpKTsKLSsg IGdfdmFyaWFudF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICIoc3YpIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIlBJRHMiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ld19maXhlZF9hcnJheSAoR19WQVJJQU5UX1RZ UEVfVUlOVDMyLCAmcGlkLCAxLCA0KSk7Ci0rICAvKiBEZWZhdWx0IHRvIGxldCBzeXN0ZW1kIGdh cmJhZ2UgY29sbGVjdCBmYWlsZWQgYXBwbGljYXRpb25zIHdlIGxhdW5jaGVkLiAqLwotKyAgZ192 YXJpYW50X2J1aWxkZXJfYWRkICgmYnVpbGRlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg IihzdikiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29sbGVjdE1vZGUiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ld19zdHJpbmcgKCJpbmFjdGl2ZS1vci1m YWlsZWQiKSk7Ci0rCi0rICBnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAoJmJ1aWxkZXIpOwotKwot KyAgZ192YXJpYW50X2J1aWxkZXJfb3BlbiAoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFICgiYShz YShzdikpIikpOwotKyAgZ192YXJpYW50X2J1aWxkZXJfY2xvc2UgKCZidWlsZGVyKTsKLSsKLSsg IGdfZGJ1c19jb25uZWN0aW9uX2NhbGwgKHNlc3Npb25fYnVzLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMSIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9zeXN0ZW1kMSIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLk1hbmFnZXIiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIlN0YXJ0VHJhbnNpZW50VW5pdCIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQgKCZidWlsZGVyKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIEdfVkFSSUFOVF9UWVBFICgiKG8pIiksCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgMTAwMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaywKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIHVzZXJfZGF0YSk7Ci0rCi0rICBnX2ZyZWUgKGFwcGlkKTsKLSsgIGdfZnJlZSAoYXBwaWRf ZXNjYXBlZCk7Ci0rICBnX2ZyZWUgKHNuaWRfZXNjYXBlZCk7Ci0rICBnX2ZyZWUgKHVuaXRfbmFt ZSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc3lzdGVtZF9zY29wZV9jcmVhdGVkX2NiIChHT2Jq ZWN0ICAgICAgKm9iamVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3Vs dCAqcmVzdWx0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICB1c2Vy X2RhdGEpCi0rewotKyAgR1ZhcmlhbnQgKnJlcyA9IE5VTEw7Ci0rICBHRXJyb3IgKmVycm9yID0g TlVMTDsKLSsKLSsgIHJlcyA9IGdfZGJ1c19jb25uZWN0aW9uX2NhbGxfZmluaXNoIChHX0RCVVNf Q09OTkVDVElPTiAob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3IpOwotKyAgaWYgKGVycm9yICE9IE5V TEwpCi0rICAgIHsKLSsgICAgICBnX2RlYnVnICgiRmFpbGVkIHRvIG1vdmUgbmV3IGNoaWxkIGlu dG8gc2NvcGU6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotKyAgICAgIGdfZXJyb3JfZnJlZSAoZXJy b3IpOwotKyAgICB9Ci0rCi0rICAvKiBVbmJsb2NrIHRoZSB3YWl0aW5nIHdyYXBwZXIgYmluYXJ5 LiAqLwotKyAgY2xvc2UgKEdQT0lOVEVSX1RPX0lOVCAodXNlcl9kYXRhKSk7Ci0rCi0rICBpZiAo cmVzKQotKyAgICBnX3ZhcmlhbnRfdW5yZWYgKHJlcyk7Ci0rfQotKyNlbmRpZgotKwotIHN0YXRp YyBnYm9vbGVhbgotIGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChH RGVza3RvcEFwcEluZm8gICAgICAgICAgICAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0RCdXNDb25uZWN0aW9uICAgICAgICAgICAgKnNlc3Npb25f YnVzLAotQEAgLTI3NTAsMTMgKzI4OTIsMTQgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91 cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAotICAgR0xp c3QgKm9sZF91cmlzOwotICAgR0xpc3QgKmR1cF91cmlzOwotIAotLSAgY2hhciAqKmFyZ3YsICoq ZW52cDsKLSsgIEdTdHJ2IGFyZ3YgPSBOVUxMLCBlbnZwID0gTlVMTDsKLSsgIEdTdHJ2IHdyYXBw ZWRfYXJndiA9IE5VTEw7Ci0rICBHTGlzdCAqbGF1bmNoZWRfdXJpcyA9IE5VTEw7Ci0rICBjaGFy ICpzbl9pZCA9IE5VTEw7Ci0gICBpbnQgYXJnYzsKLSAKLSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls IChpbmZvICE9IE5VTEwsIEZBTFNFKTsKLSAKLS0gIGFyZ3YgPSBOVUxMOwotLQotICAgaWYgKGxh dW5jaF9jb250ZXh0KQotICAgICBlbnZwID0gZ19hcHBfbGF1bmNoX2NvbnRleHRfZ2V0X2Vudmly b25tZW50IChsYXVuY2hfY29udGV4dCk7Ci0gICBlbHNlCi1AQCAtMjc3MCwyNyArMjkxMywxOSBA QCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJ bmZvICAgICAgICAgICAgKmluZm8sCi0gICBkbwotICAgICB7Ci0gICAgICAgR1BpZCBwaWQ7Ci0t ICAgICAgR0xpc3QgKmxhdW5jaGVkX3VyaXM7Ci0gICAgICAgR0xpc3QgKml0ZXI7Ci0tICAgICAg Y2hhciAqc25faWQgPSBOVUxMOwotLSAgICAgIGNoYXIgKip3cmFwcGVkX2FyZ3Y7Ci0gICAgICAg aW50IGk7Ci0tICAgICAgZ3NpemUgajsKLS0gICAgICBjb25zdCBnY2hhciAqIGNvbnN0IHdyYXBw ZXJfYXJndltdID0KLS0gICAgICAgIHsKLS0gICAgICAgICAgIi9iaW4vc2giLAotLSAgICAgICAg ICAiLWUiLAotLSAgICAgICAgICAiLXUiLAotLSAgICAgICAgICAiLWMiLCAiZXhwb3J0IEdJT19M QVVOQ0hFRF9ERVNLVE9QX0ZJTEVfUElEPSQkOyBleGVjIFwiJEBcIiIsCi0tICAgICAgICAgICJz aCIsICAvKiBhcmd2WzBdIGZvciBzaCAqLwotLSAgICAgICAgfTsKLSsjaWYgZGVmaW5lZChfX2xp bnV4X18pICYmICFkZWZpbmVkKF9fQklPTklDX18pCi0rICAgICAgU3Bhd25XcmFwcGVyRGF0YSB3 cmFwcGVyX2RhdGE7Ci0rI2VuZGlmCi0rICAgICAgR1NwYXduQ2hpbGRTZXR1cEZ1bmMgc2V0dXAg PSB1c2VyX3NldHVwOwotKyAgICAgIGdwb2ludGVyICAgICAgICAgICAgIHNldHVwX2RhdGEgPSB1 c2VyX3NldHVwX2RhdGE7Ci0gCi0gICAgICAgb2xkX3VyaXMgPSBkdXBfdXJpczsKLSAgICAgICBp ZiAoIWV4cGFuZF9hcHBsaWNhdGlvbl9wYXJhbWV0ZXJzIChpbmZvLCBleGVjX2xpbmUsICZkdXBf dXJpcywgJmFyZ2MsICZhcmd2LCBlcnJvcikpCi0tICAgICAgICBnb3RvIG91dDsKLSsgICAgICAg IHJldHVybiBGQUxTRTsKLSAKLSAgICAgICAvKiBHZXQgdGhlIHN1YnNldCBvZiBVUklzIHdlJ3Jl IGxhdW5jaGluZyB3aXRoIHRoaXMgcHJvY2VzcyAqLwotLSAgICAgIGxhdW5jaGVkX3VyaXMgPSBO VUxMOwotICAgICAgIGZvciAoaXRlciA9IG9sZF91cmlzOyBpdGVyICE9IE5VTEwgJiYgaXRlciAh PSBkdXBfdXJpczsgaXRlciA9IGl0ZXItPm5leHQpCi0gICAgICAgICBsYXVuY2hlZF91cmlzID0g Z19saXN0X3ByZXBlbmQgKGxhdW5jaGVkX3VyaXMsIGl0ZXItPmRhdGEpOwotICAgICAgIGxhdW5j aGVkX3VyaXMgPSBnX2xpc3RfcmV2ZXJzZSAobGF1bmNoZWRfdXJpcyk7Ci1AQCAtMjc5OSw3ICsy OTM0LDcgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKEdEZXNr dG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAotICAgICAgICAgewotICAgICAgICAgICBnX3Nl dF9lcnJvcl9saXRlcmFsIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9GQUlMRUQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlVuYWJsZSB0byBmaW5kIHRlcm1pbmFs IHJlcXVpcmVkIGZvciBhcHBsaWNhdGlvbiIpKTsKLS0gICAgICAgICAgZ290byBvdXQ7Ci0rICAg ICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgIH0KLSAKLSAgICAgICBpZiAoaW5mby0+Zmls ZW5hbWUpCi1AQCAtMjgwOCw3ICsyOTQzLDYgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91 cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPmZpbGVuYW1lLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotIAotLSAgICAgIHNuX2lkID0gTlVMTDsKLSAg ICAgICBpZiAobGF1bmNoX2NvbnRleHQpCi0gICAgICAgICB7Ci0gICAgICAgICAgIEdMaXN0ICps YXVuY2hlZF9maWxlcyA9IGNyZWF0ZV9maWxlc19mb3JfdXJpcyAobGF1bmNoZWRfdXJpcyk7Ci1A QCAtMjgzNywzOCArMjk3MSw5MyBAQCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0 aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAgICAgKmluZm8sCi0gICAgICAgICogd2l0 aCBhIHdyYXBwZXIgcHJvZ3JhbSAoZ3JlcCB0aGUgR0xpYiBnaXQgaGlzdG9yeSBmb3IKLSAgICAg ICAgKiBgZ2lvLWxhdW5jaC1kZXNrdG9wYCBmb3IgYW4gZXhhbXBsZSBvZiB0aGlzIHdoaWNoIGNv dWxkIGJlCi0gICAgICAgICogcmVzdXJyZWN0ZWQpLiAqLwotLSAgICAgIHdyYXBwZWRfYXJndiA9 IGdfbmV3IChjaGFyICosIGFyZ2MgKyBHX05fRUxFTUVOVFMgKHdyYXBwZXJfYXJndikgKyAxKTsK LSsgICAgICB3cmFwcGVkX2FyZ3YgPSBnX25ldyAoY2hhciAqLCBhcmdjICsgNiArIDEpOwotKwot KyAgICAgIHdyYXBwZWRfYXJndlswXSA9IGdfc3RyZHVwICgiL2Jpbi9zaCIpOwotKyAgICAgIHdy YXBwZWRfYXJndlsxXSA9IGdfc3RyZHVwICgiLWUiKTsKLSsgICAgICB3cmFwcGVkX2FyZ3ZbMl0g PSBnX3N0cmR1cCAoIi11Iik7Ci0rICAgICAgd3JhcHBlZF9hcmd2WzNdID0gZ19zdHJkdXAgKCIt YyIpOwotKyAgICAgIC8qIGFyZ3VtZW50IDQgaXMgZmlsbGVkIGluIGJlbG93ICovCi0rICAgICAg d3JhcHBlZF9hcmd2WzVdID0gZ19zdHJkdXAgKCJzaCIpOwotIAotLSAgICAgIGZvciAoaiA9IDA7 IGogPCBHX05fRUxFTUVOVFMgKHdyYXBwZXJfYXJndik7IGorKykKLS0gICAgICAgIHdyYXBwZWRf YXJndltqXSA9IGdfc3RyZHVwICh3cmFwcGVyX2FyZ3Zbal0pOwotICAgICAgIGZvciAoaSA9IDA7 IGkgPCBhcmdjOyBpKyspCi0tICAgICAgICB3cmFwcGVkX2FyZ3ZbaSArIEdfTl9FTEVNRU5UUyAo d3JhcHBlcl9hcmd2KV0gPSBnX3N0ZWFsX3BvaW50ZXIgKCZhcmd2W2ldKTsKLSsgICAgICAgIHdy YXBwZWRfYXJndltpICsgNl0gPSBnX3N0ZWFsX3BvaW50ZXIgKCZhcmd2W2ldKTsKLSsKLSsgICAg ICB3cmFwcGVkX2FyZ3ZbaSArIDZdID0gTlVMTDsKLSsgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZh cmd2LCBnX2ZyZWUpOwotKwotKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19C SU9OSUNfXykKLSsgICAgICAvKiBDcmVhdGUgcGlwZXMsIGlmIHdlIHVzZSBhIHNldHVwIGZ1bmMs IHRoZW4gc2V0IGNsb2V4ZWMsCi0rICAgICAgICogb3RoZXJ3aXNlIG91ciB3cmFwcGVyIHNjcmlw dCB3aWxsIGNsb3NlIGJvdGggc2lkZXMuICovCi0rICAgICAgaWYgKCFnX3VuaXhfb3Blbl9waXBl ICh3cmFwcGVyX2RhdGEucGlwZSwgMCwgTlVMTCkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGdf c2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0ZBSUxFRCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVW5hYmxlIHRvIGNyZWF0ZSBwaXBl IGZvciBzeXN0ZW1kIHN5bmNocm9uaXphdGlvbiIpKTsKLSsgICAgICAgICAgcmV0dXJuIEZBTFNF OwotKyAgICAgICAgfQotKwotKyAgICAgIC8qIFNldCBDTE9FWEVDIG9uIHRoZSB3cml0ZSBwaXBl LCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRlYWwgd2l0aCBpdCBpbiB0aGUgY2hpbGQuICovCi0rICAg ICAgZmNudGwgKHdyYXBwZXJfZGF0YS5waXBlWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKLSAK LS0gICAgICB3cmFwcGVkX2FyZ3ZbaSArIEdfTl9FTEVNRU5UUyAod3JhcHBlcl9hcmd2KV0gPSBO VUxMOwotLSAgICAgIGdfZnJlZSAoYXJndik7Ci0tICAgICAgYXJndiA9IE5VTEw7Ci0rICAgICAg aWYgKCEoc3Bhd25fZmxhZ3MgJiBHX1NQQVdOX0xFQVZFX0RFU0NSSVBUT1JTX09QRU4pKQotKyAg ICAgICAgewotKyAgICAgICAgICAvKiBJbiB0aGlzIGNhc2UsIHdlIHVzZSBhIHNldHVwIGZ1bmN0 aW9uICh3aGljaCBjb3VsZCBwcm9iYWJseSBhbHNvCi0rICAgICAgICAgICAqIG92ZXJ3cml0ZSBl bnZwIHRvIHNldCBHSU9fTEFVTkNIRURfREVTS1RPUF9GSUxFX1BJRCkuCi0rICAgICAgICAgICAq Ci0rICAgICAgICAgICAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGluY3VyIGFuIGFkZGl0aW9u YWwgY29zdCBiZWNhdXNlCi0rICAgICAgICAgICAqIEdfU1BBV05fTEVBVkVfREVTQ1JJUFRPUl9P UEVOIG11c3QgYmUgc2V0IGluIG9yZGVyIHRvIHVzZQotKyAgICAgICAgICAgKiBwb3NpeF9zcGF3 bi4gKi8KLSsgICAgICAgICAgd3JhcHBlcl9kYXRhLnVzZXJfc2V0dXAgPSBzZXR1cDsKLSsgICAg ICAgICAgd3JhcHBlcl9kYXRhLnVzZXJfc2V0dXBfZGF0YSA9IHNldHVwX2RhdGE7Ci0rCi0rICAg ICAgICAgIHNldHVwID0gbGF1bmNoX3VyaXNfd2l0aF9zcGF3bl9kZWxheV9leGVjOwotKyAgICAg ICAgICBzZXR1cF9kYXRhID0gJndyYXBwZXJfZGF0YTsKLSsgICAgICAgIH0KLSsKLSsgICAgICB3 cmFwcGVkX2FyZ3ZbNF0gPSBnX3N0cmR1cF9wcmludGYgKCJleHBvcnQgR0lPX0xBVU5DSEVEX0RF U0tUT1BfRklMRV9QSUQ9JCQ7IGNhdCA8JiUxJGQ7IGV4ZWMgXCIkQFwiICUxJGQ8Ji0iLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcl9kYXRhLnBpcGVb MF0pOwotKyNlbHNlCi0rICAgICAgd3JhcHBlZF9hcmd2WzRdID0gZ19zdHJkdXAgKCJleHBvcnQg R0lPX0xBVU5DSEVEX0RFU0tUT1BfRklMRV9QSUQ9JCQ7IGV4ZWMgXCIkQFwiIik7Ci0rI2VuZGlm Ci0gCi0gICAgICAgaWYgKCFnX3NwYXduX2FzeW5jX3dpdGhfZmRzIChpbmZvLT5wYXRoLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlZF9hcmd2LAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52cCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNwYXduX2ZsYWdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlcl9zZXR1cCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVz ZXJfc2V0dXBfZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVw LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dXBfZGF0YSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGRpbl9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0ZG91dF9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 ZGVycl9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKSkKLSAg ICAgICAgIHsKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fQklPTklDX18p Ci0rICAgICAgICAgIGNsb3NlICh3cmFwcGVyX2RhdGEucGlwZVswXSk7Ci0rICAgICAgICAgIGNs b3NlICh3cmFwcGVyX2RhdGEucGlwZVsxXSk7Ci0rI2VuZGlmCi0rCi0gICAgICAgICAgIGlmIChz bl9pZCkKLSAgICAgICAgICAgICBnX2FwcF9sYXVuY2hfY29udGV4dF9sYXVuY2hfZmFpbGVkIChs YXVuY2hfY29udGV4dCwgc25faWQpOwotIAotLSAgICAgICAgICBnX2ZyZWUgKHNuX2lkKTsKLS0g ICAgICAgICAgZ19saXN0X2ZyZWUgKGxhdW5jaGVkX3VyaXMpOwotLQotICAgICAgICAgICBnb3Rv IG91dDsKLSAgICAgICAgIH0KLSAKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVk KF9fQklPTklDX18pCi0rICAgICAgLyogV2UgY2xvc2Ugd3JpdGUgc2lkZSBhc3luY2hyb25vdXNs eSBsYXRlciBvbiB3aGVuIHRoZSBkYnVzIGNhbGwKLSsgICAgICAgKiB0byBzeXN0ZW1kIGZpbmlz aGVzLiAqLwotKyAgICAgIGNsb3NlICh3cmFwcGVyX2RhdGEucGlwZVswXSk7Ci0rCi0rICAgICAg aWYgKHNlc3Npb25fYnVzKQotKyAgICAgICAgY3JlYXRlX3N5c3RlbWRfc2NvcGUgKHNlc3Npb25f YnVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8sCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGlkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5 c3RlbWRfc2NvcGVfY3JlYXRlZF9jYiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH SU5UX1RPX1BPSU5URVIgKHdyYXBwZXJfZGF0YS5waXBlWzFdKSk7Ci0rICAgICAgZWxzZQotKyAg ICAgICAgY2xvc2UgKHdyYXBwZXJfZGF0YS5waXBlWzFdKTsKLSsjZW5kaWYKLSsKLSAgICAgICBp ZiAocGlkX2NhbGxiYWNrICE9IE5VTEwpCi0gICAgICAgICBwaWRfY2FsbGJhY2sgKGluZm8sIHBp ZCwgcGlkX2NhbGxiYWNrX2RhdGEpOwotIAotQEAgLTI4OTMsMTkgKzMwODIsMjAgQEAgZ19kZXNr dG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAgICAg ICAgICAgICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25faWQsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hlZF91cmlzKTsKLSAKLS0gICAgICBnX2Zy ZWUgKHNuX2lkKTsKLS0gICAgICBnX2xpc3RfZnJlZSAobGF1bmNoZWRfdXJpcyk7Ci0tCi0tICAg ICAgZ19zdHJmcmVldiAod3JhcHBlZF9hcmd2KTsKLS0gICAgICB3cmFwcGVkX2FyZ3YgPSBOVUxM OwotKyAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnNuX2lkLCBnX2ZyZWUpOwotKyAgICAgIGdfY2xl YXJfcG9pbnRlciAoJmxhdW5jaGVkX3VyaXMsIGdfbGlzdF9mcmVlKTsKLSsgICAgICBnX2NsZWFy X3BvaW50ZXIgKCZ3cmFwcGVkX2FyZ3YsIGdfc3RyZnJlZXYpOwotICAgICB9Ci0gICB3aGlsZSAo ZHVwX3VyaXMgIT0gTlVMTCk7Ci0gCi0gICBjb21wbGV0ZWQgPSBUUlVFOwotIAotLSBvdXQ6Ci0r b3V0OgotICAgZ19zdHJmcmVldiAoYXJndik7Ci0gICBnX3N0cmZyZWV2IChlbnZwKTsKLSsgIGdf Y2xlYXJfcG9pbnRlciAoJndyYXBwZWRfYXJndiwgZ19zdHJmcmVldik7Ci0rICBnX2xpc3RfZnJl ZSAobGF1bmNoZWRfdXJpcyk7Ci0rICBnX2ZyZWUgKHNuX2lkKTsKLSAKLSAgIHJldHVybiBjb21w bGV0ZWQ7Ci0gfQotLS0gCi0yLjMxLjEKLQoKZGlmZiAtLWdpdCBhLzAwMDMtZ2Rlc2t0b3BhcHBp bmZvLUhhbmRsZS10YXNrLWNvbXBsZXRpb24tZnJvbS1zcGF3bi1mdS5wYXRjaCBiLzAwMDMtZ2Rl c2t0b3BhcHBpbmZvLUhhbmRsZS10YXNrLWNvbXBsZXRpb24tZnJvbS1zcGF3bi1mdS5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODRhOGQ3YS4uMDAwMDAwMAotLS0gYS8wMDAz LWdkZXNrdG9wYXBwaW5mby1IYW5kbGUtdGFzay1jb21wbGV0aW9uLWZyb20tc3Bhd24tZnUucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzODIgKzAsMCBAQAotRnJvbSBjZDY3YTFiMDI1NmQyMzk3 ZGFjMDgzNmUxNTRmMzQ0OWI2M2E2YjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog QmVuamFtaW4gQmVyZyA8YmJlcmdAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjggSnVsIDIwMjAg MTI6MTE6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIGdkZXNrdG9wYXBwaW5mbzogSGFu ZGxlIHRhc2sgY29tcGxldGlvbiBmcm9tIHNwYXduCi0gZnVuY3Rpb24KLQotVGhpcyBhbGxvd3Mg ZGVsYXlpbmcgdGhlIHJldHVybiBvZiB0aGUgdGFzayB1bnRpbCBhbGwgZGJ1cyBjYWxscyAoaW4K LXBhcnRpY3VsYXIgdGhlIG9uZXMgdG8gc2V0dXAgdGhlIHNjb3BlKSBoYXZlIGZpbmlzaGVkLgot Ci1UaGlzIGZpeGVzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHByZXZpb3VzIGNvbW1pdCB3aGljaCB3 b3VsZCBub3QKLWNvcnJlY3RseSBtb3ZlIHRoZSBwcm9jZXNzIGludG8gdGhlIHNjb3BlIGlmIHRo ZSBhcHBsaWNhdGlvbiBleGl0ZWQKLXJpZ2h0IGFmdGVyIHRoZSB0YXNrIHJldHVybmVkLgotLS0t Ci0gZ2lvL2dkZXNrdG9wYXBwaW5mby5jIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNDYgaW5zZXJ0aW9ucygrKSwgNjYg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9naW8vZ2Rlc2t0b3BhcHBpbmZvLmMgYi9naW8v Z2Rlc2t0b3BhcHBpbmZvLmMKLWluZGV4IGFmZGNkNDJhYy4uOGQwZjE2ODhlIDEwMDY0NAotLS0t IGEvZ2lvL2dkZXNrdG9wYXBwaW5mby5jCi0rKysgYi9naW8vZ2Rlc2t0b3BhcHBpbmZvLmMKLUBA IC0yODQ5LDExICsyODQ5LDE3IEBAIGNyZWF0ZV9zeXN0ZW1kX3Njb3BlIChHREJ1c0Nvbm5lY3Rp b24gICAgKnNlc3Npb25fYnVzLAotICAgZ19mcmVlICh1bml0X25hbWUpOwotIH0KLSAKLSt0eXBl ZGVmIHN0cnVjdCB7Ci0rICBHVGFzayAqdGFzazsKLSsgIGludCBmZDsKLSt9IFNjb3BlQ3JlYXRl ZERhdGE7Ci0rCi0gc3RhdGljIHZvaWQKLSBzeXN0ZW1kX3Njb3BlX2NyZWF0ZWRfY2IgKEdPYmpl Y3QgICAgICAqb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0 ICpyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJf ZGF0YSkKLSB7Ci0rICBTY29wZUNyZWF0ZWREYXRhICpkYXRhID0gdXNlcl9kYXRhOwotICAgR1Zh cmlhbnQgKnJlcyA9IE5VTEw7Ci0gICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAKLUBAIC0yODY1 LDEzICsyODcxLDQ3IEBAIHN5c3RlbWRfc2NvcGVfY3JlYXRlZF9jYiAoR09iamVjdCAgICAgICpv YmplY3QsCi0gICAgIH0KLSAKLSAgIC8qIFVuYmxvY2sgdGhlIHdhaXRpbmcgd3JhcHBlciBiaW5h cnkuICovCi0tICBjbG9zZSAoR1BPSU5URVJfVE9fSU5UICh1c2VyX2RhdGEpKTsKLSsKLSsgIGNs b3NlIChkYXRhLT5mZCk7Ci0rCi0rICBpZiAoZGF0YS0+dGFzaykKLSsgICAgewotKyAgICAgIGdp bnQgcGVuZGluZzsKLSsgICAgICBwZW5kaW5nID0gR1BPSU5URVJfVE9fSU5UIChnX3Rhc2tfZ2V0 X3Rhc2tfZGF0YSAoZGF0YS0+dGFzaykpOwotKyAgICAgIHBlbmRpbmcgLT0gMTsKLSsgICAgICBn X3Rhc2tfc2V0X3Rhc2tfZGF0YSAoZGF0YS0+dGFzaywgR0lOVF9UT19QT0lOVEVSIChwZW5kaW5n KSwgTlVMTCk7Ci0rCi0rICAgICAgaWYgKHBlbmRpbmcgPT0gMCAmJiAhZ190YXNrX2dldF9jb21w bGV0ZWQgKGRhdGEtPnRhc2spKQotKyAgICAgICAgZ190YXNrX3JldHVybl9ib29sZWFuIChkYXRh LT50YXNrLCBUUlVFKTsKLSsgICAgfQotIAotICAgaWYgKHJlcykKLSAgICAgZ192YXJpYW50X3Vu cmVmIChyZXMpOwotKyAgZ19jbGVhcl9vYmplY3QgKCZkYXRhLT50YXNrKTsKLSsgIGdfZnJlZSAo ZGF0YSk7Ci0gfQotICNlbmRpZgotIAotK3N0YXRpYyB2b2lkCi0rbGF1bmNoX3VyaXNfd2l0aF9z cGF3bl9mbHVzaF9jYiAoR09iamVjdCAgICAgICpvYmplY3QsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXN1bHQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICB1c2VyX2RhdGEpCi0rewotKyAgR1Rhc2sgKnRh c2sgPSBHX1RBU0sgKHVzZXJfZGF0YSk7Ci0rICBnaW50IHBlbmRpbmc7Ci0rCi0rICBnX2RidXNf Y29ubmVjdGlvbl9mbHVzaF9maW5pc2ggKEdfREJVU19DT05ORUNUSU9OIChvYmplY3QpLCByZXN1 bHQsIE5VTEwpOwotKwotKyAgcGVuZGluZyA9IEdQT0lOVEVSX1RPX0lOVCAoZ190YXNrX2dldF90 YXNrX2RhdGEgKHRhc2spKTsKLSsgIHBlbmRpbmcgLT0gMTsKLSsgIGdfdGFza19zZXRfdGFza19k YXRhICh0YXNrLCBHSU5UX1RPX1BPSU5URVIgKHBlbmRpbmcpLCBOVUxMKTsKLSsKLSsgIGlmIChw ZW5kaW5nID09IDAgJiYgIWdfdGFza19nZXRfY29tcGxldGVkICh0YXNrKSkKLSsgICAgZ190YXNr X3JldHVybl9ib29sZWFuICh0YXNrLCBUUlVFKTsKLSsKLSsgIGdfb2JqZWN0X3VucmVmICh0YXNr KTsKLSt9Ci0rCi0gc3RhdGljIGdib29sZWFuCi0gZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91 cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c0Nvbm5lY3Rpb24gICAg ICAgICAgICAqc2Vzc2lvbl9idXMsCi1AQCAtMjg4Niw5ICsyOTI2LDEwIEBAIGdfZGVza3RvcF9h cHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3RvcEFwcEluZm8gICAgICAgICAg ICAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lu dCAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluX2ZkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0 X2ZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAg ICAgICAgICAgICAgICAgICAgICAgc3RkZXJyX2ZkLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICoqZXJyb3IpCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUYXNrICAgICAgICAg ICAgICAgICAgICAgICp0YXNrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICAgICAgICoqZXJyb3Jfb3V0KQotIHsKLS0gIGdi b29sZWFuIGNvbXBsZXRlZCA9IEZBTFNFOwotKyAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gICBH TGlzdCAqb2xkX3VyaXM7Ci0gICBHTGlzdCAqZHVwX3VyaXM7Ci0gCi1AQCAtMjg5OCw4ICsyOTM5 LDE1IEBAIGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3Rv cEFwcEluZm8gICAgICAgICAgICAqaW5mbywKLSAgIGNoYXIgKnNuX2lkID0gTlVMTDsKLSAgIGlu dCBhcmdjOwotIAotKyAgLyogV2UgbWF5IGdldCBhIHRhc2sgdG8gcmVwb3J0IGJhY2sgb24gb3Ig YW4gZXJyb3IuIEJ1dCBuZXZlciBib3RoLiAqLwotKyAgZ19hc3NlcnQgKCEodGFzayAmJiBlcnJv cl9vdXQpKTsKLSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbmZvICE9IE5VTEwsIEZBTFNFKTsK LSAKLSsgIC8qIFN1cnJvdW5kaW5nIGNvZGUgbXVzdCBub3QgaGF2ZSBzZXQgYW55IGRhdGEgb24g dGhlIHRhc2sKLSsgICAqIChpdCBpcyBjbGVhcmVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rp b24pLiAqLwotKyAgaWYgKHNlc3Npb25fYnVzICYmIHRhc2spCi0rICAgIGdfYXNzZXJ0IChnX3Rh c2tfZ2V0X3Rhc2tfZGF0YSAodGFzaykgPT0gTlVMTCk7Ci0rCi0gICBpZiAobGF1bmNoX2NvbnRl eHQpCi0gICAgIGVudnAgPSBnX2FwcF9sYXVuY2hfY29udGV4dF9nZXRfZW52aXJvbm1lbnQgKGxh dW5jaF9jb250ZXh0KTsKLSAgIGVsc2UKLUBAIC0yOTIyLDggKzI5NzAsOCBAQCBnX2Rlc2t0b3Bf YXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAg ICAgKmluZm8sCi0gICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgc2V0dXBfZGF0YSA9IHVzZXJf c2V0dXBfZGF0YTsKLSAKLSAgICAgICBvbGRfdXJpcyA9IGR1cF91cmlzOwotLSAgICAgIGlmICgh ZXhwYW5kX2FwcGxpY2F0aW9uX3BhcmFtZXRlcnMgKGluZm8sIGV4ZWNfbGluZSwgJmR1cF91cmlz LCAmYXJnYywgJmFyZ3YsIGVycm9yKSkKLS0gICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgICBp ZiAoIWV4cGFuZF9hcHBsaWNhdGlvbl9wYXJhbWV0ZXJzIChpbmZvLCBleGVjX2xpbmUsICZkdXBf dXJpcywgJmFyZ2MsICZhcmd2LCAmZXJyb3IpKQotKyAgICAgICAgZ290byBvdXQ7Ci0gCi0gICAg ICAgLyogR2V0IHRoZSBzdWJzZXQgb2YgVVJJcyB3ZSdyZSBsYXVuY2hpbmcgd2l0aCB0aGlzIHBy b2Nlc3MgKi8KLSAgICAgICBmb3IgKGl0ZXIgPSBvbGRfdXJpczsgaXRlciAhPSBOVUxMICYmIGl0 ZXIgIT0gZHVwX3VyaXM7IGl0ZXIgPSBpdGVyLT5uZXh0KQotQEAgLTI5MzIsOSArMjk4MCw5IEBA IGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3RvcEFwcElu Zm8gICAgICAgICAgICAqaW5mbywKLSAKLSAgICAgICBpZiAoaW5mby0+dGVybWluYWwgJiYgIXBy ZXBlbmRfdGVybWluYWxfdG9fdmVjdG9yICgmYXJnYywgJmFyZ3YpKQotICAgICAgICAgewotLSAg ICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJP Ul9GQUlMRUQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlVuYWJsZSB0byBm aW5kIHRlcm1pbmFsIHJlcXVpcmVkIGZvciBhcHBsaWNhdGlvbiIpKTsKLS0gICAgICAgICAgcmV0 dXJuIEZBTFNFOwotKyAgICAgICAgICBlcnJvciA9IGdfZXJyb3JfbmV3X2xpdGVyYWwgKEdfSU9f RVJST1IsIEdfSU9fRVJST1JfRkFJTEVELAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF8oIlVuYWJsZSB0byBmaW5kIHRlcm1pbmFsIHJlcXVpcmVkIGZvciBhcHBsaWNh dGlvbiIpKTsKLSsgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgaWYg KGluZm8tPmZpbGVuYW1lKQotQEAgLTI5OTEsOSArMzAzOSw5IEBAIGdfZGVza3RvcF9hcHBfaW5m b19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3RvcEFwcEluZm8gICAgICAgICAgICAqaW5m bywKLSAgICAgICAgKiBvdGhlcndpc2Ugb3VyIHdyYXBwZXIgc2NyaXB0IHdpbGwgY2xvc2UgYm90 aCBzaWRlcy4gKi8KLSAgICAgICBpZiAoIWdfdW5peF9vcGVuX3BpcGUgKHdyYXBwZXJfZGF0YS5w aXBlLCAwLCBOVUxMKSkKLSAgICAgICAgIHsKLS0gICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJh bCAoZXJyb3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfRkFJTEVELAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfKCJVbmFibGUgdG8gY3JlYXRlIHBpcGUgZm9yIHN5c3RlbWQgc3lu Y2hyb25pemF0aW9uIikpOwotLSAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgICAgICAgIGVy cm9yID0gZ19lcnJvcl9uZXdfbGl0ZXJhbCAoR19JT19FUlJPUiwgR19JT19FUlJPUl9GQUlMRUQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVW5hYmxlIHRvIGNy ZWF0ZSBwaXBlIGZvciBzeXN0ZW1kIHN5bmNocm9uaXphdGlvbiIpKTsKLSsgICAgICAgICAgZ290 byBvdXQ7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgLyogU2V0IENMT0VYRUMgb24gdGhlIHdyaXRl IHBpcGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIGl0IGluIHRoZSBjaGlsZC4gKi8K LUBAIC0zMDMwLDcgKzMwNzgsNyBAQCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0 aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAgICAgKmluZm8sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdGRpbl9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0ZG91dF9mZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0ZGVycl9mZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y KSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcikpCi0gICAgICAg ICB7Ci0gI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0JJT05JQ19fKQotICAg ICAgICAgICBjbG9zZSAod3JhcHBlcl9kYXRhLnBpcGVbMF0pOwotQEAgLTMwNDksMTEgKzMwOTcs MjkgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9w QXBwSW5mbyAgICAgICAgICAgICppbmZvLAotICAgICAgIGNsb3NlICh3cmFwcGVyX2RhdGEucGlw ZVswXSk7Ci0gCi0gICAgICAgaWYgKHNlc3Npb25fYnVzKQotLSAgICAgICAgY3JlYXRlX3N5c3Rl bWRfc2NvcGUgKHNlc3Npb25fYnVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu Zm8sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN5c3RlbWRfc2NvcGVfY3JlYXRlZF9jYiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKHdyYXBwZXJfZGF0YS5waXBlWzFdKSk7 Ci0rICAgICAgICB7Ci0rICAgICAgICAgIFNjb3BlQ3JlYXRlZERhdGEgKmRhdGE7Ci0rCi0rICAg ICAgICAgIGRhdGEgPSBnX25ldzAgKFNjb3BlQ3JlYXRlZERhdGEsIDEpOwotKwotKyAgICAgICAg ICBpZiAodGFzaykKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBnaW50IHBlbmRpbmc7 Ci0rICAgICAgICAgICAgICBwZW5kaW5nID0gR1BPSU5URVJfVE9fSU5UIChnX3Rhc2tfZ2V0X3Rh c2tfZGF0YSAodGFzaykpOwotKyAgICAgICAgICAgICAgcGVuZGluZyArPSAxOwotKyAgICAgICAg ICAgICAgZ190YXNrX3NldF90YXNrX2RhdGEgKHRhc2ssIEdJTlRfVE9fUE9JTlRFUiAocGVuZGlu ZyksIE5VTEwpOwotKwotKyAgICAgICAgICAgICAgZGF0YS0+dGFzayA9IGdfb2JqZWN0X3JlZiAo dGFzayk7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICBkYXRhLT5mZCA9IHdyYXBwZXJf ZGF0YS5waXBlWzFdOwotKwotKyAgICAgICAgICBjcmVhdGVfc3lzdGVtZF9zY29wZSAoc2Vzc2lv bl9idXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGlkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3lzdGVtZF9zY29wZV9jcmVhdGVkX2NiLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGF0YSk7Ci0rICAgICAgICB9Ci0gICAgICAgZWxzZQotICAgICAgICAgY2xvc2Ug KHdyYXBwZXJfZGF0YS5waXBlWzFdKTsKLSAjZW5kaWYKLUBAIC0zMDg4LDggKzMxNTQsNiBAQCBn X2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZv ICAgICAgICAgICAgKmluZm8sCi0gICAgIH0KLSAgIHdoaWxlIChkdXBfdXJpcyAhPSBOVUxMKTsK LSAKLS0gIGNvbXBsZXRlZCA9IFRSVUU7Ci0tCi0gb3V0OgotICAgZ19zdHJmcmVldiAoYXJndik7 Ci0gICBnX3N0cmZyZWV2IChlbnZwKTsKLUBAIC0zMDk3LDcgKzMxNjEsNTIgQEAgb3V0OgotICAg Z19saXN0X2ZyZWUgKGxhdW5jaGVkX3VyaXMpOwotICAgZ19mcmVlIChzbl9pZCk7Ci0gCi0tICBy ZXR1cm4gY29tcGxldGVkOwotKyAgaWYgKCFlcnJvcikKLSsgICAgewotKyAgICAgIGlmIChzZXNz aW9uX2J1cyAmJiB0YXNrKQotKyAgICAgICAgewotKyAgICAgICAgICBHQ2FuY2VsbGFibGUgKmNh bmNlbGxhYmxlID0gZ190YXNrX2dldF9jYW5jZWxsYWJsZSAodGFzayk7Ci0rICAgICAgICAgIGdp bnQgcGVuZGluZzsKLSsgICAgICAgICAgcGVuZGluZyA9IEdQT0lOVEVSX1RPX0lOVCAoZ190YXNr X2dldF90YXNrX2RhdGEgKHRhc2spKTsKLSsgICAgICAgICAgcGVuZGluZyArPSAxOwotKyAgICAg ICAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSAodGFzaywgR0lOVF9UT19QT0lOVEVSIChwZW5kaW5n KSwgTlVMTCk7Ci0rCi0rICAgICAgICAgIC8qIEZJWE1FOiBUaGUgRC1CdXMgbWVzc2FnZSBmcm9t IHRoZSBub3RpZnlfZGVza3RvcF9sYXVuY2goKSBmdW5jdGlvbgotKyAgICAgICAgICAgKiBjYW4g YmUgc3RpbGwgbG9zdCBldmVuIGlmIGZsdXNoIGlzIGNhbGxlZCBsYXRlci4gU2VlOgotKyAgICAg ICAgICAgKiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZGJ1cy9kYnVzL2lzc3Vlcy83 MgotKyAgICAgICAgICAgKi8KLSsgICAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fZmx1c2ggKHNl c3Npb25fYnVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsbGFi bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hfdXJpc193aXRo X3NwYXduX2ZsdXNoX2NiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19z dGVhbF9wb2ludGVyICgmdGFzaykpOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UgaWYgKHNlc3Np b25fYnVzKQotKyAgICAgICAgewotKyAgICAgICAgICAvKiBObyB0YXNrIGF2YWlsYWJsZS4gKi8K LSsgICAgICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fZmx1c2ggKHNlc3Npb25fYnVzLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMKTsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlIGlmICh0YXNrKQotKyAgICAgICAgewot KyAgICAgICAgICAvKiBSZXR1cm4gdGhlIGdpdmVuIHRhc2suICovCi0rICAgICAgICAgIGdfdGFz a19yZXR1cm5fYm9vbGVhbiAodGFzaywgVFJVRSk7Ci0rICAgICAgICAgIGdfb2JqZWN0X3VucmVm ICh0YXNrKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYg KHRhc2spCi0rICAgICAgICB7Ci0rICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IgKHRhc2ss IGVycm9yKTsKLSsgICAgICAgICAgZ19vYmplY3RfdW5yZWYgKHRhc2spOwotKyAgICAgICAgfQot KyAgICAgIGVsc2UKLSsgICAgICAgIGdfcHJvcGFnYXRlX2Vycm9yIChlcnJvcl9vdXQsIGVycm9y KTsKLSsgICAgfQotKwotKyAgcmV0dXJuICFlcnJvcjsKLSB9Ci0gCi0gc3RhdGljIGdjaGFyICoK LUBAIC0zMjQ2LDE3ICszMzU1LDkgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX2lu dGVybmFsIChHQXBwSW5mbyAgICAgICAgICAgICAgICAgICAqYXBwaW5mbywKLSAgICAgc3VjY2Vz cyA9IGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChpbmZvLCBzZXNz aW9uX2J1cywgaW5mby0+ZXhlYywgdXJpcywgbGF1bmNoX2NvbnRleHQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhd25fZmxhZ3Ms IHVzZXJfc2V0dXAsIHVzZXJfc2V0dXBfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWRfY2FsbGJhY2ssIHBpZF9jYWxsYmFj a19kYXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0ZGluX2ZkLCBzdGRvdXRfZmQsIHN0ZGVycl9mZCwgZXJyb3IpOwotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGlu X2ZkLCBzdGRvdXRfZmQsIHN0ZGVycl9mZCwgTlVMTCwgZXJyb3IpOwotIAotLSAgaWYgKHNlc3Np b25fYnVzICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIGFzeW5jaHJvbm91cyBmbHVz aCBob2xkcyBhIHJlZmVyZW5jZSB1bnRpbCBpdCBjb21wbGV0ZXMsCi0tICAgICAgICogd2hpY2gg ZW5zdXJlcyB0aGF0IHRoZSBmb2xsb3dpbmcgdW5yZWYgd29uJ3QgaW1tZWRpYXRlbHkga2lsbAot LSAgICAgICAqIHRoZSBjb25uZWN0aW9uIGlmIHdlIHdlcmUgdGhlIGluaXRpYWwgb3duZXIuCi0t ICAgICAgICovCi0tICAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fZmx1c2ggKHNlc3Npb25fYnVzLCBO VUxMLCBOVUxMLCBOVUxMKTsKLS0gICAgICBnX29iamVjdF91bnJlZiAoc2Vzc2lvbl9idXMpOwot LSAgICB9Ci0rICBnX2NsZWFyX29iamVjdCAoJnNlc3Npb25fYnVzKTsKLSAKLSAgIHJldHVybiBz dWNjZXNzOwotIH0KLUBAIC0zMzEwLDE4ICszNDExLDYgQEAgbGF1bmNoX3VyaXNfd2l0aF9kYnVz X2NiIChHT2JqZWN0ICAgICAgKm9iamVjdCwKLSAgIGdfb2JqZWN0X3VucmVmICh0YXNrKTsKLSB9 Ci0gCi0tc3RhdGljIHZvaWQKLS1sYXVuY2hfdXJpc19mbHVzaF9jYiAoR09iamVjdCAgICAgICpv YmplY3QsCi0tICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAqcmVzdWx0LAotLSAg ICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJfZGF0YSkKLS17Ci0tICBHVGFz ayAqdGFzayA9IEdfVEFTSyAodXNlcl9kYXRhKTsKLS0KLS0gIGdfZGJ1c19jb25uZWN0aW9uX2Zs dXNoX2ZpbmlzaCAoR19EQlVTX0NPTk5FQ1RJT04gKG9iamVjdCksIHJlc3VsdCwgTlVMTCk7Ci0t ICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4gKHRhc2ssIFRSVUUpOwotLSAgZ19vYmplY3RfdW5yZWYg KHRhc2spOwotLX0KLS0KLSBzdGF0aWMgdm9pZAotIGxhdW5jaF91cmlzX2J1c19nZXRfY2IgKEdP YmplY3QgICAgICAqb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3Vs dCAqcmVzdWx0LAotQEAgLTMzMzAsMTIgKzM0MTksMjAgQEAgbGF1bmNoX3VyaXNfYnVzX2dldF9j YiAoR09iamVjdCAgICAgICpvYmplY3QsCi0gICBHVGFzayAqdGFzayA9IEdfVEFTSyAodXNlcl9k YXRhKTsKLSAgIEdEZXNrdG9wQXBwSW5mbyAqaW5mbyA9IEdfREVTS1RPUF9BUFBfSU5GTyAoZ190 YXNrX2dldF9zb3VyY2Vfb2JqZWN0ICh0YXNrKSk7Ci0gICBMYXVuY2hVcmlzRGF0YSAqZGF0YSA9 IGdfdGFza19nZXRfdGFza19kYXRhICh0YXNrKTsKLSsgIExhdW5jaFVyaXNEYXRhICpkYXRhX2Nv cHkgPSBOVUxMOwotICAgR0NhbmNlbGxhYmxlICpjYW5jZWxsYWJsZSA9IGdfdGFza19nZXRfY2Fu Y2VsbGFibGUgKHRhc2spOwotICAgR0RCdXNDb25uZWN0aW9uICpzZXNzaW9uX2J1czsKLS0gIEdF cnJvciAqZXJyb3IgPSBOVUxMOwotIAotICAgc2Vzc2lvbl9idXMgPSBnX2J1c19nZXRfZmluaXNo IChyZXN1bHQsIE5VTEwpOwotIAotKyAgZGF0YV9jb3B5ID0gZ19uZXcwIChMYXVuY2hVcmlzRGF0 YSwgMSk7Ci0rICBkYXRhX2NvcHktPmFwcGluZm8gPSBnX3N0ZWFsX3BvaW50ZXIgKCZkYXRhLT5h cHBpbmZvKTsKLSsgIGRhdGFfY29weS0+dXJpcyA9IGdfc3RlYWxfcG9pbnRlciAoJmRhdGEtPnVy aXMpOwotKyAgZGF0YV9jb3B5LT5jb250ZXh0ID0gZ19zdGVhbF9wb2ludGVyICgmZGF0YS0+Y29u dGV4dCk7Ci0rCi0rICAvKiBBbGxvdyBvdGhlciBkYXRhIHRvIGJlIGF0dGFjaGVkIHRvIHRoZSB0 YXNrLiAqLwotKyAgZ190YXNrX3NldF90YXNrX2RhdGEgKHRhc2ssIE5VTEwsIE5VTEwpOwotKwot ICAgaWYgKHNlc3Npb25fYnVzICYmIGluZm8tPmFwcF9pZCkKLSAgICAgewotICAgICAgIC8qIEZJ WE1FOiBUaGUgZ19kb2N1bWVudF9wb3J0YWxfYWRkX2RvY3VtZW50cygpIGZ1bmN0aW9uLCB3aGlj aCBpcyBjYWxsZWQKLUBAIC0zMzQzLDM0ICszNDQwLDIxIEBAIGxhdW5jaF91cmlzX2J1c19nZXRf Y2IgKEdPYmplY3QgICAgICAqb2JqZWN0LAotICAgICAgICAqIHVzZXMgYmxvY2tpbmcgY2FsbHMu Ci0gICAgICAgICovCi0gICAgICAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhf ZGJ1cyAoaW5mbywgc2Vzc2lvbl9idXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YS0+dXJpcywgZGF0YS0+Y29udGV4dCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2NvcHktPnVyaXMsIGRh dGFfY29weS0+Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYW5jZWxsYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsYXVuY2hfdXJpc193aXRoX2RidXNfY2IsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19zdGVhbF9wb2ludGVyICgmdGFz aykpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBGSVhNRTogVGhlIEQtQnVz IG1lc3NhZ2UgZnJvbSB0aGUgbm90aWZ5X2Rlc2t0b3BfbGF1bmNoKCkgZnVuY3Rpb24KLS0gICAg ICAgKiBjYW4gYmUgc3RpbGwgbG9zdCBldmVuIGlmIGZsdXNoIGlzIGNhbGxlZCBsYXRlci4gU2Vl OgotLSAgICAgICAqIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kYnVzL2RidXMvaXNz dWVzLzcyCi0tICAgICAgICovCi0gICAgICAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlz X3dpdGhfc3Bhd24gKGluZm8sIHNlc3Npb25fYnVzLCBpbmZvLT5leGVjLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT51cmlzLCBkYXRhLT5j b250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhX2NvcHktPnVyaXMsIGRhdGFfY29weS0+Y29udGV4dCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NQQVdOX0ZMQUdTX0RFRkFVTFQsIE5V TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsIE5VTEwsIE5VTEwsIC0xLCAtMSwgLTEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZlcnJvcik7Ci0tICAgICAgaWYgKGVycm9yICE9IE5VTEwp Ci0tICAgICAgICB7Ci0tICAgICAgICAgIGdfdGFza19yZXR1cm5fZXJyb3IgKHRhc2ssIGdfc3Rl YWxfcG9pbnRlciAoJmVycm9yKSk7Ci0tICAgICAgICAgIGdfb2JqZWN0X3VucmVmICh0YXNrKTsK LS0gICAgICAgIH0KLS0gICAgICBlbHNlCi0tICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9mbHVz aCAoc2Vzc2lvbl9idXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2Vs bGFibGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoX3VyaXNfZmx1 c2hfY2IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19zdGVhbF9wb2ludGVy ICgmdGFzaykpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnX3N0ZWFsX3BvaW50ZXIgKCZ0YXNrKSwgTlVMTCk7Ci0gICAgIH0KLSAKLSsgIGxhdW5j aF91cmlzX2RhdGFfZnJlZSAoZGF0YV9jb3B5KTsKLSAgIGdfY2xlYXJfb2JqZWN0ICgmc2Vzc2lv bl9idXMpOwotIH0KLSAKLUBAIC01MTg2LDE2ICs1MjcwLDEyIEBAIGdfZGVza3RvcF9hcHBfaW5m b19sYXVuY2hfYWN0aW9uIChHRGVza3RvcEFwcEluZm8gICAqaW5mbywKLSAgICAgICBpZiAoZXhl Y19saW5lKQotICAgICAgICAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bh d24gKGluZm8sIHNlc3Npb25fYnVzLCBleGVjX2xpbmUsIE5VTEwsIGxhdW5jaF9jb250ZXh0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9TUEFX Tl9GTEFHU19ERUZBVUxULCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEsIE5VTEwpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAt MSwgLTEsIE5VTEwsIE5VTEwpOwotIAotICAgICAgIGdfZnJlZSAoZXhlY19saW5lKTsKLSAgICAg fQotIAotLSAgaWYgKHNlc3Npb25fYnVzICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBnX2RidXNf Y29ubmVjdGlvbl9mbHVzaCAoc2Vzc2lvbl9idXMsIE5VTEwsIE5VTEwsIE5VTEwpOwotLSAgICAg IGdfb2JqZWN0X3VucmVmIChzZXNzaW9uX2J1cyk7Ci0tICAgIH0KLSsgIGdfY2xlYXJfb2JqZWN0 ICgmc2Vzc2lvbl9idXMpOwotIH0KLSAvKiBFcGlsb2d1ZSB7e3sxICovCi0gCi0tLSAKLTIuMzEu MQotCgpkaWZmIC0tZ2l0IGEvMDAwNC1nZGVza3RvcGFwcGluZm8tQWRkLVNvdXJjZVBhdGgtdG8t dHJhbnNpZW50LXN5c3RlbWQtLnBhdGNoIGIvMDAwNC1nZGVza3RvcGFwcGluZm8tQWRkLVNvdXJj ZVBhdGgtdG8tdHJhbnNpZW50LXN5c3RlbWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBhZThhNzE5Li4wMDAwMDAwCi0tLSBhLzAwMDQtZ2Rlc2t0b3BhcHBpbmZvLUFkZC1T b3VyY2VQYXRoLXRvLXRyYW5zaWVudC1zeXN0ZW1kLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDU2ICswLDAgQEAKLUZyb20gOGRhOGEzZWY2ZGY4YWY2ZGU4YmQzODgxOTJiZWJlOGI1MWIzZTc4 MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlbmphbWluIEJlcmcgPGJiZXJnQHJl ZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE3IFNlcCAyMDIwIDE3OjM1OjU4ICswMjAwCi1TdWJqZWN0 OiBbUEFUQ0ggNC80XSBnZGVza3RvcGFwcGluZm86IEFkZCBTb3VyY2VQYXRoPSB0byB0cmFuc2ll bnQgc3lzdGVtZAotIHVuaXRzCi0KLXN5c3RlbWQgYWxsb3dzIHNldHRpbmcgYSBTb3VyY2VQYXRo PSB3aGljaCBzaG93cyB0aGUgZmlsZSB0aGF0IHRoZSB1bml0Ci1oYXMgYmVlbiBnZW5lcmF0ZWQg ZnJvbS4gS0RFIGlzIHN0YXJ0aW5nIHRvIHNldCB0aGlzIGFuZCBpdCBzZWVtcyBsaWtlIGEKLWdv b2QgaWRlYSwgc28gZG8gdGhlIHNhbWUgaGVyZS4KLQotU2VlIGh0dHBzOi8vaW52ZW50LmtkZS5v cmcvZnJhbWV3b3Jrcy9raW8vLS9tZXJnZV9yZXF1ZXN0cy8xMjQKLS0tLQotIGdpby9nZGVza3Rv cGFwcGluZm8uYyB8IDEzICsrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0 aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2lvL2dkZXNrdG9wYXBwaW5mby5jIGIvZ2lvL2dkZXNr dG9wYXBwaW5mby5jCi1pbmRleCA4ZDBmMTY4OGUuLmE4MzNkZTRlNiAxMDA2NDQKLS0tLSBhL2dp by9nZGVza3RvcGFwcGluZm8uYwotKysrIGIvZ2lvL2dkZXNrdG9wYXBwaW5mby5jCi1AQCAtMjc3 Nyw2ICsyNzc3LDcgQEAgY3JlYXRlX3N5c3RlbWRfc2NvcGUgKEdEQnVzQ29ubmVjdGlvbiAgICAq c2Vzc2lvbl9idXMsCi0gewotICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7Ci0gICBjb25zdCBj aGFyICphcHBfbmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUgKCk7Ci0rICBjb25zdCBjaGFy ICpzb3VyY2VfcGF0aCA9IE5VTEw7Ci0gICBjaGFyICphcHBpZCA9IE5VTEw7Ci0gICBjaGFyICph cHBpZF9lc2NhcGVkID0gTlVMTDsKLSAgIGNoYXIgKnNuaWRfZXNjYXBlZCA9IE5VTEw7Ci1AQCAt MjgwMiw2ICsyODAzLDggQEAgY3JlYXRlX3N5c3RlbWRfc2NvcGUgKEdEQnVzQ29ubmVjdGlvbiAg ICAqc2Vzc2lvbl9idXMsCi0gICAgKi8KLSAgIHVuaXRfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAo ImFwcC1nbGliLSVzLSVkLnNjb3BlIiwgYXBwaWRfZXNjYXBlZCwgcGlkKTsKLSAKLSsgIHNvdXJj ZV9wYXRoID0gZ19kZXNrdG9wX2FwcF9pbmZvX2dldF9maWxlbmFtZSAoaW5mbyk7Ci0rCi0gICBn X3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEUgKCIoc3NhKHN2 KWEoc2Eoc3YpKSkiKSk7Ci0gICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZidWlsZGVyLCAicyIs IHVuaXRfbmFtZSk7Ci0gICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZidWlsZGVyLCAicyIsICJm YWlsIik7Ci1AQCAtMjgxNSw2ICsyODE4LDE2IEBAIGNyZWF0ZV9zeXN0ZW1kX3Njb3BlIChHREJ1 c0Nvbm5lY3Rpb24gICAgKnNlc3Npb25fYnVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJEZXNjcmlwdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25l d190YWtlX3N0cmluZyAoZ19zdHJkdXBfcHJpbnRmICgiQXBwbGljYXRpb24gbGF1bmNoZWQgYnkg JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXBwX25hbWUpKSk7Ci0rCi0rICAvKiBJZiB3ZSBoYXZlIGEg LmRlc2t0b3AgZmlsZSwgZG9jdW1lbnQgdGhhdCB0aGUgc2NvcGUgaGFzIGJlZW4gImdlbmVyYXRl ZCIKLSsgICAqIGZyb20gaXQuCi0rICAgKi8KLSsgIGlmIChzb3VyY2VfcGF0aCAmJiBnX3V0Zjhf dmFsaWRhdGUgKHNvdXJjZV9wYXRoLCAtMSwgTlVMTCkpCi0rICAgIGdfdmFyaWFudF9idWlsZGVy X2FkZCAoJmJ1aWxkZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIihzdikiLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJTb3VyY2VQYXRoIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyAoc291cmNlX3BhdGgpKTsKLSsKLSAgIGdf dmFyaWFudF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICIoc3YpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlBJRHMiLAotLS0gCi0yLjMxLjEK LQoKZGlmZiAtLWdpdCBhL2dkZXNrdG9wYXBwaW5mby5wYXRjaCBiL2dkZXNrdG9wYXBwaW5mby5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODZhYzdjCi0tLSAvZGV2 L251bGwKKysrIGIvZ2Rlc2t0b3BhcHBpbmZvLnBhdGNoCkBAIC0wLDAgKzEsODU1IEBACitGcm9t IDVlNDIzODRjYzQ0OTkyOTMyNTlhOGEzN2E3MzcwMTRhNTZkZTM0ZGYgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBCZXJnIDxiYmVyZ0ByZWRoYXQuY29tPgorRGF0ZTog RnJpLCAyMyBPY3QgMjAyMCAxODoyMDowMSArMDIwMAorU3ViamVjdDogW1BBVENIIDEvNF0gdGVz dHM6IEl0ZXJhdGUgbWFpbmxvb3AgZHVyaW5nIGxhdW5jaCB0ZXN0CisKK1doZW4gbGF1bmNoaW5n IGFuIGFwcGxpY2F0aW9uLCB3ZSB3YWl0IGZvciB0aGUgREJ1cyByZXNwb25zZSBmcm9tCitzeXN0 ZW1kIGJlZm9yZSBleGVjdXRpbmcgdGhlIGJpbmFyeS4gQmVjYXVzZSBvZiB0aGlzIHRoZSBtYWlu IGxvb3AgbmVlZHMKK3RvIGJlIGl0ZXJhdGVkIGZvciBzcGF3bmluZyB0byBjb21wbGV0ZWQgYW5k IHRoZSBmaWxlIHRvIGJlIGNyZWF0ZWQuCisKK1dpdGhvdXQgdGhpcyB0aGUgdGVzdCB3aWxsIHRp bWUgb3V0IGlmIEdMaWIgd2FzIGFibGUgdG8gY29ubmVjdCB0byB0aGUKK3Nlc3Npb24gYnVzLgor LS0tCisgZ2lvL3Rlc3RzL2Rlc2t0b3AtYXBwLWluZm8uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2lvL3Rlc3RzL2Rlc2t0b3AtYXBwLWlu Zm8uYyBiL2dpby90ZXN0cy9kZXNrdG9wLWFwcC1pbmZvLmMKK2luZGV4IGZjYzI5YzU3OS4uNzQz MjMwY2JiIDEwMDY0NAorLS0tIGEvZ2lvL3Rlc3RzL2Rlc2t0b3AtYXBwLWluZm8uYworKysrIGIv Z2lvL3Rlc3RzL2Rlc2t0b3AtYXBwLWluZm8uYworQEAgLTMzNCw2ICszMzQsNyBAQCB3YWl0X2Zv cl9maWxlIChjb25zdCBnY2hhciAqd2FudF90aGlzLAorICAgICovCisgICB3aGlsZSAoYWNjZXNz ICh3YW50X3RoaXMsIEZfT0spICE9IDApCisgICAgIHsKKysgICAgICBnX21haW5fY29udGV4dF9p dGVyYXRpb24gKE5VTEwsIEZBTFNFKTsKKyAgICAgICBnX3VzbGVlcCAoMTAwMDAwKTsgLyogMTAw bXMgKi8KKyAgICAgICBnX2Fzc2VydF9jbXB1aW50IChyZXRyaWVzLCA+LCAwKTsKKyAgICAgICBy ZXRyaWVzLS07CistLSAKKzIuMzEuMQorCitGcm9tIGJhM2I4NWE4ZmVhMDE1MWU3NGRlNTBlODQx YTdmMTZmOWIwNzdhNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCZW5qYW1pbiBC ZXJnIDxiYmVyZ0ByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyNyBKdWwgMjAyMCAyMjoyMjozMiAr MDIwMAorU3ViamVjdDogW1BBVENIIDIvNF0gZ2Rlc2t0b3BhcHBpbmZvOiBNb3ZlIGxhdW5jaGVk IGFwcGxpY2F0aW9ucyBpbnRvCisgdHJhbnNpZW50IHNjb3BlCisKK1RyeSB0byBtb3ZlIHRoZSBz cGF3bmVkIGV4ZWN1dGFibGUgaW50byBpdHMgb3duIHN5c3RlbWQgc2NvcGUuIFRvIGF2b2lkCitw b3NzaWJsZSByYWNlIGNvbmRpdGlvbnMgYW5kIGVuc3VyZSBwcm9wZXIgYWNjb3VudGluZywgd2Ug ZGVsYXkgdGhlCitleGVjdXRpb24gb2YgdGhlIHJlYWwgY29tbWFuZCB1bnRpbCBhZnRlciB0aGUg REJ1cyBjYWxsIHRvIHN5c3RlbWQgaGFzCitmaW5pc2hlZC4KKworRnJvbSB0aGUgdHdvIGFwcHJv YWNoZXMgd2UgY2FuIHRha2UgaGVyZSwgdGhpcyBpcyBiZXR0ZXIgaW4gdGhlIHNlbnNlCit0aGF0 IHdlIGhhdmUgYSBjaGlsZCB0aGF0IHRoZSBBUEkgY29uc3VtZXIgY2FuIHdhdGNoLiBBUEkgY29u c3VtZXJzCitzaG91bGQgbm90IGJlIGRvaW5nIHRoaXMsIGhvd2V2ZXIsIGdub21lLXNlc3Npb24g bmVlZHMgdG8gd2F0Y2ggY2hpbGRyZW4KK2R1cmluZyBzZXNzaW9uIHN0YXJ0dXAuIFVudGlsIGdu b21lLXNlc3Npb24gaXMgZml4ZWQsIHdlIHdpbGwgbm90IGJlCithYmxlIHRvIGNoYW5nZSB0aGlz LgorCitUaGUgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gZGVsZWdhdGUgbGF1bmNoaW5nIGl0 c2VsZiB0byBzeXN0ZW1kIGJ5CitjcmVhdGluZyBhIHRyYW5zaWVudCAuc2VydmljZSB1bml0IGlu c3RlYWQuIFRoaXMgaXMgY2xlYW5lciBhbmQgaGFzIGUuZy4KK3RoZSBhZHZhbnRhZ2UgdGhhdCBz eXN0ZW1kIHdpbGwgdGFrZSBjYXJlIG9mIGxvZyByZWRpcmVjdGlvbiBhbmQgc2ltaWxhcgoraXNz dWVzLgorCitOb3RlIHRoYXQgdGhpcyBwYXRjaCBpcyBpbmNvbXBsZXRlLiBUaGUgREJ1cyBjYWxs IGlzIGRvbmUgaW4gYSAiZmlyZSBhbmQKK2ZvcmdldCIgbWFubmVyLCB3aGljaCBpcyBmaW5lIGlu IG1vc3QgY2FzZXMsIGJ1dCBtZWFucyB0aGF0ICJnaW8gb3BlbiIKK3dpbGwgZmFpbCB0byBtb3Zl IHRoZSBjaGlsZCBpbnRvIHRoZSBuZXcgc2NvcGUgYXMgZ2lvIHF1aXRzIGJlZm9yZSB0aGUKK0RC dXMgY2FsbCBmaW5pc2hlcy4KKy0tLQorIGdpby9nZGVza3RvcGFwcGluZm8uYyB8IDI2NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwg MjI3IGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2lvL2dk ZXNrdG9wYXBwaW5mby5jIGIvZ2lvL2dkZXNrdG9wYXBwaW5mby5jCitpbmRleCAxYTRiOTc5MTgu LmFmZGNkNDJhYyAxMDA2NDQKKy0tLSBhL2dpby9nZGVza3RvcGFwcGluZm8uYworKysrIGIvZ2lv L2dkZXNrdG9wYXBwaW5mby5jCitAQCAtMjczMCw2ICsyNzMwLDE0OCBAQCBub3RpZnlfZGVza3Rv cF9sYXVuY2ggKEdEQnVzQ29ubmVjdGlvbiAgKnNlc3Npb25fYnVzLAorIAorICNkZWZpbmUgX1NQ QVdOX0ZMQUdTX0RFRkFVTFQgKEdfU1BBV05fU0VBUkNIX1BBVEgpCisgCisrI2lmIGRlZmluZWQo X19saW51eF9fKSAmJiAhZGVmaW5lZChfX0JJT05JQ19fKQorK3R5cGVkZWYgc3RydWN0IHsKKysg IGludCBwaXBlWzJdOworKyAgR1NwYXduQ2hpbGRTZXR1cEZ1bmMgdXNlcl9zZXR1cDsKKysgIGdw b2ludGVyICAgICAgICAgICAgIHVzZXJfc2V0dXBfZGF0YTsKKyt9IFNwYXduV3JhcHBlckRhdGE7 CisrCisrc3RhdGljIHZvaWQKKytsYXVuY2hfdXJpc193aXRoX3NwYXduX2RlbGF5X2V4ZWMgKGdw b2ludGVyIHVzZXJfZGF0YSkKKyt7CisrICBTcGF3bldyYXBwZXJEYXRhICpkYXRhID0gdXNlcl9k YXRhOworKworKyAgLyogQ2xlYXIgQ0xPRVhFQyBhZ2FpbiwgYXMgdGhhdCB3YXMgc2V0IGR1ZSB0 bworKyAgICogR19TUEFXTl9MRUFWRV9ERVNDUklQVE9SU19PUEVOIG5vdCBiZWluZyBzZXQuICov CisrICBmY250bCAoZGF0YS0+cGlwZVswXSwgRl9TRVRGRCwgMCk7CisrCisrICAvKiBObyBuZWVk IHRvIGNsb3NlIHJlYWQgc2lkZSwgd2UgaGF2ZSBDTE9FWEVDIHNldC4gKi8KKysKKysgIGlmIChk YXRhLT51c2VyX3NldHVwKQorKyAgICBkYXRhLT51c2VyX3NldHVwIChkYXRhLT51c2VyX3NldHVw X2RhdGEpOworK30KKysKKytzdGF0aWMgZ2NoYXIgKgorK3N5c3RlbWRfdW5pdF9uYW1lX2VzY2Fw ZSAoY29uc3QgZ2NoYXIgKmluKQorK3sKKysgIC8qIEFkYXB0ZWQgZnJvbSBzeXN0ZW1kIHNvdXJj ZSAqLworKyAgR1N0cmluZyAqIGNvbnN0IHN0ciA9IGdfc3RyaW5nX3NpemVkX25ldyAoc3RybGVu IChpbikpOworKworKyAgZm9yICg7ICppbjsgaW4rKykKKysgICAgeworKyAgICAgIGlmIChnX2Fz Y2lpX2lzYWxudW0gKCppbikgfHwgKmluID09ICc6JyB8fCAqaW4gPT0gJ18nIHx8ICppbiA9PSAn LicpCisrICAgICAgICBnX3N0cmluZ19hcHBlbmRfYyAoc3RyLCAqaW4pOworKyAgICAgIGVsc2UK KysgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHN0ciwgIlxceCUwMngiLCAqaW4pOwor KyAgICB9CisrICByZXR1cm4gZ19zdHJpbmdfZnJlZSAoc3RyLCBGQUxTRSk7CisrfQorKworK3N0 YXRpYyB2b2lkCisrY3JlYXRlX3N5c3RlbWRfc2NvcGUgKEdEQnVzQ29ubmVjdGlvbiAgICAqc2Vz c2lvbl9idXMsCisrICAgICAgICAgICAgICAgICAgICAgIEdEZXNrdG9wQXBwSW5mbyAgICAqaW5m bywKKysgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICBwaWQsCisrICAg ICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgY2FsbGJhY2ssCisrICAgICAg ICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgdXNlcl9kYXRhKQorK3sKKysgIEdW YXJpYW50QnVpbGRlciBidWlsZGVyOworKyAgY29uc3QgY2hhciAqYXBwX25hbWUgPSBnX2dldF9h cHBsaWNhdGlvbl9uYW1lICgpOworKyAgY2hhciAqYXBwaWQgPSBOVUxMOworKyAgY2hhciAqYXBw aWRfZXNjYXBlZCA9IE5VTEw7CisrICBjaGFyICpzbmlkX2VzY2FwZWQgPSBOVUxMOworKyAgY2hh ciAqdW5pdF9uYW1lID0gTlVMTDsKKysKKysgIC8qIEluIHRoaXMgb3JkZXI6CisrICAgKiAgMS4g QWN0dWFsIGFwcGxpY2F0aW9uIElEIGZyb20gZmlsZQorKyAgICogIDIuIFN0cmlwcGluZyB0aGUg LmRlc2t0b3AgZnJvbSB0aGUgZGVza3RvcCBJRAorKyAgICogIDMuIEZhbGwgYmFjayB0byB1c2lu ZyB0aGUgYmluYXJ5IG5hbWUKKysgICAqLworKyAgaWYgKGluZm8tPmFwcF9pZCkKKysgICAgYXBw aWQgPSBnX3N0cmR1cCAoaW5mby0+YXBwX2lkKTsKKysgIGVsc2UgaWYgKGluZm8tPmRlc2t0b3Bf aWQgJiYgZ19zdHJfaGFzX3N1ZmZpeCAoaW5mby0+ZGVza3RvcF9pZCwgIi5kZXNrdG9wIikpCisr ICAgIGFwcGlkID0gZ19zdHJuZHVwIChpbmZvLT5kZXNrdG9wX2lkLCBzdHJsZW4gKGluZm8tPmRl c2t0b3BfaWQpIC0gOCk7CisrICBlbHNlCisrICAgIGFwcGlkID0gZ19wYXRoX2dldF9iYXNlbmFt ZSAoaW5mby0+YmluYXJ5KTsKKysKKysgIGFwcGlkX2VzY2FwZWQgPSBzeXN0ZW1kX3VuaXRfbmFt ZV9lc2NhcGUgKGFwcGlkKTsKKysKKysgIC8qIEdlbmVyYXRlIGEgbmFtZSBjb25mb3JtaW5nIHRv CisrICAgKiAgIGh0dHBzOi8vc3lzdGVtZC5pby9ERVNLVE9QX0VOVklST05NRU5UUy8KKysgICAq IFdlIHVzZSB0aGUgUElEIHRvIGRpc2FtYmlndWF0ZSwgYXMgdGhhdCBzaG91bGQgYmUgdW5pcXVl IGVub3VnaC4KKysgICAqLworKyAgdW5pdF9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiYXBwLWds aWItJXMtJWQuc2NvcGUiLCBhcHBpZF9lc2NhcGVkLCBwaWQpOworKworKyAgZ192YXJpYW50X2J1 aWxkZXJfaW5pdCAoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFICgiKHNzYShzdilhKHNhKHN2KSkp IikpOworKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkICgmYnVpbGRlciwgInMiLCB1bml0X25hbWUp OworKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkICgmYnVpbGRlciwgInMiLCAiZmFpbCIpOworKwor KyAgZ192YXJpYW50X2J1aWxkZXJfb3BlbiAoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFICgiYShz dikiKSk7CisrCisrICAvKiBBZGQgYSBnZW5lcmljIGh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9u LCBjYW4gYmUgY2hhbmdlZCBhdCB3aWxsLiAqLworKyAgaWYgKGFwcF9uYW1lKQorKyAgICBnX3Zh cmlhbnRfYnVpbGRlcl9hZGQgKCZidWlsZGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICIoc3YpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVzY3JpcHRpb24iLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXdfdGFrZV9zdHJpbmcgKGdfc3Ry ZHVwX3ByaW50ZiAoIkFwcGxpY2F0aW9uIGxhdW5jaGVkIGJ5ICVzIiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFwcF9uYW1lKSkpOworKyAgZ192YXJpYW50X2J1aWxkZXJfYWRkICgmYnVpbGRlciwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIihzdikiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAi UElEcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X2ZpeGVkX2Fy cmF5IChHX1ZBUklBTlRfVFlQRV9VSU5UMzIsICZwaWQsIDEsIDQpKTsKKysgIC8qIERlZmF1bHQg dG8gbGV0IHN5c3RlbWQgZ2FyYmFnZSBjb2xsZWN0IGZhaWxlZCBhcHBsaWNhdGlvbnMgd2UgbGF1 bmNoZWQuICovCisrICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZidWlsZGVyLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAiKHN2KSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICJDb2xs ZWN0TW9kZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmlu ZyAoImluYWN0aXZlLW9yLWZhaWxlZCIpKTsKKysKKysgIGdfdmFyaWFudF9idWlsZGVyX2Nsb3Nl ICgmYnVpbGRlcik7CisrCisrICBnX3ZhcmlhbnRfYnVpbGRlcl9vcGVuICgmYnVpbGRlciwgR19W QVJJQU5UX1RZUEUgKCJhKHNhKHN2KSkiKSk7CisrICBnX3ZhcmlhbnRfYnVpbGRlcl9jbG9zZSAo JmJ1aWxkZXIpOworKworKyAgZ19kYnVzX2Nvbm5lY3Rpb25fY2FsbCAoc2Vzc2lvbl9idXMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAib3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICIvb3JnL2ZyZWVkZXNrdG9wL3N5c3RlbWQxIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3Auc3lzdGVtZDEuTWFuYWdl ciIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RhcnRUcmFuc2llbnRVbml0IiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2VuZCAoJmJ1aWxkZXIp LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgR19WQVJJQU5UX1RZUEUgKCIobykiKSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PX0FVVE9fU1RBUlQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKKysKKysgIGdfZnJlZSAoYXBwaWQpOwor KyAgZ19mcmVlIChhcHBpZF9lc2NhcGVkKTsKKysgIGdfZnJlZSAoc25pZF9lc2NhcGVkKTsKKysg IGdfZnJlZSAodW5pdF9uYW1lKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytzeXN0ZW1kX3Njb3Bl X2NyZWF0ZWRfY2IgKEdPYmplY3QgICAgICAqb2JqZWN0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgR0FzeW5jUmVzdWx0ICpyZXN1bHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBn cG9pbnRlciAgICAgIHVzZXJfZGF0YSkKKyt7CisrICBHVmFyaWFudCAqcmVzID0gTlVMTDsKKysg IEdFcnJvciAqZXJyb3IgPSBOVUxMOworKworKyAgcmVzID0gZ19kYnVzX2Nvbm5lY3Rpb25fY2Fs bF9maW5pc2ggKEdfREJVU19DT05ORUNUSU9OIChvYmplY3QpLCByZXN1bHQsICZlcnJvcik7Cisr ICBpZiAoZXJyb3IgIT0gTlVMTCkKKysgICAgeworKyAgICAgIGdfZGVidWcgKCJGYWlsZWQgdG8g bW92ZSBuZXcgY2hpbGQgaW50byBzY29wZTogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisrICAgICAg Z19lcnJvcl9mcmVlIChlcnJvcik7CisrICAgIH0KKysKKysgIC8qIFVuYmxvY2sgdGhlIHdhaXRp bmcgd3JhcHBlciBiaW5hcnkuICovCisrICBjbG9zZSAoR1BPSU5URVJfVE9fSU5UICh1c2VyX2Rh dGEpKTsKKysKKysgIGlmIChyZXMpCisrICAgIGdfdmFyaWFudF91bnJlZiAocmVzKTsKKyt9Cisr I2VuZGlmCisrCisgc3RhdGljIGdib29sZWFuCisgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91 cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJ1c0Nvbm5lY3Rpb24gICAg ICAgICAgICAqc2Vzc2lvbl9idXMsCitAQCAtMjc1MCwxMyArMjg5MiwxNCBAQCBnX2Rlc2t0b3Bf YXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAg ICAgKmluZm8sCisgICBHTGlzdCAqb2xkX3VyaXM7CisgICBHTGlzdCAqZHVwX3VyaXM7CisgCist ICBjaGFyICoqYXJndiwgKiplbnZwOworKyAgR1N0cnYgYXJndiA9IE5VTEwsIGVudnAgPSBOVUxM OworKyAgR1N0cnYgd3JhcHBlZF9hcmd2ID0gTlVMTDsKKysgIEdMaXN0ICpsYXVuY2hlZF91cmlz ID0gTlVMTDsKKysgIGNoYXIgKnNuX2lkID0gTlVMTDsKKyAgIGludCBhcmdjOworIAorICAgZ19y ZXR1cm5fdmFsX2lmX2ZhaWwgKGluZm8gIT0gTlVMTCwgRkFMU0UpOworIAorLSAgYXJndiA9IE5V TEw7CistCisgICBpZiAobGF1bmNoX2NvbnRleHQpCisgICAgIGVudnAgPSBnX2FwcF9sYXVuY2hf Y29udGV4dF9nZXRfZW52aXJvbm1lbnQgKGxhdW5jaF9jb250ZXh0KTsKKyAgIGVsc2UKK0BAIC0y NzcwLDI3ICsyOTEzLDE5IEBAIGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3Nw YXduIChHRGVza3RvcEFwcEluZm8gICAgICAgICAgICAqaW5mbywKKyAgIGRvCisgICAgIHsKKyAg ICAgICBHUGlkIHBpZDsKKy0gICAgICBHTGlzdCAqbGF1bmNoZWRfdXJpczsKKyAgICAgICBHTGlz dCAqaXRlcjsKKy0gICAgICBjaGFyICpzbl9pZCA9IE5VTEw7CistICAgICAgY2hhciAqKndyYXBw ZWRfYXJndjsKKyAgICAgICBpbnQgaTsKKy0gICAgICBnc2l6ZSBqOworLSAgICAgIGNvbnN0IGdj aGFyICogY29uc3Qgd3JhcHBlcl9hcmd2W10gPQorLSAgICAgICAgeworLSAgICAgICAgICAiL2Jp bi9zaCIsCistICAgICAgICAgICItZSIsCistICAgICAgICAgICItdSIsCistICAgICAgICAgICIt YyIsICJleHBvcnQgR0lPX0xBVU5DSEVEX0RFU0tUT1BfRklMRV9QSUQ9JCQ7IGV4ZWMgXCIkQFwi IiwKKy0gICAgICAgICAgInNoIiwgIC8qIGFyZ3ZbMF0gZm9yIHNoICovCistICAgICAgICB9Owor KyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19CSU9OSUNfXykKKysgICAgICBT cGF3bldyYXBwZXJEYXRhIHdyYXBwZXJfZGF0YTsKKysjZW5kaWYKKysgICAgICBHU3Bhd25DaGls ZFNldHVwRnVuYyBzZXR1cCA9IHVzZXJfc2V0dXA7CisrICAgICAgZ3BvaW50ZXIgICAgICAgICAg ICAgc2V0dXBfZGF0YSA9IHVzZXJfc2V0dXBfZGF0YTsKKyAKKyAgICAgICBvbGRfdXJpcyA9IGR1 cF91cmlzOworICAgICAgIGlmICghZXhwYW5kX2FwcGxpY2F0aW9uX3BhcmFtZXRlcnMgKGluZm8s IGV4ZWNfbGluZSwgJmR1cF91cmlzLCAmYXJnYywgJmFyZ3YsIGVycm9yKSkKKy0gICAgICAgIGdv dG8gb3V0OworKyAgICAgICAgcmV0dXJuIEZBTFNFOworIAorICAgICAgIC8qIEdldCB0aGUgc3Vi c2V0IG9mIFVSSXMgd2UncmUgbGF1bmNoaW5nIHdpdGggdGhpcyBwcm9jZXNzICovCistICAgICAg bGF1bmNoZWRfdXJpcyA9IE5VTEw7CisgICAgICAgZm9yIChpdGVyID0gb2xkX3VyaXM7IGl0ZXIg IT0gTlVMTCAmJiBpdGVyICE9IGR1cF91cmlzOyBpdGVyID0gaXRlci0+bmV4dCkKKyAgICAgICAg IGxhdW5jaGVkX3VyaXMgPSBnX2xpc3RfcHJlcGVuZCAobGF1bmNoZWRfdXJpcywgaXRlci0+ZGF0 YSk7CisgICAgICAgbGF1bmNoZWRfdXJpcyA9IGdfbGlzdF9yZXZlcnNlIChsYXVuY2hlZF91cmlz KTsKK0BAIC0yNzk5LDcgKzI5MzQsNyBAQCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNf d2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAgICAgKmluZm8sCisgICAgICAgICB7 CisgICAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLCBHX0lPX0VSUk9SLCBHX0lP X0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVW5hYmxl IHRvIGZpbmQgdGVybWluYWwgcmVxdWlyZWQgZm9yIGFwcGxpY2F0aW9uIikpOworLSAgICAgICAg ICBnb3RvIG91dDsKKysgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgfQorIAorICAg ICAgIGlmIChpbmZvLT5maWxlbmFtZSkKK0BAIC0yODA4LDcgKzI5NDMsNiBAQCBnX2Rlc2t0b3Bf YXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAg ICAgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+ZmlsZW5h bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisgCistICAgICAg c25faWQgPSBOVUxMOworICAgICAgIGlmIChsYXVuY2hfY29udGV4dCkKKyAgICAgICAgIHsKKyAg ICAgICAgICAgR0xpc3QgKmxhdW5jaGVkX2ZpbGVzID0gY3JlYXRlX2ZpbGVzX2Zvcl91cmlzIChs YXVuY2hlZF91cmlzKTsKK0BAIC0yODM3LDM4ICsyOTcxLDkzIEBAIGdfZGVza3RvcF9hcHBfaW5m b19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3RvcEFwcEluZm8gICAgICAgICAgICAqaW5m bywKKyAgICAgICAgKiB3aXRoIGEgd3JhcHBlciBwcm9ncmFtIChncmVwIHRoZSBHTGliIGdpdCBo aXN0b3J5IGZvcgorICAgICAgICAqIGBnaW8tbGF1bmNoLWRlc2t0b3BgIGZvciBhbiBleGFtcGxl IG9mIHRoaXMgd2hpY2ggY291bGQgYmUKKyAgICAgICAgKiByZXN1cnJlY3RlZCkuICovCistICAg ICAgd3JhcHBlZF9hcmd2ID0gZ19uZXcgKGNoYXIgKiwgYXJnYyArIEdfTl9FTEVNRU5UUyAod3Jh cHBlcl9hcmd2KSArIDEpOworKyAgICAgIHdyYXBwZWRfYXJndiA9IGdfbmV3IChjaGFyICosIGFy Z2MgKyA2ICsgMSk7CisrCisrICAgICAgd3JhcHBlZF9hcmd2WzBdID0gZ19zdHJkdXAgKCIvYmlu L3NoIik7CisrICAgICAgd3JhcHBlZF9hcmd2WzFdID0gZ19zdHJkdXAgKCItZSIpOworKyAgICAg IHdyYXBwZWRfYXJndlsyXSA9IGdfc3RyZHVwICgiLXUiKTsKKysgICAgICB3cmFwcGVkX2FyZ3Zb M10gPSBnX3N0cmR1cCAoIi1jIik7CisrICAgICAgLyogYXJndW1lbnQgNCBpcyBmaWxsZWQgaW4g YmVsb3cgKi8KKysgICAgICB3cmFwcGVkX2FyZ3ZbNV0gPSBnX3N0cmR1cCAoInNoIik7CisgCist ICAgICAgZm9yIChqID0gMDsgaiA8IEdfTl9FTEVNRU5UUyAod3JhcHBlcl9hcmd2KTsgaisrKQor LSAgICAgICAgd3JhcHBlZF9hcmd2W2pdID0gZ19zdHJkdXAgKHdyYXBwZXJfYXJndltqXSk7Cisg ICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKy0gICAgICAgIHdyYXBwZWRfYXJndltp ICsgR19OX0VMRU1FTlRTICh3cmFwcGVyX2FyZ3YpXSA9IGdfc3RlYWxfcG9pbnRlciAoJmFyZ3Zb aV0pOworKyAgICAgICAgd3JhcHBlZF9hcmd2W2kgKyA2XSA9IGdfc3RlYWxfcG9pbnRlciAoJmFy Z3ZbaV0pOworKworKyAgICAgIHdyYXBwZWRfYXJndltpICsgNl0gPSBOVUxMOworKyAgICAgIGdf Y2xlYXJfcG9pbnRlciAoJmFyZ3YsIGdfZnJlZSk7CisrCisrI2lmIGRlZmluZWQoX19saW51eF9f KSAmJiAhZGVmaW5lZChfX0JJT05JQ19fKQorKyAgICAgIC8qIENyZWF0ZSBwaXBlcywgaWYgd2Ug dXNlIGEgc2V0dXAgZnVuYywgdGhlbiBzZXQgY2xvZXhlYywKKysgICAgICAgKiBvdGhlcndpc2Ug b3VyIHdyYXBwZXIgc2NyaXB0IHdpbGwgY2xvc2UgYm90aCBzaWRlcy4gKi8KKysgICAgICBpZiAo IWdfdW5peF9vcGVuX3BpcGUgKHdyYXBwZXJfZGF0YS5waXBlLCAwLCBOVUxMKSkKKysgICAgICAg IHsKKysgICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdfSU9fRVJST1IsIEdf SU9fRVJST1JfRkFJTEVELAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJVbmFi bGUgdG8gY3JlYXRlIHBpcGUgZm9yIHN5c3RlbWQgc3luY2hyb25pemF0aW9uIikpOworKyAgICAg ICAgICByZXR1cm4gRkFMU0U7CisrICAgICAgICB9CisrCisrICAgICAgLyogU2V0IENMT0VYRUMg b24gdGhlIHdyaXRlIHBpcGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gZGVhbCB3aXRoIGl0IGluIHRo ZSBjaGlsZC4gKi8KKysgICAgICBmY250bCAod3JhcHBlcl9kYXRhLnBpcGVbMV0sIEZfU0VURkQs IEZEX0NMT0VYRUMpOworIAorLSAgICAgIHdyYXBwZWRfYXJndltpICsgR19OX0VMRU1FTlRTICh3 cmFwcGVyX2FyZ3YpXSA9IE5VTEw7CistICAgICAgZ19mcmVlIChhcmd2KTsKKy0gICAgICBhcmd2 ID0gTlVMTDsKKysgICAgICBpZiAoIShzcGF3bl9mbGFncyAmIEdfU1BBV05fTEVBVkVfREVTQ1JJ UFRPUlNfT1BFTikpCisrICAgICAgICB7CisrICAgICAgICAgIC8qIEluIHRoaXMgY2FzZSwgd2Ug dXNlIGEgc2V0dXAgZnVuY3Rpb24gKHdoaWNoIGNvdWxkIHByb2JhYmx5IGFsc28KKysgICAgICAg ICAgICogb3ZlcndyaXRlIGVudnAgdG8gc2V0IEdJT19MQVVOQ0hFRF9ERVNLVE9QX0ZJTEVfUElE KS4KKysgICAgICAgICAgICoKKysgICAgICAgICAgICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3Qg aW5jdXIgYW4gYWRkaXRpb25hbCBjb3N0IGJlY2F1c2UKKysgICAgICAgICAgICogR19TUEFXTl9M RUFWRV9ERVNDUklQVE9SX09QRU4gbXVzdCBiZSBzZXQgaW4gb3JkZXIgdG8gdXNlCisrICAgICAg ICAgICAqIHBvc2l4X3NwYXduLiAqLworKyAgICAgICAgICB3cmFwcGVyX2RhdGEudXNlcl9zZXR1 cCA9IHNldHVwOworKyAgICAgICAgICB3cmFwcGVyX2RhdGEudXNlcl9zZXR1cF9kYXRhID0gc2V0 dXBfZGF0YTsKKysKKysgICAgICAgICAgc2V0dXAgPSBsYXVuY2hfdXJpc193aXRoX3NwYXduX2Rl bGF5X2V4ZWM7CisrICAgICAgICAgIHNldHVwX2RhdGEgPSAmd3JhcHBlcl9kYXRhOworKyAgICAg ICAgfQorKworKyAgICAgIHdyYXBwZWRfYXJndls0XSA9IGdfc3RyZHVwX3ByaW50ZiAoImV4cG9y dCBHSU9fTEFVTkNIRURfREVTS1RPUF9GSUxFX1BJRD0kJDsgY2F0IDwmJTEkZDsgZXhlYyBcIiRA XCIgJTEkZDwmLSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3 cmFwcGVyX2RhdGEucGlwZVswXSk7CisrI2Vsc2UKKysgICAgICB3cmFwcGVkX2FyZ3ZbNF0gPSBn X3N0cmR1cCAoImV4cG9ydCBHSU9fTEFVTkNIRURfREVTS1RPUF9GSUxFX1BJRD0kJDsgZXhlYyBc IiRAXCIiKTsKKysjZW5kaWYKKyAKKyAgICAgICBpZiAoIWdfc3Bhd25fYXN5bmNfd2l0aF9mZHMg KGluZm8tPnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVk X2FyZ3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZwLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bhd25fZmxhZ3MsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1c2VyX3NldHVwLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdXNlcl9zZXR1cF9kYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2V0dXAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXR1cF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluX2ZkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0X2ZkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RkZXJyX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXJyb3IpKQorICAgICAgICAgeworKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRl ZmluZWQoX19CSU9OSUNfXykKKysgICAgICAgICAgY2xvc2UgKHdyYXBwZXJfZGF0YS5waXBlWzBd KTsKKysgICAgICAgICAgY2xvc2UgKHdyYXBwZXJfZGF0YS5waXBlWzFdKTsKKysjZW5kaWYKKysK KyAgICAgICAgICAgaWYgKHNuX2lkKQorICAgICAgICAgICAgIGdfYXBwX2xhdW5jaF9jb250ZXh0 X2xhdW5jaF9mYWlsZWQgKGxhdW5jaF9jb250ZXh0LCBzbl9pZCk7CisgCistICAgICAgICAgIGdf ZnJlZSAoc25faWQpOworLSAgICAgICAgICBnX2xpc3RfZnJlZSAobGF1bmNoZWRfdXJpcyk7Cist CisgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgfQorIAorKyNpZiBkZWZpbmVkKF9fbGlu dXhfXykgJiYgIWRlZmluZWQoX19CSU9OSUNfXykKKysgICAgICAvKiBXZSBjbG9zZSB3cml0ZSBz aWRlIGFzeW5jaHJvbm91c2x5IGxhdGVyIG9uIHdoZW4gdGhlIGRidXMgY2FsbAorKyAgICAgICAq IHRvIHN5c3RlbWQgZmluaXNoZXMuICovCisrICAgICAgY2xvc2UgKHdyYXBwZXJfZGF0YS5waXBl WzBdKTsKKysKKysgICAgICBpZiAoc2Vzc2lvbl9idXMpCisrICAgICAgICBjcmVhdGVfc3lzdGVt ZF9zY29wZSAoc2Vzc2lvbl9idXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5m bywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3lzdGVtZF9zY29wZV9jcmVhdGVkX2NiLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAod3JhcHBlcl9kYXRhLnBpcGVbMV0pKTsK KysgICAgICBlbHNlCisrICAgICAgICBjbG9zZSAod3JhcHBlcl9kYXRhLnBpcGVbMV0pOworKyNl bmRpZgorKworICAgICAgIGlmIChwaWRfY2FsbGJhY2sgIT0gTlVMTCkKKyAgICAgICAgIHBpZF9j YWxsYmFjayAoaW5mbywgcGlkLCBwaWRfY2FsbGJhY2tfZGF0YSk7CisgCitAQCAtMjg5MywxOSAr MzA4MiwyMCBAQCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rl c2t0b3BBcHBJbmZvICAgICAgICAgICAgKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaGVkX3VyaXMp OworIAorLSAgICAgIGdfZnJlZSAoc25faWQpOworLSAgICAgIGdfbGlzdF9mcmVlIChsYXVuY2hl ZF91cmlzKTsKKy0KKy0gICAgICBnX3N0cmZyZWV2ICh3cmFwcGVkX2FyZ3YpOworLSAgICAgIHdy YXBwZWRfYXJndiA9IE5VTEw7CisrICAgICAgZ19jbGVhcl9wb2ludGVyICgmc25faWQsIGdfZnJl ZSk7CisrICAgICAgZ19jbGVhcl9wb2ludGVyICgmbGF1bmNoZWRfdXJpcywgZ19saXN0X2ZyZWUp OworKyAgICAgIGdfY2xlYXJfcG9pbnRlciAoJndyYXBwZWRfYXJndiwgZ19zdHJmcmVldik7Cisg ICAgIH0KKyAgIHdoaWxlIChkdXBfdXJpcyAhPSBOVUxMKTsKKyAKKyAgIGNvbXBsZXRlZCA9IFRS VUU7CisgCistIG91dDoKKytvdXQ6CisgICBnX3N0cmZyZWV2IChhcmd2KTsKKyAgIGdfc3RyZnJl ZXYgKGVudnApOworKyAgZ19jbGVhcl9wb2ludGVyICgmd3JhcHBlZF9hcmd2LCBnX3N0cmZyZWV2 KTsKKysgIGdfbGlzdF9mcmVlIChsYXVuY2hlZF91cmlzKTsKKysgIGdfZnJlZSAoc25faWQpOwor IAorICAgcmV0dXJuIGNvbXBsZXRlZDsKKyB9CistLSAKKzIuMzEuMQorCitGcm9tIGNkNjdhMWIw MjU2ZDIzOTdkYWMwODM2ZTE1NGYzNDQ5YjYzYTZiMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBCZW5qYW1pbiBCZXJnIDxiYmVyZ0ByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAyOCBK dWwgMjAyMCAxMjoxMToxMyArMDIwMAorU3ViamVjdDogW1BBVENIIDMvNF0gZ2Rlc2t0b3BhcHBp bmZvOiBIYW5kbGUgdGFzayBjb21wbGV0aW9uIGZyb20gc3Bhd24KKyBmdW5jdGlvbgorCitUaGlz IGFsbG93cyBkZWxheWluZyB0aGUgcmV0dXJuIG9mIHRoZSB0YXNrIHVudGlsIGFsbCBkYnVzIGNh bGxzIChpbgorcGFydGljdWxhciB0aGUgb25lcyB0byBzZXR1cCB0aGUgc2NvcGUpIGhhdmUgZmlu aXNoZWQuCisKK1RoaXMgZml4ZXMgdGhlIGJlaGF2aW91ciBvZiB0aGUgcHJldmlvdXMgY29tbWl0 IHdoaWNoIHdvdWxkIG5vdAorY29ycmVjdGx5IG1vdmUgdGhlIHByb2Nlc3MgaW50byB0aGUgc2Nv cGUgaWYgdGhlIGFwcGxpY2F0aW9uIGV4aXRlZAorcmlnaHQgYWZ0ZXIgdGhlIHRhc2sgcmV0dXJu ZWQuCistLS0KKyBnaW8vZ2Rlc2t0b3BhcHBpbmZvLmMgfCAyMTIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE0NiBpbnNlcnRpb25z KCspLCA2NiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dpby9nZGVza3RvcGFwcGluZm8u YyBiL2dpby9nZGVza3RvcGFwcGluZm8uYworaW5kZXggYWZkY2Q0MmFjLi44ZDBmMTY4OGUgMTAw NjQ0CistLS0gYS9naW8vZ2Rlc2t0b3BhcHBpbmZvLmMKKysrKyBiL2dpby9nZGVza3RvcGFwcGlu Zm8uYworQEAgLTI4NDksMTEgKzI4NDksMTcgQEAgY3JlYXRlX3N5c3RlbWRfc2NvcGUgKEdEQnVz Q29ubmVjdGlvbiAgICAqc2Vzc2lvbl9idXMsCisgICBnX2ZyZWUgKHVuaXRfbmFtZSk7CisgfQor IAorK3R5cGVkZWYgc3RydWN0IHsKKysgIEdUYXNrICp0YXNrOworKyAgaW50IGZkOworK30gU2Nv cGVDcmVhdGVkRGF0YTsKKysKKyBzdGF0aWMgdm9pZAorIHN5c3RlbWRfc2NvcGVfY3JlYXRlZF9j YiAoR09iamVjdCAgICAgICpvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5 bmNSZXN1bHQgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAg ICAgdXNlcl9kYXRhKQorIHsKKysgIFNjb3BlQ3JlYXRlZERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7 CisgICBHVmFyaWFudCAqcmVzID0gTlVMTDsKKyAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworIAor QEAgLTI4NjUsMTMgKzI4NzEsNDcgQEAgc3lzdGVtZF9zY29wZV9jcmVhdGVkX2NiIChHT2JqZWN0 ICAgICAgKm9iamVjdCwKKyAgICAgfQorIAorICAgLyogVW5ibG9jayB0aGUgd2FpdGluZyB3cmFw cGVyIGJpbmFyeS4gKi8KKy0gIGNsb3NlIChHUE9JTlRFUl9UT19JTlQgKHVzZXJfZGF0YSkpOwor KworKyAgY2xvc2UgKGRhdGEtPmZkKTsKKysKKysgIGlmIChkYXRhLT50YXNrKQorKyAgICB7Cisr ICAgICAgZ2ludCBwZW5kaW5nOworKyAgICAgIHBlbmRpbmcgPSBHUE9JTlRFUl9UT19JTlQgKGdf dGFza19nZXRfdGFza19kYXRhIChkYXRhLT50YXNrKSk7CisrICAgICAgcGVuZGluZyAtPSAxOwor KyAgICAgIGdfdGFza19zZXRfdGFza19kYXRhIChkYXRhLT50YXNrLCBHSU5UX1RPX1BPSU5URVIg KHBlbmRpbmcpLCBOVUxMKTsKKysKKysgICAgICBpZiAocGVuZGluZyA9PSAwICYmICFnX3Rhc2tf Z2V0X2NvbXBsZXRlZCAoZGF0YS0+dGFzaykpCisrICAgICAgICBnX3Rhc2tfcmV0dXJuX2Jvb2xl YW4gKGRhdGEtPnRhc2ssIFRSVUUpOworKyAgICB9CisgCisgICBpZiAocmVzKQorICAgICBnX3Zh cmlhbnRfdW5yZWYgKHJlcyk7CisrICBnX2NsZWFyX29iamVjdCAoJmRhdGEtPnRhc2spOworKyAg Z19mcmVlIChkYXRhKTsKKyB9CisgI2VuZGlmCisgCisrc3RhdGljIHZvaWQKKytsYXVuY2hfdXJp c193aXRoX3NwYXduX2ZsdXNoX2NiIChHT2JqZWN0ICAgICAgKm9iamVjdCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgKnJlc3VsdCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgIHVzZXJfZGF0YSkKKyt7CisrICBH VGFzayAqdGFzayA9IEdfVEFTSyAodXNlcl9kYXRhKTsKKysgIGdpbnQgcGVuZGluZzsKKysKKysg IGdfZGJ1c19jb25uZWN0aW9uX2ZsdXNoX2ZpbmlzaCAoR19EQlVTX0NPTk5FQ1RJT04gKG9iamVj dCksIHJlc3VsdCwgTlVMTCk7CisrCisrICBwZW5kaW5nID0gR1BPSU5URVJfVE9fSU5UIChnX3Rh c2tfZ2V0X3Rhc2tfZGF0YSAodGFzaykpOworKyAgcGVuZGluZyAtPSAxOworKyAgZ190YXNrX3Nl dF90YXNrX2RhdGEgKHRhc2ssIEdJTlRfVE9fUE9JTlRFUiAocGVuZGluZyksIE5VTEwpOworKwor KyAgaWYgKHBlbmRpbmcgPT0gMCAmJiAhZ190YXNrX2dldF9jb21wbGV0ZWQgKHRhc2spKQorKyAg ICBnX3Rhc2tfcmV0dXJuX2Jvb2xlYW4gKHRhc2ssIFRSVUUpOworKworKyAgZ19vYmplY3RfdW5y ZWYgKHRhc2spOworK30KKysKKyBzdGF0aWMgZ2Jvb2xlYW4KKyBnX2Rlc2t0b3BfYXBwX2luZm9f bGF1bmNoX3VyaXNfd2l0aF9zcGF3biAoR0Rlc2t0b3BBcHBJbmZvICAgICAgICAgICAgKmluZm8s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVj dGlvbiAgICAgICAgICAgICpzZXNzaW9uX2J1cywKK0BAIC0yODg2LDkgKzI5MjYsMTAgQEAgZ19k ZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAg ICAgICAgICAgICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW5fZmQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgICAg ICBzdGRvdXRfZmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdpbnQgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJfZmQsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgKipl cnJvcikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Rhc2sg ICAgICAgICAgICAgICAgICAgICAgKnRhc2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgKiplcnJvcl9vdXQpCisg eworLSAgZ2Jvb2xlYW4gY29tcGxldGVkID0gRkFMU0U7CisrICBHRXJyb3IgKmVycm9yID0gTlVM TDsKKyAgIEdMaXN0ICpvbGRfdXJpczsKKyAgIEdMaXN0ICpkdXBfdXJpczsKKyAKK0BAIC0yODk4 LDggKzI5MzksMTUgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24g KEdEZXNrdG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAorICAgY2hhciAqc25faWQgPSBOVUxM OworICAgaW50IGFyZ2M7CisgCisrICAvKiBXZSBtYXkgZ2V0IGEgdGFzayB0byByZXBvcnQgYmFj ayBvbiBvciBhbiBlcnJvci4gQnV0IG5ldmVyIGJvdGguICovCisrICBnX2Fzc2VydCAoISh0YXNr ICYmIGVycm9yX291dCkpOworICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluZm8gIT0gTlVMTCwg RkFMU0UpOworIAorKyAgLyogU3Vycm91bmRpbmcgY29kZSBtdXN0IG5vdCBoYXZlIHNldCBhbnkg ZGF0YSBvbiB0aGUgdGFzaworKyAgICogKGl0IGlzIGNsZWFyZWQgYmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbikuICovCisrICBpZiAoc2Vzc2lvbl9idXMgJiYgdGFzaykKKysgICAgZ19hc3Nl cnQgKGdfdGFza19nZXRfdGFza19kYXRhICh0YXNrKSA9PSBOVUxMKTsKKysKKyAgIGlmIChsYXVu Y2hfY29udGV4dCkKKyAgICAgZW52cCA9IGdfYXBwX2xhdW5jaF9jb250ZXh0X2dldF9lbnZpcm9u bWVudCAobGF1bmNoX2NvbnRleHQpOworICAgZWxzZQorQEAgLTI5MjIsOCArMjk3MCw4IEBAIGdf ZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3RvcEFwcEluZm8g ICAgICAgICAgICAqaW5mbywKKyAgICAgICBncG9pbnRlciAgICAgICAgICAgICBzZXR1cF9kYXRh ID0gdXNlcl9zZXR1cF9kYXRhOworIAorICAgICAgIG9sZF91cmlzID0gZHVwX3VyaXM7CistICAg ICAgaWYgKCFleHBhbmRfYXBwbGljYXRpb25fcGFyYW1ldGVycyAoaW5mbywgZXhlY19saW5lLCAm ZHVwX3VyaXMsICZhcmdjLCAmYXJndiwgZXJyb3IpKQorLSAgICAgICAgcmV0dXJuIEZBTFNFOwor KyAgICAgIGlmICghZXhwYW5kX2FwcGxpY2F0aW9uX3BhcmFtZXRlcnMgKGluZm8sIGV4ZWNfbGlu ZSwgJmR1cF91cmlzLCAmYXJnYywgJmFyZ3YsICZlcnJvcikpCisrICAgICAgICBnb3RvIG91dDsK KyAKKyAgICAgICAvKiBHZXQgdGhlIHN1YnNldCBvZiBVUklzIHdlJ3JlIGxhdW5jaGluZyB3aXRo IHRoaXMgcHJvY2VzcyAqLworICAgICAgIGZvciAoaXRlciA9IG9sZF91cmlzOyBpdGVyICE9IE5V TEwgJiYgaXRlciAhPSBkdXBfdXJpczsgaXRlciA9IGl0ZXItPm5leHQpCitAQCAtMjkzMiw5ICsy OTgwLDkgQEAgZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKEdEZXNr dG9wQXBwSW5mbyAgICAgICAgICAgICppbmZvLAorIAorICAgICAgIGlmIChpbmZvLT50ZXJtaW5h bCAmJiAhcHJlcGVuZF90ZXJtaW5hbF90b192ZWN0b3IgKCZhcmdjLCAmYXJndikpCisgICAgICAg ICB7CistICAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLCBHX0lPX0VSUk9SLCBH X0lPX0VSUk9SX0ZBSUxFRCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVW5h YmxlIHRvIGZpbmQgdGVybWluYWwgcmVxdWlyZWQgZm9yIGFwcGxpY2F0aW9uIikpOworLSAgICAg ICAgICByZXR1cm4gRkFMU0U7CisrICAgICAgICAgIGVycm9yID0gZ19lcnJvcl9uZXdfbGl0ZXJh bCAoR19JT19FUlJPUiwgR19JT19FUlJPUl9GQUlMRUQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXygiVW5hYmxlIHRvIGZpbmQgdGVybWluYWwgcmVxdWlyZWQgZm9y IGFwcGxpY2F0aW9uIikpOworKyAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgIH0KKyAKKyAg ICAgICBpZiAoaW5mby0+ZmlsZW5hbWUpCitAQCAtMjk5MSw5ICszMDM5LDkgQEAgZ19kZXNrdG9w X2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKEdEZXNrdG9wQXBwSW5mbyAgICAgICAg ICAgICppbmZvLAorICAgICAgICAqIG90aGVyd2lzZSBvdXIgd3JhcHBlciBzY3JpcHQgd2lsbCBj bG9zZSBib3RoIHNpZGVzLiAqLworICAgICAgIGlmICghZ191bml4X29wZW5fcGlwZSAod3JhcHBl cl9kYXRhLnBpcGUsIDAsIE5VTEwpKQorICAgICAgICAgeworLSAgICAgICAgICBnX3NldF9lcnJv cl9saXRlcmFsIChlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJPUl9GQUlMRUQsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlVuYWJsZSB0byBjcmVhdGUgcGlwZSBmb3Igc3lz dGVtZCBzeW5jaHJvbml6YXRpb24iKSk7CistICAgICAgICAgIHJldHVybiBGQUxTRTsKKysgICAg ICAgICAgZXJyb3IgPSBnX2Vycm9yX25ld19saXRlcmFsIChHX0lPX0VSUk9SLCBHX0lPX0VSUk9S X0ZBSUxFRCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJVbmFi bGUgdG8gY3JlYXRlIHBpcGUgZm9yIHN5c3RlbWQgc3luY2hyb25pemF0aW9uIikpOworKyAgICAg ICAgICBnb3RvIG91dDsKKyAgICAgICAgIH0KKyAKKyAgICAgICAvKiBTZXQgQ0xPRVhFQyBvbiB0 aGUgd3JpdGUgcGlwZSwgc28gd2UgZG9uJ3QgbmVlZCB0byBkZWFsIHdpdGggaXQgaW4gdGhlIGNo aWxkLiAqLworQEAgLTMwMzAsNyArMzA3OCw3IEBAIGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hf dXJpc193aXRoX3NwYXduIChHRGVza3RvcEFwcEluZm8gICAgICAgICAgICAqaW5mbywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluX2ZkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0X2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RkZXJyX2ZkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXJyb3IpKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKSkK KyAgICAgICAgIHsKKyAjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fQklPTklD X18pCisgICAgICAgICAgIGNsb3NlICh3cmFwcGVyX2RhdGEucGlwZVswXSk7CitAQCAtMzA0OSwx MSArMzA5NywyOSBAQCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNfd2l0aF9zcGF3biAo R0Rlc2t0b3BBcHBJbmZvICAgICAgICAgICAgKmluZm8sCisgICAgICAgY2xvc2UgKHdyYXBwZXJf ZGF0YS5waXBlWzBdKTsKKyAKKyAgICAgICBpZiAoc2Vzc2lvbl9idXMpCistICAgICAgICBjcmVh dGVfc3lzdGVtZF9zY29wZSAoc2Vzc2lvbl9idXMsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW5mbywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZF9zY29wZV9jcmVhdGVkX2NiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAod3JhcHBlcl9kYXRhLnBp cGVbMV0pKTsKKysgICAgICAgIHsKKysgICAgICAgICAgU2NvcGVDcmVhdGVkRGF0YSAqZGF0YTsK KysKKysgICAgICAgICAgZGF0YSA9IGdfbmV3MCAoU2NvcGVDcmVhdGVkRGF0YSwgMSk7CisrCisr ICAgICAgICAgIGlmICh0YXNrKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGdpbnQg cGVuZGluZzsKKysgICAgICAgICAgICAgIHBlbmRpbmcgPSBHUE9JTlRFUl9UT19JTlQgKGdfdGFz a19nZXRfdGFza19kYXRhICh0YXNrKSk7CisrICAgICAgICAgICAgICBwZW5kaW5nICs9IDE7Cisr ICAgICAgICAgICAgICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSAodGFzaywgR0lOVF9UT19QT0lOVEVS IChwZW5kaW5nKSwgTlVMTCk7CisrCisrICAgICAgICAgICAgICBkYXRhLT50YXNrID0gZ19vYmpl Y3RfcmVmICh0YXNrKTsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgIGRhdGEtPmZkID0g d3JhcHBlcl9kYXRhLnBpcGVbMV07CisrCisrICAgICAgICAgIGNyZWF0ZV9zeXN0ZW1kX3Njb3Bl IChzZXNzaW9uX2J1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8sCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzeXN0ZW1kX3Njb3BlX2NyZWF0ZWRfY2IsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhKTsKKysgICAgICAgIH0KKyAgICAgICBlbHNlCisgICAgICAg ICBjbG9zZSAod3JhcHBlcl9kYXRhLnBpcGVbMV0pOworICNlbmRpZgorQEAgLTMwODgsOCArMzE1 NCw2IEBAIGdfZGVza3RvcF9hcHBfaW5mb19sYXVuY2hfdXJpc193aXRoX3NwYXduIChHRGVza3Rv cEFwcEluZm8gICAgICAgICAgICAqaW5mbywKKyAgICAgfQorICAgd2hpbGUgKGR1cF91cmlzICE9 IE5VTEwpOworIAorLSAgY29tcGxldGVkID0gVFJVRTsKKy0KKyBvdXQ6CisgICBnX3N0cmZyZWV2 IChhcmd2KTsKKyAgIGdfc3RyZnJlZXYgKGVudnApOworQEAgLTMwOTcsNyArMzE2MSw1MiBAQCBv dXQ6CisgICBnX2xpc3RfZnJlZSAobGF1bmNoZWRfdXJpcyk7CisgICBnX2ZyZWUgKHNuX2lkKTsK KyAKKy0gIHJldHVybiBjb21wbGV0ZWQ7CisrICBpZiAoIWVycm9yKQorKyAgICB7CisrICAgICAg aWYgKHNlc3Npb25fYnVzICYmIHRhc2spCisrICAgICAgICB7CisrICAgICAgICAgIEdDYW5jZWxs YWJsZSAqY2FuY2VsbGFibGUgPSBnX3Rhc2tfZ2V0X2NhbmNlbGxhYmxlICh0YXNrKTsKKysgICAg ICAgICAgZ2ludCBwZW5kaW5nOworKyAgICAgICAgICBwZW5kaW5nID0gR1BPSU5URVJfVE9fSU5U IChnX3Rhc2tfZ2V0X3Rhc2tfZGF0YSAodGFzaykpOworKyAgICAgICAgICBwZW5kaW5nICs9IDE7 CisrICAgICAgICAgIGdfdGFza19zZXRfdGFza19kYXRhICh0YXNrLCBHSU5UX1RPX1BPSU5URVIg KHBlbmRpbmcpLCBOVUxMKTsKKysKKysgICAgICAgICAgLyogRklYTUU6IFRoZSBELUJ1cyBtZXNz YWdlIGZyb20gdGhlIG5vdGlmeV9kZXNrdG9wX2xhdW5jaCgpIGZ1bmN0aW9uCisrICAgICAgICAg ICAqIGNhbiBiZSBzdGlsbCBsb3N0IGV2ZW4gaWYgZmx1c2ggaXMgY2FsbGVkIGxhdGVyLiBTZWU6 CisrICAgICAgICAgICAqIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kYnVzL2RidXMv aXNzdWVzLzcyCisrICAgICAgICAgICAqLworKyAgICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9m bHVzaCAoc2Vzc2lvbl9idXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj YW5jZWxsYWJsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaF91 cmlzX3dpdGhfc3Bhd25fZmx1c2hfY2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnX3N0ZWFsX3BvaW50ZXIgKCZ0YXNrKSk7CisrICAgICAgICB9CisrICAgICAgZWxzZSBp ZiAoc2Vzc2lvbl9idXMpCisrICAgICAgICB7CisrICAgICAgICAgIC8qIE5vIHRhc2sgYXZhaWxh YmxlLiAqLworKyAgICAgICAgICBnX2RidXNfY29ubmVjdGlvbl9mbHVzaCAoc2Vzc2lvbl9idXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwpOworKyAgICAgICAgfQorKyAgICAgIGVsc2UgaWYgKHRhc2spCisrICAg ICAgICB7CisrICAgICAgICAgIC8qIFJldHVybiB0aGUgZ2l2ZW4gdGFzay4gKi8KKysgICAgICAg ICAgZ190YXNrX3JldHVybl9ib29sZWFuICh0YXNrLCBUUlVFKTsKKysgICAgICAgICAgZ19vYmpl Y3RfdW5yZWYgKHRhc2spOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlCisrICAgIHsKKysg ICAgICBpZiAodGFzaykKKysgICAgICAgIHsKKysgICAgICAgICAgZ190YXNrX3JldHVybl9lcnJv ciAodGFzaywgZXJyb3IpOworKyAgICAgICAgICBnX29iamVjdF91bnJlZiAodGFzayk7CisrICAg ICAgICB9CisrICAgICAgZWxzZQorKyAgICAgICAgZ19wcm9wYWdhdGVfZXJyb3IgKGVycm9yX291 dCwgZXJyb3IpOworKyAgICB9CisrCisrICByZXR1cm4gIWVycm9yOworIH0KKyAKKyBzdGF0aWMg Z2NoYXIgKgorQEAgLTMyNDYsMTcgKzMzNTUsOSBAQCBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNo X3VyaXNfaW50ZXJuYWwgKEdBcHBJbmZvICAgICAgICAgICAgICAgICAgICphcHBpbmZvLAorICAg ICBzdWNjZXNzID0gZ19kZXNrdG9wX2FwcF9pbmZvX2xhdW5jaF91cmlzX3dpdGhfc3Bhd24gKGlu Zm8sIHNlc3Npb25fYnVzLCBpbmZvLT5leGVjLCB1cmlzLCBsYXVuY2hfY29udGV4dCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGF3 bl9mbGFncywgdXNlcl9zZXR1cCwgdXNlcl9zZXR1cF9kYXRhLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF9jYWxsYmFjaywgcGlk X2NhbGxiYWNrX2RhdGEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RkaW5fZmQsIHN0ZG91dF9mZCwgc3RkZXJyX2ZkLCBlcnJvcik7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RkaW5fZmQsIHN0ZG91dF9mZCwgc3RkZXJyX2ZkLCBOVUxMLCBlcnJvcik7CisgCistICBp ZiAoc2Vzc2lvbl9idXMgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIC8qIFRoaXMgYXN5bmNocm9u b3VzIGZsdXNoIGhvbGRzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGNvbXBsZXRlcywKKy0gICAgICAg KiB3aGljaCBlbnN1cmVzIHRoYXQgdGhlIGZvbGxvd2luZyB1bnJlZiB3b24ndCBpbW1lZGlhdGVs eSBraWxsCistICAgICAgICogdGhlIGNvbm5lY3Rpb24gaWYgd2Ugd2VyZSB0aGUgaW5pdGlhbCBv d25lci4KKy0gICAgICAgKi8KKy0gICAgICBnX2RidXNfY29ubmVjdGlvbl9mbHVzaCAoc2Vzc2lv bl9idXMsIE5VTEwsIE5VTEwsIE5VTEwpOworLSAgICAgIGdfb2JqZWN0X3VucmVmIChzZXNzaW9u X2J1cyk7CistICAgIH0KKysgIGdfY2xlYXJfb2JqZWN0ICgmc2Vzc2lvbl9idXMpOworIAorICAg cmV0dXJuIHN1Y2Nlc3M7CisgfQorQEAgLTMzMTAsMTggKzM0MTEsNiBAQCBsYXVuY2hfdXJpc193 aXRoX2RidXNfY2IgKEdPYmplY3QgICAgICAqb2JqZWN0LAorICAgZ19vYmplY3RfdW5yZWYgKHRh c2spOworIH0KKyAKKy1zdGF0aWMgdm9pZAorLWxhdW5jaF91cmlzX2ZsdXNoX2NiIChHT2JqZWN0 ICAgICAgKm9iamVjdCwKKy0gICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXN1 bHQsCistICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgdXNlcl9kYXRhKQorLXsK Ky0gIEdUYXNrICp0YXNrID0gR19UQVNLICh1c2VyX2RhdGEpOworLQorLSAgZ19kYnVzX2Nvbm5l Y3Rpb25fZmx1c2hfZmluaXNoIChHX0RCVVNfQ09OTkVDVElPTiAob2JqZWN0KSwgcmVzdWx0LCBO VUxMKTsKKy0gIGdfdGFza19yZXR1cm5fYm9vbGVhbiAodGFzaywgVFJVRSk7CistICBnX29iamVj dF91bnJlZiAodGFzayk7CistfQorLQorIHN0YXRpYyB2b2lkCisgbGF1bmNoX3VyaXNfYnVzX2dl dF9jYiAoR09iamVjdCAgICAgICpvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0Fz eW5jUmVzdWx0ICpyZXN1bHQsCitAQCAtMzMzMCwxMiArMzQxOSwyMCBAQCBsYXVuY2hfdXJpc19i dXNfZ2V0X2NiIChHT2JqZWN0ICAgICAgKm9iamVjdCwKKyAgIEdUYXNrICp0YXNrID0gR19UQVNL ICh1c2VyX2RhdGEpOworICAgR0Rlc2t0b3BBcHBJbmZvICppbmZvID0gR19ERVNLVE9QX0FQUF9J TkZPIChnX3Rhc2tfZ2V0X3NvdXJjZV9vYmplY3QgKHRhc2spKTsKKyAgIExhdW5jaFVyaXNEYXRh ICpkYXRhID0gZ190YXNrX2dldF90YXNrX2RhdGEgKHRhc2spOworKyAgTGF1bmNoVXJpc0RhdGEg KmRhdGFfY29weSA9IE5VTEw7CisgICBHQ2FuY2VsbGFibGUgKmNhbmNlbGxhYmxlID0gZ190YXNr X2dldF9jYW5jZWxsYWJsZSAodGFzayk7CisgICBHREJ1c0Nvbm5lY3Rpb24gKnNlc3Npb25fYnVz OworLSAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgCisgICBzZXNzaW9uX2J1cyA9IGdfYnVzX2dl dF9maW5pc2ggKHJlc3VsdCwgTlVMTCk7CisgCisrICBkYXRhX2NvcHkgPSBnX25ldzAgKExhdW5j aFVyaXNEYXRhLCAxKTsKKysgIGRhdGFfY29weS0+YXBwaW5mbyA9IGdfc3RlYWxfcG9pbnRlciAo JmRhdGEtPmFwcGluZm8pOworKyAgZGF0YV9jb3B5LT51cmlzID0gZ19zdGVhbF9wb2ludGVyICgm ZGF0YS0+dXJpcyk7CisrICBkYXRhX2NvcHktPmNvbnRleHQgPSBnX3N0ZWFsX3BvaW50ZXIgKCZk YXRhLT5jb250ZXh0KTsKKysKKysgIC8qIEFsbG93IG90aGVyIGRhdGEgdG8gYmUgYXR0YWNoZWQg dG8gdGhlIHRhc2suICovCisrICBnX3Rhc2tfc2V0X3Rhc2tfZGF0YSAodGFzaywgTlVMTCwgTlVM TCk7CisrCisgICBpZiAoc2Vzc2lvbl9idXMgJiYgaW5mby0+YXBwX2lkKQorICAgICB7CisgICAg ICAgLyogRklYTUU6IFRoZSBnX2RvY3VtZW50X3BvcnRhbF9hZGRfZG9jdW1lbnRzKCkgZnVuY3Rp b24sIHdoaWNoIGlzIGNhbGxlZAorQEAgLTMzNDMsMzQgKzM0NDAsMjEgQEAgbGF1bmNoX3VyaXNf YnVzX2dldF9jYiAoR09iamVjdCAgICAgICpvYmplY3QsCisgICAgICAgICogdXNlcyBibG9ja2lu ZyBjYWxscy4KKyAgICAgICAgKi8KKyAgICAgICBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3Vy aXNfd2l0aF9kYnVzIChpbmZvLCBzZXNzaW9uX2J1cywKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT51cmlzLCBkYXRhLT5jb250ZXh0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfY29weS0+ dXJpcywgZGF0YV9jb3B5LT5jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhbmNlbGxhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaF91cmlzX3dpdGhfZGJ1c19jYiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3N0ZWFsX3BvaW50 ZXIgKCZ0YXNrKSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIC8qIEZJWE1FOiBU aGUgRC1CdXMgbWVzc2FnZSBmcm9tIHRoZSBub3RpZnlfZGVza3RvcF9sYXVuY2goKSBmdW5jdGlv bgorLSAgICAgICAqIGNhbiBiZSBzdGlsbCBsb3N0IGV2ZW4gaWYgZmx1c2ggaXMgY2FsbGVkIGxh dGVyLiBTZWU6CistICAgICAgICogaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RidXMv ZGJ1cy9pc3N1ZXMvNzIKKy0gICAgICAgKi8KKyAgICAgICBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1 bmNoX3VyaXNfd2l0aF9zcGF3biAoaW5mbywgc2Vzc2lvbl9idXMsIGluZm8tPmV4ZWMsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnVyaXMs IGRhdGEtPmNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGFfY29weS0+dXJpcywgZGF0YV9jb3B5LT5jb250ZXh0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfU1BBV05fRkxBR1NfREVG QVVMVCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgLTEsIC0xLCAtMSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yKTsKKy0gICAgICBpZiAoZXJyb3Ig IT0gTlVMTCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgZ190YXNrX3JldHVybl9lcnJvciAodGFz aywgZ19zdGVhbF9wb2ludGVyICgmZXJyb3IpKTsKKy0gICAgICAgICAgZ19vYmplY3RfdW5yZWYg KHRhc2spOworLSAgICAgICAgfQorLSAgICAgIGVsc2UKKy0gICAgICAgIGdfZGJ1c19jb25uZWN0 aW9uX2ZsdXNoIChzZXNzaW9uX2J1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjYW5jZWxsYWJsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXVuY2hf dXJpc19mbHVzaF9jYiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3N0ZWFs X3BvaW50ZXIgKCZ0YXNrKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdfc3RlYWxfcG9pbnRlciAoJnRhc2spLCBOVUxMKTsKKyAgICAgfQorIAor KyAgbGF1bmNoX3VyaXNfZGF0YV9mcmVlIChkYXRhX2NvcHkpOworICAgZ19jbGVhcl9vYmplY3Qg KCZzZXNzaW9uX2J1cyk7CisgfQorIAorQEAgLTUxODYsMTYgKzUyNzAsMTIgQEAgZ19kZXNrdG9w X2FwcF9pbmZvX2xhdW5jaF9hY3Rpb24gKEdEZXNrdG9wQXBwSW5mbyAgICppbmZvLAorICAgICAg IGlmIChleGVjX2xpbmUpCisgICAgICAgICBnX2Rlc2t0b3BfYXBwX2luZm9fbGF1bmNoX3VyaXNf d2l0aF9zcGF3biAoaW5mbywgc2Vzc2lvbl9idXMsIGV4ZWNfbGluZSwgTlVMTCwgbGF1bmNoX2Nv bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgX1NQQVdOX0ZMQUdTX0RFRkFVTFQsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSwg TlVMTCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLTEsIC0xLCAtMSwgTlVMTCwgTlVMTCk7CisgCisgICAgICAgZ19mcmVlIChleGVjX2xpbmUp OworICAgICB9CisgCistICBpZiAoc2Vzc2lvbl9idXMgIT0gTlVMTCkKKy0gICAgeworLSAgICAg IGdfZGJ1c19jb25uZWN0aW9uX2ZsdXNoIChzZXNzaW9uX2J1cywgTlVMTCwgTlVMTCwgTlVMTCk7 CistICAgICAgZ19vYmplY3RfdW5yZWYgKHNlc3Npb25fYnVzKTsKKy0gICAgfQorKyAgZ19jbGVh cl9vYmplY3QgKCZzZXNzaW9uX2J1cyk7CisgfQorIC8qIEVwaWxvZ3VlIHt7ezEgKi8KKyAKKy0t IAorMi4zMS4xCisKK0Zyb20gOGRhOGEzZWY2ZGY4YWY2ZGU4YmQzODgxOTJiZWJlOGI1MWIzZTc4 MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJlbmphbWluIEJlcmcgPGJiZXJnQHJl ZGhhdC5jb20+CitEYXRlOiBUaHUsIDE3IFNlcCAyMDIwIDE3OjM1OjU4ICswMjAwCitTdWJqZWN0 OiBbUEFUQ0ggNC80XSBnZGVza3RvcGFwcGluZm86IEFkZCBTb3VyY2VQYXRoPSB0byB0cmFuc2ll bnQgc3lzdGVtZAorIHVuaXRzCisKK3N5c3RlbWQgYWxsb3dzIHNldHRpbmcgYSBTb3VyY2VQYXRo PSB3aGljaCBzaG93cyB0aGUgZmlsZSB0aGF0IHRoZSB1bml0CitoYXMgYmVlbiBnZW5lcmF0ZWQg ZnJvbS4gS0RFIGlzIHN0YXJ0aW5nIHRvIHNldCB0aGlzIGFuZCBpdCBzZWVtcyBsaWtlIGEKK2dv b2QgaWRlYSwgc28gZG8gdGhlIHNhbWUgaGVyZS4KKworU2VlIGh0dHBzOi8vaW52ZW50LmtkZS5v cmcvZnJhbWV3b3Jrcy9raW8vLS9tZXJnZV9yZXF1ZXN0cy8xMjQKKy0tLQorIGdpby9nZGVza3Rv cGFwcGluZm8uYyB8IDEzICsrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0 aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2lvL2dkZXNrdG9wYXBwaW5mby5jIGIvZ2lvL2dkZXNr dG9wYXBwaW5mby5jCitpbmRleCA4ZDBmMTY4OGUuLmE4MzNkZTRlNiAxMDA2NDQKKy0tLSBhL2dp by9nZGVza3RvcGFwcGluZm8uYworKysrIGIvZ2lvL2dkZXNrdG9wYXBwaW5mby5jCitAQCAtMjc3 Nyw2ICsyNzc3LDcgQEAgY3JlYXRlX3N5c3RlbWRfc2NvcGUgKEdEQnVzQ29ubmVjdGlvbiAgICAq c2Vzc2lvbl9idXMsCisgeworICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CisgICBjb25zdCBj aGFyICphcHBfbmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUgKCk7CisrICBjb25zdCBjaGFy ICpzb3VyY2VfcGF0aCA9IE5VTEw7CisgICBjaGFyICphcHBpZCA9IE5VTEw7CisgICBjaGFyICph cHBpZF9lc2NhcGVkID0gTlVMTDsKKyAgIGNoYXIgKnNuaWRfZXNjYXBlZCA9IE5VTEw7CitAQCAt MjgwMiw2ICsyODAzLDggQEAgY3JlYXRlX3N5c3RlbWRfc2NvcGUgKEdEQnVzQ29ubmVjdGlvbiAg ICAqc2Vzc2lvbl9idXMsCisgICAgKi8KKyAgIHVuaXRfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAo ImFwcC1nbGliLSVzLSVkLnNjb3BlIiwgYXBwaWRfZXNjYXBlZCwgcGlkKTsKKyAKKysgIHNvdXJj ZV9wYXRoID0gZ19kZXNrdG9wX2FwcF9pbmZvX2dldF9maWxlbmFtZSAoaW5mbyk7CisrCisgICBn X3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEUgKCIoc3NhKHN2 KWEoc2Eoc3YpKSkiKSk7CisgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZidWlsZGVyLCAicyIs IHVuaXRfbmFtZSk7CisgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZidWlsZGVyLCAicyIsICJm YWlsIik7CitAQCAtMjgxNSw2ICsyODE4LDE2IEBAIGNyZWF0ZV9zeXN0ZW1kX3Njb3BlIChHREJ1 c0Nvbm5lY3Rpb24gICAgKnNlc3Npb25fYnVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJEZXNjcmlwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25l d190YWtlX3N0cmluZyAoZ19zdHJkdXBfcHJpbnRmICgiQXBwbGljYXRpb24gbGF1bmNoZWQgYnkg JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXBwX25hbWUpKSk7CisrCisrICAvKiBJZiB3ZSBoYXZlIGEg LmRlc2t0b3AgZmlsZSwgZG9jdW1lbnQgdGhhdCB0aGUgc2NvcGUgaGFzIGJlZW4gImdlbmVyYXRl ZCIKKysgICAqIGZyb20gaXQuCisrICAgKi8KKysgIGlmIChzb3VyY2VfcGF0aCAmJiBnX3V0Zjhf dmFsaWRhdGUgKHNvdXJjZV9wYXRoLCAtMSwgTlVMTCkpCisrICAgIGdfdmFyaWFudF9idWlsZGVy X2FkZCAoJmJ1aWxkZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIihzdikiLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICJTb3VyY2VQYXRoIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyAoc291cmNlX3BhdGgpKTsKKysKKyAgIGdf dmFyaWFudF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICIoc3YpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlBJRHMiLAorLS0gCisyLjMxLjEK CmRpZmYgLS1naXQgYS9nbGliMi5zcGVjIGIvZ2xpYjIuc3BlYwppbmRleCA5MWUwMzFlLi5hNDVj YTZlIDEwMDY0NAotLS0gYS9nbGliMi5zcGVjCisrKyBiL2dsaWIyLnNwZWMKQEAgLTEsMjUgKzEs MjQgQEAKKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xOTcz MzA0CislZ2xvYmFsIF9fYnJwX2NoZWNrX3JwYXRocyAle25pbH0KKwogTmFtZTogZ2xpYjIKIFZl cnNpb246IDIuNjguMgotUmVsZWFzZTogMSV7P2Rpc3R9CitSZWxlYXNlOiAyJXs/ZGlzdH0KIFN1 bW1hcnk6IEEgbGlicmFyeSBvZiBoYW5keSB1dGlsaXR5IGZ1bmN0aW9ucwogCiBMaWNlbnNlOiBM R1BMdjIrCiBVUkw6IGh0dHA6Ly93d3cuZ3RrLm9yZwogU291cmNlMDogaHR0cDovL2Rvd25sb2Fk Lmdub21lLm9yZy9zb3VyY2VzL2dsaWIvMi42OC9nbGliLSV7dmVyc2lvbn0udGFyLnh6CiAKLSVp ZiAwJXs/cmhlbH0KLSMgUmVxdWlyZWQgZm9yIFJIRUwgY29yZSBjcnlwdG8gY29tcG9uZW50cyBw b2xpY3kuCisjIFJlcXVpcmVkIGZvciBSSEVMIGNvcmUgY3J5cHRvIGNvbXBvbmVudHMgcG9saWN5 LiBHb29kIGZvciBGZWRvcmEgdG9vLgorIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hv d19idWcuY2dpP2lkPTE2MzAyNjAKICMgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2ds aWIvLS9tZXJnZV9yZXF1ZXN0cy85MDMKIFBhdGNoMDogZ251dGxzLWhtYWMucGF0Y2gKLSVlbmRp ZgogCiAjIEFkZCBwYXRjaGVzIHRvIG1vdmUgYXBwbGljYXRpb25zIGludG8gc3lzdGVtZCBzY29w ZXMgaW4gY29tcGxpYW5jZSB3aXRoCiAjIGh0dHBzOi8vc3lzdGVtZC5pby9ERVNLVE9QX0VOVklS T05NRU5UUy8KICMgUHJvcG9zZWQgdXBzdHJlYW0gYXQgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3Jn L0dOT01FL2dsaWIvLS9tZXJnZV9yZXF1ZXN0cy8xNTk2Ci1QYXRjaDAwMTogMDAwMS10ZXN0cy1J dGVyYXRlLW1haW5sb29wLWR1cmluZy1sYXVuY2gtdGVzdC5wYXRjaAotUGF0Y2gwMDI6IDAwMDIt Z2Rlc2t0b3BhcHBpbmZvLU1vdmUtbGF1bmNoZWQtYXBwbGljYXRpb25zLWludG8tdHJhbi5wYXRj aAotUGF0Y2gwMDM6IDAwMDMtZ2Rlc2t0b3BhcHBpbmZvLUhhbmRsZS10YXNrLWNvbXBsZXRpb24t ZnJvbS1zcGF3bi1mdS5wYXRjaAotUGF0Y2gwMDQ6IDAwMDQtZ2Rlc2t0b3BhcHBpbmZvLUFkZC1T b3VyY2VQYXRoLXRvLXRyYW5zaWVudC1zeXN0ZW1kLS5wYXRjaAorUGF0Y2gxOiBnZGVza3RvcGFw cGluZm8ucGF0Y2gKIAogQnVpbGRSZXF1aXJlczogY2hycGF0aAogQnVpbGRSZXF1aXJlczogZ2Nj CkBAIC0zNCwxMCArMzMsNiBAQCBCdWlsZFJlcXVpcmVzOiBsaWJzZWxpbnV4LWRldmVsCiBCdWls ZFJlcXVpcmVzOiBtZXNvbgogIyBmb3Igc3lzL3NkdC5oCiBCdWlsZFJlcXVpcmVzOiBzeXN0ZW10 YXAtc2R0LWRldmVsCi0laWYgMCV7P3JoZWx9Ci0jIEZvciBnbnV0bHMtaG1hYy5wYXRjaAotQnVp bGRSZXF1aXJlczogcGtnY29uZmlnKGdudXRscykKLSVlbmRpZgogQnVpbGRSZXF1aXJlczogcGtn Y29uZmlnKGxpYmVsZikKIEJ1aWxkUmVxdWlyZXM6IHBrZ2NvbmZpZyhsaWJmZmkpCiBCdWlsZFJl cXVpcmVzOiBwa2djb25maWcobGlicGNyZSkKQEAgLTQ2LDYgKzQxLDE1IEBAIEJ1aWxkUmVxdWly ZXM6IHBrZ2NvbmZpZyhzeXNwcm9mLWNhcHR1cmUtNCkKIEJ1aWxkUmVxdWlyZXM6IHBrZ2NvbmZp Zyh6bGliKQogQnVpbGRSZXF1aXJlczogcHl0aG9uMy1kZXZlbAogCisjIEZvciBnbnV0bHMtaG1h Yy5wYXRjaC4gV2Ugbm93IGRsb3BlbiBsaWJnbnV0bHMuc28uMzAgc28gdGhhdCB3ZSBjYW4gYnVp bGQgYQorIyBzdGF0aWMgZ2xpYjIgd2l0aG91dCBkZXBlbmRpbmcgb24gYSBzdGF0aWMgYnVpbGQg b2YgR251VExTIGFzIHdlbGwuIFRoaXMgd2lsbAorIyBlbnN1cmUgd2Ugbm90aWNlIGlmIHRoZSBH bnVUTFMgc29uYW1lIGJ1bXBzLCBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgb3VyIHBhdGNoLgorJWlm IDAle19faXNhX2JpdHN9ID09IDY0CitSZXF1aXJlczogbGliZ251dGxzLnNvLjMwKCkoNjRiaXQp CislZWxzZQorUmVxdWlyZXM6IGxpYmdudXRscy5zby4zMCgpCislZW5kaWYKKwogIyBmb3IgR0lP IGNvbnRlbnQtdHlwZSBzdXBwb3J0CiBSZWNvbW1lbmRzOiBzaGFyZWQtbWltZS1pbmZvCiAKQEAg LTgyLDE0ICs4NiwxMiBAQCBCdWlsZEFyY2g6IG5vYXJjaAogJWRlc2NyaXB0aW9uIGRvYwogVGhl IGdsaWIyLWRvYyBwYWNrYWdlIGluY2x1ZGVzIGRvY3VtZW50YXRpb24gZm9yIHRoZSBHTGliIGxp YnJhcnkuCiAKLSVpZiAhMCV7P3JoZWx9CiAlcGFja2FnZSBzdGF0aWMKIFN1bW1hcnk6IGdsaWIg c3RhdGljCiBSZXF1aXJlczogJXtuYW1lfS1kZXZlbCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQog CiAlZGVzY3JpcHRpb24gc3RhdGljCiBUaGUgJXtuYW1lfS1zdGF0aWMgc3VicGFja2FnZSBjb250 YWlucyBzdGF0aWMgbGlicmFyaWVzIGZvciAle25hbWV9LgotJWVuZGlmCiAKICVwYWNrYWdlIHRl c3RzCiBTdW1tYXJ5OiBUZXN0cyBmb3IgdGhlIGdsaWIyIHBhY2thZ2UKQEAgLTEwNyw5ICsxMDks NiBAQCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgaW5zdGFsbGVkIGdsaWIyIHBhY2thZ2UuCiBy bSAtcmYgZ2xpYi9wY3JlCiBybSAtcmYgc3VicHJvamVjdHMKIAotIyBXZSBjYW5ub3QgYnVpbGQg d2l0aCBHbnVUTFMgaW4gRmVkb3JhIHNpbmNlIHRoZXJlIGlzIG5vIGdudXRscy1zdGF0aWMKLSMg c3VicGFja2FnZS4gKGdsaWIyLXN0YXRpYyBpcyBuZWVkZWQgYnkgcWVtdSBpbiBGZWRvcmEsIGJ1 dCBub3QgaW4gUkhFTC4pCi0jIEFjY29yZGluZ2x5LCB3ZSBjYW4ndCBidWlsZCBhIHVzYWJsZSBn bGliMi1zdGF0aWMgaW4gUkhFTC4KICVtZXNvbiBcCiAgICAgLURtYW49dHJ1ZSBcCiAgICAgLURk dHJhY2U9dHJ1ZSBcCkBAIC0xMTgsMTIgKzExNyw4IEBAIHJtIC1yZiBzdWJwcm9qZWN0cwogICAg IC1EZ2xpYl9kZWJ1Zz1kaXNhYmxlZCBcCiAgICAgLURndGtfZG9jPXRydWUgXAogICAgIC1EaW5z dGFsbGVkX3Rlc3RzPXRydWUgXAotJWlmIDAlez9yaGVsfQogICAgIC1EZ251dGxzPXRydWUgXAot JWVuZGlmCi0laWYgITAlez9yaGVsfQogICAgIC0tZGVmYXVsdC1saWJyYXJ5PWJvdGggXAotJWVu ZGlmCiAgICAgJXtuaWx9CiAKICVtZXNvbl9idWlsZApAQCAtMjMzLDIwICsyMjgsMjMgQEAgZ2xp Yi1jb21waWxlLXNjaGVtYXMgJXtfZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcyAmPiAvZGV2L251 bGwgfHwgOgogJWZpbGVzIGRvYwogJXtfZGF0YWRpcn0vZ3RrLWRvYy8KIAotJWlmICEwJXs/cmhl bH0KICVmaWxlcyBzdGF0aWMKICV7X2xpYmRpcn0vbGliZ2lvLTIuMC5hCiAle19saWJkaXJ9L2xp YmdsaWItMi4wLmEKICV7X2xpYmRpcn0vbGliZ21vZHVsZS0yLjAuYQogJXtfbGliZGlyfS9saWJn b2JqZWN0LTIuMC5hCiAle19saWJkaXJ9L2xpYmd0aHJlYWQtMi4wLmEKLSVlbmRpZgogCiAlZmls ZXMgdGVzdHMKICV7X2xpYmV4ZWNkaXJ9L2luc3RhbGxlZC10ZXN0cwogJXtfZGF0YWRpcn0vaW5z dGFsbGVkLXRlc3RzCiAKICVjaGFuZ2Vsb2cKKyogVGh1IEp1biAxNyAyMDIxIE1pY2hhZWwgQ2F0 YW56YXJvIDxtY2F0YW56YXJvQHJlZGhhdC5jb20+IC0gMi42OC4yLTIKKy0gRW5hYmxlIEdudVRM Uy1iYXNlZCBHSG1hYyBpbiBGZWRvcmEgYW5kIHJlZW5hYmxlIGdsaWIyLXN0YXRpYyBpbiBSSEVM CistIENvbnNvbGlkYXRlIEdEZXNrdG9wQXBwSW5mbyBjaGFuZ2VzIGludG8gZ2Rlc2t0b3BhcHBp bmZvLnBhdGNoCistIERpc2FibGUgY2hlY2stcnBhdGggc2luY2UgaXQgc2VlbXMgdG8gYmUgYnJv a2VuCisKICogVHVlIE1heSAxMSAyMDIxIEthbGV2IExlbWJlciA8a2xlbWJlckByZWRoYXQuY29t PiAtIDIuNjguMi0xCiAtIFVwZGF0ZSB0byAyLjY4LjIKIAoKZGlmZiAtLWdpdCBhL2dudXRscy1o bWFjLnBhdGNoIGIvZ251dGxzLWhtYWMucGF0Y2gKaW5kZXggNWQxOTNmNC4uOTBlZTJlZSAxMDA2 NDQKLS0tIGEvZ251dGxzLWhtYWMucGF0Y2gKKysrIGIvZ251dGxzLWhtYWMucGF0Y2gKQEAgLTEs NyArMSw3IEBACi1Gcm9tIDEyZTljZDUxZWIwZWYwN2MzNTU0Y2QwMzVmOTJkOGI3YjViODIzMDQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg2NDEyZWEyMjY1YWUwMThiYTYxNDZkNTI1 Y2FmY2U3ODc4MmMwZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDb2xpbiBXYWx0 ZXJzIDx3YWx0ZXJzQHZlcmJ1bS5vcmc+CiBEYXRlOiBGcmksIDcgSnVuIDIwMTkgMTg6NDQ6NDMg KzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGdobWFjOiBTcGxpdCBvZmYgd3JhcHBlciBmdW5j dGlvbnMgaW50byBnaG1hYy11dGlscy5jCitTdWJqZWN0OiBbUEFUQ0ggMS80XSBnaG1hYzogU3Bs aXQgb2ZmIHdyYXBwZXIgZnVuY3Rpb25zIGludG8gZ2htYWMtdXRpbHMuYwogCiBQcmVwIGZvciBh ZGRpbmcgYSBHbnVUTFMgSE1BQyBpbXBsZW1lbnRhdGlvbjsgdGhlc2UgYXJlIGp1c3QKIHV0aWxp dHkgZnVuY3Rpb25zIHRoYXQgY2FsbCB0aGUgImNvcmUiIEFQSS4KQEAgLTI4NCwxMCArMjg0LDEw IEBAIGluZGV4IDQ5ZmQyNzJmMC4uNGYxODFmMjFmIDEwMDY0NAogLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29uc3QgZ3VjaGFyICopIHN0ciwgbGVuZ3RoKTsKIC19CiBkaWZm IC0tZ2l0IGEvZ2xpYi9tZXNvbi5idWlsZCBiL2dsaWIvbWVzb24uYnVpbGQKLWluZGV4IDhjMThl NmRlNC4uMzI5YjhkMTk3IDEwMDY0NAoraW5kZXggMjhiZmFlMjAwLi4wYTM3ZDE5ZWEgMTAwNjQ0 CiAtLS0gYS9nbGliL21lc29uLmJ1aWxkCiArKysgYi9nbGliL21lc29uLmJ1aWxkCi1AQCAtMjUz LDYgKzI1Myw3IEBAIGdsaWJfc291cmNlcyA9IGZpbGVzKAorQEAgLTI1NCw2ICsyNTQsNyBAQCBn bGliX3NvdXJjZXMgPSBmaWxlcygKICAgICdnZ2V0dGV4dC5jJywKICAgICdnaGFzaC5jJywKICAg ICdnaG1hYy5jJywKQEAgLTI5NiwxMyArMjk2LDEyIEBAIGluZGV4IDhjMThlNmRlNC4uMzI5Yjhk MTk3IDEwMDY0NAogICAgJ2dob3N0dXRpbHMuYycsCiAgICAnZ2lvY2hhbm5lbC5jJywKIC0tIAot Mi4yOS4yCisyLjMxLjEKIAotCi1Gcm9tIDIzMWVkOTg1MDc0YWY0YTM1NDQwNWNmMTk2MWZhYmY5 YzYwYmNlNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGE1ZWU5OTcwNzcyZTE4MmRl MWMyNDllZTUxNGU4N2VmMzhlMDgzNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBD b2xpbiBXYWx0ZXJzIDx3YWx0ZXJzQHZlcmJ1bS5vcmc+CiBEYXRlOiBGcmksIDcgSnVuIDIwMTkg MTk6MzY6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIEFkZCBhIGdudXRscyBiYWNrZW5k IGZvciBHSG1hYworU3ViamVjdDogW1BBVENIIDIvNF0gQWRkIGEgZ251dGxzIGJhY2tlbmQgZm9y IEdIbWFjCiAKIEZvciBSSEVMIHdlIHdhbnQgYXBwcyB0byB1c2UgRklQUy1jZXJ0aWZpZWQgY3J5 cHRvIGxpYnJhcmllcywKIGFuZCBITUFDIGFwcGFyZW50bHkgY291bnRzIGFzICJrZXllZCIgYW5k IGhlbmNlIG5lZWRzIHRvCkBAIC0zMTYsMTggKzMxNSw0NyBAQCBNb3N0IGRpc3RyaWJ1dG9ycyBz aGlwIGdsaWItbmV0d29ya2luZyBidWlsdCB3aXRoIEdudVRMUywgYW5kCiBtb3N0IGFwcHMgdXNl IGdsaWItbmV0d29ya2luZywgc28gdGhpcyBpc24ndCBhIG5ldC1uZXcgbGlicmFyeQogaW4gbW9z dCBjYXNlcy4KIAotbWNhdGFuemFybyBub3RlOiBJJ3ZlIHVwZGF0ZWQgQ29saW4ncyBvcmlnaW5h bCBwYXRjaCB0byBpbXBsZW1lbnQKLWdfaG1hY19jb3B5KCkgdXNpbmcgZ251dGxzX2htYWNfY29w eSgpLCB3aGljaCBkaWRuJ3QgZXhpc3Qgd2hlbiBDb2xpbgotZGV2ZWxvcGVkIHRoaXMgcGF0Y2gu Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCittY2F0YW56YXJvIG5vdGU6CisKK0kndmUgdXBkYXRlZCBDb2xp bidzIG9yaWdpbmFsIHBhdGNoIHdpdGggc2V2ZXJhbCBlbmhhbmNlbWVudHM6CisKK0ltcGxlbWVu dCBnX2htYWNfY29weSgpIHVzaW5nIGdudXRsc19obWFjX2NvcHkoKSwgd2hpY2ggZGlkbid0IGV4 aXN0Cit3aGVuIENvbGluIGRldmVsb3BlZCB0aGlzIHBhdGNoLgorCitSZW1vdmVkIHVzZSBvZiBH U2xpY2UKKworQmV0dGVyIGVycm9yIGNoZWNraW5nIGluIGdfaG1hY19uZXcoKS4gSXQgaXMgcG9z c2libGUgZm9yCitnbnV0bHNfaG1hY19pbml0KCkgdG8gZmFpbCBpZiBydW5uaW5nIGluIEZJUFMg bW9kZSBhbmQgYW4gTUQ1IGRpZ2VzdCBpcworcmVxdWVzdGVkLiBJbiB0aGlzIGNhc2UsIHdlIHNo b3VsZCByZXR1cm4gTlVMTCByYXRoZXIgdGhhbiByZXR1cm5pbmcgYQorYnJva2VuIEdIbWFjIHdp dGggYSBOVUxMIGdudXRsc19obWFjX2hkX3QuIFRoaXMgd2FzIGxlYWRpbmcgdG8gYSBsYXRlcgor bnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluc2lkZSBnbnV0bHNfaG1hY191cGRhdGUoKS4gQXBw bGljYXRpb25zIGFyZQorcmVzcG9uc2libGUgZm9yIGNoZWNraW5nIHRvIGVuc3VyZSB0aGUgcmV0 dXJuIHZhbHVlIG9mIGdfaG1hY19uZXcoKSBpcworbm90IE5VTEwgc2luY2UgaXQgaXMgYW5ub3Rh dGVkIGFzIG51bGxhYmxlLiBBZGRlZCBkb2N1bWVudGF0aW9uIHRvCitpbmRpY2F0ZSB0aGlzIHBv c3NpYmlsaXR5LgorCitQcm9wZXJseSBoYW5kbGUgbGVuZ3RoIC0xIGluIGdfaG1hY191cGRhdGUo KS4gVGhpcyBtZWFucyB3ZSd2ZSBiZWVuCitnaXZlbiBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZyBh bmQgc2hvdWxkIHVzZSBzdHJsZW4oKS4gR251VExTIGRvZXNuJ3QKK2FjY2VwdCAtMSwgc28gbGV0 J3MgY2FsbCBzdHJsZW4oKSBvdXJzZWx2ZXMuCisKK0NyYXNoIHRoZSBhcHBsaWNhdGlvbiB3aXRo IGdfZXJyb3IoKSBpZiBnbnV0bHNfaG1hYygpIGZhaWxzIGZvciBhbnkKK3JlYXNvbi4gVGhpcyBp cyBuZWNlc3NhcnkgYmVjYXVzZSBnX2htYWNfdXBkYXRlKCkgaXMgbm90IGZhbGxpYmxlLCBzbyB3 ZQoraGF2ZSBubyB3YXkgdG8gaW5kaWNhdGUgZXJyb3IuIENyYXNoaW5nIHNlZW1zIGJldHRlciB0 aGFuIHJldHVybmluZyB0aGUKK3dyb25nIHJlc3VsdCBsYXRlciB3aGVuIGdfaG1hY19nZXRfc3Ry aW5nKCkgb3IgZ19obWFjX2dldF9kaWdlc3QoKSBpcworbGF0ZXIgY2FsbGVkLiAoVGhvc2UgZnVu Y3Rpb25zIGFyZSBhbHNvIG5vdCBmYWxsaWJsZS4pIEZvcnR1bmF0ZWx5LCBJCitkb24ndCB0aGlu ayB0aGlzIGVycm9yIHNob3VsZCBhY3R1YWxseSBiZSBoaXQgaW4gcHJhY3RpY2UuCisKK2h0dHBz Oi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbGliLy0vbWVyZ2VfcmVxdWVzdHMvOTAzCiAtLS0K LSBnbGliL2djaGVja3N1bS5jICAgICAgICB8ICAgOSArKy0KLSBnbGliL2djaGVja3N1bXByaXZh dGUuaCB8ICAzMiArKysrKysrKwotIGdsaWIvZ2htYWMtZ251dGxzLmMgICAgIHwgMTY0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBnbGliL2dobWFjLmMgICAgICAg ICAgICB8ICAgMyArCisgZ2xpYi9nY2hlY2tzdW0uYyAgICAgICAgfCAgIDkgKy0KKyBnbGliL2dj aGVja3N1bXByaXZhdGUuaCB8ICAzMiArKysrKysrCisgZ2xpYi9naG1hYy1nbnV0bHMuYyAgICAg fCAxODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGdsaWIvZ2ht YWMuYyAgICAgICAgICAgIHwgIDE1ICsrKysKICBnbGliL21lc29uLmJ1aWxkICAgICAgICB8ICAx MCArKy0KICBtZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgNyArKwogIG1lc29uX29wdGlvbnMu dHh0ICAgICAgIHwgICA1ICsrCi0gNyBmaWxlcyBjaGFuZ2VkLCAyMjQgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKKyA3IGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspLCA2IGRl bGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnbGliL2djaGVja3N1bXByaXZhdGUuaAog IGNyZWF0ZSBtb2RlIDEwMDY0NCBnbGliL2dobWFjLWdudXRscy5jCiAKQEAgLTQwNiwxMCArNDM0 LDEwIEBAIGluZGV4IDAwMDAwMDAwMC4uODZjN2EzYjYxCiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKIGRpZmYgLS1naXQgYS9nbGliL2dobWFjLWdudXRscy5jIGIvZ2xpYi9naG1hYy1nbnV0 bHMuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uZjFhNzRhODQ5Citp bmRleCAwMDAwMDAwMDAuLmE1NTM3NTA2MAogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2xpYi9naG1h Yy1nbnV0bHMuYwotQEAgLTAsMCArMSwxNjQgQEAKK0BAIC0wLDAgKzEsMTg3IEBACiArLyogZ2ht YWMuaCAtIGRhdGEgaGFzaGluZyBmdW5jdGlvbnMKICsgKgogKyAqIENvcHlyaWdodCAoQykgMjAx MSAgQ29sbGFib3JhIEx0ZC4KQEAgLTQ2NCw5ICs0OTIsMTEgQEAgaW5kZXggMDAwMDAwMDAwLi5m MWE3NGE4NDkKICsgICAgICAgICAgICBnc2l6ZSAgICAgICAgICBrZXlfbGVuKQogK3sKICsgIGdu dXRsc19tYWNfYWxnb3JpdGhtX3QgYWxnbzsKLSsgIEdIbWFjICpobWFjID0gZ19zbGljZV9uZXcw IChHSG1hYyk7CisrICBHSG1hYyAqaG1hYyA9IGdfbmV3MCAoR0htYWMsIDEpOworKyAgaW50IHJl dDsKKysKICsgIGhtYWMtPnJlZl9jb3VudCA9IDE7Ci0rICBobWFjLT5kaWdlc3RfdHlwZSA9IGRp Z2VzdF90eXBlOyAgCisrICBobWFjLT5kaWdlc3RfdHlwZSA9IGRpZ2VzdF90eXBlOwogKwogKyAg c3dpdGNoIChkaWdlc3RfdHlwZSkKICsgICAgewpAQCAtNDg5LDcgKzUxOSwxNiBAQCBpbmRleCAw MDAwMDAwMDAuLmYxYTc0YTg0OQogKyAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkIChOVUxM KTsKICsgICAgfQogKwotKyAgZ251dGxzX2htYWNfaW5pdCAoJmhtYWMtPmhtYWMsIGFsZ28sIGtl eSwga2V5X2xlbik7CisrICByZXQgPSBnbnV0bHNfaG1hY19pbml0ICgmaG1hYy0+aG1hYywgYWxn bywga2V5LCBrZXlfbGVuKTsKKysgIGlmIChyZXQgIT0gMCkKKysgICAgeworKyAgICAgIC8qIFRo ZXJlIGlzIG5vIHdheSB0byByZXBvcnQgYW4gZXJyb3IgaGVyZSwgYnV0IG9uZSBwb3NzaWJsZSBj YXVzZSBvZgorKyAgICAgICAqIGZhaWx1cmUgaXMgdGhhdCB0aGUgcmVxdWVzdGVkIGRpZ2VzdCBt YXkgYmUgZGlzYWJsZWQgYnkgRmVkb3JhIG9yIFJIRUwKKysgICAgICAgKiBzeXN0ZW0gY3J5cHRv IHBvbGljeS4gQXMgb2YgMjAyMSwgTUQ1IGFuZCBTSEEtMSBhcmUgbGlrZWx5IGRpc2FibGVkLgor KyAgICAgICAqLworKyAgICAgIGdfZnJlZSAoaG1hYy0+aG1hYyk7CisrICAgICAgcmV0dXJuIE5V TEw7CisrICAgIH0KICsKICsgIHJldHVybiBobWFjOwogK30KQEAgLTUwMSwxMSArNTQwLDE1IEBA IGluZGV4IDAwMDAwMDAwMC4uZjFhNzRhODQ5CiArCiArICBnX3JldHVybl92YWxfaWZfZmFpbCAo aG1hYyAhPSBOVUxMLCBOVUxMKTsKICsKLSsgIGNvcHkgPSBnX3NsaWNlX25ldzAgKEdIbWFjKTsK KysgIGNvcHkgPSBnX25ldzAgKEdIbWFjLCAxKTsKICsgIGNvcHktPnJlZl9jb3VudCA9IDE7CiAr ICBjb3B5LT5kaWdlc3RfdHlwZSA9IGhtYWMtPmRpZ2VzdF90eXBlOwogKyAgY29weS0+aG1hYyA9 IGdudXRsc19obWFjX2NvcHkgKGhtYWMtPmhtYWMpOwogKworKyAgLyogZ19obWFjX2NvcHkgaXMg bm90IGFsbG93ZWQgdG8gZmFpbCwgc28gd2UnbGwgaGF2ZSB0byBjcmFzaCBvbiBlcnJvci4gKi8K KysgIGlmICghY29weS0+aG1hYykKKysgICAgZ19lcnJvciAoImdudXRsc19obWFjX2NvcHkgZmFp bGVkIik7CisrCiArICByZXR1cm4gY29weTsKICt9CiArCkBAIC01MjgsNyArNTcxLDcgQEAgaW5k ZXggMDAwMDAwMDAwLi5mMWE3NGE4NDkKICsgICAgewogKyAgICAgIGdudXRsc19obWFjX2RlaW5p dCAoaG1hYy0+aG1hYywgTlVMTCk7CiArICAgICAgZ19mcmVlIChobWFjLT5kaWdlc3Rfc3RyKTsK LSsgICAgICBnX3NsaWNlX2ZyZWUgKEdIbWFjLCBobWFjKTsKKysgICAgICBnX2ZyZWUgKGhtYWMp OwogKyAgICB9CiArfQogKwpAQCAtNTM4LDEwICs1ODEsMTggQEAgaW5kZXggMDAwMDAwMDAwLi5m MWE3NGE4NDkKICsgICAgICAgICAgICAgICBjb25zdCBndWNoYXIgKmRhdGEsCiArICAgICAgICAg ICAgICAgZ3NzaXplICAgICAgICBsZW5ndGgpCiAreworKyAgaW50IHJldDsKKysKICsgIGdfcmV0 dXJuX2lmX2ZhaWwgKGhtYWMgIT0gTlVMTCk7CiArICBnX3JldHVybl9pZl9mYWlsIChsZW5ndGgg PT0gMCB8fCBkYXRhICE9IE5VTEwpOwogKwotKyAgZ251dGxzX2htYWMgKGhtYWMtPmhtYWMsIGRh dGEsIGxlbmd0aCk7CisrICBpZiAobGVuZ3RoID09IC0xKQorKyAgICBsZW5ndGggPSBzdHJsZW4g KChjb25zdCBjaGFyICopZGF0YSk7CisrCisrICAvKiBnX2htYWNfdXBkYXRlIGlzIG5vdCBhbGxv d2VkIHRvIGZhaWwsIHNvIHdlJ2xsIGhhdmUgdG8gY3Jhc2ggb24gZXJyb3IuICovCisrICByZXQg PSBnbnV0bHNfaG1hYyAoaG1hYy0+aG1hYywgZGF0YSwgbGVuZ3RoKTsKKysgIGlmIChyZXQgIT0g MCkKKysgICAgZ19lcnJvciAoImdudXRsc19obWFjIGZhaWxlZDogJXMiLCBnbnV0bHNfc3RyZXJy b3IgKHJldCkpOwogK30KICsKICtjb25zdCBnY2hhciAqCkBAIC01NzUsNyArNjI2LDcgQEAgaW5k ZXggMDAwMDAwMDAwLi5mMWE3NGE4NDkKICsgICpkaWdlc3RfbGVuID0gZ19jaGVja3N1bV90eXBl X2dldF9sZW5ndGggKGhtYWMtPmRpZ2VzdF90eXBlKTsKICt9CiBkaWZmIC0tZ2l0IGEvZ2xpYi9n aG1hYy5jIGIvZ2xpYi9naG1hYy5jCi1pbmRleCA0ZjE4MWYyMWYuLmM2MmQ5Y2U0ZSAxMDA2NDQK K2luZGV4IDRmMTgxZjIxZi4uMGUzOWVhNDBhIDEwMDY0NAogLS0tIGEvZ2xpYi9naG1hYy5jCiAr KysgYi9nbGliL2dobWFjLmMKIEBAIC0zMyw2ICszMyw5IEBACkBAIC01ODgsMTEgKzYzOSwzMCBA QCBpbmRleCA0ZjE4MWYyMWYuLmM2MmQ5Y2U0ZSAxMDA2NDQKICAKICAvKioKICAgKiBTRUNUSU9O OmhtYWMKK0BAIC04NCw2ICs4NywxOCBAQCBzdHJ1Y3QgX0dIbWFjCisgICogU3VwcG9ydCBmb3Ig ZGlnZXN0cyBvZiB0eXBlICVHX0NIRUNLU1VNX1NIQTUxMiBoYXMgYmVlbiBhZGRlZCBpbiBHTGli IDIuNDIuCisgICogU3VwcG9ydCBmb3IgJUdfQ0hFQ0tTVU1fU0hBMzg0IHdhcyBhZGRlZCBpbiBH TGliIDIuNTIuCisgICoKKysgKiBOb3RlIHRoYXQgI0dIbWFjIGNyZWF0aW9uIG1heSBmYWlsLCBp biB3aGljaCBjYXNlIHRoaXMgZnVuY3Rpb24gd2lsbAorKyAqIHJldHVybiAlTlVMTC4gU2luY2Ug dGhlcmUgaXMgbm8gZXJyb3IgcGFyYW1ldGVyLCBpdCBpcyBub3QgcG9zc2libGUKKysgKiB0byBp bmRpY2F0ZSB3aHkuCisrICoKKysgKiBJbiBGZWRvcmEsIENlbnRPUyBTdHJlYW0sIGFuZCBSZWQg SGF0IEVudGVycHJpc2UgTGludXgsIEdMaWIgaXMKKysgKiBjb25maWd1cmVkIHRvIHVzZSBHbnVU TFMgdG8gaW1wbGVtZW50ICNHSG1hYyBpbiBvcmRlciB0byBzdXBwb3J0IEZJUFMKKysgKiBjb21w bGlhbmNlLiBUaGlzIGludHJvZHVjZXMgYWRkaXRpb25hbCBmYWlsdXJlIHBvc3NpYmlsaXRpZXMg dGhhdCBhcmUKKysgKiBub3QgcHJlc2VudCBpbiB1cHN0cmVhbSBHTGliLiBGb3IgZXhhbXBsZSwg dGhlIGNyZWF0aW9uIG9mIGEgI0dIbWFjCisrICogd2lsbCBmYWlsIGlmIEBkaWdlc3RfdHlwZSBp cyAlR19DSEVDS1NVTV9NRDUgYW5kIHRoZSBzeXN0ZW0gaXMKKysgKiBydW5uaW5nIGluIEZJUFMg bW9kZS4gI0dIbWFjIGNyZWF0aW9uIG1heSBhbHNvIGZhaWwgaWYgR0xpYiBpcyB1bmFibGUKKysg KiB0byBsb2FkIEdudVRMUy4KKysgKgorICAqIFJldHVybnM6IHRoZSBuZXdseSBjcmVhdGVkICNH SG1hYywgb3IgJU5VTEwuCisgICogICBVc2UgZ19obWFjX3VucmVmKCkgdG8gZnJlZSB0aGUgbWVt b3J5IGFsbG9jYXRlZCBieSBpdC4KKyAgKgogZGlmZiAtLWdpdCBhL2dsaWIvbWVzb24uYnVpbGQg Yi9nbGliL21lc29uLmJ1aWxkCi1pbmRleCAzMjliOGQxOTcuLjI5NDJhN2U5YiAxMDA2NDQKK2lu ZGV4IDBhMzdkMTllYS4uYjE3Yzg5ZGQ5IDEwMDY0NAogLS0tIGEvZ2xpYi9tZXNvbi5idWlsZAog KysrIGIvZ2xpYi9tZXNvbi5idWlsZAotQEAgLTI1Miw3ICsyNTIsNiBAQCBnbGliX3NvdXJjZXMg PSBmaWxlcygKK0BAIC0yNTMsNyArMjUzLDYgQEAgZ2xpYl9zb3VyY2VzID0gZmlsZXMoCiAgICAn Z2ZpbGV1dGlscy5jJywKICAgICdnZ2V0dGV4dC5jJywKICAgICdnaGFzaC5jJywKQEAgLTYwMCw3 ICs2NzAsNyBAQCBpbmRleCAzMjliOGQxOTcuLjI5NDJhN2U5YiAxMDA2NDQKICAgICdnaG1hYy11 dGlscy5jJywKICAgICdnaG9vay5jJywKICAgICdnaG9zdHV0aWxzLmMnLAotQEAgLTMwOCw2ICsz MDcsNyBAQCBnbGliX3NvdXJjZXMgPSBmaWxlcygKK0BAIC0zMDksNiArMzA4LDcgQEAgZ2xpYl9z b3VyY2VzID0gZmlsZXMoCiAgICAnZ3VyaXByaXZhdGUuaCcsCiAgICAnZ3V0aWxzLmMnLAogICAg J2d1dGlsc3ByaXZhdGUuaCcsCkBAIC02MDgsNyArNjc4LDcgQEAgaW5kZXggMzI5YjhkMTk3Li4y OTQyYTdlOWIgMTAwNjQ0CiAgICAnZ3V1aWQuYycsCiAgICAnZ3ZhcmlhbnQuYycsCiAgICAnZ3Zh cmlhbnQtY29yZS5jJywKLUBAIC0zNTIsNiArMzUyLDEyIEBAIGVsc2UKK0BAIC0zNTMsNiArMzUz LDEyIEBAIGVsc2UKICAgIGdsaWJfZHRyYWNlX2hkciA9IFtdCiAgZW5kaWYKICAKQEAgLTYyMSw3 ICs2OTEsNyBAQCBpbmRleCAzMjliOGQxOTcuLjI5NDJhN2U5YiAxMDA2NDQKICBwY3JlX3N0YXRp Y19hcmdzID0gW10KICAKICBpZiB1c2VfcGNyZV9zdGF0aWNfZmxhZwotQEAgLTM3OCw3ICszODQs NyBAQCBsaWJnbGliID0gbGlicmFyeSgnZ2xpYi0yLjAnLAorQEAgLTM3OSw3ICszODUsNyBAQCBs aWJnbGliID0gbGlicmFyeSgnZ2xpYi0yLjAnLAogICAgIyBpbnRsLmxpYiBpcyBub3QgY29tcGF0 aWJsZSB3aXRoIFNBRkVTRUgKICAgIGxpbmtfYXJncyA6IFtub3NlaF9saW5rX2FyZ3MsIGdsaWJf bGlua19mbGFncywgd2luMzJfbGRmbGFnc10sCiAgICBpbmNsdWRlX2RpcmVjdG9yaWVzIDogY29u ZmlnaW5jLApAQCAtNjMxLDEwICs3MDEsMTAgQEAgaW5kZXggMzI5YjhkMTk3Li4yOTQyYTdlOWIg MTAwNjQ0CiAgICBvYmpjX2FyZ3MgOiBnbGliX2NfYXJncywKICApCiBkaWZmIC0tZ2l0IGEvbWVz b24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMGQ4OTJmYjJkLi4wOTEwMjlmZWEgMTAwNjQ0 CitpbmRleCBhMGVlOGI3NzQuLjA2NGRiYTgwMCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiAr KysgYi9tZXNvbi5idWlsZAotQEAgLTIwNzgsNiArMjA3OCwxMyBAQCBpZiBob3N0X3N5c3RlbSA9 PSAnbGludXgnCitAQCAtMjEwNCw2ICsyMTA0LDEzIEBAIGlmIGhvc3Rfc3lzdGVtID09ICdsaW51 eCcKICAgIGdsaWJfY29uZi5zZXQoJ0hBVkVfTElCTU9VTlQnLCBsaWJtb3VudF9kZXAuZm91bmQo KSkKICBlbmRpZgogIApAQCAtNjY1LDUgKzczNSwzNTEgQEAgaW5kZXggMDcyNzY1MzYxLi5kMjM3 MDA0MmYgMTAwNjQ0CiAgICAgICAgIHR5cGUgOiAnYm9vbGVhbicsCiAgICAgICAgIHZhbHVlIDog ZmFsc2UsCiAtLSAKLTIuMjkuMgorMi4zMS4xCisKK0Zyb20gY2RlNTZhNjNhYTEyYWU3YzMwZjg1 YWY3ZDA1OGZhNWU2NjZhYTJlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hh ZWwgQ2F0YW56YXJvIDxtY2F0YW56YXJvQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDE2IEp1biAy MDIxIDIwOjM1OjAwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBkbG9wZW4gR251VExTIGlu c3RlYWQgb2YgbGlua2luZyBkaXJlY3RseQorCitJJ2QgbGlrZSB0byBlbmFibGUgb3VyIEdudVRM UyBHSG1hYyBwYXRjaHNldCBpbiBGZWRvcmEgaW4gb3JkZXIgdG8KK2Vuc3VyZSBpdCBpcyByZWNl aXZpbmcgc3VmZmljaWVudCByZWFsLXdvcmxkIHRlc3RpbmcsIHNpbmNlIHdlJ3ZlCitkaXNjb3Zl cmVkIHNldmVyYWwgYnVncyB0aHVzIGZhci4gUHJvYmxlbSBpcyBGZWRvcmEgaGFzIG9uZSByZXF1 aXJlbWVudAordGhhdCBSSEVMIGRvZXMgbm90OiBpdCBuZWVkcyB0byBidWlsZCBnbGliIGFzIGEg c3RhdGljIGxpYi4gVGhpcyBpcworbmVlZGVkIGJ5IFFFTVUgaW4gRmVkb3JhIGZvciBjb21wbGlj YXRlZCB0ZWNobmljYWwgcmVhc29ucyB0aGF0IEkgZG9uJ3QKK3VuZGVyc3RhbmQuIEhvd2V2ZXIs IG5vdGhpbmcgaW4gUkhFTCBuZWVkcyBpdC4gVGhpcyBtZWFucyB3ZSBmYWlsZWQgdG8KK25vdGlj ZSB0aGF0IGdsaWIyLXN0YXRpYyBpcyBicm9rZW4gaW4gUkhFTCwgYmVjYXVzZSB0aGVyZSBpcyBu bworZ251dGxzLXN0YXRpYyEgV2UgY291bGQgZml4IHRoaXMgYnkgYWRkaW5nIGEgZ251dGxzLXN0 YXRpYyBwYWNrYWdlLCBidXQKK3RoYXQgc2VlbXMgbGlrZSBvdmVya2lsbCwgYW5kIGFkZGluZyBt b3JlIHN0YXRpYyBsaWJyYXJpZXMgd2hlcmUgdGhleSdyZQorbm90IHRydWx5IG5lY2Vzc2FyeSBp cyBub3QgdGhlIGRpcmVjdGlvbiB3ZSB3YW50IHRvIG1vdmUgaW4gYW55d2F5LiBTbworaW5zdGVh ZCwgbGV0J3MganVzdCBkbG9wZW4gR251VExTIHRvIHNpZGVzdGVwIHRoaXMgcHJvYmxlbSBlbnRp cmVseS4KIAorVGhpcyB3b3VsZCBub3QgYmUgYSBnb29kIHNvbHV0aW9uIGZvciB1cHN0cmVhbSwg YnV0IHVwc3RyZWFtIGhhcyBtYWRlCitjbGVhciB0aGF0IHRoaXMgcGF0Y2hzZXQgaXMgYWxyZWFk eSBub24tdXBzdHJlYW1hYmxlLCBzbyBpdCB3aWxsIGJlIGZpbmUKK2ZvciBvdXIgcHVycG9zZXMu CistLS0KKyBnbGliL2dobWFjLWdudXRscy5jIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tCisgZ2xpYi9naG1hYy5jICAgICAgICB8ICAgMiArLQorIGds aWIvbWVzb24uYnVpbGQgICAgfCAgIDIgKy0KKyBtZXNvbi5idWlsZCAgICAgICAgIHwgICA2ICst LQorIDQgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9nbGliL2dobWFjLWdudXRscy5jIGIvZ2xpYi9naG1hYy1nbnV0bHMuYwor aW5kZXggYTU1Mzc1MDYwLi4wNDY5ZDJiZDAgMTAwNjQ0CistLS0gYS9nbGliL2dobWFjLWdudXRs cy5jCisrKysgYi9nbGliL2dobWFjLWdudXRscy5jCitAQCAtMTksOCArMTksOCBAQAorIAorICNp bmNsdWRlICJjb25maWcuaCIKKyAKKysjaW5jbHVkZSA8ZGxmY24uaD4KKyAjaW5jbHVkZSA8c3Ry aW5nLmg+CistI2luY2x1ZGUgPGdudXRscy9jcnlwdG8uaD4KKyAKKyAjaW5jbHVkZSAiZ2htYWMu aCIKKyAKK0BAIC0zMSwxMyArMzEsMTYgQEAKKyAjaW5jbHVkZSAiZ3N0cmZ1bmNzLmgiCisgI2lu Y2x1ZGUgImdjaGVja3N1bXByaXZhdGUuaCIKKyAjaW5jbHVkZSAiZ3Rlc3R1dGlscy5oIgorKyNp bmNsdWRlICJndGhyZWFkLmgiCisgI2luY2x1ZGUgImd0eXBlcy5oIgorICNpbmNsdWRlICJnbGli aW50bC5oIgorIAorLSNpZm5kZWYgSEFWRV9HTlVUTFMKKysjaWZuZGVmIFVTRV9HTlVUTFMKKyAj ZXJyb3IgImJ1aWxkIGNvbmZpZ3VyYXRpb24gZXJyb3IiCisgI2VuZGlmCisgCisrdHlwZWRlZiBn cG9pbnRlciBnbnV0bHNfaG1hY19oZF90OworKworIHN0cnVjdCBfR0htYWMKKyB7CisgICBpbnQg cmVmX2NvdW50OworQEAgLTQ2LDE1ICs0OSwxMDcgQEAgc3RydWN0IF9HSG1hYworICAgZ2NoYXIg KmRpZ2VzdF9zdHI7CisgfTsKKyAKKyt0eXBlZGVmIGVudW0KKyt7CisrICBHTlVUTFNfTUFDX01E NSA9IDIsCisrICBHTlVUTFNfTUFDX1NIQTEgPSAzLAorKyAgR05VVExTX01BQ19TSEEyNTYgPSA2 LAorKyAgR05VVExTX01BQ19TSEEzODQgPSA3LAorKyAgR05VVExTX01BQ19TSEE1MTIgPSA4LAor K30gZ251dGxzX21hY19hbGdvcml0aG1fdDsKKysKKysvKiBXaHkgYXJlIHdlIGRsb3BlbmluZyBH bnVUTFMgaW5zdGVhZCBvZiBsaW5raW5nIHRvIGl0IGRpcmVjdGx5PyBCZWNhdXNlIHdlCisrICog d2FudCB0byBiZSBhYmxlIHRvIGJ1aWxkIEdMaWIgYXMgYSBzdGF0aWMgbGlicmFyeSB3aXRob3V0 IGRlcGVuZGluZyBvbiBhCisrICogc3RhdGljIGJ1aWxkIG9mIEdudVRMUy4gUUVNVSBkZXBlbmRz IG9uIHN0YXRpYyBsaW5raW5nIHdpdGggR0xpYiwgYnV0IEZlZG9yYQorKyAqIGRvZXMgbm90IHNo aXAgYSBzdGF0aWMgYnVpbGQgb2YgR251VExTLCBhbmQgdGhpcyBhbGxvd3MgdXMgdG8gYXZvaWQg Y2hhbmdpbmcKKysgKiB0aGF0LgorKyAqLworK3N0YXRpYyBpbnQgICAgICAgICAgICAgICgqZ251 dGxzX2htYWNfaW5pdCkgICAoZ251dGxzX2htYWNfaGRfdCAqZGlnLCBnbnV0bHNfbWFjX2FsZ29y aXRobV90IGFsZ29yaXRobSwgY29uc3Qgdm9pZCAqa2V5LCBzaXplX3Qga2V5bGVuKTsKKytzdGF0 aWMgZ251dGxzX2htYWNfaGRfdCAoKmdudXRsc19obWFjX2NvcHkpICAgKGdudXRsc19obWFjX2hk X3QgaGFuZGxlKTsKKytzdGF0aWMgdm9pZCAgICAgICAgICAgICAoKmdudXRsc19obWFjX2RlaW5p dCkgKGdudXRsc19obWFjX2hkX3QgaGFuZGxlLCB2b2lkICpkaWdlc3QpOworK3N0YXRpYyBpbnQg ICAgICAgICAgICAgICgqZ251dGxzX2htYWMpICAgICAgICAoZ251dGxzX2htYWNfaGRfdCBoYW5k bGUsIGNvbnN0IHZvaWQgKnB0ZXh0LCBzaXplX3QgcHRleHRfbGVuKTsKKytzdGF0aWMgdm9pZCAg ICAgICAgICAgICAoKmdudXRsc19obWFjX291dHB1dCkgKGdudXRsc19obWFjX2hkX3QgaGFuZGxl LCB2b2lkICpkaWdlc3QpOworK3N0YXRpYyBjb25zdCBjaGFyICogICAgICgqZ251dGxzX3N0cmVy cm9yKSAgICAoaW50IGVycm9yKTsKKysKKytzdGF0aWMgZ3NpemUgZ251dGxzX2luaXRpYWxpemVf YXR0ZW1wdGVkID0gMDsKKytzdGF0aWMgZ2Jvb2xlYW4gZ251dGxzX2luaXRpYWxpemVfc3VjY2Vz c2Z1bCA9IEZBTFNFOworKworK3N0YXRpYyB2b2lkCisraW5pdGlhbGl6ZV9nbnV0bHMgKHZvaWQp CisreworKyAgZ3BvaW50ZXIgbGliZ251dGxzOworKworKyAgbGliZ251dGxzID0gZGxvcGVuICgi bGliZ251dGxzLnNvLjMwIiwgUlRMRF9MQVpZIHwgUlRMRF9HTE9CQUwpOworKyAgaWYgKCFsaWJn bnV0bHMpCisrICAgIHsKKysgICAgICBnX3dhcm5pbmcgKCJDYW5ub3QgdXNlIEdIbWFjOiBmYWls ZWQgdG8gbG9hZCBsaWJnbnV0bHMuc28uMzA6ICVzIiwgZGxlcnJvciAoKSk7CisrICAgICAgcmV0 dXJuOworKyAgICB9CisrCisrICBnbnV0bHNfaG1hY19pbml0ID0gZGxzeW0gKGxpYmdudXRscywg ImdudXRsc19obWFjX2luaXQiKTsKKysgIGlmICghZ251dGxzX2htYWNfaW5pdCkKKysgICAgewor KyAgICAgIGdfd2FybmluZyAoIkNhbm5vdCB1c2UgR0htYWM6IGZhaWxlZCB0byBsb2FkIGdudXRs c19obWFjX2luaXQ6ICVzIiwgZGxlcnJvciAoKSk7CisrICAgICAgcmV0dXJuOworKyAgICB9Cisr CisrICBnbnV0bHNfaG1hY19jb3B5ID0gZGxzeW0gKGxpYmdudXRscywgImdudXRsc19obWFjX2Nv cHkiKTsKKysgIGlmICghZ251dGxzX2htYWNfY29weSkKKysgICAgeworKyAgICAgIGdfd2Fybmlu ZyAoIkNhbm5vdCB1c2UgR0htYWM6IGZhaWxlZCB0byBsb2FkIGdudXRsc19obWFjX2NvcHk6ICVz IiwgZGxlcnJvciAoKSk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBnbnV0bHNfaG1h Y19kZWluaXQgPSBkbHN5bSAobGliZ251dGxzLCAiZ251dGxzX2htYWNfZGVpbml0Iik7CisrICBp ZiAoIWdudXRsc19obWFjX2RlaW5pdCkKKysgICAgeworKyAgICAgIGdfd2FybmluZyAoIkNhbm5v dCB1c2UgR0htYWM6IGZhaWxlZCB0byBsb2FkIGdudXRsc19obWFjX2RlaW5pdDogJXMiLCBkbGVy cm9yICgpKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgIGdudXRsc19obWFjID0gZGxz eW0gKGxpYmdudXRscywgImdudXRsc19obWFjIik7CisrICBpZiAoIWdudXRsc19obWFjKQorKyAg ICB7CisrICAgICAgZ193YXJuaW5nICgiQ2Fubm90IHVzZSBHSG1hYzogZmFpbGVkIHRvIGxvYWQg Z251dGxzX2htYWM6ICVzIiwgZGxlcnJvciAoKSk7CisrICAgICAgcmV0dXJuOworKyAgICB9Cisr CisrICBnbnV0bHNfaG1hY19vdXRwdXQgPSBkbHN5bSAobGliZ251dGxzLCAiZ251dGxzX2htYWNf b3V0cHV0Iik7CisrICBpZiAoIWdudXRsc19obWFjX291dHB1dCkKKysgICAgeworKyAgICAgIGdf d2FybmluZyAoIkNhbm5vdCB1c2UgR0htYWM6IGZhaWxlZCB0byBsb2FkIGdudXRsc19obWFjX291 dHB1dDogJXMiLCBkbGVycm9yICgpKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgIGdu dXRsc19zdHJlcnJvciA9IGRsc3ltIChsaWJnbnV0bHMsICJnbnV0bHNfc3RyZXJyb3IiKTsKKysg IGlmICghZ251dGxzX3N0cmVycm9yKQorKyAgICB7CisrICAgICAgZ193YXJuaW5nICgiQ2Fubm90 IHVzZSBHSG1hYzogZmFpbGVkIHRvIGxvYWQgZ251dGxzX3N0cmVycm9yOiAlcyIsIGRsZXJyb3Ig KCkpOworKyAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgZ251dGxzX2luaXRpYWxpemVfc3Vj Y2Vzc2Z1bCA9IFRSVUU7CisrfQorKworIEdIbWFjICoKKyBnX2htYWNfbmV3IChHQ2hlY2tzdW1U eXBlICBkaWdlc3RfdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBndWNoYXIgICprZXksCisgICAg ICAgICAgICAgZ3NpemUgICAgICAgICAga2V5X2xlbikKKyB7CisgICBnbnV0bHNfbWFjX2FsZ29y aXRobV90IGFsZ287CistICBHSG1hYyAqaG1hYyA9IGdfbmV3MCAoR0htYWMsIDEpOworKyAgR0ht YWMgKmhtYWM7CisgICBpbnQgcmV0OworIAorKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmZ251 dGxzX2luaXRpYWxpemVfYXR0ZW1wdGVkKSkKKysgICAgeworKyAgICAgIGluaXRpYWxpemVfZ251 dGxzICgpOworKyAgICAgIGdfb25jZV9pbml0X2xlYXZlICgmZ251dGxzX2luaXRpYWxpemVfYXR0 ZW1wdGVkLCAxKTsKKysgICAgfQorKworKyAgaWYgKCFnbnV0bHNfaW5pdGlhbGl6ZV9zdWNjZXNz ZnVsKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysgIGhtYWMgPSBnX25ldzAgKEdIbWFjLCAxKTsK KyAgIGhtYWMtPnJlZl9jb3VudCA9IDE7CisgICBobWFjLT5kaWdlc3RfdHlwZSA9IGRpZ2VzdF90 eXBlOworIAorZGlmZiAtLWdpdCBhL2dsaWIvZ2htYWMuYyBiL2dsaWIvZ2htYWMuYworaW5kZXgg MGUzOWVhNDBhLi4yZDliZTkxYjggMTAwNjQ0CistLS0gYS9nbGliL2dobWFjLmMKKysrKyBiL2ds aWIvZ2htYWMuYworQEAgLTMzLDcgKzMzLDcgQEAKKyAjaW5jbHVkZSAiZ3R5cGVzLmgiCisgI2lu Y2x1ZGUgImdsaWJpbnRsLmgiCisgCistI2lmZGVmIEhBVkVfR05VVExTCisrI2lmZGVmIFVTRV9H TlVUTFMKKyAjZXJyb3IgImJ1aWxkIGNvbmZpZ3VyYXRpb24gZXJyb3IiCisgI2VuZGlmCisgCitk aWZmIC0tZ2l0IGEvZ2xpYi9tZXNvbi5idWlsZCBiL2dsaWIvbWVzb24uYnVpbGQKK2luZGV4IGIx N2M4OWRkOS4uYTAxNWY3NzU1IDEwMDY0NAorLS0tIGEvZ2xpYi9tZXNvbi5idWlsZAorKysrIGIv Z2xpYi9tZXNvbi5idWlsZAorQEAgLTM4NSw3ICszODUsNyBAQCBsaWJnbGliID0gbGlicmFyeSgn Z2xpYi0yLjAnLAorICAgIyBpbnRsLmxpYiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFNBRkVTRUgK KyAgIGxpbmtfYXJncyA6IFtub3NlaF9saW5rX2FyZ3MsIGdsaWJfbGlua19mbGFncywgd2luMzJf bGRmbGFnc10sCisgICBpbmNsdWRlX2RpcmVjdG9yaWVzIDogY29uZmlnaW5jLAorLSAgZGVwZW5k ZW5jaWVzIDogcGNyZV9kZXBzICsgbGliZ251dGxzX2RlcCArIFt0aHJlYWRfZGVwLCBsaWJydF0g KyBsaWJpbnRsX2RlcHMgKyBsaWJpY29udiArIHBsYXRmb3JtX2RlcHMgKyBbZ251bGliX2xpYm1f ZGVwZW5kZW5jeSwgbGlibV0gKyBbbGlic3lzcHJvZl9jYXB0dXJlX2RlcF0sCisrICBkZXBlbmRl bmNpZXMgOiBwY3JlX2RlcHMgKyBbdGhyZWFkX2RlcCwgbGlicnRdICsgbGliaW50bF9kZXBzICsg bGliaWNvbnYgKyBwbGF0Zm9ybV9kZXBzICsgW2dudWxpYl9saWJtX2RlcGVuZGVuY3ksIGxpYm1d ICsgW2xpYnN5c3Byb2ZfY2FwdHVyZV9kZXBdICsgW2xpYmRsX2RlcF0sCisgICBjX2FyZ3MgOiBn bGliX2NfYXJncywKKyAgIG9iamNfYXJncyA6IGdsaWJfY19hcmdzLAorICkKK2RpZmYgLS1naXQg YS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCAwNjRkYmE4MDAuLjdhYWU3ZGZlYSAx MDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTIxMDQsMTEg KzIxMDQsOSBAQCBpZiBob3N0X3N5c3RlbSA9PSAnbGludXgnCisgICBnbGliX2NvbmYuc2V0KCdI QVZFX0xJQk1PVU5UJywgbGlibW91bnRfZGVwLmZvdW5kKCkpCisgZW5kaWYKKyAKKy0jIGdudXRs cyBpcyB1c2VkIG9wdGlvbmFsbHkgYnkgZ2htYWMKKy1saWJnbnV0bHNfZGVwID0gW10KKysjIGdu dXRscyBpcyB1c2VkIG9wdGlvbmFsbHkgYnkgR0htYWMKKyBpZiBnZXRfb3B0aW9uKCdnbnV0bHMn KQorLSAgbGliZ251dGxzX2RlcCA9IFtkZXBlbmRlbmN5KCdnbnV0bHMnLCB2ZXJzaW9uIDogJz49 My42LjknLCByZXF1aXJlZCA6IHRydWUpXQorLSAgZ2xpYl9jb25mLnNldCgnSEFWRV9HTlVUTFMn LCAxKQorKyAgZ2xpYl9jb25mLnNldCgnVVNFX0dOVVRMUycsIDEpCisgZW5kaWYKKyAKKyBpZiBo b3N0X3N5c3RlbSA9PSAnd2luZG93cycKKy0tIAorMi4zMS4xCisKK0Zyb20gYjYxZWExOTAzNzI4 N2NhZTJlNjE1MmU5NjE2NzY3YTY5MWJmNGFmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IE1pY2hhZWwgQ2F0YW56YXJvIDxtY2F0YW56YXJvQHJlZGhhdC5jb20+CitEYXRlOiBXZWQs IDE2IEp1biAyMDIxIDIwOjQ2OjI0IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBBZGQgdGVz dCBmb3IgR0htYWMgaW4gRklQUyBtb2RlCisKK1RoaXMgd2lsbCB0ZXN0IGEgZmV3IHByb2JsZW1z IHRoYXQgd2UgaGl0IHJlY2VudGx5OgorCitnX2htYWNfY29weSgpIGlzIGJyb2tlbiwgaHR0cHM6 Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNzg2NTM4CisKK0NyYXNoIGlu IGdfaG1hY191cGRhdGUoKSBpbiBGSVBTIG1vZGUsIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNv bS9zaG93X2J1Zy5jZ2k/aWQ9MTk3MTUzMworCitDcmFzaCB3aGVuIHBhc3NpbmcgLTEgbGVuZ3Ro IHRvIGdfaG1hY191cGRhdGUoKSAoZGlzY292ZXJlZCBpbiAjMTk3MTUzMykKKworV2UnbGwgYWxz byB0ZXN0IHRvIGVuc3VyZSBNRDUgZmFpbHMsIGFuZCBzdG9wIGNvbXBpbGluZyB0aGUgb3RoZXIg TUQ1Cit0ZXN0cy4KKy0tLQorIGdsaWIvdGVzdHMvaG1hYy5jIHwgNDUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDQ1IGluc2Vy dGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2dsaWIvdGVzdHMvaG1hYy5jIGIvZ2xpYi90ZXN0cy9o bWFjLmMKK2luZGV4IDNhYzMyMDZkZi4uNjY5OGM0ZDE5IDEwMDY0NAorLS0tIGEvZ2xpYi90ZXN0 cy9obWFjLmMKKysrKyBiL2dsaWIvdGVzdHMvaG1hYy5jCitAQCAtMSw3ICsxLDEwIEBACisrI2lu Y2x1ZGUgImNvbmZpZy5oIgorKworICNpbmNsdWRlIDxnbGliLmg+CisgI2luY2x1ZGUgPHN0cmlu Zy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAKKysjaWZuZGVmIFVTRV9HTlVUTFMKKyAvKiBI TUFDLU1ENSB0ZXN0IHZlY3RvcnMgYXMgcGVyIFJGQyAyMjAyICovCisgCisgLyogVGVzdCAxICov CitAQCAtODEsNiArODQsNyBAQCBndWludDgga2V5X21kNV90ZXN0N1tdID0geworIGd1aW50OCBy ZXN1bHRfbWQ1X3Rlc3Q3W10gPSB7CisgICAgIDB4NmYsIDB4NjMsIDB4MGYsIDB4YWQsIDB4Njcs IDB4Y2QsIDB4YTAsIDB4ZWUsIDB4MWYsIDB4YjEsCisgICAgIDB4ZjUsIDB4NjIsIDB4ZGIsIDB4 M2EsIDB4YTUsIDB4M2UgfTsKKysjZW5kaWYKKyAKKyAvKiBITUFDLVNIQTEsIEhNQUMtU0hBMjU2 LCBITUFDLVNIQTM4NCBhbmQgSE1BQy1TSEE1MTIgdGVzdCB2ZWN0b3JzCisgICogYXMgcGVyIFJG Q3MgMjIwMiBhbmQgNDg2OC4KK0BAIC0yOTksNiArMzAzLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewor ICAgZ2NvbnN0cG9pbnRlciByZXN1bHQ7CisgfSBIbWFjQ2FzZTsKKyAKKysjaWZuZGVmIFVTRV9H TlVUTFMKKyBIbWFjQ2FzZSBobWFjX21kNV90ZXN0c1tdID0geworICAgeyBHX0NIRUNLU1VNX01E NSwga2V5X21kNV90ZXN0MSwgMTYsICJIaSBUaGVyZSIsIDgsIHJlc3VsdF9tZDVfdGVzdDEgfSwK KyAgIHsgR19DSEVDS1NVTV9NRDUsICJKZWZlIiwgNCwgIndoYXQgZG8geWEgd2FudCBmb3Igbm90 aGluZz8iLCAyOCwKK0BAIC0zMTcsNiArMzIyLDcgQEAgSG1hY0Nhc2UgaG1hY19tZDVfdGVzdHNb XSA9IHsKKyAgICAgICA3MywgcmVzdWx0X21kNV90ZXN0NyB9LAorICAgeyAtMSwgTlVMTCwgMCwg TlVMTCwgMCwgTlVMTCB9LAorIH07CisrI2VuZGlmCisgCisgSG1hY0Nhc2UgaG1hY19zaGExX3Rl c3RzW10gPSB7CisgICB7IEdfQ0hFQ0tTVU1fU0hBMSwga2V5X3NoYV90ZXN0MSwgMjAsICJIaSBU aGVyZSIsIDgsIHJlc3VsdF9zaGExX3Rlc3QxIH0sCitAQCAtNDkzLDExICs0OTksNDQgQEAgdGVz dF9obWFjX2Zvcl9ieXRlcyAodm9pZCkKKyAgIGdfYnl0ZXNfdW5yZWYgKGRhdGEpOworIH0KKyAK KysjaWZkZWYgVVNFX0dOVVRMUworK3N0YXRpYyB2b2lkCisrdGVzdF9nbnV0bHNfZmlwc19tb2Rl ICh2b2lkKQorK3sKKysgIEdIbWFjICpobWFjOworKyAgR0htYWMgKmNvcHk7CisrCisrICAvKiBO byBNRDUgaW4gRklQUyBtb2RlLiAqLworKyAgaG1hYyA9IGdfaG1hY19uZXcgKEdfQ0hFQ0tTVU1f TUQ1LCAiYWJjMTIzIiwgc2l6ZW9mICgiYWJjMTIzIikpOworKyAgZ19hc3NlcnRfbnVsbCAoaG1h Yyk7CisrCisrICAvKiBTSEEtMjU2IHNob3VsZCBiZSBnb29kLiAqLworKyAgaG1hYyA9IGdfaG1h Y19uZXcgKEdfQ0hFQ0tTVU1fU0hBMjU2LCAiYWJjMTIzIiwgc2l6ZW9mICgiYWJjMTIzIikpOwor KyAgZ19hc3NlcnRfbm9ubnVsbCAoaG1hYyk7CisrCisrICAvKiBFbnN1cmUgZ19obWFjX3VwZGF0 ZSgpIGRvZXMgbm90IGNyYXNoIHdoZW4gY2FsbGVkIHdpdGggLTEuICovCisrICBnX2htYWNfdXBk YXRlIChobWFjLCAiWW91IHdpbiBhZ2FpbiwgZ3Jhdml0eSEiLCAtMSk7CisrCisrICAvKiBFbnN1 cmUgZ19obWFjX2NvcHkoKSBkb2VzIG5vdCBjcmFzaC4gKi8KKysgIGNvcHkgPSBnX2htYWNfY29w eSAoaG1hYyk7CisrICBnX2Fzc2VydF9ub25udWxsIChobWFjKTsKKysgIGdfaG1hY191bnJlZiAo aG1hYyk7CisrCisrICBnX2Fzc2VydF9jbXBzdHIgKGdfaG1hY19nZXRfc3RyaW5nIChjb3B5KSwg PT0sICI3OTViYTY5MDBiY2IyMmU4Y2U2NWMyZWMwMmRiNGU4NTY5N2RhOTIxZGViOTYwZWUzMTQz YmY4OGE0YTYwZjgzIik7CisrICBnX2htYWNfdW5yZWYgKGNvcHkpOworK30KKysjZW5kaWYKKysK KyBpbnQKKyBtYWluIChpbnQgYXJnYywKKyAgICAgY2hhciAqKmFyZ3YpCisgeworICAgaW50IGk7 CisrCisrI2lmZGVmIFVTRV9HTlVUTFMKKysgIGdfc2V0ZW52ICgiR05VVExTX0ZPUkNFX0ZJUFNf TU9ERSIsICIxIiwgRkFMU0UpOworKyNlbmRpZgorKworICAgZ190ZXN0X2luaXQgKCZhcmdjLCAm YXJndiwgTlVMTCk7CisgCisgICBmb3IgKGkgPSAwIDsgaG1hY19zaGExX3Rlc3RzW2ldLmtleV9s ZW4gPiAwIDsgaSsrKQorQEAgLTUzMiw2ICs1NzEsNyBAQCBtYWluIChpbnQgYXJnYywKKyAgICAg ICBnX2ZyZWUgKG5hbWUpOworICAgICB9CisgCisrI2lmbmRlZiBVU0VfR05VVExTCisgICBmb3Ig KGkgPSAwIDsgaG1hY19tZDVfdGVzdHNbaV0ua2V5X2xlbiA+IDAgOyBpKyspCisgICAgIHsKKyAg ICAgICBnY2hhciAqbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIi9obWFjL21kNS0lZCIsIGkgKyAx KTsKK0BAIC01MzksNiArNTc5LDcgQEAgbWFpbiAoaW50IGFyZ2MsCisgICAgICAgICAodm9pZCAo KikoY29uc3Qgdm9pZCAqKSkgdGVzdF9obWFjKTsKKyAgICAgICBnX2ZyZWUgKG5hbWUpOworICAg ICB9CisrI2VuZGlmCisgCisgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvaG1hYy9yZWYtdW5yZWYiLCB0 ZXN0X2htYWNfcmVmX3VucmVmKTsKKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9obWFjL2NvcHkiLCB0 ZXN0X2htYWNfY29weSk7CitAQCAtNTQ2LDUgKzU4Nyw5IEBAIG1haW4gKGludCBhcmdjLAorICAg Z190ZXN0X2FkZF9mdW5jICgiL2htYWMvZm9yLXN0cmluZyIsIHRlc3RfaG1hY19mb3Jfc3RyaW5n KTsKKyAgIGdfdGVzdF9hZGRfZnVuYyAoIi9obWFjL2Zvci1ieXRlcyIsIHRlc3RfaG1hY19mb3Jf Ynl0ZXMpOworIAorKyNpZmRlZiBVU0VfR05VVExTCisrICBnX3Rlc3RfYWRkX2Z1bmMgKCIvaG1h Yy9nbnV0bHMtZmlwcy1tb2RlIiwgdGVzdF9nbnV0bHNfZmlwc19tb2RlKTsKKysjZW5kaWYKKysK KyAgIHJldHVybiBnX3Rlc3RfcnVuICgpOworIH0KKy0tIAorMi4zMS4xCg==