Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vqpbT-001O2E-3C for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Feb 2026 09:36:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vqpbS-00DMKe-2N for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Feb 2026 09:36:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vqpbS-00DMKW-0f for pgsql-hackers@lists.postgresql.org; Fri, 13 Feb 2026 09:36:47 +0000 Received: from smtp.outgoing.loopia.se ([93.188.3.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vqpbQ-00000000SzT-2mpY for pgsql-hackers@lists.postgresql.org; Fri, 13 Feb 2026 09:36:46 +0000 Received: from s807.loopia.se (localhost [127.0.0.1]) by s807.loopia.se (Postfix) with ESMTP id 4337C52F5AE for ; Fri, 13 Feb 2026 10:36:43 +0100 (CET) Received: from s979.loopia.se (unknown [172.22.191.5]) by s807.loopia.se (Postfix) with ESMTP id 24A2052E97D; Fri, 13 Feb 2026 10:36:43 +0100 (CET) Received: from s474.loopia.se (unknown [172.22.191.5]) by s979.loopia.se (Postfix) with ESMTP id 2198F10BC4EC; Fri, 13 Feb 2026 10:36:43 +0100 (CET) X-Virus-Scanned: amavisd-new at amavis.loopia.se X-Spam-Flag: NO X-Spam-Score: -1.2 X-Spam-Level: X-Spam-Status: No, score=-1.2 tagged_above=-999 required=6.2 tests=[ALL_TRUSTED=-1, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1] autolearn=disabled Authentication-Results: s474.loopia.se (amavisd-new); dkim=pass (2048-bit key) header.d=proxel.se Received: from s899.loopia.se ([172.22.191.5]) by s474.loopia.se (s474.loopia.se [172.22.190.14]) (amavisd-new, port 10024) with UTF8LMTP id pvyWQxUO9yIQ; Fri, 13 Feb 2026 10:36:42 +0100 (CET) X-Loopia-Auth: user X-Loopia-User: andreas@proxel.se X-Loopia-Originating-IP: 147.28.75.140 Received: from [192.168.0.121] (customer-147-28-75-140.stosn.net [147.28.75.140]) (Authenticated sender: andreas@proxel.se) by s899.loopia.se (Postfix) with ESMTPSA id 0DADD2C8BA8D; Fri, 13 Feb 2026 10:36:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proxel.se; s=loopiadkim1707418970; t=1770975402; bh=zNc6FNZGnBBDyucGp0X4RDxFSKm38tvB9r9brbRK1WI=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=HpdpCbVLpx2u3cv6JycpRf40si/5SJ8WRdgbB/tU+2kSsNQ+jzLX0B+KRM2w68Ml7 VaEiTwGMZcBL19WvdjLqgy+atvZaspbrVHq4Fs6lnDhWDhx9sWQtsnQx6TniKZTufA LayLVhavpgzjbJLUplVzatugSYmbOaNlF02AxxSc0tjD/u8dCgc0xAseo6hYqv+eCu IEknYl76+6LY4E+cQ5XBB6szw3F6Eep6lVzS7U0Z/hR/uLbWeRD8qk2+hTzfTOdFTu xJUGNmb0+IY61DIH49iGU+b/ZtxkVNSGVM7X4QnNRLwiDOhHYmSeW2Qa+Lf807OaFA 02Op04LPv8gWQ== Content-Type: multipart/mixed; boundary="------------aAV0gy13fUuqjF4z0lHqDt0C" Message-ID: <1b901fbf-655d-434c-aff4-ee06313d31cd@proxel.se> Date: Fri, 13 Feb 2026 10:36:41 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Our ABI diff infrastructure ignores enum SysCacheIdentifier To: Michael Paquier Cc: Tom Lane , pgsql-hackers@lists.postgresql.org References: <289125.1770913057@sss.pgh.pa.us> <4653b0bf-5642-44f1-b059-7cc1db861da7@proxel.se> From: Andreas Karlsson Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------aAV0gy13fUuqjF4z0lHqDt0C Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2/13/26 9:24 AM, Michael Paquier wrote: > I was expecting something a bit more complicated. Nice at quick > glance, Andreas. It is a bit more code churn if I also include inval.c, but I still do not think it would be too bad. Andreas --------------aAV0gy13fUuqjF4z0lHqDt0C Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Use-SysCacheIdentifier-enum-instead-of-int.patch" Content-Disposition: attachment; filename="v2-0001-Use-SysCacheIdentifier-enum-instead-of-int.patch" Content-Transfer-Encoding: base64 RnJvbSBmODA3ODNjMDI4YWUzZTRkMWM4YTcyNDA5ZTkzYjdlM2MzZmE2NTQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIEthcmxzc29uIDxhbmRyZWFzQHByb3hl bC5zZT4KRGF0ZTogRnJpLCAxMyBGZWIgMjAyNiAwNjo0MTowOSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjJdIFVzZSBTeXNDYWNoZUlkZW50aWZpZXIgZW51bSBpbnN0ZWFkIG9mIGludAoK VGhpcyBtYWtlcyB0aGUgQUJJIGNoZWNrZXIgaGFwcHkgcGx1cyBtYWtlcyB0aGUgaXRuZW50 IG9mIHRoZSBjb2RlIGNsZWFyZXIuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVj dGlvbi5jICAgICAgICAgICB8ICA0ICstLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBh YmxlLmMgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5j ICAgICAgICAgICAgICAgIHwgMTAgKysrLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVu ZGVuY3kuYyAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvZ2VuYmtp LnBsICAgICAgICAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMgICAgICAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0 YWRkcmVzcy5jICAgICAgICAgfCAxMiArKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv YWx0ZXIuYyAgICAgICAgICAgICAgICB8ICA4ICsrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9leHRlbnNpb24uYyAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9wcmVkdGVzdC5jICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfb3Blci5jICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8ICA4ICsrLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvYWNsLmMgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgIHwgIDQgKy0tCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9hdHRvcHRjYWNoZS5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2V2dGNhY2hlLmMgICAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2ludmFsLmMgICAgICAgICAgICAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jICAgICAgICAgfCAgOCArKy0tLQogc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvc3BjY2FjaGUuYyAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC91dGlscy9j YWNoZS9zeXNjYWNoZS5jICAgICAgICAgIHwgMzQgKysrKysrKysrKy0tLS0tLS0tLS0tCiBz cmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgfCAxMiArKysrLS0t LQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9zdXBlcnVzZXIuYyAgICAgICAgICB8ICA0ICst LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmggICAgICAgICB8ICA1ICst LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICB8ICAyICst CiBzcmMvaW5jbHVkZS91dGlscy9pbnZhbC5oICAgICAgICAgICAgICAgICAgIHwgIDcgKysr LS0KIHNyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmggICAgICAgICAgICAgICAgfCAzMCAr KysrKysrKystLS0tLS0tLS0KIDI5IGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyks IDk2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nv bm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYwppbmRleCA0 ODdhMWEyMzE3MC4uMTZlNDQwNzE1NzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9u LmMKQEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCBwZ2Zkd19zdWJ4YWN0X2NhbGxi YWNrKFN1YlhhY3RFdmVudCBldmVudCwKIAkJCQkJCQkJICAgU3ViVHJhbnNhY3Rpb25JZCBt eVN1YmlkLAogCQkJCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkLAogCQkJ CQkJCQkgICB2b2lkICphcmcpOwotc3RhdGljIHZvaWQgcGdmZHdfaW52YWxfY2FsbGJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CitzdGF0aWMgdm9p ZCBwZ2Zkd19pbnZhbF9jYWxsYmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBj YWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKIHN0YXRpYyB2b2lkIHBnZmR3X3JlamVjdF9p bmNvbXBsZXRlX3hhY3Rfc3RhdGVfY2hhbmdlKENvbm5DYWNoZUVudHJ5ICplbnRyeSk7CiBz dGF0aWMgdm9pZCBwZ2Zkd19yZXNldF94YWN0X3N0YXRlKENvbm5DYWNoZUVudHJ5ICplbnRy eSwgYm9vbCB0b3BsZXZlbCk7CiBzdGF0aWMgYm9vbCBwZ2Zkd19jYW5jZWxfcXVlcnkoUEdj b25uICpjb25uKTsKQEAgLTEzMDksNyArMTMwOSw3IEBAIHBnZmR3X3N1YnhhY3RfY2FsbGJh Y2soU3ViWGFjdEV2ZW50IGV2ZW50LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAgKiBp bmRpdmlkdWFsIG9wdGlvbiB2YWx1ZXMsIGJ1dCBpdCBzZWVtcyB0b28gbXVjaCBlZmZvcnQg Zm9yIHRoZSBnYWluLgogICovCiBzdGF0aWMgdm9pZAotcGdmZHdfaW52YWxfY2FsbGJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3BnZmR3X2ludmFs X2NhbGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQz MiBoYXNodmFsdWUpCiB7CiAJSEFTSF9TRVFfU1RBVFVTIHNjYW47CiAJQ29ubkNhY2hlRW50 cnkgKmVudHJ5OwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc2hpcHBhYmxl LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zaGlwcGFibGUuYwppbmRleCBkMzJkM2QwZTQ2 MS4uZTA3ZWFkZDM2MzAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBw YWJsZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3NoaXBwYWJsZS5jCkBAIC02Miw3 ICs2Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAgKiBtYWRlIGZvciB0aGVtLCBob3dldmVyLgog ICovCiBzdGF0aWMgdm9pZAotSW52YWxpZGF0ZVNoaXBwYWJsZUNhY2hlQ2FsbGJhY2soRGF0 dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK0ludmFsaWRhdGVTaGlw cGFibGVDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hl aWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlT aGlwcGFibGVDYWNoZUVudHJ5ICplbnRyeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCmluZGV4IGE0 MzFmYzA5MjZmLi4xZGQ2ZGY3MWQxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNoay5jCkBAIC0yMTE1 LDcgKzIxMTUsNyBAQCBzdGF0aWMgdm9pZAogRXhlY0dyYW50X2NvbW1vbihJbnRlcm5hbEdy YW50ICppc3RtdCwgT2lkIGNsYXNzaWQsIEFjbE1vZGUgZGVmYXVsdF9wcml2cywKIAkJCQkg dm9pZCAoKm9iamVjdF9jaGVjaykgKEludGVybmFsR3JhbnQgKmlzdG10LCBIZWFwVHVwbGUg dHVwbGUpKQogewotCWludAkJCWNhY2hlaWQ7CisJU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hl aWQ7CiAJUmVsYXRpb24JcmVsYXRpb247CiAJTGlzdENlbGwgICAqY2VsbDsKIApAQCAtMzA1 OCw3ICszMDU4LDcgQEAgb2JqZWN0X2FjbG1hc2tfZXh0KE9pZCBjbGFzc2lkLCBPaWQgb2Jq ZWN0aWQsIE9pZCByb2xlaWQsCiAJCQkJICAgQWNsTW9kZSBtYXNrLCBBY2xNYXNrSG93IGhv dywKIAkJCQkgICBib29sICppc19taXNzaW5nKQogewotCWludAkJCWNhY2hlaWQ7CisJU3lz Q2FjaGVJZGVudGlmaWVyIGNhY2hlaWQ7CiAJQWNsTW9kZQkJcmVzdWx0OwogCUhlYXBUdXBs ZQl0dXBsZTsKIAlEYXR1bQkJYWNsRGF0dW07CkBAIC00MDg5LDcgKzQwODksNyBAQCBwZ19s YXJnZW9iamVjdF9hY2xjaGVja19zbmFwc2hvdChPaWQgbG9ial9vaWQsIE9pZCByb2xlaWQs IEFjbE1vZGUgbW9kZSwKIGJvb2wKIG9iamVjdF9vd25lcmNoZWNrKE9pZCBjbGFzc2lkLCBP aWQgb2JqZWN0aWQsIE9pZCByb2xlaWQpCiB7Ci0JaW50CQkJY2FjaGVpZDsKKwlTeXNDYWNo ZUlkZW50aWZpZXIgY2FjaGVpZDsKIAlPaWQJCQlvd25lcklkOwogCiAJLyogU3VwZXJ1c2Vy cyBieXBhc3MgYWxsIHBlcm1pc3Npb24gY2hlY2tpbmcuICovCkBAIC00NDg2LDcgKzQ0ODYs NyBAQCByZWNvcmRFeHRPYmpJbml0UHJpdihPaWQgb2Jqb2lkLCBPaWQgY2xhc3NvaWQpCiAJ LyogVGhpcyB3aWxsIGVycm9yIG9uIHVuc3VwcG9ydGVkIGNsYXNzb2lkLiAqLwogCWVsc2Ug aWYgKGdldF9vYmplY3RfYXR0bnVtX2FjbChjbGFzc29pZCkgIT0gSW52YWxpZEF0dHJOdW1i ZXIpCiAJewotCQlpbnQJCQljYWNoZWlkOworCQlTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVp ZDsKIAkJRGF0dW0JCWFjbERhdHVtOwogCQlib29sCQlpc051bGw7CiAJCUhlYXBUdXBsZQl0 dXBsZTsKQEAgLTQ4NzAsNyArNDg3MCw3IEBAIFJlbW92ZVJvbGVGcm9tSW5pdFByaXYoT2lk IHJvbGVpZCwgT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgaW50MzIgb2Jqc3ViaWQpCiAJU2Nh bktleURhdGEga2V5WzNdOwogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCW9sZHR1 cGxlOwotCWludAkJCWNhY2hlaWQ7CisJU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQ7CiAJ SGVhcFR1cGxlCW9ianR1cGxlOwogCU9pZAkJCW93bmVySWQ7CiAJRGF0dW0JCW9sZEFjbERh dHVtOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwppbmRleCBmODkyNjdmMDM0Mi4uNzU2 NDk2NWZhMTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jCkBAIC0xMjM4LDcgKzEy MzgsNyBAQCByZXBvcnREZXBlbmRlbnRPYmplY3RzKGNvbnN0IE9iamVjdEFkZHJlc3NlcyAq dGFyZ2V0T2JqZWN0cywKIHN0YXRpYyB2b2lkCiBEcm9wT2JqZWN0QnlJZChjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QpCiB7Ci0JaW50CQkJY2FjaGVJZDsKKwlTeXNDYWNoZUlkZW50 aWZpZXIgY2FjaGVJZDsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9nZW5ia2kucGwgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2dlbmJraS5wbAppbmRleCBiMmMxYjFjNTczMy4uMGRkZGVkNzgzYjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2VuYmtpLnBsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvZ2VuYmtpLnBsCkBAIC03OTUsNyArNzk1LDcgQEAgcHJpbnQgJGZrX2luZm8g In07XG5cbiNlbmRpZlx0XHRcdFx0XHRcdFx0LyogU1lTVEVNX0ZLX0lORk9fSCAqL1xuIjsK ICMgTm93IGdlbmVyYXRlIHN5c2NhY2hlIGluZm8KIAogcHJpbnRfYm9pbGVycGxhdGUoJHN5 c2NhY2hlX2lkc19maCwgInN5c2NhY2hlX2lkcy5oIiwgIlN5c0NhY2hlIGlkZW50aWZpZXJz Iik7Ci1wcmludCAkc3lzY2FjaGVfaWRzX2ZoICJlbnVtIFN5c0NhY2hlSWRlbnRpZmllcgor cHJpbnQgJHN5c2NhY2hlX2lkc19maCAidHlwZWRlZiBlbnVtIFN5c0NhY2hlSWRlbnRpZmll cgogewogIjsKIApAQCAtODI1LDcgKzgyNSw3IEBAIGZvcmVhY2ggbXkgJHN5c2NhY2hlIChz b3J0IGtleXMgJXN5c2NhY2hlcykKIAlwcmludCAkc3lzY2FjaGVfaW5mb19maCAiXHR9LFxu IjsKIH0KIAotcHJpbnQgJHN5c2NhY2hlX2lkc19maCAifTtcbiI7CitwcmludCAkc3lzY2Fj aGVfaWRzX2ZoICJ9IFN5c0NhY2hlSWRlbnRpZmllcjtcbiI7CiBwcmludCAkc3lzY2FjaGVf aWRzX2ZoICIjZGVmaW5lIFN5c0NhY2hlU2l6ZSAoJGxhc3Rfc3lzY2FjaGUgKyAxKVxuIjsK IAogcHJpbnQgJHN5c2NhY2hlX2luZm9fZmggIn07XG4iOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9uYW1lc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNw YWNlLmMKaW5kZXggYzNiNzlhMmJhNDguLmNiMzM1YWZkZjg5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv bmFtZXNwYWNlLmMKQEAgLTIyOSw3ICsyMjksNyBAQCBzdGF0aWMgdm9pZCBBY2Nlc3NUZW1w VGFibGVOYW1lc3BhY2UoYm9vbCBmb3JjZSk7CiBzdGF0aWMgdm9pZCBJbml0VGVtcFRhYmxl TmFtZXNwYWNlKHZvaWQpOwogc3RhdGljIHZvaWQgUmVtb3ZlVGVtcFJlbGF0aW9ucyhPaWQg dGVtcE5hbWVzcGFjZUlkKTsKIHN0YXRpYyB2b2lkIFJlbW92ZVRlbXBSZWxhdGlvbnNDYWxs YmFjayhpbnQgY29kZSwgRGF0dW0gYXJnKTsKLXN0YXRpYyB2b2lkIEludmFsaWRhdGlvbkNh bGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworc3Rh dGljIHZvaWQgSW52YWxpZGF0aW9uQ2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50 aWZpZXIgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiBzdGF0aWMgYm9vbCBNYXRjaE5h bWVkQ2FsbChIZWFwVHVwbGUgcHJvY3R1cCwgaW50IG5hcmdzLCBMaXN0ICphcmduYW1lcywK IAkJCQkJCSAgIGJvb2wgaW5jbHVkZV9vdXRfYXJndW1lbnRzLCBpbnQgcHJvbmFyZ3MsCiAJ CQkJCQkgICBpbnQgKiphcmdudW1iZXJzLCBpbnQgKmZnY19mbGFncyk7CkBAIC00ODYzLDcg KzQ4NjMsNyBAQCBJbml0aWFsaXplU2VhcmNoUGF0aCh2b2lkKQogICoJCVN5c2NhY2hlIGlu dmFsIGNhbGxiYWNrIGZ1bmN0aW9uCiAgKi8KIHN0YXRpYyB2b2lkCi1JbnZhbGlkYXRpb25D YWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorSW52 YWxpZGF0aW9uQ2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAkvKgogCSAqIEZvcmNlIHNlYXJjaCBwYXRoIHRv IGJlIHJlY29tcHV0ZWQgb24gbmV4dCB1c2UsIGFsc28gaW52YWxpZGF0aW5nIHRoZQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwppbmRleCAwMmFmNjRiODJjNi4uMGFmMzkw ZDk4MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCkBAIC05OSw4ICs5 OSw4IEBAIHR5cGVkZWYgc3RydWN0CiAJCQkJCQkJCSAqIGVycm9yIG1lc3NhZ2VzICovCiAJ T2lkCQkJY2xhc3Nfb2lkOwkJLyogb2lkIG9mIGNhdGFsb2cgKi8KIAlPaWQJCQlvaWRfaW5k ZXhfb2lkOwkvKiBvaWQgb2YgaW5kZXggb24gc3lzdGVtIG9pZCBjb2x1bW4gKi8KLQlpbnQJ CQlvaWRfY2F0Y2FjaGVfaWQ7CS8qIGlkIG9mIGNhdGNhY2hlIG9uIHN5c3RlbSBvaWQgY29s dW1uCSovCi0JaW50CQkJbmFtZV9jYXRjYWNoZV9pZDsJLyogaWQgb2YgY2F0Y2FjaGUgb24g KG5hbWUsbmFtZXNwYWNlKSwgb3IKKwlTeXNDYWNoZUlkZW50aWZpZXIgb2lkX2NhdGNhY2hl X2lkOwkvKiBpZCBvZiBjYXRjYWNoZSBvbiBzeXN0ZW0gb2lkIGNvbHVtbgkqLworCVN5c0Nh Y2hlSWRlbnRpZmllciBuYW1lX2NhdGNhY2hlX2lkOwkvKiBpZCBvZiBjYXRjYWNoZSBvbiAo bmFtZSxuYW1lc3BhY2UpLCBvcgogCQkJCQkJCQkJICogKG5hbWUpIGlmIHRoZSBvYmplY3Qg ZG9lcyBub3QgbGl2ZSBpbiBhCiAJCQkJCQkJCQkgKiBuYW1lc3BhY2UgKi8KIAlBdHRyTnVt YmVyCWF0dG51bV9vaWQ7CQkvKiBhdHRyaWJ1dGUgbnVtYmVyIG9mIG9pZCBjb2x1bW4gKi8K QEAgLTI1NzEsNyArMjU3MSw3IEBAIGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVp ZCwgT2JqZWN0VHlwZSBvYmp0eXBlLCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiBPaWQKIGdl dF9vYmplY3RfbmFtZXNwYWNlKGNvbnN0IE9iamVjdEFkZHJlc3MgKmFkZHJlc3MpCiB7Ci0J aW50CQkJY2FjaGU7CisJU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlOwogCUhlYXBUdXBsZQl0 dXBsZTsKIAlPaWQJCQlvaWQ7CiAJY29uc3QgT2JqZWN0UHJvcGVydHlUeXBlICpwcm9wZXJ0 eTsKQEAgLTI2NDAsNyArMjY0MCw3IEBAIGdldF9vYmplY3Rfb2lkX2luZGV4KE9pZCBjbGFz c19pZCkKIAlyZXR1cm4gcHJvcC0+b2lkX2luZGV4X29pZDsKIH0KIAotaW50CitTeXNDYWNo ZUlkZW50aWZpZXIKIGdldF9vYmplY3RfY2F0Y2FjaGVfb2lkKE9pZCBjbGFzc19pZCkKIHsK IAljb25zdCBPYmplY3RQcm9wZXJ0eVR5cGUgKnByb3AgPSBnZXRfb2JqZWN0X3Byb3BlcnR5 X2RhdGEoY2xhc3NfaWQpOwpAQCAtMjY0OCw3ICsyNjQ4LDcgQEAgZ2V0X29iamVjdF9jYXRj YWNoZV9vaWQoT2lkIGNsYXNzX2lkKQogCXJldHVybiBwcm9wLT5vaWRfY2F0Y2FjaGVfaWQ7 CiB9CiAKLWludAorU3lzQ2FjaGVJZGVudGlmaWVyCiBnZXRfb2JqZWN0X2NhdGNhY2hlX25h bWUoT2lkIGNsYXNzX2lkKQogewogCWNvbnN0IE9iamVjdFByb3BlcnR5VHlwZSAqcHJvcCA9 IGdldF9vYmplY3RfcHJvcGVydHlfZGF0YShjbGFzc19pZCk7CkBAIC0yODA2LDcgKzI4MDYs NyBAQCBnZXRfY2F0YWxvZ19vYmplY3RfYnlfb2lkX2V4dGVuZGVkKFJlbGF0aW9uIGNhdGFs b2csCiB7CiAJSGVhcFR1cGxlCXR1cGxlOwogCU9pZAkJCWNsYXNzSWQgPSBSZWxhdGlvbkdl dFJlbGlkKGNhdGFsb2cpOwotCWludAkJCW9pZENhY2hlSWQgPSBnZXRfb2JqZWN0X2NhdGNh Y2hlX29pZChjbGFzc0lkKTsKKwlTeXNDYWNoZUlkZW50aWZpZXIgb2lkQ2FjaGVJZCA9IGdl dF9vYmplY3RfY2F0Y2FjaGVfb2lkKGNsYXNzSWQpOwogCiAJaWYgKG9pZENhY2hlSWQgPiAw KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9hbHRlci5jCmluZGV4IDA4OTU3MTA0YzcwLi5jNmY1OGQ0N2Jl NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC0xNTksOCArMTU5LDggQEAgc3RhdGljIHZv aWQKIEFsdGVyT2JqZWN0UmVuYW1lX2ludGVybmFsKFJlbGF0aW9uIHJlbCwgT2lkIG9iamVj dElkLCBjb25zdCBjaGFyICpuZXdfbmFtZSkKIHsKIAlPaWQJCQljbGFzc0lkID0gUmVsYXRp b25HZXRSZWxpZChyZWwpOwotCWludAkJCW9pZENhY2hlSWQgPSBnZXRfb2JqZWN0X2NhdGNh Y2hlX29pZChjbGFzc0lkKTsKLQlpbnQJCQluYW1lQ2FjaGVJZCA9IGdldF9vYmplY3RfY2F0 Y2FjaGVfbmFtZShjbGFzc0lkKTsKKwlTeXNDYWNoZUlkZW50aWZpZXIgb2lkQ2FjaGVJZCA9 IGdldF9vYmplY3RfY2F0Y2FjaGVfb2lkKGNsYXNzSWQpOworCVN5c0NhY2hlSWRlbnRpZmll ciBuYW1lQ2FjaGVJZCA9IGdldF9vYmplY3RfY2F0Y2FjaGVfbmFtZShjbGFzc0lkKTsKIAlB dHRyTnVtYmVyCUFudW1fbmFtZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWUoY2xhc3NJZCk7 CiAJQXR0ck51bWJlcglBbnVtX25hbWVzcGFjZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWVz cGFjZShjbGFzc0lkKTsKIAlBdHRyTnVtYmVyCUFudW1fb3duZXIgPSBnZXRfb2JqZWN0X2F0 dG51bV9vd25lcihjbGFzc0lkKTsKQEAgLTY4Niw4ICs2ODYsOCBAQCBzdGF0aWMgT2lkCiBB bHRlck9iamVjdE5hbWVzcGFjZV9pbnRlcm5hbChSZWxhdGlvbiByZWwsIE9pZCBvYmppZCwg T2lkIG5zcE9pZCkKIHsKIAlPaWQJCQljbGFzc0lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwp OwotCWludAkJCW9pZENhY2hlSWQgPSBnZXRfb2JqZWN0X2NhdGNhY2hlX29pZChjbGFzc0lk KTsKLQlpbnQJCQluYW1lQ2FjaGVJZCA9IGdldF9vYmplY3RfY2F0Y2FjaGVfbmFtZShjbGFz c0lkKTsKKwlTeXNDYWNoZUlkZW50aWZpZXIgb2lkQ2FjaGVJZCA9IGdldF9vYmplY3RfY2F0 Y2FjaGVfb2lkKGNsYXNzSWQpOworCVN5c0NhY2hlSWRlbnRpZmllciBuYW1lQ2FjaGVJZCA9 IGdldF9vYmplY3RfY2F0Y2FjaGVfbmFtZShjbGFzc0lkKTsKIAlBdHRyTnVtYmVyCUFudW1f bmFtZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWUoY2xhc3NJZCk7CiAJQXR0ck51bWJlcglB bnVtX25hbWVzcGFjZSA9IGdldF9vYmplY3RfYXR0bnVtX25hbWVzcGFjZShjbGFzc0lkKTsK IAlBdHRyTnVtYmVyCUFudW1fb3duZXIgPSBnZXRfb2JqZWN0X2F0dG51bV9vd25lcihjbGFz c0lkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggODFmMjQ2MTVkNTEuLjkz Y2UzZWJhYmY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtMTYyLDcgKzE2 Miw3IEBAIHR5cGVkZWYgc3RydWN0IEV4dGVuc2lvblNpYmxpbmdDYWNoZQogc3RhdGljIEV4 dGVuc2lvblNpYmxpbmdDYWNoZSAqZXh0X3NpYmxpbmdfbGlzdCA9IE5VTEw7CiAKIC8qIExv Y2FsIGZ1bmN0aW9ucyAqLwotc3RhdGljIHZvaWQgZXh0X3NpYmxpbmdfY2FsbGJhY2soRGF0 dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CitzdGF0aWMgdm9pZCBl eHRfc2libGluZ19jYWxsYmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNo ZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKIHN0YXRpYyBMaXN0ICpmaW5kX3VwZGF0ZV9wYXRo KExpc3QgKmV2aV9saXN0LAogCQkJCQkJCSAgRXh0ZW5zaW9uVmVyc2lvbkluZm8gKmV2aV9z dGFydCwKIAkJCQkJCQkgIEV4dGVuc2lvblZlcnNpb25JbmZvICpldmlfdGFyZ2V0LApAQCAt Mzc5LDcgKzM3OSw3IEBAIGdldF9mdW5jdGlvbl9zaWJsaW5nX3R5cGUoT2lkIGZ1bmNvaWQs IGNvbnN0IGNoYXIgKnR5cG5hbWUpCiAgKiBsb29raW5nIGZvciwgY291bGQgY2hhbmdlIHdp dGhvdXQgYW4gZXh0ZW5zaW9uIHVwZGF0ZSBvciBkcm9wL3JlY3JlYXRlLgogICovCiBzdGF0 aWMgdm9pZAotZXh0X3NpYmxpbmdfY2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSkKK2V4dF9zaWJsaW5nX2NhbGxiYWNrKERhdHVtIGFyZywgU3lz Q2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJRXh0ZW5z aW9uU2libGluZ0NhY2hlICpjYWNoZV9lbnRyeTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcHJlZHRlc3QuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3ByZWR0ZXN0LmMKaW5kZXggMjY4NThkMWQyYjAuLjYxYTBlZDE5NWFhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wcmVkdGVzdC5jCisrKyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3ByZWR0ZXN0LmMKQEAgLTEwOSw3ICsxMDksNyBAQCBz dGF0aWMgYm9vbCBvcGVyYXRvcl9zYW1lX3N1YmV4cHJzX3Byb29mKE9pZCBwcmVkX29wLCBP aWQgY2xhdXNlX29wLAogc3RhdGljIGJvb2wgb3BlcmF0b3Jfc2FtZV9zdWJleHByc19sb29r dXAoT2lkIHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsCiAJCQkJCQkJCQkJICBib29sIHJlZnV0 ZV9pdCk7CiBzdGF0aWMgT2lkCWdldF9idHJlZV90ZXN0X29wKE9pZCBwcmVkX29wLCBPaWQg Y2xhdXNlX29wLCBib29sIHJlZnV0ZV9pdCk7Ci1zdGF0aWMgdm9pZCBJbnZhbGlkYXRlT3By UHJvb2ZDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNo dmFsdWUpOworc3RhdGljIHZvaWQgSW52YWxpZGF0ZU9wclByb29mQ2FjaGVDYWxsQmFjayhE YXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVl KTsKIAogCiAvKgpAQCAtMjM0Myw3ICsyMzQzLDcgQEAgZ2V0X2J0cmVlX3Rlc3Rfb3AoT2lk IHByZWRfb3AsIE9pZCBjbGF1c2Vfb3AsIGJvb2wgcmVmdXRlX2l0KQogICogQ2FsbGJhY2sg Zm9yIHBnX2Ftb3AgaW52YWwgZXZlbnRzCiAgKi8KIHN0YXRpYyB2b2lkCi1JbnZhbGlkYXRl T3ByUHJvb2ZDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBo YXNodmFsdWUpCitJbnZhbGlkYXRlT3ByUHJvb2ZDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywg U3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJSEFT SF9TRVFfU1RBVFVTIHN0YXR1czsKIAlPcHJQcm9vZkNhY2hlRW50cnkgKmhlbnRyeTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2Vfb3Blci5jCmluZGV4IDc2OGU0Y2ZmOWM1Li43NmNiZGFjZjkzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBi b29sIG1ha2Vfb3Blcl9jYWNoZV9rZXkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBPcHJDYWNoZUtl eSAqa2V5LAogCQkJCQkJCQlpbnQgbG9jYXRpb24pOwogc3RhdGljIE9pZAlmaW5kX29wZXJf Y2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkgKmtleSk7CiBzdGF0aWMgdm9pZCBtYWtlX29wZXJf Y2FjaGVfZW50cnkoT3ByQ2FjaGVLZXkgKmtleSwgT2lkIG9wcl9vaWQpOwotc3RhdGljIHZv aWQgSW52YWxpZGF0ZU9wckNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSk7CitzdGF0aWMgdm9pZCBJbnZhbGlkYXRlT3ByQ2FjaGVDYWxs QmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZWlkLCB1aW50MzIgaGFz aHZhbHVlKTsKIAogCiAvKgpAQCAtMTA3Niw3ICsxMDc2LDcgQEAgbWFrZV9vcGVyX2NhY2hl X2VudHJ5KE9wckNhY2hlS2V5ICprZXksIE9pZCBvcHJfb2lkKQogICogQ2FsbGJhY2sgZm9y IHBnX29wZXJhdG9yIGFuZCBwZ19jYXN0IGludmFsIGV2ZW50cwogICovCiBzdGF0aWMgdm9p ZAotSW52YWxpZGF0ZU9wckNhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSkKK0ludmFsaWRhdGVPcHJDYWNoZUNhbGxCYWNrKERhdHVtIGFy ZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJ SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlPcHJDYWNoZUVudHJ5ICpoZW50cnk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYwppbmRleCA1MzVm ZmI2ZjA5ZS4uOGYwODk3YmVlYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zeW5jdXRpbHMuYwpAQCAtOTgsNyArOTgsNyBAQCBGaW5pc2hTeW5jV29ya2Vy KHZvaWQpCiAgKiBDYWxsYmFjayBmcm9tIHN5c2NhY2hlIGludmFsaWRhdGlvbi4KICAqLwog dm9pZAotSW52YWxpZGF0ZVN5bmNpbmdSZWxTdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSkKK0ludmFsaWRhdGVTeW5jaW5nUmVsU3RhdGVzKERhdHVt IGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7 CiAJcmVsYXRpb25fc3RhdGVzX3ZhbGlkaXR5ID0gU1lOQ19SRUxBVElPTlNfU1RBVEVfTkVF RFNfUkVCVUlMRDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCmluZGV4IDMyNzI1YzQ4NjIzLi44YjkzZjQ4NDcwYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC01MTY0LDcgKzUxNjQsNyBAQCBtYXli ZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAgKiBDYWxsYmFjayBmcm9tIHN1YnNjcmlw dGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1zdWJzY3Jp cHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFs dWUpCitzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlm aWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlTdWJzY3JpcHRpb25WYWxp ZCA9IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKaW5kZXggZTAxNmY2NGUwYjMuLjJhZWEyMGRjYTIyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTg2LDcgKzg2LDcg QEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKIHN0YXRpYyBib29sIHB1YmxpY2F0aW9uc192YWxpZDsKIAog c3RhdGljIExpc3QgKkxvYWRQdWJsaWNhdGlvbnMoTGlzdCAqcHVibmFtZXMpOwotc3RhdGlj IHZvaWQgcHVibGljYXRpb25faW52YWxpZGF0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hl aWQsCitzdGF0aWMgdm9pZCBwdWJsaWNhdGlvbl9pbnZhbGlkYXRpb25fY2IoRGF0dW0gYXJn LCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKIAkJCQkJCQkJCQl1aW50MzIgaGFzaHZh bHVlKTsKIHN0YXRpYyB2b2lkIHNlbmRfcmVwbF9vcmlnaW4oTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCSBSZXBsT3JpZ2luSWQgb3JpZ2luX2lkLCBYTG9nUmVjUHRy IG9yaWdpbl9sc24sCkBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIHZvaWQgc2VuZF9yZWxh dGlvbl9hbmRfYXR0cnMoUmVsYXRpb24gcmVsYXRpb24sIFRyYW5zYWN0aW9uSWQgeGlkLAog CQkJCQkJCQkJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJUmVsYXRp b25TeW5jRW50cnkgKnJlbGVudHJ5KTsKIHN0YXRpYyB2b2lkIHJlbF9zeW5jX2NhY2hlX3Jl bGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlkKTsKLXN0YXRpYyB2b2lkIHJlbF9zeW5j X2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsCitzdGF0aWMg dm9pZCByZWxfc3luY19jYWNoZV9wdWJsaWNhdGlvbl9jYihEYXR1bSBhcmcsIFN5c0NhY2hl SWRlbnRpZmllciBjYWNoZWlkLAogCQkJCQkJCQkJCSAgdWludDMyIGhhc2h2YWx1ZSk7CiBz dGF0aWMgdm9pZCBzZXRfc2NoZW1hX3NlbnRfaW5fc3RyZWFtZWRfdHhuKFJlbGF0aW9uU3lu Y0VudHJ5ICplbnRyeSwKIAkJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCB4aWQpOwpAQCAtMTgy OCw3ICsxODI4LDcgQEAgTG9hZFB1YmxpY2F0aW9ucyhMaXN0ICpwdWJuYW1lcykKICAqIENh bGxlZCBmb3IgaW52YWxpZGF0aW9ucyBvbiBwZ19wdWJsaWNhdGlvbi4KICAqLwogc3RhdGlj IHZvaWQKLXB1YmxpY2F0aW9uX2ludmFsaWRhdGlvbl9jYihEYXR1bSBhcmcsIGludCBjYWNo ZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorcHVibGljYXRpb25faW52YWxpZGF0aW9uX2NiKERh dHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUp CiB7CiAJcHVibGljYXRpb25zX3ZhbGlkID0gZmFsc2U7CiB9CkBAIC0yNDMxLDcgKzI0MzEs NyBAQCByZWxfc3luY19jYWNoZV9yZWxhdGlvbl9jYihEYXR1bSBhcmcsIE9pZCByZWxpZCkK ICAqIENhbGxlZCBmb3IgaW52YWxpZGF0aW9ucyBvbiBwZ19uYW1lc3BhY2UuCiAgKi8KIHN0 YXRpYyB2b2lkCi1yZWxfc3luY19jYWNoZV9wdWJsaWNhdGlvbl9jYihEYXR1bSBhcmcsIGlu dCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorcmVsX3N5bmNfY2FjaGVfcHVibGljYXRp b25fY2IoRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSkKIHsKIAlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwogCVJlbGF0aW9uU3luY0Vu dHJ5ICplbnRyeTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwppbmRleCAzYTY5MDVmOTU0Ni4uMzMyMTUy Y2ZkMmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMg QWNsTW9kZSBjb252ZXJ0X2xhcmdlb2JqZWN0X3ByaXZfc3RyaW5nKHRleHQgKnByaXZfdHlw ZV90ZXh0KTsKIHN0YXRpYyBBY2xNb2RlIGNvbnZlcnRfcm9sZV9wcml2X3N0cmluZyh0ZXh0 ICpwcml2X3R5cGVfdGV4dCk7CiBzdGF0aWMgQWNsUmVzdWx0IHBnX3JvbGVfYWNsY2hlY2so T2lkIHJvbGVfb2lkLCBPaWQgcm9sZWlkLCBBY2xNb2RlIG1vZGUpOwogCi1zdGF0aWMgdm9p ZCBSb2xlTWVtYmVyc2hpcENhY2hlQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSk7CitzdGF0aWMgdm9pZCBSb2xlTWVtYmVyc2hpcENhY2hlQ2Fs bGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSk7CiAKIAogLyoKQEAgLTUwNjcsNyArNTA2Nyw3IEBAIGluaXRpYWxpemVfYWNs KHZvaWQpCiAgKgkJU3lzY2FjaGUgaW52YWwgY2FsbGJhY2sgZnVuY3Rpb24KICAqLwogc3Rh dGljIHZvaWQKLVJvbGVNZW1iZXJzaGlwQ2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGludCBj YWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorUm9sZU1lbWJlcnNoaXBDYWNoZUNhbGxiYWNr KERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFs dWUpCiB7CiAJaWYgKGNhY2hlaWQgPT0gREFUQUJBU0VPSUQgJiYKIAkJaGFzaHZhbHVlICE9 IGNhY2hlZF9kYl9oYXNoICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQv cmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmlu ZGV4IGJiYWRlY2VmNWY5Li41N2E1MTFjYzllMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jp X3RyaWdnZXJzLmMKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGF0aWMgYm9vbCByaV9Db21wYXJl V2l0aENhc3QoT2lkIGVxX29wciwgT2lkIHR5cGVpZCwgT2lkIGNvbGxpZCwKIAkJCQkJCQkg ICBEYXR1bSBsaHMsIERhdHVtIHJocyk7CiAKIHN0YXRpYyB2b2lkIHJpX0luaXRIYXNoVGFi bGVzKHZvaWQpOwotc3RhdGljIHZvaWQgSW52YWxpZGF0ZUNvbnN0cmFpbnRDYWNoZUNhbGxC YWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworc3RhdGlj IHZvaWQgSW52YWxpZGF0ZUNvbnN0cmFpbnRDYWNoZUNhbGxCYWNrKERhdHVtIGFyZywgU3lz Q2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOwogc3RhdGljIFNQ SVBsYW5QdHIgcmlfRmV0Y2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSk7CiBzdGF0 aWMgdm9pZCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBsYW5Q dHIgcGxhbik7CiBzdGF0aWMgUklfQ29tcGFyZUhhc2hFbnRyeSAqcmlfSGFzaENvbXBhcmVP cChPaWQgZXFfb3ByLCBPaWQgdHlwZWlkKTsKQEAgLTIzOTcsNyArMjM5Nyw3IEBAIGdldF9y aV9jb25zdHJhaW50X3Jvb3QoT2lkIGNvbnN0ck9pZCkKICAqIGRhdGEgZnJvbSBjaGFuZ2lu ZyB1bmRlciBpdCAtLS0gYnV0IHdlIG1heSBnZXQgY2FjaGUgZmx1c2hlcyBhbnl3YXkuKQog ICovCiBzdGF0aWMgdm9pZAotSW52YWxpZGF0ZUNvbnN0cmFpbnRDYWNoZUNhbGxCYWNrKERh dHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCitJbnZhbGlkYXRlQ29u c3RyYWludENhY2hlQ2FsbEJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlkbGlzdF9tdXRhYmxlX2l0ZXIgaXRlcjsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvYXR0b3B0Y2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hlLmMKaW5kZXggNzJlZGM4ZjY2 NWIuLjRlMGZjN2Y5MTEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9h dHRvcHRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2F0dG9wdGNhY2hl LmMKQEAgLTUwLDcgKzUwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAqIGZvciB0aGF0IGF0dHJp YnV0ZS4KICAqLwogc3RhdGljIHZvaWQKLUludmFsaWRhdGVBdHRvcHRDYWNoZUNhbGxiYWNr KERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCitJbnZhbGlkYXRl QXR0b3B0Q2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNo ZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewogCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJ QXR0b3B0Q2FjaGVFbnRyeSAqYXR0b3B0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvZXZ0Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2V2dGNhY2hl LmMKaW5kZXggMmI0NDUzZTU0YTcuLmFjNWM3NjBlZmE3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9ldnRjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2V2dGNhY2hlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIEV2ZW50VHJpZ2dlckNh Y2hlU3RhdGVUeXBlIEV2ZW50VHJpZ2dlckNhY2hlU3RhdGUgPSBFVENTX05FRURTX1JFQlVJ TEQ7CiAKIHN0YXRpYyB2b2lkIEJ1aWxkRXZlbnRUcmlnZ2VyQ2FjaGUodm9pZCk7CiBzdGF0 aWMgdm9pZCBJbnZhbGlkYXRlRXZlbnRDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywKLQkJCQkJ CQkJCQkgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworCQkJCQkJCQkJCSBTeXND YWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiBzdGF0aWMgQml0 bWFwc2V0ICpEZWNvZGVUZXh0QXJyYXlUb0JpdG1hcHNldChEYXR1bSBhcnJheSk7CiAKIC8q CkBAIC0yNTQsNyArMjU0LDcgQEAgRGVjb2RlVGV4dEFycmF5VG9CaXRtYXBzZXQoRGF0dW0g YXJyYXkpCiAgKiBtZW1vcnkgbGVha3MuCiAgKi8KIHN0YXRpYyB2b2lkCi1JbnZhbGlkYXRl RXZlbnRDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNo dmFsdWUpCitJbnZhbGlkYXRlRXZlbnRDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgU3lzQ2Fj aGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJLyoKIAkgKiBJ ZiB0aGUgY2FjaGUgaXNuJ3QgdmFsaWQsIHRoZW4gdGhlcmUgbWlnaHQgYmUgYSByZWJ1aWxk IGluIHByb2dyZXNzLCBzbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv aW52YWwuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKaW5kZXggYmY0NjVh Mjk1ZTMuLmQ1OTIxNmIyOGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9pbnZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKQEAgLTE4 MTMsNyArMTgxMyw3IEBAIENhY2hlSW52YWxpZGF0ZVJlbG1hcChPaWQgZGF0YWJhc2VJZCkK ICAqIGZsdXNoIGFsbCBjYWNoZWQgc3RhdGUgYW55d2F5LgogICovCiB2b2lkCi1DYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhpbnQgY2FjaGVpZCwKK0NhY2hlUmVnaXN0ZXJTeXNj YWNoZUNhbGxiYWNrKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZWlkLAogCQkJCQkJCSAgU3lz Y2FjaGVDYWxsYmFja0Z1bmN0aW9uIGZ1bmMsCiAJCQkJCQkJICBEYXR1bSBhcmcpCiB7CkBA IC0xODk1LDcgKzE4OTUsNyBAQCBDYWNoZVJlZ2lzdGVyUmVsU3luY0NhbGxiYWNrKFJlbFN5 bmNDYWxsYmFja0Z1bmN0aW9uIGZ1bmMsCiAgKiB0aGlzIG1vZHVsZSBmcm9tIGtub3dpbmcg d2hpY2ggY2F0Y2FjaGUgSURzIGNvcnJlc3BvbmQgdG8gd2hpY2ggY2F0YWxvZ3MuCiAgKi8K IHZvaWQKLUNhbGxTeXNjYWNoZUNhbGxiYWNrcyhpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2 YWx1ZSkKK0NhbGxTeXNjYWNoZUNhbGxiYWNrcyhTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlpbnQJCQlpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jCmluZGV4IDM3ZDVkNzNiN2ZiLi5kOTNjM2I4YWZlOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEwNiw4ICsxMDYsOCBAQCBzdGF0 aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVp cmUpOwogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFj cXVpcmUpOwogc3RhdGljIFR1cGxlRGVzYyBQbGFuQ2FjaGVDb21wdXRlUmVzdWx0RGVzYyhM aXN0ICpzdG10X2xpc3QpOwogc3RhdGljIHZvaWQgUGxhbkNhY2hlUmVsQ2FsbGJhY2soRGF0 dW0gYXJnLCBPaWQgcmVsaWQpOwotc3RhdGljIHZvaWQgUGxhbkNhY2hlT2JqZWN0Q2FsbGJh Y2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7Ci1zdGF0aWMg dm9pZCBQbGFuQ2FjaGVTeXNDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50 MzIgaGFzaHZhbHVlKTsKK3N0YXRpYyB2b2lkIFBsYW5DYWNoZU9iamVjdENhbGxiYWNrKERh dHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUp Oworc3RhdGljIHZvaWQgUGxhbkNhY2hlU3lzQ2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNo ZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiAKIC8qIFJlc291cmNl T3duZXIgY2FsbGJhY2tzIHRvIHRyYWNrIHBsYW5jYWNoZSByZWZlcmVuY2VzICovCiBzdGF0 aWMgdm9pZCBSZXNPd25lclJlbGVhc2VDYWNoZWRQbGFuKERhdHVtIHJlcyk7CkBAIC0yMjAx LDcgKzIyMDEsNyBAQCBQbGFuQ2FjaGVSZWxDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxp ZCkKICAqIG9yIGFsbCBwbGFucyBtZW50aW9uaW5nIGFueSBtZW1iZXIgb2YgdGhpcyBjYWNo ZSBpZiBoYXNodmFsdWUgPT0gMC4KICAqLwogc3RhdGljIHZvaWQKLVBsYW5DYWNoZU9iamVj dENhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCitQ bGFuQ2FjaGVPYmplY3RDYWxsYmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBj YWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewogCWRsaXN0X2l0ZXIJaXRlcjsKIApAQCAt MjMxMCw3ICsyMzEwLDcgQEAgUGxhbkNhY2hlT2JqZWN0Q2FsbGJhY2soRGF0dW0gYXJnLCBp bnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKICAqIEp1c3QgaW52YWxpZGF0ZSBldmVy eXRoaW5nLi4uCiAgKi8KIHN0YXRpYyB2b2lkCi1QbGFuQ2FjaGVTeXNDYWxsYmFjayhEYXR1 bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorUGxhbkNhY2hlU3lzQ2Fs bGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSkKIHsKIAlSZXNldFBsYW5DYWNoZSgpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvc3BjY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3NwY2NhY2hlLmMKaW5kZXggOGYxYTVlNjk1OTUuLjBkODdmYjJmNGZjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zcGNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3NwY2NhY2hlLmMKQEAgLTUyLDcgKzUyLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKICAqIHRhYmxlc3BhY2VzLCBub3IgZG8gd2UgZXhwZWN0IHRoZW0gdG8gYmUgZnJlcXVl bnRseSBtb2RpZmllZC4KICAqLwogc3RhdGljIHZvaWQKLUludmFsaWRhdGVUYWJsZVNwYWNl Q2FjaGVDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVl KQorSW52YWxpZGF0ZVRhYmxlU3BhY2VDYWNoZUNhbGxiYWNrKERhdHVtIGFyZywgU3lzQ2Fj aGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJSEFTSF9TRVFf U1RBVFVTIHN0YXR1czsKIAlUYWJsZVNwYWNlQ2FjaGVFbnRyeSAqc3BjOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3N5c2NhY2hlLmMKaW5kZXggYWUzZDE4ZTBlNzQuLjAwN2E5YTE1ZDcxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2NhY2hlLmMKQEAgLTEwOSw3ICsxMDksNyBAQCBz dGF0aWMgaW50CW9pZF9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwog dm9pZAogSW5pdENhdGFsb2dDYWNoZSh2b2lkKQogewotCWludAkJCWNhY2hlSWQ7CisJU3lz Q2FjaGVJZGVudGlmaWVyIGNhY2hlSWQ7CiAKIAlBc3NlcnQoIUNhY2hlSW5pdGlhbGl6ZWQp OwogCkBAIC0xNzksNyArMTc5LDcgQEAgSW5pdENhdGFsb2dDYWNoZSh2b2lkKQogdm9pZAog SW5pdENhdGFsb2dDYWNoZVBoYXNlMih2b2lkKQogewotCWludAkJCWNhY2hlSWQ7CisJU3lz Q2FjaGVJZGVudGlmaWVyIGNhY2hlSWQ7CiAKIAlBc3NlcnQoQ2FjaGVJbml0aWFsaXplZCk7 CiAKQEAgLTIwNSw3ICsyMDUsNyBAQCBJbml0Q2F0YWxvZ0NhY2hlUGhhc2UyKHZvaWQpCiAg KglDQVVUSU9OOiBUaGUgdHVwbGUgdGhhdCBpcyByZXR1cm5lZCBtdXN0IE5PVCBiZSBmcmVl ZCBieSB0aGUgY2FsbGVyIQogICovCiBIZWFwVHVwbGUKLVNlYXJjaFN5c0NhY2hlKGludCBj YWNoZUlkLAorU2VhcmNoU3lzQ2FjaGUoU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlSWQsCiAJ CQkgICBEYXR1bSBrZXkxLAogCQkJICAgRGF0dW0ga2V5MiwKIAkJCSAgIERhdHVtIGtleTMs CkBAIC0yMTcsNyArMjE3LDcgQEAgU2VhcmNoU3lzQ2FjaGUoaW50IGNhY2hlSWQsCiB9CiAK IEhlYXBUdXBsZQotU2VhcmNoU3lzQ2FjaGUxKGludCBjYWNoZUlkLAorU2VhcmNoU3lzQ2Fj aGUxKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLAogCQkJCURhdHVtIGtleTEpCiB7CiAJ QXNzZXJ0KGNhY2hlSWQgPj0gMCAmJiBjYWNoZUlkIDwgU3lzQ2FjaGVTaXplICYmIFN5c0Nh Y2hlW2NhY2hlSWRdKTsKQEAgLTIyNyw3ICsyMjcsNyBAQCBTZWFyY2hTeXNDYWNoZTEoaW50 IGNhY2hlSWQsCiB9CiAKIEhlYXBUdXBsZQotU2VhcmNoU3lzQ2FjaGUyKGludCBjYWNoZUlk LAorU2VhcmNoU3lzQ2FjaGUyKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLAogCQkJCURh dHVtIGtleTEsIERhdHVtIGtleTIpCiB7CiAJQXNzZXJ0KGNhY2hlSWQgPj0gMCAmJiBjYWNo ZUlkIDwgU3lzQ2FjaGVTaXplICYmIFN5c0NhY2hlW2NhY2hlSWRdKTsKQEAgLTIzNyw3ICsy MzcsNyBAQCBTZWFyY2hTeXNDYWNoZTIoaW50IGNhY2hlSWQsCiB9CiAKIEhlYXBUdXBsZQot U2VhcmNoU3lzQ2FjaGUzKGludCBjYWNoZUlkLAorU2VhcmNoU3lzQ2FjaGUzKFN5c0NhY2hl SWRlbnRpZmllciBjYWNoZUlkLAogCQkJCURhdHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVt IGtleTMpCiB7CiAJQXNzZXJ0KGNhY2hlSWQgPj0gMCAmJiBjYWNoZUlkIDwgU3lzQ2FjaGVT aXplICYmIFN5c0NhY2hlW2NhY2hlSWRdKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBTZWFyY2hT eXNDYWNoZTMoaW50IGNhY2hlSWQsCiB9CiAKIEhlYXBUdXBsZQotU2VhcmNoU3lzQ2FjaGU0 KGludCBjYWNoZUlkLAorU2VhcmNoU3lzQ2FjaGU0KFN5c0NhY2hlSWRlbnRpZmllciBjYWNo ZUlkLAogCQkJCURhdHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVtIGtleTMsIERhdHVtIGtl eTQpCiB7CiAJQXNzZXJ0KGNhY2hlSWQgPj0gMCAmJiBjYWNoZUlkIDwgU3lzQ2FjaGVTaXpl ICYmIFN5c0NhY2hlW2NhY2hlSWRdKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBSZWxlYXNlU3lz Q2FjaGUoSGVhcFR1cGxlIHR1cGxlKQogICogZG9lc24ndCBwcmV2ZW50IHRoZSAidHVwbGUg Y29uY3VycmVudGx5IHVwZGF0ZWQiIGVycm9yLgogICovCiBIZWFwVHVwbGUKLVNlYXJjaFN5 c0NhY2hlTG9ja2VkMShpbnQgY2FjaGVJZCwKK1NlYXJjaFN5c0NhY2hlTG9ja2VkMShTeXND YWNoZUlkZW50aWZpZXIgY2FjaGVJZCwKIAkJCQkJICBEYXR1bSBrZXkxKQogewogCUNhdENh Y2hlICAgKmNhY2hlID0gU3lzQ2FjaGVbY2FjaGVJZF07CkBAIC0zNzEsNyArMzcxLDcgQEAg U2VhcmNoU3lzQ2FjaGVMb2NrZWQxKGludCBjYWNoZUlkLAogICogaGVhcF9mcmVldHVwbGUo KSB0aGUgcmVzdWx0IHdoZW4gZG9uZSB3aXRoIGl0LgogICovCiBIZWFwVHVwbGUKLVNlYXJj aFN5c0NhY2hlQ29weShpbnQgY2FjaGVJZCwKK1NlYXJjaFN5c0NhY2hlQ29weShTeXNDYWNo ZUlkZW50aWZpZXIgY2FjaGVJZCwKIAkJCQkgICBEYXR1bSBrZXkxLAogCQkJCSAgIERhdHVt IGtleTIsCiAJCQkJICAgRGF0dW0ga2V5MywKQEAgLTM5Niw3ICszOTYsNyBAQCBTZWFyY2hT eXNDYWNoZUNvcHkoaW50IGNhY2hlSWQsCiAgKiBoZWFwX2ZyZWV0dXBsZSgpLgogICovCiBI ZWFwVHVwbGUKLVNlYXJjaFN5c0NhY2hlTG9ja2VkQ29weTEoaW50IGNhY2hlSWQsCitTZWFy Y2hTeXNDYWNoZUxvY2tlZENvcHkxKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLAogCQkJ CQkJICBEYXR1bSBrZXkxKQogewogCUhlYXBUdXBsZQl0dXBsZSwKQEAgLTQxNyw3ICs0MTcs NyBAQCBTZWFyY2hTeXNDYWNoZUxvY2tlZENvcHkxKGludCBjYWNoZUlkLAogICogTm8gbG9j ayBpcyByZXRhaW5lZCBvbiB0aGUgc3lzY2FjaGUgZW50cnkuCiAgKi8KIGJvb2wKLVNlYXJj aFN5c0NhY2hlRXhpc3RzKGludCBjYWNoZUlkLAorU2VhcmNoU3lzQ2FjaGVFeGlzdHMoU3lz Q2FjaGVJZGVudGlmaWVyIGNhY2hlSWQsCiAJCQkJCSBEYXR1bSBrZXkxLAogCQkJCQkgRGF0 dW0ga2V5MiwKIAkJCQkJIERhdHVtIGtleTMsCkBAIC00NDAsNyArNDQwLDcgQEAgU2VhcmNo U3lzQ2FjaGVFeGlzdHMoaW50IGNhY2hlSWQsCiAgKiBObyBsb2NrIGlzIHJldGFpbmVkIG9u IHRoZSBzeXNjYWNoZSBlbnRyeS4KICAqLwogT2lkCi1HZXRTeXNDYWNoZU9pZChpbnQgY2Fj aGVJZCwKK0dldFN5c0NhY2hlT2lkKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLAogCQkJ ICAgQXR0ck51bWJlciBvaWRjb2wsCiAJCQkgICBEYXR1bSBrZXkxLAogCQkJICAgRGF0dW0g a2V5MiwKQEAgLTU5Miw3ICs1OTIsNyBAQCBTZWFyY2hTeXNDYWNoZUNvcHlBdHROdW0oT2lk IHJlbGlkLCBpbnQxNiBhdHRudW0pCiAgKiBhIGRpZmZlcmVudCBjYWNoZSBmb3IgdGhlIHNh bWUgY2F0YWxvZyB0aGUgdHVwbGUgd2FzIGZldGNoZWQgZnJvbS4KICAqLwogRGF0dW0KLVN5 c0NhY2hlR2V0QXR0cihpbnQgY2FjaGVJZCwgSGVhcFR1cGxlIHR1cCwKK1N5c0NhY2hlR2V0 QXR0cihTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJZCwgSGVhcFR1cGxlIHR1cCwKIAkJCQlB dHRyTnVtYmVyIGF0dHJpYnV0ZU51bWJlciwKIAkJCQlib29sICppc051bGwpCiB7CkBAIC02 MjIsNyArNjIyLDcgQEAgU3lzQ2FjaGVHZXRBdHRyKGludCBjYWNoZUlkLCBIZWFwVHVwbGUg dHVwLAogICogYmUgTlVMTC4KICAqLwogRGF0dW0KLVN5c0NhY2hlR2V0QXR0ck5vdE51bGwo aW50IGNhY2hlSWQsIEhlYXBUdXBsZSB0dXAsCitTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFN5 c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLCBIZWFwVHVwbGUgdHVwLAogCQkJCQkgICBBdHRy TnVtYmVyIGF0dHJpYnV0ZU51bWJlcikKIHsKIAlib29sCQlpc251bGw7CkBAIC02NTIsNyAr NjUyLDcgQEAgU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChpbnQgY2FjaGVJZCwgSGVhcFR1cGxl IHR1cCwKICAqIGNhdGNhY2hlIGNvZGUgdGhhdCBuZWVkIHRvIGJlIGFibGUgdG8gY29tcHV0 ZSB0aGUgaGFzaCB2YWx1ZXMuCiAgKi8KIHVpbnQzMgotR2V0U3lzQ2FjaGVIYXNoVmFsdWUo aW50IGNhY2hlSWQsCitHZXRTeXNDYWNoZUhhc2hWYWx1ZShTeXNDYWNoZUlkZW50aWZpZXIg Y2FjaGVJZCwKIAkJCQkJIERhdHVtIGtleTEsCiAJCQkJCSBEYXR1bSBrZXkyLAogCQkJCQkg RGF0dW0ga2V5MywKQEAgLTY2OCw3ICs2NjgsNyBAQCBHZXRTeXNDYWNoZUhhc2hWYWx1ZShp bnQgY2FjaGVJZCwKICAqIExpc3Qtc2VhcmNoIGludGVyZmFjZQogICovCiBzdHJ1Y3QgY2F0 Y2xpc3QgKgotU2VhcmNoU3lzQ2FjaGVMaXN0KGludCBjYWNoZUlkLCBpbnQgbmtleXMsCitT ZWFyY2hTeXNDYWNoZUxpc3QoU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlSWQsIGludCBua2V5 cywKIAkJCQkgICBEYXR1bSBrZXkxLCBEYXR1bSBrZXkyLCBEYXR1bSBrZXkzKQogewogCWlm IChjYWNoZUlkIDwgMCB8fCBjYWNoZUlkID49IFN5c0NhY2hlU2l6ZSB8fCAhU3lzQ2FjaGVb Y2FjaGVJZF0pCkBAIC02ODcsNyArNjg3LDcgQEAgU2VhcmNoU3lzQ2FjaGVMaXN0KGludCBj YWNoZUlkLCBpbnQgbmtleXMsCiAgKglUaGlzIHJvdXRpbmUgaXMgb25seSBxdWFzaS1wdWJs aWM6IGl0IHNob3VsZCBvbmx5IGJlIHVzZWQgYnkgaW52YWwuYy4KICAqLwogdm9pZAotU3lz Q2FjaGVJbnZhbGlkYXRlKGludCBjYWNoZUlkLCB1aW50MzIgaGFzaFZhbHVlKQorU3lzQ2Fj aGVJbnZhbGlkYXRlKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLCB1aW50MzIgaGFzaFZh bHVlKQogewogCWlmIChjYWNoZUlkIDwgMCB8fCBjYWNoZUlkID49IFN5c0NhY2hlU2l6ZSkK IAkJZWxvZyhFUlJPUiwgImludmFsaWQgY2FjaGUgSUQ6ICVkIiwgY2FjaGVJZCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90c19jYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYwppbmRleCA3MWU0OWIyYjkxOS4uNzQ0YzhlNzFk NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3RzX2NhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHNfY2FjaGUuYwpAQCAtOTEsNyArOTEsNyBA QCBzdGF0aWMgT2lkCVRTQ3VycmVudENvbmZpZ0NhY2hlID0gSW52YWxpZE9pZDsKICAqIHRh YmxlIGFkZHJlc3MgYXMgdGhlICJhcmciLgogICovCiBzdGF0aWMgdm9pZAotSW52YWxpZGF0 ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZh bHVlKQorSW52YWxpZGF0ZVRTQ2FjaGVDYWxsQmFjayhEYXR1bSBhcmcsIFN5c0NhY2hlSWRl bnRpZmllciBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogewogCUhUQUIJICAgKmhhc2gg PSAoSFRBQiAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKTsKIAlIQVNIX1NFUV9TVEFUVVMgc3Rh dHVzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggZGM0YjFhNTY0MTQu LmM3MjFlMWMyODc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBj YWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKQEAgLTMz Nyw5ICszMzcsOSBAQCBzdGF0aWMgYm9vbCBtdWx0aXJhbmdlX2VsZW1lbnRfaGFzX2hhc2hp bmcoVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5KTsKIHN0YXRpYyBib29sIG11bHRpcmFuZ2Vf ZWxlbWVudF9oYXNfZXh0ZW5kZWRfaGFzaGluZyhUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnkp Owogc3RhdGljIHZvaWQgY2FjaGVfbXVsdGlyYW5nZV9lbGVtZW50X3Byb3BlcnRpZXMoVHlw ZUNhY2hlRW50cnkgKnR5cGVudHJ5KTsKIHN0YXRpYyB2b2lkIFR5cGVDYWNoZVJlbENhbGxi YWNrKERhdHVtIGFyZywgT2lkIHJlbGlkKTsKLXN0YXRpYyB2b2lkIFR5cGVDYWNoZVR5cENh bGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOwotc3Rh dGljIHZvaWQgVHlwZUNhY2hlT3BjQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSk7Ci1zdGF0aWMgdm9pZCBUeXBlQ2FjaGVDb25zdHJDYWxsYmFj ayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKK3N0YXRpYyB2 b2lkIFR5cGVDYWNoZVR5cENhbGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVy IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworc3RhdGljIHZvaWQgVHlwZUNhY2hlT3Bj Q2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMy IGhhc2h2YWx1ZSk7CitzdGF0aWMgdm9pZCBUeXBlQ2FjaGVDb25zdHJDYWxsYmFjayhEYXR1 bSBhcmcsIFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsK IHN0YXRpYyB2b2lkIGxvYWRfZW51bV9jYWNoZV9kYXRhKFR5cGVDYWNoZUVudHJ5ICp0Y2Fj aGUpOwogc3RhdGljIEVudW1JdGVtICpmaW5kX2VudW1pdGVtKFR5cGVDYWNoZUVudW1EYXRh ICplbnVtZGF0YSwgT2lkIGFyZyk7CiBzdGF0aWMgaW50CWVudW1fb2lkX2NtcChjb25zdCB2 b2lkICpsZWZ0LCBjb25zdCB2b2lkICpyaWdodCk7CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCBU eXBlQ2FjaGVSZWxDYWxsYmFjayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKICAqIGl0IGFzIG5l ZWRpbmcgdG8gYmUgcmVsb2FkZWQuCiAgKi8KIHN0YXRpYyB2b2lkCi1UeXBlQ2FjaGVUeXBD YWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQorVHlw ZUNhY2hlVHlwQ2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwogCVR5 cGVDYWNoZUVudHJ5ICp0eXBlbnRyeTsKQEAgLTI1NjksNyArMjU2OSw3IEBAIFR5cGVDYWNo ZVR5cENhbGxiYWNrKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUp CiAgKiBvZiBtZW1iZXJzIGFyZSBub3QgZ29pbmcgdG8gZ2V0IGNhY2hlZCBoZXJlLgogICov CiBzdGF0aWMgdm9pZAotVHlwZUNhY2hlT3BjQ2FsbGJhY2soRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK1R5cGVDYWNoZU9wY0NhbGxiYWNrKERhdHVtIGFy ZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJ SEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKIAlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CkBA IC0yNjA3LDcgKzI2MDcsNyBAQCBUeXBlQ2FjaGVPcGNDYWxsYmFjayhEYXR1bSBhcmcsIGlu dCBjYWNoZWlkLCB1aW50MzIgaGFzaHZhbHVlKQogICogYXBwcm9hY2ggdG8gZG9tYWluIGNv bnN0cmFpbnRzLgogICovCiBzdGF0aWMgdm9pZAotVHlwZUNhY2hlQ29uc3RyQ2FsbGJhY2so RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK1R5cGVDYWNoZUNv bnN0ckNhbGxiYWNrKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpCiB7CiAJVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3N1cGVydXNlci5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9zdXBlcnVzZXIuYwppbmRleCA3ODIxNjI0Njg3YS4uMTA3NTlhOWEz N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mvc3VwZXJ1c2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9zdXBlcnVzZXIuYwpAQCAtMzYsNyArMzYsNyBA QCBzdGF0aWMgT2lkCWxhc3Rfcm9sZWlkID0gSW52YWxpZE9pZDsJLyogSW52YWxpZE9pZCA9 PSBjYWNoZSBub3QgdmFsaWQgKi8KIHN0YXRpYyBib29sIGxhc3Rfcm9sZWlkX2lzX3N1cGVy ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCByb2xlaWRfY2FsbGJhY2tfcmVnaXN0ZXJlZCA9IGZh bHNlOwogCi1zdGF0aWMgdm9pZCBSb2xlaWRDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNo ZWlkLCB1aW50MzIgaGFzaHZhbHVlKTsKK3N0YXRpYyB2b2lkIFJvbGVpZENhbGxiYWNrKERh dHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUp OwogCiAKIC8qCkBAIC0xMDAsNyArMTAwLDcgQEAgc3VwZXJ1c2VyX2FyZyhPaWQgcm9sZWlk KQogICoJCVN5c2NhY2hlIGludmFsIGNhbGxiYWNrIGZ1bmN0aW9uCiAgKi8KIHN0YXRpYyB2 b2lkCi1Sb2xlaWRDYWxsYmFjayhEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFz aHZhbHVlKQorUm9sZWlkQ2FsbGJhY2soRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIg Y2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAkvKiBJbnZhbGlkYXRlIG91ciBsb2Nh bCBjYWNoZSBpbiBjYXNlIHJvbGUncyBzdXBlcnVzZXJuZXNzIGNoYW5nZWQgKi8KIAlsYXN0 X3JvbGVpZCA9IEludmFsaWRPaWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L29iamVjdGFkZHJlc3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5o CmluZGV4IGUyZmU5ZGIxMTYxLi5iNTQ5YmUyZDUyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9v YmplY3RhZGRyZXNzLmgKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJub2Rlcy9wYXJz ZW5vZGVzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrZGVmcy5oIgogI2luY2x1ZGUgInV0 aWxzL3JlbGNhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogLyoKICAq IEFuIE9iamVjdEFkZHJlc3MgcmVwcmVzZW50cyBhIGRhdGFiYXNlIG9iamVjdCBvZiBhbnkg dHlwZS4KQEAgLTU3LDggKzU4LDggQEAgZXh0ZXJuIE9pZAlnZXRfb2JqZWN0X25hbWVzcGFj ZShjb25zdCBPYmplY3RBZGRyZXNzICphZGRyZXNzKTsKIGV4dGVybiBib29sIGlzX29iamVj dGNsYXNzX3N1cHBvcnRlZChPaWQgY2xhc3NfaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdl dF9vYmplY3RfY2xhc3NfZGVzY3IoT2lkIGNsYXNzX2lkKTsKIGV4dGVybiBPaWQJZ2V0X29i amVjdF9vaWRfaW5kZXgoT2lkIGNsYXNzX2lkKTsKLWV4dGVybiBpbnQJZ2V0X29iamVjdF9j YXRjYWNoZV9vaWQoT2lkIGNsYXNzX2lkKTsKLWV4dGVybiBpbnQJZ2V0X29iamVjdF9jYXRj YWNoZV9uYW1lKE9pZCBjbGFzc19pZCk7CitleHRlcm4gU3lzQ2FjaGVJZGVudGlmaWVyIGdl dF9vYmplY3RfY2F0Y2FjaGVfb2lkKE9pZCBjbGFzc19pZCk7CitleHRlcm4gU3lzQ2FjaGVJ ZGVudGlmaWVyIGdldF9vYmplY3RfY2F0Y2FjaGVfbmFtZShPaWQgY2xhc3NfaWQpOwogZXh0 ZXJuIEF0dHJOdW1iZXIgZ2V0X29iamVjdF9hdHRudW1fb2lkKE9pZCBjbGFzc19pZCk7CiBl eHRlcm4gQXR0ck51bWJlciBnZXRfb2JqZWN0X2F0dG51bV9uYW1lKE9pZCBjbGFzc19pZCk7 CiBleHRlcm4gQXR0ck51bWJlciBnZXRfb2JqZWN0X2F0dG51bV9uYW1lc3BhY2UoT2lkIGNs YXNzX2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK aW5kZXggYzEyODVmZGQxYmMuLjY0NGM5NTNjOTQwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjg5LDcgKzI4OSw3IEBAIGV4dGVybiB2 b2lkIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xz bik7CiBleHRlcm4gdm9pZCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKTsKIAogcGdf bm9yZXR1cm4gZXh0ZXJuIHZvaWQgRmluaXNoU3luY1dvcmtlcih2b2lkKTsKLWV4dGVybiB2 b2lkIEludmFsaWRhdGVTeW5jaW5nUmVsU3RhdGVzKERhdHVtIGFyZywgaW50IGNhY2hlaWQs IHVpbnQzMiBoYXNodmFsdWUpOworZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVN5bmNpbmdSZWxT dGF0ZXMoRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhh c2h2YWx1ZSk7CiBleHRlcm4gdm9pZCBsYXVuY2hfc3luY193b3JrZXIoTG9naWNhbFJlcFdv cmtlclR5cGUgd3R5cGUsIGludCBuc3luY3dvcmtlcnMsCiAJCQkJCQkJICAgT2lkIHJlbGlk LCBUaW1lc3RhbXBUeiAqbGFzdF9zdGFydF90aW1lKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NT eW5jaW5nUmVsYXRpb25zKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvaW52YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2ludmFsLmgK aW5kZXggMGU5MzdmZWM5ZTkuLmU5ZDhjZGI3NWZmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9pbnZhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2ludmFsLmgKQEAgLTE3 LDYgKzE3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcmVsZmlsZWxvY2F0b3IuaCIKICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgorI2lu Y2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgZGVi dWdfZGlzY2FyZF9jYWNoZXM7CiAKQEAgLTM4LDcgKzM5LDcgQEAgZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBkZWJ1Z19kaXNjYXJkX2NhY2hlczsKICNlbmRpZgkJCQkJCQkvKiBub3QgRElT Q0FSRF9DQUNIRVNfRU5BQkxFRCAqLwogCiAKLXR5cGVkZWYgdm9pZCAoKlN5c2NhY2hlQ2Fs bGJhY2tGdW5jdGlvbikgKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFs dWUpOwordHlwZWRlZiB2b2lkICgqU3lzY2FjaGVDYWxsYmFja0Z1bmN0aW9uKSAoRGF0dW0g YXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CiB0 eXBlZGVmIHZvaWQgKCpSZWxjYWNoZUNhbGxiYWNrRnVuY3Rpb24pIChEYXR1bSBhcmcsIE9p ZCByZWxpZCk7CiB0eXBlZGVmIHZvaWQgKCpSZWxTeW5jQ2FsbGJhY2tGdW5jdGlvbikgKERh dHVtIGFyZywgT2lkIHJlbGlkKTsKIApAQCAtODEsNyArODIsNyBAQCBleHRlcm4gdm9pZCBD YWNoZUludmFsaWRhdGVTbWdyKFJlbEZpbGVMb2NhdG9yQmFja2VuZCBybG9jYXRvcik7CiAK IGV4dGVybiB2b2lkIENhY2hlSW52YWxpZGF0ZVJlbG1hcChPaWQgZGF0YWJhc2VJZCk7CiAK LWV4dGVybiB2b2lkIENhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKGludCBjYWNoZWlk LAorZXh0ZXJuIHZvaWQgQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU3lzQ2FjaGVJ ZGVudGlmaWVyIGNhY2hlaWQsCiAJCQkJCQkJCQkJICBTeXNjYWNoZUNhbGxiYWNrRnVuY3Rp b24gZnVuYywKIAkJCQkJCQkJCQkgIERhdHVtIGFyZyk7CiAKQEAgLTkxLDcgKzkyLDcgQEAg ZXh0ZXJuIHZvaWQgQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2soUmVsY2FjaGVDYWxs YmFja0Z1bmN0aW9uIGZ1bmMsCiBleHRlcm4gdm9pZCBDYWNoZVJlZ2lzdGVyUmVsU3luY0Nh bGxiYWNrKFJlbFN5bmNDYWxsYmFja0Z1bmN0aW9uIGZ1bmMsCiAJCQkJCQkJCQkJIERhdHVt IGFyZyk7CiAKLWV4dGVybiB2b2lkIENhbGxTeXNjYWNoZUNhbGxiYWNrcyhpbnQgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSk7CitleHRlcm4gdm9pZCBDYWxsU3lzY2FjaGVDYWxsYmFj a3MoU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOwogCiBl eHRlcm4gdm9pZCBDYWxsUmVsU3luY0NhbGxiYWNrcyhPaWQgcmVsaWQpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv c3lzY2FjaGUuaAppbmRleCAxM2Y0OWFmOWVkNC4uODFlNTkzMzcwOGUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv c3lzY2FjaGUuaApAQCAtMjUsMzUgKzI1LDM1IEBACiBleHRlcm4gdm9pZCBJbml0Q2F0YWxv Z0NhY2hlKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW5pdENhdGFsb2dDYWNoZVBoYXNlMih2b2lk KTsKIAotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZShpbnQgY2FjaGVJZCwKK2V4 dGVybiBIZWFwVHVwbGUgU2VhcmNoU3lzQ2FjaGUoU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hl SWQsCiAJCQkJCQkJCURhdHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVtIGtleTMsIERhdHVt IGtleTQpOwogCiAvKgogICogVGhlIHVzZSBvZiBhcmd1bWVudCBzcGVjaWZpYyBudW1iZXJz IGlzIGVuY291cmFnZWQuIFRoZXkncmUgZmFzdGVyLCBhbmQKICAqIGluc3VsYXRlcyB0aGUg Y2FsbGVyIGZyb20gY2hhbmdlcyBpbiB0aGUgbWF4aW11bSBudW1iZXIgb2Yga2V5cy4KICAq LwotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZTEoaW50IGNhY2hlSWQsCitleHRl cm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlMShTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJ ZCwKIAkJCQkJCQkJIERhdHVtIGtleTEpOwotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXND YWNoZTIoaW50IGNhY2hlSWQsCitleHRlcm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlMihT eXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJZCwKIAkJCQkJCQkJIERhdHVtIGtleTEsIERhdHVt IGtleTIpOwotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZTMoaW50IGNhY2hlSWQs CitleHRlcm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlMyhTeXNDYWNoZUlkZW50aWZpZXIg Y2FjaGVJZCwKIAkJCQkJCQkJIERhdHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVtIGtleTMp OwotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZTQoaW50IGNhY2hlSWQsCitleHRl cm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlNChTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJ ZCwKIAkJCQkJCQkJIERhdHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVtIGtleTMsIERhdHVt IGtleTQpOwogCiBleHRlcm4gdm9pZCBSZWxlYXNlU3lzQ2FjaGUoSGVhcFR1cGxlIHR1cGxl KTsKIAotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZUxvY2tlZDEoaW50IGNhY2hl SWQsCitleHRlcm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlTG9ja2VkMShTeXNDYWNoZUlk ZW50aWZpZXIgY2FjaGVJZCwKIAkJCQkJCQkJCSAgIERhdHVtIGtleTEpOwogCiAvKiBjb252 ZW5pZW5jZSByb3V0aW5lcyAqLwotZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZUNv cHkoaW50IGNhY2hlSWQsCitleHRlcm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlQ29weShT eXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJZCwKIAkJCQkJCQkJCURhdHVtIGtleTEsIERhdHVt IGtleTIsIERhdHVtIGtleTMsIERhdHVtIGtleTQpOwotZXh0ZXJuIEhlYXBUdXBsZSBTZWFy Y2hTeXNDYWNoZUxvY2tlZENvcHkxKGludCBjYWNoZUlkLAorZXh0ZXJuIEhlYXBUdXBsZSBT ZWFyY2hTeXNDYWNoZUxvY2tlZENvcHkxKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLAog CQkJCQkJCQkJCSAgIERhdHVtIGtleTEpOwotZXh0ZXJuIGJvb2wgU2VhcmNoU3lzQ2FjaGVF eGlzdHMoaW50IGNhY2hlSWQsCitleHRlcm4gYm9vbCBTZWFyY2hTeXNDYWNoZUV4aXN0cyhT eXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJZCwKIAkJCQkJCQkJIERhdHVtIGtleTEsIERhdHVt IGtleTIsIERhdHVtIGtleTMsIERhdHVtIGtleTQpOwotZXh0ZXJuIE9pZAlHZXRTeXNDYWNo ZU9pZChpbnQgY2FjaGVJZCwgQXR0ck51bWJlciBvaWRjb2wsCitleHRlcm4gT2lkCUdldFN5 c0NhY2hlT2lkKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLCBBdHRyTnVtYmVyIG9pZGNv bCwKIAkJCQkJCSAgIERhdHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVtIGtleTMsIERhdHVt IGtleTQpOwogCiBleHRlcm4gSGVhcFR1cGxlIFNlYXJjaFN5c0NhY2hlQXR0TmFtZShPaWQg cmVsaWQsIGNvbnN0IGNoYXIgKmF0dG5hbWUpOwpAQCAtNjMsMjEgKzYzLDIxIEBAIGV4dGVy biBib29sIFNlYXJjaFN5c0NhY2hlRXhpc3RzQXR0TmFtZShPaWQgcmVsaWQsIGNvbnN0IGNo YXIgKmF0dG5hbWUpOwogZXh0ZXJuIEhlYXBUdXBsZSBTZWFyY2hTeXNDYWNoZUF0dE51bShP aWQgcmVsaWQsIGludDE2IGF0dG51bSk7CiBleHRlcm4gSGVhcFR1cGxlIFNlYXJjaFN5c0Nh Y2hlQ29weUF0dE51bShPaWQgcmVsaWQsIGludDE2IGF0dG51bSk7CiAKLWV4dGVybiBEYXR1 bSBTeXNDYWNoZUdldEF0dHIoaW50IGNhY2hlSWQsIEhlYXBUdXBsZSB0dXAsCitleHRlcm4g RGF0dW0gU3lzQ2FjaGVHZXRBdHRyKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLCBIZWFw VHVwbGUgdHVwLAogCQkJCQkJCSBBdHRyTnVtYmVyIGF0dHJpYnV0ZU51bWJlciwgYm9vbCAq aXNOdWxsKTsKIAotZXh0ZXJuIERhdHVtIFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoaW50IGNh Y2hlSWQsIEhlYXBUdXBsZSB0dXAsCitleHRlcm4gRGF0dW0gU3lzQ2FjaGVHZXRBdHRyTm90 TnVsbChTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJZCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkJ CQkJCUF0dHJOdW1iZXIgYXR0cmlidXRlTnVtYmVyKTsKIAotZXh0ZXJuIHVpbnQzMiBHZXRT eXNDYWNoZUhhc2hWYWx1ZShpbnQgY2FjaGVJZCwKK2V4dGVybiB1aW50MzIgR2V0U3lzQ2Fj aGVIYXNoVmFsdWUoU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlSWQsCiAJCQkJCQkJCSAgIERh dHVtIGtleTEsIERhdHVtIGtleTIsIERhdHVtIGtleTMsIERhdHVtIGtleTQpOwogCiAvKiBs aXN0LXNlYXJjaCBpbnRlcmZhY2UuICBVc2VycyBvZiB0aGlzIG11c3QgaW1wb3J0IGNhdGNh Y2hlLmggdG9vICovCiBzdHJ1Y3QgY2F0Y2xpc3Q7Ci1leHRlcm4gc3RydWN0IGNhdGNsaXN0 ICpTZWFyY2hTeXNDYWNoZUxpc3QoaW50IGNhY2hlSWQsIGludCBua2V5cywKK2V4dGVybiBz dHJ1Y3QgY2F0Y2xpc3QgKlNlYXJjaFN5c0NhY2hlTGlzdChTeXNDYWNoZUlkZW50aWZpZXIg Y2FjaGVJZCwgaW50IG5rZXlzLAogCQkJCQkJCQkJCSAgIERhdHVtIGtleTEsIERhdHVtIGtl eTIsIERhdHVtIGtleTMpOwogCi1leHRlcm4gdm9pZCBTeXNDYWNoZUludmFsaWRhdGUoaW50 IGNhY2hlSWQsIHVpbnQzMiBoYXNoVmFsdWUpOworZXh0ZXJuIHZvaWQgU3lzQ2FjaGVJbnZh bGlkYXRlKFN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkLCB1aW50MzIgaGFzaFZhbHVlKTsK IAogZXh0ZXJuIGJvb2wgUmVsYXRpb25JbnZhbGlkYXRlc1NuYXBzaG90c09ubHkoT2lkIHJl bGlkKTsKIGV4dGVybiBib29sIFJlbGF0aW9uSGFzU3lzQ2FjaGUoT2lkIHJlbGlkKTsKLS0g CjIuNDcuMwoK --------------aAV0gy13fUuqjF4z0lHqDt0C--