From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 2208 invoked from network); 11 Jun 2021 17:35:14 -0000 Received: from 1ess.inri.net (216.126.196.35) by inbox.vuxu.org with ESMTPUTF8; 11 Jun 2021 17:35:14 -0000 Received: from mail-oi1-f173.google.com ([209.85.167.173]) by 1ess; Fri Jun 11 13:02:20 -0400 2021 Received: by mail-oi1-f173.google.com with SMTP id s23so6451346oiw.9 for <9front@9front.org>; Fri, 11 Jun 2021 10:02:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=I6vbGwfWgxOLFnFGwCu3BDSK/yjK5OKLXpRfG6GOrtc=; b=p1kIQyM5a5OJeRuNVHkzLIsUBEYtYpOFUhZJdL1+Cba6eyNQEFIy2i8wlwTOH/aHEM MpevwyLBKsX2XaYyjErnoNfoXyyIY+K992f72bALe4lidvS9MogZUM0nwBx9hxkoaFHw YrJtIiOQ2mXQmpD/J+tp2M57ZzI39ZM72ufc3UO8Xjowea1608SKPnZP2h0hbNsMOsZa gECJEUleGGKABSTCvf46kItjd1cOPDM10NN6/vUpn8Fu00QwTN6NhiV/B9yPuoaiVtk4 9CnYIOzkCPbL3EQXXSTE4F5KIetqvFGDn5BVdvv1eoqVCLdJ8wrxsihHzBFNk42WiQt/ Zbsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=I6vbGwfWgxOLFnFGwCu3BDSK/yjK5OKLXpRfG6GOrtc=; b=lg+G5r/slyiTGQe196gItUfddoDpwWJTa7Z26q+fBgB7e5JqiurwnLHLHigJDnYHbI U6hD6qCDZiqefo233+ULPFSxTOBihgO6f79B5lN/mm5tdcagSZt/RXYpU3+HIxbv82Nb 4UZwek6ZCTFThuXyR4V7svAJj1jQ86Kl7MFY0+kx6eqrsb3ZysrD+ugTNLXbC5hC4YxK BNmkymTuJ++OMuCTLGGf0m4hS9FJknVNZgKM89XWgTigsgRwVHgnqDj5+mkB86tfDOaG lm2Bxjr8TPkaUdLe1/zDWh1mQq1+HkgGm9hBAxbzjlWkYBIp+muPqAg/3Iu5Jz5nO3e0 y5qQ== X-Gm-Message-State: AOAM533iB7WgvGd16C5bxdqR8ZuD8PG+jkKBX3yYT5CYAu8Nn/98vbBJ +BXtShZH6sASpafeTF4Vd7N3UmU/rCuvLhPKAdpDAyxEi6Q= X-Google-Smtp-Source: ABdhPJzC+4lF7/cZKfhfQiN10hHmCtpNSAHEKfWlw/SAY4kMVHHVi4bh+awSTinR6pYsdx0d5ReZQm4HHXoaDdO2gts= X-Received: by 2002:aca:b406:: with SMTP id d6mr2781250oif.71.1623423982231; Fri, 11 Jun 2021 08:06:22 -0700 (PDT) MIME-Version: 1.0 From: kemal Date: Fri, 11 Jun 2021 15:06:07 +0000 Message-ID: To: 9front@9front.org Content-Type: multipart/mixed; boundary="000000000000c840d405c47ed9b1" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: base hardware ActivityPub grid pipelining app Subject: [9front] libsec: various tls changes Reply-To: 9front@9front.org Precedence: bulk --000000000000c840d405c47ed9b1 Content-Type: text/plain; charset="UTF-8" hello, the changes are explained in the patchset. --000000000000c840d405c47ed9b1 Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kpsgol6k0 RnJvbSA1ZGJjNTc0YmI5NDUxZGRiY2NjMWZlNmNhMjE0ZDBlZWMzOTMwZDBlCkZyb206IGtlbWFs IDxrZW1hbGluYW5jOEBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTEgSnVuIDIwMjEgMTQ6MjI6MzYg KzAwMDAKU3ViamVjdDogW1BBVENIXSBsaWJzZWM6IHZhcmlvdXMgY2hhbmdlcyB0byB0bHMKCgox LiBhZGQgdGhlIGN1cnZlIHgyNTUxOSB0byB0bHMsIGJvdGggY2xpZW50IGFuZCBzZXJ2ZXIuCml0 J3MgbW9yZSBmYXN0ZXIsIGltbXVuZSB0byB0aW1pbmcgYXR0YWNrcyBieSBkZXNpZ24sCmRvZXMg bm90IHJlcXVpcmUgdmVyaWZ5aW5nIGlmIHRoZSBwdWJsaWMga2V5IGlzIHZhbGlkLApldGMgZXRj LiBzZXJ2ZXItc2lkZSBoYXMgdG8gY2hlY2sgaWYgdGhlIGNsaWVudCBzdXBwb3J0cwp0aGUgY3Vy dmUsIHNvIGEgbmV3IGZ1bmN0aW9uIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gcGFyc2UKdGhlIGNs aWVudCdzIGV4dGVuc2lvbnMuCgoyLiByZWplY3Qgd2VhayBkaGUgcHJpbWVzIHRoYXQgY2FuIGJl IGVhc2lseSBjcmFja2VkIHdpdGgKdGhlIG51bWJlciBmaWVsZCBzaWV2ZSBhbGdvcml0aG0uIHRo aXMgYXZvaWRzIGF0dGFja3MgbGlrZQpsb2dqYW0uCgozLiBzdG9wIHB1dHRpbmcgdW5peCB0aW1l IHRvIHRoZSBmaXJzdCA0IGJ5dGVzIG9mIGNsaWVudC8Kc2VydmVyIHJhbmRvbS4gaXQgY2FuIGFs bG93IGZpbmdlcnByaW50aW5nLCB0bHMgMS4zIGRvZXNuJ3QKcmVjb21tZW5kIGl0IGFueSBtb3Jl IGFuZCB0aGVyZSB3YXMgYSBkcmFmdCB0byBkZXByZWNhdGUKdGhpcyBiZWhhdmlvdXIgZWFybGll ci5bMV0KCjQuIHNpbXBseSBwcmYgY29kZSwgcmVtb3ZlIHVzZWxlc3MgY2lwaGVyIGVudW1zLgoK WzFdIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQtbWF0aGV3c29u LW5vLWdtdHVuaXh0aW1lLTAwCi0tLQpkaWZmIDQ2NTE5OWZjNjUxNTFmNTEzZmM4MmQyMjkxOWNm YzY3ZGI5ZTBkOTggNWRiYzU3NGJiOTQ1MWRkYmNjYzFmZTZjYTIxNGQwZWVjMzkzMGQwZQotLS0g YS9zeXMvc3JjL2xpYnNlYy9wb3J0L3Rsc2hhbmQuYwlUdWUgSnVuICA4IDIzOjEzOjU3IDIwMjEK KysrIGIvc3lzL3NyYy9saWJzZWMvcG9ydC90bHNoYW5kLmMJRnJpIEp1biAxMSAxNzoyMjozNiAy MDIxCkBAIC02NiwxOCArNjYsMjAgQEAKIAlpbnQgcHNrbGVuOwogCWludCBjbGllbnRWZXJzOwkJ CS8vIHZlcnNpb24gaW4gQ2xpZW50SGVsbG8KIAl1Y2hhciBzZWNbTWFzdGVyU2VjcmV0U2l6ZV07 CS8vIG1hc3RlciBzZWNyZXQKLQl1Y2hhciBjcmFuZG9tW1JhbmRvbVNpemVdOwkvLyBjbGllbnQg cmFuZG9tCiAJdWNoYXIgc3JhbmRvbVtSYW5kb21TaXplXTsJLy8gc2VydmVyIHJhbmRvbQorCXVj aGFyIGNyYW5kb21bUmFuZG9tU2l6ZV07CS8vIGNsaWVudCByYW5kb20KIAorCU5hbWVkY3VydmUg Km5jOyAvLyBzZWxlY3RlZCBjdXJ2ZSBmb3IgRUNESEUKIAkvLyBkaWZmaWUgaGVsbG1hbiBzdGF0 ZQogCURIc3RhdGUgZGg7CiAJc3RydWN0IHsKIAkJRUNkb21haW4gZG9tOwogCQlFQ3ByaXYgUTsK IAl9IGVjOworCXVjaGFyIFhbMzJdOwogCiAJLy8gYnl0ZSBnZW5lcmF0aW9uIGFuZCBoYW5kc2hh a2UgY2hlY2tzdW0KLQl2b2lkICgqcHJmKSh1Y2hhciosIGludCwgdWNoYXIqLCBpbnQsIGNoYXIq LCB1Y2hhciosIGludCwgdWNoYXIqLCBpbnQpOworCXZvaWQgKCpwcmYpKHVjaGFyKiwgaW50LCB1 Y2hhciosIGludCwgY2hhciosIHVjaGFyKiwgaW50KTsKIAl2b2lkICgqc2V0RmluaXNoZWQpKFRs c1NlYyosIEhhbmRzaGFrZUhhc2gsIHVjaGFyKiwgaW50KTsKIAlpbnQgbmZpbjsKIH07CkBAIC0x MDcsNyArMTA5LDcgQEAKIAlpbnQgdGFnOwogCXVuaW9uIHsKIAkJc3RydWN0IHsKLQkJCWludCB2 ZXJzaW9uOworCQkJaW50CXZlcnNpb247CiAJCQl1Y2hhciAJcmFuZG9tW1JhbmRvbVNpemVdOwog CQkJQnl0ZXMqCXNpZDsKIAkJCUludHMqCWNpcGhlcnM7CkBAIC0xMTUsNyArMTE3LDcgQEAKIAkJ CUJ5dGVzKglleHRlbnNpb25zOwogCQl9IGNsaWVudEhlbGxvOwogCQlzdHJ1Y3QgewotCQkJaW50 IHZlcnNpb247CisJCQlpbnQJdmVyc2lvbjsKIAkJCXVjaGFyCXJhbmRvbVtSYW5kb21TaXplXTsK IAkJCUJ5dGVzKglzaWQ7CiAJCQlpbnQJY2lwaGVyOwpAQCAtMjE0LDc5ICsyMTYsMzYgQEAKIAog Ly8gY2lwaGVyIHN1aXRlcwogZW51bSB7Ci0JVExTX05VTExfV0lUSF9OVUxMX05VTEwJCQk9IDB4 MDAwMCwKLQlUTFNfUlNBX1dJVEhfTlVMTF9NRDUJCQk9IDB4MDAwMSwKLQlUTFNfUlNBX1dJVEhf TlVMTF9TSEEJCQk9IDB4MDAwMiwKLQlUTFNfUlNBX0VYUE9SVF9XSVRIX1JDNF80MF9NRDUJCT0g MHgwMDAzLAotCVRMU19SU0FfV0lUSF9SQzRfMTI4X01ENQkJPSAweDAwMDQsCi0JVExTX1JTQV9X SVRIX1JDNF8xMjhfU0hBCQk9IDB4MDAwNSwKLQlUTFNfUlNBX0VYUE9SVF9XSVRIX1JDMl9DQkNf NDBfTUQ1CT0gMFgwMDA2LAotCVRMU19SU0FfV0lUSF9JREVBX0NCQ19TSEEJCT0gMFgwMDA3LAot CVRMU19SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQQk9IDBYMDAwOCwKLQlUTFNfUlNBX1dJ VEhfREVTX0NCQ19TSEEJCT0gMFgwMDA5LAogCVRMU19SU0FfV0lUSF8zREVTX0VERV9DQkNfU0hB CQk9IDBYMDAwQSwKLQlUTFNfREhfRFNTX0VYUE9SVF9XSVRIX0RFUzQwX0NCQ19TSEEJPSAwWDAw MEIsCi0JVExTX0RIX0RTU19XSVRIX0RFU19DQkNfU0hBCQk9IDBYMDAwQywKLQlUTFNfREhfRFNT X1dJVEhfM0RFU19FREVfQ0JDX1NIQQk9IDBYMDAwRCwKLQlUTFNfREhfUlNBX0VYUE9SVF9XSVRI X0RFUzQwX0NCQ19TSEEJPSAwWDAwMEUsCi0JVExTX0RIX1JTQV9XSVRIX0RFU19DQkNfU0hBCQk9 IDBYMDAwRiwKLQlUTFNfREhfUlNBX1dJVEhfM0RFU19FREVfQ0JDX1NIQQk9IDBYMDAxMCwKLQlU TFNfREhFX0RTU19FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBCT0gMFgwMDExLAotCVRMU19ESEVf RFNTX1dJVEhfREVTX0NCQ19TSEEJCT0gMFgwMDEyLAotCVRMU19ESEVfRFNTX1dJVEhfM0RFU19F REVfQ0JDX1NIQQk9IDBYMDAxMywJLy8gWlpaIG11c3QgYmUgaW1wbGVtZW50ZWQgZm9yIHRsczEu MCBjb21wbGlhbmNlCi0JVExTX0RIRV9SU0FfRVhQT1JUX1dJVEhfREVTNDBfQ0JDX1NIQQk9IDBY MDAxNCwKLQlUTFNfREhFX1JTQV9XSVRIX0RFU19DQkNfU0hBCQk9IDBYMDAxNSwKIAlUTFNfREhF X1JTQV9XSVRIXzNERVNfRURFX0NCQ19TSEEJPSAwWDAwMTYsCi0JVExTX0RIX2Fub25fRVhQT1JU X1dJVEhfUkM0XzQwX01ENQk9IDB4MDAxNywKLQlUTFNfREhfYW5vbl9XSVRIX1JDNF8xMjhfTUQ1 CQk9IDB4MDAxOCwKLQlUTFNfREhfYW5vbl9FWFBPUlRfV0lUSF9ERVM0MF9DQkNfU0hBCT0gMFgw MDE5LAotCVRMU19ESF9hbm9uX1dJVEhfREVTX0NCQ19TSEEJCT0gMFgwMDFBLAotCVRMU19ESF9h bm9uX1dJVEhfM0RFU19FREVfQ0JDX1NIQQk9IDBYMDAxQiwKLQlUTFNfUlNBX1dJVEhfQUVTXzEy OF9DQkNfU0hBCQk9IDBYMDAyRiwJLy8gYWVzLCBha2EgcmlqbmRhZWwgd2l0aCAxMjggYml0IGJs b2NrcwotCVRMU19ESF9EU1NfV0lUSF9BRVNfMTI4X0NCQ19TSEEJCT0gMFgwMDMwLAotCVRMU19E SF9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEJCT0gMFgwMDMxLAotCVRMU19ESEVfRFNTX1dJVEhf QUVTXzEyOF9DQkNfU0hBCT0gMFgwMDMyLAorCisJVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QQkJPSAwWDAwMkYsCiAJVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEJPSAwWDAwMzMs Ci0JVExTX0RIX2Fub25fV0lUSF9BRVNfMTI4X0NCQ19TSEEJPSAwWDAwMzQsCiAJVExTX1JTQV9X SVRIX0FFU18yNTZfQ0JDX1NIQQkJPSAwWDAwMzUsCi0JVExTX0RIX0RTU19XSVRIX0FFU18yNTZf Q0JDX1NIQQkJPSAwWDAwMzYsCi0JVExTX0RIX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQQkJPSAw WDAwMzcsCi0JVExTX0RIRV9EU1NfV0lUSF9BRVNfMjU2X0NCQ19TSEEJPSAwWDAwMzgsCiAJVExT X0RIRV9SU0FfV0lUSF9BRVNfMjU2X0NCQ19TSEEJPSAwWDAwMzksCi0JVExTX0RIX2Fub25fV0lU SF9BRVNfMjU2X0NCQ19TSEEJPSAwWDAwM0EsCiAJVExTX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QTI1NgkJPSAwWDAwM0MsCiAJVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQTI1NgkJPSAwWDAw M0QsCiAJVExTX0RIRV9SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYJPSAwWDAwNjcsCiAKIAlU TFNfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2CQk9IDB4MDA5QywKLQlUTFNfUlNBX1dJVEhf QUVTXzI1Nl9HQ01fU0hBMzg0CQk9IDB4MDA5RCwKIAlUTFNfREhFX1JTQV9XSVRIX0FFU18xMjhf R0NNX1NIQTI1Ngk9IDB4MDA5RSwKLQlUTFNfREhFX1JTQV9XSVRIX0FFU18yNTZfR0NNX1NIQTM4 NAk9IDB4MDA5RiwKLQlUTFNfREhfUlNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2CT0gMHgwMEEw LAotCVRMU19ESF9SU0FfV0lUSF9BRVNfMjU2X0dDTV9TSEEzODQJPSAweDAwQTEsCi0JVExTX0RI RV9EU1NfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYJPSAweDAwQTIsCi0JVExTX0RIRV9EU1NfV0lU SF9BRVNfMjU2X0dDTV9TSEEzODQJPSAweDAwQTMsCi0JVExTX0RIX0RTU19XSVRIX0FFU18xMjhf R0NNX1NIQTI1Ngk9IDB4MDBBNCwKLQlUTFNfREhfRFNTX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0 CT0gMHgwMEE1LAotCVRMU19ESF9hbm9uX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2CT0gMHgwMEE2 LAotCVRMU19ESF9hbm9uX1dJVEhfQUVTXzI1Nl9HQ01fU0hBMzg0CT0gMHgwMEE3LAotCi0JVExT X0VDREhFX0VDRFNBX1dJVEhfQUVTXzEyOF9HQ01fU0hBMjU2ID0gMHhDMDJCLAotCVRMU19FQ0RI RV9SU0FfV0lUSF9BRVNfMTI4X0dDTV9TSEEyNTYJPSAweEMwMkYsCiAKIAlUTFNfRUNESEVfUlNB X1dJVEhfQUVTXzEyOF9DQkNfU0hBCT0gMHhDMDEzLAogCVRMU19FQ0RIRV9SU0FfV0lUSF9BRVNf MjU2X0NCQ19TSEEJPSAweEMwMTQsCi0JVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NI QTI1Ngk9IDB4QzAyNywKIAlUTFNfRUNESEVfRUNEU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEyNTYJ PSAweEMwMjMsCisJVExTX0VDREhFX1JTQV9XSVRIX0FFU18xMjhfQ0JDX1NIQTI1Ngk9IDB4QzAy NywKIAotCVRMU19FQ0RIRV9SU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9IDB4Q0NBOCwKLQlU TFNfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9IDB4Q0NBOSwKLQlUTFNfREhF X1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CT0gMHhDQ0FBLAorCVRMU19FQ0RIRV9FQ0RTQV9X SVRIX0FFU18xMjhfR0NNX1NIQTI1NiA9IDB4QzAyQiwKKwlUTFNfRUNESEVfUlNBX1dJVEhfQUVT XzEyOF9HQ01fU0hBMjU2CT0gMHhDMDJGLAogCiAJR09PR0xFX0VDREhFX1JTQV9XSVRIX0NIQUNI QTIwX1BPTFkxMzA1CQk9IDB4Q0MxMywKIAlHT09HTEVfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEy MF9QT0xZMTMwNQk9IDB4Q0MxNCwKIAlHT09HTEVfREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkx MzA1CQk9IDB4Q0MxNSwKIAorCVRMU19FQ0RIRV9SU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9 IDB4Q0NBOCwKKwlUTFNfRUNESEVfRUNEU0FfV0lUSF9DSEFDSEEyMF9QT0xZMTMwNQk9IDB4Q0NB OSwKKwlUTFNfREhFX1JTQV9XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CT0gMHhDQ0FBLAorCiAJVExT X1BTS19XSVRIX0NIQUNIQTIwX1BPTFkxMzA1CQk9IDB4Q0NBQiwKIAlUTFNfUFNLX1dJVEhfQUVT XzEyOF9DQkNfU0hBMjU2CQk9IDB4MDBBRSwKIAlUTFNfUFNLX1dJVEhfQUVTXzEyOF9DQkNfU0hB CQk9IDB4MDA4QywKQEAgLTMwMCw2ICsyNTksMjAgQEAKIAlDb21wcmVzc2lvbk1heAogfTsKIAor CisvLyBjdXJ2ZXMKK2VudW0geworCVgyNTUxOSA9IDB4MDAxZCwKK307CisKKy8vIGV4dGVuc2lv bnMKK2VudW0geworCUV4dHNuaSA9IDB4MDAwMCwKKwlFeHRlYyA9IDB4MDAwYSwKKwlFeHRlY3Ag PSAweDAwMGIsCisJRXh0c2lnYWxncyA9IDB4MDAwZCwKK307CisKIHN0YXRpYyBBbGdzIGNpcGhl ckFsZ3NbXSA9IHsKIAkvLyBFQ0RIRS1FQ0RTQQogCXsiY2Nwb2x5OTZfYWVhZCIsICJjbGVhciIs IDIqKDMyKzEyKSwgVExTX0VDREhFX0VDRFNBX1dJVEhfQ0hBQ0hBMjBfUE9MWTEzMDV9LApAQCAt MzQzLDYgKzMxNiw3IEBACiB9OwogCiBzdGF0aWMgTmFtZWRjdXJ2ZSBuYW1lZGN1cnZlc1tdID0g eworCVgyNTUxOSwgbmlsLAogCTB4MDAxNywgc2VjcDI1NnIxLAogCTB4MDAxOCwgc2VjcDM4NHIx LAogfTsKQEAgLTQxMyw3ICszODcsNyBAQAogCiBzdGF0aWMgdm9pZAl0bHNTZWNJbml0cyhUbHNT ZWMgKnNlYywgaW50IGN2ZXJzLCB1Y2hhciAqY3JhbmRvbSk7CiBzdGF0aWMgaW50CXRsc1NlY1JT QXMoVGxzU2VjICpzZWMsIEJ5dGVzICplcG0pOwotc3RhdGljIEJ5dGVzKgl0bHNTZWNFQ0RIRXMx KFRsc1NlYyAqc2VjLCBOYW1lZGN1cnZlICpuYyk7CitzdGF0aWMgQnl0ZXMqCXRsc1NlY0VDREhF czEoVGxzU2VjICpzZWMpOwogc3RhdGljIGludAl0bHNTZWNFQ0RIRXMyKFRsc1NlYyAqc2VjLCBC eXRlcyAqWWMpOwogc3RhdGljIHZvaWQJdGxzU2VjSW5pdGMoVGxzU2VjICpzZWMsIGludCBjdmVy cyk7CiBzdGF0aWMgQnl0ZXMqCXRsc1NlY1JTQWMoVGxzU2VjICpzZWMsIHVjaGFyICpjZXJ0LCBp bnQgbmNlcnQpOwpAQCAtNDU0LDYgKzQyOCw3IEBACiB7CiAJY2hhciBidWZbOF07CiAJY2hhciBk bmFtZVs2NF07CisJdWNoYXIgc2VlZFsyKlJhbmRvbVNpemVdOwogCWludCBuLCBkYXRhLCBjdGws IGhhbmQ7CiAJVGxzQ29ubmVjdGlvbiAqdGxzOwogCkBAIC00OTgsMTMgKzQ3MywxNSBAQAogCWNv bm4tPnNlc3Npb25JRCA9IG5pbDsKIAlpZihjb25uLT5zZXNzaW9uS2V5ICE9IG5pbAogCSYmIGNv bm4tPnNlc3Npb25UeXBlICE9IG5pbAotCSYmIHN0cmNtcChjb25uLT5zZXNzaW9uVHlwZSwgInR0 bHMiKSA9PSAwKQorCSYmIHN0cmNtcChjb25uLT5zZXNzaW9uVHlwZSwgInR0bHMiKSA9PSAwKXsK KwkJbWVtbW92ZShzZWVkLCB0bHMtPnNlYy0+Y3JhbmRvbSwgUmFuZG9tU2l6ZSk7CisJCW1lbW1v dmUoc2VlZCtSYW5kb21TaXplLCB0bHMtPnNlYy0+c3JhbmRvbSwgUmFuZG9tU2l6ZSk7CiAJCXRs cy0+c2VjLT5wcmYoCiAJCQljb25uLT5zZXNzaW9uS2V5LCBjb25uLT5zZXNzaW9uS2V5bGVuLAog CQkJdGxzLT5zZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwKIAkJCWNvbm4tPnNlc3Npb25Db25z dCwgCi0JCQl0bHMtPnNlYy0+Y3JhbmRvbSwgUmFuZG9tU2l6ZSwKLQkJCXRscy0+c2VjLT5zcmFu ZG9tLCBSYW5kb21TaXplKTsKKwkJCXNlZWQsIHNpemVvZihzZWVkKSk7CisJfQogCXRsc0Nvbm5l Y3Rpb25GcmVlKHRscyk7CiAJY2xvc2UoZmQpOwogCXJldHVybiBkYXRhOwpAQCAtNTI2LDcgKzUw Myw3IEBACiAJCWIgPSBlcmVhbGxvYyhiLCBtICsgMisyKzIrMSsyK24pOwogCQlwID0gYiArIG07 CiAKLQkJcHV0MTYocCwgMCksIHAgKz0gMjsJCS8qIFR5cGU6IHNlcnZlcl9uYW1lICovCisJCXB1 dDE2KHAsIEV4dHNuaSksIHAgKz0gMjsJLyogVHlwZTogc2VydmVyX25hbWUgKi8KIAkJcHV0MTYo cCwgMisxKzIrbiksIHAgKz0gMjsJLyogTGVuZ3RoICovCiAJCXB1dDE2KHAsIDErMituKSwgcCAr PSAyOwkvKiBTZXJ2ZXIgTmFtZSBsaXN0IGxlbmd0aCAqLwogCQkqcCsrID0gMDsJCQkvKiBTZXJ2 ZXIgTmFtZSBUeXBlOiBob3N0X25hbWUgKi8KQEAgLTUzNSwyNiArNTEyLDI2IEBACiAJCXAgKz0g bjsKIAl9CiAKLQkvLyBFQ0RIRQorCS8vIEVsbGlwdGljIEN1cnZlcyAoYWxzbyBjYWxsZWQgU3Vw cG9ydGVkIEdyb3VwcykKIAlpZihQcm90b2NvbFZlcnNpb24gPj0gVExTMTBWZXJzaW9uKXsKIAkJ bSA9IHAgLSBiOwogCQliID0gZXJlYWxsb2MoYiwgbSArIDIrMisyK25lbGVtKG5hbWVkY3VydmVz KSoyICsgMisyKzErbmVsZW0ocG9pbnRmb3JtYXRzKSk7CiAJCXAgPSBiICsgbTsKIAogCQluID0g bmVsZW0obmFtZWRjdXJ2ZXMpOwotCQlwdXQxNihwLCAweDAwMGEpLCBwICs9IDI7CS8qIFR5cGU6 IGVsbGlwdGljX2N1cnZlcyAqLworCQlwdXQxNihwLCBFeHRlYyksIHAgKz0gMjsJLyogVHlwZTog ZWxsaXB0aWNfY3VydmVzIC8gc3VwcG9ydGVkX2dyb3VwcyAqLwogCQlwdXQxNihwLCAobisxKSoy KSwgcCArPSAyOwkvKiBMZW5ndGggKi8KIAkJcHV0MTYocCwgbioyKSwgcCArPSAyOwkJLyogRWxs aXB0aWMgQ3VydmVzIExlbmd0aCAqLwotCQlmb3IoaT0wOyBpIDwgbjsgaSsrKXsJCS8qIEVsbGlw dGljIGN1cnZlcyAqLworCQlmb3IoaT0wOyBpIDwgbjsgaSsrKXsJCS8qIEVsbGlwdGljIEN1cnZl cyAqLwogCQkJcHV0MTYocCwgbmFtZWRjdXJ2ZXNbaV0udGxzaWQpOwogCQkJcCArPSAyOwogCQl9 CiAKIAkJbiA9IG5lbGVtKHBvaW50Zm9ybWF0cyk7Ci0JCXB1dDE2KHAsIDB4MDAwYiksIHAgKz0g MjsJLyogVHlwZTogZWNfcG9pbnRfZm9ybWF0cyAqLworCQlwdXQxNihwLCBFeHRlY3ApLCBwICs9 IDI7CS8qIFR5cGU6IGVjX3BvaW50X2Zvcm1hdHMgKi8KIAkJcHV0MTYocCwgbisxKSwgcCArPSAy OwkJLyogTGVuZ3RoICovCiAJCSpwKysgPSBuOwkJCS8qIEVDIHBvaW50IGZvcm1hdHMgTGVuZ3Ro ICovCi0JCWZvcihpPTA7IGkgPCBuOyBpKyspCQkvKiBFbGxpcHRpYyBjdXJ2ZXMgcG9pbnQgZm9y bWF0cyAqLworCQlmb3IoaT0wOyBpIDwgbjsgaSsrKQkJLyogRUMgcG9pbnQgZm9ybWF0cyAqLwog CQkJKnArKyA9IHBvaW50Zm9ybWF0c1tpXTsKIAl9CiAKQEAgLTU2Niw3ICs1NDMsNyBAQAogCQli ID0gZXJlYWxsb2MoYiwgbSArIDIrMisyK24qMik7CiAJCXAgPSBiICsgbTsKIAotCQlwdXQxNihw LCAweDAwMGQpLCBwICs9IDI7CisJCXB1dDE2KHAsIEV4dHNpZ2FsZ3MpLCBwICs9IDI7CiAJCXB1 dDE2KHAsIG4qMiArIDIpLCBwICs9IDI7CiAJCXB1dDE2KHAsIG4qMiksIHAgKz0gMjsKIAkJZm9y KGk9MDsgaSA8IG47IGkrKyl7CkBAIC01ODYsNiArNTYzLDcgQEAKIHsKIAljaGFyIGJ1Zls4XTsK IAljaGFyIGRuYW1lWzY0XTsKKwl1Y2hhciBzZWVkWzIqUmFuZG9tU2l6ZV07CiAJaW50IG4sIGRh dGEsIGN0bCwgaGFuZDsKIAlUbHNDb25uZWN0aW9uICp0bHM7CiAJdWNoYXIgKmV4dDsKQEAgLTY0 MSwxMyArNjE5LDE1IEBACiAJY29ubi0+c2Vzc2lvbklEID0gbmlsOwogCWlmKGNvbm4tPnNlc3Np b25LZXkgIT0gbmlsCiAJJiYgY29ubi0+c2Vzc2lvblR5cGUgIT0gbmlsCi0JJiYgc3RyY21wKGNv bm4tPnNlc3Npb25UeXBlLCAidHRscyIpID09IDApCisJJiYgc3RyY21wKGNvbm4tPnNlc3Npb25U eXBlLCAidHRscyIpID09IDApeworCQltZW1tb3ZlKHNlZWQsIHRscy0+c2VjLT5jcmFuZG9tLCBS YW5kb21TaXplKTsKKwkJbWVtbW92ZShzZWVkK1JhbmRvbVNpemUsIHRscy0+c2VjLT5zcmFuZG9t LCBSYW5kb21TaXplKTsKIAkJdGxzLT5zZWMtPnByZigKIAkJCWNvbm4tPnNlc3Npb25LZXksIGNv bm4tPnNlc3Npb25LZXlsZW4sCiAJCQl0bHMtPnNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLAog CQkJY29ubi0+c2Vzc2lvbkNvbnN0LCAKLQkJCXRscy0+c2VjLT5jcmFuZG9tLCBSYW5kb21TaXpl LAotCQkJdGxzLT5zZWMtPnNyYW5kb20sIFJhbmRvbVNpemUpOworCQkJc2VlZCwgc2l6ZW9mKHNl ZWQpKTsKKwl9CiAJdGxzQ29ubmVjdGlvbkZyZWUodGxzKTsKIAljbG9zZShmZCk7CiAJcmV0dXJu IGRhdGE7CkBAIC02NjUsNiArNjQ1LDUzIEBACiAJcmV0dXJuIGk7CiB9CiAKK3N0YXRpYyBCeXRl cyAqCit0bHNTZXJ2ZXJFeHRlbnNpb25zKFRsc0Nvbm5lY3Rpb24gKmMsIEJ5dGVzICpleHQpCit7 CisJdWNoYXIgKnAsICplOworCWludCBpLCBqLCBuOworCisJcCA9IGV4dC0+ZGF0YTsKKwllID0g cCtleHQtPmxlbjsKKwl3aGlsZShwIDwgZSl7CisJCWlmKGUtcCA8IDIpCisJCQlnb3RvIFNob3J0 OworCQlzd2l0Y2goZ2V0MTYocCkpeworCQljYXNlIEV4dGVjOgkKKwkJCXAgKz0gMjsKKwkJCW4g PSBnZXQxNihwKTsKKwkJCWlmKGUtcCA8IG4gfHwgbiA8IDIpCisJCQkJZ290byBTaG9ydDsKKwkJ CXAgKz0gMjsKKwkJCW4gPSBnZXQxNihwKTsKKwkJCXAgKz0gMjsKKwkJCWlmKGUtcCA8IG4gfHwg biAmIDEgfHwgbiA9PSAwKQorCQkJCWdvdG8gU2hvcnQ7CisJCQlmb3IoaSA9IDA7IGkgPCBuZWxl bShuYW1lZGN1cnZlcykgJiYgYy0+c2VjLT5uYyA9PSBuaWw7IGkrKykKKwkJCQlmb3IoaiA9IDA7 IGogPCBuOyBqICs9IDIpCisJCQkJCWlmKG5hbWVkY3VydmVzW2ldLnRsc2lkID09IGdldDE2KHAr aikpeworCQkJCQkJYy0+c2VjLT5uYyA9ICZuYW1lZGN1cnZlc1tpXTsKKwkJCQkJCWJyZWFrOwor CQkJCQl9CisJCQlwICs9IG47CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXAgKz0gMjsKKwkJ CW4gPSBnZXQxNihwKTsKKwkJCXAgKz0gMjsKKwkJCWlmKGUtcCA8IG4pCisJCQkJZ290byBTaG9y dDsKKwkJCXAgKz0gbjsKKwkJCWJyZWFrOworCQl9CisJfQorCS8vIHdlIGRvIG5vdCBzZW5kIGFu eSBleHRlbnNpb25zIHlldAorCXJldHVybiBuaWw7CitTaG9ydDoKKwl0bHNFcnJvcihjLCBFRGVj b2RlRXJyb3IsICJjbGllbnRoZWxsbyBleHRlbnNpb25zIGhhcyBpbnZhbGlkIGxlbmd0aCIpOwor CXJldHVybiBuaWw7IAorfSAKKwogc3RhdGljIFRsc0Nvbm5lY3Rpb24gKgogdGxzU2VydmVyMihp bnQgY3RsLCBpbnQgaGFuZCwKIAl1Y2hhciAqY2VydCwgaW50IGNlcnRsZW4sCkBAIC02NzQsNiAr NzAxLDcgQEAKIAlpbnQgY2lwaGVyLCBjb21wcmVzc29yLCBudW1jZXJ0cywgaTsKIAlUbHNDb25u ZWN0aW9uICpjOwogCU1zZyBtOworCUJ5dGVzICpleHQ7CiAKIAlpZih0cmFjZSkKIAkJdHJhY2Uo InRsc1NlcnZlcjJcbiIpOwpAQCAtNzQwLDYgKzc2OCw5IEBACiAJCQlnb3RvIEVycjsKIAkJfQog CX0KKwlleHQgPSB0bHNTZXJ2ZXJFeHRlbnNpb25zKGMsIG0udS5jbGllbnRIZWxsby5leHRlbnNp b25zKTsKKwlpZihjLT5lcnJlZCkKKwkJZ290byBFcnI7CiAJbXNnQ2xlYXIoJm0pOwogCiAJbS50 YWcgPSBIU2VydmVySGVsbG87CkBAIC03NDgsNiArNzc5LDcgQEAKIAltLnUuc2VydmVySGVsbG8u Y2lwaGVyID0gY2lwaGVyOwogCW0udS5zZXJ2ZXJIZWxsby5jb21wcmVzc29yID0gY29tcHJlc3Nv cjsKIAltLnUuc2VydmVySGVsbG8uc2lkID0gbWFrZWJ5dGVzKG5pbCwgMCk7CisJbS51LnNlcnZl ckhlbGxvLmV4dGVuc2lvbnMgPSBleHQ7CiAJaWYoIW1zZ1NlbmQoYywgJm0sIEFRdWV1ZSkpCiAJ CWdvdG8gRXJyOwogCkBAIC03NjQsMTEgKzc5Niw5IEBACiAJfQogCiAJaWYoaXNFQ0RIRShjaXBo ZXIpKXsKLQkJTmFtZWRjdXJ2ZSAqbmMgPSAmbmFtZWRjdXJ2ZXNbMF07CS8qIHNlY3AyNTZyMSAq LwotCiAJCW0udGFnID0gSFNlcnZlcktleUV4Y2hhbmdlOwotCQltLnUuc2VydmVyS2V5RXhjaGFu Z2UuY3VydmUgPSBuYy0+dGxzaWQ7Ci0JCW0udS5zZXJ2ZXJLZXlFeGNoYW5nZS5kaF9wYXJhbWV0 ZXJzID0gdGxzU2VjRUNESEVzMShjLT5zZWMsIG5jKTsKKwkJbS51LnNlcnZlcktleUV4Y2hhbmdl LmN1cnZlID0gYy0+c2VjLT5uYy0+dGxzaWQ7CisJCW0udS5zZXJ2ZXJLZXlFeGNoYW5nZS5kaF9w YXJhbWV0ZXJzID0gdGxzU2VjRUNESEVzMShjLT5zZWMpOwogCQlpZihtLnUuc2VydmVyS2V5RXhj aGFuZ2UuZGhfcGFyYW1ldGVycyA9PSBuaWwpewogCQkJdGxzRXJyb3IoYywgRUludGVybmFsRXJy b3IsICJjYW4ndCBzZXQgREggcGFyYW1ldGVycyIpOwogCQkJZ290byBFcnI7CkBAIC04ODksNyAr OTE5LDkgQEAKIAogCWlmKHAgPT0gbmlsIHx8IGcgPT0gbmlsIHx8IFlzID09IG5pbCkKIAkJcmV0 dXJuIG5pbDsKLQorCS8vIHJlamVjdCBkaCBwcmltZXMgdGhhdCBpcyBzdXNjZXB0aWJsZSB0byBs b2dqYW0KKwlpZihwLT5sZW4gPD0gMTAyNC84KQorCQlyZXR1cm4gbmlsOwogCVljID0gbmlsOwog CVAgPSBieXRlc3RvbXAocCk7CiAJRyA9IGJ5dGVzdG9tcChnKTsKQEAgLTkyMiw0NyArOTU0LDU1 IEBACiB7CiAJRUNkb21haW4gKmRvbSA9ICZzZWMtPmVjLmRvbTsKIAlFQ3ByaXYgKlEgPSAmc2Vj LT5lYy5ROwotCU5hbWVkY3VydmUgKm5jOwogCUVDcHViICpwdWI7CiAJRUNwb2ludCBLOworCU5h bWVkY3VydmUgKm5jOwogCUJ5dGVzICpZYzsKKwlCeXRlcyAqWjsKIAlpbnQgbjsKIAogCWlmKFlz ID09IG5pbCkKIAkJcmV0dXJuIG5pbDsKLQlmb3IobmMgPSBuYW1lZGN1cnZlczsgbmMgIT0gJm5h bWVkY3VydmVzW25lbGVtKG5hbWVkY3VydmVzKV07IG5jKyspCi0JCWlmKG5jLT50bHNpZCA9PSBj dXJ2ZSkKLQkJCWdvdG8gRm91bmQ7Ci0JcmV0dXJuIG5pbDsKIAotRm91bmQ6Ci0JZWNkb21pbml0 KGRvbSwgbmMtPmluaXQpOwotCXB1YiA9IGVjZGVjb2RlcHViKGRvbSwgWXMtPmRhdGEsIFlzLT5s ZW4pOwotCWlmKHB1YiA9PSBuaWwpCi0JCXJldHVybiBuaWw7Ci0KLQltZW1zZXQoUSwgMCwgc2l6 ZW9mKCpRKSk7Ci0JUS0+eCA9IG1wbmV3KDApOwotCVEtPnkgPSBtcG5ldygwKTsKLQlRLT5kID0g bXBuZXcoMCk7Ci0KLQltZW1zZXQoJkssIDAsIHNpemVvZihLKSk7Ci0JSy54ID0gbXBuZXcoMCk7 Ci0JSy55ID0gbXBuZXcoMCk7Ci0KLQllY2dlbihkb20sIFEpOwotCWVjbXVsKGRvbSwgcHViLCBR LT5kLCAmSyk7Ci0KLQluID0gKG1wc2lnbmlmKGRvbS0+cCkrNykvODsKLQlzZXRNYXN0ZXJTZWNy ZXQoc2VjLCBtcHRvYnl0ZXMoSy54LCBuKSk7Ci0JWWMgPSBuZXdieXRlcygxICsgMipuKTsKLQlZ Yy0+bGVuID0gZWNlbmNvZGVwdWIoZG9tLCBRLCBZYy0+ZGF0YSwgWWMtPmxlbik7CisJaWYoY3Vy dmUgPT0gWDI1NTE5KXsKKwkJaWYoWXMtPmxlbiAhPSAzMikKKwkJCXJldHVybiBuaWw7CisJCVlj ID0gbmV3Ynl0ZXMoMzIpOworCQljdXJ2ZTI1NTE5X2RoX25ldyhzZWMtPlgsIFljLT5kYXRhKTsK KwkJWiA9IG5ld2J5dGVzKDMyKTsKKwkJY3VydmUyNTUxOV9kaF9maW5pc2goc2VjLT5YLCBZcy0+ ZGF0YSwgWi0+ZGF0YSk7CisJCXNldE1hc3RlclNlY3JldChzZWMsIFopOworCX1lbHNleworCQlm b3IobmMgPSBuYW1lZGN1cnZlczsgbmMtPnRsc2lkICE9IGN1cnZlOyBuYysrKQorCQkJaWYobmMg PT0gJm5hbWVkY3VydmVzW25lbGVtKG5hbWVkY3VydmVzKV0pCisJCQkJcmV0dXJuIG5pbDsKKwkJ ZWNkb21pbml0KGRvbSwgbmMtPmluaXQpOworCQlwdWIgPSBlY2RlY29kZXB1Yihkb20sIFlzLT5k YXRhLCBZcy0+bGVuKTsKKwkJaWYocHViID09IG5pbCkKKwkJCXJldHVybiBuaWw7CiAKLQltcGZy ZWUoSy54KTsKLQltcGZyZWUoSy55KTsKKwkJbWVtc2V0KFEsIDAsIHNpemVvZigqUSkpOworCQlR LT54ID0gbXBuZXcoMCk7CisJCVEtPnkgPSBtcG5ldygwKTsKKwkJUS0+ZCA9IG1wbmV3KDApOwor CisJCW1lbXNldCgmSywgMCwgc2l6ZW9mKEspKTsKKwkJSy54ID0gbXBuZXcoMCk7CisJCUsueSA9 IG1wbmV3KDApOworCisJCWVjZ2VuKGRvbSwgUSk7CisJCWVjbXVsKGRvbSwgcHViLCBRLT5kLCAm Syk7CisKKwkJbiA9IChtcHNpZ25pZihkb20tPnApKzcpLzg7CisJCXNldE1hc3RlclNlY3JldChz ZWMsIG1wdG9ieXRlcyhLLngsIG4pKTsKKwkJWWMgPSBuZXdieXRlcygxICsgMipuKTsKKwkJWWMt PmxlbiA9IGVjZW5jb2RlcHViKGRvbSwgUSwgWWMtPmRhdGEsIFljLT5sZW4pOwogCi0JZWNwdWJm cmVlKHB1Yik7CisJCW1wZnJlZShLLngpOworCQltcGZyZWUoSy55KTsKIAorCQllY3B1YmZyZWUo cHViKTsKKwl9CiAJcmV0dXJuIFljOwogfQogCkBAIC0xMDQ1LDcgKzEwODUsNiBAQAogCQl0bHNF cnJvcihjLCBFSWxsZWdhbFBhcmFtZXRlciwgImludmFsaWQgY29tcHJlc3Npb24iKTsKIAkJZ290 byBFcnI7CiAJfQotCiAJZGh4ID0gaXNESEUoY2lwaGVyKSB8fCBpc0VDREhFKGNpcGhlcik7CiAJ aWYoIW1zZ1JlY3YoYywgJm0pKQogCQlnb3RvIEVycjsKQEAgLTIzMTMsMTE0ICsyMzUyLDU1IEBA CiB9CiAKIHN0YXRpYyB2b2lkCi10bHNQbWQ1KHVjaGFyICpidWYsIGludCBuYnVmLCB1Y2hhciAq a2V5LCBpbnQgbmtleSwgdWNoYXIgKmxhYmVsLCBpbnQgbmxhYmVsLCB1Y2hhciAqc2VlZDAsIGlu dCBuc2VlZDAsIHVjaGFyICpzZWVkMSwgaW50IG5zZWVkMSkKLXsKLQl1Y2hhciBhaVtNRDVkbGVu XSwgdG1wW01ENWRsZW5dOwotCWludCBpLCBuOwotCU1ENXN0YXRlICpzOwotCi0JLy8gZ2VuZXJh dGUgYTEKLQlzID0gaG1hY19tZDUobGFiZWwsIG5sYWJlbCwga2V5LCBua2V5LCBuaWwsIG5pbCk7 Ci0JcyA9IGhtYWNfbWQ1KHNlZWQwLCBuc2VlZDAsIGtleSwgbmtleSwgbmlsLCBzKTsKLQlobWFj X21kNShzZWVkMSwgbnNlZWQxLCBrZXksIG5rZXksIGFpLCBzKTsKLQotCXdoaWxlKG5idWYgPiAw KSB7Ci0JCXMgPSBobWFjX21kNShhaSwgTUQ1ZGxlbiwga2V5LCBua2V5LCBuaWwsIG5pbCk7Ci0J CXMgPSBobWFjX21kNShsYWJlbCwgbmxhYmVsLCBrZXksIG5rZXksIG5pbCwgcyk7Ci0JCXMgPSBo bWFjX21kNShzZWVkMCwgbnNlZWQwLCBrZXksIG5rZXksIG5pbCwgcyk7Ci0JCWhtYWNfbWQ1KHNl ZWQxLCBuc2VlZDEsIGtleSwgbmtleSwgdG1wLCBzKTsKLQkJbiA9IE1ENWRsZW47Ci0JCWlmKG4g PiBuYnVmKQotCQkJbiA9IG5idWY7Ci0JCWZvcihpID0gMDsgaSA8IG47IGkrKykKLQkJCWJ1Zltp XSBePSB0bXBbaV07Ci0JCWJ1ZiArPSBuOwotCQluYnVmIC09IG47Ci0JCWhtYWNfbWQ1KGFpLCBN RDVkbGVuLCBrZXksIG5rZXksIHRtcCwgbmlsKTsKLQkJbWVtbW92ZShhaSwgdG1wLCBNRDVkbGVu KTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi10bHNQc2hhMSh1Y2hhciAqYnVmLCBpbnQgbmJ1Ziwg dWNoYXIgKmtleSwgaW50IG5rZXksIHVjaGFyICpsYWJlbCwgaW50IG5sYWJlbCwgdWNoYXIgKnNl ZWQwLCBpbnQgbnNlZWQwLCB1Y2hhciAqc2VlZDEsIGludCBuc2VlZDEpCi17Ci0JdWNoYXIgYWlb U0hBMWRsZW5dLCB0bXBbU0hBMWRsZW5dOwotCWludCBpLCBuOwotCVNIQXN0YXRlICpzOwotCi0J Ly8gZ2VuZXJhdGUgYTEKLQlzID0gaG1hY19zaGExKGxhYmVsLCBubGFiZWwsIGtleSwgbmtleSwg bmlsLCBuaWwpOwotCXMgPSBobWFjX3NoYTEoc2VlZDAsIG5zZWVkMCwga2V5LCBua2V5LCBuaWws IHMpOwotCWhtYWNfc2hhMShzZWVkMSwgbnNlZWQxLCBrZXksIG5rZXksIGFpLCBzKTsKLQotCXdo aWxlKG5idWYgPiAwKSB7Ci0JCXMgPSBobWFjX3NoYTEoYWksIFNIQTFkbGVuLCBrZXksIG5rZXks IG5pbCwgbmlsKTsKLQkJcyA9IGhtYWNfc2hhMShsYWJlbCwgbmxhYmVsLCBrZXksIG5rZXksIG5p bCwgcyk7Ci0JCXMgPSBobWFjX3NoYTEoc2VlZDAsIG5zZWVkMCwga2V5LCBua2V5LCBuaWwsIHMp OwotCQlobWFjX3NoYTEoc2VlZDEsIG5zZWVkMSwga2V5LCBua2V5LCB0bXAsIHMpOwotCQluID0g U0hBMWRsZW47Ci0JCWlmKG4gPiBuYnVmKQotCQkJbiA9IG5idWY7Ci0JCWZvcihpID0gMDsgaSA8 IG47IGkrKykKLQkJCWJ1ZltpXSBePSB0bXBbaV07Ci0JCWJ1ZiArPSBuOwotCQluYnVmIC09IG47 Ci0JCWhtYWNfc2hhMShhaSwgU0hBMWRsZW4sIGtleSwgbmtleSwgdG1wLCBuaWwpOwotCQltZW1t b3ZlKGFpLCB0bXAsIFNIQTFkbGVuKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkCi1wX3NoYTI1Nih1 Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtleSwgaW50IG5rZXksIHVjaGFyICpsYWJlbCwg aW50IG5sYWJlbCwgdWNoYXIgKnNlZWQsIGludCBuc2VlZCkKK3Rsc1AodWNoYXIgKmJ1ZiwgaW50 IG5idWYsIHVjaGFyICprZXksIGludCBua2V5LCB1Y2hhciAqbGFiZWwsIGludCBubGFiZWwsIHVj aGFyICpzZWVkLCBpbnQgbnNlZWQsCisJRGlnZXN0U3RhdGUqICgqeCkodWNoYXIqLCB1bG9uZywg dWNoYXIqLCB1bG9uZywgdWNoYXIqLCBEaWdlc3RTdGF0ZSopLCBpbnQgeGxlbikKIHsKIAl1Y2hh ciBhaVtTSEEyXzI1NmRsZW5dLCB0bXBbU0hBMl8yNTZkbGVuXTsKLQlTSEFzdGF0ZSAqczsKKwlE aWdlc3RTdGF0ZSAqczsKIAlpbnQgbjsKIAorCWFzc2VydChzaXplb2YoYWkpIDw9IHhsZW4gJiYg c2l6ZW9mKHRtcCkgPD0geGxlbik7CiAJLy8gZ2VuZXJhdGUgYTEKLQlzID0gaG1hY19zaGEyXzI1 NihsYWJlbCwgbmxhYmVsLCBrZXksIG5rZXksIG5pbCwgbmlsKTsKLQlobWFjX3NoYTJfMjU2KHNl ZWQsIG5zZWVkLCBrZXksIG5rZXksIGFpLCBzKTsKKwlzID0geChsYWJlbCwgbmxhYmVsLCBrZXks IG5rZXksIG5pbCwgbmlsKTsKKwl4KHNlZWQsIG5zZWVkLCBrZXksIG5rZXksIGFpLCBzKTsKIAog CXdoaWxlKG5idWYgPiAwKSB7Ci0JCXMgPSBobWFjX3NoYTJfMjU2KGFpLCBTSEEyXzI1NmRsZW4s IGtleSwgbmtleSwgbmlsLCBuaWwpOwotCQlzID0gaG1hY19zaGEyXzI1NihsYWJlbCwgbmxhYmVs LCBrZXksIG5rZXksIG5pbCwgcyk7Ci0JCWhtYWNfc2hhMl8yNTYoc2VlZCwgbnNlZWQsIGtleSwg bmtleSwgdG1wLCBzKTsKLQkJbiA9IFNIQTJfMjU2ZGxlbjsKKwkJcyA9IHgoYWksIHhsZW4sIGtl eSwgbmtleSwgbmlsLCBuaWwpOworCQlzID0geChsYWJlbCwgbmxhYmVsLCBrZXksIG5rZXksIG5p bCwgcyk7CisJCXgoc2VlZCwgbnNlZWQsIGtleSwgbmtleSwgdG1wLCBzKTsKKwkJbiA9IHhsZW47 CiAJCWlmKG4gPiBuYnVmKQogCQkJbiA9IG5idWY7CiAJCW1lbW1vdmUoYnVmLCB0bXAsIG4pOwog CQlidWYgKz0gbjsKIAkJbmJ1ZiAtPSBuOwotCQlobWFjX3NoYTJfMjU2KGFpLCBTSEEyXzI1NmRs ZW4sIGtleSwgbmtleSwgdG1wLCBuaWwpOwotCQltZW1tb3ZlKGFpLCB0bXAsIFNIQTJfMjU2ZGxl bik7CisJCXgoYWksIHhsZW4sIGtleSwgbmtleSwgdG1wLCBuaWwpOworCQltZW1tb3ZlKGFpLCB0 bXAsIHhsZW4pOwogCX0KIH0KIAogLy8gZmlsbCBidWYgd2l0aCBtZDUoYXJncylec2hhMShhcmdz KQogc3RhdGljIHZvaWQKLXRsczEwUFJGKHVjaGFyICpidWYsIGludCBuYnVmLCB1Y2hhciAqa2V5 LCBpbnQgbmtleSwgY2hhciAqbGFiZWwsIHVjaGFyICpzZWVkMCwgaW50IG5zZWVkMCwgdWNoYXIg KnNlZWQxLCBpbnQgbnNlZWQxKQordGxzMTBQUkYodWNoYXIgKmJ1ZiwgaW50IG5idWYsIHVjaGFy ICprZXksIGludCBua2V5LCBjaGFyICpsYWJlbCwgdWNoYXIgKnNlZWQsIGludCBuc2VlZCkKIHsK IAlpbnQgbmxhYmVsID0gc3RybGVuKGxhYmVsKTsKIAlpbnQgbiA9IChua2V5ICsgMSkgPj4gMTsK IAotCW1lbXNldChidWYsIDAsIG5idWYpOwotCXRsc1BtZDUoYnVmLCBuYnVmLCBrZXksIG4sICh1 Y2hhciopbGFiZWwsIG5sYWJlbCwgc2VlZDAsIG5zZWVkMCwgc2VlZDEsIG5zZWVkMSk7Ci0JdGxz UHNoYTEoYnVmLCBuYnVmLCBrZXkrbmtleS1uLCBuLCAodWNoYXIqKWxhYmVsLCBubGFiZWwsIHNl ZWQwLCBuc2VlZDAsIHNlZWQxLCBuc2VlZDEpOworCXRsc1AoYnVmLCBuYnVmLCBrZXksIG4sICh1 Y2hhciopbGFiZWwsIG5sYWJlbCwgc2VlZCwgbnNlZWQsCisJCWhtYWNfbWQ1LCBNRDVkbGVuKTsK Kwl0bHNQKGJ1ZiwgbmJ1Ziwga2V5K25rZXktbiwgbiwgKHVjaGFyKilsYWJlbCwgbmxhYmVsLCBz ZWVkLCBuc2VlZCwKKwkJaG1hY19zaGExLCBTSEExZGxlbik7CiB9CiAKIHN0YXRpYyB2b2lkCi10 bHMxMlBSRih1Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtleSwgaW50IG5rZXksIGNoYXIg KmxhYmVsLCB1Y2hhciAqc2VlZDAsIGludCBuc2VlZDAsIHVjaGFyICpzZWVkMSwgaW50IG5zZWVk MSkKK3RsczEyUFJGKHVjaGFyICpidWYsIGludCBuYnVmLCB1Y2hhciAqa2V5LCBpbnQgbmtleSwg Y2hhciAqbGFiZWwsIHVjaGFyICpzZWVkLCBpbnQgbnNlZWQpCiB7Ci0JdWNoYXIgc2VlZFsyKlJh bmRvbVNpemVdOwotCi0JYXNzZXJ0KG5zZWVkMCtuc2VlZDEgPD0gc2l6ZW9mKHNlZWQpKTsKLQlt ZW1tb3ZlKHNlZWQsIHNlZWQwLCBuc2VlZDApOwotCW1lbW1vdmUoc2VlZCtuc2VlZDAsIHNlZWQx LCBuc2VlZDEpOwotCXBfc2hhMjU2KGJ1ZiwgbmJ1Ziwga2V5LCBua2V5LCAodWNoYXIqKWxhYmVs LCBzdHJsZW4obGFiZWwpLCBzZWVkLCBuc2VlZDArbnNlZWQxKTsKKwl0bHNQKGJ1ZiwgbmJ1Ziwg a2V5LCBua2V5LCAodWNoYXIqKWxhYmVsLCBzdHJsZW4obGFiZWwpLCBzZWVkLCBuc2VlZCwKKwkJ aG1hY19zaGEyXzI1NiwgU0hBMl8yNTZkbGVuKTsKIH0KIAogc3RhdGljIHZvaWQKLXNzbFBSRih1 Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtleSwgaW50IG5rZXksIGNoYXIgKmxhYmVsLCB1 Y2hhciAqc2VlZDAsIGludCBuc2VlZDAsIHVjaGFyICpzZWVkMSwgaW50IG5zZWVkMSkKK3NzbFBS Rih1Y2hhciAqYnVmLCBpbnQgbmJ1ZiwgdWNoYXIgKmtleSwgaW50IG5rZXksIGNoYXIgKmxhYmVs LCB1Y2hhciAqc2VlZCwgaW50IG5zZWVkKQogewogCXVjaGFyIHNoYTFkaWdbU0hBMWRsZW5dLCBt ZDVkaWdbTUQ1ZGxlbl0sIHRtcFsyNl07CiAJRGlnZXN0U3RhdGUgKnM7CkBAIC0yNDM1LDggKzI0 MTUsNyBAQAogCQkJdG1wW2ldID0gJ0EnIC0gMSArIGxlbjsKIAkJcyA9IHNoYTEodG1wLCBsZW4s IG5pbCwgbmlsKTsKIAkJcyA9IHNoYTEoa2V5LCBua2V5LCBuaWwsIHMpOwotCQlzID0gc2hhMShz ZWVkMCwgbnNlZWQwLCBuaWwsIHMpOwotCQlzaGExKHNlZWQxLCBuc2VlZDEsIHNoYTFkaWcsIHMp OworCQlzaGExKHNlZWQsIG5zZWVkLCBzaGExZGlnLCBzKTsKIAkJcyA9IG1kNShrZXksIG5rZXks IG5pbCwgbmlsKTsKIAkJbWQ1KHNoYTFkaWcsIFNIQTFkbGVuLCBtZDVkaWcsIHMpOwogCQluID0g TUQ1ZGxlbjsKQEAgLTI0ODYsMTggKzI0NjUsMTggQEAKIHN0YXRpYyB2b2lkCiB0bHMxMFNldEZp bmlzaGVkKFRsc1NlYyAqc2VjLCBIYW5kc2hha2VIYXNoIGhzaCwgdWNoYXIgKmZpbmlzaGVkLCBp bnQgaXNjbGllbnQpCiB7Ci0JdWNoYXIgaDBbTUQ1ZGxlbl0sIGgxW1NIQTFkbGVuXTsKKwl1Y2hh ciBoW01ENWRsZW4rU0hBMWRsZW5dOwogCWNoYXIgKmxhYmVsOwogCiAJLy8gZ2V0IGN1cnJlbnQg aGFzaCB2YWx1ZSwgYnV0IGFsbG93IGZ1cnRoZXIgbWVzc2FnZXMgdG8gYmUgaGFzaGVkIGluCi0J bWQ1KG5pbCwgMCwgaDAsICZoc2gubWQ1KTsKLQlzaGExKG5pbCwgMCwgaDEsICZoc2guc2hhMSk7 CisJbWQ1KG5pbCwgMCwgaCwgJmhzaC5tZDUpOworCXNoYTEobmlsLCAwLCBoK01ENWRsZW4sICZo c2guc2hhMSk7CiAKIAlpZihpc2NsaWVudCkKIAkJbGFiZWwgPSAiY2xpZW50IGZpbmlzaGVkIjsK IAllbHNlCiAJCWxhYmVsID0gInNlcnZlciBmaW5pc2hlZCI7Ci0JdGxzMTBQUkYoZmluaXNoZWQs IFRMU0ZpbmlzaGVkTGVuLCBzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgbGFiZWwsIGgwLCBN RDVkbGVuLCBoMSwgU0hBMWRsZW4pOworCXRsczEwUFJGKGZpbmlzaGVkLCBUTFNGaW5pc2hlZExl biwgc2VjLT5zZWMsIE1hc3RlclNlY3JldFNpemUsIGxhYmVsLCBoLCBzaXplb2YoaCkpOwogfQog CiBzdGF0aWMgdm9pZApAQCAtMjUxMyw3ICsyNDkyLDcgQEAKIAkJbGFiZWwgPSAiY2xpZW50IGZp bmlzaGVkIjsKIAllbHNlCiAJCWxhYmVsID0gInNlcnZlciBmaW5pc2hlZCI7Ci0JcF9zaGEyNTYo ZmluaXNoZWQsIFRMU0ZpbmlzaGVkTGVuLCBzZWMtPnNlYywgTWFzdGVyU2VjcmV0U2l6ZSwgKHVj aGFyKilsYWJlbCwgc3RybGVuKGxhYmVsKSwgc2VlZCwgU0hBMl8yNTZkbGVuKTsKKwl0bHMxMlBS RihmaW5pc2hlZCwgVExTRmluaXNoZWRMZW4sIHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBs YWJlbCwgc2VlZCwgU0hBMl8yNTZkbGVuKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1MjMsOCAr MjUwMiw5IEBACiAJc2VjLT5jbGllbnRWZXJzID0gY3ZlcnM7CiAJbWVtbW92ZShzZWMtPmNyYW5k b20sIGNyYW5kb20sIFJhbmRvbVNpemUpOwogCi0JcHV0MzIoc2VjLT5zcmFuZG9tLCB0aW1lKG5p bCkpOwotCWdlbnJhbmRvbShzZWMtPnNyYW5kb20rNCwgUmFuZG9tU2l6ZS00KTsKKwkvLyBwdXR0 aW5nIHRpbWUoKSdzIG91dHB1dCB0byB0aGUgZmlyc3QgNCBieXRlcyBpcyBubworCS8vIGxvbmdl ciByZWNvbW1lbmRlZCBhbmQgaXMgbm90IHVzZWZ1bAorCWdlbnJhbmRvbShzZWMtPnNyYW5kb20s IFJhbmRvbVNpemUpOwogfQogCiBzdGF0aWMgaW50CkBAIC0yNTQ5LDI3ICsyNTI5LDM2IEBACiB9 CiAKIHN0YXRpYyBCeXRlcyoKLXRsc1NlY0VDREhFczEoVGxzU2VjICpzZWMsIE5hbWVkY3VydmUg Km5jKQordGxzU2VjRUNESEVzMShUbHNTZWMgKnNlYykKIHsKIAlFQ2RvbWFpbiAqZG9tID0gJnNl Yy0+ZWMuZG9tOwogCUVDcHJpdiAqUSA9ICZzZWMtPmVjLlE7CiAJQnl0ZXMgKnBhcjsKIAlpbnQg bjsKIAotCWVjZG9taW5pdChkb20sIG5jLT5pbml0KTsKLQltZW1zZXQoUSwgMCwgc2l6ZW9mKCpR KSk7Ci0JUS0+eCA9IG1wbmV3KDApOwotCVEtPnkgPSBtcG5ldygwKTsKLQlRLT5kID0gbXBuZXco MCk7Ci0JZWNnZW4oZG9tLCBRKTsKLQluID0gMSArIDIqKChtcHNpZ25pZihkb20tPnApKzcpLzgp OwotCXBhciA9IG5ld2J5dGVzKDErMisxK24pOwotCXBhci0+ZGF0YVswXSA9IDM7Ci0JcHV0MTYo cGFyLT5kYXRhKzEsIG5jLT50bHNpZCk7Ci0JbiA9IGVjZW5jb2RlcHViKGRvbSwgUSwgcGFyLT5k YXRhKzQsIHBhci0+bGVuLTQpOwotCXBhci0+ZGF0YVszXSA9IG47Ci0JcGFyLT5sZW4gPSAxKzIr MStuOwotCisJaWYoc2VjLT5uYyA9PSBuaWwpCisJCXJldHVybiBuaWw7CisJaWYoc2VjLT5uYy0+ dGxzaWQgPT0gWDI1NTE5KXsKKwkJcGFyID0gbmV3Ynl0ZXMoMSsyKzErMzIpOworCQlwYXItPmRh dGFbMF0gPSAzOworCQlwdXQxNihwYXItPmRhdGErMSwgWDI1NTE5KTsKKwkJcGFyLT5kYXRhWzNd ID0gMzI7CisJCWN1cnZlMjU1MTlfZGhfbmV3KHNlYy0+WCwgcGFyLT5kYXRhKzQpOworCX1lbHNl eworCQllY2RvbWluaXQoZG9tLCBzZWMtPm5jLT5pbml0KTsKKwkJbWVtc2V0KFEsIDAsIHNpemVv ZigqUSkpOworCQlRLT54ID0gbXBuZXcoMCk7CisJCVEtPnkgPSBtcG5ldygwKTsKKwkJUS0+ZCA9 IG1wbmV3KDApOworCQllY2dlbihkb20sIFEpOworCQluID0gMSArIDIqKChtcHNpZ25pZihkb20t PnApKzcpLzgpOworCQlwYXIgPSBuZXdieXRlcygxKzIrMStuKTsKKwkJcGFyLT5kYXRhWzBdID0g MzsKKwkJcHV0MTYocGFyLT5kYXRhKzEsIHNlYy0+bmMtPnRsc2lkKTsKKwkJbiA9IGVjZW5jb2Rl cHViKGRvbSwgUSwgcGFyLT5kYXRhKzQsIHBhci0+bGVuLTQpOworCQlwYXItPmRhdGFbM10gPSBu OworCQlwYXItPmxlbiA9IDErMisxK247CisJfQogCXJldHVybiBwYXI7CiB9CiAKQEAgLTI1ODAs MzAgKzI1NjksNDAgQEAKIAlFQ3ByaXYgKlEgPSAmc2VjLT5lYy5ROwogCUVDcG9pbnQgSzsKIAlF Q3B1YiAqWTsKKwlCeXRlcyAqWjsKIAogCWlmKFljID09IG5pbCl7CiAJCXdlcnJzdHIoIm5vIHB1 YmxpYyBrZXkiKTsKIAkJcmV0dXJuIC0xOwogCX0KIAotCWlmKChZID0gZWNkZWNvZGVwdWIoZG9t LCBZYy0+ZGF0YSwgWWMtPmxlbikpID09IG5pbCl7Ci0JCXdlcnJzdHIoImJhZCBwdWJsaWMga2V5 Iik7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQltZW1zZXQoJkssIDAsIHNpemVvZihLKSk7Ci0JSy54 ID0gbXBuZXcoMCk7Ci0JSy55ID0gbXBuZXcoMCk7CisJaWYoc2VjLT5uYy0+dGxzaWQgPT0gWDI1 NTE5KXsKKwkJaWYoWWMtPmxlbiAhPSAzMil7CisJCQl3ZXJyc3RyKCJiYWQgcHVibGljIGtleSIp OworCQkJcmV0dXJuIC0xOworCQl9CisJCVogPSBuZXdieXRlcygzMik7CisJCWN1cnZlMjU1MTlf ZGhfZmluaXNoKHNlYy0+WCwgWWMtPmRhdGEsIFotPmRhdGEpOworCQlzZXRNYXN0ZXJTZWNyZXQo c2VjLCBaKTsKKwl9ZWxzZXsKKwkJaWYoKFkgPSBlY2RlY29kZXB1Yihkb20sIFljLT5kYXRhLCBZ Yy0+bGVuKSkgPT0gbmlsKXsKKwkJCXdlcnJzdHIoImJhZCBwdWJsaWMga2V5Iik7CisJCQlyZXR1 cm4gLTE7CisJCX0KIAotCWVjbXVsKGRvbSwgWSwgUS0+ZCwgJkspOworCQltZW1zZXQoJkssIDAs IHNpemVvZihLKSk7CisJCUsueCA9IG1wbmV3KDApOworCQlLLnkgPSBtcG5ldygwKTsKIAotCXNl dE1hc3RlclNlY3JldChzZWMsIG1wdG9ieXRlcyhLLngsIChtcHNpZ25pZihkb20tPnApKzcpLzgp KTsKKwkJZWNtdWwoZG9tLCBZLCBRLT5kLCAmSyk7CiAKLQltcGZyZWUoSy54KTsKLQltcGZyZWUo Sy55KTsKKwkJc2V0TWFzdGVyU2VjcmV0KHNlYywgbXB0b2J5dGVzKEsueCwgKG1wc2lnbmlmKGRv bS0+cCkrNykvOCkpOwogCi0JZWNwdWJmcmVlKFkpOworCQltcGZyZWUoSy54KTsKKwkJbXBmcmVl KEsueSk7CiAKKwkJZWNwdWJmcmVlKFkpOworCX0KIAlyZXR1cm4gMDsKIH0KIApAQCAtMjYxMiw4 ICsyNjExLDggQEAKIHsKIAltZW1zZXQoc2VjLCAwLCBzaXplb2YoKnNlYykpOwogCXNlYy0+Y2xp ZW50VmVycyA9IGN2ZXJzOwotCXB1dDMyKHNlYy0+Y3JhbmRvbSwgdGltZShuaWwpKTsKLQlnZW5y YW5kb20oc2VjLT5jcmFuZG9tKzQsIFJhbmRvbVNpemUtNCk7CisJLy8gc2VlIHRoZSBjb21tZW50 IG9uIHRsc1NlY0luaXRzCisJZ2VucmFuZG9tKHNlYy0+Y3JhbmRvbSwgUmFuZG9tU2l6ZSk7CiB9 CiAKIHN0YXRpYyBCeXRlcyoKQEAgLTI2NzEsMTMgKzI2NzAsMTUgQEAKIHN0YXRpYyBpbnQKIHNl dFNlY3JldHMoVGxzQ29ubmVjdGlvbiAqYywgaW50IGlzY2xpZW50KQogewotCXVjaGFyIGtkW01h eEtleURhdGFdOworCXVjaGFyIGtkW01heEtleURhdGFdLCBzZWVkWzIqUmFuZG9tU2l6ZV07CiAJ Y2hhciAqc2VjcmV0czsKIAlpbnQgcnY7CiAKIAlhc3NlcnQoYy0+bnNlY3JldCA8PSBzaXplb2Yo a2QpKTsKIAlzZWNyZXRzID0gZW1hbGxvYygyKmMtPm5zZWNyZXQpOwogCisJbWVtbW92ZShzZWVk LCBjLT5zZWMtPnNyYW5kb20sIFJhbmRvbVNpemUpOworCW1lbW1vdmUoc2VlZCtSYW5kb21TaXpl LCBjLT5zZWMtPmNyYW5kb20sIFJhbmRvbVNpemUpOwogCS8qCiAJICogZ2VuZXJhdGUgc2VjcmV0 IGtleXMgZnJvbSB0aGUgbWFzdGVyIHNlY3JldC4KIAkgKgpAQCAtMjY4Niw3ICsyNjg3LDcgQEAK IAkgKiBidXQgaXQncyBhbGwgZ2VuZXJhdGVkIHVzaW5nIHRoZSBzYW1lIGZ1bmN0aW9uLgogCSAq LwogCSgqYy0+c2VjLT5wcmYpKGtkLCBjLT5uc2VjcmV0LCBjLT5zZWMtPnNlYywgTWFzdGVyU2Vj cmV0U2l6ZSwgImtleSBleHBhbnNpb24iLAotCQkJYy0+c2VjLT5zcmFuZG9tLCBSYW5kb21TaXpl LCBjLT5zZWMtPmNyYW5kb20sIFJhbmRvbVNpemUpOworCQkJc2VlZCwgc2l6ZW9mKHNlZWQpKTsK IAogCWVuYzY0KHNlY3JldHMsIDIqYy0+bnNlY3JldCwga2QsIGMtPm5zZWNyZXQpOwogCW1lbXNl dChrZCwgMCwgYy0+bnNlY3JldCk7CkBAIC0yNzA1LDYgKzI3MDYsOCBAQAogc3RhdGljIHZvaWQK IHNldE1hc3RlclNlY3JldChUbHNTZWMgKnNlYywgQnl0ZXMgKnBtKQogeworCXVjaGFyIHNlZWRb MipSYW5kb21TaXplXTsKKwogCWlmKHNlYy0+cHNrbGVuID4gMCl7CiAJCUJ5dGVzICpvcG0gPSBw bTsKIAkJdWNoYXIgKnA7CkBAIC0yNzIxLDggKzI3MjQsMTAgQEAKIAkJZnJlZWJ5dGVzKG9wbSk7 CiAJfQogCisJbWVtbW92ZShzZWVkLCBzZWMtPmNyYW5kb20sIFJhbmRvbVNpemUpOworCW1lbW1v dmUoc2VlZCtSYW5kb21TaXplLCBzZWMtPnNyYW5kb20sIFJhbmRvbVNpemUpOwogCSgqc2VjLT5w cmYpKHNlYy0+c2VjLCBNYXN0ZXJTZWNyZXRTaXplLCBwbS0+ZGF0YSwgcG0tPmxlbiwgIm1hc3Rl ciBzZWNyZXQiLAotCQkJc2VjLT5jcmFuZG9tLCBSYW5kb21TaXplLCBzZWMtPnNyYW5kb20sIFJh bmRvbVNpemUpOworCQkJc2VlZCwgc2l6ZW9mKHNlZWQpKTsKIAogCW1lbXNldChwbS0+ZGF0YSwg MCwgcG0tPmxlbik7CQogCWZyZWVieXRlcyhwbSk7Cg== --000000000000c840d405c47ed9b1--