Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wE5p9-003exI-0c for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Apr 2026 13:35:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wE5p6-00CyIV-0i for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Apr 2026 13:35:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wE5p5-00CyIL-09 for pgsql-hackers@lists.postgresql.org; Sat, 18 Apr 2026 13:34:59 +0000 Received: from mail-lf1-x12c.google.com ([2a00:1450:4864:20::12c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wE5p2-00000001d0A-0L8f for pgsql-hackers@lists.postgresql.org; Sat, 18 Apr 2026 13:34:58 +0000 Received: by mail-lf1-x12c.google.com with SMTP id 2adb3069b0e04-5a2b5ea59a1so1979920e87.1 for ; Sat, 18 Apr 2026 06:34:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776519293; cv=none; d=google.com; s=arc-20240605; b=CbQvBwzoCnPttWDJ8Z840MisIN8kBm+pzum0n4fB4XwQOoW77nUrtiyoko5eOISv3U EBLiVVPCIeryImCuva1JrRjaIi8zqykr/KaIgRMGgT9TlAErENifHnGq3627JMDaNAA7 PVVpa+Qg5FHECkf8H/Voq21ycZit9k63iXM2WUnlg0KEyljk8bT//wxFT6MNMeKvrf+z FEwCNCy+0ys8VBdptxX1CcD2oP9kCnhEUlItCSALqZQXdOxuyI50QS61vxe7O2ttwqoz 6MgtRot3+1afVAaZyF6LfdlWuOBrv4/Ez8jDBi3mRjB/8ExSOjjBB3p5DFHsOsfbJ7TF rB2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Lcp+1RgIMtbn6k4+V0+YFZ+S1wU1BY135ejzn4jvt3I=; fh=tBFpamE+6Amj1My6BTryAXJkuAmHGbhLFsdOr0Cj/S4=; b=DXNOeeJC8yzBXGCa/z/gpsgsdOstCfOEwNiwvLgNtdPHG55KZZoCsqt04rajee4pOJ NVE5cEcKsOlZ8k6uTUdFUUtvpzLlEaxFxH2dvgN92W+oqJOBUuUhYbFj0bdqjCR26n5R hYDUOlGy1RWnunXEFImTzntolnDOyAxAwWUL+E65KwFSUbTVa9In6bsdaOsivBVaP0y5 /aYqdKE4uKGoq6TkMvK2GA0hWuLAnqEP+n2FxZKkB6F7QKa8bFDDc01QUhm4vVQy72io uYrQsVs8gUiCGrwtOPhDLPxEnW/kqpXPgOqHxytd3QGNQuyYWfZuzdsnINJE8oLjV9H+ 1c+Q==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776519293; x=1777124093; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Lcp+1RgIMtbn6k4+V0+YFZ+S1wU1BY135ejzn4jvt3I=; b=Fuzbth/iB7eMHu6oYW5M7xta8/JbeEwp+RcZwWxZ7HjKGDXFUIoFicNRNzo+ms+prr 2xbOm1iLArRCO1RokfFs933xLFFVHaFwbu9P0W0Hd7rS8Lyl74sbb9hQjEi7wlTTzftj JasN1RbHUs65uaEzdsiKB0uGjNumVnHTZ9dKZq8rZmZi9QgoOPlAPoI3ACsD6qtTweUw 2Bf+GlqkoUwWSGBXA6AMu3UBISfWkySYLRb2Zjuu3GvkTQD+fV2Gc4rCLx8pw9VB3Zdp e420rYKdplOFr1ENa/tCiLs4p+gRmEGVriYJ7t88O4Az7pbzIqT+k5aY4bG2Ja9Zuo6v DTWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776519293; x=1777124093; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Lcp+1RgIMtbn6k4+V0+YFZ+S1wU1BY135ejzn4jvt3I=; b=m8NjP91XNpjkjfDIpON7Jfcrde1UwyhkWt/Kn2opTPnV+OGGaRTC0f5mhU8p2JS5Hd KOlr3iCm1FOkPdqnyuhdc3u5vXAURxc4BCTAUuiIhV12h0n018QYVSqWhG+RMG0Netxb yIPjeUPhiouYeg9xBG6g+n9qrr38WTap65XK7tjRgn1Z4JY3d1CY1ZExjOb6NoThr+ad 4WAhwocgqbuyg4eyw6oIhYC3O6w+eOZfUgcyKIFsjDgZ6mfsfBT+A36L4nTdwfhbUUUz meRjy4onXaSTIVSkmSf3lhJvrU98eNAemXuel9iAthQ4eV7thk3FycIt8538fDRUIg7C 3Wwg== X-Gm-Message-State: AOJu0Yxv4KN/q2ckd7URlGXGWlib6Q7TkmUhOe1oY6CWBX2SIhr+a61q pSMok11LnqRfeWa8fk1NlGkG2xU6Q46yIhgh8yGKKAoXSmd98U3dTufumeracQ0lUV811rpCmTj lhA6Qs0gmQppONU/P3+HTPSXiRG8xm+c= X-Gm-Gg: AeBDiesjEYuMeXEfqNB9LyqhZ+tBlkKea7cLZXnf5W8wjWR/1w9J8EvSFavFRmVw6w3 SUUPZGMLA0xHX+XEemhCa8pb/7yRBC8/csaYqGcVoywFS6STym/6s4RgYmoX1Fk9atFdYQuZe94 Yf2gYXFA1jxacBvyD+ZFYVlZPorADjnZ7BJFqgXDE8xE3bWl+Hy1OiMMROuU6PJB/XDwUmT6Goq INQ3SotomUpoU7M3ZPrS+HYR5X9VgPHKdXkk0tsrAbWlABaRs8ax3wNG+CfQpYr8NjuD2JWElRb XySCXSwz4pdVPTDssjGDkAe7y3SNNGx+CJ8gfTATAZuk170YFDwdct1JjvR6LwFLj6qMGxjxCsj hvY3gBr/GtURELgPm0APgJ56z57GjTva89pWsBw== X-Received: by 2002:a05:6512:3d27:b0:5a2:b219:3eb3 with SMTP id 2adb3069b0e04-5a417308f0bmr2369895e87.41.1776519293118; Sat, 18 Apr 2026 06:34:53 -0700 (PDT) MIME-Version: 1.0 References: <202603201104.4wwpevsp4w57@alvherre.pgsql> In-Reply-To: From: Mihail Nikalayeu Date: Sat, 18 Apr 2026 15:33:00 +0200 X-Gm-Features: AQROBzA-r_P1izcP7ynPK6OEcxHizbSZOZJUV8rAv4avXHNRjc-K-jSpxDXPgi0 Message-ID: Subject: Re: Resetting snapshots during the first phase of [CREATE |RE]INDEX CONCURRENTLY To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: PostgreSQL Hackers , Matthias van de Meent , Antonin Houska , Sergey Sargsyan , Hannu Krosing Content-Type: multipart/mixed; boundary="000000000000675090064fbc2171" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000675090064fbc2171 Content-Type: text/plain; charset="UTF-8" Some small fixes around. --000000000000675090064fbc2171 Content-Type: application/octet-stream; name="v6-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Disposition: attachment; filename="v6-0002-Reset-snapshots-periodically-in-non-unique-non-pa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo4bhjk01 RnJvbSBjNmY0Yzk2ZWE3Y2ZhODIxN2EwMjFhODQ5NTJiODBkMmRkYmRiY2ZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IEZyaSwgMyBBcHIgMjAyNiAxODoyMzowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjYgMi80 XSBSZXNldCBzbmFwc2hvdHMgcGVyaW9kaWNhbGx5IGluIG5vbi11bmlxdWUKIG5vbi1wYXJhbGxl bCBjb25jdXJyZW50IGluZGV4IGJ1aWxkcyBMb25nLWxpdmluZyBzbmFwc2hvdHMgdXNlZCBieSBD UkVBVEUKIElOREVYIENPTkNVUlJFTlRMWSBhbmQgUkVJTkRFWCBDT05DVVJSRU5UTFkgY2FuIGhv bGQgYmFjayB0aGUgZ2xvYmFsIHhtaW4KIGhvcml6b24uIENvbW1pdCBkOWQwNzYyIGF0dGVtcHRl ZCB0byBhbGxvdyBWQUNVVU0gdG8gaWdub3JlIHN1Y2ggc25hcHNob3RzIHRvCiBtaXRpZ2F0ZSB0 aGlzIHByb2JsZW0uIEhvd2V2ZXIsIHRoaXMgd2FzIHJldmVydGVkIGluIGNvbW1pdCBlMjhiYjg4 IGJlY2F1c2UKIGl0IGNvdWxkIGNhdXNlIGluZGV4ZXMgdG8gbWlzcyBoZWFwIHR1cGxlcyB0aGF0 IHdlcmUgSE9ULXVwZGF0ZWQgYW5kCiBIT1QtcHJ1bmVkIGR1cmluZyB0aGUgaW5kZXggY3JlYXRp b24sIGxlYWRpbmcgdG8gaW5kZXggY29ycnVwdGlvbi4KClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBh biBhbHRlcm5hdGl2ZSBieSBwZXJpb2RpY2FsbHkgcmVzZXR0aW5nIHRoZSBzbmFwc2hvdCB1c2Vk IGR1cmluZyB0aGUgZmlyc3QgcGhhc2UuIEJ5IHJlc2V0dGluZyB0aGUgc25hcHNob3QgZXZlcnkg TiBwYWdlcyBkdXJpbmcgdGhlIGhlYXAgc2NhbiwgaXQgYWxsb3dzIHRoZSB4bWluIGhvcml6b24g dG8gYWR2YW5jZS4KCkN1cnJlbnRseSwgdGhpcyB0ZWNobmlxdWUgaXMgYXBwbGllZCB0bzoKCi0g b25seSBkdXJpbmcgdGhlIGZpcnN0IHNjYW4gb2YgdGhlIGhlYXA6IFRoZSBzZWNvbmQgc2NhbiBk dXJpbmcgaW5kZXggdmFsaWRhdGlvbiBzdGlsbCB1c2VzIGEgc2luZ2xlIHNuYXBzaG90IHRvIGVu c3VyZSBpbmRleCBjb3JyZWN0bmVzcwotIG5vbi1wYXJhbGxlbCBpbmRleCBidWlsZHM6IFBhcmFs bGVsIGluZGV4IGJ1aWxkcyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYW5kIHdpbGwgYmUgYWRkcmVz c2VkIGluIGZvbGxvd2luZyBjb21taXRzCi0gbm9uLXVuaXF1ZSBpbmRleGVzOiBVbmlxdWUgaW5k ZXggYnVpbGRzIHN0aWxsIHJlcXVpcmUgYSBjb25zaXN0ZW50IHNuYXBzaG90IHRvIGVuZm9yY2Ug dW5pcXVlbmVzcyBjb25zdHJhaW50cywgd2lsbCBiZSBhZGRyZXNzZWQgaW4gZm9sbG93aW5nIGNv bW1pdHMKCkEgbmV3IHNjYW4gb3B0aW9uIFNPX1JFU0VUX1NOQVBTSE9UIGlzIGludHJvZHVjZWQu IFdoZW4gc2V0LCBpdCBjYXVzZXMgdGhlIHNuYXBzaG90IHRvIGJlIHJlc2V0ICJiZXR3ZWVuIiBl dmVyeSBTT19SRVNFVF9TTkFQU0hPVF9FQUNIX05fUEFHRSBwYWdlcyBkdXJpbmcgdGhlIHNjYW4u IFRoZSBoZWFwIHNjYW4gY29kZSBpcyBhZGp1c3RlZCB0byBzdXBwb3J0IHRoaXMgb3B0aW9uLCBh bmQgdGhlIGluZGV4IGJ1aWxkIGNvZGUgaXMgbW9kaWZpZWQgdG8gdXNlIGl0IGZvciBhcHBsaWNh YmxlIGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIHRoYXQgYXJlIG5vdCBvbiBzeXN0ZW0gY2F0YWxv Z3MgYW5kIG5vdCB1c2luZyBwYXJhbGxlbCB3b3JrZXJzLgotLS0KIGNvbnRyaWIvYW1jaGVjay92 ZXJpZnlfbmJ0cmVlLmMgICAgICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi9wZ3N0YXR0dXBs ZS9wZ3N0YXR0dXBsZS5jICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMgICAgICAgICAgICAgICAgfCAgMjEgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgIDIxICsrKysKIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3RidWlsZC5jICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoLmMgICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgIDUwICsrKysrKystCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgNzQgKysrKysrKysrLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgICAgIHwgIDI3ICsrKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAgMzAgKysrKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAgICB8ICAxNCArLS0KIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAxMCArKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAgIHwgIDEwICsrCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAgICAgICAgfCAgMzEgKysrKy0KIHNyYy9pbmNs dWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAgICB8ICAxNyArKysKIHNyYy9pbmNs dWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9t b2R1bGVzL2luamVjdGlvbl9wb2ludHMvTWFrZWZpbGUgICAgfCAgIDIgKy0KIC4uLi9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCAgICAgICAgICB8IDExOCArKysrKysrKysrKysrKysr KysKIHNyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZCB8ICAgMSAr CiAuLi4vc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsICAgICAgICAgICAgICAgfCAxMDEgKysr KysrKysrKysrKysrCiAyMiBmaWxlcyBjaGFuZ2VkLCA1MDkgaW5zZXJ0aW9ucygrKSwgMzkgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25f cG9pbnRzL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNo b3RzLnNxbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9j b250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IGI3NGFiNWY3YTA1Li40MDg3NDE2 NzYzMSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9j b250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC01NTcsNyArNTU3LDggQEAgYnRfY2hl Y2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBr ZXlzcGFjZSwKIAkJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkJIE5V TEwsCS8qIHNjYW4ga2V5ICovCiAJCQkJCQkJCQkgdHJ1ZSwJLyogYnVmZmVyIGFjY2VzcyBzdHJh dGVneSBPSyAqLwotCQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJ CSB0cnVlLCAvKiBzeW5jc2NhbiBPSz8gKi8KKwkJCQkJCQkJCSBmYWxzZSk7CiAKIAkJLyoKIAkJ ICogU2NhbiB3aWxsIGJlaGF2ZSBhcyB0aGUgZmlyc3Qgc2NhbiBvZiBhIENSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUu YyBiL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUuYwppbmRleCA2YTdmOGNiNGE3Yy4u YTBlN2VkMmUxMzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0dHVwbGUu YworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdHR1cGxlLmMKQEAgLTMzNSw3ICszMzUs NyBAQCBwZ3N0YXRfaGVhcChSZWxhdGlvbiByZWwsIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQog CQkJCSBlcnJtc2coIm9ubHkgaGVhcCBBTSBpcyBzdXBwb3J0ZWQiKSkpOwogCiAJLyogRGlzYWJs ZSBzeW5jc2NhbiBiZWNhdXNlIHdlIGFzc3VtZSB3ZSBzY2FuIGZyb20gYmxvY2sgemVybyB1cHdh cmRzICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWwsIFNuYXBzaG90QW55LCAw LCBOVUxMLCB0cnVlLCBmYWxzZSk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChyZWws IFNuYXBzaG90QW55LCAwLCBOVUxMLCB0cnVlLCBmYWxzZSwgZmFsc2UpOwogCWhzY2FuID0gKEhl YXBTY2FuRGVzYykgc2NhbjsKIAogCUluaXREaXJ0eVNuYXBzaG90KFNuYXBzaG90RGlydHkpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2JyaW4vYnJpbi5jCmluZGV4IGJkYjMwNzUyZTA5Li43ZTA1OGYwZDdhZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9icmluL2JyaW4uYwpAQCAtMTIyMSwxMSArMTIyMSwxMyBAQCBicmluYnVpbGQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlzdGF0ZS0+ YnNfc29ydHN0YXRlID0KIAkJCXR1cGxlc29ydF9iZWdpbl9pbmRleF9icmluKG1haW50ZW5hbmNl X3dvcmtfbWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJICAgVFVQTEVTT1JUX05PTkUpOwotCisJ CUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKIAkJLyogc2NhbiB0aGUgcmVsYXRpb24gYW5k IG1lcmdlIHBlci13b3JrZXIgcmVzdWx0cyAqLwogCQlyZWx0dXBsZXMgPSBfYnJpbl9wYXJhbGxl bF9tZXJnZShzdGF0ZSk7CiAKIAkJX2JyaW5fZW5kX3BhcmFsbGVsKHN0YXRlLT5ic19sZWFkZXIs IHN0YXRlKTsKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCQlBc3NlcnQoIUluZGV4 QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQo TXlQcm9jLT54bWluKSk7CiAJfQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWls ZCAqLwogCXsKQEAgLTEyMzgsNiArMTI0MCw3IEBAIGJyaW5idWlsZChSZWxhdGlvbiBoZWFwLCBS ZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJCXJlbHR1cGxlcyA9IHRhYmxl X2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgZmFsc2UsIHRydWUsCiAJ CQkJCQkJCQkJICAgYnJpbmJ1aWxkQ2FsbGJhY2ssIHN0YXRlLCBOVUxMKTsKIAorCQlJbnZhbGlk YXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAJCS8qCiAJCSAqIHByb2Nlc3MgdGhlIGZpbmFsIGJhdGNo CiAJCSAqCkBAIC0xMjU3LDYgKzEyNjAsOCBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVs YXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQlicmluX2ZpbGxfZW1wdHlfcmFu Z2VzKHN0YXRlLAogCQkJCQkJCSAgIHN0YXRlLT5ic19jdXJyUmFuZ2VTdGFydCwKIAkJCQkJCQkg ICBzdGF0ZS0+YnNfbWF4UmFuZ2VTdGFydCk7CisJCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3Qo KTsKKwkJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCX0KIAogCS8qIHJlbGVhc2UgcmVz b3VyY2VzICovCkBAIC0yMzkwLDYgKzIzOTUsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmlu QnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJ V2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVzYWdlOwogCWJvb2wJ CWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBz aG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FCTEVfTEVBREVSX1BB UlRJQ0lQQVRJT04KQEAgLTI0MTUsOSArMjQyMSwxNiBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChC cmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiAJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkK Kwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKIAkJc25hcHNob3QgPSBTbmFwc2hv dEFueTsKKwkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJfQogCWVsc2UKKwl7 CiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAK IAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JSSU5fU0hB UkVEIHdvcmtzcGFjZS4KQEAgLTI0NjAsNiArMjQ3Myw4IEBAIF9icmluX2JlZ2luX3BhcmFsbGVs KEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRl eCwKIAkvKiBJZiBubyBEU00gc2VnbWVudCB3YXMgYXZhaWxhYmxlLCBiYWNrIG91dCAoZG8gc2Vy aWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5zZWcgPT0gTlVMTCkKIAl7CisJCWlmIChuZWVkX3Bv cF9hY3RpdmVfc25hcHNob3QpCisJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQlpZiAoSXNNVkND U25hcHNob3Qoc25hcHNob3QpKQogCQkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJ RGVzdHJveVBhcmFsbGVsQ29udGV4dChwY3h0KTsKQEAgLTI1MzksNiArMjU1NCw4IEBAIF9icmlu X2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFw LCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5IGxh dW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29ya2Vy c19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJ CVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9icmluX2VuZF9wYXJhbGxlbChicmlubGVhZGVyLCBO VUxMKTsKIAkJcmV0dXJuOwogCX0KQEAgLTI1NTUsNiArMjU3Miw4IEBAIF9icmluX2JlZ2luX3Bh cmFsbGVsKEJyaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5v dCBoYW5nIGZvcmV2ZXIuCiAJICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBj eHQpOworCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCA5ZDgzYTQ5NTc3 NS4uNGRmMjE2YTI2OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtNjgzLDYg KzY4Myw5IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleElu Zm8gKmluZGV4SW5mbykKIAlidWlsZHN0YXRlLmFjY3VtLmdpbnN0YXRlID0gJmJ1aWxkc3RhdGUu Z2luc3RhdGU7CiAJZ2luSW5pdEJBKCZidWlsZHN0YXRlLmFjY3VtKTsKIAorCUludmFsaWRhdGVD YXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5k ZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisKIAkvKiBS ZXBvcnQgdGFibGUgc2NhbiBwaGFzZSBzdGFydGVkICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfU1VCUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19H SU5fUEhBU0VfSU5ERVhCVUlMRF9UQUJMRVNDQU4pOwpAQCAtNzQ1LDExICs3NDgsMTMgQEAgZ2lu YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2dpbihoZWFwLCBpbmRleCwKIAkJCQkJCQkJCSAg bWFpbnRlbmFuY2Vfd29ya19tZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkgIFRVUExFU09SVF9O T05FKTsKKwkJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwogCiAJCS8qIHNjYW4gdGhlIHJl bGF0aW9uIGluIHBhcmFsbGVsIGFuZCBtZXJnZSBwZXItd29ya2VyIHJlc3VsdHMgKi8KIAkJcmVs dHVwbGVzID0gX2dpbl9wYXJhbGxlbF9tZXJnZShzdGF0ZSk7CiAKIAkJX2dpbl9lbmRfcGFyYWxs ZWwoc3RhdGUtPmJzX2xlYWRlciwgc3RhdGUpOworCQlBc3NlcnQoIUluZGV4QnVpbGRSZXNldHNT bmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWlu KSk7CiAJfQogCWVsc2UJCQkJCQkvKiBubyBwYXJhbGxlbCBpbmRleCBidWlsZCAqLwogCXsKQEAg LTc1OSw2ICs3NjQsNyBAQCBnaW5idWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwg SW5kZXhJbmZvICppbmRleEluZm8pCiAJCSAqLwogCQlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9i dWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleEluZm8sIGZhbHNlLCB0cnVlLAogCQkJCQkJCQkJ CSAgIGdpbkJ1aWxkQ2FsbGJhY2ssICZidWlsZHN0YXRlLCBOVUxMKTsKKwkJSW52YWxpZGF0ZUNh dGFsb2dTbmFwc2hvdCgpOwogCiAJCS8qIGR1bXAgcmVtYWluaW5nIGVudHJpZXMgdG8gdGhlIGlu ZGV4ICovCiAJCW9sZEN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhidWlsZHN0YXRlLnRtcEN0 eCk7CkBAIC03NzIsNiArNzc4LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCQkJCQkJICAgbGlzdCwgbmxpc3QsICZidWls ZHN0YXRlLmJ1aWxkU3RhdHMpOwogCQl9CiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDdHgp OworCQlBc3NlcnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJh bnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJfQogCiAJTWVtb3J5Q29udGV4dERl bGV0ZShidWlsZHN0YXRlLmZ1bmNDdHgpOwpAQCAtOTQ4LDYgKzk1NSw3IEBAIF9naW5fYmVnaW5f cGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJV2FsVXNhZ2UgICAqd2FsdXNhZ2U7CiAJQnVmZmVyVXNhZ2UgKmJ1ZmZlcnVz YWdlOwogCWJvb2wJCWxlYWRlcnBhcnRpY2lwYXRlcyA9IHRydWU7CisJYm9vbAkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gdHJ1ZTsKIAlpbnQJCQlxdWVyeWxlbjsKIAogI2lmZGVmIERJU0FC TEVfTEVBREVSX1BBUlRJQ0lQQVRJT04KQEAgLTk3Miw5ICs5ODAsMTYgQEAgX2dpbl9iZWdpbl9w YXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwKIAkgKiBsaXZlIGFjY29yZGluZyB0byB0aGF0LgogCSAqLwogCWlmICghaXNjb25j dXJyZW50KQorCXsKKwkJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOwogCQlzbmFwc2hvdCA9 IFNuYXBzaG90QW55OworCQluZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSBmYWxzZTsKKwl9CiAJ ZWxzZQorCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkp OworCX0KIAogCS8qCiAJICogRXN0aW1hdGUgc2l6ZSBmb3Igb3VyIG93biBQQVJBTExFTF9LRVlf R0lOX1NIQVJFRCB3b3Jrc3BhY2UuCkBAIC0xMDE3LDYgKzEwMzIsOCBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0IChk byBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYgKG5l ZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlmIChJ c01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3Qp OwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTA5MSw2ICsxMTA4LDggQEAg X2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBo ZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkvKiBJZiBubyB3b3JrZXJzIHdlcmUgc3VjY2Vzc2Z1bGx5 IGxhdW5jaGVkLCBiYWNrIG91dCAoZG8gc2VyaWFsIGJ1aWxkKSAqLwogCWlmIChwY3h0LT5ud29y a2Vyc19sYXVuY2hlZCA9PSAwKQogCXsKKwkJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkK KwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCV9naW5fZW5kX3BhcmFsbGVsKGdpbmxlYWRlciwg TlVMTCk7CiAJCXJldHVybjsKIAl9CkBAIC0xMTA3LDYgKzExMjYsOCBAQCBfZ2luX2JlZ2luX3Bh cmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LAogCSAqIHN1cmUgdGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90 IGhhbmcgZm9yZXZlci4KIAkgKi8KIAlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4 dCk7CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3Qo KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RidWls ZC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGJ1aWxkLmMKaW5kZXggN2Y1N2M3ODdm NGMuLjg2YWYxZTExMzE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0 YnVpbGQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0YnVpbGQuYwpAQCAtMzgs MTEgKzM4LDEzIEBACiAjaW5jbHVkZSAiYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUg ImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKKyNpbmNs dWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi bm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWxrX3dyaXRlLmgi CisjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtMjU5LDYgKzI2MSw3IEBAIGdpc3RidWlsZChS ZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAJYnVp bGRzdGF0ZS5pbmR0dXBsZXMgPSAwOwogCWJ1aWxkc3RhdGUuaW5kdHVwbGVzU2l6ZSA9IDA7CiAK KwlBc3NlcnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNh Y3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAJaWYgKGJ1aWxkc3RhdGUuYnVpbGRNb2Rl ID09IEdJU1RfU09SVEVEX0JVSUxEKQogCXsKIAkJLyoKQEAgLTM1MCw2ICszNTMsOCBAQCBnaXN0 YnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZv KQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1 cGxlcyA9IChkb3VibGUpIGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUludmFsaWRhdGVDYXRhbG9n U25hcHNob3QoKTsKKwlBc3NlcnQoIUluZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZv KSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAlyZXR1cm4gcmVz dWx0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCmluZGV4IDhkOGNkMzBkYzM4Li40NGEzNzRjMGQ1 NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2guYwpAQCAtMjQsMTIgKzI0LDE0IEBACiAjaW5jbHVkZSAi YWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNpbmNs dWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL2V4ZWNub2Rlcy5oIgogI2lu Y2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogI2lu Y2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9pbmRleF9zZWxmdW5j cy5oIgpAQCAtMjEwLDYgKzIxMiw4IEBAIGhhc2hidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlv biBpbmRleCwgSW5kZXhJbmZvICppbmRleEluZm8pCiAKIAlyZXN1bHQtPmhlYXBfdHVwbGVzID0g cmVsdHVwbGVzOwogCXJlc3VsdC0+aW5kZXhfdHVwbGVzID0gYnVpbGRzdGF0ZS5pbmR0dXBsZXM7 CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0 c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnht aW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4 IGFiZmQ4ZTg5NzBhLi44MzM0NDMzNGU3NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAg LTU2LDYgKzU2LDkgQEAKICNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL3N5c2NhY2hlLmgiCiAKKy8qIEdVQ3MgKi8KK2ludAkJCWNvbmN1cnJlbnRfaW5kZXhfcmVz ZXRfc25hcHNob3RfZXZlcnlfbl9wYWdlcyA9IDQwOTY7CisKIAogc3RhdGljIEhlYXBUdXBsZSBo ZWFwX3ByZXBhcmVfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLAogCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkLCBDb21tYW5kSWQgY2lkLCB1aW50MzIgb3B0aW9ucyk7 CkBAIC03MDAsNiArNzAzLDM2IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNj IHNzY2FuKQogCUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwogfQogCisv KgorICogUmVzZXQgdGhlIGFjdGl2ZSBzbmFwc2hvdCBkdXJpbmcgYSBzY2FuLgorICogVGhpcyBl bnN1cmVzIHRoZSB4bWluIGhvcml6b24gY2FuIGFkdmFuY2Ugd2hpbGUgbWFpbnRhaW5pbmcgc2Fm ZSB0dXBsZSB2aXNpYmlsaXR5LgorICogTm90ZTogTm8gb3RoZXIgc25hcHNob3Qgc2hvdWxkIGJl IGFjdGl2ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAor aGVhcF9yZXNldF9zY2FuX3NuYXBzaG90KFRhYmxlU2NhbkRlc2Mgc3NjYW4pCit7CisJLyogTWFr ZSBzdXJlIG5vIG90aGVyIHNuYXBzaG90IHdhcyBzZXQgYXMgYWN0aXZlLiAqLworCUFzc2VydChH ZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7CisJLyogQW5kIG1ha2Ug c3VyZSBhY3RpdmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICovCisJQXNzZXJ0KEdldEFj dGl2ZVNuYXBzaG90KCktPnJlZ2RfY291bnQgPT0gMCk7CisJUG9wQWN0aXZlU25hcHNob3QoKTsK KworCXNzY2FuLT5yc19zbmFwc2hvdCA9IEludmFsaWRTbmFwc2hvdDsgLyoganVzdCB0byBiZSB0 aWR5ICovCisJQXNzZXJ0KCFIYXZlUmVnaXN0ZXJlZE9yQWN0aXZlU25hcHNob3QoKSk7CisJSW52 YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCisJLyogVGhlIGdvYWwgb2Ygc25hcHNob3QgcmVz ZXQgaXMgdG8gYWxsb3cgaG9yaXpvbiB0byBhZHZhbmNlLiAqLworCUFzc2VydCghVHJhbnNhY3Rp b25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisjaWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwkv KiBJbiBzb21lIGNhc2VzIGl0IGlzIHN0aWxsIG5vdCBwb3NzaWJsZSBkdWUgeGlkIGFzc2lnbi4g Ki8KKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSkKKwkJSU5KRUNUSU9O X1BPSU5UKCJoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlIiwgTlVMTCk7CisjZW5k aWYKKworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzc2Nhbi0+ cnNfc25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOworfQorCiAvKgogICogaGVhcF9mZXRj aF9uZXh0X2J1ZmZlciAtIHJlYWQgYW5kIHBpbiB0aGUgbmV4dCBibG9jayBmcm9tIE1BSU5fRk9S S05VTS4KICAqCkBAIC03NDEsNyArNzc0LDEzIEBAIGhlYXBfZmV0Y2hfbmV4dF9idWZmZXIoSGVh cFNjYW5EZXNjIHNjYW4sIFNjYW5EaXJlY3Rpb24gZGlyKQogCiAJc2Nhbi0+cnNfY2J1ZiA9IHJl YWRfc3RyZWFtX25leHRfYnVmZmVyKHNjYW4tPnJzX3JlYWRfc3RyZWFtLCBOVUxMKTsKIAlpZiAo QnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKKwl7CiAJCXNjYW4tPnJzX2NibG9jayA9IEJ1 ZmZlckdldEJsb2NrTnVtYmVyKHNjYW4tPnJzX2NidWYpOworCQlpZiAoc2Nhbi0+cnNfYmFzZS5y c19mbGFncyAmIFNPX1JFU0VUX1NOQVBTSE9UICYmCisJCQljb25jdXJyZW50X2luZGV4X3Jlc2V0 X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgPiAwICYmCisJCQlzY2FuLT5yc19jYmxvY2sgJSBjb25j dXJyZW50X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgPT0gMCkKKwkJCWhlYXBf cmVzZXRfc2Nhbl9zbmFwc2hvdCgoVGFibGVTY2FuRGVzYykgc2Nhbik7CisJfQogfQogCiAvKgpA QCAtMTQyMSw3ICsxNDYwLDE2IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQog CiAJaWYgKHNjYW4tPnJzX3BhcmFsbGVsd29ya2VyZGF0YSAhPSBOVUxMKQogCQlwZnJlZShzY2Fu LT5yc19wYXJhbGxlbHdvcmtlcmRhdGEpOwotCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor CWlmIChzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fUkVTRVRfU05BUFNIT1QpCisJeworCQlB c3NlcnQoIShzY2FuLT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkpOworCQkv KiBNYWtlIHN1cmUgbm8gb3RoZXIgc25hcHNob3Qgd2FzIHNldCBhcyBhY3RpdmUuICovCisJCUFz c2VydChHZXRBY3RpdmVTbmFwc2hvdCgpID09IHNzY2FuLT5yc19zbmFwc2hvdCk7CisJCS8qIEFu ZCBtYWtlIHN1cmUgc25hcHNob3QgaXMgbm90IHJlZ2lzdGVyZWQuICovCisJCUFzc2VydChHZXRB Y3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCX0KKyNlbmRpZgogCWlmIChzY2Fu LT5yc19iYXNlLnJzX2ZsYWdzICYgU09fVEVNUF9TTkFQU0hPVCkKIAkJVW5yZWdpc3RlclNuYXBz aG90KHNjYW4tPnJzX2Jhc2UucnNfc25hcHNob3QpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYwppbmRleCAyMGQzYjQ2ZTA2Mi4uZmFmM2UwNGM0NDkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMTE2Myw4ICsxMTYzLDE3IEBA IGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlU dXBsZVRhYmxlU2xvdCAqc2xvdDsKIAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlFeHByQ29udGV4dCAq ZWNvbnRleHQ7Ci0JU25hcHNob3QJc25hcHNob3Q7CisJLyoKKwkgKiBJbiBpc29sYXRpb24gbW9k ZXMgd2hlcmUgSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpIGlzIHRydWUsIHRoZQorCSAqIHJl Z2lzdGVyZWQgc2NhbiBzbmFwc2hvdCBjYW4gZGlmZmVyIGZyb20gdGhlIGFjdGl2ZSBzbmFwc2hv dCBjb3B5CisJICogcHVzaGVkIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24sIHNvIHJlbWVtYmVy IHRoZSByZWdpc3RlcmVkIG9uZQorCSAqIHNlcGFyYXRlbHkgZm9yIGxhdGVyIFVucmVnaXN0ZXJT bmFwc2hvdCgpLgorCSAqLworCVNuYXBzaG90CXNuYXBzaG90LAorCQkJCXJlZ2lzdGVyZWRfc25h cHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CiAJYm9vbAkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90 ID0gZmFsc2U7CisJYm9vbAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CisJYm9v bAkJcmVzZXRfc25hcHNob3RzID0gZmFsc2U7CiAJVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluOwog CUJsb2NrTnVtYmVyIHByZXZpb3VzX2Jsa25vID0gSW52YWxpZEJsb2NrTnVtYmVyOwogCUJsb2Nr TnVtYmVyIHJvb3RfYmxrbm8gPSBJbnZhbGlkQmxvY2tOdW1iZXI7CkBAIC0xMTk5LDkgKzEyMDgs NiBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24s CiAJLyogQXJyYW5nZSBmb3IgZWNvbnRleHQncyBzY2FuIHR1cGxlIHRvIGJlIHRoZSB0dXBsZSB1 bmRlciB0ZXN0ICovCiAJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gc2xvdDsKIAotCS8qIFNl dCB1cCBleGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLwotCXByZWRpY2F0 ZSA9IEV4ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKLQog CS8qCiAJICogUHJlcGFyZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9y bWFsIGluZGV4IGJ1aWxkLCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3Qg cmV0cmlldmUgYWxsIHR1cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCkBAIC0xMjExLDYgKzEyMTcs MTYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorCS8qCisJICog Rm9yIHVuaXF1ZSBpbmRleGVzIHdlIG5lZWQgYSBjb25zaXN0ZW50IHNuYXBzaG90IGZvciB0aGUg d2hvbGUgc2Nhbi4KKwkgKiBSZXNldHRpbmcgc25hcHNob3RzIGFsc28gZG9lc24ndCB3b3JrIGlu IHhhY3Qtc25hcHNob3QgaXNvbGF0aW9uIG1vZGVzLAorCSAqIGJlY2F1c2UgdGhvc2Uga2VlcCBh IHJlZ2lzdGVyZWQgdHJhbnNhY3Rpb24gc25hcHNob3QgZm9yIHRoZSB3aG9sZSB4YWN0LgorCSAq IEluIHRoZSBjYXNlIG9mIHBhcmFsbGVsIHNjYW4sIHNvbWUgYWRkaXRpb25hbCBpbmZyYXN0cnVj dHVyZSBpcyByZXF1aXJlZAorCSAqIHRvIHBlcmZvcm0gYSBzY2FuIHdpdGggU09fUkVTRVRfU05B UFNIT1Qgd2hpY2ggaXMgbm90IHlldCByZWFkeS4KKwkgKi8KKwlyZXNldF9zbmFwc2hvdHMgPSBJ bmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgJiYKKwkJCQkJICAhaXNfc3lzdGVt X2NhdGFsb2c7IC8qIGp1c3QgZm9yIHRoZSBjYXNlICovCisKIAkvKiBva2F5IHRvIGlnbm9yZSBs YXp5IFZBQ1VVTXMgaGVyZSAqLwogCWlmICghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpICYm ICFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpCiAJCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKGhlYXBSZWxhdGlvbik7CkBAIC0xMjE5LDI0ICsxMjM1LDQy IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwK IAl7CiAJCS8qCiAJCSAqIFNlcmlhbCBpbmRleCBidWlsZC4KLQkJICoKLQkJICogTXVzdCBiZWdp biBvdXIgb3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCi0J CSAqIHJlZ2lzdGVyIGEgc25hcHNob3Qgd2hvc2UgbGlmZXRpbWUgaXMgdW5kZXIgb3VyIGRpcmVj dCBjb250cm9sLgogCQkgKi8KIAkJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChPbGRlc3RYbWlu KSkKIAkJewotCQkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25h cHNob3QoKSk7Ci0JCQluZWVkX3VucmVnaXN0ZXJfc25hcHNob3QgPSB0cnVlOworCQkJc25hcHNo b3QgPSBHZXRUcmFuc2FjdGlvblNuYXBzaG90KCk7CisJCQkvKgorCQkJICogTXVzdCBiZWdpbiBv dXIgb3duIGhlYXAgc2NhbiBpbiB0aGlzIGNhc2UuICBXZSBtYXkgYWxzbyBuZWVkIHRvCisJCQkg KiByZWdpc3RlciBhIHNuYXBzaG90IHdob3NlIGxpZmV0aW1lIGlzIHVuZGVyIG91ciBkaXJlY3Qg Y29udHJvbC4KKwkJCSAqIEluIGNhc2Ugb2YgcmVzZXR0aW5nIG9mIGEgc25hcHNob3QgZHVyaW5n IHRoZSBzY2FuLCByZWdpc3RyYXRpb24gaXMKKwkJCSAqIG5vdCBhbGxvd2VkIGJlY2F1c2Ugc25h cHNob3QgaXMgZ29pbmcgdG8gYmUgY2hhbmdlZCBldmVyeSBzbworCQkJICogb2Z0ZW4uCisJCQkg Ki8KKwkJCWlmICghcmVzZXRfc25hcHNob3RzKQorCQkJeworCQkJCS8qIFN0b3JlIGFjdGl2ZSBz bmFwc2hvdCBiZWNhdXNlIFB1c2hBY3RpdmVTbmFwc2hvdCgpIG1heSBjb3B5ICovCisJCQkJc25h cHNob3QgPSByZWdpc3RlcmVkX3NuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7 CisJCQkJbmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90ID0gdHJ1ZTsKKwkJCX0KKwkJCUFzc2VydCgh QWN0aXZlU25hcHNob3RTZXQoKSk7CisJCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3QpOwor CQkJLyogdGFibGVfYmVnaW5zY2FuX3N0cmF0KCkgbmVlZHMgdGhlIGV4YWN0IGFjdGl2ZSBzbmFw c2hvdCBwb2ludGVyICovCisJCQlzbmFwc2hvdCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CisJCQlu ZWVkX3BvcF9hY3RpdmVfc25hcHNob3QgPSB0cnVlOwogCQl9CiAJCWVsc2UKKwkJeworCQkJQXNz ZXJ0KCFpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQpOwogCQkJc25hcHNob3QgPSBTbmFwc2hvdEFu eTsKKwkJfQogCiAJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoaGVhcFJlbGF0aW9uLAkv KiByZWxhdGlvbiAqLwogCQkJCQkJCQkJIHNuYXBzaG90LAkvKiBzbmFwc2hvdCAqLwogCQkJCQkJ CQkJIDAsIC8qIG51bWJlciBvZiBrZXlzICovCiAJCQkJCQkJCQkgTlVMTCwJLyogc2NhbiBrZXkg Ki8KIAkJCQkJCQkJCSB0cnVlLAkvKiBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IE9LICovCi0JCQkJ CQkJCQkgYWxsb3dfc3luYyk7CS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIGFsbG93X3N5 bmMsCS8qIHN5bmNzY2FuIE9LPyAqLworCQkJCQkJCQkJIHJlc2V0X3NuYXBzaG90cyAvKiByZXNl dCBzbmFwc2hvdHM/ICovKTsKIAl9CiAJZWxzZQogCXsKQEAgLTEyNTAsNiArMTI4NCwxMiBAQCBo ZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCUFz c2VydCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKIAkJQXNzZXJ0KGFsbG93X3N5bmMp OwogCQlzbmFwc2hvdCA9IHNjYW4tPnJzX3NuYXBzaG90OworCQlpZiAoSXNNVkNDU25hcHNob3Qo c25hcHNob3QpKQorCQl7CisJCQkvKiBEb24ndCBleHBvc2UgU25hcHNob3RBbnkgdG8gU1FMIHJ1 biBieSBwcmVkaWNhdGVzL2V4cHJlc3Npb25zLiAqLworCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNu YXBzaG90KTsKKwkJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJCX0KIAl9CiAK IAloc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNjYW47CkBAIC0xMjY0LDYgKzEzMDQsMTMgQEAgaGVh cGFtX2luZGV4X2J1aWxkX3JhbmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCUFzc2Vy dChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSA/IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFht aW4pIDoKIAkJICAgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE9sZGVzdFhtaW4pKTsKIAlBc3NlcnQo c25hcHNob3QgPT0gU25hcHNob3RBbnkgfHwgIWFueXZpc2libGUpOworCUFzc2VydChzbmFwc2hv dCA9PSBTbmFwc2hvdEFueSB8fCBBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNldCB1cCBl eGVjdXRpb24gc3RhdGUgZm9yIHByZWRpY2F0ZSwgaWYgYW55LiAqLworCXByZWRpY2F0ZSA9IEV4 ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKwkvKiBDbGVh ciByZWZlcmVuY2UgdG8gc25hcHNob3Qgc2luY2UgaXQgbWF5IGJlIGNoYW5nZWQgYnkgdGhlIHNj YW4gaXRzZWxmLiAqLworCWlmIChyZXNldF9zbmFwc2hvdHMpCisJCXNuYXBzaG90ID0gSW52YWxp ZFNuYXBzaG90OwogCiAJLyogUHVibGlzaCBudW1iZXIgb2YgYmxvY2tzIHRvIHNjYW4gKi8KIAlp ZiAocHJvZ3Jlc3MpCkBAIC0xNjk5LDkgKzE3NDYsMTEgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCiAJdGFibGVfZW5kc2NhbihzY2FuKTsK IAorCWlmIChuZWVkX3BvcF9hY3RpdmVfc25hcHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAJLyogd2UgY2FuIG5vdyBmb3JnZXQgb3VyIHNuYXBzaG90LCBpZiBzZXQgYW5kIHJlZ2lzdGVy ZWQgYnkgdXMgKi8KIAlpZiAobmVlZF91bnJlZ2lzdGVyX3NuYXBzaG90KQotCQlVbnJlZ2lzdGVy U25hcHNob3Qoc25hcHNob3QpOworCQlVbnJlZ2lzdGVyU25hcHNob3QocmVnaXN0ZXJlZF9zbmFw c2hvdCk7CiAKIAlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOwogCkBAIC0xNzcx LDcgKzE4MjAsOCBAQCBoZWFwYW1faW5kZXhfdmFsaWRhdGVfc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVMTCwJ Lyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRlZ3kg T0sgKi8KLQkJCQkJCQkJIGZhbHNlKTsJLyogc3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJCSBm YWxzZSwJLyogc3luY3NjYW4gbm90IE9LICovCisJCQkJCQkJCSBmYWxzZSk7CiAJaHNjYW4gPSAo SGVhcFNjYW5EZXNjKSBzY2FuOwogCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19TQ0FOX0JMT0NLU19UT1RBTCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9p bmRleC9nZW5hbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggOTdk NDRiODQ2MjIuLjIwNGI1YjYxNGJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtNDgx LDcgKzQ4MSw3IEBAIHN5c3RhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJ CSAqLwogCQlzeXNzY2FuLT5zY2FuID0gdGFibGVfYmVnaW5zY2FuX3N0cmF0KGhlYXBSZWxhdGlv biwgc25hcHNob3QsCiAJCQkJCQkJCQkJCSAgbmtleXMsIGtleSwKLQkJCQkJCQkJCQkJICB0cnVl LCBmYWxzZSk7CisJCQkJCQkJCQkJCSAgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKIAkJc3lzc2Nhbi0+ aXNjYW4gPSBOVUxMOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCA3 NTZkZmEzZGNmNC4uOGQ4MDRkNmJjZmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9u YnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIGRvdWJsZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJl bGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3RhdGljIHZvaWQgX2J0X3Nwb29sZGVzdHJv eShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lkIF9idF9zcG9vbChCVFNwb29sICpidHNw b29sLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnNlbGYsCiAJCQkJCSAgY29uc3QgRGF0dW0gKnZh bHVlcywgY29uc3QgYm9vbCAqaXNudWxsKTsKLXN0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRT cG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpOworc3RhdGljIHZvaWQgX2J0X2xlYWZi dWlsZChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwgYm9vbCByZXNldF9zbmFw c2hvdHMpOwogc3RhdGljIHZvaWQgX2J0X2J1aWxkX2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJ dGVtUG9pbnRlciB0aWQsIERhdHVtICp2YWx1ZXMsCiAJCQkJCQkJICAgYm9vbCAqaXNudWxsLCBi b29sIHR1cGxlSXNBbGl2ZSwgdm9pZCAqc3RhdGUpOwogc3RhdGljIEJ1bGtXcml0ZUJ1ZmZlciBf YnRfYmxuZXdwYWdlKEJUV3JpdGVTdGF0ZSAqd3N0YXRlLCB1aW50MzIgbGV2ZWwpOwpAQCAtMzI1 LDE4ICszMjUsMjAgQEAgYnRidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwgSW5k ZXhJbmZvICppbmRleEluZm8pCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXgpKTsK IAogCXJlbHR1cGxlcyA9IF9idF9zcG9vbHNfaGVhcHNjYW4oaGVhcCwgaW5kZXgsICZidWlsZHN0 YXRlLCBpbmRleEluZm8pOworCUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRl eEluZm8pIHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJ ICogRmluaXNoIHRoZSBidWlsZCBieSAoMSkgY29tcGxldGluZyB0aGUgc29ydCBvZiB0aGUgc3Bv b2wgZmlsZSwgKDIpCiAJICogaW5zZXJ0aW5nIHRoZSBzb3J0ZWQgdHVwbGVzIGludG8gYnRyZWUg cGFnZXMgYW5kICgzKSBidWlsZGluZyB0aGUgdXBwZXIKIAkgKiBsZXZlbHMuICBGaW5hbGx5LCBp dCBtYXkgYWxzbyBiZSBuZWNlc3NhcnkgdG8gZW5kIHVzZSBvZiBwYXJhbGxlbGlzbS4KIAkgKi8K LQlfYnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyKTsKKwlf YnRfbGVhZmJ1aWxkKGJ1aWxkc3RhdGUuc3Bvb2wsIGJ1aWxkc3RhdGUuc3Bvb2wyLCBJbmRleEJ1 aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykpOwogCV9idF9zcG9vbGRlc3Ryb3koYnVpbGRz dGF0ZS5zcG9vbCk7CiAJaWYgKGJ1aWxkc3RhdGUuc3Bvb2wyKQogCQlfYnRfc3Bvb2xkZXN0cm95 KGJ1aWxkc3RhdGUuc3Bvb2wyKTsKIAlpZiAoYnVpbGRzdGF0ZS5idGxlYWRlcikKIAkJX2J0X2Vu ZF9wYXJhbGxlbChidWlsZHN0YXRlLmJ0bGVhZGVyKTsKKwlBc3NlcnQoIUluZGV4QnVpbGRSZXNl dHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54 bWluKSk7CiAKIAlyZXN1bHQgPSBwYWxsb2Nfb2JqZWN0KEluZGV4QnVpbGRSZXN1bHQpOwogCkBA IC00ODQsNiArNDg2LDggQEAgX2J0X3Nwb29sc19oZWFwc2NhbihSZWxhdGlvbiBoZWFwLCBSZWxh dGlvbiBpbmRleCwgQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLAogCWVsc2UKIAkJcmVsdHVwbGVz ID0gX2J0X3BhcmFsbGVsX2hlYXBzY2FuKGJ1aWxkc3RhdGUsCiAJCQkJCQkJCQkJICAmaW5kZXhJ bmZvLT5paV9Ccm9rZW5Ib3RDaGFpbik7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOwor CUFzc2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2Fj dGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qCiAJICogU2V0IHRoZSBwcm9ncmVz cyB0YXJnZXQgZm9yIHRoZSBuZXh0IHBoYXNlLiAgUmVzZXQgdGhlIGJsb2NrIG51bWJlcgpAQCAt NTM5LDcgKzU0Myw3IEBAIF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBjb25zdCBJdGVtUG9p bnRlckRhdGEgKnNlbGYsIGNvbnN0IERhdHVtICp2YWx1ZXMsIGNvCiAgKiBjcmVhdGUgYW4gZW50 aXJlIGJ0cmVlLgogICovCiBzdGF0aWMgdm9pZAotX2J0X2xlYWZidWlsZChCVFNwb29sICpidHNw b29sLCBCVFNwb29sICpidHNwb29sMikKK19idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwg QlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgcmVzZXRfc25hcHNob3RzKQogewogCUJUV3JpdGVTdGF0 ZSB3c3RhdGU7CiAKQEAgLTU2MSwxOCArNTY1LDIxIEBAIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkgUFJPR1JFU1NfQlRSRUVfUEhB U0VfUEVSRk9STVNPUlRfMik7CiAJCXR1cGxlc29ydF9wZXJmb3Jtc29ydChidHNwb29sMi0+c29y dHN0YXRlKTsKIAl9CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJd3N0YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwog CXdzdGF0ZS5pbmRleCA9IGJ0c3Bvb2wtPmluZGV4OwogCXdzdGF0ZS5pbnNrZXkgPSBfYnRfbWtz Y2Fua2V5KHdzdGF0ZS5pbmRleCwgTlVMTCk7CiAJLyogX2J0X21rc2NhbmtleSgpIHdvbid0IHNl dCBhbGxlcXVhbGltYWdlIHdpdGhvdXQgbWV0YXBhZ2UgKi8KIAl3c3RhdGUuaW5za2V5LT5hbGxl cXVhbGltYWdlID0gX2J0X2FsbGVxdWFsaW1hZ2Uod3N0YXRlLmluZGV4LCB0cnVlKTsKKwlJbnZh bGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CiAKIAkvKiByZXNlcnZlIHRoZSBtZXRhcGFnZSAqLwog CXdzdGF0ZS5idHdzX3BhZ2VzX2FsbG9jZWQgPSBCVFJFRV9NRVRBUEFHRSArIDE7CiAKIAlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9TVUJQSEFTRSwKIAkJ CQkJCQkJIFBST0dSRVNTX0JUUkVFX1BIQVNFX0xFQUZfTE9BRCk7CisJQXNzZXJ0KCFyZXNldF9z bmFwc2hvdHMgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCV9idF9s b2FkKCZ3c3RhdGUsIGJ0c3Bvb2wsIGJ0c3Bvb2wyKTsKIH0KIApAQCAtMTQxMSw2ICsxNDE4LDcg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCVdhbFVzYWdlICAgKndhbHVzYWdlOwogCUJ1ZmZlclVz YWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOworCWJv b2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CiAJaW50CQkJcXVlcnlsZW47CiAK ICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDkgKzE0NDQsMTYg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCiAJICov CiAJaWYgKCFpc2NvbmN1cnJlbnQpCisJeworCQlBc3NlcnQoQWN0aXZlU25hcHNob3RTZXQoKSk7 CiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9 IGZhbHNlOworCX0KIAllbHNlCisJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsK Kwl9CiAKIAkvKgogCSAqIEVzdGltYXRlIHNpemUgZm9yIG91ciBvd24gUEFSQUxMRUxfS0VZX0JU UkVFX1NIQVJFRCB3b3Jrc3BhY2UsIGFuZApAQCAtMTQ5Miw2ICsxNTA3LDggQEAgX2J0X2JlZ2lu X3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGlu dCByZXF1ZXN0KQogCS8qIElmIG5vIERTTSBzZWdtZW50IHdhcyBhdmFpbGFibGUsIGJhY2sgb3V0 IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPnNlZyA9PSBOVUxMKQogCXsKKwkJaWYg KG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCWlm IChJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNo b3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwpAQCAtMTU4Niw2ICsxNjAzLDgg QEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2Nv bmN1cnJlbnQsIGludCByZXF1ZXN0KQogCS8qIElmIG5vIHdvcmtlcnMgd2VyZSBzdWNjZXNzZnVs bHkgbGF1bmNoZWQsIGJhY2sgb3V0IChkbyBzZXJpYWwgYnVpbGQpICovCiAJaWYgKHBjeHQtPm53 b3JrZXJzX2xhdW5jaGVkID09IDApCiAJeworCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90 KQorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJX2J0X2VuZF9wYXJhbGxlbChidGxlYWRlcik7 CiAJCXJldHVybjsKIAl9CkBAIC0xNjAyLDYgKzE2MjEsOCBAQCBfYnRfYmVnaW5fcGFyYWxsZWwo QlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3Qp CiAJICogc3VyZSB0aGF0IHRoZSBmYWlsdXJlLXRvLXN0YXJ0IGNhc2Ugd2lsbCBub3QgaGFuZyBm b3JldmVyLgogCSAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0KTsKKwlp ZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQorCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKaW5kZXggNzgwZWY2NDZhNTQu LmZmNDU3ZTNiYmZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2lu c2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0LmMKQEAgLTIw LDEwICsyMCwxMiBAQAogI2luY2x1ZGUgImFjY2Vzcy9zcGdpc3RfcHJpdmF0ZS5oIgogI2luY2x1 ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKKyNp bmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVk ZSAibm9kZXMvZXhlY25vZGVzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNs dWRlICJzdG9yYWdlL2J1bGtfd3JpdGUuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC0x NDMsNiArMTQ1LDggQEAgc3BnYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIElu ZGV4SW5mbyAqaW5kZXhJbmZvKQogCXJlc3VsdCA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVpbGRS ZXN1bHQpOwogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRl eF90dXBsZXMgPSBidWlsZHN0YXRlLmluZHR1cGxlczsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBz aG90KCk7CisJQXNzZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwg IVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJcmV0dXJuIHJlc3VsdDsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCA5NDA3YzM1N2YyNy4uN2Y0N2U3ZGYwN2QgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAj aW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKIAogLyogUG90ZW50aWFsbHkgc2V0IGJ5IHBnX3Vw Z3JhZGVfc3VwcG9ydCBmdW5jdGlvbnMgKi8KIE9pZAkJCWJpbmFyeV91cGdyYWRlX25leHRfaW5k ZXhfcGdfY2xhc3Nfb2lkID0gSW52YWxpZE9pZDsKQEAgLTE1MTAsOCArMTUxMSw4IEBAIGluZGV4 X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJUmVsYXRpb24JaW5kZXhS ZWxhdGlvbjsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAKLQkvKiBUaGlzIGhhZCBiZXR0ZXIg bWFrZSBzdXJlIHRoYXQgYSBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KLQlBc3NlcnQoQWN0aXZlU25h cHNob3RTZXQoKSk7CisJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4p KTsKKwlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eGlkKSk7CiAKIAkvKiBP cGVuIGFuZCBsb2NrIHRoZSBwYXJlbnQgaGVhcCByZWxhdGlvbiAqLwogCWhlYXBSZWwgPSB0YWJs ZV9vcGVuKGhlYXBSZWxhdGlvbklkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwpAQCAtMTUy OSwxOSArMTUzMCwyOCBAQCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBSZWxhdGlv bklkLAogCiAJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4oaW5kZXhSZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKIAorCS8qIEJ1aWxkSW5kZXhJbmZvIG1heSByZXF1aXJlIGEgc25hcHNo b3QgZm9yIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzICovCisJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJLyoKIAkgKiBXZSBoYXZlIHRvIHJlLWJ1aWxk IHRoZSBJbmRleEluZm8gc3RydWN0LCBzaW5jZSBpdCB3YXMgbG9zdCBpbiB0aGUKIAkgKiBjb21t aXQgb2YgdGhlIHRyYW5zYWN0aW9uIHdoZXJlIHRoaXMgY29uY3VycmVudCBpbmRleCB3YXMgY3Jl YXRlZCBhdAogCSAqIHRoZSBjYXRhbG9nIGxldmVsLgogCSAqLwogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGluZGV4UmVsYXRpb24pOworCS8qIERvbmUgd2l0aCBzbmFwc2hvdCAqLworCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAJQXNzZXJ0KCFpbmRleEluZm8tPmlpX1JlYWR5Rm9ySW5zZXJ0 cyk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gdHJ1ZTsKIAlpbmRleEluZm8tPmlpX0Jy b2tlbkhvdENoYWluID0gZmFsc2U7CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFz c2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8qIE5vdyBidWlsZCB0aGUgaW5kZXggKi8K IAlpbmRleF9idWlsZChoZWFwUmVsLCBpbmRleFJlbGF0aW9uLCBpbmRleEluZm8sIGZhbHNlLCB0 cnVlLCB0cnVlKTsKIAorCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIUlu ZGV4QnVpbGRSZXNldHNTbmFwc2hvdHMoaW5kZXhJbmZvKSB8fCAhVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CisKIAkvKiBSb2xsIGJhY2sgYW55IEdVQyBjaGFuZ2VzIGV4ZWN1 dGVkIGJ5IGluZGV4IGZ1bmN0aW9ucyAqLwogCUF0RU9YYWN0X0dVQyhmYWxzZSwgc2F2ZV9uZXN0 bGV2ZWwpOwogCkBAIC0xNTUyLDEyICsxNTYyLDE5IEBAIGluZGV4X2NvbmN1cnJlbnRseV9idWls ZChPaWQgaGVhcFJlbGF0aW9uSWQsCiAJdGFibGVfY2xvc2UoaGVhcFJlbCwgTm9Mb2NrKTsKIAlp bmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBOb0xvY2spOwogCisJLyoKKwkgKiBVcGRhdGluZyBw Z19pbmRleCBtaWdodCBpbnZvbHZlIFRPQVNUIHRhYmxlIGFjY2Vzcywgc28gZW5zdXJlIHdlCisJ ICogaGF2ZSBhIHZhbGlkIHNuYXBzaG90LgorCSAqLworCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwogCS8qCiAJICogVXBkYXRlIHRoZSBwZ19pbmRleCByb3cg dG8gbWFyayB0aGUgaW5kZXggYXMgcmVhZHkgZm9yIGluc2VydHMuIE9uY2Ugd2UKIAkgKiBjb21t aXQgdGhpcyB0cmFuc2FjdGlvbiwgYW55IG5ldyB0cmFuc2FjdGlvbnMgdGhhdCBvcGVuIHRoZSB0 YWJsZSBtdXN0CiAJICogaW5zZXJ0IG5ldyBlbnRyaWVzIGludG8gdGhlIGluZGV4IGZvciBpbnNl cnRpb25zIGFuZCBub24tSE9UIHVwZGF0ZXMuCiAJICovCiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdz KGluZGV4UmVsYXRpb25JZCwgSU5ERVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisJLyogd2UgY2FuIGRv IGF3YXkgd2l0aCBvdXIgc25hcHNob3QgKi8KKwlQb3BBY3RpdmVTbmFwc2hvdCgpOwogfQogCiAv KgpAQCAtMzI1Nyw3ICszMjc0LDggQEAgSW5kZXhDaGVja0V4Y2x1c2lvbihSZWxhdGlvbiBoZWFw UmVsYXRpb24sCiAJCQkJCQkJCSAwLCAvKiBudW1iZXIgb2Yga2V5cyAqLwogCQkJCQkJCQkgTlVM TCwJLyogc2NhbiBrZXkgKi8KIAkJCQkJCQkJIHRydWUsCS8qIGJ1ZmZlciBhY2Nlc3Mgc3RyYXRl Z3kgT0sgKi8KLQkJCQkJCQkJIHRydWUpOyAvKiBzeW5jc2NhbiBPSyAqLworCQkJCQkJCQkgdHJ1 ZSwgLyogc3luY3NjYW4gT0sgKi8KKwkJCQkJCQkJIGZhbHNlKTsKIAogCXdoaWxlICh0YWJsZV9z Y2FuX2dldG5leHRzbG90KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uLCBzbG90KSkKIAl7CkBA IC0zMzIwLDEyICszMzM4LDE2IEBAIEluZGV4Q2hlY2tFeGNsdXNpb24oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogICogYXMgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzY2FuIChzZWUgdGFibGVfaW5kZXhf YnVpbGRfc2NhbiksIHdoZXJlYXMgYSBub3JtYWwKICAqIGJ1aWxkIHRha2VzIGNhcmUgdG8gaW5j bHVkZSByZWNlbnRseS1kZWFkIHR1cGxlcy4gIFRoaXMgaXMgT0sgYmVjYXVzZQogICogd2Ugd29u J3QgbWFyayB0aGUgaW5kZXggdmFsaWQgdW50aWwgYWxsIHRyYW5zYWN0aW9ucyB0aGF0IG1pZ2h0 IGJlIGFibGUKLSAqIHRvIHNlZSB0aG9zZSB0dXBsZXMgYXJlIGdvbmUuICBUaGUgcmVhc29uIGZv ciBkb2luZyB0aGF0IGlzIHRvIGF2b2lkCisgKiB0byBzZWUgdGhvc2UgdHVwbGVzIGFyZSBnb25l LiAgT25lIG9mIHJlYXNvbnMgZm9yIGRvaW5nIHRoYXQgaXMgdG8gYXZvaWQKICAqIGJvZ3VzIHVu aXF1ZS1pbmRleCBmYWlsdXJlcyBkdWUgdG8gY29uY3VycmVudCBVUERBVEVzICh3ZSBtaWdodCBz ZWUKICAqIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgc2FtZSByb3cgYXMgYmVpbmcgdmFsaWQg d2hlbiB3ZSBwYXNzIG92ZXIgdGhlbSwKICAqIGlmIHdlIHVzZWQgSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5kZXggdGhhdAogICogZG9lcyBub3Qg Y29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJsZSB3aGlsZSB3ZSBidWlsdCB0aGUg aW5kZXguCiAgKgorICogRnVydGhlcm1vcmUsIGluIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCB3 ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQorICogc2Nhbiwgd2hpY2ggY2F1c2VzIG5l dyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5IHNvIG9mdGVuLiBUaGUgcmVhc29u CisgKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHhtaW4gaG9yaXpvbiBmb3J3YXJkLgor ICoKICAqIE5leHQsIHdlIG1hcmsgdGhlIGluZGV4ICJpbmRpc3JlYWR5IiAoYnV0IHN0aWxsIG5v dCAiaW5kaXN2YWxpZCIpIGFuZAogICogY29tbWl0IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gYW5k IHN0YXJ0IGEgdGhpcmQuICBBZ2FpbiB3ZSB3YWl0IGZvciBhbGwKICAqIHRyYW5zYWN0aW9ucyB0 aGF0IGNvdWxkIGhhdmUgYmVlbiBtb2RpZnlpbmcgdGhlIHRhYmxlIHRvIHRlcm1pbmF0ZS4gIE5v dwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCA5YWI3NGM4ZGYwYS4uYmUzZGM1ZThkMjgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzA0LDIzICsxNzA0LDE3IEBAIERlZmlu ZUluZGV4KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkgKiBjaGFpbnMgY2FuIGJlIGNyZWF0ZWQgd2hl cmUgdGhlIG5ldyB0dXBsZSBhbmQgdGhlIG9sZCB0dXBsZSBpbiB0aGUKIAkgKiBjaGFpbiBoYXZl IGRpZmZlcmVudCBpbmRleCBrZXlzLgogCSAqCi0JICogV2Ugbm93IHRha2UgYSBuZXcgc25hcHNo b3QsIGFuZCBidWlsZCB0aGUgaW5kZXggdXNpbmcgYWxsIHR1cGxlcyB0aGF0Ci0JICogYXJlIHZp c2libGUgaW4gdGhpcyBzbmFwc2hvdC4gIFdlIGNhbiBiZSBzdXJlIHRoYXQgYW55IEhPVCB1cGRh dGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0dXBsZXMgdGhhdCBhcmUg dmlzaWJsZSB1c2luZyBzaW5nbGUgb3IKKwkgKiBtdWx0aXBsZSByZWZyZXNoaW5nIHNuYXBzaG90 cy4gV2UgY2FuIGJlIHN1cmUgdGhhdCBhbnkgSE9UIHVwZGF0ZXMgdG8KIAkgKiB0aGVzZSB0dXBs ZXMgd2lsbCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGluZGV4LCBzaW5jZSBhbnkgdXBkYXRlcyBt YWRlCiAJICogYnkgdHJhbnNhY3Rpb25zIHRoYXQgZGlkbid0IGtub3cgYWJvdXQgdGhlIGluZGV4 IGFyZSBub3cgY29tbWl0dGVkIG9yCiAJICogcm9sbGVkIGJhY2suICBUaHVzLCBlYWNoIHZpc2li bGUgdHVwbGUgaXMgZWl0aGVyIHRoZSBlbmQgb2YgaXRzCiAJICogSE9ULWNoYWluIG9yIHRoZSBl eHRlbnNpb24gb2YgdGhlIGNoYWluIGlzIEhPVC1zYWZlIGZvciB0aGlzIGluZGV4LgogCSAqLwog Ci0JLyogU2V0IEFjdGl2ZVNuYXBzaG90IHNpbmNlIGZ1bmN0aW9ucyBpbiB0aGUgaW5kZXhlcyBt YXkgbmVlZCBpdCAqLwotCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOwotCiAJLyogUGVyZm9ybSBjb25jdXJyZW50IGJ1aWxkIG9mIGluZGV4ICovCiAJaW5kZXhf Y29uY3VycmVudGx5X2J1aWxkKHRhYmxlSWQsIGluZGV4UmVsYXRpb25JZCk7CiAKLQkvKiB3ZSBj YW4gZG8gYXdheSB3aXRoIG91ciBzbmFwc2hvdCAqLwotCVBvcEFjdGl2ZVNuYXBzaG90KCk7Ci0K IAkvKgogCSAqIENvbW1pdCB0aGlzIHRyYW5zYWN0aW9uIHRvIG1ha2UgdGhlIGluZGlzcmVhZHkg dXBkYXRlIHZpc2libGUuCiAJICovCkBAIC00MTM3LDkgKzQxMzEsNiBAQCBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwg Y29uc3QgUmVpbgogCQlpZiAobmV3aWR4LT5zYWZlKQogCQkJc2V0X2luZGV4c2FmZV9wcm9jZmxh Z3MoKTsKIAotCQkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2UgZnVuY3Rpb25zIGluIHRoZSBp bmRleGVzIG1heSBuZWVkIGl0ICovCi0JCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlv blNuYXBzaG90KCkpOwotCiAJCS8qCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4 IHRvIGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4K QEAgLTQxNTQsNyArNDE0NSw2IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAJCS8qIFBlcmZv cm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhfY29uY3VycmVudGx5 X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKIAotCQlQb3BBY3RpdmVT bmFwc2hvdCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0ZWM3NmNlMzFhOS4uNmEwODZlMjNhNmMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNs dWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRl ICJ1dGlscy9zZWxmdW5jcy5oIgorI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKIAogLyogR1VD IHBhcmFtZXRlcnMgKi8KIGRvdWJsZQkJY3Vyc29yX3R1cGxlX2ZyYWN0aW9uID0gREVGQVVMVF9D VVJTT1JfVFVQTEVfRlJBQ1RJT047CkBAIC03MDQ3LDYgKzcwNDgsNyBAQCBwbGFuX2NyZWF0ZV9p bmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkKQogCVJlbGF0aW9uCWhlYXA7 CiAJUmVsYXRpb24JaW5kZXg7CiAJUmVsT3B0SW5mbyAqcmVsOworCWJvb2wJCW5lZWRfcG9wX2Fj dGl2ZV9zbmFwc2hvdCA9IGZhbHNlOwogCWludAkJCXBhcmFsbGVsX3dvcmtlcnM7CiAJQmxvY2tO dW1iZXIgaGVhcF9ibG9ja3M7CiAJZG91YmxlCQlyZWx0dXBsZXM7CkBAIC03MTAyLDYgKzcxMDQs MTIgQEAgcGxhbl9jcmVhdGVfaW5kZXhfd29ya2VycyhPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9p ZCkKIAloZWFwID0gdGFibGVfb3Blbih0YWJsZU9pZCwgTm9Mb2NrKTsKIAlpbmRleCA9IGluZGV4 X29wZW4oaW5kZXhPaWQsIE5vTG9jayk7CiAKKwkvKiBTZXQgQWN0aXZlU25hcHNob3Qgc2luY2Ug ZnVuY3Rpb25zIGluIHRoZSBpbmRleGVzIG1heSBuZWVkIGl0ICovCisJaWYgKCFBY3RpdmVTbmFw c2hvdFNldCgpKQorCXsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNo b3QoKSk7CisJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJfQogCS8qCiAJICog RGV0ZXJtaW5lIGlmIGl0J3Mgc2FmZSB0byBwcm9jZWVkLgogCSAqCkBAIC03MTU5LDYgKzcxNjcs OCBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lk KQogCQlwYXJhbGxlbF93b3JrZXJzLS07CiAKIGRvbmU6CisJaWYgKG5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCkKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAlpbmRleF9jbG9zZShpbmRleCwgTm9M b2NrKTsKIAl0YWJsZV9jbG9zZShoZWFwLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0CmluZGV4IDgzYWY1OTRkNGFmLi5kZjkyYjlmZWU2OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKQEAgLTUxNyw2ICs1MTcs MTYgQEAKICAgb3B0aW9ucyA9PiAnY29tcHV0ZV9xdWVyeV9pZF9vcHRpb25zJywKIH0sCiAKK3sg bmFtZSA9PiAnY29uY3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzJywg dHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NVU0VUJywgZ3JvdXAgPT4gJ0RFVkVMT1BF Ul9PUFRJT05TJywKKyAgc2hvcnRfZGVzYyA9PiAnU2V0cyBob3cgb2Z0ZW4gY29uY3VycmVudCBp bmRleCBidWlsZHMgcmVmcmVzaCB0aGVpciBzbmFwc2hvdC4nLAorICBsb25nX2Rlc2MgPT4gJ1pl cm8gZGlzYWJsZXMgcGVyaW9kaWMgc25hcHNob3QgcmVmcmVzaCBkdXJpbmcgdGhlIGZpcnN0IGhl YXAgc2NhbiBvZiBlbGlnaWJsZSBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGFuZCBSRUlOREVY IENPTkNVUlJFTlRMWSBidWlsZHMuJywKKyAgZmxhZ3MgPT4gJ0dVQ19OT1RfSU5fU0FNUExFJywK KyAgdmFyaWFibGUgPT4gJ2NvbmN1cnJlbnRfaW5kZXhfcmVzZXRfc25hcHNob3RfZXZlcnlfbl9w YWdlcycsCisgIGJvb3RfdmFsID0+ICc0MDk2JywKKyAgbWluID0+ICcwJywKKyAgbWF4ID0+ICdJ TlRfTUFYJywKK30sCisKIHsgbmFtZSA9PiAnY29uZmlnX2ZpbGUnLCB0eXBlID0+ICdzdHJpbmcn LCBjb250ZXh0ID0+ICdQR0NfUE9TVE1BU1RFUicsIGdyb3VwID0+ICdGSUxFX0xPQ0FUSU9OUycs CiAgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhlIHNlcnZlclwncyBtYWluIGNvbmZpZ3VyYXRpb24g ZmlsZS4nLAogICBmbGFncyA9PiAnR1VDX0RJU0FMTE9XX0lOX0ZJTEUgfCBHVUNfU1VQRVJVU0VS X09OTFknLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggYzEzZjA1ZDM5ZGIuLjM1NjBiYTQwZmMyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Jl YWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc25h cHNob3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25fcG9pbnQuaCIKIAogCiAjZGVmaW5l IERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRAkiaGVhcCIKQEAgLTcyLDYgKzczLDE4IEBAIHR5 cGVkZWYgZW51bSBTY2FuT3B0aW9ucwogCiAJLyogY29sbGVjdCBzY2FuIGluc3RydW1lbnRhdGlv biAqLwogCVNPX1NDQU5fSU5TVFJVTUVOVCA9IDEgPDwgMTEsCisJLyoKKwkgKiBSZXNldCBzY2Fu IGFuZCBjYXRhbG9nIHNuYXBzaG90IGV2ZXJ5IHNvIG9mdGVuPyBJZiBzbywgdGhlCisJICogY29u Y3VycmVudF9pbmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzIEdVQyBkZWNpZGVzIHdo ZW4gdGhlCisJICogYWN0aXZlIHNuYXBzaG90IGlzIHBvcHBlZCwgdGhlIGNhdGFsb2cgc25hcHNo b3QgaW52YWxpZGF0ZWQsIGFuZCB0aGUKKwkgKiBsYXRlc3Qgc25hcHNob3QgcHVzaGVkIGFzIGFj dGl2ZS4KKwkgKgorCSAqIEF0IHRoZSBlbmQgb2YgdGhlIHNjYW4gc25hcHNob3QgaXMgbm90IHBv cHBlZC4KKwkgKiBHb2FsIG9mIHN1Y2ggbW9kZSBpcyBrZWVwIHhtaW4gcHJvcGFnYXRpbmcgaG9y aXpvbiBmb3J3YXJkLgorCSAqCisJICogc2VlIGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdCBmb3Ig ZGV0YWlscy4KKwkgKi8KKwlTT19SRVNFVF9TTkFQU0hPVCA9IDEgPDwgMTIsCiB9CQkJU2Nhbk9w dGlvbnM7CiAKIC8qCkBAIC04NSw3ICs5OCw3IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwog CShTT19UWVBFX1NFUVNDQU4gfCBTT19UWVBFX0JJVE1BUFNDQU4gfCBTT19UWVBFX1NBTVBMRVND QU4gfCBcCiAJIFNPX1RZUEVfVElEU0NBTiB8IFNPX1RZUEVfVElEUkFOR0VTQ0FOIHwgU09fVFlQ RV9BTkFMWVpFIHwgXAogCSBTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExP V19QQUdFTU9ERSB8IFwKLQkgU09fVEVNUF9TTkFQU0hPVCkKKwkgU09fVEVNUF9TTkFQU0hPVCB8 IFNPX1JFU0VUX1NOQVBTSE9UKQogCiAvKgogICogUmVzdWx0IGNvZGVzIGZvciB0YWJsZV97dXBk YXRlLGRlbGV0ZSxsb2NrX3R1cGxlfSwgYW5kIGZvciB2aXNpYmlsaXR5CkBAIC05NjcsNyArOTgw LDggQEAgZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVfYmVnaW5zY2FuX2NhdGFsb2coUmVsYXRp b24gcmVsYXRpb24sIGludCBua2V5cywKIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwogdGFi bGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJ CSAgaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LAotCQkJCQkgIGJvb2wgYWxsb3dfc3RyYXQs IGJvb2wgYWxsb3dfc3luYykKKwkJCQkJICBib29sIGFsbG93X3N0cmF0LCBib29sIGFsbG93X3N5 bmMsCisJCQkJCSAgYm9vbCByZXNldF9zbmFwc2hvdCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09f VFlQRV9TRVFTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKQEAgLTk3NSw2ICs5ODksMTUgQEAg dGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCiAJ CWZsYWdzIHw9IFNPX0FMTE9XX1NUUkFUOwogCWlmIChhbGxvd19zeW5jKQogCQlmbGFncyB8PSBT T19BTExPV19TWU5DOworCWlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCUlOSkVDVElPTl9QT0lO VCgidGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cyIsIE5VTEwpOworCQkvKiBB Y3RpdmUgc25hcHNob3QgaXMgcmVxdWlyZWQgb24gc3RhcnQuICovCisJCUFzc2VydChHZXRBY3Rp dmVTbmFwc2hvdCgpID09IHNuYXBzaG90KTsKKwkJLyogQWN0aXZlIHNuYXBzaG90IHNob3VsZCBu b3QgYmUgcmVnaXN0ZXJlZCB0byBrZWVwIHhtaW4gcHJvcGFnYXRpbmcuICovCisJCUFzc2VydChH ZXRBY3RpdmVTbmFwc2hvdCgpLT5yZWdkX2NvdW50ID09IDApOworCQlmbGFncyB8PSAoU09fUkVT RVRfU05BUFNIT1QpOworCX0KIAogCXJldHVybiB0YWJsZV9iZWdpbnNjYW5fY29tbW9uKHJlbCwg c25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsCiAJCQkJCQkJCSAgZmxhZ3MsIFNPX05PTkUpOwpA QCAtMTg0Miw2ICsxODY1LDEwIEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0X3R1cGxlKFRhYmxl U2NhbkRlc2Mgc2NhbiwKICAqIHZlcnkgaGFyZCB0byBkZXRlY3Qgd2hldGhlciB0aGV5J3JlIHJl YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgY2hhaW4gdGlwLgogICogVGhpcyBvbmx5IHJlYWxs eSBtYWtlcyBzZW5zZSBmb3IgaGVhcCBBTSwgaXQgbWlnaHQgbmVlZCB0byBiZSBnZW5lcmFsaXpl ZAogICogZm9yIG90aGVyIEFNcyBsYXRlci4KKyAqCisgKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUg aW5kZXggYW5kIG5vbi1wYXJhbGxlbCBjb25jdXJyZW50IGJ1aWxkLAorICogY29uY3VycmVudF9p bmRleF9yZXNldF9zbmFwc2hvdF9ldmVyeV9uX3BhZ2VzIGlzIGFwcGxpZWQgZm9yIHRoZSBzY2Fu LgorICogVGhhdCBsZWFkcyB0byBjaGFuZ2luZyBzbmFwc2hvdHMgb24gdGhlIGZseSB0byBhbGxv dyB4bWluIGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFi bGVfaW5kZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5k ZXggOWFlZTgyMjYzNDcuLjNkOTMyMzIzNjFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0xNCw2ICsx NCw3IEBACiAjaWZuZGVmIElOREVYX0gKICNkZWZpbmUgSU5ERVhfSAogCisjaW5jbHVkZSAiYWNj ZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRl ICJub2Rlcy9leGVjbm9kZXMuaCIKIApAQCAtMjYsNiArMjcsMjIgQEAgdHlwZWRlZiBzdHJ1Y3Qg QXR0ck1hcCBBdHRyTWFwOwogCiAjZGVmaW5lIERFRkFVTFRfSU5ERVhfVFlQRQkiYnRyZWUiCiAK Ky8qCisgKiBEb2VzIHRoaXMgY29uY3VycmVudCBpbmRleCBidWlsZCB1c2UgcGVyaW9kaWMgc25h cHNob3QgcmVzZXRzPworICoKKyAqIFNuYXBzaG90IHJlc2V0dGluZyBpcyBvbmx5IGFwcGxpY2Fi bGUgd2hlbiBhbGwgb2Y6CisgKiAtIHRoZSBidWlsZCBpcyBjb25jdXJyZW50IChpaV9Db25jdXJy ZW50KQorICogLSB0aGUgaW5kZXggaXMgbm9uLXVuaXF1ZSAodW5pcXVlIG5lZWRzIGNvbnNpc3Rl bnQgc25hcHNob3QpCisgKiAtIGlzb2xhdGlvbiBsZXZlbCBpcyBub3QgUkVQRUFUQUJMRSBSRUFE L1NFUklBTElaQUJMRSAodGhvc2Uga2VlcCBhCisgKiAgIHJlZ2lzdGVyZWQgdHJhbnNhY3Rpb24g c25hcHNob3QpCisgKiAtIHRoZSBidWlsZCBpcyBub3QgcGFyYWxsZWwgKHBhcmFsbGVsIG5lZWRz IHNlcGFyYXRlIGluZnJhc3RydWN0dXJlKQorICovCisjZGVmaW5lIEluZGV4QnVpbGRSZXNldHNT bmFwc2hvdHMoaW5kZXhJbmZvKSBcCisJKChpbmRleEluZm8pLT5paV9Db25jdXJyZW50ICYmIFwK KwkgIShpbmRleEluZm8pLT5paV9VbmlxdWUgJiYgXAorCSAhSXNvbGF0aW9uVXNlc1hhY3RTbmFw c2hvdCgpICYmIFwKKwkgIShpbmRleEluZm8pLT5paV9QYXJhbGxlbFdvcmtlcnMpCisKIC8qIEFj dGlvbiBjb2RlIGZvciBpbmRleF9zZXRfc3RhdGVfZmxhZ3MgKi8KIHR5cGVkZWYgZW51bQogewpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRt aW4uaAppbmRleCA4Y2NkZjYxMjQ2Yi4uMDljYmI0YjFkOTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0yNzIsNiAr MjcyLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCB3b3JrX21lbTsKIGV4dGVybiBQR0RMTElN UE9SVCBkb3VibGUgaGFzaF9tZW1fbXVsdGlwbGllcjsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg bWFpbnRlbmFuY2Vfd29ya19tZW07CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxl bF9tYWludGVuYW5jZV93b3JrZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb25jdXJyZW50 X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXM7CiAKIC8qCiAgKiBVcHBlciBhbmQg bG93ZXIgaGFyZCBsaW1pdHMgZm9yIHRoZSBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5IHJpbmcgc2l6 ZQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxl IGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL01ha2VmaWxlCmluZGV4IGYwNTdk MTQzZDFhLi4wYmEwZTQ3ZjNiOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rp b25fcG9pbnRzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9NYWtlZmlsZQpAQCAtOSw3ICs5LDcgQEAgRVhURU5TSU9OID0gaW5qZWN0aW9uX3BvaW50cwog REFUQSA9IGluamVjdGlvbl9wb2ludHMtLTEuMC5zcWwKIFBHRklMRURFU0MgPSAiaW5qZWN0aW9u X3BvaW50cyAtIGZhY2lsaXR5IGZvciBpbmplY3Rpb24gcG9pbnRzIgogCi1SRUdSRVNTID0gaW5q ZWN0aW9uX3BvaW50cyBoYXNoYWdnIHJlaW5kZXhfY29uYyB2YWN1dW0KK1JFR1JFU1MgPSBpbmpl Y3Rpb25fcG9pbnRzIGhhc2hhZ2cgcmVpbmRleF9jb25jIHZhY3V1bSBjaWNfcmVzZXRfc25hcHNo b3RzCiBSRUdSRVNTX09QVFMgPSAtLWRscGF0aD0kKHRvcF9idWlsZGRpcikvc3JjL3Rlc3QvcmVn cmVzcwogCiBJU09MQVRJT04gPSBiYXNpYyBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90 cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmVkNGFhYWYzNDYz Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL2V4 cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0CkBAIC0wLDAgKzEsMTE4IEBACitDUkVBVEUg RVhURU5TSU9OIGluamVjdGlvbl9wb2ludHM7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19zZXRf bG9jYWwoKTsKKyBpbmplY3Rpb25fcG9pbnRzX3NldF9sb2NhbCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNo KCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJywgJ25vdGljZScpOworIGluamVj dGlvbl9wb2ludHNfYXR0YWNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93 KQorCitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJh dF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2gg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK0NSRUFURSBTQ0hFTUEg Y2ljX3Jlc2V0X3NuYXA7CitDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHBy aW1hcnkga2V5LCBqIGludCk7CitJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNU IGksIGkgKiBJIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKK0NSRUFURSBGVU5D VElPTiBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpIFJFVFVSTlMgYm9v bCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAg ICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBNT0QoJDEsIDIp ID0gMDsKK0VORDsgJCQ7CitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRl X3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUKKwkJCQkJCQkJCSAgTEFO R1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgdHhpZF9jdXJy ZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7CistLS0tLS0tLS0tLS0tLS0tCitB TFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwor Q1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVz ZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9p bnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQorUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0 X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVz ZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoTU9EKGksIDIpLCBqKSBXSEVSRSBNT0QoaSwgMikgPSAwOworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENP TkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVk IGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90 cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNl dF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkp OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0 X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9u IHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVk aWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBp bmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibCBV U0lORyBCUklOKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBv aW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGlj ZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3Rf ZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVn aW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBm b3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUKK0RS T1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKy0tIFRoZSBzYW1lIGlu IHBhcmFsbGVsIG1vZGUKK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFs bGVsX3dvcmtlcnM9Mik7CitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04g Y2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkp OworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9E KGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0NSRUFURSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBj aWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOworTk9USUNFOiAgbm90aWNlIHRyaWdn ZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFw c2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCBoZWFw X3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmpl Y3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cworTk9USUNF OiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IGhlYXBfcmVzZXRfc2Nhbl9z bmFwc2hvdF9lZmZlY3RpdmUKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFw LmlkeDsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7 CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBD T05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitSRUlOREVYIElOREVY IENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitCRUdJTiBUUkFOU0FDVElPTjsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK0VSUk9SOiAgQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBjYW5ub3QgcnVuIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2Nr CitST0xMQkFDSyA7CitTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24gPSAncmVwZWF0 YWJsZSByZWFkJzsKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK1NFVCBkZWZh dWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9IHNlcmlhbGl6YWJsZTsKK0NSRUFURSBJTkRFWCBD T05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVgg Q09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZ IGNpY19yZXNldF9zbmFwLmlkeDsKK1JFU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9u OworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2Fz Y2FkZXMgdG8gMyBvdGhlciBvYmplY3RzCitERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxl IGNpY19yZXNldF9zbmFwLnRibAorZHJvcCBjYXNjYWRlcyB0byBmdW5jdGlvbiBjaWNfcmVzZXRf c25hcC5wcmVkaWNhdGVfc3RhYmxlKGludGVnZXIpCitkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9u IGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGVfbm9fcGFyYW0oKQorRFJPUCBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9tZXNvbi5idWlsZAppbmRleCBmYjE0MThlMmNhYS4uZmU1ODAyM2Y5MDQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9tZXNvbi5idWlsZAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvbWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcg QEAgdGVzdHMgKz0gewogICAgICAgJ2hhc2hhZ2cnLAogICAgICAgJ3JlaW5kZXhfY29uYycsCiAg ICAgICAndmFjdXVtJywKKyAgICAgICdjaWNfcmVzZXRfc25hcHNob3RzJywKICAgICBdLAogICAg ICdyZWdyZXNzX2FyZ3MnOiBbJy0tZGxwYXRoJywgbWVzb24ucHJvamVjdF9idWlsZF9yb290KCkg LyAnc3JjL3Rlc3QvcmVncmVzcyddLAogICAgICMgVGhlIGluamVjdGlvbiBwb2ludHMgYXJlIGNs dXN0ZXItd2lkZSwgc28gZGlzYWJsZSBpbnN0YWxsY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwgYi9z cmMvdGVzdC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi41NTM3ODc1MzliMwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9zcWwv Y2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKQEAgLTAsMCArMSwxMDEgQEAKK0NSRUFURSBFWFRFTlNJ T04gaW5qZWN0aW9uX3BvaW50czsKKworU0VMRUNUIGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2Fs KCk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFw c2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CitTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRh Y2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7CisK KworQ1JFQVRFIFNDSEVNQSBjaWNfcmVzZXRfc25hcDsKK0NSRUFURSBUQUJMRSBjaWNfcmVzZXRf c25hcC50YmwoaSBpbnQgcHJpbWFyeSBrZXksIGogaW50KTsKK0lOU0VSVCBJTlRPIGNpY19yZXNl dF9zbmFwLnRibCBTRUxFQ1QgaSwgaSAqIEkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBz KGkpOworCitDUkVBVEUgRlVOQ1RJT04gY2ljX3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZShp bnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJCQkJCQkJCQkgIExBTkdVQUdFIHBscGdz cWwgQVMgJCQKK0JFR0lOCisgICAgRVhFQ1VURSAnU0VMRUNUIHR4aWRfY3VycmVudCgpJzsKKyAg ICBSRVRVUk4gTU9EKCQxLCAyKSA9IDA7CitFTkQ7ICQkOworCitDUkVBVEUgRlVOQ1RJT04gY2lj X3Jlc2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpIFJFVFVSTlMgYm9vbCBJTU1V VEFCTEUKKwkJCQkJCQkJCSAgTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAorQkVHSU4KKyAgICBFWEVD VVRFICdTRUxFQ1QgdHhpZF9jdXJyZW50KCknOworICAgIFJFVFVSTiBmYWxzZTsKK0VORDsgJCQ7 CisKKy0tLS0tLS0tLS0tLS0tLS0KK0FMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9MCk7CisKK0NSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZ IGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKKworQ1JFQVRF IElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwg aikgV0hFUkUgTU9EKGksIDIpID0gMDsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19y ZXNldF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlk eDsKKworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJs KGksIGopIFdIRVJFIGNpY19yZXNldF9zbmFwLnByZWRpY2F0ZV9zdGFibGUoaSk7CitSRUlOREVY IElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkg aWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVk aWNhdGVfc3RhYmxlX25vX3BhcmFtKCk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5p ZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRi bCBVU0lORyBCUklOKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCist LSBUaGUgc2FtZSBpbiBwYXJhbGxlbCBtb2RlCitBTFRFUiBUQUJMRSBjaWNfcmVzZXRfc25hcC50 YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTIpOworCitDUkVBVEUgVU5JUVVFIElOREVYIENPTkNV UlJFTlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05D VVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2lj X3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNf cmVzZXRfc25hcC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CisK K0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChNT0Qo aSwgMiksIGopIFdIRVJFIE1PRChpLCAyKSA9IDA7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBjaWNfcmVzZXRfc25hcC5pZHg7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CisKK0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9z bmFwLnRibChpLCBqKSBXSEVSRSBjaWNfcmVzZXRfc25hcC5wcmVkaWNhdGVfc3RhYmxlKGkpOwor UkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3Nu YXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5U TFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0 X3NuYXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRf c25hcC50YmwoaSBERVNDIE5VTExTIExBU1QpOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OworCitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwgVVNJTkcgQlJJTihpKTsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNl dF9zbmFwLmlkeDsKK0RST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK KworQkVHSU4gVFJBTlNBQ1RJT047CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBj aWNfcmVzZXRfc25hcC50YmwoaSk7CitST0xMQkFDSyA7CisKK1NFVCBkZWZhdWx0X3RyYW5zYWN0 aW9uX2lzb2xhdGlvbiA9ICdyZXBlYXRhYmxlIHJlYWQnOworQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKGkpOworUkVJTkRFWCBJTkRFWCBDT05DVVJS RU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jl c2V0X3NuYXAuaWR4OworCitTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb24gPSBzZXJp YWxpemFibGU7CitDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7CitSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7 CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitSRVNFVCBkZWZh dWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKworRFJPUCBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXAg Q0FTQ0FERTsKKworRFJPUCBFWFRFTlNJT04gaW5qZWN0aW9uX3BvaW50czsKLS0gCjIuNDMuMAoK --000000000000675090064fbc2171 Content-Type: application/octet-stream; name="v6-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Disposition: attachment; filename="v6-0003-Support-snapshot-resets-in-parallel-concurrent-in.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo4bhjk12 RnJvbSAyY2JiMmIyNmY2MzY3MWQ0ZmJlZjZmNTI3NTc5NjljZTVlNWM3N2ExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bmtleUB0b2xva2EuYWk+CkRh dGU6IEZyaSwgMyBBcHIgMjAyNiAxOTo1Njo0NCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjYgMy80 XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBwYXJhbGxlbCBjb25jdXJyZW50IGluZGV4CiBi dWlsZHMKCkV4dGVuZCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldCBzdXBwb3J0IHRvIHBhcmFsbGVs IGJ1aWxkcywgcHJldmlvdXNseSBsaW1pdGVkIHRvIG5vbi1wYXJhbGxlbCBvcGVyYXRpb25zLiBU aGlzIGFsbG93cyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UgZHVyaW5nIHBhcmFsbGVsIGNv bmN1cnJlbnQgaW5kZXggYnVpbGRzIGFzIHdlbGwuCgpUaGUgbWFpbiBsaW1pdGF0aW9uIG9mIGFw cGx5aW5nIHRoYXQgdGVjaG5pcXVlIHRvIHBhcmFsbGVsIGJ1aWxkcyB3YXMgYSByZXF1aXJlbWVu dCB0byB3YWl0IHVudGlsIHdvcmtlciBwcm9jZXNzZXMgcmVzdG9yZSB0aGVpciBpbml0aWFsIHNu YXBzaG90IGZyb20gbGVhZGVyLgoKVG8gYWRkcmVzcyB0aGlzLCBmb2xsb3dpbmcgY2hhbmdlcyBh cHBsaWVkOgotIGFkZCBpbmZyYXN0cnVjdHVyZSB0byB0cmFjayBzbmFwc2hvdCByZXN0b3JhdGlv biBpbiBwYXJhbGxlbCB3b3JrZXJzCi0gZXh0ZW5kIHBhcmFsbGVsIHNjYW4gaW5pdGlhbGl6YXRp b24gdG8gc3VwcG9ydCBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMKLSB3YWl0IGZvciBwYXJhbGxl bCB3b3JrZXJzIHRvIHJlc3RvcmUgdGhlaXIgaW5pdGlhbCBzbmFwc2hvdHMgYmVmb3JlIHByb2Nl ZWRpbmcgd2l0aCBzY2FuCi0gcmVsYXggbGltaXRhdGlvbiBmb3IgcGFyYWxsZWwgd29ya2VyIHRv IGNhbGwgR2V0TGF0ZXN0U25hcHNob3QKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMgICAgICAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYyAgICAgICAgICAgIHwgNTEgKysrKysrKysrKysrLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgIDcgKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCA1MSArKysrKysrKysr KysrKy0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jICAgICAgICAgICAgfCAz NyArKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgICAg ICAgICB8IDYwICsrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVT ZXFzY2FuLmMgICAgICAgICAgICB8ICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlk cmFuZ2VzY2FuLmMgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFwbWdy LmMgICAgICAgICAgICAgIHwgIDggLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaCAg ICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaCAgICAg ICAgICAgICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAg ICAgICAgICAgIHwgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAg ICAgICAgICB8ICA0ICstCiAuLi4vZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQgICAg ICAgICAgfCAyNSArKysrKysrLQogLi4uL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbCAgICAg ICAgICAgICAgIHwgIDUgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNlcnRpb25zKCspLCA2 MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggN2UwNThmMGQ3YWQuLmFm MWIwODEwNTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0xMjc3LDYgKzEyNzcsOSBAQCBi cmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJ bmZvKQogCXJlc3VsdC0+aGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJcmVzdWx0LT5pbmRleF90 dXBsZXMgPSBpZHh0dXBsZXM7CiAKKwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJQXNz ZXJ0KCFJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgfHwgIVRyYW5zYWN0aW9u SWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjM5 Niw2ICsyMzk5LDcgQEAgX2JyaW5fYmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxk c3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCUJ1ZmZlclVzYWdlICpidWZm ZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNpcGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRf cG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJYm9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50 CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxFX0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0y NDEzLDEyICsyNDE3LDE2IEBAIF9icmluX2JlZ2luX3BhcmFsbGVsKEJyaW5CdWlsZFN0YXRlICpi dWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAogCXNjYW50dXBsZXNv cnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAK KwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhSXNvbGF0aW9uVXNlc1hhY3RTbmFw c2hvdCgpOworCiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9u LiAgSW4gYSBub3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1 c2Ugd2UgbXVzdCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBx dWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVz KS4gIEluIGEKLQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNu YXBzaG90IGFuZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4K KwkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFu ZCBwdXNoIGl0IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUg YWNjb3JkaW5nIHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAorCSAqIHNuYXBzaG90IG1heSBi ZSByZXNldCBwZXJpb2RpY2FsbHkgKGluIG5vbi14YWN0LXNuYXBzaG90IGlzb2xhdGlvbgorCSAq IG1vZGVzKSB0byBhbGxvdyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuCiAJICovCiAJaWYg KCFpc2NvbmN1cnJlbnQpCiAJewpAQCAtMjQyNiwxMCArMjQzNCwxNSBAQCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAJCXNuYXBzaG90ID0gU25hcHNob3RBbnk7CiAJCW5lZWRfcG9wX2FjdGl2ZV9z bmFwc2hvdCA9IGZhbHNlOwogCX0KKwllbHNlIGlmIChyZXNldF9zbmFwc2hvdCkKKwl7CisJCXNu YXBzaG90ID0gSW52YWxpZFNuYXBzaG90OworCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKKwl9CiAJZWxzZQogCXsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNu YXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7Ci0JCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQlQdXNoQWN0aXZlU25hcHNob3Qoc25hcHNob3Qp OwogCX0KIAogCS8qCkBAIC0yNDc1LDcgKzI0ODgsNyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChC cmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiAJewogCQlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNo b3QoKTsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9 IEludmFsaWRTbmFwc2hvdCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lz dGVyU25hcHNob3Qoc25hcHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwog CQlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0yNTAxLDcgKzI1MTQsOCBAQCBfYnJpbl9iZWdpbl9w YXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRp b24gaW5kZXgsCiAKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShoZWFwLAogCQkJCQkJ CQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCi0JCQkJCQkJ CSAgc25hcHNob3QpOworCQkJCQkJCQkgIHNuYXBzaG90LAorCQkJCQkJCQkgIHJlc2V0X3NuYXBz aG90KTsKIAogCS8qCiAJICogU3RvcmUgc2hhcmVkIHR1cGxlc29ydC1wcml2YXRlIHN0YXRlLCBm b3Igd2hpY2ggd2UgcmVzZXJ2ZWQgc3BhY2UuCkBAIC0yNTYzLDYgKzI1NzcsMTMgQEAgX2JyaW5f YmVnaW5fcGFyYWxsZWwoQnJpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LAogCS8qIFNhdmUgbGVhZGVyIHN0YXRlIG5vdyB0aGF0IGl0J3MgY2xl YXIgYnVpbGQgd2lsbCBiZSBwYXJhbGxlbCAqLwogCWJ1aWxkc3RhdGUtPmJzX2xlYWRlciA9IGJy aW5sZWFkZXI7CiAKKwkvKgorCSAqIEluIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCB3aXRoIHNu YXBzaG90IHJlc2V0cywgd2FpdCB1bnRpbCBhbGwKKwkgKiB3b3JrZXJzIGltcG9ydGVkIGluaXRp YWwgc25hcHNob3QuCisJICovCisJaWYgKHJlc2V0X3NuYXBzaG90KQorCQlXYWl0Rm9yUGFyYWxs ZWxXb3JrZXJzVG9BdHRhY2gocGN4dCwgdHJ1ZSk7CisKIAkvKiBKb2luIGhlYXAgc2NhbiBvdXJz ZWx2ZXMgKi8KIAlpZiAobGVhZGVycGFydGljaXBhdGVzKQogCQlfYnJpbl9sZWFkZXJfcGFydGlj aXBhdGVfYXNfd29ya2VyKGJ1aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTI1NzEsOSArMjU5 MiwxMyBAQCBfYnJpbl9iZWdpbl9wYXJhbGxlbChCcmluQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwg UmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJICogQ2FsbGVyIG5lZWRzIHRvIHdhaXQg Zm9yIGFsbCBsYXVuY2hlZCB3b3JrZXJzIHdoZW4gd2UgcmV0dXJuLiAgTWFrZQogCSAqIHN1cmUg dGhhdCB0aGUgZmFpbHVyZS10by1zdGFydCBjYXNlIHdpbGwgbm90IGhhbmcgZm9yZXZlci4KIAkg Ki8KLQlXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2gocGN4dCk7CisJaWYgKCFyZXNldF9z bmFwc2hvdCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIGZhbHNlKTsK IAlpZiAobmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwor CisJSW52YWxpZGF0ZUNhdGFsb2dTbmFwc2hvdCgpOworCUFzc2VydCghcmVzZXRfc25hcHNob3Qg fHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogfQogCiAvKgpAQCAtMjU5 NCw4ICsyNjE5LDcgQEAgX2JyaW5fZW5kX3BhcmFsbGVsKEJyaW5MZWFkZXIgKmJyaW5sZWFkZXIs IEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAlmb3IgKGkgPSAwOyBpIDwgYnJpbmxlYWRlci0+cGN4 dC0+bndvcmtlcnNfbGF1bmNoZWQ7IGkrKykKIAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmJy aW5sZWFkZXItPmJ1ZmZlcnVzYWdlW2ldLCAmYnJpbmxlYWRlci0+d2FsdXNhZ2VbaV0pOwogCi0J LyogRnJlZSBsYXN0IHJlZmVyZW5jZSB0byBNVkNDIHNuYXBzaG90LCBpZiBvbmUgd2FzIHVzZWQg Ki8KLQlpZiAoSXNNVkNDU25hcHNob3QoYnJpbmxlYWRlci0+c25hcHNob3QpKQorCWlmIChicmlu bGVhZGVyLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3QgJiYgSXNNVkNDU25hcHNob3QoYnJp bmxlYWRlci0+c25hcHNob3QpKQogCQlVbnJlZ2lzdGVyU25hcHNob3QoYnJpbmxlYWRlci0+c25h cHNob3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQoYnJpbmxlYWRlci0+cGN4dCk7CiAJRXhp dFBhcmFsbGVsTW9kZSgpOwpAQCAtMjc5Niw3ICsyODIwLDcgQEAgX2JyaW5fcGFyYWxsZWxfbWVy Z2UoQnJpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgogICogUmV0dXJucyBzaXplIG9mIHNoYXJl ZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9yIGEgcGFyYWxsZWwKLSAqIGJyaW4g aW5kZXggYnVpbGQgYmFzZWQgb24gdGhlIHNuYXBzaG90IGl0cyBwYXJhbGxlbCBzY2FuIHdpbGwg dXNlLgorICogYnJpbiBpbmRleCBidWlsZC4KICAqLwogc3RhdGljIFNpemUKIF9icmluX3BhcmFs bGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFwc2hvdCBzbmFwc2hvdCkKQEAg LTI4NDUsNiArMjg2OSw3IEBAIF9icmluX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKEJyaW5CdWls ZFN0YXRlICpzdGF0ZSwKIHsKIAlTb3J0Q29vcmRpbmF0ZSBjb29yZGluYXRlOwogCVRhYmxlU2Nh bkRlc2Mgc2NhbjsKKwlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAJZG91YmxlCQlyZWx0 dXBsZXM7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZvOwogCkBAIC0yODYxLDEzICsyODg2LDE4IEBA IF9icmluX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKEJyaW5CdWlsZFN0YXRlICpzdGF0ZSwKIAkv KiBKb2luIHBhcmFsbGVsIHNjYW4gKi8KIAlpbmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhpbmRl eCk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJyZW50 OworCXBzY2FuID0gUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKTsK IAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBhcmFs bGVsVGFibGVTY2FuRnJvbUJyaW5TaGFyZWQoYnJpbnNoYXJlZCksCisJCQkJCQkJCQlwc2NhbiwK IAkJCQkJCQkJCVNPX05PTkUpOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2Nh bihoZWFwLCBpbmRleCwgaW5kZXhJbmZvLCB0cnVlLCB0cnVlLAogCQkJCQkJCQkJICAgYnJpbmJ1 aWxkQ2FsbGJhY2tQYXJhbGxlbCwgc3RhdGUsIHNjYW4pOworCUludmFsaWRhdGVDYXRhbG9nU25h cHNob3QoKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUG9wQWN0aXZlU25h cHNob3QoKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOwogCiAJLyogaW5zZXJ0IHRoZSBsYXN0IGl0ZW0g Ki8KIAlmb3JtX2FuZF9zcGlsbF90dXBsZShzdGF0ZSk7CkBAIC0yODkwLDYgKzI5MjAsOSBAQCBf YnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAqc3RhdGUsCiAJQ29u ZGl0aW9uVmFyaWFibGVTaWduYWwoJmJyaW5zaGFyZWQtPndvcmtlcnNkb25lY3YpOwogCiAJdHVw bGVzb3J0X2VuZChzdGF0ZS0+YnNfc29ydHN0YXRlKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVz ZXRfc25hcHNob3QgfHwgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCWlm IChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKIH0KIAogLyoKQEAgLTI5NjYsNyArMjk5OSw2IEBAIF9icmlu X3BhcmFsbGVsX2J1aWxkX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCiAJ X2JyaW5fcGFyYWxsZWxfc2Nhbl9hbmRfYnVpbGQoYnVpbGRzdGF0ZSwgYnJpbnNoYXJlZCwgc2hh cmVkc29ydCwKIAkJCQkJCQkJICBoZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOwot CiAJLyogUmVwb3J0IFdBTC9idWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAq LwogCWJ1ZmZlcnVzYWdlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVS X1VTQUdFLCBmYWxzZSk7CiAJd2FsdXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVM X0tFWV9XQUxfVVNBR0UsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9n aW4vZ2luaW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5jCmluZGV4 IDRkZjIxNmEyNjhiLi42ZDFjMmNlMWMyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2dpbi9naW5pbnNlcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2VydC5j CkBAIC04MDgsNiArODA4LDcgQEAgZ2luYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogCiAJcmVzdWx0LT5oZWFwX3R1cGxlcyA9IHJlbHR1 cGxlczsKIAlyZXN1bHQtPmluZGV4X3R1cGxlcyA9IGJ1aWxkc3RhdGUuaW5kdHVwbGVzOworCUFz c2VydCghSW5kZXhCdWlsZFJlc2V0c1NuYXBzaG90cyhpbmRleEluZm8pIHx8ICFUcmFuc2FjdGlv bklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CkBAIC05NTYs NiArOTU3LDcgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAlCdWZmZXJVc2FnZSAqYnVmZmVydXNh Z2U7CiAJYm9vbAkJbGVhZGVycGFydGljaXBhdGVzID0gdHJ1ZTsKIAlib29sCQluZWVkX3BvcF9h Y3RpdmVfc25hcHNob3QgPSB0cnVlOworCWJvb2wJCXJlc2V0X3NuYXBzaG90OwogCWludAkJCXF1 ZXJ5bGVuOwogCiAjaWZkZWYgRElTQUJMRV9MRUFERVJfUEFSVElDSVBBVElPTgpAQCAtOTcyLDEy ICs5NzQsMTYgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5CdWlsZFN0YXRlICpidWlsZHN0YXRl LCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMg PSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKKwlyZXNldF9z bmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpOwor CiAJLyoKIAkgKiBQcmVwYXJlIGZvciBzY2FuIG9mIHRoZSBiYXNlIHJlbGF0aW9uLiAgSW4gYSBu b3JtYWwgaW5kZXggYnVpbGQsIHdlIHVzZQogCSAqIFNuYXBzaG90QW55IGJlY2F1c2Ugd2UgbXVz dCByZXRyaWV2ZSBhbGwgdHVwbGVzIGFuZCBkbyBvdXIgb3duIHRpbWUKIAkgKiBxdWFsIGNoZWNr cyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VOVExZX0RFQUQgdHVwbGVzKS4gIEluIGEK LQkgKiBjb25jdXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFu ZCBpbmRleCB3aGF0ZXZlcidzCi0JICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdC4KKwkgKiBjb25j dXJyZW50IGJ1aWxkLCB3ZSB0YWtlIGEgcmVndWxhciBNVkNDIHNuYXBzaG90IGFuZCBwdXNoIGl0 IGFzIGFjdGl2ZS4KKwkgKiBMYXRlciB3ZSBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5n IHRvIHRoYXQgc25hcHNob3Qgd2hpbGUgdGhhdAorCSAqIHNuYXBzaG90IG1heSBiZSByZXNldCBw ZXJpb2RpY2FsbHkgKGluIG5vbi14YWN0LXNuYXBzaG90IGlzb2xhdGlvbgorCSAqIG1vZGVzKSB0 byBhbGxvdyB0aGUgeG1pbiBob3Jpem9uIHRvIGFkdmFuY2UuCiAJICovCiAJaWYgKCFpc2NvbmN1 cnJlbnQpCiAJewpAQCAtOTg1LDEwICs5OTEsMTUgQEAgX2dpbl9iZWdpbl9wYXJhbGxlbChHaW5C dWlsZFN0YXRlICpidWlsZHN0YXRlLCBSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAkJ c25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3BfYWN0aXZlX3NuYXBzaG90ID0gZmFs c2U7CiAJfQorCWVsc2UgaWYgKHJlc2V0X3NuYXBzaG90KQorCXsKKwkJc25hcHNob3QgPSBJbnZh bGlkU25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90 KCkpOworCX0KIAllbHNlCiAJewogCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0VHJh bnNhY3Rpb25TbmFwc2hvdCgpKTsKLQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9u U25hcHNob3QoKSk7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAJfQogCiAJLyoK QEAgLTEwMzQsNyArMTA0NSw3IEBAIF9naW5fYmVnaW5fcGFyYWxsZWwoR2luQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJewogCQlpZiAobmVl ZF9wb3BfYWN0aXZlX3NuYXBzaG90KQogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKLQkJaWYgKElz TVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hv dCAmJiBJc01WQ0NTbmFwc2hvdChzbmFwc2hvdCkpCiAJCQlVbnJlZ2lzdGVyU25hcHNob3Qoc25h cHNob3QpOwogCQlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHBjeHQpOwogCQlFeGl0UGFyYWxsZWxN b2RlKCk7CkBAIC0xMDU5LDcgKzEwNzAsOCBAQCBfZ2luX2JlZ2luX3BhcmFsbGVsKEdpbkJ1aWxk U3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogCiAJdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoaGVhcCwKIAkJCQkJCQkJICBQYXJhbGxlbFRhYmxl U2NhbkZyb21HaW5CdWlsZFNoYXJlZChnaW5zaGFyZWQpLAotCQkJCQkJCQkgIHNuYXBzaG90KTsK KwkJCQkJCQkJICBzbmFwc2hvdCwKKwkJCQkJCQkJICByZXNldF9zbmFwc2hvdCk7CiAKIAkvKgog CSAqIFN0b3JlIHNoYXJlZCB0dXBsZXNvcnQtcHJpdmF0ZSBzdGF0ZSwgZm9yIHdoaWNoIHdlIHJl c2VydmVkIHNwYWNlLgpAQCAtMTExNyw2ICsxMTI5LDEzIEBAIF9naW5fYmVnaW5fcGFyYWxsZWwo R2luQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBjbGVhciBidWlsZCB3aWxsIGJl IHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnNfbGVhZGVyID0gZ2lubGVhZGVyOwogCisJLyoK KwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVpbGQgd2l0aCBzbmFwc2hvdCByZXNldHMsIHdh aXQgdW50aWwgYWxsCisJICogd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAq LworCWlmIChyZXNldF9zbmFwc2hvdCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNo KHBjeHQsIHRydWUpOworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxl YWRlcnBhcnRpY2lwYXRlcykKIAkJX2dpbl9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2VyKGJ1 aWxkc3RhdGUsIGhlYXAsIGluZGV4KTsKQEAgLTExMjUsOSArMTE0NCwxMiBAQCBfZ2luX2JlZ2lu X3BhcmFsbGVsKEdpbkJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LAogCSAqIENhbGxlciBuZWVkcyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29y a2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UKIAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8t c3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZvcmV2ZXIuCiAJICovCi0JV2FpdEZvclBhcmFsbGVs V29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlmICghcmVzZXRfc25hcHNob3QpCisJCVdhaXRGb3JQ YXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2 ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwlJbnZhbGlkYXRlQ2F0YWxvZ1Nu YXBzaG90KCk7CisJQXNzZXJ0KCFyZXNldF9zbmFwc2hvdCB8fCAhVHJhbnNhY3Rpb25JZElzVmFs aWQoTXlQcm9jLT54bWluKSk7CiB9CiAKIC8qCkBAIC0xMTQ4LDggKzExNzAsNyBAQCBfZ2luX2Vu ZF9wYXJhbGxlbChHaW5MZWFkZXIgKmdpbmxlYWRlciwgR2luQnVpbGRTdGF0ZSAqc3RhdGUpCiAJ Zm9yIChpID0gMDsgaSA8IGdpbmxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7IGkrKykK IAkJSW5zdHJBY2N1bVBhcmFsbGVsUXVlcnkoJmdpbmxlYWRlci0+YnVmZmVydXNhZ2VbaV0sICZn aW5sZWFkZXItPndhbHVzYWdlW2ldKTsKIAotCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8gTVZD QyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGdpbmxl YWRlci0+c25hcHNob3QpKQorCWlmIChnaW5sZWFkZXItPnNuYXBzaG90ICE9IEludmFsaWRTbmFw c2hvdCAmJiBJc01WQ0NTbmFwc2hvdChnaW5sZWFkZXItPnNuYXBzaG90KSkKIAkJVW5yZWdpc3Rl clNuYXBzaG90KGdpbmxlYWRlci0+c25hcHNob3QpOwogCURlc3Ryb3lQYXJhbGxlbENvbnRleHQo Z2lubGVhZGVyLT5wY3h0KTsKIAlFeGl0UGFyYWxsZWxNb2RlKCk7CkBAIC0xODI1LDcgKzE4NDYs NyBAQCBfZ2luX3BhcmFsbGVsX21lcmdlKEdpbkJ1aWxkU3RhdGUgKnN0YXRlKQogCiAvKgogICog UmV0dXJucyBzaXplIG9mIHNoYXJlZCBtZW1vcnkgcmVxdWlyZWQgdG8gc3RvcmUgc3RhdGUgZm9y IGEgcGFyYWxsZWwKLSAqIGdpbiBpbmRleCBidWlsZCBiYXNlZCBvbiB0aGUgc25hcHNob3QgaXRz IHBhcmFsbGVsIHNjYW4gd2lsbCB1c2UuCisgKiBnaW4gaW5kZXggYnVpbGQuCiAgKi8KIHN0YXRp YyBTaXplCiBfZ2luX3BhcmFsbGVsX2VzdGltYXRlX3NoYXJlZChSZWxhdGlvbiBoZWFwLCBTbmFw c2hvdCBzbmFwc2hvdCkKQEAgLTIwNTcsNiArMjA3OCw3IEBAIF9naW5fcGFyYWxsZWxfc2Nhbl9h bmRfYnVpbGQoR2luQnVpbGRTdGF0ZSAqc3RhdGUsCiB7CiAJU29ydENvb3JkaW5hdGUgY29vcmRp bmF0ZTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CisJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2Fu OwogCWRvdWJsZQkJcmVsdHVwbGVzOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIApAQCAtMjA4 NywxMyArMjEwOSwxOCBAQCBfZ2luX3BhcmFsbGVsX3NjYW5fYW5kX2J1aWxkKEdpbkJ1aWxkU3Rh dGUgKnN0YXRlLAogCS8qIEpvaW4gcGFyYWxsZWwgc2NhbiAqLwogCWluZGV4SW5mbyA9IEJ1aWxk SW5kZXhJbmZvKGluZGV4KTsKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQt PmlzY29uY3VycmVudDsKKwlwc2NhbiA9IFBhcmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hh cmVkKGdpbnNoYXJlZCk7CiAKIAlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGhlYXAs Ci0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21HaW5CdWlsZFNoYXJlZChnaW5zaGFyZWQp LAorCQkJCQkJCQkJcHNjYW4sCiAJCQkJCQkJCQlTT19OT05FKTsKIAogCXJlbHR1cGxlcyA9IHRh YmxlX2luZGV4X2J1aWxkX3NjYW4oaGVhcCwgaW5kZXgsIGluZGV4SW5mbywgdHJ1ZSwgcHJvZ3Jl c3MsCiAJCQkJCQkJCQkgICBnaW5CdWlsZENhbGxiYWNrUGFyYWxsZWwsIHN0YXRlLCBzY2FuKTsK KwlJbnZhbGlkYXRlQ2F0YWxvZ1NuYXBzaG90KCk7CisJaWYgKHBzY2FuLT5waHNfcmVzZXRfc25h cHNob3QpCisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJQXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0 X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIAogCS8q IHdyaXRlIHJlbWFpbmluZyBhY2N1bXVsYXRlZCBlbnRyaWVzICovCiAJZ2luRmx1c2hCdWlsZFN0 YXRlKHN0YXRlLCBpbmRleCk7CkBAIC0yMTIzLDYgKzIxNTAsOSBAQCBfZ2luX3BhcmFsbGVsX3Nj YW5fYW5kX2J1aWxkKEdpbkJ1aWxkU3RhdGUgKnN0YXRlLAogCUNvbmRpdGlvblZhcmlhYmxlU2ln bmFsKCZnaW5zaGFyZWQtPndvcmtlcnNkb25lY3YpOwogCiAJdHVwbGVzb3J0X2VuZChzdGF0ZS0+ YnNfc29ydHN0YXRlKTsKKwlBc3NlcnQoIXBzY2FuLT5waHNfcmVzZXRfc25hcHNob3QgfHwgIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKE15UHJvYy0+eG1pbikpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0 X3NuYXBzaG90KQorCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgp KTsKIH0KIAogLyoKQEAgLTIyMTgsNyArMjI0OCw2IEBAIF9naW5fcGFyYWxsZWxfYnVpbGRfbWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAlfZ2luX3BhcmFsbGVsX3NjYW5f YW5kX2J1aWxkKCZidWlsZHN0YXRlLCBnaW5zaGFyZWQsIHNoYXJlZHNvcnQsCiAJCQkJCQkJCSBo ZWFwUmVsLCBpbmRleFJlbCwgc29ydG1lbSwgZmFsc2UpOwotCiAJLyogUmVwb3J0IFdBTC9idWZm ZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCWJ1ZmZlcnVzYWdlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfQlVGRkVSX1VTQUdFLCBmYWxzZSk7CiAJd2Fs dXNhZ2UgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9XQUxfVVNBR0UsIGZhbHNl KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IGZhZjNlMDRj NDQ5Li4xMTg0ZWQwODZmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCkBAIC0xMjEzLDcgKzEyMTMsOCBAQCBoZWFwYW1faW5kZXhfYnVpbGRfcmFuZ2Vfc2NhbihS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJICogU25hcHNob3RBbnkgYmVjYXVzZSB3ZSBtdXN0IHJl dHJpZXZlIGFsbCB0dXBsZXMgYW5kIGRvIG91ciBvd24gdGltZQogCSAqIHF1YWwgY2hlY2tzIChi ZWNhdXNlIHdlIGhhdmUgdG8gaW5kZXggUkVDRU5UTFlfREVBRCB0dXBsZXMpLiBJbiBhCiAJICog Y29uY3VycmVudCBidWlsZCwgb3IgZHVyaW5nIGJvb3RzdHJhcCwgd2UgdGFrZSBhIHJlZ3VsYXIg TVZDQyBzbmFwc2hvdAotCSAqIGFuZCBpbmRleCB3aGF0ZXZlcidzIGxpdmUgYWNjb3JkaW5nIHRv IHRoYXQuCisJICogYW5kIGluZGV4IHdoYXRldmVyJ3MgbGl2ZSBhY2NvcmRpbmcgdG8gdGhhdCB3 aGlsZSB0aGF0IHNuYXBzaG90IGlzIHJlc2V0CisJICogZXZlcnkgc28gb2Z0ZW4gKGluIHRoZSBj YXNlIG9mIG5vbi11bmlxdWUgaW5kZXgpLgogCSAqLwogCU9sZGVzdFhtaW4gPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKIApAQCAtMTIyMSw4ICsxMjIyLDYgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqIEZvciB1bmlxdWUgaW5kZXhlcyB3 ZSBuZWVkIGEgY29uc2lzdGVudCBzbmFwc2hvdCBmb3IgdGhlIHdob2xlIHNjYW4uCiAJICogUmVz ZXR0aW5nIHNuYXBzaG90cyBhbHNvIGRvZXNuJ3Qgd29yayBpbiB4YWN0LXNuYXBzaG90IGlzb2xh dGlvbiBtb2RlcywKIAkgKiBiZWNhdXNlIHRob3NlIGtlZXAgYSByZWdpc3RlcmVkIHRyYW5zYWN0 aW9uIHNuYXBzaG90IGZvciB0aGUgd2hvbGUgeGFjdC4KLQkgKiBJbiB0aGUgY2FzZSBvZiBwYXJh bGxlbCBzY2FuLCBzb21lIGFkZGl0aW9uYWwgaW5mcmFzdHJ1Y3R1cmUgaXMgcmVxdWlyZWQKLQkg KiB0byBwZXJmb3JtIGEgc2NhbiB3aXRoIFNPX1JFU0VUX1NOQVBTSE9UIHdoaWNoIGlzIG5vdCB5 ZXQgcmVhZHkuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gSW5kZXhCdWlsZFJlc2V0c1NuYXBz aG90cyhpbmRleEluZm8pICYmCiAJCQkJCSAgIWlzX3N5c3RlbV9jYXRhbG9nOyAvKiBqdXN0IGZv ciB0aGUgY2FzZSAqLwpAQCAtMTI4NCw3ICsxMjgzLDcgQEAgaGVhcGFtX2luZGV4X2J1aWxkX3Jh bmdlX3NjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQlBc3NlcnQoIUlzQm9vdHN0cmFwUHJv Y2Vzc2luZ01vZGUoKSk7CiAJCUFzc2VydChhbGxvd19zeW5jKTsKIAkJc25hcHNob3QgPSBzY2Fu LT5yc19zbmFwc2hvdDsKLQkJaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwkJaWYgKCFy ZXNldF9zbmFwc2hvdHMgJiYgSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQogCQl7CiAJCQkvKiBE b24ndCBleHBvc2UgU25hcHNob3RBbnkgdG8gU1FMIHJ1biBieSBwcmVkaWNhdGVzL2V4cHJlc3Np b25zLiAqLwogCQkJUHVzaEFjdGl2ZVNuYXBzaG90KHNuYXBzaG90KTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25i dHJlZS9uYnRzb3J0LmMKaW5kZXggOGQ4MDRkNmJjZmUuLjZiYjM2NWM5NTFkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpAQCAtMTQxOSw2ICsxNDE5LDcgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCUJ1ZmZlclVzYWdlICpidWZmZXJ1c2FnZTsKIAlib29sCQlsZWFkZXJwYXJ0aWNp cGF0ZXMgPSB0cnVlOwogCWJvb2wJCW5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCA9IHRydWU7CisJ Ym9vbAkJcmVzZXRfc25hcHNob3Q7CiAJaW50CQkJcXVlcnlsZW47CiAKICNpZmRlZiBESVNBQkxF X0xFQURFUl9QQVJUSUNJUEFUSU9OCkBAIC0xNDM2LDEyICsxNDM3LDI0IEBAIF9idF9iZWdpbl9w YXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50LCBpbnQg cmVxdWVzdCkKIAogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyBy ZXF1ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKKwkvKgorCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlx dWUgaW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0CisJICogc25hcHNob3Rz IHRvIGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gIFRoaXMgaXMgc2FmZSBzaW5j ZQorCSAqIHRoZXNlIGJ1aWxkcyBkb24ndCByZXF1aXJlIGEgY29uc2lzdGVudCB2aWV3IGFjcm9z cyB0aGUgZW50aXJlIHNjYW4uCisJICogVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZCBhIHN0YWJs ZSBzbmFwc2hvdCB0byBwcm9wZXJseSBlbmZvcmNlCisJICogdW5pcXVlbmVzcyBjb25zdHJhaW50 cy4gIElzb2xhdGlvbiBtb2RlcyB3aGVyZQorCSAqIElzb2xhdGlvblVzZXNYYWN0U25hcHNob3Qo KSBpcyB0cnVlIGFsc28gcHJldmVudCByZXNldHRpbmcgYmVjYXVzZQorCSAqIHRoZXkga2VlcCBh IHJlZ2lzdGVyZWQgdHJhbnNhY3Rpb24gc25hcHNob3QgZm9yIHRoZSB3aG9sZSB0cmFuc2FjdGlv bi4KKwkgKi8KKwlyZXNldF9zbmFwc2hvdCA9IGlzY29uY3VycmVudCAmJiAhSXNvbGF0aW9uVXNl c1hhY3RTbmFwc2hvdCgpICYmICFidHNwb29sLT5pc3VuaXF1ZTsKKwogCS8qCiAJICogUHJlcGFy ZSBmb3Igc2NhbiBvZiB0aGUgYmFzZSByZWxhdGlvbi4gIEluIGEgbm9ybWFsIGluZGV4IGJ1aWxk LCB3ZSB1c2UKIAkgKiBTbmFwc2hvdEFueSBiZWNhdXNlIHdlIG11c3QgcmV0cmlldmUgYWxsIHR1 cGxlcyBhbmQgZG8gb3VyIG93biB0aW1lCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBi dWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIn cwotCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQuCisJICogbGl2ZSBhY2NvcmRpbmcgdG8gdGhh dCwgd2hpbGUgdGhhdCBzbmFwc2hvdCBtYXkgYmUgcmVzZXQgcGVyaW9kaWNhbGx5CisJICogZm9y IG5vbi11bmlxdWUgaW5kZXhlcyBpbiBub24teGFjdC1zbmFwc2hvdCBpc29sYXRpb24gbW9kZXMu CiAJICovCiAJaWYgKCFpc2NvbmN1cnJlbnQpCiAJewpAQCAtMTQ0OSw2ICsxNDYyLDExIEBAIF9i dF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJy ZW50LCBpbnQgcmVxdWVzdCkKIAkJc25hcHNob3QgPSBTbmFwc2hvdEFueTsKIAkJbmVlZF9wb3Bf YWN0aXZlX3NuYXBzaG90ID0gZmFsc2U7CiAJfQorCWVsc2UgaWYgKHJlc2V0X3NuYXBzaG90KQor CXsKKwkJc25hcHNob3QgPSBJbnZhbGlkU25hcHNob3Q7CisJCVB1c2hBY3RpdmVTbmFwc2hvdChH ZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCX0KIAllbHNlCiAJewogCQlzbmFwc2hvdCA9IFJl Z2lzdGVyU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKQEAgLTE1MDksNyArMTUy Nyw3IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wg aXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAl7CiAJCWlmIChuZWVkX3BvcF9hY3RpdmVfc25h cHNob3QpCiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwotCQlpZiAoSXNNVkNDU25hcHNob3Qoc25h cHNob3QpKQorCQlpZiAoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBz aG90KHNuYXBzaG90KSkKIAkJCVVucmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CiAJCURlc3Ry b3lQYXJhbGxlbENvbnRleHQocGN4dCk7CiAJCUV4aXRQYXJhbGxlbE1vZGUoKTsKQEAgLTE1MzYs NyArMTU1NCw4IEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlidHNoYXJlZC0+YnJva2VuaG90Y2hh aW4gPSBmYWxzZTsKIAl0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShidHNwb29sLT5oZWFw LAogCQkJCQkJCQkgIFBhcmFsbGVsVGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKSwKLQkJ CQkJCQkJICBzbmFwc2hvdCk7CisJCQkJCQkJCSAgc25hcHNob3QsCisJCQkJCQkJCSAgcmVzZXRf c25hcHNob3QpOwogCiAJLyoKIAkgKiBTdG9yZSBzaGFyZWQgdHVwbGVzb3J0LXByaXZhdGUgc3Rh dGUsIGZvciB3aGljaCB3ZSByZXNlcnZlZCBzcGFjZS4KQEAgLTE2MTIsNiArMTYzMSwxMyBAQCBf YnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3Vy cmVudCwgaW50IHJlcXVlc3QpCiAJLyogU2F2ZSBsZWFkZXIgc3RhdGUgbm93IHRoYXQgaXQncyBj bGVhciBidWlsZCB3aWxsIGJlIHBhcmFsbGVsICovCiAJYnVpbGRzdGF0ZS0+YnRsZWFkZXIgPSBi dGxlYWRlcjsKIAorCS8qCisJICogSW4gdGhlIGNhc2Ugb2YgY29uY3VycmVudCBidWlsZCwgc25h cHNob3RzIGFyZSBnb2luZyB0byBiZSByZXNldCBwZXJpb2RpY2FsbHkuCisJICogV2FpdCB1bnRp bCBhbGwgd29ya2VycyBpbXBvcnRlZCBpbml0aWFsIHNuYXBzaG90LgorCSAqLworCWlmIChyZXNl dF9zbmFwc2hvdCkKKwkJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQsIHRydWUp OworCiAJLyogSm9pbiBoZWFwIHNjYW4gb3Vyc2VsdmVzICovCiAJaWYgKGxlYWRlcnBhcnRpY2lw YXRlcykKIAkJX2J0X2xlYWRlcl9wYXJ0aWNpcGF0ZV9hc193b3JrZXIoYnVpbGRzdGF0ZSk7CkBA IC0xNjIwLDkgKzE2NDYsMTMgQEAgX2J0X2JlZ2luX3BhcmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVp bGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCByZXF1ZXN0KQogCSAqIENhbGxlciBuZWVk cyB0byB3YWl0IGZvciBhbGwgbGF1bmNoZWQgd29ya2VycyB3aGVuIHdlIHJldHVybi4gIE1ha2UK IAkgKiBzdXJlIHRoYXQgdGhlIGZhaWx1cmUtdG8tc3RhcnQgY2FzZSB3aWxsIG5vdCBoYW5nIGZv cmV2ZXIuCiAJICovCi0JV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvQXR0YWNoKHBjeHQpOworCWlm ICghcmVzZXRfc25hcHNob3QpCisJCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChwY3h0 LCBmYWxzZSk7CiAJaWYgKG5lZWRfcG9wX2FjdGl2ZV9zbmFwc2hvdCkKIAkJUG9wQWN0aXZlU25h cHNob3QoKTsKKworCUludmFsaWRhdGVDYXRhbG9nU25hcHNob3QoKTsKKwlBc3NlcnQoIXJlc2V0 X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnhtaW4pKTsKIH0KIAog LyoKQEAgLTE2NDQsNyArMTY3NCw3IEBAIF9idF9lbmRfcGFyYWxsZWwoQlRMZWFkZXIgKmJ0bGVh ZGVyKQogCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmYnRsZWFkZXItPmJ1ZmZlcnVzYWdlW2ld LCAmYnRsZWFkZXItPndhbHVzYWdlW2ldKTsKIAogCS8qIEZyZWUgbGFzdCByZWZlcmVuY2UgdG8g TVZDQyBzbmFwc2hvdCwgaWYgb25lIHdhcyB1c2VkICovCi0JaWYgKElzTVZDQ1NuYXBzaG90KGJ0 bGVhZGVyLT5zbmFwc2hvdCkpCisJaWYgKGJ0bGVhZGVyLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25h cHNob3QgJiYgSXNNVkNDU25hcHNob3QoYnRsZWFkZXItPnNuYXBzaG90KSkKIAkJVW5yZWdpc3Rl clNuYXBzaG90KGJ0bGVhZGVyLT5zbmFwc2hvdCk7CiAJRGVzdHJveVBhcmFsbGVsQ29udGV4dChi dGxlYWRlci0+cGN4dCk7CiAJRXhpdFBhcmFsbGVsTW9kZSgpOwpAQCAtMTg5NCw2ICsxOTI0LDcg QEAgX2J0X3BhcmFsbGVsX3NjYW5fYW5kX3NvcnQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAq YnRzcG9vbDIsCiAJU29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZTsKIAlCVEJ1aWxkU3RhdGUgYnVp bGRzdGF0ZTsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CisJUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBz Y2FuOwogCWRvdWJsZQkJcmVsdHVwbGVzOwogCUluZGV4SW5mbyAgKmluZGV4SW5mbzsKIApAQCAt MTk0OCwxMiArMTk3OSwxNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpi dHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkvKiBKb2luIHBhcmFsbGVsIHNjYW4gKi8KIAlp bmRleEluZm8gPSBCdWlsZEluZGV4SW5mbyhidHNwb29sLT5pbmRleCk7CiAJaW5kZXhJbmZvLT5p aV9Db25jdXJyZW50ID0gYnRzaGFyZWQtPmlzY29uY3VycmVudDsKKwlwc2NhbiA9IFBhcmFsbGVs VGFibGVTY2FuRnJvbUJUU2hhcmVkKGJ0c2hhcmVkKTsKIAlzY2FuID0gdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsKGJ0c3Bvb2wtPmhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21C VFNoYXJlZChidHNoYXJlZCksCisJCQkJCQkJCQlwc2NhbiwKIAkJCQkJCQkJCVNPX05PTkUpOwog CXJlbHR1cGxlcyA9IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oYnRzcG9vbC0+aGVhcCwgYnRzcG9v bC0+aW5kZXgsIGluZGV4SW5mbywKIAkJCQkJCQkJCSAgIHRydWUsIHByb2dyZXNzLCBfYnRfYnVp bGRfY2FsbGJhY2ssCiAJCQkJCQkJCQkgICAmYnVpbGRzdGF0ZSwgc2Nhbik7CisJSW52YWxpZGF0 ZUNhdGFsb2dTbmFwc2hvdCgpOworCWlmIChwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90KQorCQlQ b3BBY3RpdmVTbmFwc2hvdCgpOworCUFzc2VydCghcHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCB8 fCAhVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CiAKIAkvKiBFeGVjdXRlIHRo aXMgd29ya2VyJ3MgcGFydCBvZiB0aGUgc29ydCAqLwogCWlmIChwcm9ncmVzcykKQEAgLTE5ODks NCArMjAyNSw3IEBAIF9idF9wYXJhbGxlbF9zY2FuX2FuZF9zb3J0KEJUU3Bvb2wgKmJ0c3Bvb2ws IEJUU3Bvb2wgKmJ0c3Bvb2wyLAogCXR1cGxlc29ydF9lbmQoYnRzcG9vbC0+c29ydHN0YXRlKTsK IAlpZiAoYnRzcG9vbDIpCiAJCXR1cGxlc29ydF9lbmQoYnRzcG9vbDItPnNvcnRzdGF0ZSk7CisJ QXNzZXJ0KCFwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90IHx8ICFUcmFuc2FjdGlvbklkSXNWYWxp ZChNeVByb2MtPnhtaW4pKTsKKwlpZiAocHNjYW4tPnBoc19yZXNldF9zbmFwc2hvdCkKKwkJUHVz aEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RhYmxlL3RhYmxlYW0uYwppbmRleCA2OGZmMDk2NmYxYy4uY2YzMzdlZGE1ZjYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtMTMyLDEwICsxMzIsMTAgQEAgdGFibGVfcGFyYWxs ZWxzY2FuX2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpCiB7CiAJU2l6 ZQkJc3ogPSAwOwogCi0JaWYgKElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKKwlpZiAoc25hcHNo b3QgIT0gSW52YWxpZFNuYXBzaG90ICYmIElzTVZDQ1NuYXBzaG90KHNuYXBzaG90KSkKIAkJc3og PSBhZGRfc2l6ZShzeiwgRXN0aW1hdGVTbmFwc2hvdFNwYWNlKHNuYXBzaG90KSk7CiAJZWxzZQot CQlBc3NlcnQoc25hcHNob3QgPT0gU25hcHNob3RBbnkpOworCQlBc3NlcnQoc25hcHNob3QgPT0g U25hcHNob3RBbnkgfHwgc25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KTsKIAogCXN6ID0gYWRk X3NpemUoc3osIHJlbC0+cmRfdGFibGVhbS0+cGFyYWxsZWxzY2FuX2VzdGltYXRlKHJlbCkpOwog CkBAIC0xNDQsMjEgKzE0NCwzNiBAQCB0YWJsZV9wYXJhbGxlbHNjYW5fZXN0aW1hdGUoUmVsYXRp b24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCkKIAogdm9pZAogdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUoUmVsYXRpb24gcmVsLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJ CQkJICBTbmFwc2hvdCBzbmFwc2hvdCkKKwkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LCBib29s IHJlc2V0X3NuYXBzaG90KQogewogCVNpemUJCXNuYXBzaG90X29mZiA9IHJlbC0+cmRfdGFibGVh bS0+cGFyYWxsZWxzY2FuX2luaXRpYWxpemUocmVsLCBwc2Nhbik7CiAKIAlwc2Nhbi0+cGhzX3Nu YXBzaG90X29mZiA9IHNuYXBzaG90X29mZjsKIAotCWlmIChJc01WQ0NTbmFwc2hvdChzbmFwc2hv dCkpCisJLyoKKwkgKiBJbml0aWFsaXplIHBhcmFsbGVsIHNjYW4gZGVzY3JpcHRpb24uIEZvciBu b3JtYWwgc2NhbnMgd2l0aCBhIHJlZ3VsYXIKKwkgKiBNVkNDIHNuYXBzaG90LCBzZXJpYWxpemUg dGhlIHNuYXBzaG90IGluZm8uIEZvciBzY2FucyB0aGF0IHVzZSBwZXJpb2RpYworCSAqIHNuYXBz aG90IHJlc2V0cywgbWFyayB0aGUgc2NhbiBhY2NvcmRpbmdseS4KKwkgKi8KKwlpZiAocmVzZXRf c25hcHNob3QpCisJeworCQlBc3NlcnQoc25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KTsKKwkJ cHNjYW4tPnBoc19zbmFwc2hvdF9hbnkgPSBmYWxzZTsKKwkJcHNjYW4tPnBoc19yZXNldF9zbmFw c2hvdCA9IHRydWU7CisJCUlOSkVDVElPTl9QT0lOVCgidGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUiLCBOVUxMKTsKKwl9CisJZWxzZSBpZiAoSXNNVkNDU25hcHNob3Qoc25hcHNob3QpKQog CXsKIAkJU2VyaWFsaXplU25hcHNob3Qoc25hcHNob3QsIChjaGFyICopIHBzY2FuICsgcHNjYW4t PnBoc19zbmFwc2hvdF9vZmYpOwogCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IGZhbHNlOwor CQlwc2Nhbi0+cGhzX3Jlc2V0X3NuYXBzaG90ID0gZmFsc2U7CiAJfQogCWVsc2UKIAl7CiAJCUFz c2VydChzbmFwc2hvdCA9PSBTbmFwc2hvdEFueSk7CisJCUFzc2VydCghcmVzZXRfc25hcHNob3Qp OwogCQlwc2Nhbi0+cGhzX3NuYXBzaG90X2FueSA9IHRydWU7CisJCXBzY2FuLT5waHNfcmVzZXRf c25hcHNob3QgPSBmYWxzZTsKIAl9CiB9CiAKQEAgLTE3Miw3ICsxODcsMTkgQEAgdGFibGVfYmVn aW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sCiAKIAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JFcXVhbHMocmVsYXRpb24tPnJkX2xvY2F0 b3IsIHBzY2FuLT5waHNfbG9jYXRvcikpOwogCi0JaWYgKCFwc2Nhbi0+cGhzX3NuYXBzaG90X2Fu eSkKKwkvKgorCSAqIEZvciBzY2FucyB0aGF0CisJICogdXNlIHBlcmlvZGljIHNuYXBzaG90IHJl c2V0cywgbWFyayB0aGUgc2NhbiBhY2NvcmRpbmdseSBhbmQgdXNlIHRoZSBhY3RpdmUKKwkgKiBz bmFwc2hvdCBhcyB0aGUgaW5pdGlhbCBzdGF0ZS4KKwkgKi8KKwlpZiAocHNjYW4tPnBoc19yZXNl dF9zbmFwc2hvdCkKKwl7CisJCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKwkJaW50ZXJu YWxfZmxhZ3MgfD0gU09fUkVTRVRfU05BUFNIT1Q7CisJCS8qIFN0YXJ0IHdpdGggY3VycmVudCBh Y3RpdmUgc25hcHNob3QuICovCisJCXNuYXBzaG90ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKKwl9 CisJZWxzZSBpZiAoIXBzY2FuLT5waHNfc25hcHNob3RfYW55KQogCXsKIAkJLyogU25hcHNob3Qg d2FzIHNlcmlhbGl6ZWQgLS0gcmVzdG9yZSBpdCAqLwogCQlzbmFwc2hvdCA9IFJlc3RvcmVTbmFw c2hvdCgoY2hhciAqKSBwc2NhbiArIHBzY2FuLT5waHNfc25hcHNob3Rfb2ZmKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCmluZGV4IDg5ZTlkMjI0ZWVjLi5jZmY1MDkwOWVhMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCkBAIC03OSw2ICs3OSw3IEBACiAj ZGVmaW5lIFBBUkFMTEVMX0tFWV9SRUxNQVBQRVJfU1RBVEUJCVVJTlQ2NENPTlNUKDB4RkZGRkZG RkZGRkZGMDAwRCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX1VOQ09NTUlUVEVERU5VTVMJCVVJTlQ2 NENPTlNUKDB4RkZGRkZGRkZGRkZGMDAwRSkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0NMSUVOVENP Tk5JTkZPCQkJVUlOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkYwMDBGKQorI2RlZmluZSBQQVJBTExF TF9LRVlfU05BUFNIT1RfUkVTVE9SRUQJCVVJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZGMDAxMCkK IAogLyogRml4ZWQtc2l6ZSBwYXJhbGxlbCBzdGF0ZS4gKi8KIHR5cGVkZWYgc3RydWN0IEZpeGVk UGFyYWxsZWxTdGF0ZQpAQCAtMzA4LDYgKzMwOSwxMCBAQCBJbml0aWFsaXplUGFyYWxsZWxEU00o UGFyYWxsZWxDb250ZXh0ICpwY3h0KQogCQkJCQkJCQkJCXBjeHQtPm53b3JrZXJzKSk7CiAJCXNo bV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKIAorCQlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIG11bF9zaXplKHNpemVvZihib29sKSwKKwkJ CQkJCQkgICBwY3h0LT5ud29ya2VycykpOworCQlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQt PmVzdGltYXRvciwgMSk7CisKIAkJLyogRXN0aW1hdGUgaG93IG11Y2ggd2UnbGwgbmVlZCBmb3Ig dGhlIGVudHJ5cG9pbnQgaW5mby4gKi8KIAkJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ ZXN0aW1hdG9yLCBzdHJsZW4ocGN4dC0+bGlicmFyeV9uYW1lKSArCiAJCQkJCQkJICAgc3RybGVu KHBjeHQtPmZ1bmN0aW9uX25hbWUpICsgMik7CkBAIC0zNzksNiArMzg0LDcgQEAgSW5pdGlhbGl6 ZVBhcmFsbGVsRFNNKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJY2hhcgkgICAqZW50cnlwb2lu dHN0YXRlOwogCQljaGFyCSAgICp1bmNvbW1pdHRlZGVudW1zc3BhY2U7CiAJCWNoYXIJICAgKmNs aWVudGNvbm5pbmZvc3BhY2U7CisJCWJvb2wJICAgKnNuYXBzaG90X3NldF9mbGFnX3NwYWNlOwog CQlTaXplCQlsbmFtZWxlbjsKIAogCQkvKiBTZXJpYWxpemUgc2hhcmVkIGxpYnJhcmllcyB3ZSBo YXZlIGxvYWRlZC4gKi8KQEAgLTQ5NCw2ICs1MDAsMTkgQEAgSW5pdGlhbGl6ZVBhcmFsbGVsRFNN KFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJc3RyY3B5KGVudHJ5cG9pbnRzdGF0ZSwgcGN4dC0+ bGlicmFyeV9uYW1lKTsKIAkJc3RyY3B5KGVudHJ5cG9pbnRzdGF0ZSArIGxuYW1lbGVuICsgMSwg cGN4dC0+ZnVuY3Rpb25fbmFtZSk7CiAJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxM RUxfS0VZX0VOVFJZUE9JTlQsIGVudHJ5cG9pbnRzdGF0ZSk7CisKKwkJLyoKKwkJICogRXN0YWJs aXNoIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSB0byBwYXNzIGluZm9ybWF0aW9uIGFib3V0IGltcG9y dGluZworCQkgKiBvZiBzbmFwc2hvdC4KKwkJICovCisJCXNuYXBzaG90X3NldF9mbGFnX3NwYWNl ID0KKwkJCQlzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbXVsX3NpemUoc2l6ZW9mKGJvb2wp LCBwY3h0LT5ud29ya2VycykpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsr aSkKKwkJeworCQkJcGN4dC0+d29ya2VyW2ldLnNuYXBzaG90X3Jlc3RvcmVkID0gJnNuYXBzaG90 X3NldF9mbGFnX3NwYWNlW2ldOworCQkJKnBjeHQtPndvcmtlcltpXS5zbmFwc2hvdF9yZXN0b3Jl ZCA9IGZhbHNlOworCQl9CisJCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfS0VZ X1NOQVBTSE9UX1JFU1RPUkVELCBzbmFwc2hvdF9zZXRfZmxhZ19zcGFjZSk7CiAJfQogCiAJLyog VXBkYXRlIG53b3JrZXJzX3RvX2xhdW5jaCwgaW4gY2FzZSB3ZSBjaGFuZ2VkIG53b3JrZXJzIGFi b3ZlLiAqLwpAQCAtNjcwLDYgKzY4OSwxMCBAQCBMYXVuY2hQYXJhbGxlbFdvcmtlcnMoUGFyYWxs ZWxDb250ZXh0ICpwY3h0KQogICogV2FpdCBmb3IgYWxsIHdvcmtlcnMgdG8gYXR0YWNoIHRvIHRo ZWlyIGVycm9yIHF1ZXVlcywgYW5kIHRocm93IGFuIGVycm9yIGlmCiAgKiBhbnkgd29ya2VyIGZh aWxzIHRvIGRvIHRoaXMuCiAgKgorICogd2FpdF9mb3Jfc25hcHNob3Q6IHRyYWNrIHdoZXRoZXIg ZWFjaCBwYXJhbGxlbCB3b3JrZXIgaGFzIHN1Y2Nlc3NmdWxseSByZXN0b3JlZAorICogaXRzIHNu YXBzaG90LiBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBlcmlvZGljIHNuYXBzaG90IHJlc2V0 cyB0byBlbnN1cmUgYWxsCisgKiB3b3JrZXJzIGhhdmUgYSB2YWxpZCBpbml0aWFsIHNuYXBzaG90 IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHNjYW4uCisgKgogICogQ2FsbGVycyBjYW4gYXNz dW1lIHRoYXQgaWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlbiB0aGUK ICAqIG51bWJlciBvZiB3b3JrZXJzIGdpdmVuIGJ5IHBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIGhh dmUgaW5pdGlhbGl6ZWQgYW5kCiAgKiBhdHRhY2hlZCB0byB0aGVpciBlcnJvciBxdWV1ZXMuICBX aGV0aGVyIG9yIG5vdCB0aGVzZSB3b3JrZXJzIGFyZSBndWFyYW50ZWVkCkBAIC02OTksNyArNzIy LDcgQEAgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKICAqIGNh bGwgdGhpcyBmdW5jdGlvbiBhdCBhbGwuCiAgKi8KIHZvaWQKLVdhaXRGb3JQYXJhbGxlbFdvcmtl cnNUb0F0dGFjaChQYXJhbGxlbENvbnRleHQgKnBjeHQpCitXYWl0Rm9yUGFyYWxsZWxXb3JrZXJz VG9BdHRhY2goUGFyYWxsZWxDb250ZXh0ICpwY3h0LCBib29sIHdhaXRfZm9yX3NuYXBzaG90KQog ewogCWludAkJCWk7CiAKQEAgLTc0Myw5ICs3NjYsMjMgQEAgV2FpdEZvclBhcmFsbGVsV29ya2Vy c1RvQXR0YWNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCkKIAkJCQltcSA9IHNobV9tcV9nZXRfcXVl dWUocGN4dC0+d29ya2VyW2ldLmVycm9yX21xaCk7CiAJCQkJaWYgKHNobV9tcV9nZXRfc2VuZGVy KG1xKSAhPSBOVUxMKQogCQkJCXsKLQkJCQkJLyogWWVzLCBzbyBpdCBpcyBrbm93biB0byBiZSBh dHRhY2hlZC4gKi8KLQkJCQkJcGN4dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7 Ci0JCQkJCSsrcGN4dC0+bmtub3duX2F0dGFjaGVkX3dvcmtlcnM7CisJCQkJCWlmICghd2FpdF9m b3Jfc25hcHNob3QgfHwgKnBjeHQtPndvcmtlcltpXS5zbmFwc2hvdF9yZXN0b3JlZCkKKwkJCQkJ eworCQkJCQkJLyogV29ya2VyIGlzIGtub3duIHRvIGJlIGF0dGFjaGVkLiAqLworCQkJCQkJcGN4 dC0+a25vd25fYXR0YWNoZWRfd29ya2Vyc1tpXSA9IHRydWU7CisJCQkJCQkrK3BjeHQtPm5rbm93 bl9hdHRhY2hlZF93b3JrZXJzOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJLyoK KwkJCQkJCSAqIFdvcmtlciBhdHRhY2hlZCBidXQgaGFzbid0IHJlc3RvcmVkIGl0cyBzbmFwc2hv dCB5ZXQuCisJCQkJCQkgKi8KKwkJCQkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkJ CQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJ CQkJCQkJCSAgIDEwLCBXQUlUX0VWRU5UX0JHV09SS0VSX1NUQVJUVVApOworCQkJCQkJaWYgKHJj ICYgV0xfTEFUQ0hfU0VUKQorCQkJCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJCX0KIAkJ CQl9CiAJCQl9CiAJCQllbHNlIGlmIChzdGF0dXMgPT0gQkdXSF9TVE9QUEVEKQpAQCAtNzg4LDYg KzgyNSwxNiBAQCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0 ICpwY3h0KQogCQkJYnJlYWs7CiAJCX0KIAl9CisKKwkvKiBTZXQgc25hcHNob3QgcmVzdG9yZWQg ZmxhZyB0byBmYWxzZS4gKi8KKwlpZiAocGN4dC0+bndvcmtlcnMgPiAwKQorCXsKKwkJYm9vbAkg ICAqc25hcHNob3RfcmVzdG9yZWRfc3BhY2U7CisJCXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlID0K KwkJCQlzaG1fdG9jX2xvb2t1cChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9TTkFQU0hPVF9SRVNU T1JFRCwgZmFsc2UpOworCQlmb3IgKGkgPSAwOyBpIDwgcGN4dC0+bndvcmtlcnM7ICsraSkKKwkJ CXNuYXBzaG90X3Jlc3RvcmVkX3NwYWNlW2ldID0gZmFsc2U7CisJfQogfQogCiAvKgpAQCAtMTMw NCw2ICsxMzUxLDcgQEAgUGFyYWxsZWxXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCXNobV90 b2MgICAgKnRvYzsKIAlGaXhlZFBhcmFsbGVsU3RhdGUgKmZwczsKIAljaGFyCSAgICplcnJvcl9x dWV1ZV9zcGFjZTsKKwlib29sCSAgICpzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZTsKIAlzaG1fbXEJ ICAgKm1xOwogCXNobV9tcV9oYW5kbGUgKm1xaDsKIAljaGFyCSAgICpsaWJyYXJ5c3BhY2U7CkBA IC0xNTA3LDYgKzE1NTUsMTAgQEAgUGFyYWxsZWxXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQog CQkJCQkJCSAgIGZwcy0+cGFyYWxsZWxfbGVhZGVyX3BncHJvYyk7CiAJUHVzaEFjdGl2ZVNuYXBz aG90KGFzbmFwc2hvdCk7CiAKKwkvKiBTbmFwc2hvdCBpcyByZXN0b3JlZCwgc2V0IGZsYWcgdG8g bWFrZSBsZWFkZXIga25vdyBhYm91dCBpdC4gKi8KKwlzbmFwc2hvdF9yZXN0b3JlZF9zcGFjZSA9 IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1NOQVBTSE9UX1JFU1RPUkVELCBmYWxz ZSk7CisJc25hcHNob3RfcmVzdG9yZWRfc3BhY2VbUGFyYWxsZWxXb3JrZXJOdW1iZXJdID0gdHJ1 ZTsKKwogCS8qCiAJICogV2UndmUgY2hhbmdlZCB3aGljaCB0dXBsZXMgd2UgY2FuIHNlZSwgYW5k IG11c3QgdGhlcmVmb3JlIGludmFsaWRhdGUKIAkgKiBzeXN0ZW0gY2FjaGVzLgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggNWJjYjBhODYxZDcuLjEyMmQ3NDU4NTYxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTQwNCw3ICs0MDQsOCBAQCBFeGVjU2VxU2Nhbklu aXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCXBzY2FuID0gc2htX3RvY19hbGxvY2F0 ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CiAJdGFibGVfcGFyYWxsZWxzY2FuX2luaXRp YWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgIHBzY2FuLAotCQkJ CQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOworCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNo b3QsCisJCQkJCQkJCSAgZmFsc2UpOwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+ c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CiAKIAlub2RlLT5zcy5zc19jdXJyZW50 U2NhbkRlc2MgPQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdl c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmluZGV4IGIz ODdlZDZjMzA4Li4wN2U1NzUxNjRhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHJhbmdlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5n ZXNjYW4uYwpAQCAtNDg4LDcgKzQ4OCw4IEBAIEV4ZWNUaWRSYW5nZVNjYW5Jbml0aWFsaXplRFNN KFRpZFJhbmdlU2NhblN0YXRlICpub2RlLCBQYXJhbGxlbENvbnRleHQgKnBjeHQpCiAJcHNjYW4g PSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9kZS0+dHJzc19wc2Nhbmxlbik7CiAJdGFi bGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAog CQkJCQkJCQkgIHBzY2FuLAotCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QpOworCQkJCQkJ CQkgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCSAgZmFsc2UpOwogCXNobV90b2NfaW5z ZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBwc2Nhbik7CiAJ bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KIAkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs X3RpZHJhbmdlKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL3RpbWUvc25hcG1nci5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvdGltZS9zbmFw bWdyLmMKaW5kZXggMTBmZTE4ZGYyZTcuLmYyMmRhMjcxYjllIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy90aW1lL3NuYXBtZ3IuYworKysgYi9zcmMvYmFja2VuZC91dGlscy90aW1lL3Nu YXBtZ3IuYwpAQCAtMzUzLDE0ICszNTMsNiBAQCBHZXRUcmFuc2FjdGlvblNuYXBzaG90KHZvaWQp CiBTbmFwc2hvdAogR2V0TGF0ZXN0U25hcHNob3Qodm9pZCkKIHsKLQkvKgotCSAqIFdlIG1pZ2h0 IGJlIGFibGUgdG8gcmVsYXggdGhpcywgYnV0IG5vdGhpbmcgdGhhdCBjb3VsZCBvdGhlcndpc2Ug d29yawotCSAqIG5lZWRzIGl0LgotCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkpCi0JCWVs b2coRVJST1IsCi0JCQkgImNhbm5vdCB1cGRhdGUgU2Vjb25kYXJ5U25hcHNob3QgZHVyaW5nIGEg cGFyYWxsZWwgb3BlcmF0aW9uIik7Ci0KIAkvKgogCSAqIFNvIGZhciB0aGVyZSBhcmUgbm8gY2Fz ZXMgcmVxdWlyaW5nIHN1cHBvcnQgZm9yIEdldExhdGVzdFNuYXBzaG90KCkKIAkgKiBkdXJpbmcg bG9naWNhbCBkZWNvZGluZywgYnV0IGl0IHdvdWxkbid0IGJlIGhhcmQgdG8gYWRkIGlmIHJlcXVp cmVkLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRleCA2MGY4NTc2NzVlMC4uOWEzZTE0ZTBjMGUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9wYXJhbGxlbC5oCkBAIC0yOCw2ICsyOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcmFs bGVsV29ya2VySW5mbwogewogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd2hhbmRsZTsKIAlz aG1fbXFfaGFuZGxlICplcnJvcl9tcWg7CisJYm9vbAkJICAqc25hcHNob3RfcmVzdG9yZWQ7CiB9 IFBhcmFsbGVsV29ya2VySW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxDb250ZXh0CkBA IC02Nyw3ICs2OCw3IEBAIGV4dGVybiB2b2lkIEluaXRpYWxpemVQYXJhbGxlbERTTShQYXJhbGxl bENvbnRleHQgKnBjeHQpOwogZXh0ZXJuIHZvaWQgUmVpbml0aWFsaXplUGFyYWxsZWxEU00oUGFy YWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIFJlaW5pdGlhbGl6ZVBhcmFsbGVsV29y a2VycyhQYXJhbGxlbENvbnRleHQgKnBjeHQsIGludCBud29ya2Vyc190b19sYXVuY2gpOwogZXh0 ZXJuIHZvaWQgTGF1bmNoUGFyYWxsZWxXb3JrZXJzKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7Ci1l eHRlcm4gdm9pZCBXYWl0Rm9yUGFyYWxsZWxXb3JrZXJzVG9BdHRhY2goUGFyYWxsZWxDb250ZXh0 ICpwY3h0KTsKK2V4dGVybiB2b2lkIFdhaXRGb3JQYXJhbGxlbFdvcmtlcnNUb0F0dGFjaChQYXJh bGxlbENvbnRleHQgKnBjeHQsIGJvb2wgd2FpdF9mb3Jfc25hcHNob3QpOwogZXh0ZXJuIHZvaWQg V2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmluaXNoKFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7CiBl eHRlcm4gdm9pZCBEZXN0cm95UGFyYWxsZWxDb250ZXh0KFBhcmFsbGVsQ29udGV4dCAqcGN4dCk7 CiBleHRlcm4gYm9vbCBQYXJhbGxlbENvbnRleHRBY3RpdmUodm9pZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4u aAppbmRleCAyZWEwNmE2N2E2My4uOGQ1NGZkYzE2OWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAt ODcsNiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCiAJ UmVsRmlsZUxvY2F0b3IgcGhzX2xvY2F0b3I7IC8qIHBoeXNpY2FsIHJlbGF0aW9uIHRvIHNjYW4g Ki8KIAlib29sCQlwaHNfc3luY3NjYW47CS8qIHJlcG9ydCBsb2NhdGlvbiB0byBzeW5jc2NhbiBs b2dpYz8gKi8KIAlib29sCQlwaHNfc25hcHNob3RfYW55OwkvKiBTbmFwc2hvdEFueSwgbm90IHBo c19zbmFwc2hvdF9kYXRhPyAqLworCWJvb2wJCXBoc19yZXNldF9zbmFwc2hvdDsgLyogdXNlIFNP X1JFU0VUX1NOQVBTSE9UPyAqLwogCVNpemUJCXBoc19zbmFwc2hvdF9vZmY7CS8qIGRhdGEgZm9y IHNuYXBzaG90ICovCiB9IFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGE7CiB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhICpQYXJhbGxlbFRhYmxlU2NhbkRlc2M7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaAppbmRleCAzNTYwYmE0MGZjMi4uMjE5NTI1ZGJjYjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxl YW0uaApAQCAtMTIxMiw3ICsxMjEyLDggQEAgZXh0ZXJuIFNpemUgdGFibGVfcGFyYWxsZWxzY2Fu X2VzdGltYXRlKFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QpOwogICovCiBleHRlcm4g dm9pZCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsCiAJCQkJCQkJ CQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCi0JCQkJCQkJCQkJICBTbmFwc2hvdCBz bmFwc2hvdCk7CisJCQkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJCQkJCQkgIGJv b2wgcmVzZXRfc25hcHNob3QpOwogCiAvKgogICogQmVnaW4gYSBwYXJhbGxlbCBzY2FuLiBgcHNj YW5gIG5lZWRzIHRvIGhhdmUgYmVlbiBpbml0aWFsaXplZCB3aXRoCkBAIC0xODY2LDcgKzE4Njcs NyBAQCB0YWJsZV9zY2FuX2FuYWx5emVfbmV4dF90dXBsZShUYWJsZVNjYW5EZXNjIHNjYW4sCiAg KiBUaGlzIG9ubHkgcmVhbGx5IG1ha2VzIHNlbnNlIGZvciBoZWFwIEFNLCBpdCBtaWdodCBuZWVk IHRvIGJlIGdlbmVyYWxpemVkCiAgKiBmb3Igb3RoZXIgQU1zIGxhdGVyLgogICoKLSAqIEluIGNh c2Ugb2Ygbm9uLXVuaXF1ZSBpbmRleCBhbmQgbm9uLXBhcmFsbGVsIGNvbmN1cnJlbnQgYnVpbGQs CisgKiBJbiBjYXNlIG9mIG5vbi11bmlxdWUgY29uY3VycmVudCBidWlsZCwKICAqIGNvbmN1cnJl bnRfaW5kZXhfcmVzZXRfc25hcHNob3RfZXZlcnlfbl9wYWdlcyBpcyBhcHBsaWVkIGZvciB0aGUg c2Nhbi4KICAqIFRoYXQgbGVhZHMgdG8gY2hhbmdpbmcgc25hcHNob3RzIG9uIHRoZSBmbHkgdG8g YWxsb3cgeG1pbiBob3Jpem9uIHByb3BhZ2F0ZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDNk OTMyMzIzNjFmLi42MGY4MzU2ZWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMzUsMTMgKzM1LDEx IEBAIHR5cGVkZWYgc3RydWN0IEF0dHJNYXAgQXR0ck1hcDsKICAqIC0gdGhlIGluZGV4IGlzIG5v bi11bmlxdWUgKHVuaXF1ZSBuZWVkcyBjb25zaXN0ZW50IHNuYXBzaG90KQogICogLSBpc29sYXRp b24gbGV2ZWwgaXMgbm90IFJFUEVBVEFCTEUgUkVBRC9TRVJJQUxJWkFCTEUgKHRob3NlIGtlZXAg YQogICogICByZWdpc3RlcmVkIHRyYW5zYWN0aW9uIHNuYXBzaG90KQotICogLSB0aGUgYnVpbGQg aXMgbm90IHBhcmFsbGVsIChwYXJhbGxlbCBuZWVkcyBzZXBhcmF0ZSBpbmZyYXN0cnVjdHVyZSkK ICAqLwogI2RlZmluZSBJbmRleEJ1aWxkUmVzZXRzU25hcHNob3RzKGluZGV4SW5mbykgXAogCSgo aW5kZXhJbmZvKS0+aWlfQ29uY3VycmVudCAmJiBcCiAJICEoaW5kZXhJbmZvKS0+aWlfVW5pcXVl ICYmIFwKLQkgIUlzb2xhdGlvblVzZXNYYWN0U25hcHNob3QoKSAmJiBcCi0JICEoaW5kZXhJbmZv KS0+aWlfUGFyYWxsZWxXb3JrZXJzKQorCSAhSXNvbGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpKQog CiAvKiBBY3Rpb24gY29kZSBmb3IgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzICovCiB0eXBlZGVmIGVu dW0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50cy9leHBlY3Rl ZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3Bv aW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCBlZDRhYWFmMzQ2My4u ZTVhOGE3ZjNhNzkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5vdXQKQEAgLTE3 LDYgKzE3LDEyIEBAIFNFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfYmVnaW5z Y2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cycsICdub3RpY2UnCiAgCiAoMSByb3cpCiAKK1NFTEVD VCBpbmplY3Rpb25fcG9pbnRzX2F0dGFjaCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUn LCAnbm90aWNlJyk7CisgaW5qZWN0aW9uX3BvaW50c19hdHRhY2ggCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBTQ0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBD UkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkgaW50IHByaW1hcnkga2V5LCBqIGludCk7 CiBJTlNFUlQgSU5UTyBjaWNfcmVzZXRfc25hcC50YmwgU0VMRUNUIGksIGkgKiBJIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwMCkgcyhpKTsKQEAgLTcyLDMwICs3OCw0NSBAQCBOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBz aG90X2VmZmVjdGl2ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogLS0gVGhlIHNhbWUgaW4gcGFyYWxsZWwgbW9kZQogQUxURVIgVEFCTEUgY2ljX3Jlc2V0X3Nu YXAudGJsIFNFVCAocGFyYWxsZWxfd29ya2Vycz0yKTsKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qg c3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3JrZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxl YWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2ludHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25h cHNob3RfZWZmZWN0aXZlJyk7CisgaW5qZWN0aW9uX3BvaW50c19kZXRhY2ggCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKIENSRUFURSBVTklRVUUgSU5ERVggQ09OQ1VS UkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBSRUlOREVYIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNf cmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVz ZXRfc25hcC50YmwoaSk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsKE1PRChpLCAyKSwgaikgV0hFUkUgTU9EKGks IDIpID0gMDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0 YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkg Y2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0 aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jlc2V0X3NuYXAucHJlZGlj YXRlX3N0YWJsZShpKTsKIE5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCB0YWJsZV9iZWdpbnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCi1OT1RJQ0U6ICBub3Rp Y2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90 X2VmZmVjdGl2ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OwogTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2Jl Z2luc2Nhbl9zdHJhdF9yZXNldF9zbmFwc2hvdHMKLU5PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQg Zm9yIGluamVjdGlvbiBwb2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBE Uk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVgg Q09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSwgaikgV0hFUkUgY2ljX3Jl c2V0X3NuYXAucHJlZGljYXRlX3N0YWJsZV9ub19wYXJhbSgpOworTk9USUNFOiAgbm90aWNlIHRy aWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXpl CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CitOT1RJQ0U6 ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2Fu X2luaXRpYWxpemUKIERST1AgSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpIERF U0MgTlVMTFMgTEFTVCk7CitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24g cG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VS UkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9y IGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRF WCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OwogQ1JFQVRFIElOREVYIENPTkNVUlJF TlRMWSBpZHggT04gY2ljX3Jlc2V0X3NuYXAudGJsIFVTSU5HIEJSSU4oaSk7CitOT1RJQ0U6ICBu b3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQgdGFibGVfcGFyYWxsZWxzY2FuX2lu aXRpYWxpemUKIFJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJh bGxlbHNjYW5faW5pdGlhbGl6ZQogRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3Nu YXAuaWR4OwogQkVHSU4gVFJBTlNBQ1RJT047CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L2luamVjdGlvbl9wb2ludHMvc3FsL2NpY19yZXNldF9zbmFwc2hvdHMuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbAppbmRl eCA1NTM3ODc1MzliMy4uYTg1YjBjYmY1NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv aW5qZWN0aW9uX3BvaW50cy9zcWwvY2ljX3Jlc2V0X3NuYXBzaG90cy5zcWwKKysrIGIvc3JjL3Rl c3QvbW9kdWxlcy9pbmplY3Rpb25fcG9pbnRzL3NxbC9jaWNfcmVzZXRfc25hcHNob3RzLnNxbApA QCAtMyw3ICszLDcgQEAgQ1JFQVRFIEVYVEVOU0lPTiBpbmplY3Rpb25fcG9pbnRzOwogU0VMRUNU IGluamVjdGlvbl9wb2ludHNfc2V0X2xvY2FsKCk7CiBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19h dHRhY2goJ2hlYXBfcmVzZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnLCAnbm90aWNlJyk7CiBT RUxFQ1QgaW5qZWN0aW9uX3BvaW50c19hdHRhY2goJ3RhYmxlX2JlZ2luc2Nhbl9zdHJhdF9yZXNl dF9zbmFwc2hvdHMnLCAnbm90aWNlJyk7Ci0KK1NFTEVDVCBpbmplY3Rpb25fcG9pbnRzX2F0dGFj aCgndGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUnLCAnbm90aWNlJyk7CiAKIENSRUFURSBT Q0hFTUEgY2ljX3Jlc2V0X3NuYXA7CiBDUkVBVEUgVEFCTEUgY2ljX3Jlc2V0X3NuYXAudGJsKGkg aW50IHByaW1hcnkga2V5LCBqIGludCk7CkBAIC01Myw2ICs1Myw5IEBAIERST1AgSU5ERVggQ09O Q1VSUkVOVExZIGNpY19yZXNldF9zbmFwLmlkeDsKIC0tIFRoZSBzYW1lIGluIHBhcmFsbGVsIG1v ZGUKIEFMVEVSIFRBQkxFIGNpY19yZXNldF9zbmFwLnRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9 Mik7CiAKKy0tIERldGFjaCB0byBrZWVwIHRlc3Qgc3RhYmxlLCBzaW5jZSBwYXJhbGxlbCB3b3Jr ZXIgbWF5IGNvbXBsZXRlIHNjYW4gYmVmb3JlIGxlYWRlcgorU0VMRUNUIGluamVjdGlvbl9wb2lu dHNfZGV0YWNoKCdoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlJyk7CisKIENSRUFU RSBVTklRVUUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7 CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBEUk9QIElO REVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7Ci0tIAoyLjQzLjAKCg== --000000000000675090064fbc2171 Content-Type: application/octet-stream; name="v6-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Disposition: attachment; filename="v6-0004-Support-snapshot-resets-in-concurrent-builds-of-u.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo4bhjk23 RnJvbSBhOTFhNmRmZGI5MTg5NjZhODdjNjQxYThlMmVjMGYxM2U4YWRlYjBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAxMSBBcHIgMjAyNiAxODo0NTo0NyArMDIwMApTdWJqZWN0OiBb UEFUQ0ggdjYgNC80XSBTdXBwb3J0IHNuYXBzaG90IHJlc2V0cyBpbiBjb25jdXJyZW50IGJ1aWxk cyBvZiB1bmlxdWUKIGluZGV4ZXMKClByZXZpb3VzbHksIGNvbmN1cnJlbnQgYnVpbGRzIG9mIHVu aXF1ZSBpbmRleCB1c2VkIGEgZml4ZWQgc25hcHNob3QgZm9yIHRoZSBlbnRpcmUgc2NhbiB0byBl bnN1cmUgcHJvcGVyIHVuaXF1ZW5lc3MgY2hlY2tzLgoKTm93IHJlc2V0IHNuYXBzaG90cyBwZXJp b2RpY2FsbHkgZHVyaW5nIGNvbmN1cnJlbnQgdW5pcXVlIGluZGV4IGJ1aWxkcywgd2hpbGUgc3Rp bGwgbWFpbnRhaW5pbmcgdW5pcXVlbmVzcyBieToKLSBpZ25vcmluZyBTbmFwc2hvdFNlbGYgZGVh ZCB0dXBsZXMgZHVyaW5nIHVuaXF1ZW5lc3MgY2hlY2tzIGluIHR1cGxlc29ydCBhcyBub3QgYSBn dWFyYW50ZWUsIGJ1dCBhIGZhaWwtZmFzdCBtZWNoYW5pY3MKLSBhZGRpbmcgYSB1bmlxdWVuZXNz IGNoZWNrIGluIF9idF9sb2FkIHRoYXQgZGV0ZWN0cyBtdWx0aXBsZSBhbGl2ZSB0dXBsZXMgd2l0 aCB0aGUgc2FtZSBrZXkgdmFsdWVzIGFzIGEgZ3VhcmFudGVlIG9mIGNvcnJlY3RuZXNzCgpUdXBs ZXMgYXJlIFNuYXBzaG90U2VsZiB0ZXN0ZWQgb25seSBpbiB0aGUgY2FzZSBvZiBlcXVhbCBpbmRl eCBrZXkgdmFsdWVzLCBvdGhlcndpc2UgX2J0X2xvYWQgd29ya3MgbGlrZSBiZWZvcmUuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCAgICAgICAgICAgIHwgIDEyICstCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAgIDcgKy0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0ZGVkdXAuYyAgICAgICAgICB8ICAgOCArLQogc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWFkcGFnZS5jICAgICAgIHwgICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYyAgICAgICAgICAgfCAxNTggKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNwbGl0bG9jLmMgICAgICAg fCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYyAgICAgICAgICB8 ICA1OSArKysrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgICAg IHwgIDEwICsrCiBzcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jICAgICAgICAgICAg fCAgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnR2YXJpYW50cy5jICAgIHwg MTAxICsrKysrKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggICAgICAgICAgICAg ICAgICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAg ICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAg ICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaCAgICAgICAgICAgICAgICAg fCAgIDMgKwogLi4uL2V4cGVjdGVkL2NpY19yZXNldF9zbmFwc2hvdHMub3V0ICAgICAgICAgIHwg ICA2ICsKIDE4IGZpbGVzIGNoYW5nZWQsIDMyMCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVAppbmRleCA3NGU0MDdmMzc1YS4uODI5ZGFk MTE5NGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVApAQCAtMzg2LDEyICszODYsMTIg QEAgaGF2ZSB0aGUgSE9ULXNhZmV0eSBwcm9wZXJ0eSBlbmZvcmNlZCBiZWZvcmUgd2Ugc3RhcnQg dG8gYnVpbGQgdGhlIG5ldwogaW5kZXguCiAKIEFmdGVyIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9u cyB3aGljaCBoYWQgdGhlIHRhYmxlIG9wZW4sIHdlIGJ1aWxkIHRoZSBpbmRleAotZm9yIGFsbCBy b3dzIHRoYXQgYXJlIHZhbGlkIGluIGEgZnJlc2ggc25hcHNob3QuICBBbnkgdHVwbGVzIHZpc2li bGUgaW4gdGhlCi1zbmFwc2hvdCB3aWxsIGhhdmUgb25seSB2YWxpZCBmb3J3YXJkLWdyb3dpbmcg SE9UIGNoYWlucy4gIChUaGV5IG1pZ2h0IGhhdmUKLW9sZGVyIEhPVCB1cGRhdGVzIGJlaGluZCB0 aGVtIHdoaWNoIGFyZSBicm9rZW4sIGJ1dCB0aGlzIGlzIE9LIGZvciB0aGUgc2FtZQotcmVhc29u IGl0J3MgT0sgaW4gYSByZWd1bGFyIGluZGV4IGJ1aWxkLikgIEFzIGFib3ZlLCB3ZSBwb2ludCB0 aGUgaW5kZXgKLWVudHJ5IGF0IHRoZSByb290IG9mIHRoZSBIT1QtdXBkYXRlIGNoYWluIGJ1dCB3 ZSB1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZQotbGl2ZSB0dXBsZS4KK2ZvciBhbGwgcm93cyB0 aGF0IGFyZSB2YWxpZCBpbiBhIGZyZXNoIHNuYXBzaG90LCB3aGljaCBpcyB1cGRhdGVkIGV2ZXJ5 IHNvCitvZnRlbi4gQW55IHR1cGxlcyB2aXNpYmxlIGluIHRoZSBzbmFwc2hvdCB3aWxsIGhhdmUg b25seSB2YWxpZCBmb3J3YXJkLWdyb3dpbmcKK0hPVCBjaGFpbnMuICAoVGhleSBtaWdodCBoYXZl IG9sZGVyIEhPVCB1cGRhdGVzIGJlaGluZCB0aGVtIHdoaWNoIGFyZSBicm9rZW4sCitidXQgdGhp cyBpcyBPSyBmb3IgdGhlIHNhbWUgcmVhc29uIGl0J3MgT0sgaW4gYSByZWd1bGFyIGluZGV4IGJ1 aWxkLikKK0FzIGFib3ZlLCB3ZSBwb2ludCB0aGUgaW5kZXggZW50cnkgYXQgdGhlIHJvb3Qgb2Yg dGhlIEhPVC11cGRhdGUgY2hhaW4gYnV0IHdlCit1c2UgdGhlIGtleSB2YWx1ZSBmcm9tIHRoZSBs aXZlIHR1cGxlLgogCiBXZSBtYXJrIHRoZSBpbmRleCBvcGVuIGZvciBpbnNlcnRzIChidXQgc3Rp bGwgbm90IHJlYWR5IGZvciByZWFkcykgdGhlbgogd2UgYWdhaW4gd2FpdCBmb3IgdHJhbnNhY3Rp b25zIHdoaWNoIGhhdmUgdGhlIHRhYmxlIG9wZW4uICBUaGVuIHdlIHRha2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCmluZGV4IDExODRlZDA4NmZlLi42OGY2ZTY3MzFk ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCkBAIC0xMjE0LDEz ICsxMjE0LDE0IEBAIGhlYXBhbV9pbmRleF9idWlsZF9yYW5nZV9zY2FuKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKIAkgKiBxdWFsIGNoZWNrcyAoYmVjYXVzZSB3ZSBoYXZlIHRvIGluZGV4IFJFQ0VO VExZX0RFQUQgdHVwbGVzKS4gSW4gYQogCSAqIGNvbmN1cnJlbnQgYnVpbGQsIG9yIGR1cmluZyBi b290c3RyYXAsIHdlIHRha2UgYSByZWd1bGFyIE1WQ0Mgc25hcHNob3QKIAkgKiBhbmQgaW5kZXgg d2hhdGV2ZXIncyBsaXZlIGFjY29yZGluZyB0byB0aGF0IHdoaWxlIHRoYXQgc25hcHNob3QgaXMg cmVzZXQKLQkgKiBldmVyeSBzbyBvZnRlbiAoaW4gdGhlIGNhc2Ugb2Ygbm9uLXVuaXF1ZSBpbmRl eCkuCisJICogZXZlcnkgc28gb2Z0ZW4uCiAJICovCiAJT2xkZXN0WG1pbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCiAJLyoKLQkgKiBGb3IgdW5pcXVlIGluZGV4ZXMgd2UgbmVlZCBhIGNvbnNp c3RlbnQgc25hcHNob3QgZm9yIHRoZSB3aG9sZSBzY2FuLgotCSAqIFJlc2V0dGluZyBzbmFwc2hv dHMgYWxzbyBkb2Vzbid0IHdvcmsgaW4geGFjdC1zbmFwc2hvdCBpc29sYXRpb24gbW9kZXMsCisJ ICogRm9yIGNvbmN1cnJlbnQgYnVpbGRzIG9mIG5vbi1zeXN0ZW0gaW5kZXhlcywgd2Ugd2FudCB0 byBwZXJpb2RpY2FsbHkKKwkgKiByZXNldCBzbmFwc2hvdHMuCisJICogUmVzZXR0aW5nIHNuYXBz aG90cyBkb2Vzbid0IHdvcmsgaW4geGFjdC1zbmFwc2hvdCBpc29sYXRpb24gbW9kZXMsCiAJICog YmVjYXVzZSB0aG9zZSBrZWVwIGEgcmVnaXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBmb3Ig dGhlIHdob2xlIHhhY3QuCiAJICovCiAJcmVzZXRfc25hcHNob3RzID0gSW5kZXhCdWlsZFJlc2V0 c1NuYXBzaG90cyhpbmRleEluZm8pICYmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idGRlZHVwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMK aW5kZXggYWY3YWZmZGY0MDkuLjEwZjRmN2VlYmE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idGRlZHVwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRkZWR1cC5jCkBAIC0xNDksNyArMTQ5LDcgQEAgX2J0X2RlZHVwX3Bhc3MoUmVsYXRpb24gcmVs LCBCdWZmZXIgYnVmLCBJbmRleFR1cGxlIG5ld2l0ZW0sIFNpemUgbmV3aXRlbXN6LAogCQkJX2J0 X2RlZHVwX3N0YXJ0X3BlbmRpbmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KIAkJZWxzZSBp ZiAoc3RhdGUtPmRlZHVwbGljYXRlICYmCi0JCQkJIF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBz dGF0ZS0+YmFzZSwgaXR1cCkgPiBua2V5YXR0cyAmJgorCQkJCSBfYnRfa2VlcF9uYXR0c19mYXN0 KHJlbCwgc3RhdGUtPmJhc2UsIGl0dXAsIE5VTEwpID4gbmtleWF0dHMgJiYKIAkJCQkgX2J0X2Rl ZHVwX3NhdmVfaHRpZChzdGF0ZSwgaXR1cCkpCiAJCXsKIAkJCS8qCkBAIC0zNzYsNyArMzc2LDcg QEAgX2J0X2JvdHRvbXVwZGVsX3Bhc3MoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLCBSZWxhdGlv biBoZWFwUmVsLAogCQkJLyogaXR1cCBzdGFydHMgZmlyc3QgcGVuZGluZyBpbnRlcnZhbCAqLwog CQkJX2J0X2RlZHVwX3N0YXJ0X3BlbmRpbmcoc3RhdGUsIGl0dXAsIG9mZm51bSk7CiAJCX0KLQkJ ZWxzZSBpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChyZWwsIHN0YXRlLT5iYXNlLCBpdHVwKSA+IG5r ZXlhdHRzICYmCisJCWVsc2UgaWYgKF9idF9rZWVwX25hdHRzX2Zhc3QocmVsLCBzdGF0ZS0+YmFz ZSwgaXR1cCwgTlVMTCkgPiBua2V5YXR0cyAmJgogCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKHN0 YXRlLCBpdHVwKSkKIAkJewogCQkJLyogVHVwbGUgaXMgZXF1YWw7IGp1c3QgYWRkZWQgaXRzIFRJ RHMgdG8gcGVuZGluZyBpbnRlcnZhbCAqLwpAQCAtNzg5LDEyICs3ODksMTIgQEAgX2J0X2RvX3Np bmdsZXZhbChSZWxhdGlvbiByZWwsIFBhZ2UgcGFnZSwgQlREZWR1cFN0YXRlIHN0YXRlLAogCWl0 ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgbWlub2ZmKTsKIAlpdHVwID0gKEluZGV4VHVwbGUp IFBhZ2VHZXRJdGVtKHBhZ2UsIGl0ZW1pZCk7CiAKLQlpZiAoX2J0X2tlZXBfbmF0dHNfZmFzdChy ZWwsIG5ld2l0ZW0sIGl0dXApID4gbmtleWF0dHMpCisJaWYgKF9idF9rZWVwX25hdHRzX2Zhc3Qo cmVsLCBuZXdpdGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCXsKIAkJaXRlbWlkID0gUGFn ZUdldEl0ZW1JZChwYWdlLCBQYWdlR2V0TWF4T2Zmc2V0TnVtYmVyKHBhZ2UpKTsKIAkJaXR1cCA9 IChJbmRleFR1cGxlKSBQYWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCi0JCWlmIChfYnRfa2Vl cF9uYXR0c19mYXN0KHJlbCwgbmV3aXRlbSwgaXR1cCkgPiBua2V5YXR0cykKKwkJaWYgKF9idF9r ZWVwX25hdHRzX2Zhc3QocmVsLCBuZXdpdGVtLCBpdHVwLCBOVUxMKSA+IG5rZXlhdHRzKQogCQkJ cmV0dXJuIHRydWU7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHJlYWRwYWdlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMK aW5kZXggMmJhMWNhNjYwMjMuLmM0YzI3OGU3NzdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvbmJ0cmVlL25idHJlYWRwYWdlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJl ZS9uYnRyZWFkcGFnZS5jCkBAIC02MjMsNyArNjIzLDcgQEAgX2J0X3NldF9zdGFydGlrZXkoSW5k ZXhTY2FuRGVzYyBzY2FuLCBCVFJlYWRQYWdlU3RhdGUgKnBzdGF0ZSkKIAlsYXN0dHVwID0gKElu ZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHBzdGF0ZS0+cGFnZSwgaWlkKTsKIAogCS8qIERldGVybWlu ZSB0aGUgZmlyc3QgYXR0cmlidXRlIHdob3NlIHZhbHVlcyBjaGFuZ2Ugb24gY2FsbGVyJ3MgcGFn ZSAqLwotCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19mYXN0KHJlbCwgZmly c3R0dXAsIGxhc3R0dXApOworCWZpcnN0Y2hhbmdpbmdhdHRudW0gPSBfYnRfa2VlcF9uYXR0c19m YXN0KHJlbCwgZmlyc3R0dXAsIGxhc3R0dXAsIE5VTEwpOwogCiAJZm9yICg7IHN0YXJ0aWtleSA8 IHNvLT5udW1iZXJPZktleXM7IHN0YXJ0aWtleSsrKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnRzb3J0LmMKaW5kZXggNmJiMzY1Yzk1MWQuLjM5ODJlNWU4YTFkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv bmJ0cmVlL25idHNvcnQuYwpAQCAtODcsNiArODcsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVFNwb29s CiAJUmVsYXRpb24JaW5kZXg7CiAJYm9vbAkJaXN1bmlxdWU7CiAJYm9vbAkJbnVsbHNfbm90X2Rp c3RpbmN0OworCWJvb2wJCXVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiB9IEJUU3Bvb2w7CiAKIC8qCkBA IC0xMDUsNiArMTA2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRTaGFyZWQKIAlPaWQJCQlpbmRleHJl bGlkOwogCWJvb2wJCWlzdW5pcXVlOwogCWJvb2wJCW51bGxzX25vdF9kaXN0aW5jdDsKKwlib29s CQl1bmlxdWVfZGVhZF9pZ25vcmVkOwogCWJvb2wJCWlzY29uY3VycmVudDsKIAlpbnQJCQlzY2Fu dHVwbGVzb3J0c3RhdGVzOwogCkBAIC0yMDcsMTUgKzIwOSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBC VExlYWRlcgogICovCiB0eXBlZGVmIHN0cnVjdCBCVEJ1aWxkU3RhdGUKIHsKLQlib29sCQlpc3Vu aXF1ZTsKLQlib29sCQludWxsc19ub3RfZGlzdGluY3Q7CiAJYm9vbAkJaGF2ZWRlYWQ7CiAJUmVs YXRpb24JaGVhcDsKIAlCVFNwb29sICAgICpzcG9vbDsKIAogCS8qCi0JICogc3Bvb2wyIGlzIG5l ZWRlZCBvbmx5IHdoZW4gdGhlIGluZGV4IGlzIGEgdW5pcXVlIGluZGV4LiBEZWFkIHR1cGxlcyBh cmUKLQkgKiBwdXQgaW50byBzcG9vbDIgaW5zdGVhZCBvZiBzcG9vbCBpbiBvcmRlciB0byBhdm9p ZCB1bmlxdWVuZXNzIGNoZWNrLgorCSAqIHNwb29sMiBpcyBuZWVkZWQgb25seSB3aGVuIHRoZSBp bmRleCBpcyBhIHVuaXF1ZSBpbmRleCBhbmQgYnVpbHQKKwkgKiBub24tY29uY3VycmVudGx5LiAg RGVhZCB0dXBsZXMgYXJlIHB1dCBpbnRvIHNwb29sMiBpbnN0ZWFkIG9mIHNwb29sCisJICogaW4g b3JkZXIgdG8gYXZvaWQgdW5pcXVlbmVzcyBjaGVjay4KIAkgKi8KIAlCVFNwb29sICAgICpzcG9v bDI7CiAJZG91YmxlCQlpbmR0dXBsZXM7CkBAIC0yNjIsNyArMjYzLDcgQEAgc3RhdGljIGRvdWJs ZSBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LAogc3Rh dGljIHZvaWQgX2J0X3Nwb29sZGVzdHJveShCVFNwb29sICpidHNwb29sKTsKIHN0YXRpYyB2b2lk IF9idF9zcG9vbChCVFNwb29sICpidHNwb29sLCBjb25zdCBJdGVtUG9pbnRlckRhdGEgKnNlbGYs CiAJCQkJCSAgY29uc3QgRGF0dW0gKnZhbHVlcywgY29uc3QgYm9vbCAqaXNudWxsKTsKLXN0YXRp YyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9vbCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIs IGJvb2wgcmVzZXRfc25hcHNob3RzKTsKK3N0YXRpYyB2b2lkIF9idF9sZWFmYnVpbGQoQlRTcG9v bCAqYnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIsIGJvb2wgaXNjb25jdXJyZW50KTsKIHN0YXRp YyB2b2lkIF9idF9idWlsZF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwgSXRlbVBvaW50ZXIgdGlk LCBEYXR1bSAqdmFsdWVzLAogCQkJCQkJCSAgIGJvb2wgKmlzbnVsbCwgYm9vbCB0dXBsZUlzQWxp dmUsIHZvaWQgKnN0YXRlKTsKIHN0YXRpYyBCdWxrV3JpdGVCdWZmZXIgX2J0X2JsbmV3cGFnZShC VFdyaXRlU3RhdGUgKndzdGF0ZSwgdWludDMyIGxldmVsKTsKQEAgLTMwNyw4ICszMDgsNiBAQCBi dGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5m bykKIAkJUmVzZXRVc2FnZSgpOwogI2VuZGlmCQkJCQkJCS8qIEJUUkVFX0JVSUxEX1NUQVRTICov CiAKLQlidWlsZHN0YXRlLmlzdW5pcXVlID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7Ci0JYnVpbGRz dGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBpbmRleEluZm8tPmlpX051bGxzTm90RGlzdGluY3Q7 CiAJYnVpbGRzdGF0ZS5oYXZlZGVhZCA9IGZhbHNlOwogCWJ1aWxkc3RhdGUuaGVhcCA9IGhlYXA7 CiAJYnVpbGRzdGF0ZS5zcG9vbCA9IE5VTEw7CkBAIC0zODUsNiArMzg0LDEyIEBAIF9idF9zcG9v bHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEJUQnVpbGRTdGF0ZSAq YnVpbGRzdGF0ZSwKIAlidHNwb29sLT5pbmRleCA9IGluZGV4OwogCWJ0c3Bvb2wtPmlzdW5pcXVl ID0gaW5kZXhJbmZvLT5paV9VbmlxdWU7CiAJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0g aW5kZXhJbmZvLT5paV9OdWxsc05vdERpc3RpbmN0OworCS8qCisJICogV2UgbmVlZCB0byBpZ25v cmUgZGVhZCB0dXBsZXMgZm9yIHVuaXF1ZSBjaGVja3Mgb25seSB3aGVuIGNvbmN1cnJlbnQKKwkg KiB1bmlxdWUgYnVpbGRzIGFjdHVhbGx5IHVzZSBwZXJpb2RpYyBzbmFwc2hvdCByZXNldHMuCisJ ICovCisJYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCA9IEluZGV4QnVpbGRSZXNldHNTbmFw c2hvdHMoaW5kZXhJbmZvKSAmJgorCQlpbmRleEluZm8tPmlpX1VuaXF1ZTsKIAogCS8qIFNhdmUg YXMgcHJpbWFyeSBzcG9vbCAqLwogCWJ1aWxkc3RhdGUtPnNwb29sID0gYnRzcG9vbDsKQEAgLTQz Myw4ICs0MzgsOSBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9u IGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJICogdGhlIHVzZSBvZiBwYXJhbGxl bGlzbSBvciBhbnkgb3RoZXIgZmFjdG9yLgogCSAqLwogCWJ1aWxkc3RhdGUtPnNwb29sLT5zb3J0 c3RhdGUgPQotCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ1aWxk c3RhdGUtPmlzdW5pcXVlLAotCQkJCQkJCQkJYnVpbGRzdGF0ZS0+bnVsbHNfbm90X2Rpc3RpbmN0 LAorCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoaGVhcCwgaW5kZXgsIGJ0c3Bvb2wtPmlz dW5pcXVlLAorCQkJCQkJCQkJYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0LAorCQkJCQkJCQkJ YnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZCwKIAkJCQkJCQkJCW1haW50ZW5hbmNlX3dvcmtf bWVtLCBjb29yZGluYXRlLAogCQkJCQkJCQkJVFVQTEVTT1JUX05PTkUpOwogCkBAIC00NDIsOCAr NDQ4LDEyIEBAIF9idF9zcG9vbHNfaGVhcHNjYW4oUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5k ZXgsIEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwKIAkgKiBJZiBidWlsZGluZyBhIHVuaXF1ZSBp bmRleCwgcHV0IGRlYWQgdHVwbGVzIGluIGEgc2Vjb25kIHNwb29sIHRvIGtlZXAKIAkgKiB0aGVt IG91dCBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjay4gIFdlIGV4cGVjdCB0aGF0IHRoZSBzZWNvbmQg c3Bvb2wgKGZvcgogCSAqIGRlYWQgdHVwbGVzKSB3b24ndCBnZXQgdmVyeSBmdWxsLCBzbyB3ZSBn aXZlIGl0IG9ubHkgd29ya19tZW0uCisJICoKKwkgKiBJbiBjYXNlIG9mIGNvbmN1cnJlbnQgYnVp bGQgZGVhZCB0dXBsZXMgZG8gbm90IG5lZWQgdG8gYmUgcHV0IGludG8gaW5kZXgKKwkgKiBzaW5j ZSB3ZSB3YWl0IGZvciBhbGwgc25hcHNob3RzIG9sZGVyIHRoYW4gcmVmZXJlbmNlIHNuYXBzaG90 IGR1cmluZyB0aGUKKwkgKiB2YWxpZGF0aW9uIHBoYXNlLgogCSAqLwotCWlmIChpbmRleEluZm8t PmlpX1VuaXF1ZSkKKwlpZiAoaW5kZXhJbmZvLT5paV9VbmlxdWUgJiYgIUluZGV4QnVpbGRSZXNl dHNTbmFwc2hvdHMoaW5kZXhJbmZvKSkKIAl7CiAJCUJUU3Bvb2wgICAgKmJ0c3Bvb2wyID0gcGFs bG9jMF9vYmplY3QoQlRTcG9vbCk7CiAJCVNvcnRDb29yZGluYXRlIGNvb3JkaW5hdGUyID0gTlVM TDsKQEAgLTQ3NCw3ICs0ODQsNyBAQCBfYnRfc3Bvb2xzX2hlYXBzY2FuKFJlbGF0aW9uIGhlYXAs IFJlbGF0aW9uIGluZGV4LCBCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsCiAJCSAqIGZ1bGwsIHNv IHdlIGdpdmUgaXQgb25seSB3b3JrX21lbQogCQkgKi8KIAkJYnVpbGRzdGF0ZS0+c3Bvb2wyLT5z b3J0c3RhdGUgPQotCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhlYXAsIGluZGV4LCBm YWxzZSwgZmFsc2UsIHdvcmtfbWVtLAorCQkJdHVwbGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKGhl YXAsIGluZGV4LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB3b3JrX21lbSwKIAkJCQkJCQkJCQljb29y ZGluYXRlMiwgVFVQTEVTT1JUX05PTkUpOwogCX0KIApAQCAtMTE1NSwxNCArMTE2NSwxMDAgQEAg X2J0X2xvYWQoQlRXcml0ZVN0YXRlICp3c3RhdGUsIEJUU3Bvb2wgKmJ0c3Bvb2wsIEJUU3Bvb2wg KmJ0c3Bvb2wyKQogCQkJCWtleXN6ID0gSW5kZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmli dXRlcyh3c3RhdGUtPmluZGV4KTsKIAlTb3J0U3VwcG9ydCBzb3J0S2V5czsKIAlpbnQ2NAkJdHVw bGVzX2RvbmUgPSAwOwotCWJvb2wJCWRlZHVwbGljYXRlOworCWJvb2wJCWRlZHVwbGljYXRlLAor CQkJCWZhaWxfb25fYWxpdmVfZHVwbGljYXRlOwogCiAJd3N0YXRlLT5idWxrc3RhdGUgPSBzbWdy X2J1bGtfc3RhcnRfcmVsKHdzdGF0ZS0+aW5kZXgsIE1BSU5fRk9SS05VTSk7CiAKIAlkZWR1cGxp Y2F0ZSA9IHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlICYmICFidHNwb29sLT5pc3VuaXF1 ZSAmJgogCQlCVEdldERlZHVwbGljYXRlSXRlbXMod3N0YXRlLT5pbmRleCk7CisJLyoKKwkgKiBU aGUgdW5pcXVlX2RlYWRfaWdub3JlZCBkb2VzIG5vdCBndWFyYW50ZWUgYWJzZW5jZSBvZiBtdWx0 aXBsZSBhbGl2ZQorCSAqIHR1cGxlcyB3aXRoIHRoZSBzYW1lIHZhbHVlcyBpbiB0aGUgc3Bvb2wu IFN1Y2ggYSBjYXNlIG1heSBoYXBwZW4gaWYKKwkgKiBhbGl2ZSB0dXBsZXMgYXJlIGxvY2F0ZWQg YmV0d2VlbiBhIGZldyBkZWFkIHR1cGxlcywgbGlrZSB0aGlzOiBhZGRkYS4KKwkgKi8KKwlmYWls X29uX2FsaXZlX2R1cGxpY2F0ZSA9IGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQ7CiAKLQlp ZiAobWVyZ2UpCisJaWYgKGZhaWxfb25fYWxpdmVfZHVwbGljYXRlKQorCXsKKwkJYm9vbAlzZWVu X2FsaXZlID0gZmFsc2UsCisJCQkJcHJldl90ZXN0ZWQgPSBmYWxzZTsKKwkJSW5kZXhUdXBsZSBw cmV2ID0gTlVMTDsKKwkJVHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJs ZVNsb3QoUmVsYXRpb25HZXREZXNjcih3c3RhdGUtPmhlYXApLAorCQkJCQkJCQkJCQkJCSAgICZU VFNPcHNCdWZmZXJIZWFwVHVwbGUpOworCQlJbmRleEZldGNoVGFibGVEYXRhICpmZXRjaCA9IHRh YmxlX2luZGV4X2ZldGNoX2JlZ2luKHdzdGF0ZS0+aGVhcCwgU09fTk9ORSk7CisKKwkJQXNzZXJ0 KGJ0c3Bvb2wtPmlzdW5pcXVlKTsKKwkJQXNzZXJ0KCFidHNwb29sMik7CisKKwkJd2hpbGUgKChp dHVwID0gdHVwbGVzb3J0X2dldGluZGV4dHVwbGUoYnRzcG9vbC0+c29ydHN0YXRlLCB0cnVlKSkg IT0gTlVMTCkKKwkJeworCQkJYm9vbAl0dXBsZXNfZXF1YWwgPSBmYWxzZTsKKworCQkJLyogV2hl biB3ZSBzZWUgZmlyc3QgdHVwbGUsIGNyZWF0ZSBmaXJzdCBpbmRleCBwYWdlICovCisJCQlpZiAo c3RhdGUgPT0gTlVMTCkKKwkJCQlzdGF0ZSA9IF9idF9wYWdlc3RhdGUod3N0YXRlLCAwKTsKKwor CQkJaWYgKHByZXYgIT0gTlVMTCkgLyogaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHR1cGxlICov CisJCQl7CisJCQkJYm9vbAloYXNfbnVsbHMgPSBmYWxzZSwKKwkJCQkJCWNhbGxfYWdhaW4gPSBm YWxzZSwKKwkJCQkJCWlnbm9yZWQgPSBmYWxzZSwKKwkJCQkJCW5vd19hbGl2ZTsKKwkJCQlJdGVt UG9pbnRlckRhdGEgdGlkOworCisJCQkJLyogaXMgdGhpcyB0dXBsZSBlcXVhbCB0byBwcmV2aW91 cyBvbmU/ICovCisJCQkJaWYgKHdzdGF0ZS0+aW5za2V5LT5hbGxlcXVhbGltYWdlKQorCQkJCQl0 dXBsZXNfZXF1YWwgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgsIHByZXYsIGl0 dXAsICZoYXNfbnVsbHMpID4ga2V5c3o7CisJCQkJZWxzZQorCQkJCQl0dXBsZXNfZXF1YWwgPSBf YnRfa2VlcF9uYXR0cyh3c3RhdGUtPmluZGV4LCBwcmV2LCBpdHVwLCB3c3RhdGUtPmluc2tleSwg Jmhhc19udWxscykgPiBrZXlzejsKKworCQkJCS8qIGhhbmRsZSBudWxsIHZhbHVlcyBjb3JyZWN0 bHkgKi8KKwkJCQlpZiAoaGFzX251bGxzICYmICFidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3Qp CisJCQkJCXR1cGxlc19lcXVhbCA9IGZhbHNlOworCisJCQkJaWYgKHR1cGxlc19lcXVhbCkKKwkJ CQl7CisJCQkJCS8qIGNoZWNrIHByZXZpb3VzIHR1cGxlIGlmIG5vdCB5ZXQgKi8KKwkJCQkJaWYg KCFwcmV2X3Rlc3RlZCkKKwkJCQkJeworCQkJCQkJY2FsbF9hZ2FpbiA9IGZhbHNlOworCQkJCQkJ dGlkID0gcHJldi0+dF90aWQ7CisJCQkJCQlzZWVuX2FsaXZlID0gdGFibGVfaW5kZXhfZmV0Y2hf dHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sICZpZ25v cmVkKTsKKwkJCQkJCXByZXZfdGVzdGVkID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJCWNhbGxfYWdh aW4gPSBmYWxzZTsKKwkJCQkJdGlkID0gaXR1cC0+dF90aWQ7CisJCQkJCW5vd19hbGl2ZSA9IHRh YmxlX2luZGV4X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZj YWxsX2FnYWluLCAmaWdub3JlZCk7CisKKwkJCQkJLyogYXJlIG11bHRpcGxlIGFsaXZlIHR1cGxl cyBkZXRlY3RlZCBpbiBlcXVhbCBncm91cD8gKi8KKwkJCQkJaWYgKHNlZW5fYWxpdmUgJiYgbm93 X2FsaXZlKQorCQkJCQkJX2J0X3JlcG9ydF9kdXBsaWNhdGUod3N0YXRlLT5pbmRleCwgd3N0YXRl LT5oZWFwLCBpdHVwKTsKKwkJCQkJc2Vlbl9hbGl2ZSB8PSBub3dfYWxpdmU7CisJCQkJfQorCQkJ fQorCisJCQlpZiAoIXR1cGxlc19lcXVhbCkKKwkJCXsKKwkJCQlzZWVuX2FsaXZlID0gZmFsc2U7 CisJCQkJcHJldl90ZXN0ZWQgPSBmYWxzZTsKKwkJCX0KKworCQkJX2J0X2J1aWxkYWRkKHdzdGF0 ZSwgc3RhdGUsIGl0dXAsIDApOworCQkJaWYgKHByZXYpIHBmcmVlKHByZXYpOworCQkJcHJldiA9 IENvcHlJbmRleFR1cGxlKGl0dXApOworCisJCQkvKiBSZXBvcnQgcHJvZ3Jlc3MgKi8KKwkJCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1RVUExFU19ET05F LAorCQkJCQkJCQkJCSArK3R1cGxlc19kb25lKTsKKwkJfQorCQlpZiAocHJldikgcGZyZWUocHJl dik7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCXRhYmxlX2luZGV4 X2ZldGNoX2VuZChmZXRjaCk7CisJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9j LT54bWluKSk7CisJfQorCWVsc2UgaWYgKG1lcmdlKQogCXsKIAkJLyoKIAkJICogQW5vdGhlciBC VFNwb29sIGZvciBkZWFkIHR1cGxlcyBleGlzdHMuIE5vdyB3ZSBoYXZlIHRvIG1lcmdlCkBAIC0x MzIyLDcgKzE0MTgsNyBAQCBfYnRfbG9hZChCVFdyaXRlU3RhdGUgKndzdGF0ZSwgQlRTcG9vbCAq YnRzcG9vbCwgQlRTcG9vbCAqYnRzcG9vbDIpCiAJCQkJCQkJCQkJSW52YWxpZE9mZnNldE51bWJl cik7CiAJCQl9CiAJCQllbHNlIGlmIChfYnRfa2VlcF9uYXR0c19mYXN0KHdzdGF0ZS0+aW5kZXgs IGRzdGF0ZS0+YmFzZSwKLQkJCQkJCQkJCQkgaXR1cCkgPiBrZXlzeiAmJgorCQkJCQkJCQkJCSBp dHVwLCBOVUxMKSA+IGtleXN6ICYmCiAJCQkJCSBfYnRfZGVkdXBfc2F2ZV9odGlkKGRzdGF0ZSwg aXR1cCkpCiAJCQl7CiAJCQkJLyoKQEAgLTE0MzgsMTUgKzE1MzQsMTMgQEAgX2J0X2JlZ2luX3Bh cmFsbGVsKEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSwgYm9vbCBpc2NvbmN1cnJlbnQsIGludCBy ZXF1ZXN0KQogCXNjYW50dXBsZXNvcnRzdGF0ZXMgPSBsZWFkZXJwYXJ0aWNpcGF0ZXMgPyByZXF1 ZXN0ICsgMSA6IHJlcXVlc3Q7CiAKIAkvKgotCSAqIEZvciBjb25jdXJyZW50IG5vbi11bmlxdWUg aW5kZXggYnVpbGRzLCB3ZSBjYW4gcGVyaW9kaWNhbGx5IHJlc2V0Ci0JICogc25hcHNob3RzIHRv IGFsbG93IHRoZSB4bWluIGhvcml6b24gdG8gYWR2YW5jZS4gIFRoaXMgaXMgc2FmZSBzaW5jZQot CSAqIHRoZXNlIGJ1aWxkcyBkb24ndCByZXF1aXJlIGEgY29uc2lzdGVudCB2aWV3IGFjcm9zcyB0 aGUgZW50aXJlIHNjYW4uCi0JICogVW5pcXVlIGluZGV4ZXMgc3RpbGwgbmVlZCBhIHN0YWJsZSBz bmFwc2hvdCB0byBwcm9wZXJseSBlbmZvcmNlCi0JICogdW5pcXVlbmVzcyBjb25zdHJhaW50cy4g IElzb2xhdGlvbiBtb2RlcyB3aGVyZQorCSAqIEZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxkcywg d2UgY2FuIHBlcmlvZGljYWxseSByZXNldCBzbmFwc2hvdHMgdG8KKwkgKiBhbGxvdyB0aGUgeG1p biBob3Jpem9uIHRvIGFkdmFuY2UuCisJICogSXNvbGF0aW9uIG1vZGVzIHdoZXJlCiAJICogSXNv bGF0aW9uVXNlc1hhY3RTbmFwc2hvdCgpIGlzIHRydWUgYWxzbyBwcmV2ZW50IHJlc2V0dGluZyBi ZWNhdXNlCiAJICogdGhleSBrZWVwIGEgcmVnaXN0ZXJlZCB0cmFuc2FjdGlvbiBzbmFwc2hvdCBm b3IgdGhlIHdob2xlIHRyYW5zYWN0aW9uLgogCSAqLwotCXJlc2V0X3NuYXBzaG90ID0gaXNjb25j dXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkgJiYgIWJ0c3Bvb2wtPmlzdW5p cXVlOworCXJlc2V0X3NuYXBzaG90ID0gaXNjb25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCk7CiAKIAkvKgogCSAqIFByZXBhcmUgZm9yIHNjYW4gb2YgdGhlIGJhc2UgcmVs YXRpb24uICBJbiBhIG5vcm1hbCBpbmRleCBidWlsZCwgd2UgdXNlCkBAIC0xNDU0LDcgKzE1NDgs NyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwoQlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlz Y29uY3VycmVudCwgaW50IHJlcXVlc3QpCiAJICogcXVhbCBjaGVja3MgKGJlY2F1c2Ugd2UgaGF2 ZSB0byBpbmRleCBSRUNFTlRMWV9ERUFEIHR1cGxlcykuICBJbiBhCiAJICogY29uY3VycmVudCBi dWlsZCwgd2UgdGFrZSBhIHJlZ3VsYXIgTVZDQyBzbmFwc2hvdCBhbmQgaW5kZXggd2hhdGV2ZXIn cwogCSAqIGxpdmUgYWNjb3JkaW5nIHRvIHRoYXQsIHdoaWxlIHRoYXQgc25hcHNob3QgbWF5IGJl IHJlc2V0IHBlcmlvZGljYWxseQotCSAqIGZvciBub24tdW5pcXVlIGluZGV4ZXMgaW4gbm9uLXhh Y3Qtc25hcHNob3QgaXNvbGF0aW9uIG1vZGVzLgorCSAqIGluIG5vbi14YWN0LXNuYXBzaG90IGlz b2xhdGlvbiBtb2Rlcy4KIAkgKi8KIAlpZiAoIWlzY29uY3VycmVudCkKIAl7CkBAIC0xNDgzLDEw ICsxNTc3LDEwIEBAIF9idF9iZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUs IGJvb2wgaXNjb25jdXJyZW50LCBpbnQgcmVxdWVzdCkKIAlzaG1fdG9jX2VzdGltYXRlX2NodW5r KCZwY3h0LT5lc3RpbWF0b3IsIGVzdHNvcnQpOwogCiAJLyoKLQkgKiBVbmlxdWUgY2FzZSByZXF1 aXJlcyBhIHNlY29uZCBzcG9vbCwgYW5kIHNvIHdlIG1heSBoYXZlIHRvIGFjY291bnQgZm9yCi0J ICogYW5vdGhlciBzaGFyZWQgd29ya3NwYWNlIGZvciB0aGF0IC0tIFBBUkFMTEVMX0tFWV9UVVBM RVNPUlRfU1BPT0wyCisJICogTm9uLWNvbmN1cnJlbnQgdW5pcXVlIGNhc2UgcmVxdWlyZXMgYSBz ZWNvbmQgc3Bvb2wsIGFuZCBzbyB3ZSBtYXkgaGF2ZQorCSAqIHRvIGFjY291bnQgZm9yIGFub3Ro ZXIgc2hhcmVkIHdvcmtzcGFjZSAtLSBQQVJBTExFTF9LRVlfVFVQTEVTT1JUX1NQT09MMgogCSAq LwotCWlmICghYnRzcG9vbC0+aXN1bmlxdWUpCisJaWYgKCFidHNwb29sLT5pc3VuaXF1ZSB8fCBy ZXNldF9zbmFwc2hvdCkKIAkJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3Is IDIpOwogCWVsc2UKIAl7CkBAIC0xNTQxLDYgKzE2MzUsNyBAQCBfYnRfYmVnaW5fcGFyYWxsZWwo QlRCdWlsZFN0YXRlICpidWlsZHN0YXRlLCBib29sIGlzY29uY3VycmVudCwgaW50IHJlcXVlc3Qp CiAJYnRzaGFyZWQtPmluZGV4cmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKGJ0c3Bvb2wtPmluZGV4 KTsKIAlidHNoYXJlZC0+aXN1bmlxdWUgPSBidHNwb29sLT5pc3VuaXF1ZTsKIAlidHNoYXJlZC0+ bnVsbHNfbm90X2Rpc3RpbmN0ID0gYnRzcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWJ0c2hh cmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkID0gYnRzcG9vbC0+dW5pcXVlX2RlYWRfaWdub3JlZDsK IAlidHNoYXJlZC0+aXNjb25jdXJyZW50ID0gaXNjb25jdXJyZW50OwogCWJ0c2hhcmVkLT5zY2Fu dHVwbGVzb3J0c3RhdGVzID0gc2NhbnR1cGxlc29ydHN0YXRlczsKIAlidHNoYXJlZC0+cXVlcnlp ZCA9IHBnc3RhdF9nZXRfbXlfcXVlcnlfaWQoKTsKQEAgLTE1NjgsOCArMTY2Myw4IEBAIF9idF9i ZWdpbl9wYXJhbGxlbChCVEJ1aWxkU3RhdGUgKmJ1aWxkc3RhdGUsIGJvb2wgaXNjb25jdXJyZW50 LCBpbnQgcmVxdWVzdCkKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFMTEVMX0tFWV9C VFJFRV9TSEFSRUQsIGJ0c2hhcmVkKTsKIAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9UVVBMRVNPUlQsIHNoYXJlZHNvcnQpOwogCi0JLyogVW5pcXVlIGNhc2UgcmVxdWly ZXMgYSBzZWNvbmQgc3Bvb2wsIGFuZCBhc3NvY2lhdGVkIHNoYXJlZCBzdGF0ZSAqLwotCWlmICgh YnRzcG9vbC0+aXN1bmlxdWUpCisJLyogTm9uLWNvbmN1cnJlbnQgdW5pcXVlIGNhc2UgcmVxdWly ZXMgYSBzZWNvbmQgc3Bvb2wgYW5kIHNoYXJlZCBzdGF0ZSAqLworCWlmICghYnRzcG9vbC0+aXN1 bmlxdWUgfHwgcmVzZXRfc25hcHNob3QpCiAJCXNoYXJlZHNvcnQyID0gTlVMTDsKIAllbHNlCiAJ ewpAQCAtMTc1Miw5ICsxODQ3LDEwIEBAIF9idF9sZWFkZXJfcGFydGljaXBhdGVfYXNfd29ya2Vy KEJUQnVpbGRTdGF0ZSAqYnVpbGRzdGF0ZSkKIAlsZWFkZXJ3b3JrZXItPmluZGV4ID0gYnVpbGRz dGF0ZS0+c3Bvb2wtPmluZGV4OwogCWxlYWRlcndvcmtlci0+aXN1bmlxdWUgPSBidWlsZHN0YXRl LT5zcG9vbC0+aXN1bmlxdWU7CiAJbGVhZGVyd29ya2VyLT5udWxsc19ub3RfZGlzdGluY3QgPSBi dWlsZHN0YXRlLT5zcG9vbC0+bnVsbHNfbm90X2Rpc3RpbmN0OworCWxlYWRlcndvcmtlci0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGJ1aWxkc3RhdGUtPnNwb29sLT51bmlxdWVfZGVhZF9pZ25vcmVk OwogCiAJLyogSW5pdGlhbGl6ZSBzZWNvbmQgc3Bvb2wsIGlmIHJlcXVpcmVkICovCi0JaWYgKCFi dGxlYWRlci0+YnRzaGFyZWQtPmlzdW5pcXVlKQorCWlmICghYnRsZWFkZXItPmJ0c2hhcmVkLT5p c3VuaXF1ZSB8fCAoYnRsZWFkZXItPmJ0c2hhcmVkLT5pc2NvbmN1cnJlbnQgJiYgIUlzb2xhdGlv blVzZXNYYWN0U25hcHNob3QoKSkpCiAJCWxlYWRlcndvcmtlcjIgPSBOVUxMOwogCWVsc2UKIAl7 CkBAIC0xODU1LDExICsxOTUxLDEyIEBAIF9idF9wYXJhbGxlbF9idWlsZF9tYWluKGRzbV9zZWdt ZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAlidHNwb29sLT5pbmRleCA9IGluZGV4UmVsOwogCWJ0 c3Bvb2wtPmlzdW5pcXVlID0gYnRzaGFyZWQtPmlzdW5pcXVlOwogCWJ0c3Bvb2wtPm51bGxzX25v dF9kaXN0aW5jdCA9IGJ0c2hhcmVkLT5udWxsc19ub3RfZGlzdGluY3Q7CisJYnRzcG9vbC0+dW5p cXVlX2RlYWRfaWdub3JlZCA9IGJ0c2hhcmVkLT51bmlxdWVfZGVhZF9pZ25vcmVkOwogCiAJLyog TG9vayB1cCBzaGFyZWQgc3RhdGUgcHJpdmF0ZSB0byB0dXBsZXNvcnQuYyAqLwogCXNoYXJlZHNv cnQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9UVVBMRVNPUlQsIGZhbHNlKTsK IAl0dXBsZXNvcnRfYXR0YWNoX3NoYXJlZChzaGFyZWRzb3J0LCBzZWcpOwotCWlmICghYnRzaGFy ZWQtPmlzdW5pcXVlKQorCWlmICghYnRzaGFyZWQtPmlzdW5pcXVlIHx8IChidHNoYXJlZC0+aXNj b25jdXJyZW50ICYmICFJc29sYXRpb25Vc2VzWGFjdFNuYXBzaG90KCkpKQogCXsKIAkJYnRzcG9v bDIgPSBOVUxMOwogCQlzaGFyZWRzb3J0MiA9IE5VTEw7CkBAIC0xOTM5LDYgKzIwMzYsNyBAQCBf YnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNw b29sMiwKIAkJCQkJCQkJCQkJCQkgYnRzcG9vbC0+aW5kZXgsCiAJCQkJCQkJCQkJCQkJIGJ0c3Bv b2wtPmlzdW5pcXVlLAogCQkJCQkJCQkJCQkJCSBidHNwb29sLT5udWxsc19ub3RfZGlzdGluY3Qs CisJCQkJCQkJCQkJCQkJIGJ0c3Bvb2wtPnVuaXF1ZV9kZWFkX2lnbm9yZWQsCiAJCQkJCQkJCQkJ CQkJIHNvcnRtZW0sIGNvb3JkaW5hdGUsCiAJCQkJCQkJCQkJCQkJIFRVUExFU09SVF9OT05FKTsK IApAQCAtMTk2MSwxNCArMjA1OSwxMiBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChCVFNw b29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAkJY29vcmRpbmF0ZTItPm5QYXJ0aWNp cGFudHMgPSAtMTsKIAkJY29vcmRpbmF0ZTItPnNoYXJlZHNvcnQgPSBzaGFyZWRzb3J0MjsKIAkJ YnRzcG9vbDItPnNvcnRzdGF0ZSA9Ci0JCQl0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoYnRz cG9vbC0+aGVhcCwgYnRzcG9vbC0+aW5kZXgsIGZhbHNlLCBmYWxzZSwKKwkJCXR1cGxlc29ydF9i ZWdpbl9pbmRleF9idHJlZShidHNwb29sLT5oZWFwLCBidHNwb29sLT5pbmRleCwgZmFsc2UsIGZh bHNlLCBmYWxzZSwKIAkJCQkJCQkJCQlNaW4oc29ydG1lbSwgd29ya19tZW0pLCBjb29yZGluYXRl MiwKIAkJCQkJCQkJCQlmYWxzZSk7CiAJfQogCiAJLyogRmlsbCBpbiBidWlsZHN0YXRlIGZvciBf YnRfYnVpbGRfY2FsbGJhY2soKSAqLwotCWJ1aWxkc3RhdGUuaXN1bmlxdWUgPSBidHNoYXJlZC0+ aXN1bmlxdWU7Ci0JYnVpbGRzdGF0ZS5udWxsc19ub3RfZGlzdGluY3QgPSBidHNoYXJlZC0+bnVs bHNfbm90X2Rpc3RpbmN0OwogCWJ1aWxkc3RhdGUuaGF2ZWRlYWQgPSBmYWxzZTsKIAlidWlsZHN0 YXRlLmhlYXAgPSBidHNwb29sLT5oZWFwOwogCWJ1aWxkc3RhdGUuc3Bvb2wgPSBidHNwb29sOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxpdGxvYy5jCmluZGV4IGRlOWVjYTNjOGIyLi5i MTc0ZmI4ZDNlZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzcGxp dGxvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c3BsaXRsb2MuYwpAQCAt Njg4LDcgKzY4OCw3IEBAIF9idF9hZnRlcm5ld2l0ZW1vZmYoRmluZFNwbGl0RGF0YSAqc3RhdGUs IE9mZnNldE51bWJlciBtYXhvZmYsCiAJewogCQlpdGVtaWQgPSBQYWdlR2V0SXRlbUlkKHN0YXRl LT5vcmlncGFnZSwgbWF4b2ZmKTsKIAkJdHVwID0gKEluZGV4VHVwbGUpIFBhZ2VHZXRJdGVtKHN0 YXRlLT5vcmlncGFnZSwgaXRlbWlkKTsKLQkJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHNfZmFz dChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwkJa2VlcG5hdHRzID0gX2J0X2tl ZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtLCBOVUxMKTsKIAog CQlpZiAoa2VlcG5hdHRzID4gMSAmJiBrZWVwbmF0dHMgPD0gbmtleWF0dHMpCiAJCXsKQEAgLTcx OSw3ICs3MTksNyBAQCBfYnRfYWZ0ZXJuZXdpdGVtb2ZmKEZpbmRTcGxpdERhdGEgKnN0YXRlLCBP ZmZzZXROdW1iZXIgbWF4b2ZmLAogCQkhX2J0X2FkamFjZW50aHRpZCgmdHVwLT50X3RpZCwgJnN0 YXRlLT5uZXdpdGVtLT50X3RpZCkpCiAJCXJldHVybiBmYWxzZTsKIAkvKiBDaGVjayBzYW1lIGNv bmRpdGlvbnMgYXMgcmlnaHRtb3N0IGl0ZW0gY2FzZSwgdG9vICovCi0Ja2VlcG5hdHRzID0gX2J0 X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCB0dXAsIHN0YXRlLT5uZXdpdGVtKTsKKwlrZWVw bmF0dHMgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWwsIHR1cCwgc3RhdGUtPm5ld2l0 ZW0sIE5VTEwpOwogCiAJaWYgKGtlZXBuYXR0cyA+IDEgJiYga2VlcG5hdHRzIDw9IG5rZXlhdHRz KQogCXsKQEAgLTk2OCw3ICs5NjgsNyBAQCBfYnRfc3RyYXRlZ3koRmluZFNwbGl0RGF0YSAqc3Rh dGUsIFNwbGl0UG9pbnQgKmxlZnRwYWdlLAogCSAqIGF2b2lkIGFwcGVuZGluZyBhIGhlYXAgVElE IGluIG5ldyBoaWdoIGtleSwgd2UncmUgZG9uZS4gIEZpbmlzaCBzcGxpdAogCSAqIHdpdGggZGVm YXVsdCBzdHJhdGVneSBhbmQgaW5pdGlhbCBzcGxpdCBpbnRlcnZhbC4KIAkgKi8KLQlwZXJmZWN0 cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0 bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWws IGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRu a2V5YXR0cykKIAkJcmV0dXJuIHBlcmZlY3RwZW5hbHR5OwogCkBAIC05ODksNyArOTg5LDcgQEAg X2J0X3N0cmF0ZWd5KEZpbmRTcGxpdERhdGEgKnN0YXRlLCBTcGxpdFBvaW50ICpsZWZ0cGFnZSwK IAkgKiBJZiBwYWdlIGlzIGVudGlyZWx5IGZ1bGwgb2YgZHVwbGljYXRlcywgYSBzaW5nbGUgdmFs dWUgc3RyYXRlZ3kgc3BsaXQKIAkgKiB3aWxsIGJlIHBlcmZvcm1lZC4KIAkgKi8KLQlwZXJmZWN0 cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGVmdG1vc3QsIHJpZ2h0 bW9zdCk7CisJcGVyZmVjdHBlbmFsdHkgPSBfYnRfa2VlcF9uYXR0c19mYXN0KHN0YXRlLT5yZWws IGxlZnRtb3N0LCByaWdodG1vc3QsIE5VTEwpOwogCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRu a2V5YXR0cykKIAl7CiAJCSpzdHJhdGVneSA9IFNQTElUX01BTllfRFVQTElDQVRFUzsKQEAgLTEw MjgsNyArMTAyOCw3IEBAIF9idF9zdHJhdGVneShGaW5kU3BsaXREYXRhICpzdGF0ZSwgU3BsaXRQ b2ludCAqbGVmdHBhZ2UsCiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQoc3RhdGUtPm9yaWdwYWdl LCBQX0hJS0VZKTsKIAkJaGlrZXkgPSAoSW5kZXhUdXBsZSkgUGFnZUdldEl0ZW0oc3RhdGUtPm9y aWdwYWdlLCBpdGVtaWQpOwogCQlwZXJmZWN0cGVuYWx0eSA9IF9idF9rZWVwX25hdHRzX2Zhc3Qo c3RhdGUtPnJlbCwgaGlrZXksCi0JCQkJCQkJCQkJCSBzdGF0ZS0+bmV3aXRlbSk7CisJCQkJCQkJ CQkJCSBzdGF0ZS0+bmV3aXRlbSwgTlVMTCk7CiAJCWlmIChwZXJmZWN0cGVuYWx0eSA8PSBpbmRu a2V5YXR0cykKIAkJCSpzdHJhdGVneSA9IFNQTElUX1NJTkdMRV9WQUxVRTsKIAkJZWxzZQpAQCAt MTE1MCw3ICsxMTUwLDcgQEAgX2J0X3NwbGl0X3BlbmFsdHkoRmluZFNwbGl0RGF0YSAqc3RhdGUs IFNwbGl0UG9pbnQgKnNwbGl0KQogCWxhc3RsZWZ0ID0gX2J0X3NwbGl0X2xhc3RsZWZ0KHN0YXRl LCBzcGxpdCk7CiAJZmlyc3RyaWdodCA9IF9idF9zcGxpdF9maXJzdHJpZ2h0KHN0YXRlLCBzcGxp dCk7CiAKLQlyZXR1cm4gX2J0X2tlZXBfbmF0dHNfZmFzdChzdGF0ZS0+cmVsLCBsYXN0bGVmdCwg Zmlyc3RyaWdodCk7CisJcmV0dXJuIF9idF9rZWVwX25hdHRzX2Zhc3Qoc3RhdGUtPnJlbCwgbGFz dGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9u YnR1dGlscy5jCmluZGV4IDAxNGZhYTE2MjJmLi5lOTM1MWU1NGQ3ZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtMTcsNiArMTcsNyBAQAogCiAjaW5jbHVkZSA8dGltZS5o PgogCisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5o IgogI2luY2x1ZGUgImFjY2Vzcy9yZWxvcHRpb25zLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3JlbHNj YW4uaCIKQEAgLTMyLDkgKzMzLDYgQEAKIAogCiBzdGF0aWMgaW50CV9idF9jb21wYXJlX2ludChj b25zdCB2b2lkICp2YSwgY29uc3Qgdm9pZCAqdmIpOwotc3RhdGljIGludAlfYnRfa2VlcF9uYXR0 cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkgICBJbmRleFR1cGxl IGZpcnN0cmlnaHQsIEJUU2Nhbkluc2VydCBpdHVwX2tleSk7Ci0KIAogLyoKICAqIF9idF9ta3Nj YW5rZXkKQEAgLTcwNyw3ICs3MDUsNyBAQCBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAJQXNzZXJ0KCFCVHJlZVR1 cGxlSXNQaXZvdChsYXN0bGVmdCkgJiYgIUJUcmVlVHVwbGVJc1Bpdm90KGZpcnN0cmlnaHQpKTsK IAogCS8qIERldGVybWluZSBob3cgbWFueSBhdHRyaWJ1dGVzIG11c3QgYmUga2VwdCBpbiB0cnVu Y2F0ZWQgdHVwbGUgKi8KLQlrZWVwbmF0dHMgPSBfYnRfa2VlcF9uYXR0cyhyZWwsIGxhc3RsZWZ0 LCBmaXJzdHJpZ2h0LCBpdHVwX2tleSk7CisJa2VlcG5hdHRzID0gX2J0X2tlZXBfbmF0dHMocmVs LCBsYXN0bGVmdCwgZmlyc3RyaWdodCwgaXR1cF9rZXksIE5VTEwpOwogCiAjaWZkZWYgREVCVUdf Tk9fVFJVTkNBVEUKIAkvKiBGb3JjZSB0cnVuY2F0aW9uIHRvIGJlIGluZWZmZWN0aXZlIGZvciB0 ZXN0aW5nIHB1cnBvc2VzICovCkBAIC04MjUsMTcgKzgyMywyNCBAQCBfYnRfdHJ1bmNhdGUoUmVs YXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAv KgogICogX2J0X2tlZXBfbmF0dHMgLSBob3cgbWFueSBrZXkgYXR0cmlidXRlcyB0byBrZWVwIHdo ZW4gdHJ1bmNhdGluZy4KICAqCisgKiBUaGlzIGlzIGV4cG9ydGVkIHRvIGJlIHVzZWQgYXMgY29t cGFyaXNvbiBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogdW5pcXVlIGluZGV4IGJ1aWxk IGluIGNhc2UgX2J0X2tlZXBfbmF0dHNfZmFzdCBpcyBub3Qgc3VpdGFibGUgYmVjYXVzZQorICog Y29sbGF0aW9uIGlzIG5vdCAiYWxsZXF1YWxpbWFnZSIvZGVkdXBsaWNhdGlvbi1zYWZlLgorICoK ICAqIENhbGxlciBwcm92aWRlcyB0d28gdHVwbGVzIHRoYXQgZW5jbG9zZSBhIHNwbGl0IHBvaW50 LiAgQ2FsbGVyJ3MgaW5zZXJ0aW9uCiAgKiBzY2Fua2V5IGlzIHVzZWQgdG8gY29tcGFyZSB0aGUg dHVwbGVzOyB0aGUgc2NhbmtleSdzIGFyZ3VtZW50IHZhbHVlcyBhcmUKICAqIG5vdCBjb25zaWRl cmVkIGhlcmUuCiAgKgorICogaGFzbnVsbHMgdmFsdWUgc2V0IHRvIHRydWUgaW4gY2FzZSBvZiBh bnkgbnVsbCBjb2x1bW4gaW4gYW55IHR1cGxlLgorICoKICAqIFRoaXMgY2FuIHJldHVybiBhIG51 bWJlciBvZiBhdHRyaWJ1dGVzIHRoYXQgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUKICAqIG51bWJl ciBvZiBrZXkgYXR0cmlidXRlcyBmb3IgdGhlIGluZGV4IHJlbGF0aW9uLiAgVGhpcyBpbmRpY2F0 ZXMgdGhhdCB0aGUKICAqIGNhbGxlciBtdXN0IHVzZSBhIGhlYXAgVElEIGFzIGEgdW5pcXVlLWlm aWVyIGluIG5ldyBwaXZvdCB0dXBsZS4KICAqLwotc3RhdGljIGludAoraW50CiBfYnRfa2VlcF9u YXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3Ry aWdodCwKLQkJCSAgIEJUU2Nhbkluc2VydCBpdHVwX2tleSkKKwkJCSAgIEJUU2Nhbkluc2VydCBp dHVwX2tleSwKKwkJCSAgIGJvb2wgKmhhc251bGxzKQogewogCWludAkJCW5rZXlhdHRzID0gSW5k ZXhSZWxhdGlvbkdldE51bWJlck9mS2V5QXR0cmlidXRlcyhyZWwpOwogCVR1cGxlRGVzYwlpdHVw ZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTg2MSw2ICs4NjYsOCBAQCBfYnRfa2Vl cF9uYXR0cyhSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmly c3RyaWdodCwKIAogCQlkYXR1bTEgPSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0 dXBkZXNjLCAmaXNOdWxsMSk7CiAJCWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwg YXR0bnVtLCBpdHVwZGVzYywgJmlzTnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVs bHMgfD0gaXNOdWxsMSB8IGlzTnVsbDI7CiAKIAkJaWYgKGlzTnVsbDEgIT0gaXNOdWxsMikKIAkJ CWJyZWFrOwpAQCAtODgwLDcgKzg4Nyw3IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogCSAqIGV4cGVjdGVk IGluIGFuIGFsbGVxdWFsaW1hZ2UgaW5kZXguCiAJICovCiAJQXNzZXJ0KCFpdHVwX2tleS0+YWxs ZXF1YWxpbWFnZSB8fAotCQkgICBrZWVwbmF0dHMgPT0gX2J0X2tlZXBfbmF0dHNfZmFzdChyZWws IGxhc3RsZWZ0LCBmaXJzdHJpZ2h0KSk7CisJCSAgIGtlZXBuYXR0cyA9PSBfYnRfa2VlcF9uYXR0 c19mYXN0KHJlbCwgbGFzdGxlZnQsIGZpcnN0cmlnaHQsIE5VTEwpKTsKIAogCXJldHVybiBrZWVw bmF0dHM7CiB9CkBAIC04OTEsNyArODk4LDggQEAgX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVs LCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCiAgKiBUaGlzIGlz IGV4cG9ydGVkIHNvIHRoYXQgYSBjYW5kaWRhdGUgc3BsaXQgcG9pbnQgY2FuIGhhdmUgaXRzIGVm ZmVjdCBvbgogICogc3VmZml4IHRydW5jYXRpb24gaW5leHBlbnNpdmVseSBldmFsdWF0ZWQgYWhl YWQgb2YgdGltZSB3aGVuIGZpbmRpbmcgYQogICogc3BsaXQgbG9jYXRpb24uICBBIG5haXZlIGJp dHdpc2UgYXBwcm9hY2ggdG8gZGF0dW0gY29tcGFyaXNvbnMgaXMgdXNlZCB0bwotICogc2F2ZSBj eWNsZXMuCisgKiBzYXZlIGN5Y2xlcy4gQWxzbywgaXQgbWF5IGJlIHVzZWQgYXMgY29tcGFyaXNv biBmdW5jdGlvbiBkdXJpbmcgY29uY3VycmVudAorICogYnVpbGQgb2YgdW5pcXVlIGluZGV4Lgog ICoKICAqIFRoZSBhcHByb2FjaCB0YWtlbiBoZXJlIHVzdWFsbHkgcHJvdmlkZXMgdGhlIHNhbWUg YW5zd2VyIGFzIF9idF9rZWVwX25hdHRzCiAgKiB3aWxsIChmb3IgdGhlIHNhbWUgcGFpciBvZiB0 dXBsZXMgZnJvbSBhIGhlYXBrZXlzcGFjZSBpbmRleCksIHNpbmNlIHRoZQpAQCAtOTAwLDYgKzkw OCw4IEBAIF9idF9rZWVwX25hdHRzKFJlbGF0aW9uIHJlbCwgSW5kZXhUdXBsZSBsYXN0bGVmdCwg SW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAogICogImVxdWFsIGltYWdlIiBjb2x1bW5zLCByb3V0aW5l IGlzIGd1YXJhbnRlZWQgdG8gZ2l2ZSB0aGUgc2FtZSByZXN1bHQgYXMKICAqIF9idF9rZWVwX25h dHRzIHdvdWxkLgogICoKKyAqIGhhc251bGxzIHZhbHVlIHNldCB0byB0cnVlIGluIGNhc2Ugb2Yg YW55IG51bGwgY29sdW1uIGluIGFueSB0dXBsZS4KKyAqCiAgKiBDYWxsZXJzIGNhbiByZWx5IG9u IHRoZSBmYWN0IHRoYXQgYXR0cmlidXRlcyBjb25zaWRlcmVkIGVxdWFsIGhlcmUgYXJlCiAgKiBk ZWZpbml0ZWx5IGFsc28gZXF1YWwgYWNjb3JkaW5nIHRvIF9idF9rZWVwX25hdHRzLCBldmVuIHdo ZW4gdGhlIGluZGV4IHVzZXMKICAqIGFuIG9wY2xhc3Mgb3IgY29sbGF0aW9uIHRoYXQgaXMgbm90 ICJhbGxlcXVhbGltYWdlIi9kZWR1cGxpY2F0aW9uLXNhZmUuCkBAIC05MDgsNyArOTE4LDggQEAg X2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1 cGxlIGZpcnN0cmlnaHQsCiAgKiBtb3JlIGJhbGFuY2VkIHNwbGl0IHBvaW50LgogICovCiBpbnQK LV9idF9rZWVwX25hdHRzX2Zhc3QoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxlIGxhc3RsZWZ0LCBJ bmRleFR1cGxlIGZpcnN0cmlnaHQpCitfYnRfa2VlcF9uYXR0c19mYXN0KFJlbGF0aW9uIHJlbCwg SW5kZXhUdXBsZSBsYXN0bGVmdCwgSW5kZXhUdXBsZSBmaXJzdHJpZ2h0LAorCQkJCQlib29sICpo YXNudWxscykKIHsKIAlUdXBsZURlc2MJaXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7 CiAJaW50CQkJa2V5c3ogPSBJbmRleFJlbGF0aW9uR2V0TnVtYmVyT2ZLZXlBdHRyaWJ1dGVzKHJl bCk7CkBAIC05MjUsNiArOTM2LDggQEAgX2J0X2tlZXBfbmF0dHNfZmFzdChSZWxhdGlvbiByZWws IEluZGV4VHVwbGUgbGFzdGxlZnQsIEluZGV4VHVwbGUgZmlyc3RyaWdodCkKIAogCQlkYXR1bTEg PSBpbmRleF9nZXRhdHRyKGxhc3RsZWZ0LCBhdHRudW0sIGl0dXBkZXNjLCAmaXNOdWxsMSk7CiAJ CWRhdHVtMiA9IGluZGV4X2dldGF0dHIoZmlyc3RyaWdodCwgYXR0bnVtLCBpdHVwZGVzYywgJmlz TnVsbDIpOworCQlpZiAoaGFzbnVsbHMpCisJCQkqaGFzbnVsbHMgfD0gaXNOdWxsMSB8IGlzTnVs bDI7CiAJCWF0dCA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKGl0dXBkZXNjLCBhdHRudW0gLSAxKTsK IAogCQlpZiAoaXNOdWxsMSAhPSBpc051bGwyKQpAQCAtMTEwMiw2ICsxMTE1LDM0IEBAIF9idF9j aGVja19uYXR0cyhSZWxhdGlvbiByZWwsIGJvb2wgaGVhcGtleXNwYWNlLCBQYWdlIHBhZ2UsIE9m ZnNldE51bWJlciBvZmZudW0pCiAJcmV0dXJuIHR1cG5hdHRzID4gMCAmJiB0dXBuYXR0cyA8PSBu a2V5YXR0czsKIH0KIAorLyoKKyAqICBfYnRfcmVwb3J0X2R1cGxpY2F0ZSgpIC0tIHJlcG9ydCBh IHVuaXF1ZSB2aW9sYXRpb24gZHVyaW5nIGluZGV4IGJ1aWxkLgorICoKKyAqIFRoaXMgaXMgdXNl ZCBieSBib3RoIF9idF9sb2FkKCkgYW5kIHRoZSB0dXBsZXNvcnQgY29tcGFyYXRvcidzIGZhaWwt ZmFzdAorICogY2hlY2sgdG8gcmVwb3J0IGR1cGxpY2F0ZSBrZXlzIGZvdW5kIGR1cmluZyBDUkVB VEUgSU5ERVggQ09OQ1VSUkVOVExZIG9yCisgKiBSRUlOREVYIENPTkNVUlJFTlRMWSB3aXRoIHNu YXBzaG90IHJlc2V0cyBlbmFibGVkLgorICovCit2b2lkCitfYnRfcmVwb3J0X2R1cGxpY2F0ZShS ZWxhdGlvbiBpbmRleFJlbCwgUmVsYXRpb24gaGVhcFJlbCwgSW5kZXhUdXBsZSBpdHVwKQorewor CURhdHVtCQl2YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOworCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhf S0VZU107CisJY2hhcgkgICAqa2V5X2Rlc2M7CisKKwlpbmRleF9kZWZvcm1fdHVwbGUoaXR1cCwg UmVsYXRpb25HZXREZXNjcihpbmRleFJlbCksIHZhbHVlcywgaXNudWxsKTsKKworCWtleV9kZXNj ID0gQnVpbGRJbmRleFZhbHVlRGVzY3JpcHRpb24oaW5kZXhSZWwsIHZhbHVlcywgaXNudWxsKTsK KworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9WSU9MQVRJT04p LAorCQkJIGVycm1zZygiY291bGQgbm90IGNyZWF0ZSB1bmlxdWUgaW5kZXggXCIlc1wiIiwKKwkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaW5kZXhSZWwpKSwKKwkJCSBrZXlfZGVzYyA/IGVy cmRldGFpbCgiS2V5ICVzIGlzIGR1cGxpY2F0ZWQuIiwga2V5X2Rlc2MpIDoKKwkJCSBlcnJkZXRh aWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAorCQkJIGVycnRhYmxlY29uc3RyYWludChoZWFw UmVsLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleFJlbCkpKSk7Cit9CisK IC8qCiAgKgogICogIF9idF9jaGVja190aGlyZF9wYWdlKCkgLS0gY2hlY2sgd2hldGhlciB0dXBs ZSBmaXRzIG9uIGEgYnRyZWUgcGFnZSBhdCBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggN2Y0N2U3 ZGYwN2QuLjEzODNmYWVhY2ZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0zMzQ0LDkgKzMzNDQsOSBA QCBJbmRleENoZWNrRXhjbHVzaW9uKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKICAqIGlmIHdlIHVz ZWQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKS4gIFRoaXMgbGVhdmVzIHVzIHdpdGggYW4gaW5k ZXggdGhhdAogICogZG9lcyBub3QgY29udGFpbiBhbnkgdHVwbGVzIGFkZGVkIHRvIHRoZSB0YWJs ZSB3aGlsZSB3ZSBidWlsdCB0aGUgaW5kZXguCiAgKgotICogRnVydGhlcm1vcmUsIGluIGNhc2Ug b2Ygbm9uLXVuaXF1ZSBpbmRleCB3ZSBzZXQgU09fUkVTRVRfU05BUFNIT1QgZm9yIHRoZQotICog c2Nhbiwgd2hpY2ggY2F1c2VzIG5ldyBzbmFwc2hvdCB0byBiZSBzZXQgYXMgYWN0aXZlIGV2ZXJ5 IHNvIG9mdGVuLiBUaGUgcmVhc29uCi0gKiBmb3IgdGhhdCBpcyB0byBwcm9wYWdhdGUgdGhlIHht aW4gaG9yaXpvbiBmb3J3YXJkLgorICogRnVydGhlcm1vcmUsIHdlIHNldCBTT19SRVNFVF9TTkFQ U0hPVCBmb3IgdGhlIHNjYW4sIHdoaWNoIGNhdXNlcyBuZXcKKyAqIHNuYXBzaG90IHRvIGJlIHNl dCBhcyBhY3RpdmUgZXZlcnkgc28gb2Z0ZW4uIFRoZSByZWFzb24gZm9yIHRoYXQgaXMgdG8KKyAq IHByb3BhZ2F0ZSB0aGUgeG1pbiBob3Jpem9uIGZvcndhcmQuCiAgKgogICogTmV4dCwgd2UgbWFy ayB0aGUgaW5kZXggImluZGlzcmVhZHkiIChidXQgc3RpbGwgbm90ICJpbmRpc3ZhbGlkIikgYW5k CiAgKiBjb21taXQgdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBhbmQgc3RhcnQgYSB0aGlyZC4gIEFn YWluIHdlIHdhaXQgZm9yIGFsbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5k ZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRleCBiZTNkYzVl OGQyOC4uOWZmZjg2MzVkM2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4 Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNzA0LDgg KzE3MDQsOCBAQCBEZWZpbmVJbmRleChQYXJzZVN0YXRlICpwc3RhdGUsCiAJICogY2hhaW5zIGNh biBiZSBjcmVhdGVkIHdoZXJlIHRoZSBuZXcgdHVwbGUgYW5kIHRoZSBvbGQgdHVwbGUgaW4gdGhl CiAJICogY2hhaW4gaGF2ZSBkaWZmZXJlbnQgaW5kZXgga2V5cy4KIAkgKgotCSAqIFdlIGJ1aWxk IHRoZSBpbmRleCB1c2luZyBhbGwgdHVwbGVzIHRoYXQgYXJlIHZpc2libGUgdXNpbmcgc2luZ2xl IG9yCi0JICogbXVsdGlwbGUgcmVmcmVzaGluZyBzbmFwc2hvdHMuIFdlIGNhbiBiZSBzdXJlIHRo YXQgYW55IEhPVCB1cGRhdGVzIHRvCisJICogV2UgYnVpbGQgdGhlIGluZGV4IHVzaW5nIGFsbCB0 dXBsZXMgdGhhdCBhcmUgdmlzaWJsZSB1c2luZyBtdWx0aXBsZQorCSAqIHJlZnJlc2hpbmcgc25h cHNob3RzLiBXZSBjYW4gYmUgc3VyZSB0aGF0IGFueSBIT1QgdXBkYXRlcyB0bwogCSAqIHRoZXNl IHR1cGxlcyB3aWxsIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5kZXgsIHNpbmNlIGFueSB1cGRh dGVzIG1hZGUKIAkgKiBieSB0cmFuc2FjdGlvbnMgdGhhdCBkaWRuJ3Qga25vdyBhYm91dCB0aGUg aW5kZXggYXJlIG5vdyBjb21taXR0ZWQgb3IKIAkgKiByb2xsZWQgYmFjay4gIFRodXMsIGVhY2gg dmlzaWJsZSB0dXBsZSBpcyBlaXRoZXIgdGhlIGVuZCBvZiBpdHMKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggZGY5MmI5ZmVlNjguLmZiOTYwMzg0YzE4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTM1Niw2ICsx MzU2LDE2IEBACiAgIHNob3dfaG9vayA9PiAnc2hvd19pbl9ob3Rfc3RhbmRieScsCiB9LAogCit7 IG5hbWUgPT4gJ2luZGV4X2J1aWxkX2R1cGxpY2F0ZV9jaGVja19tYXhfZmV0Y2hfcGN0JywgdHlw ZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NVU0VUJywgZ3JvdXAgPT4gJ0RFVkVMT1BFUl9P UFRJT05TJywKKyAgc2hvcnRfZGVzYyA9PiAnTGltaXRzIGhlYXAgZmV0Y2hlcyBkdXJpbmcgZmFp bC1mYXN0IGR1cGxpY2F0ZSBjaGVja2luZyBpbiBjb25jdXJyZW50IHVuaXF1ZSBpbmRleCBidWls ZHMuJywKKyAgbG9uZ19kZXNjID0+ICdNYXhpbXVtIHBlcmNlbnRhZ2Ugb2YgdG90YWwgdHVwbGVz b3J0IHR1cGxlcyB0aGF0IG1heSB0cmlnZ2VyIGhlYXAgZmV0Y2hlcyBpbiB0aGUgc29ydCBjb21w YXJhdG9yLiBaZXJvIGRpc2FibGVzIHRoZSBmYWlsLWZhc3QgY2hlY2suIDEwMCBhbGxvd3MgdW5s aW1pdGVkIGZldGNoZXMuJywKKyAgZmxhZ3MgPT4gJ0dVQ19OT1RfSU5fU0FNUExFJywKKyAgdmFy aWFibGUgPT4gJ2luZGV4X2J1aWxkX2R1cGxpY2F0ZV9jaGVja19tYXhfZmV0Y2hfcGN0JywKKyAg Ym9vdF92YWwgPT4gJzEnLAorICBtaW4gPT4gJzAnLAorICBtYXggPT4gJzEwMCcsCit9LAorCiB7 IG5hbWUgPT4gJ2ludGVnZXJfZGF0ZXRpbWVzJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4g J1BHQ19JTlRFUk5BTCcsIGdyb3VwID0+ICdQUkVTRVRfT1BUSU9OUycsCiAgIHNob3J0X2Rlc2Mg PT4gJ1Nob3dzIHdoZXRoZXIgZGF0ZXRpbWVzIGFyZSBpbnRlZ2VyIGJhc2VkLicsCiAgIGZsYWdz ID0+ICdHVUNfUkVQT1JUIHwgR1VDX05PVF9JTl9TQU1QTEUgfCBHVUNfRElTQUxMT1dfSU5fRklM RScsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwppbmRleCA3MmMyYzI5OTVkOC4uYjljYWEw MDFmZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvc29ydC90dXBsZXNvcnQuYwpAQCAtNjg4LDYgKzY4OCw3IEBA IHR1cGxlc29ydF9iZWdpbl9iYXRjaChUdXBsZXNvcnRzdGF0ZSAqc3RhdGUpCiAJc3RhdGUtPnRh cGVzZXQgPSBOVUxMOwogCiAJc3RhdGUtPm1lbXR1cGNvdW50ID0gMDsKKwlzdGF0ZS0+YmFzZS5u dHVwbGVzID0gMDsKIAogCXN0YXRlLT5ncm93bWVtdHVwbGVzID0gdHJ1ZTsKIAlzdGF0ZS0+c2xh YkFsbG9jYXRvclVzZWQgPSBmYWxzZTsKQEAgLTEwNzMsNiArMTA3NCw3IEBAIHR1cGxlc29ydF9w dXR0dXBsZV9jb21tb24oVHVwbGVzb3J0c3RhdGUgKnN0YXRlLCBTb3J0VHVwbGUgKnR1cGxlLAog CS8qIGFjY291bnQgZm9yIHRoZSBtZW1vcnkgdXNlZCBmb3IgdGhpcyB0dXBsZSAqLwogCVVTRU1F TShzdGF0ZSwgdHVwbGVuKTsKIAlzdGF0ZS0+dHVwbGVNZW0gKz0gdHVwbGVuOworCXN0YXRlLT5i YXNlLm50dXBsZXMrKzsKIAogCWlmICghdXNlQWJicmV2KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwppbmRleCAyNTA5YWMzZTNhNC4uMmVjMGM3MTkxOGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL3NvcnQvdHVwbGVzb3J0dmFyaWFudHMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9zb3J0L3R1cGxlc29ydHZhcmlhbnRzLmMKQEAgLTI1LDkg KzI1LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL2hhc2guaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1 cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL25idHJlZS5oIgorI2luY2x1ZGUgImFjY2Vz cy9yZWxzY2FuLmgiCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJjYXRh bG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUg InBnX3RyYWNlLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgpAQCAtMzUsNyArMzgsOSBAQAogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3R1cGxlc29ydC5oIgor I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogCitpbnQJCQlpbmRleF9idWlsZF9kdXBsaWNhdGVf Y2hlY2tfbWF4X2ZldGNoX3BjdCA9IDE7CiAKIC8qIHNvcnQtdHlwZSBjb2RlcyBmb3Igc29ydF9f c3RhcnQgcHJvYmVzICovCiAjZGVmaW5lIEhFQVBfU09SVAkJMApAQCAtMTM2LDYgKzE0MSw5IEBA IHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQllbmZvcmNlVW5pcXVlOwkvKiBjb21wbGFpbiBpZiB3 ZSBmaW5kIGR1cGxpY2F0ZSB0dXBsZXMgKi8KIAlib29sCQl1bmlxdWVOdWxsc05vdERpc3RpbmN0 OyAvKiB1bmlxdWUgY29uc3RyYWludCBudWxsIHRyZWF0bWVudCAqLworCWJvb2wJCXVuaXF1ZURl YWRJZ25vcmVkOyAvKiBpZ25vcmUgZGVhZCB0dXBsZXMgaW4gdW5pcXVlIGNoZWNrICovCisJaW50 NjQJCWhlYXBGZXRjaENvdW50OwkvKiBoZWFwIGZldGNoZXMgcGVyZm9ybWVkIGluIGNvbXBhcmF0 b3IgKi8KKwlpbnQ2NAkJaGVhcEZldGNoTGltaXQ7CS8qIG1heCBhbGxvd2VkLCAtMSA9IG5vdCB5 ZXQgY29tcHV0ZWQgKi8KIH0gVHVwbGVzb3J0SW5kZXhCVHJlZUFyZzsKIAogLyoKQEAgLTM2MSw2 ICszNjksNyBAQCB0dXBsZXNvcnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwK IAkJCQkJCQlSZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQlib29sIGVuZm9yY2VVbmlxdWUsCiAJ CQkJCQkJYm9vbCB1bmlxdWVOdWxsc05vdERpc3RpbmN0LAorCQkJCQkJCWJvb2wgdW5pcXVlRGVh ZElnbm9yZWQsCiAJCQkJCQkJaW50IHdvcmtNZW0sCiAJCQkJCQkJU29ydENvb3JkaW5hdGUgY29v cmRpbmF0ZSwKIAkJCQkJCQlpbnQgc29ydG9wdCkKQEAgLTQwMyw2ICs0MTIsOSBAQCB0dXBsZXNv cnRfYmVnaW5faW5kZXhfYnRyZWUoUmVsYXRpb24gaGVhcFJlbCwKIAlhcmctPmluZGV4LmluZGV4 UmVsID0gaW5kZXhSZWw7CiAJYXJnLT5lbmZvcmNlVW5pcXVlID0gZW5mb3JjZVVuaXF1ZTsKIAlh cmctPnVuaXF1ZU51bGxzTm90RGlzdGluY3QgPSB1bmlxdWVOdWxsc05vdERpc3RpbmN0OworCWFy Zy0+dW5pcXVlRGVhZElnbm9yZWQgPSB1bmlxdWVEZWFkSWdub3JlZDsKKwlhcmctPmhlYXBGZXRj aENvdW50ID0gMDsKKwlhcmctPmhlYXBGZXRjaExpbWl0ID0gLTE7CiAKIAlpbmRleFNjYW5LZXkg PSBfYnRfbWtzY2Fua2V5KGluZGV4UmVsLCBOVUxMKTsKIApAQCAtMTY2Nyw5ICsxNjc5LDcgQEAg Y29tcGFyZXR1cF9pbmRleF9idHJlZV90aWVicmVhayhjb25zdCBTb3J0VHVwbGUgKmEsIGNvbnN0 IFNvcnRUdXBsZSAqYiwKIAkgKi8KIAlpZiAoYXJnLT5lbmZvcmNlVW5pcXVlICYmICEoIWFyZy0+ dW5pcXVlTnVsbHNOb3REaXN0aW5jdCAmJiBlcXVhbF9oYXNudWxsKSkKIAl7Ci0JCURhdHVtCQl2 YWx1ZXNbSU5ERVhfTUFYX0tFWVNdOwotCQlib29sCQlpc251bGxbSU5ERVhfTUFYX0tFWVNdOwot CQljaGFyCSAgICprZXlfZGVzYzsKKwkJYm9vbAkJdW5pcXVlQ2hlY2tGYWlsID0gdHJ1ZTsKIAog CQkvKgogCQkgKiBTb21lIHJhdGhlciBicmFpbi1kZWFkIGltcGxlbWVudGF0aW9ucyBvZiBxc29y dCAoc3VjaCBhcyB0aGUgb25lIGluCkBAIC0xNjc5LDE4ICsxNjg5LDc5IEBAIGNvbXBhcmV0dXBf aW5kZXhfYnRyZWVfdGllYnJlYWsoY29uc3QgU29ydFR1cGxlICphLCBjb25zdCBTb3J0VHVwbGUg KmIsCiAJCSAqLwogCQlBc3NlcnQodHVwbGUxICE9IHR1cGxlMik7CiAKLQkJaW5kZXhfZGVmb3Jt X3R1cGxlKHR1cGxlMSwgdHVwRGVzLCB2YWx1ZXMsIGlzbnVsbCk7Ci0KLQkJa2V5X2Rlc2MgPSBC dWlsZEluZGV4VmFsdWVEZXNjcmlwdGlvbihhcmctPmluZGV4LmluZGV4UmVsLCB2YWx1ZXMsIGlz bnVsbCk7Ci0KLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1VOSVFVRV9W SU9MQVRJT04pLAotCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4IFwi JXNcIiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhcmctPmluZGV4LmluZGV4UmVs KSksCi0JCQkJIGtleV9kZXNjID8gZXJyZGV0YWlsKCJLZXkgJXMgaXMgZHVwbGljYXRlZC4iLCBr ZXlfZGVzYykgOgotCQkJCSBlcnJkZXRhaWwoIkR1cGxpY2F0ZSBrZXlzIGV4aXN0LiIpLAotCQkJ CSBlcnJ0YWJsZWNvbnN0cmFpbnQoYXJnLT5pbmRleC5oZWFwUmVsLAotCQkJCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoYXJnLT5pbmRleC5pbmRleFJlbCkpKSk7CisJCS8qCisJCSAqIEZh aWwtZmFzdCBjaGVjazogcGVyZm9ybSBoZWFwIGZldGNoZXMgdG8gc2VlIGlmIGVpdGhlciB0dXBs ZSBpcworCQkgKiBkZWFkLCBhbGxvd2luZyB1cyB0byBza2lwIHRoZSB1bmlxdWVuZXNzIGVycm9y LiAgU2VlIF9idF9sb2FkIGZvcgorCQkgKiB0aGUgZGVmaW5pdGl2ZSBjaGVjay4KKwkJICoKKwkJ ICogVGhlIG51bWJlciBvZiBoZWFwIGZldGNoZXMgaXMgYm91bmRlZCBieQorCQkgKiBpbmRleF9i dWlsZF9kdXBsaWNhdGVfY2hlY2tfbWF4X2ZldGNoX3BjdCB0byBhdm9pZCBleGNlc3NpdmUgSS9P CisJCSAqIHdoZW4gbWFueSBlcXVhbCBrZXlzIGFyZSBjb21wYXJlZCBkdXJpbmcgc29ydGluZy4g IE9uY2UgdGhlIGJ1ZGdldAorCQkgKiBpcyBleGhhdXN0ZWQsIHdlIHNraXAgdGhlIGZhaWwtZmFz dCBjaGVjayBhbmQgbGV0IF9idF9sb2FkKCkKKwkJICogaGFuZGxlIHVuaXF1ZW5lc3MgdmVyaWZp Y2F0aW9uLgorCQkgKi8KKwkJaWYgKGFyZy0+dW5pcXVlRGVhZElnbm9yZWQpCisJCXsKKwkJCS8q IExhemlseSBjb21wdXRlIHRoZSBoZWFwIGZldGNoIGxpbWl0ICovCisJCQlpZiAoYXJnLT5oZWFw RmV0Y2hMaW1pdCA8IDApCisJCQl7CisJCQkJaWYgKGluZGV4X2J1aWxkX2R1cGxpY2F0ZV9jaGVj a19tYXhfZmV0Y2hfcGN0ID4gMCkKKwkJCQkJYXJnLT5oZWFwRmV0Y2hMaW1pdCA9IGJhc2UtPm50 dXBsZXMgKgorCQkJCQkJaW5kZXhfYnVpbGRfZHVwbGljYXRlX2NoZWNrX21heF9mZXRjaF9wY3Qg LyAxMDA7CisJCQkJZWxzZQorCQkJCQlhcmctPmhlYXBGZXRjaExpbWl0ID0gMDsKKwkJCX0KKwor CQkJaWYgKGFyZy0+aGVhcEZldGNoTGltaXQgPiAwICYmCisJCQkJYXJnLT5oZWFwRmV0Y2hDb3Vu dCA8IGFyZy0+aGVhcEZldGNoTGltaXQpCisJCQl7CisJCQkJYm9vbAlhbnlfdHVwbGVfZGVhZCwK KwkJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZSwKKwkJCQkJCWlnbm9yZWQ7CisJCQkJLyoKKwkJCQkg KiBLZWVwIHRoZSBzbG90L2ZldGNoIGxpZmV0aW1lIGxvY2FsIHRvIHRoaXMgZHVwbGljYXRlIGNo ZWNrCisJCQkJICogc28gdGhlIHhtaW4gcHJvcGFnYXRpb24gYXNzZXJ0aW9uIGJlbG93IGNvbnRp bnVlcyB0bworCQkJCSAqIHZhbGlkYXRlIGNsZWFudXAuCisJCQkJICovCisJCQkJVHVwbGVUYWJs ZVNsb3QgKnNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihh cmctPmluZGV4LmhlYXBSZWwpLAorCQkJCQkJCQkJCQkJCQkJCSZUVFNPcHNCdWZmZXJIZWFwVHVw bGUpOworCQkJCUl0ZW1Qb2ludGVyRGF0YSB0aWQgPSB0dXBsZTEtPnRfdGlkOworCisJCQkJSW5k ZXhGZXRjaFRhYmxlRGF0YSAqZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihhcmctPmlu ZGV4LmhlYXBSZWwsIFNPX05PTkUpOworCQkJCWFueV90dXBsZV9kZWFkID0gIXRhYmxlX2luZGV4 X2ZldGNoX3R1cGxlKGZldGNoLCAmdGlkLCBTbmFwc2hvdFNlbGYsIHNsb3QsICZjYWxsX2FnYWlu LCAmaWdub3JlZCk7CisJCQkJYXJnLT5oZWFwRmV0Y2hDb3VudCsrOworCisJCQkJaWYgKCFhbnlf dHVwbGVfZGVhZCkKKwkJCQl7CisJCQkJCWNhbGxfYWdhaW4gPSBmYWxzZTsKKwkJCQkJdGlkID0g dHVwbGUyLT50X3RpZDsKKwkJCQkJYW55X3R1cGxlX2RlYWQgPSAhdGFibGVfaW5kZXhfZmV0Y2hf dHVwbGUoZmV0Y2gsICZ0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwgJmNhbGxfYWdhaW4sCisJCQkJ CQkJCQkJCQkJCQkgICZpZ25vcmVkKTsKKwkJCQkJYXJnLT5oZWFwRmV0Y2hDb3VudCsrOworCQkJ CX0KKworCQkJCWlmIChhbnlfdHVwbGVfZGVhZCkKKwkJCQl7CisJCQkJCWVsb2coREVCVUc1LCAi c2tpcHBpbmcgZHVwbGljYXRlIHZhbHVlcyBiZWNhdXNlIHNvbWUgb2YgdGhlbSBhcmUgZGVhZDog KCV1LCV1KSB2cyAoJXUsJXUpIiwKKwkJCQkJCSBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKCZ0 dXBsZTEtPnRfdGlkKSwKKwkJCQkJCSBJdGVtUG9pbnRlckdldE9mZnNldE51bWJlcigmdHVwbGUx LT50X3RpZCksCisJCQkJCQkgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcigmdHVwbGUyLT50X3Rp ZCksCisJCQkJCQkgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIoJnR1cGxlMi0+dF90aWQpKTsK KworCQkJCQl1bmlxdWVDaGVja0ZhaWwgPSBmYWxzZTsKKwkJCQl9CisJCQkJRXhlY0Ryb3BTaW5n bGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJCQl0YWJsZV9pbmRleF9mZXRjaF9lbmQoZmV0Y2gp OworCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoTXlQcm9jLT54bWluKSk7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJLyogQnVkZ2V0IGV4aGF1c3RlZDsgZGVmZXIgdG8gX2J0X2xv YWQoKSAqLworCQkJCXVuaXF1ZUNoZWNrRmFpbCA9IGZhbHNlOworCQkJfQorCQl9CisJCWlmICh1 bmlxdWVDaGVja0ZhaWwpCisJCQlfYnRfcmVwb3J0X2R1cGxpY2F0ZShhcmctPmluZGV4LmluZGV4 UmVsLCBhcmctPmluZGV4LmhlYXBSZWwsIHR1cGxlMSk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUu aAppbmRleCAzMDk3ZTliYjFhZi4uYmQ3ODliN2QzNDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9uYnRyZWUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKQEAgLTEz MDcsMTMgKzEzMDcsMTcgQEAgZXh0ZXJuIGJvb2wgYnRwcm9wZXJ0eShPaWQgaW5kZXhfb2lkLCBp bnQgYXR0bm8sCiBleHRlcm4gY2hhciAqYnRidWlsZHBoYXNlbmFtZShpbnQ2NCBwaGFzZW51bSk7 CiBleHRlcm4gSW5kZXhUdXBsZSBfYnRfdHJ1bmNhdGUoUmVsYXRpb24gcmVsLCBJbmRleFR1cGxl IGxhc3RsZWZ0LAogCQkJCQkJCSAgIEluZGV4VHVwbGUgZmlyc3RyaWdodCwgQlRTY2FuSW5zZXJ0 IGl0dXBfa2V5KTsKK2V4dGVybiBpbnQJX2J0X2tlZXBfbmF0dHMoUmVsYXRpb24gcmVsLCBJbmRl eFR1cGxlIGxhc3RsZWZ0LCBJbmRleFR1cGxlIGZpcnN0cmlnaHQsCisJCQkJCQkgICBCVFNjYW5J bnNlcnQgaXR1cF9rZXksIGJvb2wgKmhhc251bGxzKTsKIGV4dGVybiBpbnQJX2J0X2tlZXBfbmF0 dHNfZmFzdChSZWxhdGlvbiByZWwsIEluZGV4VHVwbGUgbGFzdGxlZnQsCi0JCQkJCQkJCUluZGV4 VHVwbGUgZmlyc3RyaWdodCk7CisJCQkJCQkJCUluZGV4VHVwbGUgZmlyc3RyaWdodCwgYm9vbCAq aGFzbnVsbHMpOwogZXh0ZXJuIGJvb2wgX2J0X2NoZWNrX25hdHRzKFJlbGF0aW9uIHJlbCwgYm9v bCBoZWFwa2V5c3BhY2UsIFBhZ2UgcGFnZSwKIAkJCQkJCQlPZmZzZXROdW1iZXIgb2ZmbnVtKTsK IGV4dGVybiB2b2lkIF9idF9jaGVja190aGlyZF9wYWdlKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24g aGVhcCwKIAkJCQkJCQkJIGJvb2wgbmVlZGhlYXB0aWRzcGFjZSwgUGFnZSBwYWdlLCBJbmRleFR1 cGxlIG5ld3R1cCk7CiBleHRlcm4gYm9vbCBfYnRfYWxsZXF1YWxpbWFnZShSZWxhdGlvbiByZWws IGJvb2wgZGVidWdtZXNzYWdlKTsKK2V4dGVybiB2b2lkIF9idF9yZXBvcnRfZHVwbGljYXRlKFJl bGF0aW9uIGluZGV4UmVsLCBSZWxhdGlvbiBoZWFwUmVsLAorCQkJCQkJCQkgSW5kZXhUdXBsZSBp dHVwKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBuYnR2YWxpZGF0ZS5j CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3RhYmxlYW0uaAppbmRleCAyMTk1MjVkYmNiMC4uZDFhMjk4YmYxYmIgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3RhYmxlYW0uaApAQCAtMTg2Nyw5ICsxODY3LDEwIEBAIHRhYmxlX3NjYW5fYW5hbHl6ZV9uZXh0 X3R1cGxlKFRhYmxlU2NhbkRlc2Mgc2NhbiwKICAqIFRoaXMgb25seSByZWFsbHkgbWFrZXMgc2Vu c2UgZm9yIGhlYXAgQU0sIGl0IG1pZ2h0IG5lZWQgdG8gYmUgZ2VuZXJhbGl6ZWQKICAqIGZvciBv dGhlciBBTXMgbGF0ZXIuCiAgKgotICogSW4gY2FzZSBvZiBub24tdW5pcXVlIGNvbmN1cnJlbnQg YnVpbGQsCi0gKiBjb25jdXJyZW50X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMg aXMgYXBwbGllZCBmb3IgdGhlIHNjYW4uCi0gKiBUaGF0IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBz aG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4gaG9yaXpvbiBwcm9wYWdhdGUuCisgKiBJbiBj YXNlIG9mIGNvbmN1cnJlbnQgaW5kZXggYnVpbGQsCisgKiBjb25jdXJyZW50X2luZGV4X3Jlc2V0 X3NuYXBzaG90X2V2ZXJ5X25fcGFnZXMgaXMgYXBwbGllZCBmb3IgdGhlCisgKiBzY2FuLiBUaGF0 IGxlYWRzIHRvIGNoYW5naW5nIHNuYXBzaG90cyBvbiB0aGUgZmx5IHRvIGFsbG93IHhtaW4KKyAq IGhvcml6b24gcHJvcGFnYXRlLgogICovCiBzdGF0aWMgaW5saW5lIGRvdWJsZQogdGFibGVfaW5k ZXhfYnVpbGRfc2NhbihSZWxhdGlvbiB0YWJsZV9yZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNjBm ODM1NmVkODIuLmVkMDAwYmYxMGQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC0zMiwxMyArMzIsMTEg QEAgdHlwZWRlZiBzdHJ1Y3QgQXR0ck1hcCBBdHRyTWFwOwogICoKICAqIFNuYXBzaG90IHJlc2V0 dGluZyBpcyBvbmx5IGFwcGxpY2FibGUgd2hlbiBhbGwgb2Y6CiAgKiAtIHRoZSBidWlsZCBpcyBj b25jdXJyZW50IChpaV9Db25jdXJyZW50KQotICogLSB0aGUgaW5kZXggaXMgbm9uLXVuaXF1ZSAo dW5pcXVlIG5lZWRzIGNvbnNpc3RlbnQgc25hcHNob3QpCiAgKiAtIGlzb2xhdGlvbiBsZXZlbCBp cyBub3QgUkVQRUFUQUJMRSBSRUFEL1NFUklBTElaQUJMRSAodGhvc2Uga2VlcCBhCiAgKiAgIHJl Z2lzdGVyZWQgdHJhbnNhY3Rpb24gc25hcHNob3QpCiAgKi8KICNkZWZpbmUgSW5kZXhCdWlsZFJl c2V0c1NuYXBzaG90cyhpbmRleEluZm8pIFwKIAkoKGluZGV4SW5mbyktPmlpX0NvbmN1cnJlbnQg JiYgXAotCSAhKGluZGV4SW5mbyktPmlpX1VuaXF1ZSAmJiBcCiAJICFJc29sYXRpb25Vc2VzWGFj dFNuYXBzaG90KCkpCiAKIC8qIEFjdGlvbiBjb2RlIGZvciBpbmRleF9zZXRfc3RhdGVfZmxhZ3Mg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oIGIvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmgKaW5kZXggMDljYmI0YjFkOTkuLjg5NTRiNzgxOGYwIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaAorKysgYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMjcz LDYgKzI3Myw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBkb3VibGUgaGFzaF9tZW1fbXVsdGlwbGll cjsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWFpbnRlbmFuY2Vfd29ya19tZW07CiBleHRlcm4g UEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBjb25jdXJyZW50X2luZGV4X3Jlc2V0X3NuYXBzaG90X2V2ZXJ5X25f cGFnZXM7CitleHRlcm4gUEdETExJTVBPUlQgaW50IGluZGV4X2J1aWxkX2R1cGxpY2F0ZV9jaGVj a19tYXhfZmV0Y2hfcGN0OwogCiAvKgogICogVXBwZXIgYW5kIGxvd2VyIGhhcmQgbGltaXRzIGZv ciB0aGUgYnVmZmVyIGFjY2VzcyBzdHJhdGVneSByaW5nIHNpemUKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3R1cGxlc29ydC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzb3J0LmgK aW5kZXggZGE2OGY0NWFjZjIuLjE5MTAxMGM1N2MzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91 dGlscy90dXBsZXNvcnQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90dXBsZXNvcnQuaApAQCAt MjE2LDYgKzIxNiw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlib29sCQl0dXBsZXM7CQkJLyogQ2Fu IFNvcnRUdXBsZS50dXBsZSBldmVyIGJlIHNldD8gKi8KIAorCWludDY0CQludHVwbGVzOwkJLyog dG90YWwgdHVwbGVzIGluc2VydGVkIGludG8gc29ydCAqLworCiAJdm9pZAkgICAqYXJnOwkJCS8q IFNwZWNpZmljIGluZm9ybWF0aW9uIGZvciB0aGUgc29ydCB2YXJpYW50ICovCiB9IFR1cGxlc29y dFB1YmxpYzsKIApAQCAtMzk2LDYgKzM5OCw3IEBAIGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVw bGVzb3J0X2JlZ2luX2luZGV4X2J0cmVlKFJlbGF0aW9uIGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkg ICBSZWxhdGlvbiBpbmRleFJlbCwKIAkJCQkJCQkJCQkJCSAgIGJvb2wgZW5mb3JjZVVuaXF1ZSwK IAkJCQkJCQkJCQkJCSAgIGJvb2wgdW5pcXVlTnVsbHNOb3REaXN0aW5jdCwKKwkJCQkJCQkJCQkJ CSAgIGJvb2wJdW5pcXVlRGVhZElnbm9yZWQsCiAJCQkJCQkJCQkJCQkgICBpbnQgd29ya01lbSwg U29ydENvb3JkaW5hdGUgY29vcmRpbmF0ZSwKIAkJCQkJCQkJCQkJCSAgIGludCBzb3J0b3B0KTsK IGV4dGVybiBUdXBsZXNvcnRzdGF0ZSAqdHVwbGVzb3J0X2JlZ2luX2luZGV4X2hhc2goUmVsYXRp b24gaGVhcFJlbCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0aW9uX3BvaW50 cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dCBiL3NyYy90ZXN0L21vZHVsZXMvaW5q ZWN0aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAppbmRleCBlNWE4 YTdmM2E3OS4uNzgzNWE3OTZiODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9leHBlY3RlZC9jaWNfcmVzZXRfc25hcHNob3RzLm91dAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL2luamVjdGlvbl9wb2ludHMvZXhwZWN0ZWQvY2ljX3Jlc2V0X3NuYXBzaG90cy5v dXQKQEAgLTQxLDcgKzQxLDExIEBAIEVORDsgJCQ7CiAtLS0tLS0tLS0tLS0tLS0tCiBBTFRFUiBU QUJMRSBjaWNfcmVzZXRfc25hcC50YmwgU0VUIChwYXJhbGxlbF93b3JrZXJzPTApOwogQ1JFQVRF IFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsK K05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9iZWdp bnNjYW5fc3RyYXRfcmVzZXRfc25hcHNob3RzCitOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgaGVhcF9yZXNldF9zY2FuX3NuYXBzaG90X2VmZmVjdGl2ZQogUkVJ TkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4OworTk9USUNFOiAgbm90 aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdF9y ZXNldF9zbmFwc2hvdHMKK05PVElDRTogIG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBw b2ludCBoZWFwX3Jlc2V0X3NjYW5fc25hcHNob3RfZWZmZWN0aXZlCiBEUk9QIElOREVYIENPTkNV UlJFTlRMWSBjaWNfcmVzZXRfc25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlk eCBPTiBjaWNfcmVzZXRfc25hcC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZv ciBpbmplY3Rpb24gcG9pbnQgdGFibGVfYmVnaW5zY2FuX3N0cmF0X3Jlc2V0X3NuYXBzaG90cwpA QCAtODYsNyArOTAsOSBAQCBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2hlYXBfcmVz ZXRfc2Nhbl9zbmFwc2hvdF9lZmZlY3RpdmUnKTsKICgxIHJvdykKIAogQ1JFQVRFIFVOSVFVRSBJ TkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIGNpY19yZXNldF9zbmFwLnRibChpKTsKK05PVElDRTog IG5vdGljZSB0cmlnZ2VyZWQgZm9yIGluamVjdGlvbiBwb2ludCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZQogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgY2ljX3Jlc2V0X3NuYXAuaWR4 OworTk9USUNFOiAgbm90aWNlIHRyaWdnZXJlZCBmb3IgaW5qZWN0aW9uIHBvaW50IHRhYmxlX3Bh cmFsbGVsc2Nhbl9pbml0aWFsaXplCiBEUk9QIElOREVYIENPTkNVUlJFTlRMWSBjaWNfcmVzZXRf c25hcC5pZHg7CiBDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIGlkeCBPTiBjaWNfcmVzZXRfc25h cC50YmwoaSk7CiBOT1RJQ0U6ICBub3RpY2UgdHJpZ2dlcmVkIGZvciBpbmplY3Rpb24gcG9pbnQg dGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUKLS0gCjIuNDMuMAoK --000000000000675090064fbc2171 Content-Type: application/octet-stream; name="v6-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Disposition: attachment; filename="v6-0001-Add-stress-tests-for-concurrent-index-builds.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo4bhjjv0 RnJvbSA5M2YwMTU5MDEzNTY5YWRlODkzMTE3NjM1ZGU5ODgwMTYzNWUzMjMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtoYWlsIE5pa2FsYXlldSA8bWloYWlsbmlrYWxheWV1QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAzMCBOb3YgMjAyNCAxNjoyNDoyMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjYgMS80XSBBZGQgc3RyZXNzIHRlc3RzIGZvciBjb25jdXJyZW50IGluZGV4IGJ1aWxk cwoKSW50cm9kdWNlIHN0cmVzcyB0ZXN0cyBmb3IgY29uY3VycmVudCBpbmRleCBvcGVyYXRpb25z OgotIHRlc3QgY29uY3VycmVudCBpbnNlcnRzL3VwZGF0ZXMgZHVyaW5nIENSRUFURS9SRUlOREVY IElOREVYIENPTkNVUlJFTlRMWQotIGNvdmVyIHZhcmlvdXMgaW5kZXggdHlwZXMgKGJ0cmVlLCBn aW4sIGdpc3QsIGJyaW4sIGhhc2gsIHNwZ2lzdCkKLSB0ZXN0IHVuaXF1ZSBhbmQgbm9uLXVuaXF1 ZSBpbmRleGVzCi0gdGVzdCB3aXRoIGV4cHJlc3Npb25zIGFuZCBwcmVkaWNhdGVzCi0gdGVzdCBi b3RoIHBhcmFsbGVsIGFuZCBub24tcGFyYWxsZWwgb3BlcmF0aW9ucwotIHRlc3QgYm90aCByZWFk LWNvbW1pdHRlZCBhbmQgcmVwZWF0YWJsZS1yZWFkIGlzb2xhdGlvbiBsZXZlbHMKClRoZXNlIHRl c3RzIHZlcmlmeSB0aGUgYmVoYXZpb3Igb2YgdGhlIGZvbGxvd2luZyBjb21taXRzLgotLS0KIHNy Yy9iaW4vcGdfYW1jaGVjay9tZXNvbi5idWlsZCAgfCAgIDEgKwogc3JjL2Jpbi9wZ19hbWNoZWNr L3QvMDA2X2NpYy5wbCB8IDI5MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBm aWxlcyBjaGFuZ2VkLCAyOTQgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i aW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2FtY2hl Y2svbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX2FtY2hlY2svbWVzb24uYnVpbGQKaW5kZXggNTky Y2VmNzRlY2IuLjUxYTYyZGNjYjdiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FtY2hlY2svbWVz b24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ19hbWNoZWNrL21lc29uLmJ1aWxkCkBAIC0yOCw2ICsy OCw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwM19jaGVjay5wbCcsCiAgICAgICAndC8wMDRf dmVyaWZ5X2hlYXBhbS5wbCcsCiAgICAgICAndC8wMDVfb3BjbGFzc19kYW1hZ2UucGwnLAorICAg ICAgJ3QvMDA2X2NpYy5wbCcsCiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfYW1jaGVjay90LzAwNl9jaWMucGwgYi9zcmMvYmluL3BnX2FtY2hlY2svdC8wMDZfY2ljLnBs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kZDdhMWVmZjBlZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jaWMucGwKQEAgLTAsMCAr MSwyOTMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorCisjIFRlc3QgUkVJTkRFWCBDT05DVVJSRU5UTFkgd2l0aCBjb25jdXJyZW50 IG1vZGlmaWNhdGlvbnMgYW5kIEhPVCB1cGRhdGVzCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz IEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCit1c2UgY29uc3RhbnQg U1RSRVNTX1BHQkVOQ0hfQ0xJRU5UUyA9PiAzMDsKK3VzZSBjb25zdGFudCBTVFJFU1NfUEdCRU5D SF9KT0JTID0+IDg7Cit1c2UgY29uc3RhbnQgU1RSRVNTX1BHQkVOQ0hfVFJBTlNBQ1RJT05TID0+ IDEwMDAwOwordXNlIGNvbnN0YW50IFNUUkVTU19NQVhfU0xFRVBfTVMgPT4gMTA7CisKK3VzZSBj b25zdGFudCBERUZBVUxUX1BHQkVOQ0hfQ0xJRU5UUyA9PiAxNTsKK3VzZSBjb25zdGFudCBERUZB VUxUX1BHQkVOQ0hfSk9CUyA9PiA0OwordXNlIGNvbnN0YW50IERFRkFVTFRfUEdCRU5DSF9UUkFO U0FDVElPTlMgPT4gNTAwOwordXNlIGNvbnN0YW50IERFRkFVTFRfTUFYX1NMRUVQX01TID0+IDE7 CisKK1Rlc3Q6Ok1vcmUtPmJ1aWxkZXItPnRvZG9fc3RhcnQoJ2ZpbGVzeXN0ZW0gYnVnJykKKyAg aWYgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6Omhhc193YWxfcmVhZF9idWc7CisKK215ICRub2Rl OworbXkgJHBnX3Rlc3RfZXh0cmEgPSAkRU5We1BHX1RFU1RfRVhUUkF9IC8vICcnOworbXkgJGlz X3N0cmVzcyA9ICRwZ190ZXN0X2V4dHJhID1+IC9cYnN0cmVzc1xiLyA/IDEgOiAwOworbXkgJHBn YmVuY2hfY2xpZW50cyA9CisgICRpc19zdHJlc3MgPyBTVFJFU1NfUEdCRU5DSF9DTElFTlRTIDog REVGQVVMVF9QR0JFTkNIX0NMSUVOVFM7CitteSAkcGdiZW5jaF9qb2JzID0gJGlzX3N0cmVzcyA/ IFNUUkVTU19QR0JFTkNIX0pPQlMgOiBERUZBVUxUX1BHQkVOQ0hfSk9CUzsKK215ICRwZ2JlbmNo X3RyYW5zYWN0aW9ucyA9CisgICRpc19zdHJlc3MgPyBTVFJFU1NfUEdCRU5DSF9UUkFOU0FDVElP TlMgOiBERUZBVUxUX1BHQkVOQ0hfVFJBTlNBQ1RJT05TOworbXkgJG1heF9zbGVlcF9tcyA9ICRp c19zdHJlc3MgPyBTVFJFU1NfTUFYX1NMRUVQX01TIDogREVGQVVMVF9NQVhfU0xFRVBfTVM7Citt eSAkcGdiZW5jaF9vcHRpb25zID0gc3ByaW50ZigKKwknLS1uby12YWN1dW0gLS1jbGllbnQ9JWQg LS1qb2JzPSVkIC0tZXhpdC1vbi1hYm9ydCAtLXRyYW5zYWN0aW9ucz0lZCcsCisJJHBnYmVuY2hf Y2xpZW50cywKKwkkcGdiZW5jaF9qb2JzLAorCSRwZ2JlbmNoX3RyYW5zYWN0aW9ucyk7CitteSAk bm9faG90ID0gJGlzX3N0cmVzcyA/IGludChyYW5kKDIpKSA6IDA7CisKK3ByaW50KAorCQlzcHJp bnRmKAorCQknc2V0dGluZ3M6IFBHX1RFU1RfRVhUUkE9JXMgc3RyZXNzPSVkIGNsaWVudHM9JWQg am9icz0lZCB0cmFuc2FjdGlvbnM9JWQgbWF4X3NsZWVwX21zPSVkIG5vX2hvdD0lZCcsCisJCWRl ZmluZWQoJEVOVntQR19URVNUX0VYVFJBfSkKKwkJPyAoJHBnX3Rlc3RfZXh0cmEgZXEgJycgPyAn KGVtcHR5KScgOiAkcGdfdGVzdF9leHRyYSkKKwkJOiAnKHVuZGVmKScsCisJCSRpc19zdHJlc3Ms CisJCSRwZ2JlbmNoX2NsaWVudHMsCisJCSRwZ2JlbmNoX2pvYnMsCisJCSRwZ2JlbmNoX3RyYW5z YWN0aW9ucywKKwkJJG1heF9zbGVlcF9tcywKKwkJJG5vX2hvdCkpOworcHJpbnQgIlxuIjsKKwor IworIyBUZXN0IHNldC11cAorIworJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAgKiAkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgJ21haW50ZW5hbmNlX3dvcmtfbWVtID0gMzJNQicpOyAjIHRvIGF2b2lkIE9PTQor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2hhcmVkX2J1ZmZlcnMgPSAz Mk1CJyk7ICMgdG8gYXZvaWQgT09NCiskbm9kZS0+c3RhcnQ7Ciskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoQ1JFQVRFIEVYVEVOU0lPTiBhbWNoZWNrKSk7Ciskbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsIHEoQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRibChpIGludCBwcmltYXJ5IGtl eSwKKwkJCQkJCQkJYzEgbW9uZXkgZGVmYXVsdCAwLCBjMiBtb25leSBkZWZhdWx0IDAsCisJCQkJ CQkJCWMzIG1vbmV5IGRlZmF1bHQgMCwgdXBkYXRlZF9hdCB0aW1lc3RhbXAsCisJCQkJCQkJCWlh IGludDRbXSwgcCBwb2ludCkpKTsKKworaWYgKCRub19ob3QpIHsgJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgaWR4IE9OIHRibChpLCB1cGRh dGVkX2F0KTspKTsgfQorCisjIGNyZWF0ZSBzZXF1ZW5jZQorJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCBxKENSRUFURSBVTkxPR0dFRCBTRVFVRU5DRSBpbl9yb3dfcmVidWlsZCBTVEFSVCAx IElOQ1JFTUVOVCAxOykpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKFNFTEVDVCBu ZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpOykpOworCisjIENyZWF0ZSBoZWxwZXIgZnVuY3Rpb25z IGZvciBwcmVkaWNhdGUgdGVzdHMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlD UkVBVEUgRlVOQ1RJT04gcHJlZGljYXRlX3N0YWJsZSgpIFJFVFVSTlMgYm9vbCBJTU1VVEFCTEUK KwlMQU5HVUFHRSBwbHBnc3FsIEFTICQkCisJQkVHSU4KKwkJRVhFQ1VURSAnU0VMRUNUIHR4aWRf Y3VycmVudCgpJzsKKwkJUkVUVVJOIHRydWU7CisJRU5EOyAkJDsKKykpOworCiskbm9kZS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIEZVTkNUSU9OIHByZWRpY2F0ZV9jb25zdChp bnRlZ2VyKSBSRVRVUk5TIGJvb2wgSU1NVVRBQkxFCisJTEFOR1VBR0UgcGxwZ3NxbCBBUyAkJAor CUJFR0lOCisJCVJFVFVSTiBNT0QoJDEsIDIpID0gMDsKKwlFTkQ7ICQkOworKSk7CisKKyMgUnVu IENJQy9SSUMgaW4gZGlmZmVyZW50IG9wdGlvbnMgY29uY3VycmVudGx5IHdpdGggdXBzZXJ0cwor JG5vZGUtPnBnYmVuY2goCisJJHBnYmVuY2hfb3B0aW9ucywKKwkwLAorCVtxcnthY3R1YWxseSBw cm9jZXNzZWR9XSwKKwlbcXJ7XiR9XSwKKwknY29uY3VycmVudCBvcGVyYXRpb25zIHdpdGggUkVJ TkRFWC9DUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZJywKKwl7CisJCSdjb25jdXJyZW50X29wcycg PT4gc3ByaW50ZihxKAorCQkJU0VUIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb2ZmOyAtLSB0aGlz IGlzIGJlY2F1c2UgcHJlZGljYXRlX3N0YWJsZSBpbXBsZW1lbnRhdGlvbgorCQkJU0VMRUNUIHBn X3RyeV9hZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYg OmdvdGxvY2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3Zh bHVlIFxnc2V0CisJCQkJXHNldCB2YXJpYW50IHJhbmRvbSgwLCA1KQorCQkJCVxzZXQgcGFyYWxs ZWxzIHJhbmRvbSgwLCA0KQorCQkJCVxzZXQgdXNlX3JyIHJhbmRvbSgwLCA5KQorCQkJCVxpZiA6 bGFzdF92YWx1ZSA8IDMKKwkJCQkJQUxURVIgVEFCTEUgdGJsIFNFVCAocGFyYWxsZWxfd29ya2Vy cz06cGFyYWxsZWxzKTsKKwkJCQkJXGlmIDp1c2VfcnIgPSAwCisJCQkJCQlTRVQgZGVmYXVsdF90 cmFuc2FjdGlvbl9pc29sYXRpb24gPSAncmVwZWF0YWJsZSByZWFkJzsKKwkJCQkJXGVuZGlmCisJ CQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3 X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMQorCQkJ CQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KSBXSEVSRSBwcmVkaWNhdGVfc3RhYmxlKCk7CisJCQkJCVxlbGlmIDp2YXJpYW50ID0gMgorCQkJ CQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9OIHRibChpLCB1cGRhdGVkX2F0 KSBXSEVSRSBNT0QoaSwgMikgPSAwOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwoaSwgdXBkYXRlZF9hdCkgV0hF UkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDQKKwkJCQkJCUNS RUFURSBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwocHJlZGljYXRlX2NvbnN0KGkp KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSA1CisJCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVO VExZIG5ld19pZHggT04gdGJsKGksIHByZWRpY2F0ZV9jb25zdChpKSwgdXBkYXRlZF9hdCkgV0hF UkUgcHJlZGljYXRlX2NvbnN0KGkpOworCQkJCQlcZW5kaWYKKwkJCQkJXHNldCBzbGVlcF9tcyBy YW5kb20oMCwgJWQpCisJCQkJCVxzbGVlcCA6c2xlZXBfbXMgbXMKKwkJCQkJU0VMRUNUIGJ0X2lu ZGV4X2NoZWNrKCduZXdfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUg PT4gdHJ1ZSk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJ CVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJ CQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRy dWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlEUk9QIElOREVYIENPTkNVUlJFTlRMWSBu ZXdfaWR4OworCQkJCQlSRVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbjsKKwkJCQlc ZW5kaWYKKwkJCQlTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDQyKTsKKwkJCVxlbHNlCisJCQkJ XHNldCBudW0gcmFuZG9tKDEwMDAsIDEwMDAwMCkKKwkJCQlCRUdJTjsKKwkJCQlJTlNFUlQgSU5U TyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29y KHJhbmRvbSgpKjEwMCk6OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBD T05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtm bG9vcihyYW5kb20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOwor CQkJCUlOU0VSVCBJTlRPIHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93 KCksQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20o KSkpCisJCQkJCU9OIENPTkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygp LCBpYSA9IEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20o KSxyYW5kb20oKSk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSxBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJh bmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCksIGlhID0gQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9 IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKTsKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZs b29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6 OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSox MDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOworCQkJCUlOU0VSVCBJTlRP IHRibCBWQUxVRVMoZmxvb3IocmFuZG9tKCkqOm51bSksMCwwLDAsbm93KCksQVJSQVlbZmxvb3Io cmFuZG9tKCkqMTAwKTo6aW50XSxwb2ludChyYW5kb20oKSxyYW5kb20oKSkpCisJCQkJCU9OIENP TkZMSUNUKGkpIERPIFVQREFURSBTRVQgdXBkYXRlZF9hdCA9IG5vdygpLCBpYSA9IEFSUkFZW2Zs b29yKHJhbmRvbSgpKjEwMCk6OmludF0sIHAgPSBwb2ludChyYW5kb20oKSxyYW5kb20oKSk7CisJ CQkJU0VMRUNUIHNldHZhbCgnaW5fcm93X3JlYnVpbGQnLCAxKTsKKwkJCQlDT01NSVQ7CisJCQlc ZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMsICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVu IENJQy9SSUMgZm9yIHVuaXF1ZSBpbmRleCBjb25jdXJyZW50bHkgd2l0aCB1cHNlcnRzCiskbm9k ZS0+cGdiZW5jaCgKKwkkcGdiZW5jaF9vcHRpb25zLAorCTAsCisJW3Fye2FjdHVhbGx5IHByb2Nl c3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlvbnMgd2l0aCBSRUlOREVY L0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIHVuaXF1ZSBCVFJFRScsCisJeworCQknY29u Y3VycmVudF9vcHNfdW5pcXVlX2lkeCcgPT4gc3ByaW50ZihxKAorCQkJU0VMRUNUIHBnX3RyeV9h ZHZpc29yeV9sb2NrKDQyKTo6aW50ZWdlciBBUyBnb3Rsb2NrIFxnc2V0CisJCQlcaWYgOmdvdGxv Y2sKKwkJCQlTRUxFQ1QgbmV4dHZhbCgnaW5fcm93X3JlYnVpbGQnKSBBUyBsYXN0X3ZhbHVlIFxn c2V0CisJCQkJXHNldCBwYXJhbGxlbHMgcmFuZG9tKDAsIDQpCisJCQkJXHNldCB1c2VfcnIgcmFu ZG9tKDAsIDkpCisJCQkJXGlmIDpsYXN0X3ZhbHVlIDwgMworCQkJCQlBTFRFUiBUQUJMRSB0Ymwg U0VUIChwYXJhbGxlbF93b3JrZXJzPTpwYXJhbGxlbHMpOworCQkJCQlcaWYgOnVzZV9yciA9IDAK KwkJCQkJCVNFVCBkZWZhdWx0X3RyYW5zYWN0aW9uX2lzb2xhdGlvbiA9ICdyZXBlYXRhYmxlIHJl YWQnOworCQkJCQlcZW5kaWYKKwkJCQkJQ1JFQVRFIFVOSVFVRSBJTkRFWCBDT05DVVJSRU5UTFkg bmV3X2lkeCBPTiB0YmwoaSk7CisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJ CQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJCVNFTEVDVCBidF9pbmRleF9jaGVjaygnbmV3X2lk eCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIGNoZWNrdW5pcXVlID0+IHRydWUpOworCQkJCQlS RUlOREVYIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4OworCQkJCQlcc2V0IHNsZWVwX21zIHJh bmRvbSgwLCAlZCkKKwkJCQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgYnRfaW5k ZXhfY2hlY2soJ25ld19pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCBjaGVja3VuaXF1ZSA9 PiB0cnVlKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJUkVT RVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRpb247CisJCQkJXGVuZGlmCisJCQkJU0VMRUNU IHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlcZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgx LCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJCQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZs b29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygpLEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6 OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkpKQorCQkJCQlPTiBDT05GTElDVChpKSBETyBV UERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwgaWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSox MDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCkscmFuZG9tKCkpOworCQkJCVNFTEVDVCBzZXR2 YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlcZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMs ICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShU UlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVuIENJQy9SSUMgZm9yIEdJTiB3aXRoIHVwc2Vy dHMKKyRub2RlLT5wZ2JlbmNoKAorCSRwZ2JlbmNoX29wdGlvbnMsCisJMCwKKwlbcXJ7YWN0dWFs bHkgcHJvY2Vzc2VkfV0sCisJW3Fye14kfV0sCisJJ2NvbmN1cnJlbnQgb3BlcmF0aW9ucyB3aXRo IFJFSU5ERVgvQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBmb3IgR0lOJywKKwl7CisJCSdjb25j dXJyZW50X29wc19naW5faWR4JyA9PiBzcHJpbnRmKHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlz b3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxvY2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jawor CQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVidWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQK KwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwgNCkKKwkJCQlcc2V0IHVzZV9yciByYW5kb20o MCwgOSkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAzCisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQg KHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7CisJCQkJCVxpZiA6dXNlX3JyID0gMAorCQkJ CQkJU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNvbGF0aW9uID0gJ3JlcGVhdGFibGUgcmVhZCc7 CisJCQkJCVxlbmRpZgorCQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04g dGJsIFVTSU5HIEdJTiAoaWEpOworCQkJCQlcc2V0IHNsZWVwX21zIHJhbmRvbSgwLCAlZCkKKwkJ CQkJXHNsZWVwIDpzbGVlcF9tcyBtcworCQkJCQlTRUxFQ1QgZ2luX2luZGV4X2NoZWNrKCduZXdf aWR4Jyk7CisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxz ZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJ CVNFTEVDVCBnaW5faW5kZXhfY2hlY2soJ25ld19pZHgnKTsKKwkJCQkJRFJPUCBJTkRFWCBDT05D VVJSRU5UTFkgbmV3X2lkeDsKKwkJCQkJUkVTRVQgZGVmYXVsdF90cmFuc2FjdGlvbl9pc29sYXRp b247CisJCQkJXGVuZGlmCisJCQkJU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jayg0Mik7CisJCQlc ZWxzZQorCQkJCVxzZXQgbnVtIHJhbmRvbSgxLCBwb3dlcigxMCwgcmFuZG9tKDEsIDUpKSkKKwkJ CQlJTlNFUlQgSU5UTyB0YmwgVkFMVUVTKGZsb29yKHJhbmRvbSgpKjpudW0pLDAsMCwwLG5vdygp LEFSUkFZW2Zsb29yKHJhbmRvbSgpKjEwMCk6OmludF0scG9pbnQocmFuZG9tKCkscmFuZG9tKCkp KQorCQkJCQlPTiBDT05GTElDVChpKSBETyBVUERBVEUgU0VUIHVwZGF0ZWRfYXQgPSBub3coKSwg aWEgPSBBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLCBwID0gcG9pbnQocmFuZG9tKCks cmFuZG9tKCkpOworCQkJCVNFTEVDVCBzZXR2YWwoJ2luX3Jvd19yZWJ1aWxkJywgMSk7CisJCQlc ZW5kaWYKKwkJCSksICRtYXhfc2xlZXBfbXMsICRtYXhfc2xlZXBfbXMpCisJfSk7CisKKyRub2Rl LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShUUlVOQ0FURSBUQUJMRSB0Ymw7KSk7CisKKyMgUnVu IENJQy9SSUMgZm9yIEdJU1QvQlJJTi9IQVNIL1NQR0lTVCBpbmRleCBjb25jdXJyZW50bHkgd2l0 aCB1cHNlcnRzCiskbm9kZS0+cGdiZW5jaCgKKwkkcGdiZW5jaF9vcHRpb25zLAorCTAsCisJW3Fy e2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCVtxcnteJH1dLAorCSdjb25jdXJyZW50IG9wZXJhdGlv bnMgd2l0aCBSRUlOREVYL0NSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgZm9yIEdJU1QvQlJJTi9I QVNIL1NQR0lTVCcsCisJeworCQknY29uY3VycmVudF9vcHNfb3RoZXJfaWR4JyA9PiBzcHJpbnRm KHEoCisJCQlTRUxFQ1QgcGdfdHJ5X2Fkdmlzb3J5X2xvY2soNDIpOjppbnRlZ2VyIEFTIGdvdGxv Y2sgXGdzZXQKKwkJCVxpZiA6Z290bG9jaworCQkJCVNFTEVDVCBuZXh0dmFsKCdpbl9yb3dfcmVi dWlsZCcpIEFTIGxhc3RfdmFsdWUgXGdzZXQKKwkJCQlcc2V0IHBhcmFsbGVscyByYW5kb20oMCwg NCkKKwkJCQlcc2V0IHVzZV9yciByYW5kb20oMCwgOSkKKwkJCQlcaWYgOmxhc3RfdmFsdWUgPCAz CisJCQkJCUFMVEVSIFRBQkxFIHRibCBTRVQgKHBhcmFsbGVsX3dvcmtlcnM9OnBhcmFsbGVscyk7 CisJCQkJCVxpZiA6dXNlX3JyID0gMAorCQkJCQkJU0VUIGRlZmF1bHRfdHJhbnNhY3Rpb25faXNv bGF0aW9uID0gJ3JlcGVhdGFibGUgcmVhZCc7CisJCQkJCVxlbmRpZgorCQkJCQlcc2V0IHZhcmlh bnQgcmFuZG9tKDAsIDMpCisJCQkJCVxpZiA6dmFyaWFudCA9IDAKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgR0lTVCAocCk7CisJCQkJCVxlbGlm IDp2YXJpYW50ID0gMQorCQkJCQkJQ1JFQVRFIElOREVYIENPTkNVUlJFTlRMWSBuZXdfaWR4IE9O IHRibCBVU0lORyBCUklOICh1cGRhdGVkX2F0KTsKKwkJCQkJXGVsaWYgOnZhcmlhbnQgPSAyCisJ CQkJCQlDUkVBVEUgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHggT04gdGJsIFVTSU5HIEhBU0gg KHVwZGF0ZWRfYXQpOworCQkJCQlcZWxpZiA6dmFyaWFudCA9IDMKKwkJCQkJCUNSRUFURSBJTkRF WCBDT05DVVJSRU5UTFkgbmV3X2lkeCBPTiB0YmwgVVNJTkcgU1BHSVNUIChwKTsKKwkJCQkJXGVu ZGlmCisJCQkJCVxzZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVw X21zIG1zCisJCQkJCVJFSU5ERVggSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVxz ZXQgc2xlZXBfbXMgcmFuZG9tKDAsICVkKQorCQkJCQlcc2xlZXAgOnNsZWVwX21zIG1zCisJCQkJ CURST1AgSU5ERVggQ09OQ1VSUkVOVExZIG5ld19pZHg7CisJCQkJCVJFU0VUIGRlZmF1bHRfdHJh bnNhY3Rpb25faXNvbGF0aW9uOworCQkJCVxlbmRpZgorCQkJCVNFTEVDVCBwZ19hZHZpc29yeV91 bmxvY2soNDIpOworCQkJXGVsc2UKKwkJCQlcc2V0IG51bSByYW5kb20oMSwgcG93ZXIoMTAsIHJh bmRvbSgxLCA1KSkpCisJCQkJSU5TRVJUIElOVE8gdGJsIFZBTFVFUyhmbG9vcihyYW5kb20oKSo6 bnVtKSwwLDAsMCxub3coKSxBUlJBWVtmbG9vcihyYW5kb20oKSoxMDApOjppbnRdLHBvaW50KHJh bmRvbSgpLHJhbmRvbSgpKSkKKwkJCQkJT04gQ09ORkxJQ1QoaSkgRE8gVVBEQVRFIFNFVCB1cGRh dGVkX2F0ID0gbm93KCksIGlhID0gQVJSQVlbZmxvb3IocmFuZG9tKCkqMTAwKTo6aW50XSwgcCA9 IHBvaW50KHJhbmRvbSgpLHJhbmRvbSgpKTsKKwkJCQlTRUxFQ1Qgc2V0dmFsKCdpbl9yb3dfcmVi dWlsZCcsIDEpOworCQkJXGVuZGlmCisJCQkpLCAkbWF4X3NsZWVwX21zLCAkbWF4X3NsZWVwX21z KQorCQl9KTsKKworJG5vZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDMuMAoK --000000000000675090064fbc2171--