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 1x51QG-007ZJV-0R for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Sep 2026 13:36:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1x51QF-00F4Yn-0T for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Sep 2026 13:36:07 +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 1x51QE-00F4W1-1f for pgsql-hackers@lists.postgresql.org; Fri, 11 Sep 2026 13:36:06 +0000 Received: from relay2-d.mail.gandi.net ([217.70.183.194]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1x51QB-000000049le-3jfP for pgsql-hackers@lists.postgresql.org; Fri, 11 Sep 2026 13:36:06 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 98D1E3EDB8 for ; Fri, 11 Sep 2026 13:36:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=postgresfriends.org; s=gm1; t=1789133762; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=diR6/OuiVWcromBY9Nw0fN0U2Ix2MVk6U8n25n6cIi4=; b=lz9p5uSYEJ8Cz0Z0p7zE2B35E1wK2TxEiQmuFy3mxIfZBjJf393eZglzWx5xRY3sOZ4omj pWAylWGZUxqEazke+0fWR266Z/GioTGmObVD1ROesrfea90GG4KwtJS/LyMie/vSRcSKXu 1TrTSB0DeU2tqa2XYkCSuC+jHDIha4l2qpiYeZgaYOmGJ2RC2bqOAJT4mjvXTrlPnlTCy7 N68xcruYPUG42iB5fh6LS+ri10m3qcjonhJ0Ls3VJRiVIWxdwb4K2X5IiLFET+PgZPxro5 egY1IZAz31Nx/zncs2/3kU201NVcSNLesSM0YCyQQOWaPPARKVfu3MW3WU7v1Q== Content-Type: multipart/mixed; boundary="------------Kw3VgQAB2yTG3L38pFiaKZml" Message-ID: <37c76707-e6fa-4ee3-b57f-aa0bf1b0bba8@postgresfriends.org> Date: Fri, 11 Sep 2026 15:35:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: PostgreSQL Hackers From: Vik Fearing Subject: Logical Implication X-GND-Sasl: vik@postgresfriends.org X-GND-Score: -100 X-GND-Cause: dmFkZTEb/EAmK7B/udkE1b38l7dZdu/aDDnbBZ8jqBH3yo/Jsi86U5hfJkyDeCJ8FuvbPfoieMptNWETgkQdG+4t8B1lM4yclr0VIyUfU5Y6/+rPZDA6KVeUWeFvllzezKhivZeQeBFiqjvUyji5OdopDgr6vaddkuHdnbbSH1dbyCp7Bif35HLLfFfZIibkTmS7mCuqjklYMfHClMr1UM2cWDXr7Aq8aH3vziRtA/MoSYxn+Uw5RyTDxnpKMeGwlCa4TIrYpSMN1HCUAulei9vwH6/IOIlV32g6ZeEQrtsnVZLsCZo/iIS4DeZUMkZCoqSNJs/foSwb61ciEH7DqoXGwrMmdklzDWCa3ggPD4EYtTeT576oiQICCqkf4VRWMJdpYlYwArGFoxu+5PRXGI0w/1GsZAE6ap+0tIdbdgfifVa+evcYAvRUo1QN8+Eip+lwsMhN1tggjYcDqpgsWYJwHfzr7tkDvNfamsa0QMy1ttLoknBnd2kRlcxR+K4rfW3/C6bwxIa5ZIiSOK1LWX68BVVWYPaERYFCg9g8V6CL+djqm15UpJ4Kpg56JnE8CY6oXM21ZjC6yXywg5CVZtkaI04RN5gLeykUcDNJa0/5e+Xor/KWpLf32dev+AJTH1pwZCrCcHoXZNobGtCFc5r8NEhH6lROyv9Apk1L71DY9IwUGg X-GND-State: clean 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. --------------Kw3VgQAB2yTG3L38pFiaKZml Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi. I would like to intruduce an IMPLIES operator for booleans that reads better than its developed formula.  That is, I think     a IMPLIES b is better in CHECK constraints and elsewhere than     NOT a OR b . I plan on submitting this to the SQL committee as well, but I've learned that they like an implementation to have it first, and I cannot imagine that they would quibble over the keyword used. The first patch is a restructure of the documentation for NOT/AND/OR because IMPLIES is not symmetric about the diagonal and I didn't want it to stand out like a sore thumb. The second patch is the actual implementation. It does not survive a round trip which has precedence with IN being changed to =ANY, BETWEEN changing to <= and >= (BETWEEN SYMMETRIC is even worse), etc; so I don't think that is a problem. Thanks, -- Vik Fearing PS: based off of c1c5d28f4a2 --------------Kw3VgQAB2yTG3L38pFiaKZml Content-Type: text/plain; charset=UTF-8; name="v1-0001-doc-Rearrange-the-logical-operator-truth-tables.patch" Content-Disposition: attachment; filename*0="v1-0001-doc-Rearrange-the-logical-operator-truth-tables.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA5MGY3NzY3YTJiMjZlYmY1MjdiMTljZDQ0Y2IwYTQ3MjI0NmNmNTA4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQGNob3VwcGVzLmNvbT4K RGF0ZTogVGh1LCAxMCBTZXAgMjAyNiAxNDozMDo1MSArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djEgMS8yXSBkb2M6IFJlYXJyYW5nZSB0aGUgbG9naWNhbCBvcGVyYXRvciB0cnV0aCB0YWJs ZXMKClByZXNlbnQgQU5ELCBPUiwgYW5kIE5PVCBhcyBtYXRyaXggdGFibGVzIGluZGV4ZWQg Ynkgb3BlcmFuZCwgaW5zdGVhZCBvZgpvbmUgY29tYmluZWQgcm93LXBlci1jYXNlIHRhYmxl LCBhbmQgbmFtZSB0aGUgdGhpcmQgdHJ1dGggdmFsdWUgdW5rbm93bi4KTWFyayB0aGUgZmly c3QgY29sdW1uIGFzIHJvdyBoZWFkZXJzIHNvIHRoYXQgaXQgaXMgc3R5bGVkIGxpa2UgdGhl IGhlYWRlcgpyb3cuCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwg fCAxMDUgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDU4 IGluc2VydGlvbnMoKyksIDQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9mdW5jL2Z1bmMtbG9naWNhbC5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1s b2dpY2FsLnNnbWwKaW5kZXggNjVlNTBlNjVhODEuLjViYTYzODlkYjU2IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbApAQCAtMzksMTAzICszOSwxMTQgQEAKICAgICAg PHByaW1hcnk+bmVnYXRpb248L3ByaW1hcnk+CiAgICAgPC9pbmRleHRlcm0+CiAKIDxzeW5v cHNpcz4KIDx0eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRlcmFsPkFORDwvbGl0ZXJhbD4gPHR5 cGU+Ym9vbGVhbjwvdHlwZT4gPHJldHVybnZhbHVlPmJvb2xlYW48L3JldHVybnZhbHVlPgog PHR5cGU+Ym9vbGVhbjwvdHlwZT4gPGxpdGVyYWw+T1I8L2xpdGVyYWw+IDx0eXBlPmJvb2xl YW48L3R5cGU+IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KIDxsaXRlcmFs Pk5PVDwvbGl0ZXJhbD4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4gPHJldHVybnZhbHVlPmJvb2xl YW48L3JldHVybnZhbHVlPgogPC9zeW5vcHNpcz4KIAogICAgIDxhY3JvbnltPlNRTDwvYWNy b255bT4gdXNlcyBhIHRocmVlLXZhbHVlZCBsb2dpYyBzeXN0ZW0gd2l0aCB0cnVlLAotICAg IGZhbHNlLCBhbmQgPGxpdGVyYWw+bnVsbDwvbGl0ZXJhbD4sIHdoaWNoIHJlcHJlc2VudHMg PHF1b3RlPnVua25vd248L3F1b3RlPi4KLSAgICBPYnNlcnZlIHRoZSBmb2xsb3dpbmcgdHJ1 dGggdGFibGVzOgorICAgIGZhbHNlLCBhbmQgdW5rbm93bjsgdGhlIG51bGwgdmFsdWUgb2Yg YSA8dHlwZT5ib29sZWFuPC90eXBlPiBhbmQgdGhlIHRydXRoCisgICAgdmFsdWUgdW5rbm93 biBhcmUgb25lIGFuZCB0aGUgc2FtZS4gIEluIHRoZSB0cnV0aCB0YWJsZXMgYmVsb3cgdGhl IGxlZnQKKyAgICBvcGVyYW5kIG9mIGEgYmluYXJ5IG9wZXJhdG9yIHNlbGVjdHMgdGhlIHJv dywgYW5kIHRoZSByaWdodCBvcGVyYW5kIHRoZQorICAgIGNvbHVtbjoKIAotICAgIDxpbmZv cm1hbHRhYmxlPgorICAgIDxpbmZvcm1hbHRhYmxlIHJvd2hlYWRlcj0iZmlyc3Rjb2wiPgog ICAgICA8dGdyb3VwIGNvbHM9IjQiPgogICAgICAgPHRoZWFkPgogICAgICAgIDxyb3c+Ci0g ICAgICAgIDxlbnRyeT48cmVwbGFjZWFibGU+YTwvcmVwbGFjZWFibGU+PC9lbnRyeT4KLSAg ICAgICAgPGVudHJ5PjxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT48L2VudHJ5PgotICAg ICAgICA8ZW50cnk+PHJlcGxhY2VhYmxlPmE8L3JlcGxhY2VhYmxlPiBBTkQgPHJlcGxhY2Vh YmxlPmI8L3JlcGxhY2VhYmxlPjwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT48cmVwbGFjZWFi bGU+YTwvcmVwbGFjZWFibGU+IE9SIDxyZXBsYWNlYWJsZT5iPC9yZXBsYWNlYWJsZT48L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+QU5EPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8 L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+ VW5rbm93bjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICA8L3RoZWFkPgogCiAgICAg ICA8dGJvZHk+CiAgICAgICAgPHJvdz4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5Pgot ICAgICAgICA8ZW50cnk+VFJVRTwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9lbnRy eT4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwv ZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZh bHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5PgogICAgICAgIDwv cm93PgogCiAgICAgICAgPHJvdz4KLSAgICAgICAgPGVudHJ5PlRSVUU8L2VudHJ5PgotICAg ICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5 PgotICAgICAgICA8ZW50cnk+VFJVRTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwv ZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5G YWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CiAgICAgICAgPC9y b3c+CiAKICAgICAgICA8cm93PgotICAgICAgICA8ZW50cnk+VFJVRTwvZW50cnk+Ci0gICAg ICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5Pgot ICAgICAgICA8ZW50cnk+VFJVRTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9l bnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5PgorICAgICAgICA8ZW50cnk+ RmFsc2U8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAgICAg PC9yb3c+CisgICAgICA8L3Rib2R5PgorICAgICA8L3Rncm91cD4KKyAgICA8L2luZm9ybWFs dGFibGU+CiAKKyAgICA8aW5mb3JtYWx0YWJsZSByb3doZWFkZXI9ImZpcnN0Y29sIj4KKyAg ICAgPHRncm91cCBjb2xzPSI0Ij4KKyAgICAgIDx0aGVhZD4KICAgICAgICA8cm93PgotICAg ICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5 PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5PgotICAgICAgICA8ZW50cnk+RkFMU0U8 L2VudHJ5PgorICAgICAgICA8ZW50cnk+T1I8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1 ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRy eT5Vbmtub3duPC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKyAgICAgIDwvdGhlYWQ+CiAKKyAg ICAgIDx0Ym9keT4KICAgICAgICA8cm93PgotICAgICAgICA8ZW50cnk+RkFMU0U8L2VudHJ5 PgotICAgICAgICA8ZW50cnk+TlVMTDwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5GQUxTRTwv ZW50cnk+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRy dWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRy eT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgogICAgICAgIDwv cm93PgogCiAgICAgICAgPHJvdz4KLSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgotICAg ICAgICA8ZW50cnk+TlVMTDwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4K LSAgICAgICAgPGVudHJ5Pk5VTEw8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5GYWxz ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KKyAgICAgICA8L3Jv dz4KKworICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KKyAg ICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50 cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAg ICAgIDwvdGJvZHk+CiAgICAgIDwvdGdyb3VwPgogICAgIDwvaW5mb3JtYWx0YWJsZT4KIAot ICAgIDxpbmZvcm1hbHRhYmxlPgotICAgICA8dGdyb3VwIGNvbHM9IjIiPgorICAgIDxpbmZv cm1hbHRhYmxlIHJvd2hlYWRlcj0iZmlyc3Rjb2wiPgorICAgICA8dGdyb3VwIGNvbHM9IjQi PgogICAgICAgPHRoZWFkPgogICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT48cmVwbGFj ZWFibGU+YTwvcmVwbGFjZWFibGU+PC9lbnRyeT4KLSAgICAgICAgPGVudHJ5Pk5PVCA8cmVw bGFjZWFibGU+YTwvcmVwbGFjZWFibGU+PC9lbnRyeT4KKyAgICAgICAgPGVudHJ5Pk5PVDwv ZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PkZh bHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2VudHJ5PgogICAgICAgIDwv cm93PgogICAgICAgPC90aGVhZD4KIAogICAgICAgPHRib2R5PgogICAgICAgIDxyb3c+Ci0g ICAgICAgIDxlbnRyeT5UUlVFPC9lbnRyeT4KLSAgICAgICAgPGVudHJ5PkZBTFNFPC9lbnRy eT4KLSAgICAgICA8L3Jvdz4KLQotICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5GQUxT RTwvZW50cnk+Ci0gICAgICAgIDxlbnRyeT5UUlVFPC9lbnRyeT4KLSAgICAgICA8L3Jvdz4K LQotICAgICAgIDxyb3c+Ci0gICAgICAgIDxlbnRyeT5OVUxMPC9lbnRyeT4KLSAgICAgICAg PGVudHJ5Pk5VTEw8L2VudHJ5PgorICAgICAgICA8ZW50cnk+PC9lbnRyeT4KKyAgICAgICAg PGVudHJ5PkZhbHNlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAg ICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CiAgICAgICAgPC9yb3c+CiAgICAgICA8L3Ri b2R5PgogICAgICA8L3Rncm91cD4KICAgICA8L2luZm9ybWFsdGFibGU+CiAgICA8L3BhcmE+ CiAKICAgIDxwYXJhPgogICAgIFRoZSBvcGVyYXRvcnMgPGxpdGVyYWw+QU5EPC9saXRlcmFs PiBhbmQgPGxpdGVyYWw+T1I8L2xpdGVyYWw+IGFyZQogICAgIGNvbW11dGF0aXZlLCB0aGF0 IGlzLCB5b3UgY2FuIHN3aXRjaCB0aGUgbGVmdCBhbmQgcmlnaHQgb3BlcmFuZHMKICAgICB3 aXRob3V0IGFmZmVjdGluZyB0aGUgcmVzdWx0LiAgKEhvd2V2ZXIsIGl0IGlzIG5vdCBndWFy YW50ZWVkIHRoYXQKLS0gCjIuNTUuMAoK --------------Kw3VgQAB2yTG3L38pFiaKZml Content-Type: text/plain; charset=UTF-8; name="v1-0002-Add-the-IMPLIES-boolean-operator.patch" Content-Disposition: attachment; filename="v1-0002-Add-the-IMPLIES-boolean-operator.patch" Content-Transfer-Encoding: base64 RnJvbSA0YzY1NTUwZTQ1ZGQzOTAyMDc3ZWQ1ZDM2ZDgxYzRkYjIyYzdiZDk0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaWsgRmVhcmluZyA8dmlrQGNob3VwcGVzLmNvbT4K RGF0ZTogVGh1LCAxMCBTZXAgMjAyNiAxNDozMTowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djEgMi8yXSBBZGQgdGhlIElNUExJRVMgYm9vbGVhbiBvcGVyYXRvcgoKYSBJTVBMSUVTIGIg aXMgbWF0ZXJpYWwgaW1wbGljYXRpb24sIHBhcnNlZCBhcyBhIHJpZ2h0LWFzc29jaWF0aXZl Cm9wZXJhdG9yIGJpbmRpbmcgYmVsb3cgT1IgYW5kIGV4cGFuZGVkIHRvIE5PVCBhIE9SIGIg aW4gdGhlIHBhcnNlciwgc28KdHlwZSBlcnJvcnMgYXJlIHJlcG9ydGVkIGFnYWluc3QgSU1Q TElFUyBpdHNlbGYuCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwg ICB8ICA2NSArKysrKysrKysrKysrKwogZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sICAgICAg ICAgICAgICB8ICAgNiArKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAg ICB8ICAgNCArCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyAgICAgICAgIHwgICA1 ICsrCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgIHwgIDExICsrLQog c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyAgICAgICB8ICAzNSArKysrKysrKwog c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvYm9vbGVhbi5vdXQgfCAxMjIgKysrKysrKysrKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Jvb2xlYW4uc3FsICAgICAgfCAgNDIgKysrKysr KysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAyOTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtbG9naWNhbC5zZ21sIGIv ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1sb2dpY2FsLnNnbWwKaW5kZXggNWJhNjM4OWRiNTYu LjUyZjk3ZGEwNDJiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2lj YWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLWxvZ2ljYWwuc2dtbApAQCAt MzIsMjQgKzMyLDMzIEBACiAgICAgPC9pbmRleHRlcm0+CiAKICAgICA8aW5kZXh0ZXJtPgog ICAgICA8cHJpbWFyeT5kaXNqdW5jdGlvbjwvcHJpbWFyeT4KICAgICA8L2luZGV4dGVybT4K IAogICAgIDxpbmRleHRlcm0+CiAgICAgIDxwcmltYXJ5Pm5lZ2F0aW9uPC9wcmltYXJ5Pgog ICAgIDwvaW5kZXh0ZXJtPgogCisgICAgPGluZGV4dGVybT4KKyAgICAgPHByaW1hcnk+SU1Q TElFUzwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKworICAgIDxpbmRleHRlcm0+Cisg ICAgIDxwcmltYXJ5PmltcGxpY2F0aW9uPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgor CiA8c3lub3BzaXM+CiA8dHlwZT5ib29sZWFuPC90eXBlPiA8bGl0ZXJhbD5BTkQ8L2xpdGVy YWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1ZT5ib29sZWFuPC9yZXR1cm52 YWx1ZT4KIDx0eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRlcmFsPk9SPC9saXRlcmFsPiA8dHlw ZT5ib29sZWFuPC90eXBlPiA8cmV0dXJudmFsdWU+Ym9vbGVhbjwvcmV0dXJudmFsdWU+CiA8 bGl0ZXJhbD5OT1Q8L2xpdGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1 ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKzx0eXBlPmJvb2xlYW48L3R5cGU+IDxsaXRlcmFs PklNUExJRVM8L2xpdGVyYWw+IDx0eXBlPmJvb2xlYW48L3R5cGU+IDxyZXR1cm52YWx1ZT5i b29sZWFuPC9yZXR1cm52YWx1ZT4KIDwvc3lub3BzaXM+CiAKICAgICA8YWNyb255bT5TUUw8 L2Fjcm9ueW0+IHVzZXMgYSB0aHJlZS12YWx1ZWQgbG9naWMgc3lzdGVtIHdpdGggdHJ1ZSwK ICAgICBmYWxzZSwgYW5kIHVua25vd247IHRoZSBudWxsIHZhbHVlIG9mIGEgPHR5cGU+Ym9v bGVhbjwvdHlwZT4gYW5kIHRoZSB0cnV0aAogICAgIHZhbHVlIHVua25vd24gYXJlIG9uZSBh bmQgdGhlIHNhbWUuICBJbiB0aGUgdHJ1dGggdGFibGVzIGJlbG93IHRoZSBsZWZ0CiAgICAg b3BlcmFuZCBvZiBhIGJpbmFyeSBvcGVyYXRvciBzZWxlY3RzIHRoZSByb3csIGFuZCB0aGUg cmlnaHQgb3BlcmFuZCB0aGUKICAgICBjb2x1bW46CiAKICAgICA8aW5mb3JtYWx0YWJsZSBy b3doZWFkZXI9ImZpcnN0Y29sIj4KICAgICAgPHRncm91cCBjb2xzPSI0Ij4KQEAgLTEzOSwx OSArMTQ4LDc1IEBACiAgICAgICAgIDxlbnRyeT48L2VudHJ5PgogICAgICAgICA8ZW50cnk+ RmFsc2U8L2VudHJ5PgogICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CiAgICAgICAgIDxl bnRyeT5Vbmtub3duPC9lbnRyeT4KICAgICAgICA8L3Jvdz4KICAgICAgIDwvdGJvZHk+CiAg ICAgIDwvdGdyb3VwPgogICAgIDwvaW5mb3JtYWx0YWJsZT4KICAgIDwvcGFyYT4KIAorICAg PHBhcmE+CisgICAgVGhlIDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+IG9wZXJhdG9yIGlz IG1hdGVyaWFsIGltcGxpY2F0aW9uOgorICAgIDxyZXBsYWNlYWJsZT5hPC9yZXBsYWNlYWJs ZT4gPGxpdGVyYWw+SU1QTElFUzwvbGl0ZXJhbD4KKyAgICA8cmVwbGFjZWFibGU+YjwvcmVw bGFjZWFibGU+IGlzIGVxdWl2YWxlbnQgdG8gPGxpdGVyYWw+Tk9UPC9saXRlcmFsPgorICAg IDxyZXBsYWNlYWJsZT5hPC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+T1I8L2xpdGVyYWw+Cisg ICAgPHJlcGxhY2VhYmxlPmI8L3JlcGxhY2VhYmxlPiwgYW5kIHJlYWRzIGFzIDxxdW90ZT5p ZgorICAgIDxyZXBsYWNlYWJsZT5hPC9yZXBsYWNlYWJsZT4gdGhlbiA8cmVwbGFjZWFibGU+ YjwvcmVwbGFjZWFibGU+PC9xdW90ZT4uCisgICAgVW5saWtlIDxsaXRlcmFsPkFORDwvbGl0 ZXJhbD4gYW5kIDxsaXRlcmFsPk9SPC9saXRlcmFsPiBpdCBpcyBub3QKKyAgICBjb21tdXRh dGl2ZSwgd2hpY2ggaXMgd2h5IGl0cyB0YWJsZSwgdW5saWtlIHRoZWlycywgaXMgbm90IHN5 bW1ldHJpYworICAgIGFib3V0IHRoZSBkaWFnb25hbDoKKworICAgIDxpbmZvcm1hbHRhYmxl IHJvd2hlYWRlcj0iZmlyc3Rjb2wiPgorICAgICA8dGdyb3VwIGNvbHM9IjQiPgorICAgICAg PHRoZWFkPgorICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5JTVBMSUVTPC9lbnRyeT4K KyAgICAgICAgPGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+RmFsc2U8L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICA8L3RoZWFkPgorCisgICAgICA8dGJvZHk+CisgICAgICAgPHJvdz4KKyAgICAgICAg PGVudHJ5PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAg ICAgIDxlbnRyeT5GYWxzZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5Vbmtub3duPC9lbnRy eT4KKyAgICAgICA8L3Jvdz4KKworICAgICAgIDxyb3c+CisgICAgICAgIDxlbnRyeT5GYWxz ZTwvZW50cnk+CisgICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5 PlRydWU8L2VudHJ5PgorICAgICAgICA8ZW50cnk+VHJ1ZTwvZW50cnk+CisgICAgICAgPC9y b3c+CisKKyAgICAgICA8cm93PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+Cisg ICAgICAgIDxlbnRyeT5UcnVlPC9lbnRyeT4KKyAgICAgICAgPGVudHJ5PlVua25vd248L2Vu dHJ5PgorICAgICAgICA8ZW50cnk+VW5rbm93bjwvZW50cnk+CisgICAgICAgPC9yb3c+Cisg ICAgICA8L3Rib2R5PgorICAgICA8L3Rncm91cD4KKyAgICA8L2luZm9ybWFsdGFibGU+Cisg ICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIDxsaXRlcmFsPklNUExJRVM8L2xpdGVyYWw+ IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGV2ZXJ5IG90aGVyIG9wZXJhdG9yLAorICAgIDxs aXRlcmFsPk9SPC9saXRlcmFsPiBpbmNsdWRlZCwgYW5kIGl0IGlzIHJpZ2h0LWFzc29jaWF0 aXZlLCBzbworICAgIDxsaXRlcmFsPmEgPSAxIElNUExJRVMgYiA9IDIgSU1QTElFUyBjID0g MzwvbGl0ZXJhbD4gbWVhbnMKKyAgICA8bGl0ZXJhbD4oYSA9IDEpIElNUExJRVMgKChiID0g MikgSU1QTElFUyAoYyA9IDMpKTwvbGl0ZXJhbD4uICBTZWUgPHhyZWYKKyAgICBsaW5rZW5k PSJzcWwtcHJlY2VkZW5jZSIvPi4KKyAgIDwvcGFyYT4KKwogICAgPHBhcmE+CiAgICAgVGhl IG9wZXJhdG9ycyA8bGl0ZXJhbD5BTkQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5PUjwvbGl0 ZXJhbD4gYXJlCiAgICAgY29tbXV0YXRpdmUsIHRoYXQgaXMsIHlvdSBjYW4gc3dpdGNoIHRo ZSBsZWZ0IGFuZCByaWdodCBvcGVyYW5kcwogICAgIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBy ZXN1bHQuICAoSG93ZXZlciwgaXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdAogICAgIHRoZSBs ZWZ0IG9wZXJhbmQgaXMgZXZhbHVhdGVkIGJlZm9yZSB0aGUgcmlnaHQgb3BlcmFuZC4gIFNl ZSA8eHJlZgogICAgIGxpbmtlbmQ9InN5bnRheC1leHByZXNzLWV2YWwiLz4gZm9yIG1vcmUg aW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICAgb3JkZXIgb2YgZXZhbHVhdGlvbiBvZiBzdWJl eHByZXNzaW9ucy4pCiAgICA8L3BhcmE+CiAgIDwvc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvc3ludGF4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3ludGF4LnNnbWwKaW5kZXgg Njc0ODI5OTY4NjEuLmJlZTkyOGE4NDE0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lu dGF4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCkBAIC0xMDk2LDIwICsx MDk2LDI2IEBAIENBU1QgKCAnPHJlcGxhY2VhYmxlPnN0cmluZzwvcmVwbGFjZWFibGU+JyBB UyA8cmVwbGFjZWFibGU+dHlwZTwvcmVwbGFjZWFibGU+ICkKICAgICAgICA8ZW50cnk+PHRv a2VuPkFORDwvdG9rZW4+PC9lbnRyeT4KICAgICAgICA8ZW50cnk+bGVmdDwvZW50cnk+CiAg ICAgICAgPGVudHJ5PmxvZ2ljYWwgY29uanVuY3Rpb248L2VudHJ5PgogICAgICAgPC9yb3c+ CiAKICAgICAgIDxyb3c+CiAgICAgICAgPGVudHJ5Pjx0b2tlbj5PUjwvdG9rZW4+PC9lbnRy eT4KICAgICAgICA8ZW50cnk+bGVmdDwvZW50cnk+CiAgICAgICAgPGVudHJ5PmxvZ2ljYWwg ZGlzanVuY3Rpb248L2VudHJ5PgogICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAg ICAgPGVudHJ5Pjx0b2tlbj5JTVBMSUVTPC90b2tlbj48L2VudHJ5PgorICAgICAgIDxlbnRy eT5yaWdodDwvZW50cnk+CisgICAgICAgPGVudHJ5PmxvZ2ljYWwgaW1wbGljYXRpb248L2Vu dHJ5PgorICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+CiAgICA8 L3RhYmxlPgogCiAgICA8cGFyYT4KICAgICBOb3RlIHRoYXQgdGhlIG9wZXJhdG9yIHByZWNl ZGVuY2UgcnVsZXMgYWxzbyBhcHBseSB0byB1c2VyLWRlZmluZWQKICAgICBvcGVyYXRvcnMg dGhhdCBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBidWlsdC1pbiBvcGVyYXRvcnMKICAg ICBtZW50aW9uZWQgYWJvdmUuICBGb3IgZXhhbXBsZSwgaWYgeW91IGRlZmluZSBhCiAgICAg PHF1b3RlPis8L3F1b3RlPiBvcGVyYXRvciBmb3Igc29tZSBjdXN0b20gZGF0YSB0eXBlIGl0 IHdpbGwgaGF2ZQogICAgIHRoZSBzYW1lIHByZWNlZGVuY2UgYXMgdGhlIGJ1aWx0LWluIDxx dW90ZT4rPC9xdW90ZT4gb3BlcmF0b3IsIG5vCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA0 MDk5MDE0MzkyNy4uOWEzNWZmNTNkZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtNjM2 LDIwICs2MzYsMjQgQEAgX291dEFfRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQV9FeHBy ICpub2RlKQogCQkJV1JJVEVfTk9ERV9GSUVMRChuYW1lKTsKIAkJCWJyZWFrOwogCQljYXNl IEFFWFBSX0JFVFdFRU5fU1lNOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIg QkVUV0VFTl9TWU0iKTsKIAkJCVdSSVRFX05PREVfRklFTEQobmFtZSk7CiAJCQlicmVhazsK IAkJY2FzZSBBRVhQUl9OT1RfQkVUV0VFTl9TWU06CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKHN0ciwgIiBOT1RfQkVUV0VFTl9TWU0iKTsKIAkJCVdSSVRFX05PREVfRklFTEQobmFt ZSk7CiAJCQlicmVhazsKKwkJY2FzZSBBRVhQUl9JTVBMSUVTOgorCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhzdHIsICIgSU1QTElFUyIpOworCQkJV1JJVEVfTk9ERV9GSUVMRChuYW1l KTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBBX0V4cHJfS2luZDogJWQiLCAoaW50KSBub2RlLT5raW5kKTsKIAkJCWJyZWFrOwogCX0K IAogCVdSSVRFX05PREVfRklFTEQobGV4cHIpOwogCVdSSVRFX05PREVfRklFTEQocmV4cHIp OwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKHJleHByX2xpc3Rfc3RhcnQpOwogCVdSSVRFX0xP Q0FUSU9OX0ZJRUxEKHJleHByX2xpc3RfZW5kKTsKIAlXUklURV9MT0NBVElPTl9GSUVMRChs b2NhdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IDI4MzlhNzExZjllLi40Y2Mw MTlhMDEyYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAgLTUwNywyMCArNTA3LDI1IEBA IF9yZWFkQV9FeHByKFJlYWROb2RlQ29udGV4dCAqY3R4KQogCWVsc2UgaWYgKGxlbmd0aCA9 PSAxMSAmJiBzdHJuY21wKHRva2VuLCAiQkVUV0VFTl9TWU0iLCAxMSkgPT0gMCkKIAl7CiAJ CWxvY2FsX25vZGUtPmtpbmQgPSBBRVhQUl9CRVRXRUVOX1NZTTsKIAkJUkVBRF9OT0RFX0ZJ RUxEKG5hbWUpOwogCX0KIAllbHNlIGlmIChsZW5ndGggPT0gMTUgJiYgc3RybmNtcCh0b2tl biwgIk5PVF9CRVRXRUVOX1NZTSIsIDE1KSA9PSAwKQogCXsKIAkJbG9jYWxfbm9kZS0+a2lu ZCA9IEFFWFBSX05PVF9CRVRXRUVOX1NZTTsKIAkJUkVBRF9OT0RFX0ZJRUxEKG5hbWUpOwog CX0KKwllbHNlIGlmIChsZW5ndGggPT0gNyAmJiBzdHJuY21wKHRva2VuLCAiSU1QTElFUyIs IDcpID09IDApCisJeworCQlsb2NhbF9ub2RlLT5raW5kID0gQUVYUFJfSU1QTElFUzsKKwkJ UkVBRF9OT0RFX0ZJRUxEKG5hbWUpOworCX0KIAllbHNlIGlmIChsZW5ndGggPT0gNSAmJiBz dHJuY21wKHRva2VuLCAiOm5hbWUiLCA1KSA9PSAwKQogCXsKIAkJbG9jYWxfbm9kZS0+a2lu ZCA9IEFFWFBSX09QOwogCQlsb2NhbF9ub2RlLT5uYW1lID0gbm9kZVJlYWQoY3R4LCBOVUxM LCAwKTsKIAl9CiAJZWxzZQogCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEFfRXhwciBr aW5kOiBcIiUuKnNcIiIsIGxlbmd0aCwgdG9rZW4pOwogCiAJUkVBRF9OT0RFX0ZJRUxEKGxl eHByKTsKIAlSRUFEX05PREVfRklFTEQocmV4cHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMTAx NWQzMDNmYmYuLjZjMGM5OGQzYTM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTc0NCwyMSArNzQ0 LDIyIEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJRVNDQVBFIEVWRU5UIEVYQ0VQ VCBFWENMVURFIEVYQ0xVRElORyBFWENMVVNJVkUgRVhFQ1VURSBFWElTVFMgRVhQTEFJTgog CUVYUFJFU1NJT04gRVhURU5TSU9OIEVYVEVSTkFMIEVYVFJBQ1QKIAogCUZBTFNFX1AgRkFN SUxZIEZFVENIIEZJTFRFUiBGSU5BTElaRSBGSVJTVF9QIEZMT0FUX1AgRk9MTE9XSU5HIEZP UgogCUZPUkNFIEZPUkVJR04gRk9STUFUIEZPUldBUkQgRlJFRVpFIEZST00gRlVMTCBGVU5D VElPTiBGVU5DVElPTlMKIAogCUdFTkVSQVRFRCBHTE9CQUwgR1JBTlQgR1JBTlRFRCBHUkVB VEVTVCBHUk9VUF9QIEdST1VQSU5HIEdST1VQUwogCiAJSEFORExFUiBIQVZJTkcgSEVBREVS X1AgSE9MRCBIT1VSX1AKIAotCUlERU5USVRZX1AgSUZfUCBJR05PUkVfUCBJTElLRSBJTU1F RElBVEUgSU1NVVRBQkxFIElNUExJQ0lUX1AgSU1QT1JUX1AgSU5fUCBJTkNMVURFCisJSURF TlRJVFlfUCBJRl9QIElHTk9SRV9QIElMSUtFIElNTUVESUFURSBJTU1VVEFCTEUgSU1QTElD SVRfUCBJTVBMSUVTCisJSU1QT1JUX1AgSU5fUCBJTkNMVURFCiAJSU5DTFVESU5HIElOQ1JF TUVOVCBJTkRFTlQgSU5ERVggSU5ERVhFUyBJTkhFUklUIElOSEVSSVRTIElOSVRJQUxMWSBJ TkxJTkVfUAogCUlOTkVSX1AgSU5PVVQgSU5QVVRfUCBJTlNFTlNJVElWRSBJTlNFUlQgSU5T VEVBRCBJTlRfUCBJTlRFR0VSCiAJSU5URVJTRUNUIElOVEVSVkFMIElOVE8gSU5WT0tFUiBJ UyBJU05VTEwgSVNPTEFUSU9OCiAKIAlKT0lOIEpTT04gSlNPTl9BUlJBWSBKU09OX0FSUkFZ QUdHIEpTT05fRVhJU1RTIEpTT05fT0JKRUNUIEpTT05fT0JKRUNUQUdHCiAJSlNPTl9RVUVS WSBKU09OX1NDQUxBUiBKU09OX1NFUklBTElaRSBKU09OX1RBQkxFIEpTT05fVkFMVUUKIAog CUtFRVAgS0VZIEtFWVMKIAogCUxBQkVMIExBTkdVQUdFIExBUkdFX1AgTEFTVF9QIExBVEVS QUxfUApAQCAtODM5LDIwICs4NDAsMjEgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVW aWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK ICV0b2tlbgkJTU9ERV9UWVBFX05BTUUKICV0b2tlbgkJTU9ERV9QTFBHU1FMX0VYUFIKICV0 b2tlbgkJTU9ERV9QTFBHU1FMX0FTU0lHTjEKICV0b2tlbgkJTU9ERV9QTFBHU1FMX0FTU0lH TjIKICV0b2tlbgkJTU9ERV9QTFBHU1FMX0FTU0lHTjMKIAogCiAvKiBQcmVjZWRlbmNlOiBs b3dlc3QgdG8gaGlnaGVzdCAqLwogJWxlZnQJCVVOSU9OIEVYQ0VQVAogJWxlZnQJCUlOVEVS U0VDVAorJXJpZ2h0CQlJTVBMSUVTCiAlbGVmdAkJT1IKICVsZWZ0CQlBTkQKICVyaWdodAkJ Tk9UCiAlbm9uYXNzb2MJSVMgSVNOVUxMIE5PVE5VTEwJLyogSVMgc2V0cyBwcmVjZWRlbmNl IGZvciBJUyBOVUxMLCBldGMgKi8KICVub25hc3NvYwknPCcgJz4nICc9JyBMRVNTX0VRVUFM UyBHUkVBVEVSX0VRVUFMUyBOT1RfRVFVQUxTCiAlbm9uYXNzb2MJQkVUV0VFTiBJTl9QIExJ S0UgSUxJS0UgU0lNSUxBUiBOT1RfTEEKICVub25hc3NvYwlFU0NBUEUJCQkvKiBFU0NBUEUg bXVzdCBiZSBqdXN0IGFib3ZlIExJS0UvSUxJS0UvU0lNSUxBUiAqLwogCiAvKgogICogU29t ZXRpbWVzIGl0IGlzIG5lY2Vzc2FyeSB0byBhc3NpZ24gcHJlY2VkZW5jZSB0byBrZXl3b3Jk cyB0aGF0IGFyZSBub3QKQEAgLTE1NDY3LDIwICsxNTQ2OSwyNSBAQCBhX2V4cHI6CQljX2V4 cHIJCQkJCQkJCQl7ICQkID0gJDE7IH0KIAogCQkJfCBhX2V4cHIgcXVhbF9PcCBhX2V4cHIJ CQkJJXByZWMgT3AKIAkJCQl7ICQkID0gKE5vZGUgKikgbWFrZUFfRXhwcihBRVhQUl9PUCwg JDIsICQxLCAkMywgQDIpOyB9CiAJCQl8IHF1YWxfT3AgYV9leHByCQkJCQklcHJlYyBPcAog CQkJCXsgJCQgPSAoTm9kZSAqKSBtYWtlQV9FeHByKEFFWFBSX09QLCAkMSwgTlVMTCwgJDIs IEAxKTsgfQogCiAJCQl8IGFfZXhwciBBTkQgYV9leHByCiAJCQkJeyAkJCA9IG1ha2VBbmRF eHByKCQxLCAkMywgQDIpOyB9CiAJCQl8IGFfZXhwciBPUiBhX2V4cHIKIAkJCQl7ICQkID0g bWFrZU9yRXhwcigkMSwgJDMsIEAyKTsgfQorCQkJfCBhX2V4cHIgSU1QTElFUyBhX2V4cHIK KwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9JTVBM SUVTLCAiSU1QTElFUyIsCisJCQkJCQkJCQkJCQkgICAkMSwgJDMsIEAyKTsKKwkJCQl9CiAJ CQl8IE5PVCBhX2V4cHIKIAkJCQl7ICQkID0gbWFrZU5vdEV4cHIoJDIsIEAxKTsgfQogCQkJ fCBOT1RfTEEgYV9leHByCQkJCQkJJXByZWMgTk9UCiAJCQkJeyAkJCA9IG1ha2VOb3RFeHBy KCQyLCBAMSk7IH0KIAogCQkJfCBhX2V4cHIgTElLRSBhX2V4cHIKIAkJCQl7CiAJCQkJCSQk ID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9MSUtFLCAifn4iLAogCQkJCQkJ CQkJCQkJICAgJDEsICQzLCBAMik7CiAJCQkJfQpAQCAtMTgyODMsMjAgKzE4MjkwLDIxIEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgSEFORExFUgogCQkJfCBIRUFERVJfUAogCQkJ fCBIT0xECiAJCQl8IEhPVVJfUAogCQkJfCBJREVOVElUWV9QCiAJCQl8IElGX1AKIAkJCXwg SUdOT1JFX1AKIAkJCXwgSU1NRURJQVRFCiAJCQl8IElNTVVUQUJMRQogCQkJfCBJTVBMSUNJ VF9QCisJCQl8IElNUExJRVMKIAkJCXwgSU1QT1JUX1AKIAkJCXwgSU5DTFVERQogCQkJfCBJ TkNMVURJTkcKIAkJCXwgSU5DUkVNRU5UCiAJCQl8IElOREVOVAogCQkJfCBJTkRFWAogCQkJ fCBJTkRFWEVTCiAJCQl8IElOSEVSSVQKIAkJCXwgSU5IRVJJVFMKIAkJCXwgSU5MSU5FX1AK QEAgLTE4ODc2LDIwICsxODg4NCwyMSBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IEdS T1VQUwogCQkJfCBIQU5ETEVSCiAJCQl8IEhFQURFUl9QCiAJCQl8IEhPTEQKIAkJCXwgSURF TlRJVFlfUAogCQkJfCBJRl9QCiAJCQl8IElMSUtFCiAJCQl8IElNTUVESUFURQogCQkJfCBJ TU1VVEFCTEUKIAkJCXwgSU1QTElDSVRfUAorCQkJfCBJTVBMSUVTCiAJCQl8IElNUE9SVF9Q CiAJCQl8IElOX1AKIAkJCXwgSU5DTFVERQogCQkJfCBJTkNMVURJTkcKIAkJCXwgSU5DUkVN RU5UCiAJCQl8IElOREVOVAogCQkJfCBJTkRFWAogCQkJfCBJTkRFWEVTCiAJCQl8IElOSEVS SVQKIAkJCXwgSU5IRVJJVFMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IGU0YWNj Njc4NTFiLi41NDAxODllNDNlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC00 NywyMCArNDcsMjEgQEAgYm9vbAkJVHJhbnNmb3JtX251bGxfZXF1YWxzID0gZmFsc2U7CiAK IHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKmV4cHIpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybVBhcmFtUmVmKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgUGFyYW1SZWYgKnByZWYpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFF eHByT3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpOwogc3RhdGljIE5vZGUgKnRy YW5zZm9ybUFFeHByT3BBbnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIgKmEpOwogc3Rh dGljIE5vZGUgKnRyYW5zZm9ybUFFeHByT3BBbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4 cHIgKmEpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFFeHByRGlzdGluY3QoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBX0V4cHIgKmEpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFFeHByTnVs bElmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKTsKIHN0YXRpYyBOb2RlICp0cmFu c2Zvcm1BRXhwckluKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQV9FeHByICphKTsKIHN0YXRpYyBO b2RlICp0cmFuc2Zvcm1BRXhwckJldHdlZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBX0V4cHIg KmEpOworc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFFeHBySW1wbGllcyhQYXJzZVN0YXRlICpw c3RhdGUsIEFfRXhwciAqYSk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtTWVyZ2VTdXBwb3J0 RnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsIE1lcmdlU3VwcG9ydEZ1bmMgKmYpOwogc3RhdGlj IE5vZGUgKnRyYW5zZm9ybUJvb2xFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQm9vbEV4cHIg KmEpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUZ1bmNDYWxsKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgRnVuY0NhbGwgKmZuKTsKIHN0YXRpYyBOb2RlICp0cmFuc2Zvcm1NdWx0aUFzc2lnblJl ZihQYXJzZVN0YXRlICpwc3RhdGUsIE11bHRpQXNzaWduUmVmICptYXJlZik7CiBzdGF0aWMg Tm9kZSAqdHJhbnNmb3JtQ2FzZUV4cHIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDYXNlRXhwciAq Yyk7CiBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3RhdGUs IFN1YkxpbmsgKnN1YmxpbmspOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUFycmF5RXhwcihQ YXJzZVN0YXRlICpwc3RhdGUsIEFfQXJyYXlFeHByICphLAogCQkJCQkJCQlPaWQgYXJyYXlf dHlwZSwgT2lkIGVsZW1lbnRfdHlwZSwgaW50MzIgdHlwbW9kKTsKIHN0YXRpYyBOb2RlICp0 cmFuc2Zvcm1Sb3dFeHByKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUm93RXhwciAqciwgYm9vbCBh bGxvd0RlZmF1bHQpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUNvYWxlc2NlRXhwcihQYXJz ZVN0YXRlICpwc3RhdGUsIENvYWxlc2NlRXhwciAqYyk7CkBAIC0yMDYsMjAgKzIwNywyMyBA QCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIp CiAJCQkJCWNhc2UgQUVYUFJfU0lNSUxBUjoKIAkJCQkJCS8qIHdlIGNhbiB0cmFuc2Zvcm0g dGhlc2UganVzdCBsaWtlIEFFWFBSX09QICovCiAJCQkJCQlyZXN1bHQgPSB0cmFuc2Zvcm1B RXhwck9wKHBzdGF0ZSwgYSk7CiAJCQkJCQlicmVhazsKIAkJCQkJY2FzZSBBRVhQUl9CRVRX RUVOOgogCQkJCQljYXNlIEFFWFBSX05PVF9CRVRXRUVOOgogCQkJCQljYXNlIEFFWFBSX0JF VFdFRU5fU1lNOgogCQkJCQljYXNlIEFFWFBSX05PVF9CRVRXRUVOX1NZTToKIAkJCQkJCXJl c3VsdCA9IHRyYW5zZm9ybUFFeHByQmV0d2Vlbihwc3RhdGUsIGEpOwogCQkJCQkJYnJlYWs7 CisJCQkJCWNhc2UgQUVYUFJfSU1QTElFUzoKKwkJCQkJCXJlc3VsdCA9IHRyYW5zZm9ybUFF eHBySW1wbGllcyhwc3RhdGUsIGEpOworCQkJCQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6CiAJ CQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEFfRXhwciBraW5kOiAlZCIsIGEtPmtp bmQpOwogCQkJCQkJcmVzdWx0ID0gTlVMTDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwog CQkJCQkJYnJlYWs7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJfQogCiAJCWNhc2UgVF9Cb29s RXhwcjoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybUJvb2xFeHByKHBzdGF0ZSwgKEJvb2xFeHBy ICopIGV4cHIpOwpAQCAtMTQ0MiwyMCArMTQ0Niw1MSBAQCB0cmFuc2Zvcm1Cb29sRXhwcihQ YXJzZVN0YXRlICpwc3RhdGUsIEJvb2xFeHByICphKQogCQlOb2RlCSAgICphcmcgPSAoTm9k ZSAqKSBsZmlyc3QobGMpOwogCiAJCWFyZyA9IHRyYW5zZm9ybUV4cHJSZWN1cnNlKHBzdGF0 ZSwgYXJnKTsKIAkJYXJnID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCBhcmcsIG9wbmFt ZSk7CiAJCWFyZ3MgPSBsYXBwZW5kKGFyZ3MsIGFyZyk7CiAJfQogCiAJcmV0dXJuIChOb2Rl ICopIG1ha2VCb29sRXhwcihhLT5ib29sb3AsIGFyZ3MsIGEtPmxvY2F0aW9uKTsKIH0KIAor LyoKKyAqIFRyYW5zZm9ybSAiYSBJTVBMSUVTIGIiIGludG8gdGhlIGVxdWl2YWxlbnQgIk5P VCBhIE9SIGIiLgorICoKKyAqIFdlIGV4cGFuZCB0aGlzIGhlcmUgcmF0aGVyIHRoYW4gaW4g Z3JhbS55IHNvIHRoYXQgYSBub24tYm9vbGVhbiBvcGVyYW5kIGlzCisgKiBjb21wbGFpbmVk IG9mIGluIHRlcm1zIG9mIElNUExJRVMsIHJhdGhlciB0aGFuIGluIHRlcm1zIG9mIHRoZSBO T1Qgb3IgT1IKKyAqIHRoYXQgdGhlIGNvbnN0cnVjdCBoYXBwZW5zIHRvIGJlIGJ1aWx0IGZy b20uCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUFFeHBySW1wbGllcyhQYXJzZVN0 YXRlICpwc3RhdGUsIEFfRXhwciAqYSkKK3sKKwlOb2RlCSAgICpsZXhwcjsKKwlOb2RlCSAg ICpyZXhwcjsKKworCWxleHByID0gdHJhbnNmb3JtRXhwclJlY3Vyc2UocHN0YXRlLCBhLT5s ZXhwcik7CisJcmV4cHIgPSB0cmFuc2Zvcm1FeHByUmVjdXJzZShwc3RhdGUsIGEtPnJleHBy KTsKKworCWxleHByID0gY29lcmNlX3RvX2Jvb2xlYW4ocHN0YXRlLCBsZXhwciwgIklNUExJ RVMiKTsKKwlyZXhwciA9IGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgcmV4cHIsICJJTVBM SUVTIik7CisKKwkvKgorCSAqIEVhY2ggb3BlcmFuZCBhcHBlYXJzIGV4YWN0bHkgb25jZSBp biB0aGUgZXhwYW5zaW9uLCBzbyB1bmxpa2UgQkVUV0VFTgorCSAqIHRoaXMgZG9lcyBub3Qg cmlzayBldmFsdWF0aW5nIGFueXRoaW5nIHR3aWNlLgorCSAqLworCXJldHVybiAoTm9kZSAq KSBtYWtlQm9vbEV4cHIoT1JfRVhQUiwKKwkJCQkJCQkJIGxpc3RfbWFrZTIobWFrZUJvb2xF eHByKE5PVF9FWFBSLAorCQkJCQkJCQkJCQkJCQkgbGlzdF9tYWtlMShsZXhwciksCisJCQkJ CQkJCQkJCQkJCSBleHByTG9jYXRpb24obGV4cHIpKSwKKwkJCQkJCQkJCQkJcmV4cHIpLAor CQkJCQkJCQkgYS0+bG9jYXRpb24pOworfQorCiBzdGF0aWMgTm9kZSAqCiB0cmFuc2Zvcm1G dW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIEZ1bmNDYWxsICpmbikKIHsKIAlOb2RlCSAg ICpsYXN0X3NyZiA9IHBzdGF0ZS0+cF9sYXN0X3NyZjsKIAlMaXN0CSAgICp0YXJnczsKIAlM aXN0Q2VsbCAgICphcmdzOwogCiAJLyogVHJhbnNmb3JtIHRoZSBsaXN0IG9mIGFyZ3VtZW50 cyAuLi4gKi8KIAl0YXJncyA9IE5JTDsKIAlmb3JlYWNoKGFyZ3MsIGZuLT5hcmdzKQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkxMGVlZjkzNmYxLi45ODUzMmIwMDdhMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzM4LDIwICszMzgsMjEgQEAgdHlwZWRlZiBl bnVtIEFfRXhwcl9LaW5kCiAJQUVYUFJfTk9UX0RJU1RJTkNULAkJCS8qIElTIE5PVCBESVNU SU5DVCBGUk9NIC0gbmFtZSBtdXN0IGJlICI9IiAqLwogCUFFWFBSX05VTExJRiwJCQkJLyog TlVMTElGIC0gbmFtZSBtdXN0IGJlICI9IiAqLwogCUFFWFBSX0lOLAkJCQkJLyogW05PVF0g SU4gLSBuYW1lIG11c3QgYmUgIj0iIG9yICI8PiIgKi8KIAlBRVhQUl9MSUtFLAkJCQkJLyog W05PVF0gTElLRSAtIG5hbWUgbXVzdCBiZSAifn4iIG9yICIhfn4iICovCiAJQUVYUFJfSUxJ S0UsCQkJCS8qIFtOT1RdIElMSUtFIC0gbmFtZSBtdXN0IGJlICJ+fioiIG9yICIhfn4qIiAq LwogCUFFWFBSX1NJTUlMQVIsCQkJCS8qIFtOT1RdIFNJTUlMQVIgLSBuYW1lIG11c3QgYmUg In4iIG9yICIhfiIgKi8KIAlBRVhQUl9CRVRXRUVOLAkJCQkvKiBuYW1lIG11c3QgYmUgIkJF VFdFRU4iICovCiAJQUVYUFJfTk9UX0JFVFdFRU4sCQkJLyogbmFtZSBtdXN0IGJlICJOT1Qg QkVUV0VFTiIgKi8KIAlBRVhQUl9CRVRXRUVOX1NZTSwJCQkvKiBuYW1lIG11c3QgYmUgIkJF VFdFRU4gU1lNTUVUUklDIiAqLwogCUFFWFBSX05PVF9CRVRXRUVOX1NZTSwJCS8qIG5hbWUg bXVzdCBiZSAiTk9UIEJFVFdFRU4gU1lNTUVUUklDIiAqLworCUFFWFBSX0lNUExJRVMsCQkJ CS8qIG5hbWUgbXVzdCBiZSAiSU1QTElFUyIgKi8KIH0gQV9FeHByX0tpbmQ7CiAKIHR5cGVk ZWYgc3RydWN0IEFfRXhwcgogewogCXBnX25vZGVfYXR0cihjdXN0b21fcmVhZF93cml0ZSkK IAogCU5vZGVUYWcJCXR5cGU7CiAJQV9FeHByX0tpbmQga2luZDsJCQkvKiBzZWUgYWJvdmUg Ki8KIAlMaXN0CSAgICpuYW1lOwkJCS8qIHBvc3NpYmx5LXF1YWxpZmllZCBuYW1lIG9mIG9w ZXJhdG9yICovCiAJTm9kZQkgICAqbGV4cHI7CQkJLyogbGVmdCBhcmd1bWVudCwgb3IgTlVM TCBpZiBub25lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0Lmgg Yi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggYmVkYTdhMjIzODUuLmJkZDY1 ODA5YmY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0yMDAsMjAgKzIwMCwyMSBAQCBQR19L RVlXT1JEKCJoYXZpbmciLCBIQVZJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQog UEdfS0VZV09SRCgiaGVhZGVyIiwgSEVBREVSX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoImhvbGQiLCBIT0xELCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJob3VyIiwgSE9VUl9QLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgiaWRlbnRpdHkiLCBJREVOVElUWV9QLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpZiIsIElGX1As IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImlnbm9yZSIs IElHTk9SRV9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgi aWxpa2UiLCBJTElLRSwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImltbWVkaWF0ZSIsIElNTUVESUFURSwgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW1tdXRhYmxlIiwgSU1NVVRBQkxFLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbXBsaWNpdCIsIElNUExJ Q0lUX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoImlt cGxpZXMiLCBJTVBMSUVTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJpbXBvcnQiLCBJTVBPUlRfUCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiaW4iLCBJTl9QLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiaW5jbHVkZSIsIElOQ0xVREUsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImluY2x1ZGluZyIsIElOQ0xVRElORywgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5jcmVtZW50Iiwg SU5DUkVNRU5ULCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJpbmRlbnQiLCBJTkRFTlQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoImluZGV4IiwgSU5ERVgsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoImluZGV4ZXMiLCBJTkRFWEVTLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbmhlcml0IiwgSU5IRVJJVCwgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5oZXJpdHMiLCBJTkhFUklU UywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ib29sZWFuLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvYm9vbGVhbi5vdXQKaW5kZXggMGU5OWViN2ZmYzAuLjgwNTY0MWYzOGRhIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Jvb2xlYW4ub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYm9vbGVhbi5vdXQKQEAgLTU1OSwyMCArNTU5LDE0 MiBAQCBTRUxFQ1QgaXN0cnVlIE9SIGlzZmFsc2UgT1IgaXNudWwgRlJPTSBib29sdGJsNDsK IC0tLS0tLS0tLS0KICB0CiAoMSByb3cpCiAKIFNFTEVDVCBpc251bCBPUiBpc3RydWUgT1Ig aXNmYWxzZSBGUk9NIGJvb2x0Ymw0OwogID9jb2x1bW4/IAogLS0tLS0tLS0tLQogIHQKICgx IHJvdykKIAorLS0gSW1wbGljYXRpb246ICJhIElNUExJRVMgYiIgaXMgIk5PVCBhIE9SIGIi LiAgSXQgaXMgbm90IGNvbW11dGF0aXZlLCBzbyBhbGwKKy0tIG5pbmUgY29tYmluYXRpb25z IG9mIHRocmVlLXZhbHVlZCBsb2dpYyBoYXZlIHRvIGJlIGNoZWNrZWQuCitTRUxFQ1QgaXN0 cnVlIElNUExJRVMgaXN0cnVlLCBpc3RydWUgSU1QTElFUyBpc2ZhbHNlLCBpc3RydWUgSU1Q TElFUyBpc251bAorICBGUk9NIGJvb2x0Ymw0OworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAg fCBmICAgICAgICB8IChudWxsKQorKDEgcm93KQorCitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVT IGlzdHJ1ZSwgaXNmYWxzZSBJTVBMSUVTIGlzZmFsc2UsIGlzZmFsc2UgSU1QTElFUyBpc251 bAorICBGUk9NIGJvb2x0Ymw0OworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCB0ICAgICAg ICB8IHQKKygxIHJvdykKKworU0VMRUNUIGlzbnVsIElNUExJRVMgaXN0cnVlLCBpc251bCBJ TVBMSUVTIGlzZmFsc2UsIGlzbnVsIElNUExJRVMgaXNudWwKKyAgRlJPTSBib29sdGJsNDsK KyA/Y29sdW1uPyB8ID9jb2x1bW4/IHwgP2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHQgICAgICAgIHwgKG51bGwpICAgfCAobnVsbCkKKygxIHJvdykK KworLS0gdGhlIHNhbWUsIGFzIGNvbnN0YW50cywgc28gdGhhdCBjb25zdGFudCBmb2xkaW5n IGlzIGV4ZXJjaXNlZCB0b28KK1NFTEVDVCB0cnVlIElNUExJRVMgdHJ1ZSwgdHJ1ZSBJTVBM SUVTIGZhbHNlLCB0cnVlIElNUExJRVMgbnVsbDsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/IHwg P2NvbHVtbj8gCistLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHQgICAgICAg IHwgZiAgICAgICAgfCAobnVsbCkKKygxIHJvdykKKworU0VMRUNUIGZhbHNlIElNUExJRVMg dHJ1ZSwgZmFsc2UgSU1QTElFUyBmYWxzZSwgZmFsc2UgSU1QTElFUyBudWxsOworID9jb2x1 bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgdCAgICAgICAgfCB0ICAgICAgICB8IHQKKygxIHJvdykKKworU0VMRUNUIG51 bGwgSU1QTElFUyB0cnVlLCBudWxsIElNUExJRVMgZmFsc2UsIG51bGw6OmJvb2wgSU1QTElF UyBudWxsOworID9jb2x1bW4/IHwgP2NvbHVtbj8gfCA/Y29sdW1uPyAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCAobnVsbCkgICB8IChudWxsKQor KDEgcm93KQorCistLSBJTVBMSUVTIGlzIHJpZ2h0LWFzc29jaWF0aXZlOiBmYWxzZSBJTVBM SUVTICh0cnVlIElNUExJRVMgZmFsc2UpLCByYXRoZXIKKy0tIHRoYW4gKGZhbHNlIElNUExJ RVMgdHJ1ZSkgSU1QTElFUyBmYWxzZQorU0VMRUNUIGlzZmFsc2UgSU1QTElFUyBpc3RydWUg SU1QTElFUyBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgdAorKDEgcm93KQorCistLSBhbmQgYmluZHMgbG9vc2VyIHRoYW4gT1IsIEFORCwgTk9U LCB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgYW5kIElTCitTRUxFQ1QgaXN0cnVlIE9SIGlz ZmFsc2UgSU1QTElFUyBpc2ZhbHNlIEZST00gYm9vbHRibDQ7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgZgorKDEgcm93KQorCitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzZmFsc2Ug QU5EIGlzZmFsc2UgRlJPTSBib29sdGJsNDsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCBOT1QgaXN0cnVlIElNUExJRVMgaXN0cnVlIEZST00gYm9v bHRibDQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1Qg MSA9IDEgSU1QTElFUyAyID0gMzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSBy b3cpCisKK1NFTEVDVCBpc3RydWUgSU1QTElFUyBpc251bCBJUyBOVUxMIEZST00gYm9vbHRi bDQ7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCistLSBub24tYm9v bGVhbiBvcGVyYW5kcyBhcmUgcmVwb3J0ZWQgaW4gdGVybXMgb2YgSU1QTElFUywgbm90IG9m IGl0cyBleHBhbnNpb24KK1NFTEVDVCAxIElNUExJRVMgdHJ1ZTsgICAgICAgICAgICAgICAg ICAtLSBlcnJvcgorRVJST1I6ICBhcmd1bWVudCBvZiBJTVBMSUVTIG11c3QgYmUgdHlwZSBi b29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitMSU5FIDE6IFNFTEVDVCAxIElNUExJRVMgdHJ1 ZTsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCB0cnVlIElNUExJRVMgMTsgICAgICAgICAg ICAgICAgICAtLSBlcnJvcgorRVJST1I6ICBhcmd1bWVudCBvZiBJTVBMSUVTIG11c3QgYmUg dHlwZSBib29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitMSU5FIDE6IFNFTEVDVCB0cnVlIElN UExJRVMgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSB0aGUgY29uc3Ry dWN0IGlzIGV4cGFuZGVkIGR1cmluZyBwYXJzZSBhbmFseXNpcywgc28gdGhpcyBpcyB3aGF0 IGlzIHN0b3JlZAorQ1JFQVRFIFZJRVcgYm9vbHZpZXcgQVMgU0VMRUNUIGlzdHJ1ZSBJTVBM SUVTIGlzbnVsIEFTIGkgRlJPTSBib29sdGJsNDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZign Ym9vbHZpZXcnLCB0cnVlKTsKKyAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIE5PVCBpc3Ry dWUgT1IgaXNudWwgQVMgaSsKKyAgICBGUk9NIGJvb2x0Ymw0OworKDEgcm93KQorCitEUk9Q IFZJRVcgYm9vbHZpZXc7CistLSBJTVBMSUVTIGlzIHVucmVzZXJ2ZWQsIHNvIGl0IHJlbWFp bnMgdXNhYmxlIGFzIGFuIGlkZW50aWZpZXIKK0NSRUFURSBUQUJMRSBpbXBsaWVzIChpbXBs aWVzIGJvb2wpOworSU5TRVJUIElOVE8gaW1wbGllcyBWQUxVRVMgKGZhbHNlKTsKK1NFTEVD VCBpbXBsaWVzIElNUExJRVMgaW1wbGllcyBGUk9NIGltcGxpZXM7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIFRBQkxFIGltcGxpZXM7CitTRUxFQ1Qg MSBBUyBpbXBsaWVzOworIGltcGxpZXMgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cp CisKK1NFTEVDVCAxIGltcGxpZXM7CisgaW1wbGllcyAKKy0tLS0tLS0tLQorICAgICAgIDEK KygxIHJvdykKKwogLS0gQ2FzdHMKIFNFTEVDVCAwOjpib29sZWFuOwogIGJvb2wgCiAtLS0t LS0KICBmCiAoMSByb3cpCiAKIFNFTEVDVCAxOjpib29sZWFuOwogIGJvb2wgCiAtLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Jvb2xlYW4uc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvYm9vbGVhbi5zcWwKaW5kZXggODVjNmIwMTk4ODIuLjA4MjY1YjUz MWUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29sZWFuLnNxbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ib29sZWFuLnNxbApAQCAtMjQzLDIwICsyNDMsNjIg QEAgU0VMRUNUIGlzbnVsIEFORCBpc3RydWUgQU5EIGlzZmFsc2UgRlJPTSBib29sdGJsNDsK IAogLS0gT1IgZXhwcmVzc2lvbiBuZWVkIHRvIHJldHVybiBudWxsIGlmIHRoZXJlJ3MgYW55 IG51bGxzIGFuZCBub25lCiAtLSBvZiB0aGUgdmFsdWUgaXMgdHJ1ZQogU0VMRUNUIGlzZmFs c2UgT1IgaXNudWwgT1IgaXNmYWxzZSBGUk9NIGJvb2x0Ymw0OwogU0VMRUNUIGlzZmFsc2Ug T1IgaXNmYWxzZSBPUiBpc251bCBGUk9NIGJvb2x0Ymw0OwogU0VMRUNUIGlzbnVsIE9SIGlz ZmFsc2UgT1IgaXNmYWxzZSBGUk9NIGJvb2x0Ymw0OwogU0VMRUNUIGlzZmFsc2UgT1IgaXNu dWwgT1IgaXN0cnVlIEZST00gYm9vbHRibDQ7CiBTRUxFQ1QgaXN0cnVlIE9SIGlzZmFsc2Ug T1IgaXNudWwgRlJPTSBib29sdGJsNDsKIFNFTEVDVCBpc251bCBPUiBpc3RydWUgT1IgaXNm YWxzZSBGUk9NIGJvb2x0Ymw0OwogCistLSBJbXBsaWNhdGlvbjogImEgSU1QTElFUyBiIiBp cyAiTk9UIGEgT1IgYiIuICBJdCBpcyBub3QgY29tbXV0YXRpdmUsIHNvIGFsbAorLS0gbmlu ZSBjb21iaW5hdGlvbnMgb2YgdGhyZWUtdmFsdWVkIGxvZ2ljIGhhdmUgdG8gYmUgY2hlY2tl ZC4KK1NFTEVDVCBpc3RydWUgSU1QTElFUyBpc3RydWUsIGlzdHJ1ZSBJTVBMSUVTIGlzZmFs c2UsIGlzdHJ1ZSBJTVBMSUVTIGlzbnVsCisgIEZST00gYm9vbHRibDQ7CitTRUxFQ1QgaXNm YWxzZSBJTVBMSUVTIGlzdHJ1ZSwgaXNmYWxzZSBJTVBMSUVTIGlzZmFsc2UsIGlzZmFsc2Ug SU1QTElFUyBpc251bAorICBGUk9NIGJvb2x0Ymw0OworU0VMRUNUIGlzbnVsIElNUExJRVMg aXN0cnVlLCBpc251bCBJTVBMSUVTIGlzZmFsc2UsIGlzbnVsIElNUExJRVMgaXNudWwKKyAg RlJPTSBib29sdGJsNDsKKworLS0gdGhlIHNhbWUsIGFzIGNvbnN0YW50cywgc28gdGhhdCBj b25zdGFudCBmb2xkaW5nIGlzIGV4ZXJjaXNlZCB0b28KK1NFTEVDVCB0cnVlIElNUExJRVMg dHJ1ZSwgdHJ1ZSBJTVBMSUVTIGZhbHNlLCB0cnVlIElNUExJRVMgbnVsbDsKK1NFTEVDVCBm YWxzZSBJTVBMSUVTIHRydWUsIGZhbHNlIElNUExJRVMgZmFsc2UsIGZhbHNlIElNUExJRVMg bnVsbDsKK1NFTEVDVCBudWxsIElNUExJRVMgdHJ1ZSwgbnVsbCBJTVBMSUVTIGZhbHNlLCBu dWxsOjpib29sIElNUExJRVMgbnVsbDsKKworLS0gSU1QTElFUyBpcyByaWdodC1hc3NvY2lh dGl2ZTogZmFsc2UgSU1QTElFUyAodHJ1ZSBJTVBMSUVTIGZhbHNlKSwgcmF0aGVyCistLSB0 aGFuIChmYWxzZSBJTVBMSUVTIHRydWUpIElNUExJRVMgZmFsc2UKK1NFTEVDVCBpc2ZhbHNl IElNUExJRVMgaXN0cnVlIElNUExJRVMgaXNmYWxzZSBGUk9NIGJvb2x0Ymw0OworCistLSBh bmQgYmluZHMgbG9vc2VyIHRoYW4gT1IsIEFORCwgTk9ULCB0aGUgY29tcGFyaXNvbiBvcGVy YXRvcnMgYW5kIElTCitTRUxFQ1QgaXN0cnVlIE9SIGlzZmFsc2UgSU1QTElFUyBpc2ZhbHNl IEZST00gYm9vbHRibDQ7CitTRUxFQ1QgaXNmYWxzZSBJTVBMSUVTIGlzZmFsc2UgQU5EIGlz ZmFsc2UgRlJPTSBib29sdGJsNDsKK1NFTEVDVCBOT1QgaXN0cnVlIElNUExJRVMgaXN0cnVl IEZST00gYm9vbHRibDQ7CitTRUxFQ1QgMSA9IDEgSU1QTElFUyAyID0gMzsKK1NFTEVDVCBp c3RydWUgSU1QTElFUyBpc251bCBJUyBOVUxMIEZST00gYm9vbHRibDQ7CisKKy0tIG5vbi1i b29sZWFuIG9wZXJhbmRzIGFyZSByZXBvcnRlZCBpbiB0ZXJtcyBvZiBJTVBMSUVTLCBub3Qg b2YgaXRzIGV4cGFuc2lvbgorU0VMRUNUIDEgSU1QTElFUyB0cnVlOyAgICAgICAgICAgICAg ICAgIC0tIGVycm9yCitTRUxFQ1QgdHJ1ZSBJTVBMSUVTIDE7ICAgICAgICAgICAgICAgICAg LS0gZXJyb3IKKworLS0gdGhlIGNvbnN0cnVjdCBpcyBleHBhbmRlZCBkdXJpbmcgcGFyc2Ug YW5hbHlzaXMsIHNvIHRoaXMgaXMgd2hhdCBpcyBzdG9yZWQKK0NSRUFURSBWSUVXIGJvb2x2 aWV3IEFTIFNFTEVDVCBpc3RydWUgSU1QTElFUyBpc251bCBBUyBpIEZST00gYm9vbHRibDQ7 CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ2Jvb2x2aWV3JywgdHJ1ZSk7CitEUk9QIFZJRVcg Ym9vbHZpZXc7CisKKy0tIElNUExJRVMgaXMgdW5yZXNlcnZlZCwgc28gaXQgcmVtYWlucyB1 c2FibGUgYXMgYW4gaWRlbnRpZmllcgorQ1JFQVRFIFRBQkxFIGltcGxpZXMgKGltcGxpZXMg Ym9vbCk7CitJTlNFUlQgSU5UTyBpbXBsaWVzIFZBTFVFUyAoZmFsc2UpOworU0VMRUNUIGlt cGxpZXMgSU1QTElFUyBpbXBsaWVzIEZST00gaW1wbGllczsKK0RST1AgVEFCTEUgaW1wbGll czsKK1NFTEVDVCAxIEFTIGltcGxpZXM7CitTRUxFQ1QgMSBpbXBsaWVzOworCiAtLSBDYXN0 cwogU0VMRUNUIDA6OmJvb2xlYW47CiBTRUxFQ1QgMTo6Ym9vbGVhbjsKIFNFTEVDVCAyOjpi b29sZWFuOwogCiAKIC0tCiAtLSBDbGVhbiB1cAogLS0gTWFueSB0YWJsZXMgYXJlIHJldGFp bmVkIGJ5IHRoZSByZWdyZXNzaW9uIHRlc3QsIGJ1dCB0aGVzZSBkbyBub3Qgc2VlbQogLS0g IHBhcnRpY3VsYXJseSB1c2VmdWwgc28ganVzdCBnZXQgcmlkIG9mIHRoZW0gZm9yIG5vdy4K LS0gCjIuNTUuMAoK --------------Kw3VgQAB2yTG3L38pFiaKZml--