From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-0010f301.pphosted.com (mx0a-0010f301.pphosted.com [148.163.149.254]) by sourceware.org (Postfix) with ESMTPS id 2073C3858D20 for ; Tue, 8 Aug 2023 17:07:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2073C3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=rice.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rice.edu Received: from pps.filterd (m0102856.ppops.net [127.0.0.1]) by mx0b-0010f301.pphosted.com (8.17.1.22/8.17.1.22) with ESMTP id 378G0o9L024012 for ; Tue, 8 Aug 2023 12:07:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rice.edu; h= mime-version:from:date:message-id:subject:to:cc:content-type; s= ricemail; bh=mTZlvzNPIiB94GMSk/bifJPKKMoEQlUYjUc9oGKysgc=; b=TJQ MulikxS9zqhHqgLA194I9aptYVZHnDWoJMT7JfATBgfTI1emtdaM4rlZVnbxKXC2 L/vCzM/dMdgiJVvsTRwQHfzup9uVRL/Slj4qLfK31hLBML8VZsLiDPLAhxz2UGUE 3727oCz7IBJBlee1ywIztyMnqDa+bPad2z/6MF2BunDJbNXHzB02lkvCBx5iXLBP 7gmYcQ0qi7EGXZqvig8kzpaii9Cj1Tj9uzP19QB5QjyW74W/2F0dnqevYRSde7Ih gfmordaHG+ypX7hTS7v7huHD1R2rV5YoiNKK5zLwK9cqosbsuXC9cfyZBEEznpLl w0CQilMdoXa3hW2+6EQ== Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by mx0b-0010f301.pphosted.com (PPS) with ESMTPS id 3s9kj2cse0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 08 Aug 2023 12:07:53 -0500 (CDT) Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-30e3ee8a42eso2760244f8f.1 for ; Tue, 08 Aug 2023 10:07:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691514471; x=1692119271; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=mTZlvzNPIiB94GMSk/bifJPKKMoEQlUYjUc9oGKysgc=; b=VEdVGeT49p1saa13JMeZz95SN8wbriP8GFyWu4Lqaxmi8HJRdf3Wo0M+QRn26xw1yc XMxddYcd0KewG69kCw3lHhPFt6s+D6zys/vfOjDAB9Vy1mluM4hQaIjs459y0FXjIMUb grcWw34iQaTPlK/pm41WnK53iEqBu50veD0N0mLkb4HYtZJeDNbEJU+dUs/+vgSCIQQD PENrcwkKIENeB0XxzzOa51hBMc5DjdQ0IRbqcCQrPAA4TubICYTaWeQcAtDZ6YQDonf+ cIHRWnG8BD76PysEAuRDmNlj/kSrrmHHjMA1oKZ3P2Xl22wn2gkCIzT/i+xOWruPqMRk BUdw== X-Gm-Message-State: AOJu0YxQ6ZtfHGwvXyouJizrh6OWskEKCV9pZHKwM8qOHK5pEjP6zqV1 CEm6YY5+/lyRQUxWST/PGpOP+L9LwGyBlqPYtrfTfYK9QM7t6n0NpWQ+b838qEDHOzV4Wsfb2BC Jv1akSuCBOlnasAxhuOcQ5loly3IrVIoWeU7HYHv17Mcbt848WALdveEPUBIUGNft7XB0H1xeDh 4HXLI= X-Received: by 2002:a5d:6ac3:0:b0:314:4c1d:1c0a with SMTP id u3-20020a5d6ac3000000b003144c1d1c0amr35894wrw.46.1691514471013; Tue, 08 Aug 2023 10:07:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEqAkNOtCQIzIQiXCPGm7tAoNZubUsRnghyPrlzLekmSh3jO36n2arY1fXowje1h2fpAp4SrBn1ZV4ytJDozOU= X-Received: by 2002:a5d:6ac3:0:b0:314:4c1d:1c0a with SMTP id u3-20020a5d6ac3000000b003144c1d1c0amr35877wrw.46.1691514470641; Tue, 08 Aug 2023 10:07:50 -0700 (PDT) MIME-Version: 1.0 From: Heather McIntyre Date: Tue, 8 Aug 2023 12:07:39 -0500 Message-ID: Subject: [PATCH] Fix thread-safety for elfutils To: elfutils-devel@sourceware.org Cc: John Mellor-Crummey Content-Type: multipart/mixed; boundary="00000000000027e77806026c6707" X-Proofpoint-DLP: Gmail-Outbound X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-08-08_15,2023-08-08_01,2023-05-22_02 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000027e77806026c6707 Content-Type: multipart/alternative; boundary="00000000000027e77506026c6702" --00000000000027e77506026c6702 Content-Type: text/plain; charset="UTF-8" Hello all, This patch was created to address thread-safety issues reported in bug 26921 and bug 26930 . Additionally, other thread-safety fixes were applied during the process. Brief Description: Locking was implemented for tsearch and tfind. Changes to multiple files within the libelf library were made such that USE_LOCKS no longer causes tests to fail when enabled. New tests were added to confirm thread-safety. Please review the attached patch file and feel free to provide feedback. I am available for any clarifications or modifications needed. Best regards, Heather McIntyre --00000000000027e77506026c6702-- --00000000000027e77806026c6707 Content-Type: application/octet-stream; name="0001-Fix-thread-safety-for-elfutils.patch" Content-Disposition: attachment; filename="0001-Fix-thread-safety-for-elfutils.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll2jz31b0 RnJvbSBlZTdiZjNmMDdhM2ZlOTljZjZlNjE1MjgwMzI3MWExYjc3NDQ1MzUw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSGVhdGhlciBTLiBN Y0ludHlyZSIgPGhzbTJAcmljZS5lZHU+CkRhdGU6IFR1ZSwgOCBBdWcgMjAy MyAxMToyNDowMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIEZpeCB0aHJlYWQt c2FmZXR5IGZvciBlbGZ1dGlscwoKU2lnbmVkLW9mZi1ieTogSGVhdGhlciBT LiBNY0ludHlyZSA8aHNtMkByaWNlLmVkdT4KLS0tCiBDaGFuZ2VMb2cgICAg ICAgICAgICAgICAgICAgICB8ICAgNSArCiBjb25maWd1cmUuYWMgICAgICAg ICAgICAgICAgICB8ICAgNiArLQogbGliL0NoYW5nZUxvZyAgICAgICAgICAg ICAgICAgfCAgMTAgKysKIGxpYi9NYWtlZmlsZS5hbSAgICAgICAgICAgICAg IHwgICAyICstCiBsaWIvZXUtY29uZmlnLmggICAgICAgICAgICAgICB8ICAz MyArKystLQogbGliL2V1LXNlYXJjaC5jICAgICAgICAgICAgICAgfCAgNTgg KysrKysrKysKIGxpYi9ldS1zZWFyY2guaCAgICAgICAgICAgICAgIHwgIDM3 ICsrKysrCiBsaWJjcHUvQ2hhbmdlTG9nICAgICAgICAgICAgICB8ICAgNiAr CiBsaWJjcHUvTWFrZWZpbGUuYW0gICAgICAgICAgICB8ICAgMyArCiBsaWJj cHUvaTM4Nl9wYXJzZS55ICAgICAgICAgICB8ICA0OCArKystLS0tCiBsaWJk dy9DaGFuZ2VMb2cgICAgICAgICAgICAgICB8ICAxOSArKysKIGxpYmR3L2Np ZS5jICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBsaWJkdy9kd2FyZl9n ZXRhbHQuYyAgICAgICAgICB8ICA0NCArKysrLS0KIGxpYmR3L2R3YXJmX2dl dGxvY2F0aW9uLmMgICAgIHwgIDE2ICstLQogbGliZHcvZHdhcmZfZ2V0bWFj cm9zLmMgICAgICAgfCAgIDYgKy0KIGxpYmR3L2R3YXJmX2dldHNyY2xpbmVz LmMgICAgIHwgICA2ICstCiBsaWJkdy9kd2FyZl9oYXNhdHRyLmMgICAgICAg ICB8ICAgOSArKwogbGliZHcvZmRlLmMgICAgICAgICAgICAgICAgICAgfCAg IDYgKy0KIGxpYmR3L2xpYmR3X2ZpbmRfc3BsaXRfdW5pdC5jIHwgIDY2ICsr KysrKy0tLQogbGliZHcvbGliZHdfZmluZGN1LmMgICAgICAgICAgfCAgNTIg KysrKy0tLQogbGliZHdmbC9DaGFuZ2VMb2cgICAgICAgICAgICAgfCAgIDUg KwogbGliZHdmbC9jdS5jICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGxp YmVsZi9DaGFuZ2VMb2cgICAgICAgICAgICAgIHwgIDE1ICstCiBsaWJlbGYv ZWxmMzJfZ2V0Y2hkci5jICAgICAgICB8ICA0NiArLS0tLS0KIGxpYmVsZi9l bGYzMl9nZXRjaGRyLmggICAgICAgIHwgIDYxICsrKysrKysrCiBsaWJlbGYv ZWxmMzJfdXBkYXRlbnVsbC5jICAgICB8ICAgMiArLQogbGliZWxmL2VsZl9j bnRsLmMgICAgICAgICAgICAgfCAgMTEgKy0KIGxpYmVsZi9lbGZfZW5kLmMg ICAgICAgICAgICAgIHwgICA2ICstCiBsaWJlbGYvZWxmX2dldGRhdGEuYyAg ICAgICAgICB8ICAxNCArKwogbGliZWxmL2VsZl9yZWFkYWxsLmMgICAgICAg ICAgfCAgIDUgKy0KIGxpYmVsZi9lbGZfdmVyc2lvbi5jICAgICAgICAgIHwg IDExICstCiBsaWJlbGYvbGliZWxmUC5oICAgICAgICAgICAgICB8ICAgNCAr CiBzcmMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICB8ICAgNyArCiBzcmMv TWFrZWZpbGUuYW0gICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvZmluZHRl eHRyZWwuYyAgICAgICAgICAgICB8ICAxMCArLQogc3JjL25tLmMgICAgICAg ICAgICAgICAgICAgICAgfCAgMTAgKy0KIHRlc3RzL0NoYW5nZUxvZyAgICAg ICAgICAgICAgIHwgIDIxICsrKwogdGVzdHMvTWFrZWZpbGUuYW0gICAgICAg ICAgICAgfCAgMTYgKystCiB0ZXN0cy9ldV9zZWFyY2hfY2ZpLmMgICAgICAg ICB8IDIzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3Rz L2V1X3NlYXJjaF9kaWUuYyAgICAgICAgIHwgMjYyICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHRlc3RzL2V1X3NlYXJjaF9saW5lcy5j ICAgICAgIHwgMjI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0 ZXN0cy9ldV9zZWFyY2hfbWFjcm9zLmMgICAgICB8IDIxNiArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB0ZXN0cy9ydW4tZXUtc2VhcmNoLXRlc3Rz LnNoICB8IDE2OCArKysrKysrKysrKysrKysrKysrKysrCiA0MyBmaWxlcyBj aGFuZ2VkLCAxNjE4IGluc2VydGlvbnMoKyksIDE4MSBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZXUtc2VhcmNoLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBsaWIvZXUtc2VhcmNoLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBsaWJlbGYvZWxmMzJfZ2V0Y2hkci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg dGVzdHMvZXVfc2VhcmNoX2NmaS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVz dHMvZXVfc2VhcmNoX2RpZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMv ZXVfc2VhcmNoX2xpbmVzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9l dV9zZWFyY2hfbWFjcm9zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9y dW4tZXUtc2VhcmNoLXRlc3RzLnNoCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n IGIvQ2hhbmdlTG9nCmluZGV4IDZhZWQ5NWI2Li5jNTU1Yzk4NiAxMDA2NDQK LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgg QEAKKzIwMjMtMDgtMDggIEhlYXRoZXIgTWNJbnR5cmUgIDxoc20yQHJpY2Uu ZWR1PgorCisJKiBORVdTOiBDaGFuZ2VzIGltcGxlbWVudGVkIHRvIHN1cHBv cnQgdGhyZWFkLXNhZmV0eS4KKwkqIGNvbmZpZ3VyZS5hYyAoLS1lbmFibGUt dGhyZWFkLXNhZmV0eSk6IFJlbW92ZSBleHBlcmltZW50YWwgd2FybmluZy4K KwogMjAyMy0wMy0yNyAgRGkgQ2hlbiAgPGRpY2hlbkByZWRoYXQuY29tPgog CiAJKiBORVdTOiBTdXBwb3J0IHJlYWRlbGYgLURzIGZvciB1c2luZyBkeW5h bWljIHNlZ21lbnQgdG8KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2Nv bmZpZ3VyZS5hYwppbmRleCA0YjY3Yzg0NC4uZjg2ZjY0OTIgMTAwNjQ0Ci0t LSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTc5LDEy ICs3OSwxMCBAQCBBQ19ERUZJTkVfVU5RVU9URUQoREVGQVVMVF9BUl9ERVRF Uk1JTklTVElDLCAkZGVmYXVsdF9hcl9kZXRlcm1pbmlzdGljLAogCiBBQ19B UkdfRU5BQkxFKFt0aHJlYWQtc2FmZXR5XSwKIEFTX0hFTFBfU1RSSU5HKFst LWVuYWJsZS10aHJlYWQtc2FmZXR5XSwKLSAgICAgICAgICAgICAgIFtlbmFi bGUgdGhyZWFkIHNhZmV0eSBvZiBsaWJyYXJpZXMgRVhQRVJJTUVOVEFMXSks CisgICAgICAgICAgICAgICBbZW5hYmxlIHRocmVhZCBzYWZldHkgb2YgbGli cmFyaWVzXSksCiAgICAgICAgICAgICAgICB1c2VfbG9ja3M9JGVuYWJsZXZh bCwgdXNlX2xvY2tzPW5vKQogQU1fQ09ORElUSU9OQUwoVVNFX0xPQ0tTLCB0 ZXN0ICIkdXNlX2xvY2tzIiA9IHllcykKIEFTX0lGKFt0ZXN0ICIkdXNlX2xv Y2tzIiA9IHllc10sIFtBQ19ERUZJTkUoVVNFX0xPQ0tTKV0pCi1BU19JRihb dGVzdCAiJHVzZV9sb2NrcyIgPSB5ZXNdLAotICAgICAgW0FDX01TR19XQVJO KFt0aHJlYWQtc2FmZXR5IGlzIEVYUEVSSU1FTlRBTCB0ZXN0cyBtaWdodCBm YWlsLl0pXSkKIAogQUhfVEVNUExBVEUoW1VTRV9MT0NLU10sIFtEZWZpbmVk IGlmIGxpYnJhcmllcyBzaG91bGQgYmUgdGhyZWFkLXNhZmUuXSkKIApAQCAt OTA2LDEwICs5MDQsMTAgQEAgQUNfTVNHX05PVElDRShbCiAgICAgU3ltYm9s IHZlcnNpb25pbmcgICAgICAgICAgICAgICAgICA6ICR7ZW5hYmxlX3N5bWJv bF92ZXJzaW9uaW5nfQogCiAgIE5PVCBSRUNPTU1FTkRFRCBGRUFUVVJFUyAo c2hvdWxkIGFsbCBiZSBubykKLSAgICBFeHBlcmltZW50YWwgdGhyZWFkIHNh ZmV0eSAgICAgICAgIDogJHt1c2VfbG9ja3N9CiAgICAgaW5zdGFsbCBlbGYu aCAgICAgICAgICAgICAgICAgICAgICA6ICR7aW5zdGFsbF9lbGZofQogCiAg IE9USEVSIEZFQVRVUkVTCisgICAgRW5hYmxlIHRocmVhZCBzYWZldHkgICAg ICAgICAgICAgICA6ICR7dXNlX2xvY2tzfQogICAgIERldGVybWluaXN0aWMg YXJjaGl2ZXMgYnkgZGVmYXVsdCAgOiAke2RlZmF1bHRfYXJfZGV0ZXJtaW5p c3RpY30KICAgICBOYXRpdmUgbGFuZ3VhZ2Ugc3VwcG9ydCAgICAgICAgICAg IDogJHtVU0VfTkxTfQogICAgIEV4dHJhIFZhbGdyaW5kIGFubm90YXRpb25z ICAgICAgICAgOiAke3VzZV92Z19hbm5vdGF0aW9uc30KZGlmZiAtLWdpdCBh L2xpYi9DaGFuZ2VMb2cgYi9saWIvQ2hhbmdlTG9nCmluZGV4IDVhYjk0Nzdl Li43ZjA1MzNjYyAxMDA2NDQKLS0tIGEvbGliL0NoYW5nZUxvZworKysgYi9s aWIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjMtMDgtMDggIEhl YXRoZXIgTWNJbnR5cmUgIDxoc20yQHJpY2UuZWR1PgorCisJKiBldS1zZWFy Y2guaDogTmV3IGZpbGUuCisJRGVjbGFyYXRpb25zIGZvciByZWFkL3dyaXRl IGxvY2tlZCBldV90c2VhcmNoL2V1X3RmaW5kLgorCSogZXUtc2VhcmNoLmM6 IE5ldyBmaWxlLgorCURlZmluaXRpb25zIGZvciByZWFkL3dyaXRlIGxvY2tl ZCBldV90c2VhcmNoL2V1X3RmaW5kLgorCSogZXUtY29uZmlnLmggTmV3IG1h Y3Jvcy4KKwlbVVNFX0xPQ0tTXSAoT05DRV9DQUxMKTogKG9uY2VfZGVmaW5l LCBvbmNlKQorCSogTWFrZWZpbGUuYW0gKGxpYmV1X2FfU09VUkNFUyk6IEFk ZCBldS1zZWFyY2guYy4KKwogMjAyMi0xMi0yMCAgTWFyayBXaWVsYWFyZCAg PG1hcmtAa2xvbXAub3JnPgogCiAJKiBNYWtlZmlsZS5hbSAoeG1hbGxvY19D RkxBR1MpOiBSZW1vdmUuCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0g Yi9saWIvTWFrZWZpbGUuYW0KaW5kZXggYjNiYjkyOWYuLmNlOGYzZTFiIDEw MDY0NAotLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxl LmFtCkBAIC0zNCw3ICszNCw3IEBAIEFNX0NQUEZMQUdTICs9IC1JJChzcmNk aXIpLy4uL2xpYmVsZgogbm9pbnN0X0xJQlJBUklFUyA9IGxpYmV1LmEKIAog bGliZXVfYV9TT1VSQ0VTID0geGFzcHJpbnRmLmMgeHN0cmR1cC5jIHhzdHJu ZHVwLmMgeG1hbGxvYy5jIG5leHRfcHJpbWUuYyBcCi0JCSAgY3JjMzIuYyBj cmMzMl9maWxlLmMgXAorCQkgIGNyYzMyLmMgY3JjMzJfZmlsZS5jIGV1LXNl YXJjaC5jIFwKIAkJICBjb2xvci5jIGVycm9yLmMgcHJpbnR2ZXJzaW9uLmMK IAogbm9pbnN0X0hFQURFUlMgPSBmaXhlZHNpemVoYXNoLmggbGliZXUuaCBz eXN0ZW0uaCBkeW5hbWljc2l6ZWhhc2guaCBsaXN0LmggXApkaWZmIC0tZ2l0 IGEvbGliL2V1LWNvbmZpZy5oIGIvbGliL2V1LWNvbmZpZy5oCmluZGV4IDc4 YTVjNGZlLi5kNDNhOGY3OCAxMDA2NDQKLS0tIGEvbGliL2V1LWNvbmZpZy5o CisrKyBiL2xpYi9ldS1jb25maWcuaApAQCAtMzIsMjQgKzMyLDI3IEBACiAj aWZkZWYgVVNFX0xPQ0tTCiAjIGluY2x1ZGUgPHB0aHJlYWQuaD4KICMgaW5j bHVkZSA8YXNzZXJ0Lmg+Ci0jIGRlZmluZSByd2xvY2tfZGVmaW5lKGNsYXNz LG5hbWUpCWNsYXNzIHB0aHJlYWRfcndsb2NrX3QgbmFtZQotIyBkZWZpbmUg UldMT0NLX0NBTEwoY2FsbCkJCVwKKyMgZGVmaW5lIHJ3bG9ja19kZWZpbmUo Y2xhc3MsbmFtZSkgIGNsYXNzIHB0aHJlYWRfcndsb2NrX3QgbmFtZQorIyBk ZWZpbmUgb25jZV9kZWZpbmUoY2xhc3MsbmFtZSkgIGNsYXNzIHB0aHJlYWRf b25jZV90IG5hbWUgPSBQVEhSRUFEX09OQ0VfSU5JVAorIyBkZWZpbmUgUldM T0NLX0NBTEwoY2FsbCkgIFwKICAgKHsgaW50IF9lcnIgPSBwdGhyZWFkX3J3 bG9ja18gIyMgY2FsbDsgYXNzZXJ0X3BlcnJvciAoX2Vycik7IH0pCi0jIGRl ZmluZSByd2xvY2tfaW5pdChsb2NrKQkJUldMT0NLX0NBTEwgKGluaXQgKCZs b2NrLCBOVUxMKSkKLSMgZGVmaW5lIHJ3bG9ja19maW5pKGxvY2spCQlSV0xP Q0tfQ0FMTCAoZGVzdHJveSAoJmxvY2spKQotIyBkZWZpbmUgcndsb2NrX3Jk bG9jayhsb2NrKQkJUldMT0NLX0NBTEwgKHJkbG9jayAoJmxvY2spKQotIyBk ZWZpbmUgcndsb2NrX3dybG9jayhsb2NrKQkJUldMT0NLX0NBTEwgKHdybG9j ayAoJmxvY2spKQotIyBkZWZpbmUgcndsb2NrX3VubG9jayhsb2NrKQkJUldM T0NLX0NBTEwgKHVubG9jayAoJmxvY2spKQorIyBkZWZpbmUgT05DRV9DQUxM KGNhbGwpICBcCisgICh7IGludCBfZXJyID0gcHRocmVhZF8gIyMgY2FsbDsg YXNzZXJ0X3BlcnJvciAoX2Vycik7IH0pCisjIGRlZmluZSByd2xvY2tfaW5p dChsb2NrKQkJICAgICAgICAgICAgUldMT0NLX0NBTEwgKGluaXQgKCZsb2Nr LCBOVUxMKSkKKyMgZGVmaW5lIHJ3bG9ja19maW5pKGxvY2spCQkgICAgICAg ICAgICBSV0xPQ0tfQ0FMTCAoZGVzdHJveSAoJmxvY2spKQorIyBkZWZpbmUg cndsb2NrX3JkbG9jayhsb2NrKQkJICAgICAgICAgIFJXTE9DS19DQUxMIChy ZGxvY2sgKCZsb2NrKSkKKyMgZGVmaW5lIHJ3bG9ja193cmxvY2sobG9jaykJ CSAgICAgICAgICBSV0xPQ0tfQ0FMTCAod3Jsb2NrICgmbG9jaykpCisjIGRl ZmluZSByd2xvY2tfdW5sb2NrKGxvY2spCQkgICAgICAgICAgUldMT0NLX0NB TEwgKHVubG9jayAoJmxvY2spKQorIyBkZWZpbmUgb25jZShvbmNlX2NvbnRy b2wsIGluaXRfcm91dGluZSkJT05DRV9DQUxMIChvbmNlICgmb25jZV9jb250 cm9sLCBpbml0X3JvdXRpbmUpKQogI2Vsc2UKLS8qIEV2ZW50dWFsbHkgd2Ug d2lsbCBhbGxvdyBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMgdG8gdXNl IHRoZQotICAgbGlicmFyaWVzLiAgVGhlcmVmb3JlIHdlIHdpbGwgYWRkIHRo ZSBuZWNlc3NhcnkgbG9ja2luZyBhbHRob3VnaAotICAgdGhlIG1hY3JvcyB1 c2VkIGV4cGFuZCB0byBub3RoaW5nIGZvciBub3cuICAqLwogIyBkZWZpbmUg cndsb2NrX2RlZmluZShjbGFzcyxuYW1lKSBjbGFzcyBpbnQgbmFtZQotIyBk ZWZpbmUgcndsb2NrX2luaXQobG9jaykgKCh2b2lkKSAobG9jaykpCi0jIGRl ZmluZSByd2xvY2tfZmluaShsb2NrKSAoKHZvaWQpIChsb2NrKSkKLSMgZGVm aW5lIHJ3bG9ja19yZGxvY2sobG9jaykgKCh2b2lkKSAobG9jaykpCi0jIGRl ZmluZSByd2xvY2tfd3Jsb2NrKGxvY2spICgodm9pZCkgKGxvY2spKQotIyBk ZWZpbmUgcndsb2NrX3VubG9jayhsb2NrKSAoKHZvaWQpIChsb2NrKSkKKyMg ZGVmaW5lIHJ3bG9ja19pbml0KGxvY2spICAgICAgICgodm9pZCkgKGxvY2sp KQorIyBkZWZpbmUgcndsb2NrX2ZpbmkobG9jaykgICAgICAgKCh2b2lkKSAo bG9jaykpCisjIGRlZmluZSByd2xvY2tfcmRsb2NrKGxvY2spICAgICAoKHZv aWQpIChsb2NrKSkKKyMgZGVmaW5lIHJ3bG9ja193cmxvY2sobG9jaykgICAg ICgodm9pZCkgKGxvY2spKQorIyBkZWZpbmUgcndsb2NrX3VubG9jayhsb2Nr KSAgICAgKCh2b2lkKSAobG9jaykpCisjIGRlZmluZSBvbmNlX2RlZmluZShj bGFzcyxuYW1lKQorIyBkZWZpbmUgb25jZShvbmNlX2NvbnRyb2wsIGluaXRf cm91dGluZSkJaW5pdF9yb3V0aW5lKCkKICNlbmRpZgkvKiBVU0VfTE9DS1Mg Ki8KIAogI2luY2x1ZGUgPGxpYmludGwuaD4KZGlmZiAtLWdpdCBhL2xpYi9l dS1zZWFyY2guYyBiL2xpYi9ldS1zZWFyY2guYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMC4uYjE1ZDYxYjkKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvZXUtc2VhcmNoLmMKQEAgLTAsMCArMSw1OCBAQAorLyogRGVm aW5pdGlvbnMgZm9yIHRocmVhZC1zYWZlIHRzZWFyY2gvdGZpbmQKKyAgIENv cHlyaWdodCAoQykgMjAyMyBSZWQgSGF0LCBJbmMuCisgICBUaGlzIGZpbGUg aXMgcGFydCBvZiBlbGZ1dGlscy4KKworICAgVGhpcyBmaWxlIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBlaXRoZXIKKworICAgICAq IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlCisgICAgICAgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cisg ICAgICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uCisKKyAgIG9y CisKKyAgICAgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgICAgICAgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 CisgICAgICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uCisKKyAg IG9yIGJvdGggaW4gcGFyYWxsZWwsIGFzIGhlcmUuCisKKyAgIGVsZnV0aWxz IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dAorICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUKKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGNvcGll cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYW5kCisgICB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYKKyAgIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJ R19ICisjaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUg PHN0ZGxpYi5oPgorI2luY2x1ZGUgImV1LXNlYXJjaC5oIgorCityd2xvY2tf ZGVmaW5lKHN0YXRpYywgc2VhcmNoX2ZpbmRfbG9jayk7CisKK3ZvaWQgKmV1 X3RzZWFyY2goY29uc3Qgdm9pZCAqa2V5LCB2b2lkICoqcm9vdHAsIGludCAo KmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQoreworICAg IHZvaWQgKnJldCA9IE5VTEw7CisgICAgcndsb2NrX3dybG9jayhzZWFyY2hf ZmluZF9sb2NrKTsKKworICAgIHJldCA9IHRzZWFyY2goa2V5LCByb290cCwg Y29tcGFyKTsKKworICAgIHJ3bG9ja191bmxvY2soc2VhcmNoX2ZpbmRfbG9j ayk7CisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZCAqZXVfdGZpbmQoY29u c3Qgdm9pZCAqa2V5LCB2b2lkICpjb25zdCAqcm9vdHAsIGludCAoKmNvbXBh cikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKQoreworICAgIHZvaWQg KnJldCA9IE5VTEw7CisgICAgcndsb2NrX3JkbG9jayhzZWFyY2hfZmluZF9s b2NrKTsKKworICAgIHJldCA9IHRmaW5kKGtleSwgcm9vdHAsIGNvbXBhcik7 CisKKyAgICByd2xvY2tfdW5sb2NrKHNlYXJjaF9maW5kX2xvY2spOworICAg IHJldHVybiByZXQ7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvbGliL2V1LXNlYXJjaC5oIGIvbGliL2V1LXNlYXJjaC5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi41ZmIzMzVm MgotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9ldS1zZWFyY2guaApAQCAtMCww ICsxLDM3IEBACisvKiBDYWxscyBmb3IgdGhyZWFkLXNhZmUgdHNlYXJjaC90 ZmluZAorICAgQ29weXJpZ2h0IChDKSAyMDIzIFJlZCBIYXQsIEluYy4KKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGVsZnV0aWxzLgorCisgICBUaGlzIGZp bGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIGVpdGhl cgorCisgICAgICogdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAgICAgICBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvciAoYXQKKyAgICAgICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24KKworICAgb3IKKworICAgICAqIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAgICAgICBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQKKyAgICAgICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24KKworICAgb3IgYm90aCBpbiBwYXJhbGxlbCwgYXMgaGVyZS4KKwor ICAgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgICBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorICAgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgY29waWVzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhbmQKKyAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZgorICAgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2lmbmRl ZiBFVV9TRUFSQ0hfSAorI2RlZmluZSBFVV9TRUFSQ0hfSCAxCisKKyNpbmNs dWRlIDxzZWFyY2guaD4KKworZXh0ZXJuIHZvaWQgKmV1X3RzZWFyY2goY29u c3Qgdm9pZCAqa2V5LCB2b2lkICoqcm9vdHAsIGludCAoKmNvbXBhcikoY29u c3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKK2V4dGVybiB2b2lkICpldV90 ZmluZChjb25zdCB2b2lkICprZXksIHZvaWQgKmNvbnN0ICpyb290cCwgaW50 ICgqY29tcGFyKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOworCisj ZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS9saWJjcHUvQ2hhbmdlTG9nIGIvbGliY3B1L0NoYW5nZUxvZwppbmRleCBk MTRjZDIzNy4uOGM2Y2ZkNjggMTAwNjQ0Ci0tLSBhL2xpYmNwdS9DaGFuZ2VM b2cKKysrIGIvbGliY3B1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkgQEAKKzIw MjMtMDgtMDggIEhlYXRoZXIgTWNJbnR5cmUgIDxoc20yQHJpY2UuZWR1Pgor CisJKiBNYWtlZmlsZS5hbTogQWRkIFVTRV9MT0NLUyBjb25kaXRpb24gZm9y IC1wdGhyZWFkLgorCSogaTM4Nl9wYXJzZS55OiBBZGQgZXUtc2VhcmNoLmgg YW5kIHJlbW92ZSBzZWFyY2guaC4KKwlDaGFuZ2UgY2FsbHMgZm9yIHRzZWFy Y2gvdGZpbmQgdG8gZXVfdHNlYXJjaC9ldV90ZmluZC4KKwogMjAyMi0xMi0x OCAgWW9uZ2dhbmcgTHVvICA8bHVveW9uZ2dhbmdAZ21haWwuY29tPgogCiAJ KiBpMzg2X21uZS5oOiBOZXcgZmlsZSwgZXh0cmFjdGVkIGZyb20gaTM4Nl9k aXNhc20uYy4KZGlmZiAtLWdpdCBhL2xpYmNwdS9NYWtlZmlsZS5hbSBiL2xp YmNwdS9NYWtlZmlsZS5hbQppbmRleCA0YmExYmU1Ni4uYTUxMzM0YjUgMTAw NjQ0Ci0tLSBhL2xpYmNwdS9NYWtlZmlsZS5hbQorKysgYi9saWJjcHUvTWFr ZWZpbGUuYW0KQEAgLTMzLDYgKzMzLDkgQEAgQU1fQ1BQRkxBR1MgKz0gLUkk KHNyY2RpcikvLi4vbGliZWxmIC1JJChzcmNkaXIpLy4uL2xpYmVibCBcCiBp ZiBCVUlMRF9TVEFUSUMKIEFNX0NGTEFHUyArPSAkKGZwaWNfQ0ZMQUdTKQog ZW5kaWYKK2lmIFVTRV9MT0NLUworICBBTV9DRkxBR1MgKz0gLXB0aHJlYWQK K2VuZGlmCiBBTV9DRkxBR1MgKz0gLWZkb2xsYXJzLWluLWlkZW50aWZpZXJz CiBMRVhDT01QSUxFID0gJChMRVgpICQoTEZMQUdTKSAkKEFNX0xGTEFHUykg LVAkKDxGOmxleC5sPSkKIExFWF9PVVRQVVRfUk9PVCA9IGxleC4kKDxGOmxl eC5sPSkKZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X3BhcnNlLnkgYi9saWJj cHUvaTM4Nl9wYXJzZS55CmluZGV4IDQ1OTY4NGM2Li4zZDdjYjg5ZSAxMDA2 NDQKLS0tIGEvbGliY3B1L2kzODZfcGFyc2UueQorKysgYi9saWJjcHUvaTM4 Nl9wYXJzZS55CkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSA8aW50dHlw ZXMuaD4KICNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8b2JzdGFjay5o PgotI2luY2x1ZGUgPHNlYXJjaC5oPgorI2luY2x1ZGUgPGV1LXNlYXJjaC5o PgogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdGRpby5oPgog I2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMjY5LDEyICsyNjksMTIgQEAgbWFz azoJCSAga01BU0sga0JJVEZJRUxEIGtOVU1CRVIKIAkJICAgICAgc3RydWN0 IHN5bm9ueW0gKm5ld3AgPSB4bWFsbG9jIChzaXplb2YgKCpuZXdwKSk7CiAJ CSAgICAgIG5ld3AtPmZyb20gPSAkMjsKIAkJICAgICAgbmV3cC0+dG8gPSAk MzsKLQkJICAgICAgaWYgKHRmaW5kIChuZXdwLCAmc3lub255bXMsIGNvbXBh cmVfc3luKSAhPSBOVUxMKQorCQkgICAgICBpZiAoZXVfdGZpbmQgKG5ld3As ICZzeW5vbnltcywgY29tcGFyZV9zeW4pICE9IE5VTEwpCiAJCQllcnJvciAo MCwgMCwKIAkJCSAgICAgICAiJWQ6IGR1cGxpY2F0ZSBkZWZpbml0aW9uIGZv ciBzeW5vbnltICclcyciLAogCQkJICAgICAgIGkzODZfbGluZW5vLCAkMik7 Ci0JCSAgICAgIGVsc2UgaWYgKHRzZWFyY2ggKCBuZXdwLCAmc3lub255bXMs IGNvbXBhcmVfc3luKSA9PSBOVUxMKQotCQkJZXJyb3IgKEVYSVRfRkFJTFVS RSwgMCwgInRzZWFyY2giKTsKKwkJICAgICAgZWxzZSBpZiAoZXVfdHNlYXJj aCAoIG5ld3AsICZzeW5vbnltcywgY29tcGFyZV9zeW4pID09IE5VTEwpCisJ CQllcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiZXVfdHNlYXJjaCIpOwogCQkg ICAgfQogCQl8CiAJCTsKQEAgLTMwOCwxMiArMzA4LDEyIEBAIGluc3RyOgkJ ICBieXRlcyAnOicgYml0ZmllbGRvcHQga0lEIGJpdGZpZWxkb3B0IG9wdGFy Z3MKIAkJCSAgbmV3cC0+Ynl0ZXMgPSAkMTsKIAkJCSAgbmV3cC0+bW5lbW9u aWMgPSAkNDsKIAkJCSAgaWYgKG5ld3AtPm1uZW1vbmljICE9ICh2b2lkICop IC0xbAotCQkJICAgICAgJiYgdGZpbmQgKCQ0LCAmbW5lbW9uaWNzLAorCQkJ ICAgICAgJiYgZXVfdGZpbmQgKCQ0LCAmbW5lbW9uaWNzLAogCQkJCQkoaW50 ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIHN0cmNtcCkgPT0g TlVMTCkKIAkJCSAgICB7Ci0JCQkgICAgICBpZiAodHNlYXJjaCAoJDQsICZt bmVtb25pY3MsCisJCQkgICAgICBpZiAoZXVfdHNlYXJjaCAoJDQsICZtbmVt b25pY3MsCiAJCQkJCSAgIChpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qg dm9pZCAqKSkgc3RyY21wKSA9PSBOVUxMKQotCQkJCWVycm9yIChFWElUX0ZB SUxVUkUsIGVycm5vLCAidHNlYXJjaCIpOworCQkJCWVycm9yIChFWElUX0ZB SUxVUkUsIGVycm5vLCAiZXVfdHNlYXJjaCIpOwogCQkJICAgICAgKytubW5l bW9uaWNzOwogCQkJICAgIH0KIApAQCAtMzM5LDE1ICszMzksMTUgQEAgaW5z dHI6CQkgIGJ5dGVzICc6JyBiaXRmaWVsZG9wdCBrSUQgYml0ZmllbGRvcHQg b3B0YXJncwogCQkJCSAgICAgICBpbmZuYW1lLCBpMzg2X2xpbmVubyAtIDEs ICQ1LT5uYW1lKTsKIAogCQkJICAgICAgc3RydWN0IHN1ZmZpeCBzZWFyY2gg PSB7IC5uYW1lID0gJDUtPm5hbWUgfTsKLQkJCSAgICAgIGlmICh0ZmluZCAo JnNlYXJjaCwgJnN1ZmZpeGVzLCBjb21wYXJlX3N1ZikKKwkJCSAgICAgIGlm IChldV90ZmluZCAoJnNlYXJjaCwgJnN1ZmZpeGVzLCBjb21wYXJlX3N1ZikK IAkJCQkgID09IE5VTEwpCiAJCQkJewogCQkJCSAgc3RydWN0IHN1ZmZpeCAq bnMgPSB4bWFsbG9jIChzaXplb2YgKCpucykpOwogCQkJCSAgbnMtPm5hbWUg PSAkNS0+bmFtZTsKIAkJCQkgIG5zLT5pZHggPSArK25zdWZmaXhlczsKLQkJ CQkgIGlmICh0c2VhcmNoIChucywgJnN1ZmZpeGVzLCBjb21wYXJlX3N1ZikK KwkJCQkgIGlmIChldV90c2VhcmNoIChucywgJnN1ZmZpeGVzLCBjb21wYXJl X3N1ZikKIAkJCQkgICAgICA9PSBOVUxMKQotCQkJCSAgICBlcnJvciAoRVhJ VF9GQUlMVVJFLCBlcnJubywgInRzZWFyY2giKTsKKwkJCQkgICAgZXJyb3Ig KEVYSVRfRkFJTFVSRSwgZXJybm8sICJldV90c2VhcmNoIik7CiAJCQkJfQog CQkJICAgIH0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIGJpdGZpZWxkb3B0Ogkg IGtCSVRGSUVMRAogCQkgICAgICBzdHJ1Y3Qga25vd25fYml0ZmllbGQgc2Vh cmNoOwogCQkgICAgICBzZWFyY2gubmFtZSA9ICQxOwogCQkgICAgICBzdHJ1 Y3Qga25vd25fYml0ZmllbGQgKipyZXM7Ci0JCSAgICAgIHJlcyA9IHRmaW5k ICgmc2VhcmNoLCAmYml0ZmllbGRzLCBiaXRmaWVsZF9jb21wYXJlKTsKKwkJ ICAgICAgcmVzID0gZXVfdGZpbmQgKCZzZWFyY2gsICZiaXRmaWVsZHMsIGJp dGZpZWxkX2NvbXBhcmUpOwogCQkgICAgICBpZiAocmVzID09IE5VTEwpCiAJ CQl7CiAJCQkgIGVycm9yICgwLCAwLCAiJWQ6IHVua25vd24gYml0ZmllbGQg JyVzJyIsCkBAIC00MzcsNyArNDM3LDcgQEAgYml0OgkJICAnMCcKIAkJICAg ICAgc3RydWN0IGtub3duX2JpdGZpZWxkIHNlYXJjaDsKIAkJICAgICAgc2Vh cmNoLm5hbWUgPSAkMTsKIAkJICAgICAgc3RydWN0IGtub3duX2JpdGZpZWxk ICoqcmVzOwotCQkgICAgICByZXMgPSB0ZmluZCAoJnNlYXJjaCwgJmJpdGZp ZWxkcywgYml0ZmllbGRfY29tcGFyZSk7CisJCSAgICAgIHJlcyA9IGV1X3Rm aW5kICgmc2VhcmNoLCAmYml0ZmllbGRzLCBiaXRmaWVsZF9jb21wYXJlKTsK IAkJICAgICAgaWYgKHJlcyA9PSBOVUxMKQogCQkJewogCQkJICBlcnJvciAo MCwgMCwgIiVkOiB1bmtub3duIGJpdGZpZWxkICclcyciLApAQCAtNDk3LDcg KzQ5Nyw3IEBAIGFyZ2NvbXA6CSAga0JJVEZJRUxECiAJCSAgICAgIHN0cnVj dCBrbm93bl9iaXRmaWVsZCBzZWFyY2g7CiAJCSAgICAgIHNlYXJjaC5uYW1l ID0gJDE7CiAJCSAgICAgIHN0cnVjdCBrbm93bl9iaXRmaWVsZCAqKnJlczsK LQkJICAgICAgcmVzID0gdGZpbmQgKCZzZWFyY2gsICZiaXRmaWVsZHMsIGJp dGZpZWxkX2NvbXBhcmUpOworCQkgICAgICByZXMgPSBldV90ZmluZCAoJnNl YXJjaCwgJmJpdGZpZWxkcywgYml0ZmllbGRfY29tcGFyZSk7CiAJCSAgICAg IGlmIChyZXMgPT0gTlVMTCkKIAkJCXsKIAkJCSAgaWYgKHN0cmNtcCAoJDEs ICJheCIpID09IDApCkBAIC01NzUsNyArNTc1LDcgQEAgbmV3X2JpdGZpZWxk IChjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nIGludCBudW0pCiAgIG5ld3At PmJpdHMgPSBudW07CiAgIG5ld3AtPnRtcCA9IDA7CiAKLSAgaWYgKHRmaW5k IChuZXdwLCAmYml0ZmllbGRzLCBiaXRmaWVsZF9jb21wYXJlKSAhPSBOVUxM KQorICBpZiAoZXVfdGZpbmQgKG5ld3AsICZiaXRmaWVsZHMsIGJpdGZpZWxk X2NvbXBhcmUpICE9IE5VTEwpCiAgICAgewogICAgICAgZXJyb3IgKDAsIDAs ICIlZDogZHVwbGljYXRlZCBkZWZpbml0aW9uIG9mIGJpdGZpZWxkICclcyci LAogCSAgICAgaTM4Nl9saW5lbm8sIG5hbWUpOwpAQCAtNTg0LDcgKzU4NCw3 IEBAIG5ld19iaXRmaWVsZCAoY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyBp bnQgbnVtKQogICAgICAgcmV0dXJuOwogICAgIH0KIAotICBpZiAodHNlYXJj aCAobmV3cCwgJmJpdGZpZWxkcywgYml0ZmllbGRfY29tcGFyZSkgPT0gTlVM TCkKKyAgaWYgKGV1X3RzZWFyY2ggKG5ld3AsICZiaXRmaWVsZHMsIGJpdGZp ZWxkX2NvbXBhcmUpID09IE5VTEwpCiAgICAgZXJyb3IgKEVYSVRfRkFJTFVS RSwgZXJybm8sICIlZDogY2Fubm90IGluc2VydCBuZXcgYml0ZmllbGQgJyVz JyIsCiAJICAgaTM4Nl9saW5lbm8sIG5hbWUpOwogfQpAQCAtODEzLDcgKzgx Myw3IEBAIGZpbGxpbl9hcmcgKHN0cnVjdCBiaXR2YWx1ZSAqYnl0ZXMsIHN0 cnVjdCBhcmduYW1lICpuYW1lLAogCiAJICAgICAgc3RydWN0IHN5bm9ueW0g c2VhcmNoID0geyAuZnJvbSA9IGZpZWxkbmFtZSB9OwogCi0JICAgICAgc3Ry dWN0IHN5bm9ueW0gKipyZXMgPSB0ZmluZCAoJnNlYXJjaCwgJnN5bm9ueW1z LCBjb21wYXJlX3N5bik7CisJICAgICAgc3RydWN0IHN5bm9ueW0gKipyZXMg PSBldV90ZmluZCAoJnNlYXJjaCwgJnN5bm9ueW1zLCBjb21wYXJlX3N5bik7 CiAJICAgICAgaWYgKHJlcyAhPSBOVUxMKQogCQlmaWVsZG5hbWUgPSAoKnJl cyktPnRvOwogCkBAIC05MTQsMjYgKzkxNCwyNiBAQCBmaW5kX251bWJlcnMg KHZvaWQpCiAJaWYgKHJ1bnAtPm9wZXJhbmRzW2ldLmZjdCAhPSBOVUxMKQog CSAgewogCSAgICBzdHJ1Y3QgYXJnc3RyaW5nIHNlYXJjaCA9IHsgLnN0ciA9 IHJ1bnAtPm9wZXJhbmRzW2ldLmZjdCB9OwotCSAgICBpZiAodGZpbmQgKCZz ZWFyY2gsICZmY3RfbmFtZXNbaV0sIGNvbXBhcmVfYXJnc3RyaW5nKSA9PSBO VUxMKQorCSAgICBpZiAoZXVfdGZpbmQgKCZzZWFyY2gsICZmY3RfbmFtZXNb aV0sIGNvbXBhcmVfYXJnc3RyaW5nKSA9PSBOVUxMKQogCSAgICAgIHsKIAkJ c3RydWN0IGFyZ3N0cmluZyAqbmV3cCA9IHhtYWxsb2MgKHNpemVvZiAoKm5l d3ApKTsKIAkJbmV3cC0+c3RyID0gcnVucC0+b3BlcmFuZHNbaV0uZmN0Owog CQluZXdwLT5pZHggPSAwOwotCQlpZiAodHNlYXJjaCAobmV3cCwgJmZjdF9u YW1lc1tpXSwgY29tcGFyZV9hcmdzdHJpbmcpID09IE5VTEwpCi0JCSAgZXJy b3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICJ0c2VhcmNoIik7CisJCWlmIChl dV90c2VhcmNoIChuZXdwLCAmZmN0X25hbWVzW2ldLCBjb21wYXJlX2FyZ3N0 cmluZykgPT0gTlVMTCkKKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJu bywgImV1X3RzZWFyY2giKTsKIAkJKytuZmN0X25hbWVzW2ldOwogCSAgICAg IH0KIAogCSAgICBpZiAocnVucC0+b3BlcmFuZHNbaV0uc3RyICE9IE5VTEwp CiAJICAgICAgewogCQlzZWFyY2guc3RyID0gcnVucC0+b3BlcmFuZHNbaV0u c3RyOwotCQlpZiAodGZpbmQgKCZzZWFyY2gsICZzdHJzW2ldLCBjb21wYXJl X2FyZ3N0cmluZykgPT0gTlVMTCkKKwkJaWYgKGV1X3RmaW5kICgmc2VhcmNo LCAmc3Ryc1tpXSwgY29tcGFyZV9hcmdzdHJpbmcpID09IE5VTEwpCiAJCSAg ewogCQkgICAgc3RydWN0IGFyZ3N0cmluZyAqbmV3cCA9IHhtYWxsb2MgKHNp emVvZiAoKm5ld3ApKTsKIAkJICAgIG5ld3AtPnN0ciA9IHJ1bnAtPm9wZXJh bmRzW2ldLnN0cjsKIAkJICAgIG5ld3AtPmlkeCA9IDA7Ci0JCSAgICBpZiAo dHNlYXJjaCAobmV3cCwgJnN0cnNbaV0sIGNvbXBhcmVfYXJnc3RyaW5nKSA9 PSBOVUxMKQotCQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywg InRzZWFyY2giKTsKKwkJICAgIGlmIChldV90c2VhcmNoIChuZXdwLCAmc3Ry c1tpXSwgY29tcGFyZV9hcmdzdHJpbmcpID09IE5VTEwpCisJCSAgICAgIGVy cm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiZXVfdHNlYXJjaCIpOwogCQkg ICAgKytuc3Ryc1tpXTsKIAkJICB9CiAJICAgICAgfQpAQCAtMTIwNiw3ICsx MjA2LDcgQEAgaW5zdHJ0YWJsZV9vdXQgKHZvaWQpCiAJICBpZiAoaW5zdHIt Pm9wZXJhbmRzW2ldLmZjdCAhPSBOVUxMKQogCSAgICB7CiAJICAgICAgc3Ry dWN0IGFyZ3N0cmluZyBzZWFyY2ggPSB7IC5zdHIgPSBpbnN0ci0+b3BlcmFu ZHNbaV0uZmN0IH07Ci0JICAgICAgc3RydWN0IGFyZ3N0cmluZyAqKnJlcyA9 IHRmaW5kICgmc2VhcmNoLCAmZmN0X25hbWVzW2ldLAorCSAgICAgIHN0cnVj dCBhcmdzdHJpbmcgKipyZXMgPSBldV90ZmluZCAoJnNlYXJjaCwgJmZjdF9u YW1lc1tpXSwKIAkJCQkJICAgICAgY29tcGFyZV9hcmdzdHJpbmcpOwogCSAg ICAgIGFzc2VydCAocmVzICE9IE5VTEwpOwogCSAgICAgIGlkeCA9ICgqcmVz KS0+aWR4OwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgaW5zdHJ0YWJsZV9vdXQg KHZvaWQpCiAJICBpZiAoaW5zdHItPm9wZXJhbmRzW2ldLnN0ciAhPSBOVUxM KQogCSAgICB7CiAJICAgICAgc3RydWN0IGFyZ3N0cmluZyBzZWFyY2ggPSB7 IC5zdHIgPSBpbnN0ci0+b3BlcmFuZHNbaV0uc3RyIH07Ci0JICAgICAgc3Ry dWN0IGFyZ3N0cmluZyAqKnJlcyA9IHRmaW5kICgmc2VhcmNoLCAmc3Ryc1tp XSwKKwkgICAgICBzdHJ1Y3QgYXJnc3RyaW5nICoqcmVzID0gZXVfdGZpbmQg KCZzZWFyY2gsICZzdHJzW2ldLAogCQkJCQkgICAgICBjb21wYXJlX2FyZ3N0 cmluZyk7CiAJICAgICAgYXNzZXJ0IChyZXMgIT0gTlVMTCk7CiAJICAgICAg aWR4ID0gKCpyZXMpLT5pZHg7CmRpZmYgLS1naXQgYS9saWJkdy9DaGFuZ2VM b2cgYi9saWJkdy9DaGFuZ2VMb2cKaW5kZXggNDA2MzEwZWYuLjNlZmJiZmVl IDEwMDY0NAotLS0gYS9saWJkdy9DaGFuZ2VMb2cKKysrIGIvbGliZHcvQ2hh bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjMtMDgtMDggIEhlYXRoZXIg TWNJbnR5cmUgIDxoc20yQHJpY2UuZWR1PgorCisJKiBjaWUuYzogQWRkIGV1 LXNlYXJjaC5oIGFuZCByZW1vdmUgc2VhcmNoLmguCisJQ2hhbmdlIGNhbGxz IG9mIHRzZWFyY2gvdGZpbmQgdG8gZXVfdHNlYXJjaC9ldV90ZmluZC4KKwkq IGR3YXJmX2dldGxvY2F0aW9uLmM6IExpa2V3aXNlLgorCSogZHdhcmZfZ2V0 bWFjcm9zLmM6IExpa2V3aXNlLgorCSogZHdhcmZfZ2V0c3JjbGluZXMuYzog Okxpa2V3aXNlLgorCSogZmRlLmM6IExpa2V3aXNlLgorCSogbGliZHdfZmlu ZF9zcGxpdF91bml0LmM6IExpa2V3aXNlLgorCSogbGliZHdfZmluZGN1LmM6 IExpa2V3aXNlLgorCUFkZCBsb2NrIGZvciBuZXh0X3R1X29mZnNldC9uZXh0 X2N1X29mZnNldC4KKwlSZWR1Y2UgcmV0dXJuIHN0YXRlbWVudHMgaW4gX19s aWJkd19maW5kY3UoKS4KKwkqIGR3YXJmX2dldGFsdC5jOiBMaWtld2lzZS4K KwlBZGQgbG9jayBmb3IgZGJnLT5hbHRfZHdhcmYvbWFpbi0+YWx0X2R3YXJm LgorCSogZHdhcmZfaGFzYXR0ci5jOiBMaWtld2lzZS4KKwlBZGQgbG9jayBm b3IgX19saWJkd19kaWVhYmJyZXYoKS4KKwkqIGxpYmR3X2ZpbmRfc3BsaXRf dW5pdC5jOiBMaWtld2lzZS4KKwlBZGQgbG9jayBmb3IgY3UtPnNwbGl0Lgor CiAyMDIzLTAyLTIyICBNYXJrIFdpZWxhYXJkICA8bWFya0BrbG9tcC5vcmc+ CiAKIAkqIGR3YXJmX2dldHNjb3Blcy5jIChvcmlnaW5fbWF0Y2gpOiBEb24n dCBmcmVlIGEtPnNjb3Blcy4KZGlmZiAtLWdpdCBhL2xpYmR3L2NpZS5jIGIv bGliZHcvY2llLmMKaW5kZXggMWIwYWFlN2MuLjc1OGRhZWY1IDEwMDY0NAot LS0gYS9saWJkdy9jaWUuYworKysgYi9saWJkdy9jaWUuYwpAQCAtMzMsNyAr MzMsNyBAQAogI2luY2x1ZGUgImNmaS5oIgogI2luY2x1ZGUgImVuY29kZWQt dmFsdWUuaCIKICNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzZWFy Y2guaD4KKyNpbmNsdWRlIDxldS1zZWFyY2guaD4KICNpbmNsdWRlIDxzdGRs aWIuaD4KIAogCkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50ZXJuX25ld19jaWUg KER3YXJmX0NGSSAqY2FjaGUsIER3YXJmX09mZiBvZmZzZXQsIGNvbnN0IER3 YXJmX0NJRSAqaW5mbykKICAgY2llLT5pbml0aWFsX3N0YXRlID0gTlVMTDsK IAogICAvKiBBZGQgdGhlIG5ldyBlbnRyeSB0byB0aGUgc2VhcmNoIHRyZWUu ICAqLwotICBpZiAodHNlYXJjaCAoY2llLCAmY2FjaGUtPmNpZV90cmVlLCAm Y29tcGFyZV9jaWUpID09IE5VTEwpCisgIGlmIChldV90c2VhcmNoIChjaWUs ICZjYWNoZS0+Y2llX3RyZWUsICZjb21wYXJlX2NpZSkgPT0gTlVMTCkKICAg ICB7CiAgICAgICBmcmVlIChjaWUpOwogICAgICAgX19saWJkd19zZXRlcnJu byAoRFdBUkZfRV9OT01FTSk7CkBAIC0xNjAsNyArMTYwLDcgQEAgaW50ZXJu YWxfZnVuY3Rpb24KIF9fbGliZHdfZmluZF9jaWUgKER3YXJmX0NGSSAqY2Fj aGUsIER3YXJmX09mZiBvZmZzZXQpCiB7CiAgIGNvbnN0IHN0cnVjdCBkd2Fy Zl9jaWUgY2llX2tleSA9IHsgLm9mZnNldCA9IG9mZnNldCB9OwotICBzdHJ1 Y3QgZHdhcmZfY2llICoqZm91bmQgPSB0ZmluZCAoJmNpZV9rZXksICZjYWNo ZS0+Y2llX3RyZWUsICZjb21wYXJlX2NpZSk7CisgIHN0cnVjdCBkd2FyZl9j aWUgKipmb3VuZCA9IGV1X3RmaW5kICgmY2llX2tleSwgJmNhY2hlLT5jaWVf dHJlZSwgJmNvbXBhcmVfY2llKTsKICAgaWYgKGZvdW5kICE9IE5VTEwpCiAg ICAgcmV0dXJuICpmb3VuZDsKIApAQCAtMTg5LDcgKzE4OSw3IEBAIGludGVy bmFsX2Z1bmN0aW9uCiBfX2xpYmR3X2ludGVybl9jaWUgKER3YXJmX0NGSSAq Y2FjaGUsIER3YXJmX09mZiBvZmZzZXQsIGNvbnN0IER3YXJmX0NJRSAqaW5m bykKIHsKICAgY29uc3Qgc3RydWN0IGR3YXJmX2NpZSBjaWVfa2V5ID0geyAu b2Zmc2V0ID0gb2Zmc2V0IH07Ci0gIHN0cnVjdCBkd2FyZl9jaWUgKipmb3Vu ZCA9IHRmaW5kICgmY2llX2tleSwgJmNhY2hlLT5jaWVfdHJlZSwgJmNvbXBh cmVfY2llKTsKKyAgc3RydWN0IGR3YXJmX2NpZSAqKmZvdW5kID0gZXVfdGZp bmQgKCZjaWVfa2V5LCAmY2FjaGUtPmNpZV90cmVlLCAmY29tcGFyZV9jaWUp OwogICBpZiAoZm91bmQgPT0gTlVMTCkKICAgICAvKiBXZSBoYXZlIG5vdCBy ZWFkIHRoaXMgQ0lFIHlldC4gIEVudGVyIGl0LiAgKi8KICAgICAodm9pZCkg aW50ZXJuX25ld19jaWUgKGNhY2hlLCBvZmZzZXQsIGluZm8pOwpkaWZmIC0t Z2l0IGEvbGliZHcvZHdhcmZfZ2V0YWx0LmMgYi9saWJkdy9kd2FyZl9nZXRh bHQuYwppbmRleCAwYTEyZGZhZS4uZjBiYzdiNTYgMTAwNjQ0Ci0tLSBhL2xp YmR3L2R3YXJmX2dldGFsdC5jCisrKyBiL2xpYmR3L2R3YXJmX2dldGFsdC5j CkBAIC00NCw2ICs0NCwxMCBAQAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKKy8qIGZpbmRfZGVidWdfYWx0bGlu aygpIG1vZGlmaWVzICJkYmctPmFsdF9kd2FyZiIuCisgICBkd2FyZl9nZXRh bHQoKSByZWFkcyAibWFpbi0+YWx0X2R3YXJmIi4KKyAgIE11dHVhbCBleGNs dXNpb24gaXMgZW5mb3JjZWQgdG8gcHJldmVudCBhIHJhY2UuICovCityd2xv Y2tfZGVmaW5lKHN0YXRpYywgYWx0X2R3YXJmX2xvY2spOwogCiBjaGFyICoK IGludGVybmFsX2Z1bmN0aW9uCkBAIC0xNTEsMzQgKzE1NSw1MiBAQCBmaW5k X2RlYnVnX2FsdGxpbmsgKER3YXJmICpkYmcpCiAgICAgewogICAgICAgRHdh cmYgKmFsdCA9IGR3YXJmX2JlZ2luIChmZCwgT19SRE9OTFkpOwogICAgICAg aWYgKGFsdCAhPSBOVUxMKQotCXsKLQkgIGRiZy0+YWx0X2R3YXJmID0gYWx0 OwotCSAgZGJnLT5hbHRfZmQgPSBmZDsKLQl9CisJICAgIHsKKyAgICAgICAg cndsb2NrX3dybG9jayhhbHRfZHdhcmZfbG9jayk7CisgICAgICAgIGRiZy0+ YWx0X2R3YXJmID0gYWx0OworICAgICAgICByd2xvY2tfdW5sb2NrKGFsdF9k d2FyZl9sb2NrKTsKKworCSAgICAgIGRiZy0+YWx0X2ZkID0gZmQ7CisJICAg IH0KICAgICAgIGVsc2UKLQljbG9zZSAoZmQpOwotICAgIH0KKwkgICAgICBj bG9zZSAoZmQpOworICAgICAgfQogfQogCiBEd2FyZiAqCiBkd2FyZl9nZXRh bHQgKER3YXJmICptYWluKQogeworICByd2xvY2tfcmRsb2NrKGFsdF9kd2Fy Zl9sb2NrKTsKKyAgRHdhcmYgKmFsdF9kd2FyZl9sb2NhbCA9IG1haW4tPmFs dF9kd2FyZjsKKyAgcndsb2NrX3VubG9jayhhbHRfZHdhcmZfbG9jayk7CisK ICAgLyogT25seSB0cnkgb25jZS4gICovCi0gIGlmIChtYWluID09IE5VTEwg fHwgbWFpbi0+YWx0X2R3YXJmID09ICh2b2lkICopIC0xKQorICBpZiAobWFp biA9PSBOVUxMIHx8IGFsdF9kd2FyZl9sb2NhbCA9PSAodm9pZCAqKSAtMSkK KyAgewogICAgIHJldHVybiBOVUxMOworICB9CiAKLSAgaWYgKG1haW4tPmFs dF9kd2FyZiAhPSBOVUxMKQotICAgIHJldHVybiBtYWluLT5hbHRfZHdhcmY7 CisgIGlmIChhbHRfZHdhcmZfbG9jYWwgIT0gTlVMTCkKKyAgeworICAgIHJl dHVybiBhbHRfZHdhcmZfbG9jYWw7CisgIH0KIAogICBmaW5kX2RlYnVnX2Fs dGxpbmsgKG1haW4pOwogCisgIHJ3bG9ja19yZGxvY2soYWx0X2R3YXJmX2xv Y2spOworICBhbHRfZHdhcmZfbG9jYWwgPSBtYWluLT5hbHRfZHdhcmY7Cisg IHJ3bG9ja191bmxvY2soYWx0X2R3YXJmX2xvY2spOworCiAgIC8qIElmIHdl IGZvdW5kIG5vdGhpbmcsIG1ha2Ugc3VyZSB3ZSBkb24ndCB0cnkgYWdhaW4u ICAqLwotICBpZiAobWFpbi0+YWx0X2R3YXJmID09IE5VTEwpCisgIGlmIChh bHRfZHdhcmZfbG9jYWwgPT0gTlVMTCkKICAgICB7CisgICAgICByd2xvY2tf d3Jsb2NrKGFsdF9kd2FyZl9sb2NrKTsKICAgICAgIG1haW4tPmFsdF9kd2Fy ZiA9ICh2b2lkICopIC0xOworICAgICAgcndsb2NrX3VubG9jayhhbHRfZHdh cmZfbG9jayk7CisKICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICBy ZXR1cm4gbWFpbi0+YWx0X2R3YXJmOworICByZXR1cm4gYWx0X2R3YXJmX2xv Y2FsOwogfQogSU5UREVGIChkd2FyZl9nZXRhbHQpCmRpZmYgLS1naXQgYS9s aWJkdy9kd2FyZl9nZXRsb2NhdGlvbi5jIGIvbGliZHcvZHdhcmZfZ2V0bG9j YXRpb24uYwppbmRleCA1NTNmZGM5OC4uZTI2YWZlMzcgMTAwNjQ0Ci0tLSBh L2xpYmR3L2R3YXJmX2dldGxvY2F0aW9uLmMKKysrIGIvbGliZHcvZHdhcmZf Z2V0bG9jYXRpb24uYwpAQCAtMzEsNyArMzEsNyBAQAogI2VuZGlmCiAKICNp bmNsdWRlIDxkd2FyZi5oPgotI2luY2x1ZGUgPHNlYXJjaC5oPgorI2luY2x1 ZGUgPGV1LXNlYXJjaC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1 ZGUgPGFzc2VydC5oPgogCkBAIC0xMzcsNyArMTM3LDcgQEAgbG9jX2NvbXBh cmUgKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKIAogLyogRm9y IGVhY2ggRFdfT1BfaW1wbGljaXRfdmFsdWUsIHdlIHN0b3JlIGEgc3BlY2lh bCBlbnRyeSBpbiB0aGUgY2FjaGUuCiAgICBUaGlzIHBvaW50cyB1cyBkaXJl Y3RseSB0byB0aGUgYmxvY2sgZGF0YSBmb3IgbGF0ZXIgZmV0Y2hpbmcuCi0g ICBSZXR1cm5zIHplcm8gb24gc3VjY2VzcywgLTEgb24gYmFkIERXQVJGIG9y IDEgaWYgdHNlYXJjaCBmYWlsZWQuICAqLworICAgUmV0dXJucyB6ZXJvIG9u IHN1Y2Nlc3MsIC0xIG9uIGJhZCBEV0FSRiBvciAxIGlmIGV1X3RzZWFyY2gg ZmFpbGVkLiAgKi8KIHN0YXRpYyBpbnQKIHN0b3JlX2ltcGxpY2l0X3ZhbHVl IChEd2FyZiAqZGJnLCB2b2lkICoqY2FjaGUsIER3YXJmX09wICpvcCkKIHsK QEAgLTE1NCw3ICsxNTQsNyBAQCBzdG9yZV9pbXBsaWNpdF92YWx1ZSAoRHdh cmYgKmRiZywgdm9pZCAqKmNhY2hlLCBEd2FyZl9PcCAqb3ApCiAgIGJsb2Nr LT5hZGRyID0gb3A7CiAgIGJsb2NrLT5kYXRhID0gKHVuc2lnbmVkIGNoYXIg KikgZGF0YTsKICAgYmxvY2stPmxlbmd0aCA9IG9wLT5udW1iZXI7Ci0gIGlm ICh1bmxpa2VseSAodHNlYXJjaCAoYmxvY2ssIGNhY2hlLCBsb2NfY29tcGFy ZSkgPT0gTlVMTCkpCisgIGlmICh1bmxpa2VseSAoZXVfdHNlYXJjaCAoYmxv Y2ssIGNhY2hlLCBsb2NfY29tcGFyZSkgPT0gTlVMTCkpCiAgICAgcmV0dXJu IDE7CiAgIHJldHVybiAwOwogfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIGR3YXJm X2dldGxvY2F0aW9uX2ltcGxpY2l0X3ZhbHVlIChEd2FyZl9BdHRyaWJ1dGUg KmF0dHIsIGNvbnN0IER3YXJmX09wICpvcCwKICAgICByZXR1cm4gLTE7CiAK ICAgc3RydWN0IGxvY19ibG9ja19zIGZha2UgPSB7IC5hZGRyID0gKHZvaWQg Kikgb3AgfTsKLSAgc3RydWN0IGxvY19ibG9ja19zICoqZm91bmQgPSB0Zmlu ZCAoJmZha2UsICZhdHRyLT5jdS0+bG9jcywgbG9jX2NvbXBhcmUpOworICBz dHJ1Y3QgbG9jX2Jsb2NrX3MgKipmb3VuZCA9IGV1X3RmaW5kICgmZmFrZSwg JmF0dHItPmN1LT5sb2NzLCBsb2NfY29tcGFyZSk7CiAgIGlmICh1bmxpa2Vs eSAoZm91bmQgPT0gTlVMTCkpCiAgICAgewogICAgICAgX19saWJkd19zZXRl cnJubyAoRFdBUkZfRV9OT19CTE9DSyk7CkBAIC0yMTEsNyArMjExLDcgQEAg aXNfY29uc3RhbnRfb2Zmc2V0IChEd2FyZl9BdHRyaWJ1dGUgKmF0dHIsCiAK ICAgLyogQ2hlY2sgd2hldGhlciB3ZSBhbHJlYWR5IGNhY2hlZCB0aGlzIGxv Y2F0aW9uLiAgKi8KICAgc3RydWN0IGxvY19zIGZha2UgPSB7IC5hZGRyID0g YXR0ci0+dmFscCB9OwotICBzdHJ1Y3QgbG9jX3MgKipmb3VuZCA9IHRmaW5k ICgmZmFrZSwgJmF0dHItPmN1LT5sb2NzLCBsb2NfY29tcGFyZSk7CisgIHN0 cnVjdCBsb2NfcyAqKmZvdW5kID0gZXVfdGZpbmQgKCZmYWtlLCAmYXR0ci0+ Y3UtPmxvY3MsIGxvY19jb21wYXJlKTsKIAogICBpZiAoZm91bmQgPT0gTlVM TCkKICAgICB7CkBAIC0yMzUsNyArMjM1LDcgQEAgaXNfY29uc3RhbnRfb2Zm c2V0IChEd2FyZl9BdHRyaWJ1dGUgKmF0dHIsCiAgICAgICBuZXdwLT5sb2Mg PSByZXN1bHQ7CiAgICAgICBuZXdwLT5ubG9jID0gMTsKIAotICAgICAgZm91 bmQgPSB0c2VhcmNoIChuZXdwLCAmYXR0ci0+Y3UtPmxvY3MsIGxvY19jb21w YXJlKTsKKyAgICAgIGZvdW5kID0gZXVfdHNlYXJjaCAobmV3cCwgJmF0dHIt PmN1LT5sb2NzLCBsb2NfY29tcGFyZSk7CiAgICAgfQogCiAgIGFzc2VydCAo KCpmb3VuZCktPm5sb2MgPT0gMSk7CkBAIC0yNjYsNyArMjY2LDcgQEAgX19s aWJkd19pbnRlcm5fZXhwcmVzc2lvbiAoRHdhcmYgKmRiZywgYm9vbCBvdGhl cl9ieXRlX29yZGVyLAogCiAgIC8qIENoZWNrIHdoZXRoZXIgd2UgYWxyZWFk eSBsb29rZWQgYXQgdGhpcyBsaXN0LiAgKi8KICAgc3RydWN0IGxvY19zIGZh a2UgPSB7IC5hZGRyID0gYmxvY2stPmRhdGEgfTsKLSAgc3RydWN0IGxvY19z ICoqZm91bmQgPSB0ZmluZCAoJmZha2UsIGNhY2hlLCBsb2NfY29tcGFyZSk7 CisgIHN0cnVjdCBsb2NfcyAqKmZvdW5kID0gZXVfdGZpbmQgKCZmYWtlLCBj YWNoZSwgbG9jX2NvbXBhcmUpOwogICBpZiAoZm91bmQgIT0gTlVMTCkKICAg ICB7CiAgICAgICAvKiBXZSBhbHJlYWR5IHNhdyBpdC4gICovCkBAIC02NTUs NyArNjU1LDcgQEAgX19saWJkd19pbnRlcm5fZXhwcmVzc2lvbiAoRHdhcmYg KmRiZywgYm9vbCBvdGhlcl9ieXRlX29yZGVyLAogICBuZXdwLT5hZGRyID0g YmxvY2stPmRhdGE7CiAgIG5ld3AtPmxvYyA9IHJlc3VsdDsKICAgbmV3cC0+ bmxvYyA9ICpsaXN0bGVuOwotICAodm9pZCkgdHNlYXJjaCAobmV3cCwgY2Fj aGUsIGxvY19jb21wYXJlKTsKKyAgKHZvaWQpIGV1X3RzZWFyY2ggKG5ld3As IGNhY2hlLCBsb2NfY29tcGFyZSk7CiAKICAgLyogV2UgZGlkIGl0LiAgKi8K ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9saWJkdy9kd2FyZl9nZXRtYWNy b3MuYyBiL2xpYmR3L2R3YXJmX2dldG1hY3Jvcy5jCmluZGV4IGZkOTI5NjY5 Li4xYWM1ZTQwMiAxMDA2NDQKLS0tIGEvbGliZHcvZHdhcmZfZ2V0bWFjcm9z LmMKKysrIGIvbGliZHcvZHdhcmZfZ2V0bWFjcm9zLmMKQEAgLTMyLDcgKzMy LDcgQEAKIAogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgPGR3YXJm Lmg+Ci0jaW5jbHVkZSA8c2VhcmNoLmg+CisjaW5jbHVkZSA8ZXUtc2VhcmNo Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+ CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCBjYWNoZV9vcF90YWJsZSAoRHdhcmYg KmRiZywgaW50IHNlY19pbmRleCwgRHdhcmZfT2ZmIG1hY29mZiwKIAkJRHdh cmZfRGllICpjdWRpZSkKIHsKICAgRHdhcmZfTWFjcm9fT3BfVGFibGUgZmFr ZSA9IHsgLm9mZnNldCA9IG1hY29mZiwgLnNlY19pbmRleCA9IHNlY19pbmRl eCB9OwotICBEd2FyZl9NYWNyb19PcF9UYWJsZSAqKmZvdW5kID0gdGZpbmQg KCZmYWtlLCAmZGJnLT5tYWNyb19vcHMsCisgIER3YXJmX01hY3JvX09wX1Rh YmxlICoqZm91bmQgPSBldV90ZmluZCAoJmZha2UsICZkYmctPm1hY3JvX29w cywKIAkJCQkJbWFjcm9fb3BfY29tcGFyZSk7CiAgIGlmIChmb3VuZCAhPSBO VUxMKQogICAgIHJldHVybiAqZm91bmQ7CkBAIC0yODcsNyArMjg3LDcgQEAg Y2FjaGVfb3BfdGFibGUgKER3YXJmICpkYmcsIGludCBzZWNfaW5kZXgsIER3 YXJmX09mZiBtYWNvZmYsCiAgIGlmICh0YWJsZSA9PSBOVUxMKQogICAgIHJl dHVybiBOVUxMOwogCi0gIER3YXJmX01hY3JvX09wX1RhYmxlICoqcmV0ID0g dHNlYXJjaCAodGFibGUsICZkYmctPm1hY3JvX29wcywKKyAgRHdhcmZfTWFj cm9fT3BfVGFibGUgKipyZXQgPSBldV90c2VhcmNoICh0YWJsZSwgJmRiZy0+ bWFjcm9fb3BzLAogCQkJCQltYWNyb19vcF9jb21wYXJlKTsKICAgaWYgKHVu bGlrZWx5IChyZXQgPT0gTlVMTCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvbGli ZHcvZHdhcmZfZ2V0c3JjbGluZXMuYyBiL2xpYmR3L2R3YXJmX2dldHNyY2xp bmVzLmMKaW5kZXggZGYwMDNjNWYuLjM1NjI4NGEwIDEwMDY0NAotLS0gYS9s aWJkdy9kd2FyZl9nZXRzcmNsaW5lcy5jCisrKyBiL2xpYmR3L2R3YXJmX2dl dHNyY2xpbmVzLmMKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxhc3Nl cnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdHJpbmcu aD4KLSNpbmNsdWRlIDxzZWFyY2guaD4KKyNpbmNsdWRlIDxldS1zZWFyY2gu aD4KIAogI2luY2x1ZGUgImR3YXJmLmgiCiAjaW5jbHVkZSAibGliZHdQLmgi CkBAIC0xMTM4LDcgKzExMzgsNyBAQCBfX2xpYmR3X2dldHNyY2xpbmVzIChE d2FyZiAqZGJnLCBEd2FyZl9PZmYgZGVidWdfbGluZV9vZmZzZXQsCiAJCSAg ICAgRHdhcmZfTGluZXMgKipsaW5lc3AsIER3YXJmX0ZpbGVzICoqZmlsZXNw KQogewogICBzdHJ1Y3QgZmlsZXNfbGluZXNfcyBmYWtlID0geyAuZGVidWdf bGluZV9vZmZzZXQgPSBkZWJ1Z19saW5lX29mZnNldCB9OwotICBzdHJ1Y3Qg ZmlsZXNfbGluZXNfcyAqKmZvdW5kID0gdGZpbmQgKCZmYWtlLCAmZGJnLT5m aWxlc19saW5lcywKKyAgc3RydWN0IGZpbGVzX2xpbmVzX3MgKipmb3VuZCA9 IGV1X3RmaW5kICgmZmFrZSwgJmRiZy0+ZmlsZXNfbGluZXMsCiAJCQkJCWZp bGVzX2xpbmVzX2NvbXBhcmUpOwogICBpZiAoZm91bmQgPT0gTlVMTCkKICAg ICB7CkBAIC0xMTYwLDcgKzExNjAsNyBAQCBfX2xpYmR3X2dldHNyY2xpbmVz IChEd2FyZiAqZGJnLCBEd2FyZl9PZmYgZGVidWdfbGluZV9vZmZzZXQsCiAK ICAgICAgIG5vZGUtPmRlYnVnX2xpbmVfb2Zmc2V0ID0gZGVidWdfbGluZV9v ZmZzZXQ7CiAKLSAgICAgIGZvdW5kID0gdHNlYXJjaCAobm9kZSwgJmRiZy0+ ZmlsZXNfbGluZXMsIGZpbGVzX2xpbmVzX2NvbXBhcmUpOworICAgICAgZm91 bmQgPSBldV90c2VhcmNoIChub2RlLCAmZGJnLT5maWxlc19saW5lcywgZmls ZXNfbGluZXNfY29tcGFyZSk7CiAgICAgICBpZiAoZm91bmQgPT0gTlVMTCkK IAl7CiAJICBfX2xpYmR3X3NldGVycm5vIChEV0FSRl9FX05PTUVNKTsKZGlm ZiAtLWdpdCBhL2xpYmR3L2R3YXJmX2hhc2F0dHIuYyBiL2xpYmR3L2R3YXJm X2hhc2F0dHIuYwppbmRleCBlY2EwODM5NC4uOTJmOGRlNjggMTAwNjQ0Ci0t LSBhL2xpYmR3L2R3YXJmX2hhc2F0dHIuYworKysgYi9saWJkdy9kd2FyZl9o YXNhdHRyLmMKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSA8ZHdhcmYu aD4KICNpbmNsdWRlICJsaWJkd1AuaCIKIAorLyogZHdhcmZfaGFzYXR0cigp IGNhbGxzIF9fbGliZHdfZGllYWJicmV2KCkgaW4gbGliZHdQLmguCisgICBf X2xpYmR3X2RpZWFiYnJldigpIHJlYWRzL3dyaXRlcyAiZGllLT5hYmJyZXYi LgorICAgTXV0dWFsIGV4Y2x1c2lvbiBpcyBlbmZvcmNlZCBhcm91bmQgdGhl IGNhbGwgdG8gX19saWJkd19kaWVhYmJyZXYgdG8gcHJldmVudCBhIHJhY2Uu ICovCityd2xvY2tfZGVmaW5lKHN0YXRpYywgZGllX2FiYnJldl9sb2NrKTsK IAogaW50CiBkd2FyZl9oYXNhdHRyIChEd2FyZl9EaWUgKmRpZSwgdW5zaWdu ZWQgaW50IHNlYXJjaF9uYW1lKQpAQCAtNDEsOCArNDUsMTMgQEAgZHdhcmZf aGFzYXR0ciAoRHdhcmZfRGllICpkaWUsIHVuc2lnbmVkIGludCBzZWFyY2hf bmFtZSkKICAgaWYgKGRpZSA9PSBOVUxMKQogICAgIHJldHVybiAwOwogCisg IHJ3bG9ja193cmxvY2soZGllX2FiYnJldl9sb2NrKTsKKwogICAvKiBGaW5k IHRoZSBhYmJyZXZpYXRpb24gZW50cnkuICAqLwogICBEd2FyZl9BYmJyZXYg KmFiYnJldnAgPSBfX2xpYmR3X2RpZWFiYnJldiAoZGllLCBOVUxMKTsKKwor ICByd2xvY2tfdW5sb2NrKGRpZV9hYmJyZXZfbG9jayk7CisKICAgaWYgKHVu bGlrZWx5IChhYmJyZXZwID09IERXQVJGX0VORF9BQkJSRVYpKQogICAgIHsK ICAgICAgIF9fbGliZHdfc2V0ZXJybm8gKERXQVJGX0VfSU5WQUxJRF9EV0FS Rik7CmRpZmYgLS1naXQgYS9saWJkdy9mZGUuYyBiL2xpYmR3L2ZkZS5jCmlu ZGV4IDczZDU1MWI2Li41NTA2NTUyOCAxMDA2NDQKLS0tIGEvbGliZHcvZmRl LmMKKysrIGIvbGliZHcvZmRlLmMKQEAgLTMxLDcgKzMxLDcgQEAKICNlbmRp ZgogCiAjaW5jbHVkZSAiY2ZpLmgiCi0jaW5jbHVkZSA8c2VhcmNoLmg+Cisj aW5jbHVkZSA8ZXUtc2VhcmNoLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAK ICNpbmNsdWRlICJlbmNvZGVkLXZhbHVlLmgiCkBAIC0xMjIsNyArMTIyLDcg QEAgaW50ZXJuX2ZkZSAoRHdhcmZfQ0ZJICpjYWNoZSwgY29uc3QgRHdhcmZf RkRFICplbnRyeSkKICAgICBmZGUtPmluc3RydWN0aW9ucyArPSBjaWUtPmZk ZV9hdWdtZW50YXRpb25fZGF0YV9zaXplOwogCiAgIC8qIEFkZCB0aGUgbmV3 IGVudHJ5IHRvIHRoZSBzZWFyY2ggdHJlZS4gICovCi0gIHN0cnVjdCBkd2Fy Zl9mZGUgKip0cmVzID0gdHNlYXJjaCAoZmRlLCAmY2FjaGUtPmZkZV90cmVl LCAmY29tcGFyZV9mZGUpOworICBzdHJ1Y3QgZHdhcmZfZmRlICoqdHJlcyA9 IGV1X3RzZWFyY2ggKGZkZSwgJmNhY2hlLT5mZGVfdHJlZSwgJmNvbXBhcmVf ZmRlKTsKICAgaWYgKHRyZXMgPT0gTlVMTCkKICAgICB7CiAgICAgICBmcmVl IChmZGUpOwpAQCAtMjUyLDcgKzI1Miw3IEBAIF9fbGliZHdfZmluZF9mZGUg KER3YXJmX0NGSSAqY2FjaGUsIER3YXJmX0FkZHIgYWRkcmVzcykKICAgLyog TG9vayBmb3IgYSBjYWNoZWQgRkRFIGNvdmVyaW5nIHRoaXMgYWRkcmVzcy4g ICovCiAKICAgY29uc3Qgc3RydWN0IGR3YXJmX2ZkZSBmZGVfa2V5ID0geyAu c3RhcnQgPSBhZGRyZXNzLCAuZW5kID0gMCB9OwotICBzdHJ1Y3QgZHdhcmZf ZmRlICoqZm91bmQgPSB0ZmluZCAoJmZkZV9rZXksICZjYWNoZS0+ZmRlX3Ry ZWUsICZjb21wYXJlX2ZkZSk7CisgIHN0cnVjdCBkd2FyZl9mZGUgKipmb3Vu ZCA9IGV1X3RmaW5kICgmZmRlX2tleSwgJmNhY2hlLT5mZGVfdHJlZSwgJmNv bXBhcmVfZmRlKTsKICAgaWYgKGZvdW5kICE9IE5VTEwpCiAgICAgcmV0dXJu ICpmb3VuZDsKIApkaWZmIC0tZ2l0IGEvbGliZHcvbGliZHdfZmluZF9zcGxp dF91bml0LmMgYi9saWJkdy9saWJkd19maW5kX3NwbGl0X3VuaXQuYwppbmRl eCBhMjJlN2JjOS4uNGRhNzhiZTQgMTAwNjQ0Ci0tLSBhL2xpYmR3L2xpYmR3 X2ZpbmRfc3BsaXRfdW5pdC5jCisrKyBiL2xpYmR3L2xpYmR3X2ZpbmRfc3Bs aXRfdW5pdC5jCkBAIC0zNCwxMyArMzQsMTggQEAKICNpbmNsdWRlICJsaWJl bGZQLmgiCiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzZWFy Y2guaD4KKyNpbmNsdWRlIDxldS1zZWFyY2guaD4KICNpbmNsdWRlIDxzdGRs aWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPGZjbnRs Lmg+CiAKKy8qIF9fbGliZHdfbGlua19za2VsX3NwbGl0KCkgbW9kaWZpZXMg InNrZWwtPnNwbGl0ID0gc3BsaXQiIGFuZCAic3BsaXQtPnNwbGl0ID0gc2tl bCIuCisgICAiY3UtPnNwbGl0IiBpcyByZWFkIGF0IG11bHRpcGxlIGxvY2F0 aW9ucyBhbmQgY29uZGl0aW9uYWxseSB1cGRhdGVkLgorICAgTXV0dWFsIGV4 Y2x1c2lvbiBpcyBlbmZvcmNlZCB0byBwcmV2ZW50IGEgcmFjZS4gKi8KK3J3 bG9ja19kZWZpbmUoc3RhdGljLCBjdV9zcGxpdF9sb2NrKTsKKwogdm9pZAog dHJ5X3NwbGl0X2ZpbGUgKER3YXJmX0NVICpjdSwgY29uc3QgY2hhciAqZHdv X3BhdGgpCiB7CkBAIC01Nyw3ICs2Miw3IEBAIHRyeV9zcGxpdF9maWxlIChE d2FyZl9DVSAqY3UsIGNvbnN0IGNoYXIgKmR3b19wYXRoKQogCSAgICAgIGlm IChzcGxpdC0+dW5pdF90eXBlID09IERXX1VUX3NwbGl0X2NvbXBpbGUKIAkJ ICAmJiBjdS0+dW5pdF9pZDggPT0gc3BsaXQtPnVuaXRfaWQ4KQogCQl7Ci0J CSAgaWYgKHRzZWFyY2ggKHNwbGl0LT5kYmcsICZjdS0+ZGJnLT5zcGxpdF90 cmVlLAorCQkgIGlmIChldV90c2VhcmNoIChzcGxpdC0+ZGJnLCAmY3UtPmRi Zy0+c3BsaXRfdHJlZSwKIAkJCSAgICAgICBfX2xpYmR3X2ZpbmRkYmdfY2Ip ID09IE5VTEwpCiAJCSAgICB7CiAJCSAgICAgIC8qIFNvbWV0aGluZyB3ZW50 IHdyb25nLiAgRG9uJ3QgbGluay4gICovCkBAIC02NSw4ICs3MCwxMiBAQCB0 cnlfc3BsaXRfZmlsZSAoRHdhcmZfQ1UgKmN1LCBjb25zdCBjaGFyICpkd29f cGF0aCkKIAkJICAgICAgYnJlYWs7CiAJCSAgICB9CiAKLQkJICAvKiBMaW5r IHNrZWxldG9uIGFuZCBzcGxpdCBjb21waWxlIHVuaXRzLiAgKi8KLQkJICBf X2xpYmR3X2xpbmtfc2tlbF9zcGxpdCAoY3UsIHNwbGl0KTsKKwkJCXJ3bG9j a193cmxvY2soY3Vfc3BsaXRfbG9jayk7CisKKwkJCS8qIExpbmsgc2tlbGV0 b24gYW5kIHNwbGl0IGNvbXBpbGUgdW5pdHMuICAqLworCQkJX19saWJkd19s aW5rX3NrZWxfc3BsaXQgKGN1LCBzcGxpdCk7CisKKwkJCXJ3bG9ja191bmxv Y2soY3Vfc3BsaXRfbG9jayk7CiAKIAkJICAvKiBXZSBoYXZlIGV2ZXJ5dGhp bmcgd2UgbmVlZCBmcm9tIHRoaXMgRUxGCiAJCSAgICAgZmlsZS4gIEFuZCB3 ZSBhcmUgZ29pbmcgdG8gY2xvc2UgdGhlIGZkIHRvCkBAIC03NSw4ICs4NCwx MyBAQCB0cnlfc3BsaXRfZmlsZSAoRHdhcmZfQ1UgKmN1LCBjb25zdCBjaGFy ICpkd29fcGF0aCkKIAkJICBicmVhazsKIAkJfQogCSAgICB9Ci0JICBpZiAo Y3UtPnNwbGl0ID09IChEd2FyZl9DVSAqKSAtMSkKLQkgICAgZHdhcmZfZW5k IChzcGxpdF9kd2FyZik7CisKKwkJcndsb2NrX3JkbG9jayhjdV9zcGxpdF9s b2NrKTsKKworCQlpZiAoY3UtPnNwbGl0ID09IChEd2FyZl9DVSAqKSAtMSkK KwkJCWR3YXJmX2VuZCAoc3BsaXRfZHdhcmYpOworCisJCXJ3bG9ja191bmxv Y2soY3Vfc3BsaXRfbG9jayk7CiAJfQogICAgICAgLyogQWx3YXlzIGNsb3Nl LCBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gcnVuIG91dCBvZiBmaWxlCiAJ IGRlc2NyaXB0b3JzLiAgU2VlIGFsc28gdGhlIGVsZl9mY250bCBFTEZfQ19G RERPTkUgY2FsbApAQCAtODksMjAgKzEwMywyNiBAQCBEd2FyZl9DVSAqCiBp bnRlcm5hbF9mdW5jdGlvbgogX19saWJkd19maW5kX3NwbGl0X3VuaXQgKER3 YXJmX0NVICpjdSkKIHsKLSAgLyogT25seSB0cnkgb25jZS4gICovCi0gIGlm IChjdS0+c3BsaXQgIT0gKER3YXJmX0NVICopIC0xKQotICAgIHJldHVybiBj dS0+c3BsaXQ7CisJcndsb2NrX3JkbG9jayhjdV9zcGxpdF9sb2NrKTsKKwlE d2FyZl9DVSAqY3Vfc3BsaXRfbG9jYWwgPSBjdS0+c3BsaXQ7CisJcndsb2Nr X3VubG9jayhjdV9zcGxpdF9sb2NrKTsKIAotICAvKiBXZSBuZWVkIGEgc2tl bGV0b24gdW5pdCB3aXRoIGEgY29tcF9kaXIgYW5kIFtHTlVfXWR3b19uYW1l IGF0dHJpYnV0ZXMuCisJLyogT25seSB0cnkgb25jZS4gICovCisJaWYgKGN1 X3NwbGl0X2xvY2FsICE9IChEd2FyZl9DVSAqKSAtMSkKKwl7CisJCXJldHVy biBjdV9zcGxpdF9sb2NhbDsKKwl9CisKKwkvKiBXZSBuZWVkIGEgc2tlbGV0 b24gdW5pdCB3aXRoIGEgY29tcF9kaXIgYW5kIFtHTlVfXWR3b19uYW1lIGF0 dHJpYnV0ZXMuCiAgICAgIFRoZSBzcGxpdCB1bml0IHdpbGwgYmUgdGhlIGZp cnN0IGluIHRoZSBkd28gZmlsZSBhbmQgc2hvdWxkIGhhdmUgdGhlCiAgICAg IHNhbWUgaWQgYXMgdGhlIHNrZWxldG9uLiAgKi8KLSAgaWYgKGN1LT51bml0 X3R5cGUgPT0gRFdfVVRfc2tlbGV0b24pCisJaWYgKGN1LT51bml0X3R5cGUg PT0gRFdfVVRfc2tlbGV0b24pCiAgICAgewogICAgICAgRHdhcmZfRGllIGN1 ZGllID0gQ1VESUUgKGN1KTsKICAgICAgIER3YXJmX0F0dHJpYnV0ZSBkd29f bmFtZTsKICAgICAgIC8qIEl0IGlzIGZpbmUgaWYgZHdvX2RpciBkb2Vzbid0 IGV4aXN0cywgYnV0IHRoZW4gZHdvX25hbWUgbmVlZHMKIAkgdG8gYmUgYW4g YWJzb2x1dGUgcGF0aC4gICovCi0gICAgICBpZiAoZHdhcmZfYXR0ciAoJmN1 ZGllLCBEV19BVF9kd29fbmFtZSwgJmR3b19uYW1lKSAhPSBOVUxMCisgICAg aWYgKGR3YXJmX2F0dHIgKCZjdWRpZSwgRFdfQVRfZHdvX25hbWUsICZkd29f bmFtZSkgIT0gTlVMTAogCSAgfHwgZHdhcmZfYXR0ciAoJmN1ZGllLCBEV19B VF9HTlVfZHdvX25hbWUsICZkd29fbmFtZSkgIT0gTlVMTCkKIAl7CiAJICAv KiBGaXJzdCB0cnkgdGhlIGR3byBmaWxlIG5hbWUgaW4gdGhlIHNhbWUgZGly ZWN0b3J5CkBAIC0xMTAsMTMgKzEzMCwxNyBAQCBfX2xpYmR3X2ZpbmRfc3Bs aXRfdW5pdCAoRHdhcmZfQ1UgKmN1KQogCSAgY29uc3QgY2hhciAqZHdvX2Zp bGUgPSBkd2FyZl9mb3Jtc3RyaW5nICgmZHdvX25hbWUpOwogCSAgY29uc3Qg Y2hhciAqZGVidWdkaXIgPSBjdS0+ZGJnLT5kZWJ1Z2RpcjsKIAkgIGNoYXIg KmR3b19wYXRoID0gX19saWJkd19maWxlcGF0aCAoZGVidWdkaXIsIE5VTEws IGR3b19maWxlKTsKLQkgIGlmIChkd29fcGF0aCAhPSBOVUxMKQorCQlpZiAo ZHdvX3BhdGggIT0gTlVMTCkKIAkgICAgewogCSAgICAgIHRyeV9zcGxpdF9m aWxlIChjdSwgZHdvX3BhdGgpOwogCSAgICAgIGZyZWUgKGR3b19wYXRoKTsK IAkgICAgfQogCi0JICBpZiAoY3UtPnNwbGl0ID09IChEd2FyZl9DVSAqKSAt MSkKKwkJcndsb2NrX3JkbG9jayhjdV9zcGxpdF9sb2NrKTsKKwkJY3Vfc3Bs aXRfbG9jYWwgPSBjdS0+c3BsaXQ7CisJCXJ3bG9ja191bmxvY2soY3Vfc3Bs aXRfbG9jayk7CisKKwkJaWYgKGN1X3NwbGl0X2xvY2FsID09IChEd2FyZl9D VSAqKSAtMSkKIAkgICAgewogCSAgICAgIC8qIFRyeSBjb21wZGlyIHBsdXMg ZHdvX25hbWUuICAqLwogCSAgICAgIER3YXJmX0F0dHJpYnV0ZSBjb21wZGly OwpAQCAtMTM4LDkgKzE2MiwxNSBAQCBfX2xpYmR3X2ZpbmRfc3BsaXRfdW5p dCAoRHdhcmZfQ1UgKmN1KQogCX0KICAgICB9CiAKLSAgLyogSWYgd2UgZm91 bmQgbm90aGluZywgbWFrZSBzdXJlIHdlIGRvbid0IHRyeSBhZ2Fpbi4gICov Ci0gIGlmIChjdS0+c3BsaXQgPT0gKER3YXJmX0NVICopIC0xKQotICAgIGN1 LT5zcGxpdCA9IE5VTEw7CisJcndsb2NrX3dybG9jayhjdV9zcGxpdF9sb2Nr KTsKKworCS8qIElmIHdlIGZvdW5kIG5vdGhpbmcsIG1ha2Ugc3VyZSB3ZSBk b24ndCB0cnkgYWdhaW4uICAqLworCWlmIChjdS0+c3BsaXQgPT0gKER3YXJm X0NVICopIC0xKQorCXsKKwkJY3UtPnNwbGl0ID0gTlVMTDsKKwkJY3Vfc3Bs aXRfbG9jYWwgPSBjdS0+c3BsaXQ7CisJfQogCi0gIHJldHVybiBjdS0+c3Bs aXQ7CisJcndsb2NrX3VubG9jayhjdV9zcGxpdF9sb2NrKTsKKwlyZXR1cm4g Y3Vfc3BsaXRfbG9jYWw7CiB9CmRpZmYgLS1naXQgYS9saWJkdy9saWJkd19m aW5kY3UuYyBiL2xpYmR3L2xpYmR3X2ZpbmRjdS5jCmluZGV4IGVkNzQ0MjMx Li45N2ZjZjgxMiAxMDA2NDQKLS0tIGEvbGliZHcvbGliZHdfZmluZGN1LmMK KysrIGIvbGliZHcvbGliZHdfZmluZGN1LmMKQEAgLTMyLDkgKzMyLDEzIEBA CiAjZW5kaWYKIAogI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPHNl YXJjaC5oPgorI2luY2x1ZGUgPGV1LXNlYXJjaC5oPgogI2luY2x1ZGUgImxp YmR3UC5oIgogCisvKiBfX2xpYmR3X2ZpbmRjdSBtb2RpZmllcyAiJmRiZy0+ bmV4dF90dV9vZmZzZXQgOiAmZGJnLT5uZXh0X2N1X29mZnNldCIuCisgICBN YXkgcmVhZCBvciB3cml0ZSwgc28gbXV0dWFsIGV4Y2x1c2lvbiBpcyBlbmZv cmNlZCB0byBwcmV2ZW50IGEgcmFjZS4gKi8KK3J3bG9ja19kZWZpbmUoc3Rh dGljLCBuZXh0X3R1Y3Vfb2Zmc2V0X2xvY2spOworCiBzdGF0aWMgaW50CiBm aW5kY3VfY2IgKGNvbnN0IHZvaWQgKmFyZzEsIGNvbnN0IHZvaWQgKmFyZzIp CiB7CkBAIC0yMTMsNyArMjE3LDcgQEAgX19saWJkd19pbnRlcm5fbmV4dF91 bml0IChEd2FyZiAqZGJnLCBib29sIGRlYnVnX3R5cGVzKQogICAgIER3YXJm X1NpZzhfSGFzaF9pbnNlcnQgKCZkYmctPnNpZzhfaGFzaCwgdW5pdF9pZDgs IG5ld3ApOwogCiAgIC8qIEFkZCB0aGUgbmV3IGVudHJ5IHRvIHRoZSBzZWFy Y2ggdHJlZS4gICovCi0gIGlmICh0c2VhcmNoIChuZXdwLCB0cmVlLCBmaW5k Y3VfY2IpID09IE5VTEwpCisgIGlmIChldV90c2VhcmNoIChuZXdwLCB0cmVl LCBmaW5kY3VfY2IpID09IE5VTEwpCiAgICAgewogICAgICAgLyogU29tZXRo aW5nIHdlbnQgd3JvbmcuICBVbmRvIHRoZSBvcGVyYXRpb24uICAqLwogICAg ICAgKm9mZnNldHAgPSBvbGRvZmY7CkBAIC0yMzQsMjggKzIzOCw0MCBAQCBf X2xpYmR3X2ZpbmRjdSAoRHdhcmYgKmRiZywgRHdhcmZfT2ZmIHN0YXJ0LCBi b29sIHY0X2RlYnVnX3R5cGVzKQogCiAgIC8qIE1heWJlIHdlIGFscmVhZHkg a25vdyB0aGF0IENVLiAgKi8KICAgc3RydWN0IER3YXJmX0NVIGZha2UgPSB7 IC5zdGFydCA9IHN0YXJ0LCAuZW5kID0gMCB9OwotICBzdHJ1Y3QgRHdhcmZf Q1UgKipmb3VuZCA9IHRmaW5kICgmZmFrZSwgdHJlZSwgZmluZGN1X2NiKTsK LSAgaWYgKGZvdW5kICE9IE5VTEwpCisgIHN0cnVjdCBEd2FyZl9DVSAqKmZv dW5kID0gZXVfdGZpbmQgKCZmYWtlLCB0cmVlLCBmaW5kY3VfY2IpOworICBz dHJ1Y3QgRHdhcmZfQ1UgKnJlc3VsdCA9IE5VTEw7CisKKyAgaWYgKGZvdW5k ICE9IE5VTEwpewogICAgIHJldHVybiAqZm91bmQ7CisgIH0KIAotICBpZiAo c3RhcnQgPCAqbmV4dF9vZmZzZXQpCi0gICAgewotICAgICAgX19saWJkd19z ZXRlcnJubyAoRFdBUkZfRV9JTlZBTElEX0RXQVJGKTsKLSAgICAgIHJldHVy biBOVUxMOwotICAgIH0KKyAgcndsb2NrX3dybG9jayhuZXh0X3R1Y3Vfb2Zm c2V0X2xvY2spOwogCi0gIC8qIE5vLiAgVGhlbiByZWFkIG1vcmUgQ1VzLiAg Ki8KLSAgd2hpbGUgKDEpCisgIGlmIChzdGFydCA8ICpuZXh0X29mZnNldCkK KyAgeworICAgIF9fbGliZHdfc2V0ZXJybm8gKERXQVJGX0VfSU5WQUxJRF9E V0FSRik7CisgIH0KKyAgZWxzZQorICB7CisgICAgLyogTm8uICBUaGVuIHJl YWQgbW9yZSBDVXMuICAqLworICAgIHdoaWxlICgxKQogICAgIHsKICAgICAg IHN0cnVjdCBEd2FyZl9DVSAqbmV3cCA9IF9fbGliZHdfaW50ZXJuX25leHRf dW5pdCAoZGJnLCB2NF9kZWJ1Z190eXBlcyk7Ci0gICAgICBpZiAobmV3cCA9 PSBOVUxMKQotCXJldHVybiBOVUxMOworICAgICAgaWYgKG5ld3AgPT0gTlVM TCl7CisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgICAgIGJyZWFrOwor ICAgICAgfQogCiAgICAgICAvKiBJcyB0aGlzIHRoZSBvbmUgd2UgYXJlIGxv b2tpbmcgZm9yPyAgKi8KLSAgICAgIGlmIChzdGFydCA8ICpuZXh0X29mZnNl dCB8fCBzdGFydCA9PSBuZXdwLT5zdGFydCkKLQlyZXR1cm4gbmV3cDsKKyAg ICAgIGlmIChzdGFydCA8ICpuZXh0X29mZnNldCB8fCBzdGFydCA9PSBuZXdw LT5zdGFydCl7CisgICAgICAgIHJlc3VsdCA9IG5ld3A7CisgICAgICAgIGJy ZWFrOworICAgICAgfQogICAgIH0KLSAgLyogTk9UUkVBQ0hFRCAqLworICB9 CisKKyAgcndsb2NrX3VubG9jayhuZXh0X3R1Y3Vfb2Zmc2V0X2xvY2spOwor ICByZXR1cm4gcmVzdWx0OwogfQogCiBzdHJ1Y3QgRHdhcmZfQ1UgKgpAQCAt MjgzLDcgKzI5OSw3IEBAIF9fbGliZHdfZmluZGN1X2FkZHIgKER3YXJmICpk YmcsIHZvaWQgKmFkZHIpCiAgICAgcmV0dXJuIE5VTEw7CiAKICAgc3RydWN0 IER3YXJmX0NVIGZha2UgPSB7IC5zdGFydCA9IHN0YXJ0LCAuZW5kID0gMCB9 OwotICBzdHJ1Y3QgRHdhcmZfQ1UgKipmb3VuZCA9IHRmaW5kICgmZmFrZSwg dHJlZSwgZmluZGN1X2NiKTsKKyAgc3RydWN0IER3YXJmX0NVICoqZm91bmQg PSBldV90ZmluZCAoJmZha2UsIHRyZWUsIGZpbmRjdV9jYik7CiAKICAgaWYg KGZvdW5kICE9IE5VTEwpCiAgICAgcmV0dXJuICpmb3VuZDsKQEAgLTI5OCw3 ICszMTQsNyBAQCBfX2xpYmR3X2ZpbmRfc3BsaXRfZGJnX2FkZHIgKER3YXJm ICpkYmcsIHZvaWQgKmFkZHIpCiAgIC8qIFhYWCBBc3N1bWVzIHNwbGl0IERX QVJGIG9ubHkgaGFzIENVcyBpbiBtYWluIElEWF9kZWJ1Z19pbmZvLiAgKi8K ICAgRWxmX0RhdGEgZmFrZV9kYXRhID0geyAuZF9idWYgPSBhZGRyLCAuZF9z aXplID0gMCB9OwogICBEd2FyZiBmYWtlID0geyAuc2VjdGlvbmRhdGFbSURY X2RlYnVnX2luZm9dID0gJmZha2VfZGF0YSB9OwotICBEd2FyZiAqKmZvdW5k ID0gdGZpbmQgKCZmYWtlLCAmZGJnLT5zcGxpdF90cmVlLCBfX2xpYmR3X2Zp bmRkYmdfY2IpOworICBEd2FyZiAqKmZvdW5kID0gZXVfdGZpbmQgKCZmYWtl LCAmZGJnLT5zcGxpdF90cmVlLCBfX2xpYmR3X2ZpbmRkYmdfY2IpOwogCiAg IGlmIChmb3VuZCAhPSBOVUxMKQogICAgIHJldHVybiAqZm91bmQ7CmRpZmYg LS1naXQgYS9saWJkd2ZsL0NoYW5nZUxvZyBiL2xpYmR3ZmwvQ2hhbmdlTG9n CmluZGV4IDU0ZDg1OTIxLi5iOTA5MjBhYyAxMDA2NDQKLS0tIGEvbGliZHdm bC9DaGFuZ2VMb2cKKysrIGIvbGliZHdmbC9DaGFuZ2VMb2cKQEAgLTEsMyAr MSw4IEBACisyMDIzLTA4LTA4ICBIZWF0aGVyIE1jSW50eXJlICA8aHNtMkBy aWNlLmVkdT4KKworCSogY3UuYzogQWRkIGV1LXNlYXJjaC5oIGFuZCByZW1v dmUgc2VhcmNoLmguCisJQ2hhbmdlIGNhbGwgb2YgdHNlYXJjaCB0byBldV90 c2VhcmNoLgorCiAyMDIzLTA0LTI0ICBKb2huIEdhbGxhZ2hlciAgPGpvaG5A Z2xsZ2hyLmNvbT4KIAogCSogZ3ppcC5jOiBGaXggbWVtb3J5IGxlYWsgaW4g dW56aXAoKQpkaWZmIC0tZ2l0IGEvbGliZHdmbC9jdS5jIGIvbGliZHdmbC9j dS5jCmluZGV4IGIxYWZiMTlhLi43MTgzODAxMSAxMDA2NDQKLS0tIGEvbGli ZHdmbC9jdS5jCisrKyBiL2xpYmR3ZmwvY3UuYwpAQCAtMzMsNyArMzMsNyBA QAogI2luY2x1ZGUgImxpYmR3ZmxQLmgiCiAjaW5jbHVkZSAibGliZHdQLmgi CiAjaW5jbHVkZSAibWVtb3J5LWFjY2Vzcy5oIgotI2luY2x1ZGUgPHNlYXJj aC5oPgorI2luY2x1ZGUgPGV1LXNlYXJjaC5oPgogCiAKIHN0YXRpYyBpbmxp bmUgRHdhcmZfQXJhbmdlICoKQEAgLTE5OCw3ICsxOTgsNyBAQCBpbnRlcm5f Y3UgKER3ZmxfTW9kdWxlICptb2QsIER3YXJmX09mZiBjdW9mZiwgc3RydWN0 IGR3ZmxfY3UgKipyZXN1bHQpCiAKICAgc3RydWN0IGR3ZmxfY3Uga2V5Owog ICBrZXkuZGllLmN1ID0gZGllLT5jdTsKLSAgc3RydWN0IGR3ZmxfY3UgKipm b3VuZCA9IHRzZWFyY2ggKCZrZXksICZtb2QtPmxhenlfY3Vfcm9vdCwgJmNv bXBhcmVfY3VrZXkpOworICBzdHJ1Y3QgZHdmbF9jdSAqKmZvdW5kID0gZXVf dHNlYXJjaCAoJmtleSwgJm1vZC0+bGF6eV9jdV9yb290LCAmY29tcGFyZV9j dWtleSk7CiAgIGlmICh1bmxpa2VseSAoZm91bmQgPT0gTlVMTCkpCiAgICAg cmV0dXJuIERXRkxfRV9OT01FTTsKIApkaWZmIC0tZ2l0IGEvbGliZWxmL0No YW5nZUxvZyBiL2xpYmVsZi9DaGFuZ2VMb2cKaW5kZXggMWQ1MTc4Y2EuLjRh MWVjZTMwIDEwMDY0NAotLS0gYS9saWJlbGYvQ2hhbmdlTG9nCisrKyBiL2xp YmVsZi9DaGFuZ2VMb2cKQEAgLTEsNiArMSwxNSBAQAotMjAyMy0wNC0wMSAg WW91bGluZyBUYW5nICA8dGFuZ3lvdWxpbmdAbG9vbmdzb24uY24+Ci0KLQkq IGVsZi5oOiBVcGRhdGUgZnJvbSBnbGliYy4KKzIwMjMtMDgtMDggIEhlYXRo ZXIgTWNJbnR5cmUgIDxoc20yQHJpY2UuZWR1PgorCisJKiBlbGYzMl9nZXRj aGRyLmM6IE1vdmUgZ2V0Y2hkciBmdW5jdGlvbiB0byBlbGYzMl9nZXRjaGRy LmgKKwkqIGVsZjMyX2dldGNoZHIuaDogTmV3IGZpbGUuCisJICBBZGQgbWFj cm8gdG8gY3JlYXRlIGdldGNoZHJfd3Jsb2NrLgorCSogZWxmMzJfdXBkYXRl bnVsbC5jOiBDaGFuZ2UgY2FsbCBmcm9tIGdldGNoZHIgdG8gZ2V0Y2hkcl93 cmxvY2suCisJKiBlbGZfZ2V0ZGF0YS5jOiBBZGQgZWxmX2dldGRhdGFfd3Js b2NrLgorCSogbGliZWxmUC5oOiBBZGQgaW50ZXJuYWwgZnVuY3Rpb24gZGVj bGFyYXRpb25zLgorCSogZWxmX2NudGwuYzogQWRqdXN0IGxvY2tzIHRvIHBy ZXZlbnQgZGVhZGxvY2suCisJKiBlbGZfZW5kLmM6IExpa2V3aXNlLgorCSog ZWxmX3JlYWRhbGwuYzogTGlrZXdpc2UuCisJKiBlbGZfdmVyc2lvbi5jOiBM aWtld2lzZS4KIAogMjAyMy0wMy0wMyAgTWFyayBXaWVsYWFyZCAgPG1hcmtA a2xvbXAub3JnPgogCmRpZmYgLS1naXQgYS9saWJlbGYvZWxmMzJfZ2V0Y2hk ci5jIGIvbGliZWxmL2VsZjMyX2dldGNoZHIuYwppbmRleCA5ODJhNjE0Yy4u NDE1OTEzMDAgMTAwNjQ0Ci0tLSBhL2xpYmVsZi9lbGYzMl9nZXRjaGRyLmMK KysrIGIvbGliZWxmL2VsZjMyX2dldGNoZHIuYwpAQCAtMzgsNDYgKzM4LDgg QEAKICMgZGVmaW5lIExJQkVMRkJJVFMgMzIKICNlbmRpZgogCisjZGVmaW5l IEVMRl9XUkxPQ0tfSEVMRCAxCisjaW5jbHVkZSAiZWxmMzJfZ2V0Y2hkci5o IgogCi1FbGZXMihMSUJFTEZCSVRTLENoZHIpICoKLWVsZncyKExJQkVMRkJJ VFMsZ2V0Y2hkcikgKEVsZl9TY24gKnNjbikKLXsKLSAgRWxmVzIoTElCRUxG QklUUyxTaGRyKSAqc2hkciA9IGVsZncyKExJQkVMRkJJVFMsZ2V0c2hkcikg KHNjbik7Ci0gIGlmIChzaGRyID09IE5VTEwpCi0gICAgcmV0dXJuIE5VTEw7 Ci0KLSAgLyogTXVzdCBoYXZlIFNIRl9DT01QUkVTU0VEIGZsYWcgc2V0LiAg QWxsb2NhdGVkIG9yIG5vIGJpdHMgc2VjdGlvbnMKLSAgICAgY2FuIG5ldmVy IGJlIGNvbXByZXNzZWQuICAqLwotICBpZiAoKHNoZHItPnNoX2ZsYWdzICYg U0hGX0FMTE9DKSAhPSAwKQotICAgIHsKLSAgICAgIF9fbGliZWxmX3NldGVy cm5vIChFTEZfRV9JTlZBTElEX1NFQ1RJT05fRkxBR1MpOwotICAgICAgcmV0 dXJuIE5VTEw7Ci0gICAgfQotCi0gIGlmIChzaGRyLT5zaF90eXBlID09IFNI VF9OVUxMCi0gICAgICB8fCBzaGRyLT5zaF90eXBlID09IFNIVF9OT0JJVFMp Ci0gICAgewotICAgICAgX19saWJlbGZfc2V0ZXJybm8gKEVMRl9FX0lOVkFM SURfU0VDVElPTl9UWVBFKTsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0K LQotICBpZiAoKHNoZHItPnNoX2ZsYWdzICYgU0hGX0NPTVBSRVNTRUQpID09 IDApCi0gICAgewotICAgICAgX19saWJlbGZfc2V0ZXJybm8gKEVMRl9FX05P VF9DT01QUkVTU0VEKTsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQot ICAvKiBUaGlzIG1ha2VzIHN1cmUgdGhlIGRhdGEgaXMgaW4gdGhlIGNvcnJl Y3QgZm9ybWF0LCBzbyB3ZSBkb24ndAotICAgICBuZWVkIHRvIHN3YXAgZmll bGRzLiAqLwotICBFbGZfRGF0YSAqZCAgPSBlbGZfZ2V0ZGF0YSAoc2NuLCBO VUxMKTsKLSAgaWYgKGQgPT0gTlVMTCkKLSAgICByZXR1cm4gTlVMTDsKLQot ICBpZiAoZC0+ZF9zaXplIDwgc2l6ZW9mIChFbGZXMihMSUJFTEZCSVRTLENo ZHIpKSB8fCBkLT5kX2J1ZiA9PSBOVUxMKQotICAgIHsKLSAgICAgIF9fbGli ZWxmX3NldGVycm5vIChFTEZfRV9JTlZBTElEX0RBVEEpOwotICAgICAgcmV0 dXJuIE5VTEw7Ci0gICAgfQotCi0gIHJldHVybiAoRWxmVzIoTElCRUxGQklU UyxDaGRyKSAqKSBkLT5kX2J1ZjsKLX0KKyNkZWZpbmUgRUxGX1dSTE9DS19I RUxEIDAKKyNpbmNsdWRlICJlbGYzMl9nZXRjaGRyLmgiClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX2dl dGNoZHIuaCBiL2xpYmVsZi9lbGYzMl9nZXRjaGRyLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjA0ZDQ3ZTdhCi0tLSAvZGV2L251 bGwKKysrIGIvbGliZWxmL2VsZjMyX2dldGNoZHIuaApAQCAtMCwwICsxLDYx IEBACisjdW5kZWYgQUREX1JPVVRJTkVfUFJFRklYCisjdW5kZWYgQUREX1JP VVRJTkVfU1VGRklYCisKKyNpZiBFTEZfV1JMT0NLX0hFTEQKKyNkZWZpbmUg Q09OQ0FUKHgseSkgeCMjeQorI2RlZmluZSBBRERfUk9VVElORV9QUkVGSVgo eSkgQ09OQ0FUKF9fLHkpCisjZGVmaW5lIEFERF9ST1VUSU5FX1NVRkZJWCh4 KSB4ICMjIF93cmxvY2sKKyNkZWZpbmUgSU5URVJOQUwgaW50ZXJuYWxfZnVu Y3Rpb24KKyNlbHNlCisjZGVmaW5lIEFERF9ST1VUSU5FX1BSRUZJWCh5KSB5 CisjZGVmaW5lIEFERF9ST1VUSU5FX1NVRkZJWCh4KSB4CisjZGVmaW5lIElO VEVSTkFMCisjZW5kaWYKKworRWxmVzIoTElCRUxGQklUUyxDaGRyKSAqCitJ TlRFUk5BTAorQUREX1JPVVRJTkVfUFJFRklYKGVsZncyKExJQkVMRkJJVFMs IEFERF9ST1VUSU5FX1NVRkZJWChnZXRjaGRyKSkpIChFbGZfU2NuICpzY24p Cit7CisKKyAgRWxmVzIoTElCRUxGQklUUyxTaGRyKSAqc2hkciA9IEFERF9S T1VUSU5FX1BSRUZJWChlbGZ3MihMSUJFTEZCSVRTLCBBRERfUk9VVElORV9T VUZGSVgoZ2V0c2hkcikpKShzY24pOworCisgIGlmIChzaGRyID09IE5VTEwp CisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogTXVzdCBoYXZlIFNIRl9DT01Q UkVTU0VEIGZsYWcgc2V0LiAgQWxsb2NhdGVkIG9yIG5vIGJpdHMgc2VjdGlv bnMKKyAgICAgY2FuIG5ldmVyIGJlIGNvbXByZXNzZWQuICAqLworICBpZiAo KHNoZHItPnNoX2ZsYWdzICYgU0hGX0FMTE9DKSAhPSAwKQorICAgIHsKKyAg ICAgIF9fbGliZWxmX3NldGVycm5vIChFTEZfRV9JTlZBTElEX1NFQ1RJT05f RkxBR1MpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgIGlmIChz aGRyLT5zaF90eXBlID09IFNIVF9OVUxMCisgICAgICB8fCBzaGRyLT5zaF90 eXBlID09IFNIVF9OT0JJVFMpCisgICAgeworICAgICAgX19saWJlbGZfc2V0 ZXJybm8gKEVMRl9FX0lOVkFMSURfU0VDVElPTl9UWVBFKTsKKyAgICAgIHJl dHVybiBOVUxMOworICAgIH0KKworICBpZiAoKHNoZHItPnNoX2ZsYWdzICYg U0hGX0NPTVBSRVNTRUQpID09IDApCisgICAgeworICAgICAgX19saWJlbGZf c2V0ZXJybm8gKEVMRl9FX05PVF9DT01QUkVTU0VEKTsKKyAgICAgIHJldHVy biBOVUxMOworICAgIH0KKworICAvKiBUaGlzIG1ha2VzIHN1cmUgdGhlIGRh dGEgaXMgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LCBzbyB3ZSBkb24ndAorICAg ICBuZWVkIHRvIHN3YXAgZmllbGRzLiAqLworICBFbGZfRGF0YSAqZCAgPSBB RERfUk9VVElORV9QUkVGSVgoQUREX1JPVVRJTkVfU1VGRklYKGVsZl9nZXRk YXRhKSkgKHNjbiwgTlVMTCk7CisgIGlmIChkID09IE5VTEwpCisgICAgcmV0 dXJuIE5VTEw7CisKKyAgaWYgKGQtPmRfc2l6ZSA8IHNpemVvZiAoRWxmVzIo TElCRUxGQklUUyxDaGRyKSkgfHwgZC0+ZF9idWYgPT0gTlVMTCkKKyAgICB7 CisgICAgICBfX2xpYmVsZl9zZXRlcnJubyAoRUxGX0VfSU5WQUxJRF9EQVRB KTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICByZXR1cm4gKEVs ZlcyKExJQkVMRkJJVFMsQ2hkcikgKikgZC0+ZF9idWY7Cit9CisjdW5kZWYg SU5URVJOQUwKKyN1bmRlZiBFTEZfV1JMT0NLX0hFTEQKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9saWJlbGYvZWxmMzJfdXBk YXRlbnVsbC5jIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYwppbmRleCA2 YzA2ZTVlNC4uMDRiZWM4ZDQgMTAwNjQ0Ci0tLSBhL2xpYmVsZi9lbGYzMl91 cGRhdGVudWxsLmMKKysrIGIvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYwpA QCAtNDA0LDcgKzQwNCw3IEBAIF9fZWxmdzIoTElCRUxGQklUUyx1cGRhdGVu dWxsX3dybG9jaykgKEVsZiAqZWxmLCBpbnQgKmNoYW5nZV9ib3AsIHNpemVf dCBzaG51bSkKIAkJICBlbHNlCiAJCSAgICB7CiAJCSAgICAgIEVsZlcyKExJ QkVMRkJJVFMsQ2hkcikgKmNoZHI7Ci0JCSAgICAgIGNoZHIgPSBlbGZ3MihM SUJFTEZCSVRTLGdldGNoZHIpIChzY24pOworCQkgICAgICBjaGRyID0gX19l bGZ3MihMSUJFTEZCSVRTLGdldGNoZHJfd3Jsb2NrKSAoc2NuKTsKIAkJICAg ICAgaWYgKHVubGlrZWx5IChjaGRyID09IE5VTEwpKQogCQkJcmV0dXJuIC0x OwogCQkgICAgICBzaF9zaXplID0gY2hkci0+Y2hfc2l6ZTsKZGlmZiAtLWdp dCBhL2xpYmVsZi9lbGZfY250bC5jIGIvbGliZWxmL2VsZl9jbnRsLmMKaW5k ZXggMDRhYTkxMzIuLjY0MDg3YzdkIDEwMDY0NAotLS0gYS9saWJlbGYvZWxm X2NudGwuYworKysgYi9saWJlbGYvZWxmX2NudGwuYwpAQCAtNDgsMTMgKzQ4 LDE2IEBAIGVsZl9jbnRsIChFbGYgKmVsZiwgRWxmX0NtZCBjbWQpCiAgICAg ICByZXR1cm4gLTE7CiAgICAgfQogCi0gIHJ3bG9ja193cmxvY2sgKGVsZi0+ bG9jayk7CisKIAogICBzd2l0Y2ggKGNtZCkKICAgICB7CiAgICAgY2FzZSBF TEZfQ19GRFJFQUQ6CisgICAgIHJ3bG9ja19yZGxvY2sgKGVsZi0+bG9jayk7 CisgICAgIGludCBhZGRyX2lzbnVsbCA9IGVsZi0+bWFwX2FkZHJlc3MgPT0g TlVMTDsKKyAgICAgcndsb2NrX3VubG9jayhlbGYtPmxvY2spOwogICAgICAg LyogSWYgbm90IGFsbCBvZiB0aGUgZmlsZSBpcyBpbiB0aGUgbWVtb3J5IHJl YWQgaXQgbm93LiAgKi8KLSAgICAgIGlmIChlbGYtPm1hcF9hZGRyZXNzID09 IE5VTEwgJiYgX19saWJlbGZfcmVhZGFsbCAoZWxmKSA9PSBOVUxMKQorICAg ICAgaWYgKGFkZHJfaXNudWxsICYmIF9fbGliZWxmX3JlYWRhbGwgKGVsZikg PT0gTlVMTCkKIAl7CiAJICAvKiBXZSB3ZXJlIG5vdCBhYmxlIHRvIHJlYWQg ZXZlcnl0aGluZy4gICovCiAJICByZXN1bHQgPSAtMTsKQEAgLTY0LDcgKzY3 LDkgQEAgZWxmX2NudGwgKEVsZiAqZWxmLCBFbGZfQ21kIGNtZCkKIAogICAg IGNhc2UgRUxGX0NfRkRET05FOgogICAgICAgLyogTWFyayB0aGUgZmlsZSBk ZXNjcmlwdG9yIGFzIG5vdCB1c2FibGUuICAqLworICAgICAgcndsb2NrX3dy bG9jayAoZWxmLT5sb2NrKTsKICAgICAgIGVsZi0+ZmlsZGVzID0gLTE7Cisg ICAgICByd2xvY2tfdW5sb2NrIChlbGYtPmxvY2spOwogICAgICAgYnJlYWs7 CiAKICAgICBkZWZhdWx0OgpAQCAtNzMsNyArNzgsNSBAQCBlbGZfY250bCAo RWxmICplbGYsIEVsZl9DbWQgY21kKQogICAgICAgYnJlYWs7CiAgICAgfQog Ci0gIHJ3bG9ja191bmxvY2sgKGVsZi0+bG9jayk7Ci0KICAgcmV0dXJuIHJl c3VsdDsKIH0KZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfZW5kLmMgYi9saWJl bGYvZWxmX2VuZC5jCmluZGV4IDNlNWQ0Yzg2Li5hZmU1MmMxOSAxMDA2NDQK LS0tIGEvbGliZWxmL2VsZl9lbmQuYworKysgYi9saWJlbGYvZWxmX2VuZC5j CkBAIC04MSw4ICs4MSwxMCBAQCBlbGZfZW5kIChFbGYgKmVsZikKIAlmcmVl IChlbGYtPnN0YXRlLmFyLmFyX3N5bSk7CiAgICAgICBlbGYtPnN0YXRlLmFy LmFyX3N5bSA9IE5VTEw7CiAKLSAgICAgIGlmIChlbGYtPnN0YXRlLmFyLmNo aWxkcmVuICE9IE5VTEwpCi0JcmV0dXJuIDA7CisgICAgICBpZiAoZWxmLT5z dGF0ZS5hci5jaGlsZHJlbiAhPSBOVUxMKXsKKwkJcndsb2NrX3VubG9jayhl bGYtPmxvY2spOworCQlyZXR1cm4gMDsKKwkgIH0KICAgICB9CiAKICAgLyog UmVtb3ZlIHRoaXMgc3RydWN0dXJlIGZyb20gdGhlIGNoaWxkcmVuIGxpc3Qu ICAqLwpkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZl9nZXRkYXRhLmMgYi9saWJl bGYvZWxmX2dldGRhdGEuYwppbmRleCA1ZWJkMjcwZi4uN2MzYWMwNDMgMTAw NjQ0Ci0tLSBhL2xpYmVsZi9lbGZfZ2V0ZGF0YS5jCisrKyBiL2xpYmVsZi9l bGZfZ2V0ZGF0YS5jCkBAIC01ODIsNCArNTgyLDE4IEBAIGVsZl9nZXRkYXRh IChFbGZfU2NuICpzY24sIEVsZl9EYXRhICpkYXRhKQogCiAgIHJldHVybiBy ZXN1bHQ7CiB9CisKK0VsZl9EYXRhICoKK2ludGVybmFsX2Z1bmN0aW9uCitf X2VsZl9nZXRkYXRhX3dybG9jayAoRWxmX1NjbiAqc2NuLCBFbGZfRGF0YSAq ZGF0YSkKK3sKKyAgRWxmX0RhdGEgKnJlc3VsdDsKKworICBpZiAoc2NuID09 IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmVzdWx0ID0gX19lbGZf Z2V0ZGF0YV9yZGxvY2sgKHNjbiwgZGF0YSk7CisKKyAgcmV0dXJuIHJlc3Vs dDsKK30KIElOVERFRihlbGZfZ2V0ZGF0YSkKZGlmZiAtLWdpdCBhL2xpYmVs Zi9lbGZfcmVhZGFsbC5jIGIvbGliZWxmL2VsZl9yZWFkYWxsLmMKaW5kZXgg ZDBmOWEyOGMuLjFhZjk4NDE3IDEwMDY0NAotLS0gYS9saWJlbGYvZWxmX3Jl YWRhbGwuYworKysgYi9saWJlbGYvZWxmX3JlYWRhbGwuYwpAQCAtODQsNiAr ODQsNyBAQCBfX2xpYmVsZl9yZWFkYWxsIChFbGYgKmVsZikKIAogICAgICAg LyogSWYgdGhpcyBpcyBhbiBhcmNoaXZlIGFuZCB3ZSBoYXZlIGRlcml2ZWQg ZGVzY3JpcHRvcnMgZ2V0IHRoZQogCSBsb2NrcyBmb3IgYWxsIG9mIHRoZW0u ICAqLworCSAgcndsb2NrX3VubG9jayhlbGYtPmxvY2spOyAvLyBsb2NrIHdp bGwgYmUgcmVhY3F1aXJlZCBuZXh0IGxpbmUKICAgICAgIGxpYmVsZl9hY3F1 aXJlX2FsbCAoZWxmKTsKIAogICAgICAgaWYgKGVsZi0+bWF4aW11bV9zaXpl ID09IH4oKHNpemVfdCkgMCkpCkBAIC0xNDEsMTAgKzE0Miw4IEBAIF9fbGli ZWxmX3JlYWRhbGwgKEVsZiAqZWxmKQogCV9fbGliZWxmX3NldGVycm5vIChF TEZfRV9OT01FTSk7CiAKICAgICAgIC8qIEZyZWUgdGhlIGxvY2tzIG9uIHRo ZSBjaGlsZHJlbi4gICovCi0gICAgICBsaWJlbGZfcmVsZWFzZV9hbGwgKGVs Zik7CisgICAgICBsaWJlbGZfcmVsZWFzZV9hbGwgKGVsZik7IC8vIGxvY2sg aXMgcmVsZWFzZWQKICAgICB9CiAKLSAgcndsb2NrX3VubG9jayAoZWxmLT5s b2NrKTsKLQogICByZXR1cm4gKGNoYXIgKikgZWxmLT5tYXBfYWRkcmVzczsK IH0KZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGZfdmVyc2lvbi5jIGIvbGliZWxm L2VsZl92ZXJzaW9uLmMKaW5kZXggNmVjNTM0YWIuLjgyOTZiYjY1IDEwMDY0 NAotLS0gYS9saWJlbGYvZWxmX3ZlcnNpb24uYworKysgYi9saWJlbGYvZWxm X3ZlcnNpb24uYwpAQCAtMzIsMTIgKzMyLDIxIEBACiAjZW5kaWYKIAogI2lu Y2x1ZGUgPGxpYmVsZlAuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CiAKKy8q IE11bHRpcGxlIHRocmVhZHMgbWF5IGluaXRpYWxpemUgX19saWJlbGZfdmVy c2lvbi4KKyAgIHB0aHJlYWRfb25jZSgpIGVuc3VyZXMgdGhhdCBfX2xpYmVs Zl92ZXJzaW9uIGlzIGluaXRpYWxpemVkIG9ubHkgb25jZS4gKi8KK29uY2Vf ZGVmaW5lKHN0YXRpYywgdmVyc2lvbl9vbmNlKTsKIAogLyogQ3VycmVudGx5 IHNlbGVjdGVkIHZlcnNpb24uICBTaG91bGQgYmUgRVZfQ1VSUkVOVC4KICAg IFdpbGwgYmUgRVZfTk9ORSBpZiBlbGZfdmVyc2lvbiAoKSBoYXMgbm90IGJl ZW4gY2FsbGVkIHlldC4gICovCiB1bnNpZ25lZCBpbnQgX19saWJlbGZfdmVy c2lvbiA9IEVWX05PTkU7CiAKK3N0YXRpYyB2b2lkIGluaXRpYWxpemVfdmVy c2lvbih2b2lkKQoreworICBfX2xpYmVsZl92ZXJzaW9uID0gRVZfQ1VSUkVO VDsKK30KKwogdW5zaWduZWQgaW50CiBlbGZfdmVyc2lvbiAodW5zaWduZWQg aW50IHZlcnNpb24pCiB7CkBAIC00OSw3ICs1OCw3IEBAIGVsZl92ZXJzaW9u ICh1bnNpZ25lZCBpbnQgdmVyc2lvbikKICAgICAgIC8qIFBoZXcsIHdlIGtu b3cgdGhpcyB2ZXJzaW9uLiAgKi8KIAogICAgICAgLyogU2lnbmFsIHRoYXQg dGhlIHZlcnNpb24gaXMgbm93IGluaXRpYWxpemVkLiAgKi8KLSAgICAgIF9f bGliZWxmX3ZlcnNpb24gPSBFVl9DVVJSRU5UOworICAgICAgb25jZSh2ZXJz aW9uX29uY2UsIGluaXRpYWxpemVfdmVyc2lvbik7CiAKICAgICAgIC8qIEFu ZCByZXR1cm4gdGhlIGxhc3QgKG9yIGluaXRpYWwpIHZlcnNpb24uICAqLwog ICAgICAgcmV0dXJuIEVWX0NVUlJFTlQ7CmRpZmYgLS1naXQgYS9saWJlbGYv bGliZWxmUC5oIGIvbGliZWxmL2xpYmVsZlAuaAppbmRleCBkM2MyNDFlNS4u NWU1ZGY1ODkgMTAwNjQ0Ci0tLSBhL2xpYmVsZi9saWJlbGZQLmgKKysrIGIv bGliZWxmL2xpYmVsZlAuaApAQCAtNTEyLDYgKzUxMiw4IEBAIGV4dGVybiBF bGYzMl9TaGRyICpfX2VsZjMyX2dldHNoZHJfcmRsb2NrIChFbGZfU2NuICpf X3NjbikgaW50ZXJuYWxfZnVuY3Rpb247CiBleHRlcm4gRWxmNjRfU2hkciAq X19lbGY2NF9nZXRzaGRyX3JkbG9jayAoRWxmX1NjbiAqX19zY24pIGludGVy bmFsX2Z1bmN0aW9uOwogZXh0ZXJuIEVsZjMyX1NoZHIgKl9fZWxmMzJfZ2V0 c2hkcl93cmxvY2sgKEVsZl9TY24gKl9fc2NuKSBpbnRlcm5hbF9mdW5jdGlv bjsKIGV4dGVybiBFbGY2NF9TaGRyICpfX2VsZjY0X2dldHNoZHJfd3Jsb2Nr IChFbGZfU2NuICpfX3NjbikgaW50ZXJuYWxfZnVuY3Rpb247CitleHRlcm4g RWxmMzJfQ2hkciAqX19lbGYzMl9nZXRjaGRyX3dybG9jayAoRWxmX1NjbiAq X19zY24pIGludGVybmFsX2Z1bmN0aW9uOworZXh0ZXJuIEVsZjY0X0NoZHIg Kl9fZWxmNjRfZ2V0Y2hkcl93cmxvY2sgKEVsZl9TY24gKl9fc2NuKSBpbnRl cm5hbF9mdW5jdGlvbjsKIGV4dGVybiBFbGZfU2NuICpfX2VsZl9nZXRzY25f aW50ZXJuYWwgKEVsZiAqX19lbGYsIHNpemVfdCBfX2luZGV4KQogICAgICBh dHRyaWJ1dGVfaGlkZGVuOwogZXh0ZXJuIEVsZl9TY24gKl9fZWxmX25leHRz Y25faW50ZXJuYWwgKEVsZiAqX19lbGYsIEVsZl9TY24gKl9fc2NuKQpAQCAt NTIxLDYgKzUyMyw4IEBAIGV4dGVybiBFbGZfRGF0YSAqX19lbGZfZ2V0ZGF0 YV9pbnRlcm5hbCAoRWxmX1NjbiAqX19zY24sIEVsZl9EYXRhICpfX2RhdGEp CiAgICAgIGF0dHJpYnV0ZV9oaWRkZW47CiBleHRlcm4gRWxmX0RhdGEgKl9f ZWxmX2dldGRhdGFfcmRsb2NrIChFbGZfU2NuICpfX3NjbiwgRWxmX0RhdGEg Kl9fZGF0YSkKICAgICAgaW50ZXJuYWxfZnVuY3Rpb247CitleHRlcm4gRWxm X0RhdGEgKl9fZWxmX2dldGRhdGFfd3Jsb2NrIChFbGZfU2NuICpfX3Njbiwg RWxmX0RhdGEgKl9fZGF0YSkKKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247CiBl eHRlcm4gRWxmX0RhdGEgKl9fZWxmX3Jhd2RhdGFfaW50ZXJuYWwgKEVsZl9T Y24gKl9fc2NuLCBFbGZfRGF0YSAqX19kYXRhKQogICAgICBhdHRyaWJ1dGVf aGlkZGVuOwogLyogU2hvdWxkIGJlIGNhbGxlZCB0byBzZXR1cCBmaXJzdCBz ZWN0aW9uIGRhdGEgZWxlbWVudCBpZgpkaWZmIC0tZ2l0IGEvc3JjL0NoYW5n ZUxvZyBiL3NyYy9DaGFuZ2VMb2cKaW5kZXggYWU2MmY0ZWQuLjU1YTI4ODdh IDEwMDY0NAotLS0gYS9zcmMvQ2hhbmdlTG9nCisrKyBiL3NyYy9DaGFuZ2VM b2cKQEAgLTEsMyArMSwxMCBAQAorMjAyMy0wOC0wOCAgSGVhdGhlciBNY0lu dHlyZSAgPGhzbTJAcmljZS5lZHU+CisKKwkqIE1ha2VmaWxlLmFtOiBBZGQg VVNFX0xPQ0tTIGNvbmRpdGlvbiBmb3IgLXB0aHJlYWQuCisJKiBmaW5kdGV4 dHJlbC5jOiBBZGQgZXUtc2VhcmNoLmggYW5kIHJlbW92ZSBzZWFyY2guaC4K KwlDaGFuZ2UgY2FsbHMgb2YgdHNlYXJjaC90ZmluZCB0byBldV90c2VhcmNo L2V1X3RmaW5kLgorCSogbm0uYzogTGlrZXdpc2UuCisKIDIwMjMtMDMtMjcg IERpIENoZW4gIDxkaWNoZW5AcmVkaGF0LmNvbT4KIAogCSogcmVhZGVsZi5j IChvcHRpb25zKTogU3VwcG9ydCBkeW5hbWljIHN5bXRhYiBwcmludCB3aXRo ICctRHMnLgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01h a2VmaWxlLmFtCmluZGV4IDEwZDU5YTQ4Li5mZWE1ZDQzZSAxMDA2NDQKLS0t IGEvc3JjL01ha2VmaWxlLmFtCisrKyBiL3NyYy9NYWtlZmlsZS5hbQpAQCAt MjIsNiArMjIsOSBAQCBERUZTICs9ICQoWVlERUJVRykgLURERUJVR1BSRUQ9 QERFQlVHUFJFREAgXAogQU1fQ1BQRkxBR1MgKz0gLUkkKHNyY2RpcikvLi4v bGliZWxmIC1JJChzcmNkaXIpLy4uL2xpYmVibCBcCiAJICAgIC1JJChzcmNk aXIpLy4uL2xpYmR3IC1JJChzcmNkaXIpLy4uL2xpYmR3ZWxmIFwKIAkgICAg LUkkKHNyY2RpcikvLi4vbGliZHdmbCAtSSQoc3JjZGlyKS8uLi9saWJhc20K K2lmIFVTRV9MT0NLUworICBBTV9DRkxBR1MgKz0gLXB0aHJlYWQKK2VuZGlm CiAKIEFNX0xERkxBR1MgPSAtV2wsLXJwYXRoLWxpbmssLi4vbGliZWxmOi4u L2xpYmR3ICQoU1RBQ0tfVVNBR0VfTk9fRVJST1IpCiAKZGlmZiAtLWdpdCBh L3NyYy9maW5kdGV4dHJlbC5jIGIvc3JjL2ZpbmR0ZXh0cmVsLmMKaW5kZXgg ZDMwMjFhM2EuLjVhYzRjMjlhIDEwMDY0NAotLS0gYS9zcmMvZmluZHRleHRy ZWwuYworKysgYi9zcmMvZmluZHRleHRyZWwuYwpAQCAtMjcsNyArMjcsNyBA QAogI2luY2x1ZGUgPGdlbGYuaD4KICNpbmNsdWRlIDxsaWJkdy5oPgogI2lu Y2x1ZGUgPGxvY2FsZS5oPgotI2luY2x1ZGUgPHNlYXJjaC5oPgorI2luY2x1 ZGUgPGV1LXNlYXJjaC5oPgogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNs dWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNTAxLDEw ICs1MDEsMTAgQEAgY2hlY2tfcmVsIChzaXplX3QgbnNlZ21lbnRzLCBzdHJ1 Y3Qgc2VnbWVudHMgc2VnbWVudHNbbnNlZ21lbnRzXSwKIAkgICAgLyogVGhl cmUgY2FuIGJlIG1vcmUgdGhhbiBvbmUgcmVsb2NhdGlvbiBhZ2FpbnN0IG9u ZSBmaWxlLgogCSAgICAgICBUcnkgdG8gYXZvaWQgbXVsdGlwbGUgbWVzc2Fn ZXMuICBBbmQgeWVzLCB0aGUgY29kZSB1c2VzCiAJICAgICAgIHBvaW50ZXIg Y29tcGFyaXNvbi4gICovCi0JICAgIGlmICh0ZmluZCAoc3JjLCBrbm93bnNy Y3MsIHB0cmNvbXBhcmUpID09IE5VTEwpCisJICAgIGlmIChldV90ZmluZCAo c3JjLCBrbm93bnNyY3MsIHB0cmNvbXBhcmUpID09IE5VTEwpCiAJICAgICAg ewogCQlwcmludGYgKF8oIiVzIG5vdCBjb21waWxlZCB3aXRoIC1mcGljLy1m UElDXG4iKSwgc3JjKTsKLQkJdHNlYXJjaCAoc3JjLCBrbm93bnNyY3MsIHB0 cmNvbXBhcmUpOworCQlldV90c2VhcmNoIChzcmMsIGtub3duc3JjcywgcHRy Y29tcGFyZSk7CiAJICAgICAgfQogCSAgICByZXR1cm47CiAJICB9CkBAIC01 NTUsMTIgKzU1NSwxMiBAQCBjaGVja19yZWwgKHNpemVfdCBuc2VnbWVudHMs IHN0cnVjdCBzZWdtZW50cyBzZWdtZW50c1tuc2VnbWVudHNdLAogCQkgICAg aWYgKHN5bS0+c3RfdmFsdWUgKyBzeW0tPnN0X3NpemUgPiBhZGRyKQogCQkg ICAgICB7CiAJCQkvKiBJdCBpcyB0aGlzIGZ1bmN0aW9uLiAgKi8KLQkJCWlm ICh0ZmluZCAobG93c3RyLCBrbm93bnNyY3MsIHB0cmNvbXBhcmUpID09IE5V TEwpCisJCQlpZiAoZXVfdGZpbmQgKGxvd3N0ciwga25vd25zcmNzLCBwdHJj b21wYXJlKSA9PSBOVUxMKQogCQkJICB7CiAJCQkgICAgcHJpbnRmIChfKCJc CiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiAnJXMnIGlzIG5v dCBjb21waWxlZCB3aXRoIC1mcGljLy1mUElDXG4iKSwKIAkJCQkgICAgbG93 c3RyKTsKLQkJCSAgICB0c2VhcmNoIChsb3dzdHIsIGtub3duc3JjcywgcHRy Y29tcGFyZSk7CisJCQkgICAgZXVfdHNlYXJjaCAobG93c3RyLCBrbm93bnNy Y3MsIHB0cmNvbXBhcmUpOwogCQkJICB9CiAJCSAgICAgIH0KIAkJICAgIGVs c2UgaWYgKGhpZ2hpZHggPT0gLTEpCmRpZmYgLS1naXQgYS9zcmMvbm0uYyBi L3NyYy9ubS5jCmluZGV4IGZiZGVlOGUxLi40NGMyMGZiMiAxMDA2NDQKLS0t IGEvc3JjL25tLmMKKysrIGIvc3JjL25tLmMKQEAgLTMyLDcgKzMyLDcgQEAK ICNpbmNsdWRlIDxsaWJkdy5oPgogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2lu Y2x1ZGUgPG9ic3RhY2suaD4KLSNpbmNsdWRlIDxzZWFyY2guaD4KKyNpbmNs dWRlIDxldS1zZWFyY2guaD4KICNpbmNsdWRlIDxzdGRib29sLmg+CiAjaW5j bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRpb19leHQuaD4KQEAgLTUz Nyw3ICs1MzcsNyBAQCBzdGF0aWMgaW50CiBnZXRfZ2xvYmFsIChEd2FyZiAq ZGJnIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgRHdhcmZfR2xvYmFsICpn bG9iYWwsCiAJICAgIHZvaWQgKmFyZyBfX2F0dHJpYnV0ZV9fICgodW51c2Vk KSkpCiB7Ci0gIHRzZWFyY2ggKG1lbWNweSAoeG1hbGxvYyAoc2l6ZW9mIChE d2FyZl9HbG9iYWwpKSwgZ2xvYmFsLAorICBldV90c2VhcmNoIChtZW1jcHkg KHhtYWxsb2MgKHNpemVvZiAoRHdhcmZfR2xvYmFsKSksIGdsb2JhbCwKIAkJ ICAgc2l6ZW9mIChEd2FyZl9HbG9iYWwpKSwKIAkgICAmZ2xvYmFsX3Jvb3Qs IGdsb2JhbF9jb21wYXJlKTsKIApAQCAtNjk2LDcgKzY5Niw3IEBAIGdldF9s b2NhbF9uYW1lcyAoRHdhcmYgKmRiZykKIAkgICAvKiBDaGVjayB3aGV0aGVy IGEgc2ltaWxhciBsb2NhbF9uYW1lIGlzIGFscmVhZHkgaW4gdGhlCiAJICAg ICAgY2FjaGUuICBUaGF0IHNob3VsZCBub3QgaGFwcGVuLiAgQnV0IGlmIGl0 IGRvZXMsIHdlCiAJICAgICAgZG9uJ3Qgd2FudCB0byBsZWFrIG1lbW9yeS4g ICovCi0JICAgIHN0cnVjdCBsb2NhbF9uYW1lICoqdHJlcyA9IHRzZWFyY2gg KG5ld3AsICZsb2NhbF9yb290LAorCSAgICBzdHJ1Y3QgbG9jYWxfbmFtZSAq KnRyZXMgPSBldV90c2VhcmNoIChuZXdwLCAmbG9jYWxfcm9vdCwKIAkJCQkJ CWxvY2FsX2NvbXBhcmUpOwogCSAgICBpZiAodHJlcyA9PSBOVUxMKQogICAg ICAgICAgICAgICBlcnJvcl9leGl0IChlcnJubywgXygiY2Fubm90IGNyZWF0 ZSBzZWFyY2ggdHJlZSIpKTsKQEAgLTEzODcsNyArMTM4Nyw3IEBAIHNob3df c3ltYm9scyAoaW50IGZkLCBFYmwgKmVibCwgR0VsZl9FaGRyICplaGRyLAog CSAgICAgICYmIGdsb2JhbF9yb290ICE9IE5VTEwpCiAJICAgIHsKIAkgICAg ICBEd2FyZl9HbG9iYWwgZmFrZSA9IHsgLm5hbWUgPSBzeW1zdHIgfTsKLQkg ICAgICBEd2FyZl9HbG9iYWwgKipmb3VuZCA9IHRmaW5kICgmZmFrZSwgJmds b2JhbF9yb290LAorCSAgICAgIER3YXJmX0dsb2JhbCAqKmZvdW5kID0gZXVf dGZpbmQgKCZmYWtlLCAmZ2xvYmFsX3Jvb3QsCiAJCQkJCSAgICBnbG9iYWxf Y29tcGFyZSk7CiAJICAgICAgaWYgKGZvdW5kICE9IE5VTEwpCiAJCXsKQEAg LTE0NDIsNyArMTQ0Miw3IEBAIHNob3dfc3ltYm9scyAoaW50IGZkLCBFYmwg KmVibCwgR0VsZl9FaGRyICplaGRyLAogCQkgIC5sb3dwYyA9IHN5bS0+c3Rf dmFsdWUsCiAJCSAgLmhpZ2hwYyA9IHN5bS0+c3RfdmFsdWUsCiAJCX07Ci0J ICAgICAgc3RydWN0IGxvY2FsX25hbWUgKipmb3VuZCA9IHRmaW5kICgmZmFr ZSwgJmxvY2FsX3Jvb3QsCisJICAgICAgc3RydWN0IGxvY2FsX25hbWUgKipm b3VuZCA9IGV1X3RmaW5kICgmZmFrZSwgJmxvY2FsX3Jvb3QsCiAJCQkJCQkg bG9jYWxfY29tcGFyZSk7CiAJICAgICAgaWYgKGZvdW5kICE9IE5VTEwpCiAJ CXsKZGlmZiAtLWdpdCBhL3Rlc3RzL0NoYW5nZUxvZyBiL3Rlc3RzL0NoYW5n ZUxvZwppbmRleCBkODE2ODczYy4uMTE2ODc2ZjkgMTAwNjQ0Ci0tLSBhL3Rl c3RzL0NoYW5nZUxvZworKysgYi90ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr MSwyNCBAQAorMjAyMy0wOC0wOCAgSGVhdGhlciBNY0ludHlyZSAgPGhzbTJA cmljZS5lZHU+CisKKwkqIGV1X3NlYXJjaF9jZmkuYzogTmV3IGZpbGUuCisJ KiBldV9zZWFyY2hfZGllLmM6IE5ldyBmaWxlLgorCSogZXVfc2VhcmNoX2xp bmVzLmM6IE5ldyBmaWxlLgorCSogZXVfc2VhcmNoX21hY3Jvcy5jOiBOZXcg ZmlsZS4KKwkqIHJ1bi1ldS1zZWFyY2gtdGVzdHMuc2g6IE5ldyB0ZXN0Lgor CSogTWFrZWZpbGUuYW06IEFkZCBVU0VfTE9DS1MgY29uZGl0aW9uIGZvciAt cHRocmVhZC4KKwkqIE1ha2VmaWxlLmFtIChjaGVja19QUk9HUkFNUyk6IEFk ZCBldV9zZWFyY2hfY2ZpLCBldV9zZWFyY2hfZGllLAorCWV1X3NlYXJjaF9s aW5lcywgYW5kIGV1X3NlYXJjaF9tYWNyb3MuCisJKFRFU1RTKTogQWRkIHJ1 bi1ldS1zZWFyY2gtdGVzdHMuc2gKKwkoZXVfc2VhcmNoX2NmaV9MREFERCk6 IE5ldyB2YXJpYWJsZS4KKwkoZXVfc2VhcmNoX2RpZV9MREFERCk6IE5ldyB2 YXJpYWJsZS4KKwkoZXVfc2VhcmNoX2xpbmVzX0xEQUREKTogTmV3IHZhcmlh YmxlLgorCShldV9zZWFyY2hfbWFjcm9zX0xEQUREKTogTmV3IHZhcmlhYmxl LgorCShldV9zZWFyY2hfY2ZpX0xERkxBR1MpOiBOZXcgdmFyaWFibGUuCisJ QWRkIC1wdGhyZWFkIGlmIFVTRV9MT0NLUyBpcyBub3QgZGVmaW5lZC4KKwko ZXVfc2VhcmNoX2RpZV9MREZMQUdTKTogTGlrZXdpc2UuCisJKGV1X3NlYXJj aF9saW5lc19MREZMQUdTKTogTGlrZXdpc2UuCisJKGV1X3NlYXJjaF9tYWNy b3NfTERGTEFHUyk6IExpa2V3aXNlLgorCiAyMDIzLTA0LTIxICBGcmFuayBD aC4gRWlnbGVyIDxmY2hlQHJlZGhhdC5jb20+CiAKIAkqIHJ1bi1kZWJ1Z2lu Zm9kLUlYci5zaDogTmV3IHRlc3QuCmRpZmYgLS1naXQgYS90ZXN0cy9NYWtl ZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCmluZGV4IDBjNzdmNjU4Li45 NjFlMjgyZCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrIGIv dGVzdHMvTWFrZWZpbGUuYW0KQEAgLTMyLDYgKzMyLDEwIEBAIGVsc2UKIHRl c3RzX3JwYXRoID0gbm8KIGVuZGlmCiAKK2lmIFVTRV9MT0NLUworICBBTV9D RkxBR1MgKz0gLXB0aHJlYWQKK2VuZGlmCisKIGNoZWNrX1BST0dSQU1TID0g YXJleHRyYWN0IGFyc3ltdGVzdCBuZXdmaWxlIHNhcmlkeCBzY25uYW1lcyBz ZWN0aW9uZHVtcCBcCiAJCSAgc2hvd3B0YWJsZSB1cGRhdGUxIHVwZGF0ZTIg dXBkYXRlMyB1cGRhdGU0IHRlc3Qtbmxpc3QgXAogCQkgIHNob3ctZGllLWlu Zm8gZ2V0LWZpbGVzIG5leHQtZmlsZXMgZ2V0LWxpbmVzIG5leHQtbGluZXMg XApAQCAtNjMsNiArNjcsNyBAQCBjaGVja19QUk9HUkFNUyA9IGFyZXh0cmFj dCBhcnN5bXRlc3QgbmV3ZmlsZSBzYXJpZHggc2NubmFtZXMgc2VjdGlvbmR1 bXAgXAogCQkgIGdldHBoZHJudW0gbGViMTI4IHJlYWRfdW5hbGlnbmVkIFwK IAkJICBtc2dfdHN0IHN5c3RlbS1lbGYtbGliZWxmLXRlc3QgXAogCQkgIG52 aWRpYV9leHRlbmRlZF9saW5lbWFwX2xpYmR3IFwKKwkJICBldV9zZWFyY2hf Y2ZpIGV1X3NlYXJjaF9kaWUgZXVfc2VhcmNoX2xpbmVzIGV1X3NlYXJjaF9t YWNyb3MgXAogCQkgICQoYXNtX1RFU1RTKQogCiBhc21fVEVTVFMgPSBhc20t dHN0MSBhc20tdHN0MiBhc20tdHN0MyBhc20tdHN0NCBhc20tdHN0NSBcCkBA IC0yMTEsNyArMjE2LDggQEAgVEVTVFMgPSBydW4tYXJleHRyYWN0LnNoIHJ1 bi1hcnN5bXRlc3Quc2ggcnVuLWFyLnNoIG5ld2ZpbGUgdGVzdC1ubGlzdCBc CiAJJChhc21fVEVTVFMpIHJ1bi1kaXNhc20tYnBmLnNoIHJ1bi1sb3dfaGln aF9wYy1kdy1mb3JtLWluZGlyZWN0LnNoIFwKIAlydW4tbnZpZGlhLWV4dGVu ZGVkLWxpbmVtYXAtbGliZHcuc2ggcnVuLW52aWRpYS1leHRlbmRlZC1saW5l bWFwLXJlYWRlbGYuc2ggXAogCXJ1bi1yZWFkZWxmLWR3LWZvcm0taW5kaXJl Y3Quc2ggcnVuLXN0cmlwLWxhcmdlYWxpZ24uc2ggXAotCXJ1bi1yZWFkZWxm LURkLnNoCisJcnVuLXJlYWRlbGYtRGQuc2ggXAorCXJ1bi1ldS1zZWFyY2gt dGVzdHMuc2gKIAogaWYgIUJJQVJDSAogZXhwb3J0IEVMRlVUSUxTX0RJU0FC TEVfQklBUkNIID0gMQpAQCAtODA0LDYgKzgxMCwxNCBAQCBnZXRwaGRybnVt X0xEQUREID0gJChsaWJlbGYpICQobGliZHcpCiBsZWIxMjhfTERBREQgPSAk KGxpYmVsZikgJChsaWJkdykKIHJlYWRfdW5hbGlnbmVkX0xEQUREID0gJChs aWJlbGYpICQobGliZHcpCiBudmlkaWFfZXh0ZW5kZWRfbGluZW1hcF9saWJk d19MREFERCA9ICQobGliZWxmKSAkKGxpYmR3KQorZXVfc2VhcmNoX2NmaV9M REZMQUdTID0gJChpZiAkKGZpbHRlciB1bmRlZmluZWQsJChvcmlnaW4gVVNF X0xPQ0tTKSksLXB0aHJlYWQpICQoQU1fTERGTEFHUykKK2V1X3NlYXJjaF9k aWVfTERGTEFHUyA9ICQoaWYgJChmaWx0ZXIgdW5kZWZpbmVkLCQob3JpZ2lu IFVTRV9MT0NLUykpLC1wdGhyZWFkKSAkKEFNX0xERkxBR1MpCitldV9zZWFy Y2hfbGluZXNfTERGTEFHUyA9ICQoaWYgJChmaWx0ZXIgdW5kZWZpbmVkLCQo b3JpZ2luIFVTRV9MT0NLUykpLC1wdGhyZWFkKSAkKEFNX0xERkxBR1MpCitl dV9zZWFyY2hfbWFjcm9zX0xERkxBR1MgPSAkKGlmICQoZmlsdGVyIHVuZGVm aW5lZCwkKG9yaWdpbiBVU0VfTE9DS1MpKSwtcHRocmVhZCkgJChBTV9MREZM QUdTKQorZXVfc2VhcmNoX2NmaV9MREFERCA9ICQobGliZXUpICQobGliZWxm KSAkKGxpYmR3KQorZXVfc2VhcmNoX2RpZV9MREFERCA9ICQobGliZHcpCitl dV9zZWFyY2hfbGluZXNfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikKK2V1 X3NlYXJjaF9tYWNyb3NfTERBREQgPSAkKGxpYmR3KQogCiAjIFdlIHdhbnQg dG8gdGVzdCB0aGUgbGliZWxmIGhlYWRlciBhZ2FpbnN0IHRoZSBzeXN0ZW0g ZWxmLmggaGVhZGVyLgogIyBEb24ndCBpbmNsdWRlIGFueSAtSSBDUFBGTEFH Uy4gRXhjZXB0IHdoZW4gd2UgaW5zdGFsbCBvdXIgb3duIGVsZi5oLgpkaWZm IC0tZ2l0IGEvdGVzdHMvZXVfc2VhcmNoX2NmaS5jIGIvdGVzdHMvZXVfc2Vh cmNoX2NmaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li4wYjYzYjIxMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2V1X3NlYXJj aF9jZmkuYwpAQCAtMCwwICsxLDIzNCBAQAorLypUZXN0IHByb2dyYW0gZm9y IGV1X3NlYXJjaF9jZmkKKyAgIENvcHlyaWdodCAoQykgMjAyMyBSZWQgSGF0 LCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBlbGZ1dGlscy4KKwor ICAgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgZWxmdXRpbHMgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0CisgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZTxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKyNp bmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2lu Y2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3KQorI2luY2x1ZGUgPGR3YXJmLmg+ CisjaW5jbHVkZSA8YXJncC5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNp bmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lu Y2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs dWRlIDxsb2NhbGUuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRl IDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlICJz eXN0ZW0uaCIKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKK3N0YXRpYyB2b2lk IGhhbmRsZV9zZWN0aW9uKGNoYXIgKm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNo YXIgZV9pZGVudFtdLCBFbGZfU2NuICpzY24sIGNvbnN0IGJvb2wgaXNfZWgp Oworc3RhdGljIHZvaWQgKnRocmVhZF93b3JrKHZvaWQgKmFyZyk7CisKK3R5 cGVkZWYgc3RydWN0Cit7CisJY2hhciAqbmFtZTsKKwljb25zdCB1bnNpZ25l ZCBjaGFyICplX2lkZW50OworCUVsZl9TY24gKiBzY247CisJYm9vbCBpc19l aDsKK30KKworVGhyZWFkRGF0YTsKKworc3RhdGljIHZvaWQgKnRocmVhZF93 b3JrKHZvaWQgKmFyZykKK3sKKwlUaHJlYWREYXRhICpkYXRhID0gKFRocmVh ZERhdGEqKSBhcmc7CisJaGFuZGxlX3NlY3Rpb24oZGF0YS0+bmFtZSwgZGF0 YS0+ZV9pZGVudCwgZGF0YS0+c2NuLCBkYXRhLT5pc19laCk7CisJZnJlZShk YXRhKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgaGFuZGxl X3NlY3Rpb24oY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciBlX2lk ZW50W10sCisJCUVsZl9TY24gKnNjbiwgY29uc3QgYm9vbCBpc19laCkKK3sK KwlpZiAoaXNfZWgpCisJCXByaW50ZigiLmVoX2ZyYW1lXG4iKTsKKwllbHNl CisJCXByaW50ZigiLmRlYnVnX2ZyYW1lXG4iKTsKKworCUdFbGZfU2hkciBt ZW07CisJR0VsZl9TaGRyICpzaGRyID0gZ2VsZl9nZXRzaGRyKHNjbiwgJm1l bSk7CisJaWYgKHNoZHIgPT0gTlVMTCkKKwkJZXJyb3IoRVhJVF9GQUlMVVJF LCAwLCAiQ291bGRuJ3QgZ2V0IHNlY3Rpb24gaGVhZGVyOiAlcyIsCisJCQll bGZfZXJybXNnKC0xKSk7CisJaWYgKChzaGRyLT5zaF9mbGFncyAmU0hGX0NP TVBSRVNTRUQpICE9IDApCisJeworCQlpZiAoZWxmX2NvbXByZXNzKHNjbiwg MCwgMCkgPCAwKQorCQkJZXJyb3IoRVhJVF9GQUlMVVJFLCAwLCAiQ291bGRu J3QgZGVjb21wcmVzcyBzZWN0aW9uOiAlcyIsCisJCQkJZWxmX2Vycm1zZygt MSkpOworCX0KKwllbHNlIGlmIChuYW1lWzBdID09ICcuJyAmJiBuYW1lWzFd ID09ICd6JykKKwl7CisJCWlmIChlbGZfY29tcHJlc3NfZ251KHNjbiwgMCwg MCkgPCAwKQorCQkJZXJyb3IoRVhJVF9GQUlMVVJFLCAwLCAiQ291bGRuJ3Qg ZGVjb21wcmVzcyBzZWN0aW9uOiAlcyIsCisJCQkJZWxmX2Vycm1zZygtMSkp OworCX0KKworCUVsZl9EYXRhICpkYXRhID0gZWxmX2dldGRhdGEoc2NuLCBO VUxMKTsKKwlpZiAoZGF0YSA9PSBOVUxMIHx8IGRhdGEtPmRfYnVmID09IE5V TEwpCisJCWVycm9yKEVYSVRfRkFJTFVSRSwgMCwgIm5vIHNlY3Rpb24gZGF0 YSIpOworCisJaW50IHJlczsKKwlEd2FyZl9PZmYgb2ZmOworCUR3YXJmX09m ZiBuZXh0X29mZiA9IDA7CisJRHdhcmZfQ0ZJX0VudHJ5IGVudHJ5OworCXdo aWxlICgocmVzID0gZHdhcmZfbmV4dF9jZmkoZV9pZGVudCwgZGF0YSwgaXNf ZWgsIG9mZiA9IG5leHRfb2ZmLCAmbmV4dF9vZmYsICZlbnRyeSkpID09IDAp CisJeworCQlwcmludGYoIlslIiBQUklkNjQgIl0gIiwgb2ZmKTsKKwkJaWYg KGR3YXJmX2NmaV9jaWVfcCgmZW50cnkpKQorCQkJcHJpbnRmKCJDSUUgYXVn bWVudGF0aW9uPVwiJXNcIlxuIiwgZW50cnkuY2llLmF1Z21lbnRhdGlvbik7 CisJCWVsc2UKKwkJeworCQkJcHJpbnRmKCJGREUgY2llPVslIiBQUklkNjQg Il1cbiIsIGVudHJ5LmZkZS5DSUVfcG9pbnRlcik7CisKKwkJCUR3YXJmX09m ZiBjaWVfb2ZmID0gZW50cnkuZmRlLkNJRV9wb2ludGVyOworCQkJRHdhcmZf T2ZmIGNpZV9vZmZfbmV4dDsKKwkJCUR3YXJmX0NGSV9FbnRyeSBjaWVfZW50 cnk7CisJCQlpZiAoZHdhcmZfbmV4dF9jZmkoZV9pZGVudCwgZGF0YSwgaXNf ZWgsIGNpZV9vZmYsICZjaWVfb2ZmX25leHQsICZjaWVfZW50cnkpICE9IDAg fHwKKwkJCQkhZHdhcmZfY2ZpX2NpZV9wKCZjaWVfZW50cnkpKQorCQkJCWVy cm9yKEVYSVRfRkFJTFVSRSwgMCwgIkZERSBkb2Vzbid0IHBvaW50IHRvIENJ RSIpOworCQl9CisJfQorCisJaWYgKHJlcyA8IDApCisJCWVycm9yKEVYSVRf RkFJTFVSRSwgMCwgImR3YXJmX25leHRfY2ZpIGZhaWxlZDogJXNcbiIsCisJ CQlkd2FyZl9lcnJtc2coLTEpKTsKK30KKworaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKK3sKKwlpZiAoYXJnYyAhPSAyKQorCQllcnJvcihF WElUX0ZBSUxVUkUsIDAsICJuZWVkIGZpbGUgbmFtZSBhcmd1bWVudCIpOwor CisJY29uc3QgY2hhciAqZmlsZSA9IGFyZ3ZbMV07CisJcHJpbnRmKCIlc1xu IiwgZmlsZSk7CisKKwlpbnQgZmQgPSBvcGVuKGZpbGUsIE9fUkRPTkxZKTsK KwlpZiAoZmQgPT0gLTEpCisJCWVycm9yKEVYSVRfRkFJTFVSRSwgZXJybm8s ICJjYW5ub3Qgb3BlbiBpbnB1dCBmaWxlIGAlcyciLCBmaWxlKTsKKworCWVs Zl92ZXJzaW9uKEVWX0NVUlJFTlQpOworCisJRWxmICplbGYgPSBlbGZfYmVn aW4oZmQsIEVMRl9DX1JFQUQsIE5VTEwpOworCWlmIChlbGYgPT0gTlVMTCkK KwkJZXJyb3IoRVhJVF9GQUlMVVJFLCAwLCAiY2Fubm90IGNyZWF0ZSBFTEYg ZGVzY3JpcHRvcjogJXMiLCBlbGZfZXJybXNnKC0xKSk7CisKKwlzaXplX3Qg ZXNpemU7CisJY29uc3QgdW5zaWduZWQgY2hhciAqaWRlbnQgPSAoY29uc3Qg dW5zaWduZWQgY2hhciAqKSBlbGZfZ2V0aWRlbnQoZWxmLCAmZXNpemUpOwor CWlmIChpZGVudCA9PSBOVUxMIHx8IGVzaXplIDwgRUlfTklERU5UKQorCQll cnJvcihFWElUX0ZBSUxVUkUsIDAsICJubywgb3IgdG9vIHNtYWxsLCBFTEYg aWRlbnQiKTsKKworCUdFbGZfRWhkciBlaGRyOworCWlmIChnZWxmX2dldGVo ZHIoZWxmLCAmZWhkcikgPT0gTlVMTCkKKwkJZXJyb3IoRVhJVF9GQUlMVVJF LCAwLCAiY2Fubm90IGdldCB0aGUgRUxGIGhlYWRlcjogJXNcbiIsIGVsZl9l cnJtc2coLTEpKTsKKworCXNpemVfdCBzdHJuZHggPSBlaGRyLmVfc2hzdHJu ZHg7CisKKwlpbnQgbnVtX3RocmVhZHMgPSA0OworCXB0aHJlYWRfdCAqdGhy ZWFkcyA9IChwdGhyZWFkX3QqKSBtYWxsb2MobnVtX3RocmVhZHMgKiBzaXpl b2YocHRocmVhZF90KSk7CisJVGhyZWFkRGF0YSAqKnRocmVhZF9kYXRhID0g KFRocmVhZERhdGEqKikgbWFsbG9jKG51bV90aHJlYWRzICogc2l6ZW9mKFRo cmVhZERhdGEqKSk7CisJaW50IHRocmVhZF9jb3VudCA9IDA7CisKKwlpZiAo IXRocmVhZHMgfHwgIXRocmVhZF9kYXRhKQorCXsKKwkJZnByaW50ZihzdGRl cnIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWRzLlxu Iik7CisJCWZyZWUodGhyZWFkcyk7CisJCWZyZWUodGhyZWFkX2RhdGEpOwor CQlyZXR1cm4gMTsKKwl9CisKKwlFbGZfU2NuICpzY24gPSBOVUxMOworCXdo aWxlICgoc2NuID0gZWxmX25leHRzY24oZWxmLCBzY24pKSAhPSBOVUxMKQor CXsKKwkJR0VsZl9TaGRyIHNoZHI7CisJCWlmIChnZWxmX2dldHNoZHIoc2Nu LCAmc2hkcikgIT0gTlVMTCkKKwkJeworCQkJY2hhciAqbmFtZSA9IGVsZl9z dHJwdHIoZWxmLCBzdHJuZHgsIChzaXplX3QpIHNoZHIuc2hfbmFtZSk7CisJ CQlpZiAobmFtZSAhPSBOVUxMICYmIHNoZHIuc2hfdHlwZSA9PSBTSFRfUFJP R0JJVFMpCisJCQl7CisJCQkJYm9vbCBpc19laCA9IGZhbHNlOworCQkJCWlm IChzdHJjbXAobmFtZSwgIi5laF9mcmFtZSIpID09IDApCisJCQkJeworCQkJ CQlpc19laCA9IHRydWU7CisJCQkJfQorCQkJCWVsc2UgaWYgKHN0cmNtcChu YW1lLCAiLmRlYnVnX2ZyYW1lIikgPT0gMCB8fCBzdHJjbXAobmFtZSwgIi56 ZGVidWdfZnJhbWUiKSA9PSAwKQorCQkJCXsKKwkJCQkJaXNfZWggPSBmYWxz ZTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJY29udGludWU7CisJ CQkJfQorCisJCQkJaWYgKHRocmVhZF9jb3VudCA+PSBudW1fdGhyZWFkcykK KwkJCQl7CisJCQkJCW51bV90aHJlYWRzICo9IDI7CisJCQkJCXRocmVhZHMg PSByZWFsbG9jKHRocmVhZHMsIG51bV90aHJlYWRzICogc2l6ZW9mKHB0aHJl YWRfdCkpOworCQkJCQl0aHJlYWRfZGF0YSA9IHJlYWxsb2ModGhyZWFkX2Rh dGEsIG51bV90aHJlYWRzICogc2l6ZW9mKFRocmVhZERhdGEqKSk7CisJCQkJ fQorCisJCQkJdGhyZWFkX2RhdGFbdGhyZWFkX2NvdW50XSA9IG1hbGxvYyhz aXplb2YoVGhyZWFkRGF0YSkpOworCQkJCXRocmVhZF9kYXRhW3RocmVhZF9j b3VudF0tPm5hbWUgPSBuYW1lOworCQkJCXRocmVhZF9kYXRhW3RocmVhZF9j b3VudF0tPmVfaWRlbnQgPSBpZGVudDsKKwkJCQl0aHJlYWRfZGF0YVt0aHJl YWRfY291bnRdLT5zY24gPSBzY247CisJCQkJdGhyZWFkX2RhdGFbdGhyZWFk X2NvdW50XS0+aXNfZWggPSBpc19laDsKKworCQkJCWlmIChwdGhyZWFkX2Ny ZWF0ZSgmdGhyZWFkc1t0aHJlYWRfY291bnRdLCBOVUxMLCB0aHJlYWRfd29y aywgdGhyZWFkX2RhdGFbdGhyZWFkX2NvdW50XSkgIT0gMCkKKwkJCQl7CisJ CQkJCXBlcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQiKTsKKwkJCQkJ Zm9yIChpbnQgaiA9IDA7IGogPCB0aHJlYWRfY291bnQ7IGorKykKKwkJCQkJ eworCQkJCQkJcHRocmVhZF9jYW5jZWwodGhyZWFkc1tqXSk7CisJCQkJCX0K KwkJCQkJZnJlZSh0aHJlYWRzKTsKKwkJCQkJZnJlZSh0aHJlYWRfZGF0YSk7 CisJCQkJCXJldHVybiAxOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJ CQl0aHJlYWRfY291bnQrKzsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlm b3IgKGludCBpID0gMDsgaSA8IHRocmVhZF9jb3VudDsgaSsrKQorCXsKKwkJ aWYgKHB0aHJlYWRfam9pbih0aHJlYWRzW2ldLCBOVUxMKSAhPSAwKQorCQl7 CisJCQlwZXJyb3IoIkZhaWxlZCB0byBqb2luIHRocmVhZCIpOworCQkJZnJl ZSh0aHJlYWRzKTsKKwkJCWZyZWUodGhyZWFkX2RhdGEpOworCQkJcmV0dXJu IDE7CisJCX0KKwl9CisKKwlmb3IgKGludCBpID0gMDsgaSA8IHRocmVhZF9j b3VudDsgaSsrKQorCXsKKwkJZnJlZSh0aHJlYWRfZGF0YVtpXSk7CisJfQor CisJZnJlZSh0aHJlYWRzKTsKKwlmcmVlKHRocmVhZF9kYXRhKTsKKworCWVs Zl9lbmQoZWxmKTsKKwljbG9zZShmZCk7CisKKwlyZXR1cm4gMDsKK30KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9l dV9zZWFyY2hfZGllLmMgYi90ZXN0cy9ldV9zZWFyY2hfZGllLmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmE3Zjc1NTIxCi0tLSAv ZGV2L251bGwKKysrIGIvdGVzdHMvZXVfc2VhcmNoX2RpZS5jCkBAIC0wLDAg KzEsMjYyIEBACisvKlRlc3QgcHJvZ3JhbSBmb3IgZXVfc2VhcmNoX2RpZS4K KyAgIENvcHlyaWdodCAoQykgMjAyMyBSZWQgSGF0LCBJbmMuCisgICBUaGlz IGZpbGUgaXMgcGFydCBvZiBlbGZ1dGlscy4KKworICAgVGhpcyBmaWxlIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKworICAgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisgICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZTxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSBFTEZVVElMU19I RUFERVIoZHcpCisjaW5jbHVkZSA8ZHdhcmYuaD4KKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZj bnRsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRpbnQu aD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4K KyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgor I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5j bHVkZSA8cHRocmVhZC5oPgorCitzdGF0aWMgdm9pZCAqdGhyZWFkX3dvcmso dm9pZCAqYXJnKTsKK3N0YXRpYyBpbnQgY2hlY2tfZGllKER3YXJmX0RpZSAq ZGllKTsKK3N0YXRpYyBpbnQgY2hlY2tfZGJnKER3YXJmICpkYmcpOworCisv KlRoZSBtYWluIER3YXJmIGZpbGUuICAqLworc3RhdGljIER3YXJmICogZHdh cmY7CisKK3R5cGVkZWYgc3RydWN0Cit7CisJRHdhcmYgKiBkYmc7CisJRHdh cmZfT2ZmIHN0YXJ0X29mZnNldDsKKwlEd2FyZl9PZmYgZW5kX29mZnNldDsK KwlpbnQgcmVzdWx0OworfQorCitUaHJlYWREYXRhOworCitzdGF0aWMgdm9p ZCAqdGhyZWFkX3dvcmsodm9pZCAqYXJnKQoreworCVRocmVhZERhdGEgKmRh dGEgPSAoVGhyZWFkRGF0YSopIGFyZzsKKwlkYXRhLT5yZXN1bHQgPSBjaGVj a19kYmcoZGF0YS0+ZGJnKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGlj IGludCBjaGVja19kaWUoRHdhcmZfRGllICpkaWUpCit7CisJaWYgKGR3YXJm X3RhZyhkaWUpID09IERXX1RBR19pbnZhbGlkKQorCXsKKwkJcHJpbnRmKCJJ bnZhbGlkIGRpZVxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwlpbnQgcmVz ID0gMDsKKwl2b2lkICphZGRyID0gZGllLT5hZGRyOworCUR3YXJmX0RpZSBk aWUyOworCWlmIChkd2FyZl9kaWVfYWRkcl9kaWUoZHdhcmYsIGFkZHIsICZk aWUyKSA9PSBOVUxMKQorCXsKKwkJcHJpbnRmKCJCYWQgZGllIGFkZHIgZGll IGF0IG9mZnNldCAlIiBQUkl4NjQgIlxuIiwgZHdhcmZfZGllb2Zmc2V0KGRp ZSkpOworCQlyZXMgPSAtMTsKKwl9CisKKwlpZiAoZHdhcmZfdGFnKGRpZSkg IT0gZHdhcmZfdGFnKCZkaWUyKSkKKwl7CisJCXByaW50ZigiVGFncyBkaWZm ZXIgZm9yIGRpZSBhdCBvZmZzZXQgJSIgUFJJeDY0ICJcbiIsIGR3YXJmX2Rp ZW9mZnNldChkaWUpKTsKKwkJcmVzID0gLTE7CisJfQorCisJaWYgKGR3YXJm X2N1b2Zmc2V0KGRpZSkgIT0gZHdhcmZfY3VvZmZzZXQoJmRpZTIpKQorCXsK KwkJcHJpbnRmKCJDVSBvZmZzZXRzIGRpZmZlciBmb3IgZGllIGF0IG9mZnNl dCAlIiBQUkl4NjQgIlxuIiwgZHdhcmZfZGllb2Zmc2V0KGRpZSkpOworCQly ZXMgPSAtMTsKKwl9CisKKwlEd2FyZl9EaWUgY2hpbGQ7CisJaWYgKGR3YXJm X2NoaWxkKGRpZSwgJmNoaWxkKSA9PSAwKQorCQlyZXMgfD0gY2hlY2tfZGll KCZjaGlsZCk7CisKKwlEd2FyZl9EaWUgc2libGluZzsKKwlpZiAoZHdhcmZf c2libGluZ29mKGRpZSwgJnNpYmxpbmcpID09IDApCisJCXJlcyB8PSBjaGVj a19kaWUoJnNpYmxpbmcpOworCisJcmV0dXJuIHJlczsKK30KKworc3RhdGlj IGludCBjaGVja19kYmcoRHdhcmYgKmRiZykKK3sKKwlpbnQgcmVzID0gMDsK KwlEd2FyZl9PZmYgb2ZmID0gMDsKKwlEd2FyZl9PZmYgb2xkX29mZiA9IDA7 CisJc2l6ZV90IGhzaXplOworCUR3YXJmX09mZiBhYmJyZXY7CisJdWludDhf dCBhZGRyZXNzc2l6ZTsKKwl1aW50OF90IG9mZnNldHNpemU7CisKKwl3aGls ZSAoZHdhcmZfbmV4dGN1KGRiZywgb2ZmLCAmb2ZmLCAmaHNpemUsICZhYmJy ZXYsICZhZGRyZXNzc2l6ZSwgJm9mZnNldHNpemUpID09IDApCisJeworCQlE d2FyZl9EaWUgZGllOworCQlpZiAoZHdhcmZfb2ZmZGllKGRiZywgb2xkX29m ZiArIGhzaXplLCAmZGllKSAhPSBOVUxMKQorCQl7CisJCQlwcmludGYoImNo ZWNraW5nIENVIGF0ICUiIFBSSXg2NCAiXG4iLCBvbGRfb2ZmKTsKKwkJCXJl cyB8PSBjaGVja19kaWUoJmRpZSk7CisJCX0KKworCQlvbGRfb2ZmID0gb2Zm OworCX0KKworCS8vIFNhbWUgZm9yIHR5cGUuLi4KKwlEd2FyZl9IYWxmIHZl cnNpb247CisJdWludDY0X3QgdHlwZXNpZzsKKwlEd2FyZl9PZmYgdHlwZW9m ZjsKKwlvZmYgPSAwOworCW9sZF9vZmYgPSAwOworCisJd2hpbGUgKGR3YXJm X25leHRfdW5pdChkYmcsIG9mZiwgJm9mZiwgJmhzaXplLCAmdmVyc2lvbiwg JmFiYnJldiwgJmFkZHJlc3NzaXplLCAmb2Zmc2V0c2l6ZSwgJnR5cGVzaWcs ICZ0eXBlb2ZmKSA9PSAwKQorCXsKKwkJRHdhcmZfRGllIGRpZTsKKwkJaWYg KGR3YXJmX29mZmRpZV90eXBlcyhkYmcsIG9sZF9vZmYgKyBoc2l6ZSwgJmRp ZSkgIT0gTlVMTCkKKwkJeworCQkJcHJpbnRmKCJjaGVja2luZyBUVSBhdCAl IiBQUkl4NjQgIlxuIiwgb2xkX29mZik7CisJCQlyZXMgfD0gY2hlY2tfZGll KCZkaWUpOworCQl9CisKKwkJLy8gV2Ugc2hvdWxkIGhhdmUgc2VlbiB0aGlz IGFscmVhZHksIGJ1dCBkb3VibGUgY2hlY2suLi4KKwkJaWYgKGR3YXJmX29m ZmRpZV90eXBlcyhkYmcsIG9sZF9vZmYgKyB0eXBlb2ZmLCAmZGllKSAhPSBO VUxMKQorCQl7CisJCQlwcmludGYoImNoZWNraW5nIFR5cGUgRElFIGF0ICUi IFBSSXg2NCAiXG4iLCBvbGRfb2ZmICsgaHNpemUgKyB0eXBlb2ZmKTsKKwkJ CXJlcyB8PSBjaGVja19kaWUoJmRpZSk7CisJCX0KKworCQlvbGRfb2ZmID0g b2ZmOworCX0KKworCUR3YXJmICphbHQgPSBkd2FyZl9nZXRhbHQoZGJnKTsK KworCWlmIChhbHQgIT0gTlVMTCkKKwl7CisJCXByaW50ZigiY2hlY2tpbmcg YWx0IGRlYnVnXG4iKTsKKwkJcmVzIHw9IGNoZWNrX2RiZyhhbHQpOworCX0K KworCS8vIFNwbGl0IG9yIFR5cGUgRHdhcmZfRGllcyBnb3R0ZW4gdGhyb3Vn aCBkd2FyZl9nZXRfdW5pdHMuCisJRHdhcmZfQ1UgKmN1ID0gTlVMTDsKKwlE d2FyZl9EaWUgc3ViZGllOworCXVpbnQ4X3QgdW5pdF90eXBlOworCXdoaWxl IChkd2FyZl9nZXRfdW5pdHMoZGJnLCBjdSwgJmN1LCBOVUxMLCAmdW5pdF90 eXBlLCBOVUxMLCAmc3ViZGllKSA9PSAwKQorCXsKKwkJaWYgKGR3YXJmX3Rh Zygmc3ViZGllKSAhPSBEV19UQUdfaW52YWxpZCkKKwkJeworCQkJcHJpbnRm KCJjaGVja2luZyAlIgorCQkJCVBSSXg4ICIgc3ViZGllXG4iLCB1bml0X3R5 cGUpOworCQkJcmVzIHw9IGNoZWNrX2RpZSgmc3ViZGllKTsKKwkJfQorCX0K KworCXJldHVybiByZXM7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCit7CisJaWYgKGFyZ2MgPCAyKQorCXsKKwkJcHJpbnRmKCJO byBmaWxlIGdpdmVuLlxuIik7CisJCXJldHVybiAtMTsKKwl9CisKKwljb25z dCBjaGFyICpuYW1lID0gYXJndlsxXTsKKwlpbnQgZmQgPSBvcGVuKG5hbWUs IE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKQorCXsKKwkJcHJpbnRmKCJDYW5u b3Qgb3BlbiAnJXMnOiAlc1xuIiwgbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK KwkJcmV0dXJuIC0xOworCX0KKworCWR3YXJmID0gZHdhcmZfYmVnaW4oZmQs IERXQVJGX0NfUkVBRCk7CisJaWYgKGR3YXJmID09IE5VTEwpCisJeworCQlw cmludGYoIk5vdCBhIER3YXJmIGZpbGUgJyVzJzogJXNcbiIsIG5hbWUsIGR3 YXJmX2Vycm1zZygtMSkpOworCQljbG9zZShmZCk7CisJCXJldHVybiAtMTsK Kwl9CisKKwlwcmludGYoImNoZWNraW5nICVzXG4iLCBuYW1lKTsKKworCWlu dCBudW1fdGhyZWFkcyA9IDQ7CisJcHRocmVhZF90ICp0aHJlYWRzID0gKHB0 aHJlYWRfdCopIG1hbGxvYyhudW1fdGhyZWFkcyogc2l6ZW9mKHB0aHJlYWRf dCkpOworCVRocmVhZERhdGEgKnRocmVhZF9kYXRhID0gKFRocmVhZERhdGEq KSBtYWxsb2MobnVtX3RocmVhZHMqIHNpemVvZihUaHJlYWREYXRhKSk7CisK KwlpZiAoIXRocmVhZHMgfHwgIXRocmVhZF9kYXRhKQorCXsKKwkJZnByaW50 ZihzdGRlcnIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJl YWRzLlxuIik7CisJCWZyZWUodGhyZWFkcyk7CisJCWZyZWUodGhyZWFkX2Rh dGEpOworCQlyZXR1cm4gMTsKKwl9CisKKwlEd2FyZl9PZmYgdG90YWxfb2Zm ID0gMDsKKwlEd2FyZl9PZmYgdW5pdF9vZmYgPSAwOworCXNpemVfdCBoc2l6 ZTsKKwlEd2FyZl9PZmYgYWJicmV2OworCXVpbnQ4X3QgYWRkcmVzc3NpemU7 CisJdWludDhfdCBvZmZzZXRzaXplOworCisJd2hpbGUgKGR3YXJmX25leHRj dShkd2FyZiwgdW5pdF9vZmYsICZ1bml0X29mZiwgJmhzaXplLCAmYWJicmV2 LCAmYWRkcmVzc3NpemUsICZvZmZzZXRzaXplKSA9PSAwKQorCXsKKwkJdGhy ZWFkX2RhdGFbdG90YWxfb2ZmICUgbnVtX3RocmVhZHNdLnN0YXJ0X29mZnNl dCA9IHVuaXRfb2ZmOworCQl0aHJlYWRfZGF0YVt0b3RhbF9vZmYgJSBudW1f dGhyZWFkc10uZW5kX29mZnNldCA9IHVuaXRfb2ZmICsgaHNpemU7CisJCXRv dGFsX29mZisrOworCX0KKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3Ro cmVhZHM7IGkrKykKKwl7CisJCXRocmVhZF9kYXRhW2ldLmRiZyA9IGR3YXJm OworCQlpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZHNbaV0sIE5VTEwsIHRo cmVhZF93b3JrLCAodm9pZCopICZ0aHJlYWRfZGF0YVtpXSkgIT0gMCkKKwkJ eworCQkJcGVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIHRocmVhZCIpOworCQkJ Zm9yIChpbnQgaiA9IDA7IGogPCBpOyBqKyspCisJCQl7CisJCQkJcHRocmVh ZF9jYW5jZWwodGhyZWFkc1tqXSk7CisJCQl9CisJCQlmcmVlKHRocmVhZHMp OworCQkJZnJlZSh0aHJlYWRfZGF0YSk7CisJCQlyZXR1cm4gMTsKKwkJfQor CX0KKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3RocmVhZHM7IGkrKykK Kwl7CisJCWlmIChwdGhyZWFkX2pvaW4odGhyZWFkc1tpXSwgTlVMTCkgIT0g MCkKKwkJeworCQkJcGVycm9yKCJGYWlsZWQgdG8gam9pbiB0aHJlYWQiKTsK KwkJCWZyZWUodGhyZWFkcyk7CisJCQlmcmVlKHRocmVhZF9kYXRhKTsKKwkJ CXJldHVybiAxOworCQl9CisJfQorCisJaW50IHJlcyA9IDA7CisJZm9yIChp bnQgaSA9IDA7IGkgPCBudW1fdGhyZWFkczsgaSsrKQorCXsKKwkJcmVzIHw9 IHRocmVhZF9kYXRhW2ldLnJlc3VsdDsKKwl9CisKKwlmcmVlKHRocmVhZHMp OworCWZyZWUodGhyZWFkX2RhdGEpOworCisJZHdhcmZfZW5kKGR3YXJmKTsK KwljbG9zZShmZCk7CisKKwlyZXR1cm4gcmVzOworfQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL2V1X3NlYXJjaF9s aW5lcy5jIGIvdGVzdHMvZXVfc2VhcmNoX2xpbmVzLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmI3YTg3NWQ4Ci0tLSAvZGV2L251 bGwKKysrIGIvdGVzdHMvZXVfc2VhcmNoX2xpbmVzLmMKQEAgLTAsMCArMSwy MjggQEAKKy8qVGVzdCBwcm9ncmFtIGZvciBldV9zZWFyY2hfbGluZXMuCisg ICBDb3B5cmlnaHQgKEMpIDIwMjMgUmVkIEhhdCwgSW5jLgorICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgZWxmdXRpbHMuCisKKyAgIFRoaXMgZmlsZSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKKyAgIGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorICAgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWU8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LworCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4K KyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgPGxpYmVsZi5oPgor I2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3KQorI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+ CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgor Cit0eXBlZGVmIHN0cnVjdAoreworCWNvbnN0IGNoYXIgKmZpbGVuYW1lOwor CWludCByZXN1bHQ7Cit9CisKK1RocmVhZERhdGE7CisKK3N0YXRpYyB2b2lk ICp0aHJlYWRfd29yayh2b2lkICphcmcpCit7CisJVGhyZWFkRGF0YSAqZGF0 YSA9IChUaHJlYWREYXRhKikgYXJnOworCisJaW50IGZkID0gb3BlbihkYXRh LT5maWxlbmFtZSwgT19SRE9OTFkpOworCisJRHdhcmYgKmRiZyA9IGR3YXJm X2JlZ2luKGZkLCBEV0FSRl9DX1JFQUQpOworCWlmIChkYmcgPT0gTlVMTCkK Kwl7CisJCXByaW50ZigiJXMgbm90IHVzYWJsZTogJXNcbiIsIGRhdGEtPmZp bGVuYW1lLCBkd2FyZl9lcnJtc2coLTEpKTsKKwkJY2xvc2UoZmQpOworCQlm cmVlKGRhdGEpOworCQlwdGhyZWFkX2V4aXQoTlVMTCk7CisJfQorCisJRHdh cmZfT2ZmIGN1b2ZmID0gMDsKKwlEd2FyZl9PZmYgb2xkX2N1b2ZmID0gMDsK KwlzaXplX3QgaHNpemU7CisJRHdhcmZfT2ZmIGFvOworCXVpbnQ4X3QgYXN6 OworCXVpbnQ4X3Qgb3N6OworCXdoaWxlIChkd2FyZl9uZXh0Y3UoZGJnLCBj dW9mZiwgJmN1b2ZmLCAmaHNpemUsICZhbywgJmFzeiwgJm9zeikgPT0gMCkK Kwl7CisJCXByaW50ZigiY3VobCA9ICV6dSwgbyA9ICVsbHUsIGFzeiA9ICVo aHUsIG9zeiA9ICVoaHUsIG5jdSA9ICVsbHVcbiIsCisJCQloc2l6ZSwgKHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQpIGFvLAorCQkJYXN6LCBvc3osICh1bnNp Z25lZCBsb25nIGxvbmcgaW50KSBjdW9mZik7CisKKwkJLy8gR2V0IHRoZSBE SUUgZm9yIHRoZSBDVS4KKwkJRHdhcmZfRGllIGRpZTsKKwkJaWYgKGR3YXJm X29mZmRpZShkYmcsIG9sZF9jdW9mZiArIGhzaXplLCAmZGllKSA9PSBOVUxM KQorCQl7CisJCQlwcmludGYoIiVzOiBjYW5ub3QgZ2V0IENVIGRpZVxuIiwg ZGF0YS0+ZmlsZW5hbWUpOworCQkJZGF0YS0+cmVzdWx0ID0gMTsKKwkJCWJy ZWFrOworCQl9CisKKwkJb2xkX2N1b2ZmID0gY3VvZmY7CisKKwkJRHdhcmZf TGluZXMgKiBsYjsKKwkJc2l6ZV90IG5sYjsKKwkJaWYgKGR3YXJmX2dldHNy Y2xpbmVzKCZkaWUsICZsYiwgJm5sYikgIT0gMCkKKwkJeworCQkJcHJpbnRm KCIlczogY2Fubm90IGdldCBsaW5lc1xuIiwgZGF0YS0+ZmlsZW5hbWUpOwor CQkJZGF0YS0+cmVzdWx0ID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJcHJp bnRmKCIgJXp1IGxpbmVzXG4iLCBubGIpOworCisJCWZvciAoc2l6ZV90IGkg PSAwOyBpIDwgbmxiOyArK2kpCisJCXsKKwkJCUR3YXJmX0xpbmUgKmwgPSBk d2FyZl9vbmVzcmNsaW5lKGxiLCBpKTsKKwkJCWlmIChsID09IE5VTEwpCisJ CQl7CisJCQkJcHJpbnRmKCIlczogY2Fubm90IGdldCBpbmRpdmlkdWFsIGxp bmVcbiIsIGRhdGEtPmZpbGVuYW1lKTsKKwkJCQlkYXRhLT5yZXN1bHQgPSAx OworCQkJCWJyZWFrOworCQkJfQorCisJCQlEd2FyZl9BZGRyIGFkZHI7CisJ CQlpZiAoZHdhcmZfbGluZWFkZHIobCwgJmFkZHIpICE9IDApCisJCQkJYWRk ciA9IDA7CisJCQljb25zdCBjaGFyICpmaWxlID0gZHdhcmZfbGluZXNyYyhs LCBOVUxMLCBOVUxMKTsKKwkJCWludCBsaW5lOworCQkJaWYgKGR3YXJmX2xp bmVubyhsLCAmbGluZSkgIT0gMCkKKwkJCQlsaW5lID0gMDsKKworCQkJcHJp bnRmKCIlIiBQUkl4NjQgIjogJXM6JWQ6IiwgKHVpbnQ2NF90KSBhZGRyLCBm aWxlID8gOiAiPz8/IiwgbGluZSk7CisKKwkJCS8vIEdldHRpbmcgdGhlIGZp bGUgcGF0aCB0aHJvdWdoIHRoZSBEd2FyZl9GaWxlcyBzaG91bGQKKwkJCS8v IHJlc3VsdCBpbiB0aGUgc2FtZSBwYXRoLgorCQkJRHdhcmZfRmlsZXMgKiBm aWxlczsKKwkJCXNpemVfdCBpZHg7CisJCQlpZiAoZHdhcmZfbGluZV9maWxl KGwsICZmaWxlcywgJmlkeCkgIT0gMCkKKwkJCXsKKwkJCQlwcmludGYoIiVz OiBjYW5ub3QgZ2V0IGZpbGUgZnJvbSBsaW5lICglemQpOiAlc1xuIiwKKwkJ CQkJZGF0YS0+ZmlsZW5hbWUsIGksIGR3YXJmX2Vycm1zZygtMSkpOworCQkJ CWRhdGEtPnJlc3VsdCA9IDE7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCWNv bnN0IGNoYXIgKnBhdGggPSBkd2FyZl9maWxlc3JjKGZpbGVzLCBpZHgsIE5V TEwsIE5VTEwpOworCQkJaWYgKChwYXRoID09IE5VTEwgJiYgZmlsZSAhPSBO VUxMKSB8fAorCQkJCShwYXRoICE9IE5VTEwgJiYgZmlsZSA9PSBOVUxMKSB8 fAorCQkJCShzdHJjbXAoZmlsZSwgcGF0aCkgIT0gMCkpCisJCQl7CisJCQkJ cHJpbnRmKCIlczogbGluZSAlemQgc3JjbGluZSAoJXMpICE9IGZpbGUgc3Jj bGluZSAoJXMpXG4iLAorCQkJCQlkYXRhLT5maWxlbmFtZSwgaSwgZmlsZSA/ IDogIj8/PyIsIHBhdGggPyA6ICI/Pz8iKTsKKwkJCQlkYXRhLT5yZXN1bHQg PSAxOworCQkJCWJyZWFrOworCQkJfQorCisJCQlpbnQgY29sdW1uOworCQkJ aWYgKGR3YXJmX2xpbmVjb2wobCwgJmNvbHVtbikgIT0gMCkKKwkJCQljb2x1 bW4gPSAwOworCQkJaWYgKGNvbHVtbiA+PSAwKQorCQkJCXByaW50ZigiJWQ6 IiwgY29sdW1uKTsKKworCQkJYm9vbCBpc19zdG10OworCQkJaWYgKGR3YXJm X2xpbmViZWdpbnN0YXRlbWVudChsLCAmaXNfc3RtdCkgIT0gMCkKKwkJCQlp c19zdG10ID0gZmFsc2U7CisJCQlib29sIGVuZF9zZXF1ZW5jZTsKKwkJCWlm IChkd2FyZl9saW5lZW5kc2VxdWVuY2UobCwgJmVuZF9zZXF1ZW5jZSkgIT0g MCkKKwkJCQllbmRfc2VxdWVuY2UgPSBmYWxzZTsKKwkJCWJvb2wgYmFzaWNf YmxvY2s7CisJCQlpZiAoZHdhcmZfbGluZWJsb2NrKGwsICZiYXNpY19ibG9j aykgIT0gMCkKKwkJCQliYXNpY19ibG9jayA9IGZhbHNlOworCQkJYm9vbCBw cm9sb2d1ZV9lbmQ7CisJCQlpZiAoZHdhcmZfbGluZXByb2xvZ3VlZW5kKGws ICZwcm9sb2d1ZV9lbmQpICE9IDApCisJCQkJcHJvbG9ndWVfZW5kID0gZmFs c2U7CisJCQlib29sIGVwaWxvZ3VlX2JlZ2luOworCQkJaWYgKGR3YXJmX2xp bmVlcGlsb2d1ZWJlZ2luKGwsICZlcGlsb2d1ZV9iZWdpbikgIT0gMCkKKwkJ CQllcGlsb2d1ZV9iZWdpbiA9IGZhbHNlOworCisJCQlwcmludGYoIiBpc19z dG10OiVzLCBlbmRfc2VxOiVzLCBiYjolcywgcHJvbG9ndWU6JXMsIGVwaWxv Z3VlOiVzXG4iLAorCQkJCWlzX3N0bXQgPyAieWVzIiA6ICJubyIsIGVuZF9z ZXF1ZW5jZSA/ICJ5ZXMiIDogIm5vIiwKKwkJCQliYXNpY19ibG9jayA/ICJ5 ZXMiIDogIm5vIiwgcHJvbG9ndWVfZW5kID8gInllcyIgOiAibm8iLAorCQkJ CWVwaWxvZ3VlX2JlZ2luID8gInllcyIgOiAibm8iKTsKKwkJfQorCX0KKwor CWR3YXJmX2VuZChkYmcpOworCWNsb3NlKGZkKTsKKwlmcmVlKGRhdGEpOwor CisJcHRocmVhZF9leGl0KE5VTEwpOworfQorCitpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQoreworCWludCByZXN1bHQgPSAwOworCWludCBj bnQ7CisKKwlpZiAoYXJnYyA8IDIpCisJeworCQlwcmludGYoIlVzYWdlOiAl czxmaWxlbmFtZTE+WzxmaWxlbmFtZTI+IC4uLl1cbiIsIGFyZ3ZbMF0pOwor CQlyZXR1cm4gMTsKKwl9CisKKwlwdGhyZWFkX3QgKnRocmVhZHMgPSAocHRo cmVhZF90KikgbWFsbG9jKChhcmdjIC0gMSkgKnNpemVvZihwdGhyZWFkX3Qp KTsKKwlUaHJlYWREYXRhICoqdGhyZWFkX2RhdGEgPSAoVGhyZWFkRGF0YSAq KikgbWFsbG9jKChhcmdjIC0gMSkgKnNpemVvZihUaHJlYWREYXRhKikpOwor CisJaWYgKCF0aHJlYWRzIHx8ICF0aHJlYWRfZGF0YSkKKwl7CisJCWZwcmlu dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhy ZWFkcy5cbiIpOworCQlmcmVlKHRocmVhZHMpOworCQlmcmVlKHRocmVhZF9k YXRhKTsKKwkJcmV0dXJuIDE7CisJfQorCisJZm9yIChjbnQgPSAxOyBjbnQg PCBhcmdjOyArK2NudCkKKwl7CisJCXRocmVhZF9kYXRhW2NudCAtIDFdID0g KFRocmVhZERhdGEqKSBtYWxsb2Moc2l6ZW9mKFRocmVhZERhdGEpKTsKKwkJ dGhyZWFkX2RhdGFbY250IC0gMV0tPmZpbGVuYW1lID0gYXJndltjbnRdOwor CQl0aHJlYWRfZGF0YVtjbnQgLSAxXS0+cmVzdWx0ID0gMDsKKworCQlpZiAo cHRocmVhZF9jcmVhdGUoJnRocmVhZHNbY250IC0gMV0sIE5VTEwsIHRocmVh ZF93b3JrLCB0aHJlYWRfZGF0YVtjbnQgLSAxXSkgIT0gMCkKKwkJeworCQkJ cGVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIHRocmVhZCIpOworCQkJZm9yIChp bnQgaiA9IDA7IGogPCBjbnQ7IGorKykKKwkJCXsKKwkJCQlwdGhyZWFkX2Nh bmNlbCh0aHJlYWRzW2pdKTsKKwkJCX0KKwkJCWZyZWUodGhyZWFkcyk7CisJ CQlmcmVlKHRocmVhZF9kYXRhKTsKKwkJCXJldHVybiAxOworCQl9CisJfQor CisJZm9yIChjbnQgPSAwOyBjbnQgPCBhcmdjIC0gMTsgKytjbnQpCisJewor CQlpZiAocHRocmVhZF9qb2luKHRocmVhZHNbY250XSwgTlVMTCkgIT0gMCkK KwkJeworCQkJcGVycm9yKCJGYWlsZWQgdG8gam9pbiB0aHJlYWQiKTsKKwkJ CWZyZWUodGhyZWFkcyk7CisJCQlmcmVlKHRocmVhZF9kYXRhKTsKKwkJCXJl dHVybiAxOworCQl9CisKKwkJaWYgKHRocmVhZF9kYXRhW2NudF0tPnJlc3Vs dCAhPSAwKQorCQl7CisJCQlyZXN1bHQgPSAxOworCQl9CisKKwkJZnJlZSh0 aHJlYWRfZGF0YVtjbnRdKTsKKwl9CisKKwlmcmVlKHRocmVhZHMpOworCWZy ZWUodGhyZWFkX2RhdGEpOworCisJcmV0dXJuIHJlc3VsdDsKK30KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9ldV9z ZWFyY2hfbWFjcm9zLmMgYi90ZXN0cy9ldV9zZWFyY2hfbWFjcm9zLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjNkY2E4MjhlCi0t LSAvZGV2L251bGwKKysrIGIvdGVzdHMvZXVfc2VhcmNoX21hY3Jvcy5jCkBA IC0wLDAgKzEsMjE2IEBACisvKlRlc3QgcHJvZ3JhbSBmb3IgZXVfc2VhcmNo X21hY3JvcworICAgQ29weXJpZ2h0IChDKSAyMDIzIFJlZCBIYXQsIEluYy4K KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGVsZnV0aWxzLgorCisgICBUaGlz IGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBlbGZ1dGlscyBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQK KyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPGNvbmZpZy5oPgorI2luY2x1ZGUg RUxGVVRJTFNfSEVBREVSKGR3KQorI2luY2x1ZGUgPGR3YXJmLmg+CisjaW5j bHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNp bmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk ZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8 YXNzZXJ0Lmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpbmNsdWRlIDxz dGRhdG9taWMuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKK3N0YXRpYyB2 b2lkICp0aHJlYWRfd29yayh2b2lkICphcmcpOworc3RhdGljIGludCBtYWMo RHdhcmZfTWFjcm8gKm1hY3JvLCB2b2lkICpkYmcpOworc3RhdGljIHZvaWQg aW5jbHVkZShEd2FyZiAqZGJnLCBEd2FyZl9PZmYgbWFjb2ZmLCBwdHJkaWZm X3QgdG9rZW4pOworCit0eXBlZGVmIHN0cnVjdAoreworCUR3YXJmICogZGJn OworCUR3YXJmX0RpZSAqIGN1ZGllOworCWJvb2wgbmV3X3N0eWxlOworfQor CitUaHJlYWREYXRhOworCitzdGF0aWMgdm9pZCAqdGhyZWFkX3dvcmsodm9p ZCAqYXJnKQoreworCVRocmVhZERhdGEgKmRhdGEgPSAoVGhyZWFkRGF0YSop IGFyZzsKKwlEd2FyZiAqZGJnID0gZGF0YS0+ZGJnOworCUR3YXJmX0RpZSAq Y3VkaWUgPSBkYXRhLT5jdWRpZTsKKwlib29sIG5ld19zdHlsZSA9IGRhdGEt Pm5ld19zdHlsZTsKKworCWZvciAocHRyZGlmZl90IG9mZiA9IG5ld19zdHls ZSA/IERXQVJGX0dFVE1BQ1JPU19TVEFSVCA6IDA7CisJCShvZmYgPSBkd2Fy Zl9nZXRtYWNyb3MoY3VkaWUsIG1hYywgZGJnLCBvZmYpKTspCisJeworCQlp ZiAob2ZmID09IC0xKQorCQl7CisJCQlwdXRzKGR3YXJmX2Vycm1zZyhkd2Fy Zl9lcnJubygpKSk7CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVybiBO VUxMOworfQorCitzdGF0aWMgdm9pZCBpbmNsdWRlKER3YXJmICpkYmcsIER3 YXJmX09mZiBtYWNvZmYsIHB0cmRpZmZfdCB0b2tlbikKK3sKKwl3aGlsZSAo KHRva2VuID0gZHdhcmZfZ2V0bWFjcm9zX29mZihkYmcsIG1hY29mZiwgbWFj LCBkYmcsIHRva2VuKSkgIT0gMCkKKwl7CisJCWlmICh0b2tlbiA9PSAtMSkK KwkJeworCQkJcHV0cyhkd2FyZl9lcnJtc2coZHdhcmZfZXJybm8oKSkpOwor CQkJYnJlYWs7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQKK21hYyhEd2Fy Zl9NYWNybyAqbWFjcm8sIHZvaWQgKmRiZykKK3sKKwlzdGF0aWMgYXRvbWlj X2ludCBsZXZlbCA9IDA7CisKKwl1bnNpZ25lZCBpbnQgb3Bjb2RlOworCWR3 YXJmX21hY3JvX29wY29kZShtYWNybywgJm9wY29kZSk7CisJc3dpdGNoIChv cGNvZGUpCisJeworCQljYXNlIERXX01BQ1JPX2ltcG9ydDoKKwkJCXsKKwkJ CQlEd2FyZl9BdHRyaWJ1dGUgYXQ7CisJCQkJaW50IHIgPSBkd2FyZl9tYWNy b19wYXJhbShtYWNybywgMCwgJmF0KTsKKwkJCQlhc3NlcnQociA9PSAwKTsK KworCQkJCUR3YXJmX1dvcmQgdzsKKwkJCQlyID0gZHdhcmZfZm9ybXVkYXRh KCZhdCwgJncpOworCQkJCWFzc2VydChyID09IDApOworCisJCQkJcHJpbnRm ICgiJSpzaW5jbHVkZSAlIyIgUFJJeDY0ICJcbiIsIGxldmVsLCAiIiwgdyk7 CisKKwkJCQlhdG9taWNfZmV0Y2hfYWRkKCZsZXZlbCwgMSk7CisKKwkJCQlp bmNsdWRlKGRiZywgdywgRFdBUkZfR0VUTUFDUk9TX1NUQVJUKTsKKworCQkJ CWF0b21pY19mZXRjaF9zdWIoJmxldmVsLCAxKTsKKworCQkJCXByaW50ZiAo IiUqcy9pbmNsdWRlXG4iLCBsZXZlbCwgIiIpOworCQkJCWJyZWFrOworCQkJ fQorCisJCWNhc2UgRFdfTUFDUk9fc3RhcnRfZmlsZToKKwkJCXsKKwkJCQlE d2FyZl9GaWxlcyAqIGZpbGVzOworCQkJCXNpemVfdCBuZmlsZXM7CisJCQkJ aWYgKGR3YXJmX21hY3JvX2dldHNyY2ZpbGVzKGRiZywgbWFjcm8sICZmaWxl cywgJm5maWxlcykgPCAwKQorCQkJCQlwcmludGYoImR3YXJmX21hY3JvX2dl dHNyY2ZpbGVzOiAlc1xuIiwgZHdhcmZfZXJybXNnKGR3YXJmX2Vycm5vKCkp KTsKKworCQkJCUR3YXJmX1dvcmQgdyA9IDA7CisJCQkJZHdhcmZfbWFjcm9f cGFyYW0yKG1hY3JvLCAmdywgTlVMTCk7CisKKwkJCQljb25zdCBjaGFyICpu YW1lID0gZHdhcmZfZmlsZXNyYyAoZmlsZXMsIChzaXplX3QpIHcsIE5VTEws IE5VTEwpOworCQkJCXByaW50ZiAoIiUqc2ZpbGUgJXNcbiIsIGxldmVsLCAi IiwgbmFtZSk7CisJCQkJYXRvbWljX2ZldGNoX2FkZCgmbGV2ZWwsIDEpOwor CQkJCWJyZWFrOworCQkJfQorCisJCWNhc2UgRFdfTUFDUk9fZW5kX2ZpbGU6 CisJCQl7CisJCQkJYXRvbWljX2ZldGNoX3N1YigmbGV2ZWwsIDEpOworCQkJ CXByaW50ZiAoIiUqcy9maWxlXG4iLCBsZXZlbCwgIiIpOworCQkJCWJyZWFr OworCQkJfQorCisJCWNhc2UgRFdfTUFDSU5GT19kZWZpbmU6CisJCWNhc2Ug RFdfTUFDUk9fZGVmaW5lX3N0cnA6CisJCQl7CisJCQkJY29uc3QgY2hhciAq dmFsdWU7CisJCQkJZHdhcmZfbWFjcm9fcGFyYW0yKG1hY3JvLCBOVUxMLCAm dmFsdWUpOworCQkJCXByaW50ZiAoIiUqcyVzXG4iLCBsZXZlbCwgIiIsIHZh bHVlKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQljYXNlIERXX01BQ0lORk9f dW5kZWY6CisJCWNhc2UgRFdfTUFDUk9fdW5kZWZfc3RycDoKKwkJCWJyZWFr OworCisJCWRlZmF1bHQ6CisJCQl7CisJCQkJc2l6ZV90IHBhcmFtY250Owor CQkJCWR3YXJmX21hY3JvX2dldHBhcmFtY250KG1hY3JvLCAmcGFyYW1jbnQp OworCQkJCXByaW50ZiAoIiUqc29wY29kZSAldSB3aXRoICV6ZCBhcmd1bWVu dHNcbiIsIGxldmVsLCAiIiwgb3Bjb2RlLCBwYXJhbWNudCk7CisJCQkJYnJl YWs7CisJCQl9CisJfQorCisJcmV0dXJuIERXQVJGX0NCX0FCT1JUOworfQor CitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWFzc2Vy dChhcmdjID49IDMpOworCWNvbnN0IGNoYXIgKm5hbWUgPSBhcmd2WzFdOwor CXB0cmRpZmZfdCBjdW9mZiA9IHN0cnRvbChhcmd2WzJdLCBOVUxMLCAwKTsK Kwlib29sIG5ld19zdHlsZSA9IGFyZ2MgPiAzOworCisJaW50IGZkID0gb3Bl bihuYW1lLCBPX1JET05MWSk7CisJRHdhcmYgKmRiZyA9IGR3YXJmX2JlZ2lu KGZkLCBEV0FSRl9DX1JFQUQpOworCisJRHdhcmZfRGllIGN1ZGllX21lbSwg KmN1ZGllID0gZHdhcmZfb2ZmZGllKGRiZywgY3VvZmYsICZjdWRpZV9tZW0p OworCisJaW50IG51bV90aHJlYWRzID0gNDsKKwlwdGhyZWFkX3QgKnRocmVh ZHMgPSBtYWxsb2MobnVtX3RocmVhZHMqIHNpemVvZihwdGhyZWFkX3QpKTsK KwlUaHJlYWREYXRhICp0aHJlYWRfZGF0YSA9IG1hbGxvYyhudW1fdGhyZWFk cyogc2l6ZW9mKFRocmVhZERhdGEpKTsKKworCWlmICghdGhyZWFkcyB8fCAh dGhyZWFkX2RhdGEpCisJeworCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0 byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZHMuXG4iKTsKKwkJZnJlZSh0 aHJlYWRzKTsKKwkJZnJlZSh0aHJlYWRfZGF0YSk7CisJCXJldHVybiAxOwor CX0KKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3RocmVhZHM7IGkrKykK Kwl7CisJCXRocmVhZF9kYXRhW2ldLmRiZyA9IGRiZzsKKwkJdGhyZWFkX2Rh dGFbaV0uY3VkaWUgPSBjdWRpZTsKKwkJdGhyZWFkX2RhdGFbaV0ubmV3X3N0 eWxlID0gbmV3X3N0eWxlOworCisJCWlmIChwdGhyZWFkX2NyZWF0ZSgmdGhy ZWFkc1tpXSwgTlVMTCwgdGhyZWFkX3dvcmssICh2b2lkKikgJnRocmVhZF9k YXRhW2ldKSAhPSAwKQorCQl7CisJCQlwZXJyb3IoIkZhaWxlZCB0byBjcmVh dGUgdGhyZWFkIik7CisJCQlmb3IgKGludCBqID0gMDsgaiA8IGk7IGorKykK KwkJCXsKKwkJCQlwdGhyZWFkX2NhbmNlbCh0aHJlYWRzW2pdKTsKKwkJCX0K KwkJCWZyZWUodGhyZWFkcyk7CisJCQlmcmVlKHRocmVhZF9kYXRhKTsKKwkJ CXJldHVybiAxOworCQl9CisJfQorCisJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fdGhyZWFkczsgaSsrKQorCXsKKwkJaWYgKHB0aHJlYWRfam9pbih0aHJl YWRzW2ldLCBOVUxMKSAhPSAwKQorCQl7CisJCQlwZXJyb3IoIkZhaWxlZCB0 byBqb2luIHRocmVhZCIpOworCQkJZnJlZSh0aHJlYWRzKTsKKwkJCWZyZWUo dGhyZWFkX2RhdGEpOworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisKKwlmcmVl KHRocmVhZHMpOworCWZyZWUodGhyZWFkX2RhdGEpOworCisJZHdhcmZfZW5k KGRiZyk7CisKKwlyZXR1cm4gMDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0cy9ydW4tZXUtc2VhcmNoLXRlc3Rz LnNoIGIvdGVzdHMvcnVuLWV1LXNlYXJjaC10ZXN0cy5zaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uODRlZGMyMzQKLS0tIC9kZXYv bnVsbAorKysgYi90ZXN0cy9ydW4tZXUtc2VhcmNoLXRlc3RzLnNoCkBAIC0w LDAgKzEsMTY4IEBACisjISAvYmluL3NoCisjIENvcHlyaWdodCAoQykgMjAx NSwgMjAxOCBSZWQgSGF0LCBJbmMuCisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IGVsZnV0aWxzLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBl bGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisuICRzcmNkaXIvdGVzdC1zdWJy LnNoCisKKyMgRXh0cmFjdCB0aGUgdmFsdWUgb2YgVVNFX0FERFJFU1NfU0FO SVRJWkVSX1RSVUUgZnJvbSBjb25maWcuc3RhdHVzCisjIENhbm5vdCB1c2Ug SGVsZ3JpbmQgYW5kIEFkZHJlc3MgU2FuaXRpemVyIHRvZ2V0aGVyLgorIyBU ZXN0IHdpbGwgYmUgc2tpcHBlZCBpZiBBZGRyZXNzIFNhbml0aXplciBpcyBl bmFibGVkLgorVVNFX0FERFJFU1NfU0FOSVRJWkVSPSQoZ3JlcCAnVVNFX0FE RFJFU1NfU0FOSVRJWkVSX1RSVUUnICR7YWJzX2J1aWxkZGlyfS8uLi9jb25m aWcuc3RhdHVzIHwgYXdrIC1GJz0nICd7cHJpbnQgJDJ9JykKKworaWYgW1sg IiRVU0VfQUREUkVTU19TQU5JVElaRVIiID09ICJcIiNcIiIgXV07IHRoZW4K KyAgICBlY2hvICJBZGRyZXNzIFNhbml0aXplciBpcyBkaXNhYmxlZC4iCitl bHNlCisgICAgZWNobyAiQWRkcmVzcyBTYW5pdGl6ZXIgaXMgZW5hYmxlZC4g U2tpcHBpbmcgdGVzdC4iCisgICAgZXhpdCA3NworZmkKKworIyBFeHRyYWN0 IHRoZSB2YWx1ZSBvZiBVU0VfTUVNT1JZX1NBTklUSVpFUl9UUlVFIGZyb20g Y29uZmlnLnN0YXR1cworIyBDYW5ub3QgdXNlIEhlbGdyaW5kIGFuZCBNZW1v cnkgU2FuaXRpemVyIHRvZ2V0aGVyLgorIyBUZXN0IHdpbGwgYmUgc2tpcHBl ZCBpZiBNZW1vcnkgU2FuaXRpemVyIGlzIGVuYWJsZWQuCitVU0VfTUVNT1JZ X1NBTklUSVpFUj0kKGdyZXAgJ1VTRV9NRU1PUllfU0FOSVRJWkVSX1RSVUUn ICR7YWJzX2J1aWxkZGlyfS8uLi9jb25maWcuc3RhdHVzIHwgYXdrIC1GJz0n ICd7cHJpbnQgJDJ9JykKKworaWYgW1sgIiRVU0VfTUVNT1JZX1NBTklUSVpF UiIgPT0gIlwiI1wiIiBdXTsgdGhlbgorICAgIGVjaG8gIk1lbW9yeSBTYW5p dGl6ZXIgaXMgZGlzYWJsZWQuIgorZWxzZQorICAgIGVjaG8gIk1lbW9yeSBT YW5pdGl6ZXIgaXMgZW5hYmxlZC4gU2tpcHBpbmcgdGVzdC4iCisgICAgZXhp dCA3NworZmkKKworIyBFeHRyYWN0IHRoZSB2YWx1ZSBvZiBVU0VfTE9DS1Mg ZnJvbSBjb25maWcuaAorIyBUZXN0IHdpbGwgb25seSBiZSBydW4gaWYgVVNF X0xPQ0tTIGlzIGRlZmluZWQuIE90aGVyd2lzZSwgc2tpcC4KK1VTRV9MT0NL Uz0kKGdyZXAgJ14jZGVmaW5lIFVTRV9MT0NLUycgJHthYnNfYnVpbGRkaXJ9 Ly4uL2NvbmZpZy5oIHwgYXdrICd7cHJpbnQgJDN9JykKKworaWYgW1sgIiRV U0VfTE9DS1MiIC1lcSAxIF1dOyB0aGVuCisgICAgZWNobyAiVVNFX0xPQ0tT IGlzIGRlZmluZWQuIgorZWxzZQorICAgIGVjaG8gIlVTRV9MT0NLUyBpcyBu b3QgZGVmaW5lZC4gU2tpcHBpbmcgdGVzdC4iCisgICAgZXhpdCA3NworZmkK KworIyBEaXNhYmxlIHZhbGdyaW5kIGlmIGNvbmZpZ3VyZWQsIHNpbmNlIHdl IGFyZSBhbHJlYWR5IHVzaW5nIGl0IGhlcmUuCitTQVZFRF9WQUxHUklORF9D TUQ9IiRWQUxHUklORF9DTUQiCit1bnNldCBWQUxHUklORF9DTUQKKworZWNo byAiQmVnaW4gdGVzdHMuLi4iCisKKyMgQmVnaW4gZGF0YSByYWNlIHRlc3Qg Zm9yIHBhcmFsbGVsaXplZCBkd2FyZi1kaWUtYWRkci1kaWUKKyMgVGVzdHMg dGhyZWFkIHNhZmV0eSBmb3IgdXBkYXRlZCBsaWJkd19maW5kY3UuYyBhbmQg bGliZHdfZmluZF9zcGxpdF91bml0LmMKK3Rlc3RmaWxlcyB0ZXN0ZmlsZS1k ZWJ1Zy10eXBlcwordGVzdGZpbGVzIHRlc3RmaWxlX211bHRpX21haW4gdGVz dGZpbGVfbXVsdGkuZHd6Cit0ZXN0ZmlsZXMgdGVzdGZpbGViYXpkYmdwcGM2 NC5kZWJ1ZwordGVzdGZpbGVzIHRlc3RmaWxlLWR3YXJmLTQgdGVzdGZpbGUt ZHdhcmYtNQordGVzdGZpbGVzIHRlc3RmaWxlLXNwbGl0ZHdhcmYtNCB0ZXN0 ZmlsZS1oZWxsbzQuZHdvIHRlc3RmaWxlLXdvcmxkNC5kd28KK3Rlc3RmaWxl cyB0ZXN0ZmlsZS1zcGxpdGR3YXJmLTUgdGVzdGZpbGUtaGVsbG81LmR3byB0 ZXN0ZmlsZS13b3JsZDUuZHdvCisKK2RpZV90ZXN0X2ZpbGVzPSgidGVzdGZp bGUtZGVidWctdHlwZXMiCisgICAgICAgICAgICAgICAgInRlc3RmaWxlX211 bHRpX21haW4iICJ0ZXN0ZmlsZV9tdWx0aS5kd3oiCisgICAgICAgICAgICAg ICAgInRlc3RmaWxlYmF6ZGJncHBjNjQuZGVidWciCisgICAgICAgICAgICAg ICAgInRlc3RmaWxlLWR3YXJmLTQiICJ0ZXN0ZmlsZS1kd2FyZi01IgorICAg ICAgICAgICAgICAgICJ0ZXN0ZmlsZS1zcGxpdGR3YXJmLTQiICJ0ZXN0Zmls ZS1oZWxsbzQuZHdvIiAidGVzdGZpbGUtd29ybGQ0LmR3byIKKyAgICAgICAg ICAgICAgICAidGVzdGZpbGUtc3BsaXRkd2FyZi01IiAidGVzdGZpbGUtaGVs bG81LmR3byIgInRlc3RmaWxlLXdvcmxkNS5kd28iKQorCitlY2hvIC1lICJc blN0YXJ0aW5nIGRhdGEgcmFjZSB0ZXN0IGZvciBkd2FyZi1kaWUtYWRkci1k aWUiCisKK2ZvciBmaWxlIGluICIke2RpZV90ZXN0X2ZpbGVzW0BdfSI7IGRv CisgICAgaGVsZ3JpbmRfb3V0cHV0PSQodmFsZ3JpbmQgLS10b29sPWhlbGdy aW5kICIke2Fic19idWlsZGRpcn0vZXVfc2VhcmNoX2RpZSIgIiRmaWxlIiAy PiYxKQorCisgICAgaWYgZ3JlcCAtcSAiRVJST1IgU1VNTUFSWTogMCBlcnJv cnMiIDw8PCAiJGhlbGdyaW5kX291dHB1dCI7IHRoZW4KKyAgICAgICAgZWNo byAiTm8gZGF0YSByYWNlcyBmb3VuZCBmb3IgJGZpbGUuIFRlc3QgcGFzc2Vk LiIKKyAgICBlbHNlCisgICAgICAgIGVjaG8gIkRhdGEgcmFjZXMgZm91bmQg Zm9yICRmaWxlLiBUZXN0IGZhaWxlZC4iCisgICAgICAgIGVjaG8gIiRoZWxn cmluZF9vdXRwdXQiCisgICAgICAgIGV4aXQgMQorICAgIGZpCitkb25lCisK KyMgQmVnaW4gZGF0YSByYWNlIHRlc3QgZm9yIHBhcmFsbGVsaXplZCBuZXh0 X2NmaQorIyBUZXN0cyB0aHJlYWQgc2FmZXR5IGZvciB1cGRhdGVkIGNpZS5j IGFuZCBmZGUuYwordGVzdGZpbGVzIHRlc3RmaWxlMTEgdGVzdGZpbGUxMgor dGVzdGZpbGVzIHRlc3RmaWxlYXJtIHRlc3RmaWxlYWFyY2g2NAordGVzdGZp bGVzIHRlc3RmaWxlcHBjMzIgdGVzdGZpbGVwcGM2NAorCitjZmlfdGVzdF9m aWxlcz0oInRlc3RmaWxlMTEiICJ0ZXN0ZmlsZTEyIgorICAgICAgICAgICAg ICAgICJ0ZXN0ZmlsZWFybSIgInRlc3RmaWxlYWFyY2g2NCIKKyAgICAgICAg ICAgICAgICAidGVzdGZpbGVwcGMzMiIgInRlc3RmaWxlcHBjNjQiKQorCitl Y2hvIC1lICJcblN0YXJ0aW5nIGRhdGEgcmFjZSB0ZXN0IGZvciBuZXh0X2Nm aSIKKworZm9yIGZpbGUgaW4gIiR7Y2ZpX3Rlc3RfZmlsZXNbQF19IjsgZG8K KworICAgIGhlbGdyaW5kX291dHB1dD0kKHZhbGdyaW5kIC0tdG9vbD1oZWxn cmluZCAiJHthYnNfYnVpbGRkaXJ9L2V1X3NlYXJjaF9jZmkiICRmaWxlIDI+ JjEpCisKKyAgICBpZiBncmVwIC1xICJFUlJPUiBTVU1NQVJZOiAwIGVycm9y cyIgPDw8ICIkaGVsZ3JpbmRfb3V0cHV0IjsgdGhlbgorICAgICAgICBlY2hv ICJObyBkYXRhIHJhY2VzIGZvdW5kIGZvciAkZmlsZS4gVGVzdCBwYXNzZWQu IgorICAgIGVsc2UKKyAgICAgICAgZWNobyAiRGF0YSByYWNlcyBmb3VuZCBm b3IgJGZpbGUuIFRlc3QgZmFpbGVkLiIKKyAgICAgICAgZWNobyAiJGhlbGdy aW5kX291dHB1dCIKKyAgICAgICAgZXhpdCAxCisgICAgZmkKKworZG9uZQor CisjIEJlZ2luIGRhdGEgcmFjZSB0ZXN0IGZvciBwYXJhbGxlbGl6ZCBkd2Fy Zi1nZXRtYWNyb3MKKyMgVGVzdHMgdGhyZWFkIHNhZmV0eSBmb3IgdXBkYXRl ZCBkd2FyZl9nZXRtYWNyb3MuYwordGVzdGZpbGVzIHRlc3RmaWxlNTEKK3Rl c3RmaWxlcyB0ZXN0ZmlsZS1tYWNyb3MKK3Rlc3RmaWxlcyB0ZXN0ZmlsZS1t YWNyb3MtMHhmZgorCittYWNyb190ZXN0X2ZpbGVzPSgidGVzdGZpbGU1MSAw eGIiCisgICAgICAgICAgICAgICAgICAidGVzdGZpbGU1MSAweDg0IgorICAg ICAgICAgICAgICAgICAgInRlc3RmaWxlLW1hY3Jvc20gMHhiIgorICAgICAg ICAgICAgICAgICAgInRlc3RmaWxlLW1hY3Jvcy0weGZmIDB4YiIpCisKK2Vj aG8gLWUgIlxuU3RhcnRpbmcgZGF0YSByYWNlIHRlc3QgZm9yIGR3YXJmLWdl dG1hY3JvcyIKKworZm9yIGZpbGUgaW4gIiR7bWFjcm9fdGVzdF9maWxlc1tA XX0iOyBkbworCisgICAgaGVsZ3JpbmRfb3V0cHV0PSQodmFsZ3JpbmQgLS10 b29sPWhlbGdyaW5kICIke2Fic19idWlsZGRpcn0vZXVfc2VhcmNoX21hY3Jv cyIgJGZpbGUgMj4mMSkKKworICAgIGlmIGdyZXAgLXEgIkVSUk9SIFNVTU1B Ulk6IDAgZXJyb3JzIiA8PDwgIiRoZWxncmluZF9vdXRwdXQiOyB0aGVuCisg ICAgICAgIGVjaG8gIk5vIGRhdGEgcmFjZXMgZm91bmQgZm9yICRmaWxlLiBU ZXN0IHBhc3NlZC4iCisgICAgZWxzZQorICAgICAgICBlY2hvICJEYXRhIHJh Y2VzIGZvdW5kIGZvciAkZmlsZS4gVGVzdCBmYWlsZWQuIgorICAgICAgICBl Y2hvICIkaGVsZ3JpbmRfb3V0cHV0IgorICAgICAgICBleGl0IDEKKyAgICBm aQorCitkb25lCisKKyMgQmVnaW4gZGF0YSByYWNlIHRlc3QgZm9yIHBhcmFs bGVsaXplZCBnZXQtbGluZXMKKyMgVGVzdHMgdGhyZWFkIHNhZmV0eSBmb3Ig dXBkYXRlZCBkd2FyZl9nZXRzcmNsaW5lcy5jCit0ZXN0ZmlsZXMgdGVzdGZp bGUgdGVzdGZpbGUyIHRlc3RmaWxlbm9saW5lcworCitsaW5lc190ZXN0X2Zp bGVzPSgidGVzdGZpbGUiICJ0ZXN0ZmlsZTIiICJ0ZXN0ZmlsZW5vbGluZXMi KQorCitlY2hvIC1lICJcblN0YXJ0aW5nIGRhdGEgcmFjZSB0ZXN0IGZvciBn ZXQtbGluZXMiCisKK2ZvciBmaWxlIGluICIke2xpbmVzX3Rlc3RfZmlsZXNb QF19IjsgZG8KKworICAgIGhlbGdyaW5kX291dHB1dD0kKHZhbGdyaW5kIC0t dG9vbD1oZWxncmluZCAiJHthYnNfYnVpbGRkaXJ9L2V1X3NlYXJjaF9saW5l cyIgJGZpbGUgMj4mMSkKKworICAgIGlmIGdyZXAgLXEgIkVSUk9SIFNVTU1B Ulk6IDAgZXJyb3JzIiA8PDwgIiRoZWxncmluZF9vdXRwdXQiOyB0aGVuCisg ICAgICAgIGVjaG8gIk5vIGRhdGEgcmFjZXMgZm91bmQgZm9yICRmaWxlLiBU ZXN0IHBhc3NlZC4iCisgICAgZWxzZQorICAgICAgICBlY2hvIC1lICIkaGVs Z3JpbmRfb3V0cHV0IgorICAgICAgICBlY2hvICJEYXRhIHJhY2VzIGZvdW5k IGZvciAkZmlsZS4gVGVzdCBmYWlsZWQuIgorICAgICAgICBleGl0IDEKKyAg ICBmaQorCitkb25lCisKKyMgVGhpcyBsaW5lIGlzIHJlYWNoZWQgb25seSBp ZiBubyBkYXRhIHJhY2VzIHdlcmUgZm91bmQgaW4gYW55IHRlc3QKKyMgRXhp dCB3aXRoIHN1Y2Nlc3Mgc3RhdHVzLgorZXhpdCAwClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQotLSAKMi4zOS4zCgo= --00000000000027e77806026c6707--