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 1wgfs3-006KM9-1S for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 09:44:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wgfs1-00GZPE-0E for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jul 2026 09:44:09 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wgfs0-00GZP5-11 for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 09:44:08 +0000 Received: from mail-qv1-xf2d.google.com ([2607:f8b0:4864:20::f2d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wgfro-000000021rK-3DvJ for pgsql-hackers@lists.postgresql.org; Mon, 06 Jul 2026 09:44:08 +0000 Received: by mail-qv1-xf2d.google.com with SMTP id 6a1803df08f44-8ea70ca4fc8so22014486d6.1 for ; Mon, 06 Jul 2026 02:43:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783331034; cv=none; d=google.com; s=arc-20260327; b=BBquK/gTFKwbDBc4gJ3EFiTEANbIokAvxQp+lQSr8MANcpOthr8lMj2PKHA0Mw0grB x+Rs98Z5NybzvqgsThOJjFYBV58LwdJ0QoGVenC1xLX1zAeJpsRUh96nbf7NAspaqIhf 2/5mG9xWCdZ1cGAsvZyGozVlPKKa8Jw6VEZy8X5K8z2GklismaUpKb8BXarUs6x0Nh/I dF5ET5aPqGHfO6ULcUp4JnVPUJO2iRW0Cfdpmoji1fgcmQ/a2gNa6BbJT9f32XxV2gce zeOfNWv0a3MkUAPdWpUBoExDsaKy54Lq7uVK/UcVru3cfULarA1Gi8hi4Ifo3RL5t1pc ebpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=MF0XptTeJOIbdyxqSB1fhDfD2stGYP4hFFYL3n9fl28=; fh=NFl0iFQExBjneOfOqc6g/nef3dRerdVLif5YnAcM6cQ=; b=i0h9Aih6JrqzDoEjMiBpPZQiNVkUhKx1vPrE0MWf1L6Zifudd7SXkU6O1oGk6bFAW8 Z6745coJyHJG/pB3dSOitRqisAj8Jw0fNQ0PxnZ+v8WJO+xJCwEDGZ9tC9r9FJSXpHT4 /fl+kVyNs3EVJA56NbgeXEUo34eh+HBjMgvtO05l+An0t8fnb4wOfZJuWRv5T5RHBD4Q KwD8n/MmBq+3P8wG7vKVqFjJW1nPTZVxog9GfTU50MJuo1L6ZilnWa/ptZgR7x+ociHs 1R8Y/lTU/36bWKhtGePuNdyK8FnokxOOPYH+vpZJZ5znXtZmFBbQVuFme9mPJSLRic5p CgWg==; 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=1783331034; x=1783935834; 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=MF0XptTeJOIbdyxqSB1fhDfD2stGYP4hFFYL3n9fl28=; b=TWsGWo6A41M1GMXFIaPnndPn+Ov9EkXLgsEtPvYl0gk2phNIYrIApwijPDAVC2rQtw atNyOVJaUsyAxmVOgLTujYw3LCsp+05Fei3BP6Fh6syZSllo81SucLclA2BhU7ROpWGd C24yy+djM1MhRGApKyC22YmIWDA08cZvfDq09oGsadm31cutKxfZORDAKMuM5IyBdClS GZ/jkYvPhZmJRC8zDXqSOjUFt9eTCsfjSSNtaS0gCBAxF7XwSzo/NIYNbj/eUF6q3j7h 3Md1bj8ED6oJDP+q5D3vewfsHMvQNsT0fXaCT+2YPTuV2AexcRffmRPzOByhlMv4RI72 teEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783331034; x=1783935834; 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=MF0XptTeJOIbdyxqSB1fhDfD2stGYP4hFFYL3n9fl28=; b=gaLzMEvzEG4rM1wMyXtWUajUcnf/fyk0AmDUKfypT/BOShcRLIi65EEVYsc0Ed2Dh+ k4dXZP2smY0noJhjo+k+ygfki9rKlOhvjrmmSRzVY9iS8obON0cHGz6cocDGqUyAvJby qaiVfsEhP1DP5e99ze83UuH28tWeHidVQ1cLVQpWAzhNOiQMJ23rkzWmmpQQ36be8wor yvgOIKJPx0+eCzagZYe54wq3sJignPd+FFg5EEayiBTeuC/KLgbzG5d6rSvExsjTQeV8 rPR0KYKJ6NNqU+iXbIt2i1HkjF4ewOJ771U7rntI0IyRbZaTdou0a4ya2n5tc9KKRrfd E2jw== X-Forwarded-Encrypted: i=1; AHgh+RpLy+FHYs9Tk9jEJ/pJO/I843hH3pl69ukMYLU9zxRDqXpGDNu8fup1YxLxMtTf2nh5P2+2p1mJNWdOIxCD@lists.postgresql.org X-Gm-Message-State: AOJu0YwT5gAcq4wrb35e8xprZhbDBXFr0si1q/ZJvg4OZOFEnQUic0zF mzfHFO5kD00DsulWX/HA8p9+85uNSy8Sc8iB7tgzcAFOyMxJjk7O3I3+XJXzaXTxuzUg4ojcIj6 +Yi8uuXcXkd1snbHXlQ+FqEj0+A+6AW0= X-Gm-Gg: AfdE7ckfAQtP51JzeR7HVfsTEhzEscTk59U9+DMYsmZzP+jCX7gLCJrJLoiBaQoNFeM oMfLfP/EoBBz6xruPiZTBKiNC8JWTM8zM/RiwGudsv63DQwFU8SEgxSMPT6z1gTbsP4rzYQehoM 8sKQaT7eyfipCheZrLusuJikbtCW3QMIEBEp3UXylrCI62cgUeSmF7UQqnJ3q2rWnav1hTQRTOC qQ+3EnhNU1z4XkGc88zwZz2Qasc/sIr02yMSmonvPCLWizJw5yJQxLZF129Cu8Zf3XNHvV6LePi S9WhdaYWIqtuLcpVMPSAz2qnlibIGsKebiHVs4nfHIAg5doJexCPQK33RSAOVHU6tOmKwUaO+Vp fCXEQdIohrqme X-Received: by 2002:a05:6214:1d0b:b0:8ef:7c01:b793 with SMTP id 6a1803df08f44-8f751fa942cmr134378996d6.19.1783331033802; Mon, 06 Jul 2026 02:43:53 -0700 (PDT) MIME-Version: 1.0 References: <251A02BE-A148-4FEF-90EB-5E9559310B8E@dunslane.net> In-Reply-To: From: Dean Rasheed Date: Mon, 6 Jul 2026 10:43:42 +0100 X-Gm-Features: AVVi8Cfqyr2QyA3rteum8Mvmw2qd3ifzHITlTMDMivBRdr9DhQufzDwWzjLE4-U Message-ID: Subject: Re: Global temporary tables To: John Naylor Cc: Andrew Dunstan , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000c9947c0655ee1c0a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c9947c0655ee1c0a Content-Type: text/plain; charset="UTF-8" On Sun, 5 Jul 2026 at 10:58, Dean Rasheed wrote: > > On Sun, 5 Jul 2026 at 09:17, John Naylor wrote: > > > > I'm starting to think the queue mechanism needs serious attention, if > > not a complete re-think. > > Yes, you're right. In that example, the pg_temp_class tuple gets lost > entirely. It really needs the same sort of sub XID tracking as the > usage/storage code Attached is v7, doing that. Locally, I have been stress-testing this using a hacked-together python script that does random sequences of CREATE, DROP, BEGIN, SAVEPOINT, RELEASE, ROLLBACK TO, INSERT, SELECT, COMMIT, ROLLBACK, and TRUNCATE. I'm somewhat disappointed that it didn't pick up the original problem, so I'll go back and look at it again. v7 now also includes tempfrozenxid and tempminmxid in the pg_stat_activity view, allowing those to be monitored. Regards, Dean --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0001-Save-temporary-table-ON-COMMIT-actions-to-pg_clas.patch" Content-Disposition: attachment; filename="v7-0001-Save-temporary-table-ON-COMMIT-actions-to-pg_clas.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr9159sv0 RnJvbSA3YmNkYWM1ZGE2NzA2ZjA0MWM0NzFkN2Q0ZTg4ZTI3NDNiOTM3Yzk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogRnJpLCAyNiBKdW4gMjAyNiAxODoxOTozMyArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMDEvMTBdIFNhdmUgdGVtcG9yYXJ5IHRhYmxlIE9OIENPTU1JVCBhY3Rpb25zIHRvIHBnX2Ns YXNzLgoKVGhpcyBhZGRzIGEgbmV3IGNvbHVtbiByZWxvbmNvbW1pdCB0byBwZ19jbGFzcyBhbmQg dXNlcyBpdCB0byBzYXZlIHRoZQpPTiBDT01NSVQgYWN0aW9ucyBvZiB0ZW1wb3JhcnkgdGFibGVz LiBUaGlzIGlzIHRoZW4gdXNlZCBieSBwc3FsJ3MgXGQKbWV0YS1jb21tYW5kIHRvIGRpc3BsYXkg dGhlIHRhYmxlJ3MgT04gQ09NTUlUIGFjdGlvbi4KClRoaXMgd2lsbCBiZSByZXF1aXJlZCBieSBn bG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyBpbiBmdXR1cmUgY29tbWl0cy4KLS0tCiBkb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgIHwgMTUgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQv Ym9vdHN0cmFwL2Jvb3RwYXJzZS55ICB8ICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j ICAgICAgICAgfCAgNiArKysrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICB8 ICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgfCAxOSArKysrKysrKysr KysrKystCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgIHwgMzUgKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oICAgICB8ICA4ICsrKysrKysK IHNyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgfCAgNCArKystCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RlbXAub3V0IHwgMTggKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC90ZW1wLnNxbCAgICAgIHwgIDYgKysrKysKIDExIGZpbGVzIGNoYW5nZWQsIDEx MCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNGI0NzRj MTM5MTcuLmNkMmJlM2VhM2YyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjE3MSw2ICsyMTcxLDIxIEBA IFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBs YWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnJl bG9uY29tbWl0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4K KyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8bGl0ZXJhbD5PTiBDT01NSVQ8L2xpdGVyYWw+IGJl aGF2aW9yIG9mIHRoZSB0YWJsZToKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IHByZXNl cnZlIHJvd3MsCisgICAgICAgPGxpdGVyYWw+ZDwvbGl0ZXJhbD4gPSBkZWxldGUgcm93cywKKyAg ICAgICA8bGl0ZXJhbD5EPC9saXRlcmFsPiA9IGRyb3A7CisgICAgICAgc2VlIDxsaW5rIGxpbmtl bmQ9InNxbC1jcmVhdGV0YWJsZSI+PGNvbW1hbmQ+Q1JFQVRFIFRBQkxFPC9jb21tYW5kPjwvbGlu az4uCisgICAgICAgUHJlc2VydmUgcm93cyBpcyB0aGUgZGVmYXVsdDsgdGhlIG90aGVyIG9wdGlv bnMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvcgorICAgICAgIHRlbXBvcmFyeSB0YWJsZXMuCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbG5hdHRzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50 MjwvdHlwZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueSBi L3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueQppbmRleCA5NDNmZjQ3MzNkMy4uMzA1 YTU2NTRmZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueQor KysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHBhcnNlLnkKQEAgLTIxNCw2ICsyMTQsNyBA QCBCb290X0NyZWF0ZVN0bXQ6CiAJCQkJCQkJCQkJCQkgICBSRUxQRVJTSVNURU5DRV9QRVJNQU5F TlQsCiAJCQkJCQkJCQkJCQkgICBzaGFyZWRfcmVsYXRpb24sCiAJCQkJCQkJCQkJCQkgICBtYXBw ZWRfcmVsYXRpb24sCisJCQkJCQkJCQkJCQkgICBPTkNPTU1JVF9OT09QLAogCQkJCQkJCQkJCQkJ ICAgdHJ1ZSwKIAkJCQkJCQkJCQkJCSAgICZyZWxmcm96ZW54aWQsCiAJCQkJCQkJCQkJCQkgICAm cmVsbWlubXhpZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggODgwODc2NTRkZTkuLjY4NGE0NDk0NmZjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2hlYXAuYwpAQCAtMjk0LDYgKzI5NCw3IEBAIGhlYXBfY3JlYXRlKGNvbnN0IGNoYXIg KnJlbG5hbWUsCiAJCQljaGFyIHJlbHBlcnNpc3RlbmNlLAogCQkJYm9vbCBzaGFyZWRfcmVsYXRp b24sCiAJCQlib29sIG1hcHBlZF9yZWxhdGlvbiwKKwkJCU9uQ29tbWl0QWN0aW9uIG9uY29tbWl0 LAogCQkJYm9vbCBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywKIAkJCVRyYW5zYWN0aW9uSWQgKnJl bGZyb3plbnhpZCwKIAkJCU11bHRpWGFjdElkICpyZWxtaW5teGlkLApAQCAtMzcxLDcgKzM3Miw4 IEBAIGhlYXBfY3JlYXRlKGNvbnN0IGNoYXIgKnJlbG5hbWUsCiAJCQkJCQkJCQkgc2hhcmVkX3Jl bGF0aW9uLAogCQkJCQkJCQkJIG1hcHBlZF9yZWxhdGlvbiwKIAkJCQkJCQkJCSByZWxwZXJzaXN0 ZW5jZSwKLQkJCQkJCQkJCSByZWxraW5kKTsKKwkJCQkJCQkJCSByZWxraW5kLAorCQkJCQkJCQkJ IG9uY29tbWl0KTsKIAogCS8qCiAJICogSGF2ZSB0aGUgc3RvcmFnZSBtYW5hZ2VyIGNyZWF0ZSB0 aGUgcmVsYXRpb24ncyBkaXNrIGZpbGUsIGlmIG5lZWRlZC4KQEAgLTk1OCw2ICs5NjAsNyBAQCBJ bnNlcnRQZ0NsYXNzVHVwbGUoUmVsYXRpb24gcGdfY2xhc3NfZGVzYywKIAl2YWx1ZXNbQW51bV9w Z19jbGFzc19yZWxpc3NoYXJlZCAtIDFdID0gQm9vbEdldERhdHVtKHJkX3JlbC0+cmVsaXNzaGFy ZWQpOwogCXZhbHVlc1tBbnVtX3BnX2NsYXNzX3JlbHBlcnNpc3RlbmNlIC0gMV0gPSBDaGFyR2V0 RGF0dW0ocmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSk7CiAJdmFsdWVzW0FudW1fcGdfY2xhc3NfcmVs a2luZCAtIDFdID0gQ2hhckdldERhdHVtKHJkX3JlbC0+cmVsa2luZCk7CisJdmFsdWVzW0FudW1f cGdfY2xhc3NfcmVsb25jb21taXQgLSAxXSA9IENoYXJHZXREYXR1bShyZF9yZWwtPnJlbG9uY29t bWl0KTsKIAl2YWx1ZXNbQW51bV9wZ19jbGFzc19yZWxuYXR0cyAtIDFdID0gSW50MTZHZXREYXR1 bShyZF9yZWwtPnJlbG5hdHRzKTsKIAl2YWx1ZXNbQW51bV9wZ19jbGFzc19yZWxjaGVja3MgLSAx XSA9IEludDE2R2V0RGF0dW0ocmRfcmVsLT5yZWxjaGVja3MpOwogCXZhbHVlc1tBbnVtX3BnX2Ns YXNzX3JlbGhhc3J1bGVzIC0gMV0gPSBCb29sR2V0RGF0dW0ocmRfcmVsLT5yZWxoYXNydWxlcyk7 CkBAIC0xMzM5LDYgKzEzNDIsNyBAQCBoZWFwX2NyZWF0ZV93aXRoX2NhdGFsb2coY29uc3QgY2hh ciAqcmVsbmFtZSwKIAkJCQkJCQkgICByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgICBzaGFyZWRf cmVsYXRpb24sCiAJCQkJCQkJICAgbWFwcGVkX3JlbGF0aW9uLAorCQkJCQkJCSAgIG9uY29tbWl0 LAogCQkJCQkJCSAgIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzLAogCQkJCQkJCSAgICZyZWxmcm96 ZW54aWQsCiAJCQkJCQkJICAgJnJlbG1pbm14aWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggOTQwN2Mz NTdmMjcuLmZmYzdmNmMyNTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC05ODksNiArOTg5LDcgQEAg aW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJcmVscGVyc2lzdGVu Y2UsCiAJCQkJCQkJCXNoYXJlZF9yZWxhdGlvbiwKIAkJCQkJCQkJbWFwcGVkX3JlbGF0aW9uLAor CQkJCQkJCQlPTkNPTU1JVF9OT09QLAogCQkJCQkJCQlhbGxvd19zeXN0ZW1fdGFibGVfbW9kcywK IAkJCQkJCQkJJnJlbGZyb3plbnhpZCwKIAkJCQkJCQkJJnJlbG1pbm14aWQsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYwppbmRleCBmYjRlMDQyYmU4YS4uMWIyMGYxZjgyZTIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtMTk1Miw2ICsxOTUyLDcgQEAgZm9ybXJkZXNjKGNv bnN0IGNoYXIgKnJlbGF0aW9uTmFtZSwgT2lkIHJlbGF0aW9uUmVsdHlwZSwKIAlyZWxhdGlvbi0+ cmRfcmVsLT5yZWxhbGx2aXNpYmxlID0gMDsKIAlyZWxhdGlvbi0+cmRfcmVsLT5yZWxhbGxmcm96 ZW4gPSAwOwogCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPSBSRUxLSU5EX1JFTEFUSU9OOwor CXJlbGF0aW9uLT5yZF9yZWwtPnJlbG9uY29tbWl0ID0gUkVMT05DT01NSVRfUFJFU0VSVkVfUk9X UzsKIAlyZWxhdGlvbi0+cmRfcmVsLT5yZWxuYXR0cyA9IChpbnQxNikgbmF0dHM7CiAKIAkvKgpA QCAtMzUyNCw3ICszNTI1LDggQEAgUmVsYXRpb25CdWlsZExvY2FsUmVsYXRpb24oY29uc3QgY2hh ciAqcmVsbmFtZSwKIAkJCQkJCSAgIGJvb2wgc2hhcmVkX3JlbGF0aW9uLAogCQkJCQkJICAgYm9v bCBtYXBwZWRfcmVsYXRpb24sCiAJCQkJCQkgICBjaGFyIHJlbHBlcnNpc3RlbmNlLAotCQkJCQkJ ICAgY2hhciByZWxraW5kKQorCQkJCQkJICAgY2hhciByZWxraW5kLAorCQkJCQkJICAgT25Db21t aXRBY3Rpb24gb25jb21taXQpCiB7CiAJUmVsYXRpb24JcmVsOwogCU1lbW9yeUNvbnRleHQgb2xk Y3h0OwpAQCAtMzY2OCw2ICszNjcwLDIxIEBAIFJlbGF0aW9uQnVpbGRMb2NhbFJlbGF0aW9uKGNv bnN0IGNoYXIgKnJlbG5hbWUsCiAJCQlicmVhazsKIAl9CiAKKwkvKiBzZXQgdXAgb25jb21taXQg YmVoYXZpb3IgKi8KKwlzd2l0Y2ggKG9uY29tbWl0KQorCXsKKwkJY2FzZSBPTkNPTU1JVF9OT09Q OgorCQljYXNlIE9OQ09NTUlUX1BSRVNFUlZFX1JPV1M6CisJCQlyZWwtPnJkX3JlbC0+cmVsb25j b21taXQgPSBSRUxPTkNPTU1JVF9QUkVTRVJWRV9ST1dTOworCQkJYnJlYWs7CisJCWNhc2UgT05D T01NSVRfREVMRVRFX1JPV1M6CisJCQlyZWwtPnJkX3JlbC0+cmVsb25jb21taXQgPSBSRUxPTkNP TU1JVF9ERUxFVEVfUk9XUzsKKwkJCWJyZWFrOworCQljYXNlIE9OQ09NTUlUX0RST1A6CisJCQly ZWwtPnJkX3JlbC0+cmVsb25jb21taXQgPSBSRUxPTkNPTU1JVF9EUk9QOworCQkJYnJlYWs7CisJ fQorCiAJLyogaWYgaXQncyBhIG1hdGVyaWFsaXplZCB2aWV3LCBpdCdzIG5vdCBwb3B1bGF0ZWQg aW5pdGlhbGx5ICovCiAJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXKQogCQlyZWwtPnJk X3JlbC0+cmVsaXNwb3B1bGF0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9k ZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggZmVmODZiNGNjYTMuLmU3 MTBkYjhlMTAyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTU4MCw2ICsxNTgwLDcgQEAgZGVzY3JpYmVPbmVUYWJs ZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJY2hhcgkJcmVscGVyc2lzdGVuY2U7 CiAJCWNoYXIJCXJlbHJlcGxpZGVudDsKIAkJY2hhcgkgICAqcmVsYW07CisJCWNoYXIJCXJlbG9u Y29tbWl0OwogCX0JCQl0YWJsZWluZm87CiAJYm9vbAkJc2hvd19jb2x1bW5fZGV0YWlscyA9IGZh bHNlOwogCkBAIC0xNTk0LDcgKzE1OTUsMjUgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29u c3QgY2hhciAqc2NoZW1hbmFtZSwKIAkvKiBHZXQgZ2VuZXJhbCB0YWJsZSBpbmZvICovCiAJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLAogCQkJCQkgIF8oIkdldCBnZW5lcmFs IGluZm9ybWF0aW9uIGFib3V0IG9uZSByZWxhdGlvbiIpKTsKLQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxMjAwMDApCisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMjAwMDAwKQorCXsKKwkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIlNFTEVDVCBjLnJlbGNoZWNrcywgYy5yZWxraW5kLCBj LnJlbGhhc2luZGV4LCBjLnJlbGhhc3J1bGVzLCAiCisJCQkJCQkgICJjLnJlbGhhc3RyaWdnZXJz LCBjLnJlbHJvd3NlY3VyaXR5LCBjLnJlbGZvcmNlcm93c2VjdXJpdHksICIKKwkJCQkJCSAgImZh bHNlIEFTIHJlbGhhc29pZHMsIGMucmVsaXNwYXJ0aXRpb24sICVzLCBjLnJlbHRhYmxlc3BhY2Us ICIKKwkJCQkJCSAgIkNBU0UgV0hFTiBjLnJlbG9mdHlwZSA9IDAgVEhFTiAnJyBFTFNFIGMucmVs b2Z0eXBlOjpwZ19jYXRhbG9nLnJlZ3R5cGU6OnBnX2NhdGFsb2cudGV4dCBFTkQsICIKKwkJCQkJ CSAgImMucmVscGVyc2lzdGVuY2UsIGMucmVscmVwbGlkZW50LCBhbS5hbW5hbWUsIGMucmVsb25j b21taXRcbiIKKwkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4gIgorCQkJCQkJ ICAiTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgdGMgT04gKGMucmVsdG9hc3RyZWxpZCA9 IHRjLm9pZClcbiIKKwkJCQkJCSAgIkxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2FtIGFtIE9OIChj LnJlbGFtID0gYW0ub2lkKVxuIgorCQkJCQkJICAiV0hFUkUgYy5vaWQgPSAnJXMnOyIsCisJCQkJ CQkgICh2ZXJib3NlID8KKwkJCQkJCSAgICJwZ19jYXRhbG9nLmFycmF5X3RvX3N0cmluZyhjLnJl bG9wdGlvbnMgfHwgIgorCQkJCQkJICAgImFycmF5KHNlbGVjdCAndG9hc3QuJyB8fCB4IGZyb20g cGdfY2F0YWxvZy51bm5lc3QodGMucmVsb3B0aW9ucykgeCksICcsICcpXG4iCisJCQkJCQkgICA6 ICInJyIpLAorCQkJCQkJICBvaWQpOworCX0KKwllbHNlIGlmIChwc2V0LnN2ZXJzaW9uID49IDEy MDAwMCkKIAl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkgICJTRUxFQ1QgYy5y ZWxjaGVja3MsIGMucmVsa2luZCwgYy5yZWxoYXNpbmRleCwgYy5yZWxoYXNydWxlcywgIgpAQCAt MTY2Miw2ICsxNjgxLDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJCQlOVUxMIDogcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCAwLCAxNCkpOwog CWVsc2UKIAkJdGFibGVpbmZvLnJlbGFtID0gTlVMTDsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAy MDAwMDApCisJCXRhYmxlaW5mby5yZWxvbmNvbW1pdCA9ICooUFFnZXR2YWx1ZShyZXMsIDAsIDE1 KSk7CisJZWxzZQorCQl0YWJsZWluZm8ucmVsb25jb21taXQgPSBSRUxPTkNPTU1JVF9QUkVTRVJW RV9ST1dTOwogCVBRY2xlYXIocmVzKTsKIAlyZXMgPSBOVUxMOwogCkBAIC0zNjcwLDYgKzM2OTMs MTYgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsIF8oIkFjY2VzcyBtZXRob2Q6ICVzIiksIHRhYmxlaW5m by5yZWxhbSk7CiAJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CiAJCX0K KworCQkvKiBPbi1jb21taXQgYWN0aW9uICovCisJCWlmICh2ZXJib3NlICYmIHRhYmxlaW5mby5y ZWxvbmNvbW1pdCAhPSBSRUxPTkNPTU1JVF9QUkVTRVJWRV9ST1dTKQorCQl7CisJCQlwcmludGZQ UUV4cEJ1ZmZlcigmYnVmLCBfKCJPbi1jb21taXQgYWN0aW9uOiAlcyIpLAorCQkJCQkJCSAgdGFi bGVpbmZvLnJlbG9uY29tbWl0ID09IFJFTE9OQ09NTUlUX0RFTEVURV9ST1dTID8gIk9OIENPTU1J VCBERUxFVEUgUk9XUyIgOgorCQkJCQkJCSAgdGFibGVpbmZvLnJlbG9uY29tbWl0ID09IFJFTE9O Q09NTUlUX0RST1AgPyAiT04gQ09NTUlUIERST1AiIDoKKwkJCQkJCQkgICI/Pz8iKTsKKwkJCXBy aW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKKwkJfQogCX0KIAogCS8qIHJlbG9w dGlvbnMsIGlmIHZlcmJvc2UgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggNmM5YWM4MTJhYTAuLmE2MjJk NzAzZTk3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtNTksNiArNTksNyBAQCBleHRlcm4gUmVsYXRpb24g aGVhcF9jcmVhdGUoY29uc3QgY2hhciAqcmVsbmFtZSwKIAkJCQkJCQljaGFyIHJlbHBlcnNpc3Rl bmNlLAogCQkJCQkJCWJvb2wgc2hhcmVkX3JlbGF0aW9uLAogCQkJCQkJCWJvb2wgbWFwcGVkX3Jl bGF0aW9uLAorCQkJCQkJCU9uQ29tbWl0QWN0aW9uIG9uY29tbWl0LAogCQkJCQkJCWJvb2wgYWxs b3dfc3lzdGVtX3RhYmxlX21vZHMsCiAJCQkJCQkJVHJhbnNhY3Rpb25JZCAqcmVsZnJvemVueGlk LAogCQkJCQkJCU11bHRpWGFjdElkICpyZWxtaW5teGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jbGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jbGFzcy5oCmlu ZGV4IGM0YWY1OTlkYzkwLi4wZTJjNTM1OTFjNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaApAQCAt ODgsNiArODgsOSBAQCBDQVRBTE9HKHBnX2NsYXNzLDEyNTksUmVsYXRpb25SZWxhdGlvbklkKSBC S0lfQk9PVFNUUkFQIEJLSV9ST1dUWVBFX09JRCg4MyxSZWxhdAogCS8qIHNlZSBSRUxLSU5EX3h4 eCBjb25zdGFudHMgYmVsb3cgKi8KIAljaGFyCQlyZWxraW5kIEJLSV9ERUZBVUxUKHIpOwogCisJ Lyogc2VlIFJFTE9OQ09NTUlUX3h4eCBjb25zdGFudHMgYmVsb3cgKi8KKwljaGFyCQlyZWxvbmNv bW1pdCBCS0lfREVGQVVMVChwKTsKKwogCS8qIG51bWJlciBvZiB1c2VyIGF0dHJpYnV0ZXMgKi8K IAlpbnQxNgkJcmVsbmF0dHMgQktJX0RFRkFVTFQoMCk7CS8qIGdlbmJraS5wbCB3aWxsIGZpbGwg dGhpcyBpbiAqLwogCkBAIC0xODQsNiArMTg3LDExIEBAIE1BS0VfU1lTQ0FDSEUoUkVMTkFNRU5T UCwgcGdfY2xhc3NfcmVsbmFtZV9uc3BfaW5kZXgsIDEyOCk7CiAjZGVmaW5lCQkgIFJFTFBFUlNJ U1RFTkNFX1VOTE9HR0VECSd1JyAvKiB1bmxvZ2dlZCBwZXJtYW5lbnQgdGFibGUgKi8KICNkZWZp bmUJCSAgUkVMUEVSU0lTVEVOQ0VfVEVNUAkJJ3QnIC8qIHRlbXBvcmFyeSB0YWJsZSAqLwogCisv KiBvbi1jb21taXQgYWN0aW9uIChvbmx5IHRlbXBvcmFyeSB0YWJsZXMgc3VwcG9ydCBkZWxldGUv ZHJvcCkgKi8KKyNkZWZpbmUJCSAgUkVMT05DT01NSVRfUFJFU0VSVkVfUk9XUyAncCcgLyogZGVm YXVsdDoga2VlcCBkYXRhIG9uIGNvbW1pdCAqLworI2RlZmluZQkJICBSRUxPTkNPTU1JVF9ERUxF VEVfUk9XUwknZCcgLyogZGVsZXRlIHRhYmxlIHJvd3Mgb24gY29tbWl0ICovCisjZGVmaW5lCQkg IFJFTE9OQ09NTUlUX0RST1AJCQknRCcgLyogZHJvcCB0YWJsZSBvbiBjb21taXQgKi8KKwogLyog ZGVmYXVsdCBzZWxlY3Rpb24gZm9yIHJlcGxpY2EgaWRlbnRpdHkgKHByaW1hcnkga2V5IG9yIG5v dGhpbmcpICovCiAjZGVmaW5lCQkgIFJFUExJQ0FfSURFTlRJVFlfREVGQVVMVAknZCcKIC8qIG5v IHJlcGxpY2EgaWRlbnRpdHkgaXMgbG9nZ2VkIGZvciB0aGlzIHJlbGF0aW9uICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVs Y2FjaGUuaAppbmRleCA4OWMyN2FhMTUyOS4uZWQwOWE2OTllOGIgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUu aApAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVk ZSAiY29tbW9uL3JlbHBhdGguaCIKICNpbmNsdWRlICJub2Rlcy9iaXRtYXBzZXQuaCIKKyNpbmNs dWRlICJub2Rlcy9wcmltbm9kZXMuaCIKIAogCiAvKgpAQCAtMTIxLDcgKzEyMiw4IEBAIGV4dGVy biBSZWxhdGlvbiBSZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlvbihjb25zdCBjaGFyICpyZWxuYW1l LAogCQkJCQkJCQkJCSAgIGJvb2wgc2hhcmVkX3JlbGF0aW9uLAogCQkJCQkJCQkJCSAgIGJvb2wg bWFwcGVkX3JlbGF0aW9uLAogCQkJCQkJCQkJCSAgIGNoYXIgcmVscGVyc2lzdGVuY2UsCi0JCQkJ CQkJCQkJICAgY2hhciByZWxraW5kKTsKKwkJCQkJCQkJCQkgICBjaGFyIHJlbGtpbmQsCisJCQkJ CQkJCQkJICAgT25Db21taXRBY3Rpb24gb25jb21taXQpOwogCiAvKgogICogUm91dGluZXMgdG8g bWFuYWdlIGFzc2lnbm1lbnQgb2YgbmV3IHJlbGZpbGVudW1iZXIgdG8gYSByZWxhdGlvbgpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90ZW1wLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvdGVtcC5vdXQKaW5kZXggYTUwYzdhZTg4YTkuLmQzNTQyYTYwMjQyIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RlbXAub3V0CisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGVtcC5vdXQKQEAgLTQyLDYgKzQyLDEyIEBAIFNFTEVDVCAq IEZST00gdGVtcHRlc3Q7CiBEUk9QIFRBQkxFIHRlbXB0ZXN0OwogLS0gdGVzdCB0ZW1wIHRhYmxl IGRlbGV0aW9uCiBDUkVBVEUgVEVNUCBUQUJMRSB0ZW1wdGVzdChjb2wgaW50KTsKK1NFTEVDVCBy ZWxvbmNvbW1pdCBGUk9NIHBnX2NsYXNzIFdIRVJFIG9pZCA9ICd0ZW1wdGVzdCc6OnJlZ2NsYXNz OworIHJlbG9uY29tbWl0IAorLS0tLS0tLS0tLS0tLQorIHAKKygxIHJvdykKKwogXGMKIFNFTEVD VCAqIEZST00gdGVtcHRlc3Q7CiBFUlJPUjogIHJlbGF0aW9uICJ0ZW1wdGVzdCIgZG9lcyBub3Qg ZXhpc3QKQEAgLTQ5LDYgKzU1LDEyIEBAIExJTkUgMTogU0VMRUNUICogRlJPTSB0ZW1wdGVzdDsK ICAgICAgICAgICAgICAgICAgICAgICBeCiAtLSBUZXN0IE9OIENPTU1JVCBERUxFVEUgUk9XUwog Q1JFQVRFIFRFTVAgVEFCTEUgdGVtcHRlc3QoY29sIGludCkgT04gQ09NTUlUIERFTEVURSBST1dT OworU0VMRUNUIHJlbG9uY29tbWl0IEZST00gcGdfY2xhc3MgV0hFUkUgb2lkID0gJ3RlbXB0ZXN0 Jzo6cmVnY2xhc3M7CisgcmVsb25jb21taXQgCistLS0tLS0tLS0tLS0tCisgZAorKDEgcm93KQor CiAtLSB3aGlsZSB3ZSdyZSBoZXJlLCB2ZXJpZnkgc3VjY2Vzc2Z1bCB0cnVuY2F0aW9uIG9mIGlu ZGV4IHdpdGggU1FMIGZ1bmN0aW9uCiBDUkVBVEUgSU5ERVggT04gdGVtcHRlc3QoYml0X2xlbmd0 aCgnJykpOwogQkVHSU47CkBAIC04Niw2ICs5OCwxMiBAQCBEUk9QIFRBQkxFIHRlbXB0ZXN0Owog LS0gVGVzdCBPTiBDT01NSVQgRFJPUAogQkVHSU47CiBDUkVBVEUgVEVNUCBUQUJMRSB0ZW1wdGVz dChjb2wgaW50KSBPTiBDT01NSVQgRFJPUDsKK1NFTEVDVCByZWxvbmNvbW1pdCBGUk9NIHBnX2Ns YXNzIFdIRVJFIG9pZCA9ICd0ZW1wdGVzdCc6OnJlZ2NsYXNzOworIHJlbG9uY29tbWl0IAorLS0t LS0tLS0tLS0tLQorIEQKKygxIHJvdykKKwogSU5TRVJUIElOVE8gdGVtcHRlc3QgVkFMVUVTICgx KTsKIElOU0VSVCBJTlRPIHRlbXB0ZXN0IFZBTFVFUyAoMik7CiBTRUxFQ1QgKiBGUk9NIHRlbXB0 ZXN0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdGVtcC5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC90ZW1wLnNxbAppbmRleCBkNTA0NzJkZGNlZC4uMDFhNTM5OWJjOTYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3RlbXAuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3RlbXAuc3FsCkBAIC00Nyw2ICs0Nyw4IEBAIERST1AgVEFCTEUgdGVtcHRlc3Q7 CiAKIENSRUFURSBURU1QIFRBQkxFIHRlbXB0ZXN0KGNvbCBpbnQpOwogCitTRUxFQ1QgcmVsb25j b21taXQgRlJPTSBwZ19jbGFzcyBXSEVSRSBvaWQgPSAndGVtcHRlc3QnOjpyZWdjbGFzczsKKwog XGMKIAogU0VMRUNUICogRlJPTSB0ZW1wdGVzdDsKQEAgLTU1LDYgKzU3LDggQEAgU0VMRUNUICog RlJPTSB0ZW1wdGVzdDsKIAogQ1JFQVRFIFRFTVAgVEFCTEUgdGVtcHRlc3QoY29sIGludCkgT04g Q09NTUlUIERFTEVURSBST1dTOwogCitTRUxFQ1QgcmVsb25jb21taXQgRlJPTSBwZ19jbGFzcyBX SEVSRSBvaWQgPSAndGVtcHRlc3QnOjpyZWdjbGFzczsKKwogLS0gd2hpbGUgd2UncmUgaGVyZSwg dmVyaWZ5IHN1Y2Nlc3NmdWwgdHJ1bmNhdGlvbiBvZiBpbmRleCB3aXRoIFNRTCBmdW5jdGlvbgog Q1JFQVRFIElOREVYIE9OIHRlbXB0ZXN0KGJpdF9sZW5ndGgoJycpKTsKIApAQCAtODUsNiArODks OCBAQCBCRUdJTjsKIAogQ1JFQVRFIFRFTVAgVEFCTEUgdGVtcHRlc3QoY29sIGludCkgT04gQ09N TUlUIERST1A7CiAKK1NFTEVDVCByZWxvbmNvbW1pdCBGUk9NIHBnX2NsYXNzIFdIRVJFIG9pZCA9 ICd0ZW1wdGVzdCc6OnJlZ2NsYXNzOworCiBJTlNFUlQgSU5UTyB0ZW1wdGVzdCBWQUxVRVMgKDEp OwogSU5TRVJUIElOVE8gdGVtcHRlc3QgVkFMVUVTICgyKTsKIAotLSAKMi41MS4wCgo= --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0002-Basic-support-for-global-temporary-tables.patch" Content-Disposition: attachment; filename="v7-0002-Basic-support-for-global-temporary-tables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr915dk01 RnJvbSBmOGVkYTU2OWVjNjI1NjI2ZWE5ZDU3ZWY2MWZjOTQyZjkzMmNjYWE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA5IEp1biAyMDI2IDExOjE0OjI3ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NyAwMi8xMF0gQmFzaWMgc3VwcG9ydCBmb3IgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMuCgpUaGlz IGFsbG93cyBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyB0byBiZSBjcmVhdGVkLiBXaGVuIGEgZ2xv YmFsCnRlbXBvcmFyeSB0YWJsZSBpcyBmaXJzdCBhY2Nlc3NlZCBpbiBhIHNlc3Npb24sIGl0IGlz IGluaXRpYWxpc2VkIGJ5CmNyZWF0aW5nIGxvY2FsIHN0b3JhZ2UgZm9yIGl0LiBBbGwgc3VjaCBz dG9yYWdlIGNyZWF0ZWQgaXMgdHJhY2tlZCwgaW4KY2FzZSBvZiByb2xsYmFjayAoaW4gd2hpY2gg Y2FzZSB0aGUgdGFibGUgbmVlZHMgdG8gYmUgcmVpbml0aWFsaXNlZCksCmFuZCBkZWxldGVkIG9u IGJhY2tlbmQgZW5kLgoKQWxsIHVzYWdlIG9mIGdsb2JhbCB0ZW1wb3JhcnkgdGFibGVzIGlzIHJl Y29yZGVkIGluIGEgc2hhcmVkIGhhc2gKdGFibGUgdG8gcHJldmVudCBjZXJ0YWluIG9wZXJhdGlv bnMgbGlrZSBhbiBBTFRFUiBUQUJMRSByZXdyaXRlLCBpZgp0aGUgdGFibGUgaXMgYmVpbmcgdXNl ZCBieSBhbm90aGVyIHNlc3Npb24uCgpMb3RzIG1vcmUgdG8gZG8sIHRvIG1ha2UgYSBmdWxseS1i YWtlZCBmZWF0dXJlLi4uCi0tLQogY29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyAgICAg ICAgICAgICAgIHwgICAxOCArCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jICAgICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAg ICAgICAgICAgfCAgIDI2ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMgICAgICAg ICAgICAgfCAxMjI0ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YyAgICAgICAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9y bWF0aW9uX3NjaGVtYS5zcWwgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24u YnVpbGQgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9uYW1lc3Bh Y2UuYyAgICAgICAgICAgICAgIHwgICAxNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jICAgICAgICAgIHwgICAgMyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdl LmMgICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZGJjb21t YW5kcy5jICAgICAgICAgICAgIHwgICAgOSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbG9ja2Nt ZHMuYyAgICAgICAgICAgICAgIHwgICAgMyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJvcGdy YXBoY21kcy5jICAgICAgICAgIHwgICAgNSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su YyAgICAgICAgICAgICAgICAgfCAgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jICAgICAgICAgICAgICB8ICAgODggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlc3Bh Y2UuYyAgICAgICAgICAgICB8ICAgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyAg ICAgICAgICAgICAgICAgICB8ICAgIDkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxs cGF0aHMuYyAgICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAg ICAgICAgICAgICAgICAgIHwgICAzOCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMgICAgICAgICAgIHwgICAxNiArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hl Y2tzdW1fc3RhdGUuYyAgIHwgICAyMyArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYyAgICAgICAgICAgfCAgIDM2ICstCiAuLi4vdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9u YW1lcy50eHQgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYyAg ICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YyAgICAgICAgICAgIHwgICA1MiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51 bWJlcm1hcC5jICAgIHwgICAgMyArLQogc3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYyAg ICAgICAgICAgICAgIHwgICAxOSArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAg ICAgICAgICAgICAgIHwgICAgOCArLQogc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYyAgICAgICAg ICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIyICstCiBzcmMvYmluL3NjcmlwdHMvdmFjdXVtaW5nLmMgICAgICAg ICAgICAgICAgICAgfCAgICA0ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2dsb2JhbF90ZW1wLmgg ICAgICAgICAgICAgfCAgIDQ1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaCAgICAg ICAgICAgICAgICB8ICAgIDMgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvc3RvcmFnZS5oICAgICAg ICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5oICAg ICAgICAgICAgICB8ICAgIDMgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0Lmgg ICAgICAgICAgIHwgICAgMyArCiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIzICstCiBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRl bXAub3V0ICAgfCAgMjUyICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1 bGUgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10ZW1w LnNwZWMgICAgIHwgICA2MCArCiAuLi4vdGVzdF9jaGVja3N1bXMvdC8wMTBfZ2xvYmFsX3RlbXAu cGwgICAgICAgfCAgIDU2ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUu b3V0ICAgICB8ICAgIDYgKy0KIC4uLi9leHBlY3RlZC9jcmVhdGVfcHJvcGVydHlfZ3JhcGgub3V0 ICAgICAgICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFibGUu b3V0ICAgIHwgICAxMCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdmlldy5v dXQgICAgIHwgICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVtcC5v dXQgICAgIHwgIDI5MCArKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5cGVfc2FuaXR5 Lm91dCAgICAgfCAgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAg ICAgICAgICAgfCAgICA0ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9hbHRlcl90YWJsZS5zcWwg ICAgICAgICAgfCAgICA1ICstCiAuLi4vcmVncmVzcy9zcWwvY3JlYXRlX3Byb3BlcnR5X2dyYXBo LnNxbCAgICAgfCAgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZS5zcWwg ICAgICAgICB8ICAgIDYgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsICAg ICAgICAgIHwgIDE2MCArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3R5cGVfc2FuaXR5LnNxbCAg ICAgICAgICB8ICAgIDIgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgICAgICB8ICAgIDUgKwogNTYgZmlsZXMgY2hhbmdlZCwgMjU0MCBpbnNlcnRpb25zKCspLCAx MDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY2F0YWxvZy9n bG9iYWxfdGVtcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvY2F0YWxvZy9nbG9i YWxfdGVtcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L2dsb2JhbC10ZW1wLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L2lzb2xhdGlvbi9z cGVjcy9nbG9iYWwtdGVtcC5zcGVjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2NoZWNrc3Vtcy90LzAxMF9nbG9iYWxfdGVtcC5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsCgpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ19wcmV3YXJtL3BnX3ByZXdhcm0uYyBiL2NvbnRyaWIvcGdfcHJld2FybS9wZ19w cmV3YXJtLmMKaW5kZXggYzI3MTYwODY2OTMuLmVjOTFjMTI1ODljIDEwMDY0NAotLS0gYS9jb250 cmliL3BnX3ByZXdhcm0vcGdfcHJld2FybS5jCisrKyBiL2NvbnRyaWIvcGdfcHJld2FybS9wZ19w cmV3YXJtLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1 ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAi YWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUg ImZtZ3IuaCIKQEAgLTE2MCwxMCArMTYxLDI3IEBAIHBnX3ByZXdhcm0oUEdfRlVOQ1RJT05fQVJH UykKIAogCS8qIENoZWNrIHRoYXQgdGhlIGZvcmsgZXhpc3RzLiAqLwogCWlmICghc21ncmV4aXN0 cyhSZWxhdGlvbkdldFNtZ3IocmVsKSwgZm9ya051bWJlcikpCisJeworCQkvKgorCQkgKiBOb3Jt YWxseSwgd2UgdHJlYXQgdGhpcyBhcyBhbiBlcnJvciwgYnV0IGluIGEgcGFyYWxsZWwgd29ya2Vy LCBpdAorCQkgKiBjYW4gaGFwcGVuIGZvciBhIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gdGhh dCBoYXNuJ3QgYmVlbiB1c2VkLAorCQkgKiBhbmQgc28gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVk LiAgVHJlYXQgdGhpcyBhcyBlbXB0eSBzdG9yYWdlLgorCQkgKi8KKwkJaWYgKElzUGFyYWxsZWxX b3JrZXIoKSAmJiBSRUxBVElPTl9JU19HTE9CQUxfVEVNUChyZWwpKQorCQl7CisJCQlyZWxhdGlv bl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJCWlmIChwcml2T2lkICE9IHJlbE9p ZCkKKwkJCQlVbmxvY2tSZWxhdGlvbk9pZChwcml2T2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ CQlQR19SRVRVUk5fSU5UNjQoMCk7CisJCX0KKwogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coImZvcmsg XCIlc1wiIGRvZXMgbm90IGV4aXN0IGZvciB0aGlzIHJlbGF0aW9uIiwKIAkJCQkJCWZvcmtTdHJp bmcpKSk7CisJfQogCiAJLyogVmFsaWRhdGUgYmxvY2sgbnVtYmVycywgb3IgaGFuZGxlIG51bGxz LiAqLwogCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzSW5Gb3JrKHJlbCwgZm9y a051bWJlcik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCAy MjY4Y2MyNzdiYy4uZDlmNjQyODdjNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwpAQCAtNTE0LDcgKzUxNCw3IEBAIGhlYXBhbV9yZWxhdGlvbl9zZXRfbmV3X2Zp bGVsb2NhdG9yKFJlbGF0aW9uIHJlbCwKIAkgKi8KIAkqbWlubXVsdGkgPSBHZXRPbGRlc3RNdWx0 aVhhY3RJZCgpOwogCi0Jc3JlbCA9IFJlbGF0aW9uQ3JlYXRlU3RvcmFnZSgqbmV3cmxvY2F0b3Is IHBlcnNpc3RlbmNlLCB0cnVlKTsKKwlzcmVsID0gUmVsYXRpb25DcmVhdGVTdG9yYWdlKHJlbC0+ cmRfaWQsICpuZXdybG9jYXRvciwgcGVyc2lzdGVuY2UsIHRydWUpOwogCiAJLyoKIAkgKiBJZiBy ZXF1aXJlZCwgc2V0IHVwIGFuIGluaXQgZm9yayBmb3IgYW4gdW5sb2dnZWQgdGFibGUgc28gdGhh dCBpdCBjYW4KQEAgLTU1Nyw3ICs1NTcsOCBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9kYXRhKFJl bGF0aW9uIHJlbCwgY29uc3QgUmVsRmlsZUxvY2F0b3IgKm5ld3Jsb2NhdG9yKQogCSAqIE5PVEU6 IGFueSBjb25mbGljdCBpbiByZWxmaWxlbnVtYmVyIHZhbHVlIHdpbGwgYmUgY2F1Z2h0IGluCiAJ ICogUmVsYXRpb25DcmVhdGVTdG9yYWdlKCkuCiAJICovCi0JZHN0cmVsID0gUmVsYXRpb25DcmVh dGVTdG9yYWdlKCpuZXdybG9jYXRvciwgcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlLCB0cnVl KTsKKwlkc3RyZWwgPSBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UocmVsLT5yZF9pZCwgKm5ld3Jsb2Nh dG9yLAorCQkJCQkJCQkgICByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UsIHRydWUpOwogCiAJ LyogY29weSBtYWluIGZvcmsgKi8KIAlSZWxhdGlvbkNvcHlTdG9yYWdlKFJlbGF0aW9uR2V0U21n cihyZWwpLCBkc3RyZWwsIE1BSU5fRk9SS05VTSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpp bmRleCAzYTg5MTQ5MDE2Zi4uZTFiMDkyMDE0ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0 LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nd2FpdC5o IgorI2luY2x1ZGUgImNhdGFsb2cvZ2xvYmFsX3RlbXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL2lu ZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2VudW0uaCIKQEAgLTIzNDYsNiArMjM0NywxMyBAQCBDb21taXRUcmFuc2FjdGlvbih2b2lk KQogCS8qIFNodXQgZG93biB0aGUgZGVmZXJyZWQtdHJpZ2dlciBtYW5hZ2VyICovCiAJQWZ0ZXJU cmlnZ2VyRW5kWGFjdCh0cnVlKTsKIAorCS8qCisJICogUHJvY2VzcyBkcm9wcGVkIGdsb2JhbCB0 ZW1wb3JhcnkgcmVsYXRpb25zLCBkZWxldGluZyB0aGVpciBsb2NhbAorCSAqIHN0b3JhZ2UuICBU aGlzIG11c3QgaGFwcGVuIGJlZm9yZSBPTiBDT01NSVQgaGFuZGxpbmcgc28gdGhhdCB3ZSByZW1v dmUKKwkgKiBhbnkgT04gQ09NTUlUIGFjdGlvbnMgZm9yIGRyb3BwZWQgcmVsYXRpb25zLgorCSAq LworCVByZUNvbW1pdF9HbG9iYWxUZW1wUmVsYXRpb24oKTsKKwogCS8qCiAJICogTGV0IE9OIENP TU1JVCBtYW5hZ2VtZW50IGRvIGl0cyB0aGluZyAobXVzdCBoYXBwZW4gYWZ0ZXIgY2xvc2luZwog CSAqIGN1cnNvcnMsIHRvIGF2b2lkIGRhbmdsaW5nLXJlZmVyZW5jZSBwcm9ibGVtcykKQEAgLTI0 NjIsNiArMjQ3MCw5IEBAIENvbW1pdFRyYW5zYWN0aW9uKHZvaWQpCiAJLyogQ2xlYW4gdXAgdGhl IHJlbGF0aW9uIGNhY2hlICovCiAJQXRFT1hhY3RfUmVsYXRpb25DYWNoZSh0cnVlKTsKIAorCS8q IENsZWFuIHVwIHN0b3JhZ2UgYW5kIHVzYWdlIHJlY29yZHMgZm9yIGdsb2JhbCB0ZW1wb3Jhcnkg cmVsYXRpb25zICovCisJQXRFT1hhY3RfR2xvYmFsVGVtcFJlbGF0aW9uKHRydWUpOworCiAJLyog Q2xlYW4gdXAgdGhlIHR5cGUgY2FjaGUgKi8KIAlBdEVPWGFjdF9UeXBlQ2FjaGUoKTsKIApAQCAt MjYwOSw2ICsyNjIwLDEzIEBAIFByZXBhcmVUcmFuc2FjdGlvbih2b2lkKQogCS8qIFNodXQgZG93 biB0aGUgZGVmZXJyZWQtdHJpZ2dlciBtYW5hZ2VyICovCiAJQWZ0ZXJUcmlnZ2VyRW5kWGFjdCh0 cnVlKTsKIAorCS8qCisJICogUHJvY2VzcyBkcm9wcGVkIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRp b25zLCBkZWxldGluZyB0aGVpciBsb2NhbAorCSAqIHN0b3JhZ2UuICBUaGlzIG11c3QgaGFwcGVu IGJlZm9yZSBPTiBDT01NSVQgaGFuZGxpbmcgc28gdGhhdCB3ZSByZW1vdmUKKwkgKiBhbnkgT04g Q09NTUlUIGFjdGlvbnMgZm9yIGRyb3BwZWQgcmVsYXRpb25zLgorCSAqLworCVByZUNvbW1pdF9H bG9iYWxUZW1wUmVsYXRpb24oKTsKKwogCS8qCiAJICogTGV0IE9OIENPTU1JVCBtYW5hZ2VtZW50 IGRvIGl0cyB0aGluZyAobXVzdCBoYXBwZW4gYWZ0ZXIgY2xvc2luZwogCSAqIGN1cnNvcnMsIHRv IGF2b2lkIGRhbmdsaW5nLXJlZmVyZW5jZSBwcm9ibGVtcykKQEAgLTI3NzEsNiArMjc4OSw5IEBA IFByZXBhcmVUcmFuc2FjdGlvbih2b2lkKQogCS8qIENsZWFuIHVwIHRoZSByZWxhdGlvbiBjYWNo ZSAqLwogCUF0RU9YYWN0X1JlbGF0aW9uQ2FjaGUodHJ1ZSk7CiAKKwkvKiBDbGVhbiB1cCBzdG9y YWdlIGFuZCB1c2FnZSByZWNvcmRzIGZvciBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyAqLwor CUF0RU9YYWN0X0dsb2JhbFRlbXBSZWxhdGlvbih0cnVlKTsKKwogCS8qIENsZWFuIHVwIHRoZSB0 eXBlIGNhY2hlICovCiAJQXRFT1hhY3RfVHlwZUNhY2hlKCk7CiAKQEAgLTMwMjEsNiArMzA0Miw3 IEBAIEFib3J0VHJhbnNhY3Rpb24odm9pZCkKIAkJQXRFT1hhY3RfQWlvKGZhbHNlKTsKIAkJQXRF T1hhY3RfQnVmZmVycyhmYWxzZSk7CiAJCUF0RU9YYWN0X1JlbGF0aW9uQ2FjaGUoZmFsc2UpOwor CQlBdEVPWGFjdF9HbG9iYWxUZW1wUmVsYXRpb24oZmFsc2UpOwogCQlBdEVPWGFjdF9UeXBlQ2Fj aGUoKTsKIAkJQXRFT1hhY3RfSW52YWwoZmFsc2UpOwogCQlBdEVPWGFjdF9NdWx0aVhhY3QoKTsK QEAgLTUyMTQsNiArNTIzNiw4IEBAIENvbW1pdFN1YlRyYW5zYWN0aW9uKHZvaWQpCiAJCQkJCQkg dHJ1ZSwgZmFsc2UpOwogCUF0RU9TdWJYYWN0X1JlbGF0aW9uQ2FjaGUodHJ1ZSwgcy0+c3ViVHJh bnNhY3Rpb25JZCwKIAkJCQkJCQkgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7CisJQXRF T1N1YlhhY3RfR2xvYmFsVGVtcFJlbGF0aW9uKHRydWUsIHMtPnN1YlRyYW5zYWN0aW9uSWQsCisJ CQkJCQkJCSAgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7CiAJQXRFT1N1YlhhY3RfVHlw ZUNhY2hlKCk7CiAJQXRFT1N1YlhhY3RfSW52YWwodHJ1ZSk7CiAJQXRTdWJDb21taXRfc21ncigp OwpAQCAtNTM5OSw2ICs1NDIzLDggQEAgQWJvcnRTdWJUcmFuc2FjdGlvbih2b2lkKQogCQlBdEVP WGFjdF9BaW8oZmFsc2UpOwogCQlBdEVPU3ViWGFjdF9SZWxhdGlvbkNhY2hlKGZhbHNlLCBzLT5z dWJUcmFuc2FjdGlvbklkLAogCQkJCQkJCQkgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7 CisJCUF0RU9TdWJYYWN0X0dsb2JhbFRlbXBSZWxhdGlvbihmYWxzZSwgcy0+c3ViVHJhbnNhY3Rp b25JZCwKKwkJCQkJCQkJCSAgIHMtPnBhcmVudC0+c3ViVHJhbnNhY3Rpb25JZCk7CiAJCUF0RU9T dWJYYWN0X1R5cGVDYWNoZSgpOwogCQlBdEVPU3ViWGFjdF9JbnZhbChmYWxzZSk7CiAJCVJlc291 cmNlT3duZXJSZWxlYXNlKHMtPmN1clRyYW5zYWN0aW9uT3duZXIsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpp bmRleCAyNmZhMGM5YjE4Yy4uMGZiMDg1ZmQ4ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMTcs NiArMTcsNyBAQCBPQkpTID0gXAogCWFjbGNoay5vIFwKIAljYXRhbG9nLm8gXAogCWRlcGVuZGVu Y3kubyBcCisJZ2xvYmFsX3RlbXAubyBcCiAJaGVhcC5vIFwKIAlpbmRleC5vIFwKIAlpbmRleGlu Zy5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMKaW5kZXggYmU4NzkxYWY4NzUuLjY1ZDc4NjY4NWYyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2NhdGFsb2cuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2NhdGFsb2cuYwpAQCAtNTk4LDYgKzU5OCw3IEBAIEdldE5ld1JlbEZpbGVOdW1i ZXIoT2lkIHJlbHRhYmxlc3BhY2UsIFJlbGF0aW9uIHBnX2NsYXNzLCBjaGFyIHJlbHBlcnNpc3Rl bmNlKQogCXN3aXRjaCAocmVscGVyc2lzdGVuY2UpCiAJewogCQljYXNlIFJFTFBFUlNJU1RFTkNF X1RFTVA6CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVA6CiAJCQlwcm9jTnVtYmVy ID0gUHJvY051bWJlckZvclRlbXBSZWxhdGlvbnMoKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTFBF UlNJU1RFTkNFX1VOTE9HR0VEOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9nbG9i YWxfdGVtcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMjE5NWRjZTJlMAotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2xvYmFsX3RlbXAuYwpAQCAtMCwwICsxLDEyMjQgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGdsb2JhbF90ZW1wLmMKKyAqCSAgR2xvYmFsIHRl bXBvcmFyeSByZWxhdGlvbiBtYW5hZ2VtZW50LgorICoKKyAqIFRoaXMgdHJhY2tzIGFsbCBnbG9i YWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBpbiB1c2UgYWNyb3NzIGFsbCBiYWNrZW5kcywKKyAqIGFz IHdlbGwgYXMgYW55IGxvY2FsIHN0b3JhZ2UgY3JlYXRlZCBmb3IgZ2xvYmFsIHRlbXBvcmFyeSBy ZWxhdGlvbnMgdXNlZAorICogaW4gdGhpcyBiYWNrZW5kLgorICoKKyAqIFdoZW4gYSBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9uIGlzIGNyZWF0ZWQgb3IgZmlyc3Qgb3BlbmVkLCBpdCBpcworICog aW5pdGlhbGl6ZWQgZm9yIHVzZSwgd2hpY2ggKGZvciBtb3N0IHJlbGtpbmRzKSBpbmNsdWRlcyBj cmVhdGluZyBsb2NhbAorICogc3RvcmFnZSBmb3IgaXQuICBBbGwgZ2xvYmFsIHRlbXBvcmFyeSBy ZWxhdGlvbnMgaW4gdXNlIGFuZCBhbGwgbG9jYWwKKyAqIHN0b3JhZ2UgY3JlYXRlZCBpcyB0cmFj a2VkLCB0YWtpbmcgaW50byBhY2NvdW50IChzdWIpdHJhbnNhY3Rpb24KKyAqIHJvbGxiYWNrIC0t LSBhIHJvbGxiYWNrIGNhbiB1bmRvIHRoZSBlZmZlY3RzIG9mIGNyZWF0aW5nIG9yIG9wZW5pbmcg YQorICogZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiwgaW5jbHVkaW5nIHRoZSBjcmVhdGlvbiBv ZiBsb2NhbCBzdG9yYWdlLiAgSWYKKyAqIGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBpcyBm aXJzdCBvcGVuZWQgaW4gYSAoc3ViKXRyYW5zYWN0aW9uIHdoaWNoCisgKiBpcyB0aGVuIHJvbGxl ZCBiYWNrLCBpdCBpcyByZWluaXRpYWxpemVkIHRoZSBuZXh0IHRpbWUgaXQgaXMgb3BlbmVkLgor ICogV2hlbiB0aGUgYmFja2VuZCBleGl0cywgYWxsIGxvY2FsbHkgY3JlYXRlZCBzdG9yYWdlIGlz IGRlbGV0ZWQuCisgKgorICogUmVsY2FjaGUgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGFyZSBwYXNz ZWQgb24gdG8gY29kZSBoZXJlIHNvIHRoYXQgaXQgY2FuCisgKiBkZWFsIHdpdGggb3RoZXIgYmFj a2VuZHMgZHJvcHBpbmcgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMuICBJZiBhCisgKiBnbG9i YWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGluIHVzZSBieSB0aGlzIGJhY2tlZCBpcyBkcm9wcGVkIGJ5 IGFub3RoZXIKKyAqIGJhY2tlbmQsIGFsbCBsb2NhbCBzdG9yYWdlIGNyZWF0ZWQgZm9yIHRoZSBy ZWxhdGlvbiBpbiB0aGlzIGJhY2tlbmQgaXMKKyAqIGRlbGV0ZWQgdGhlIG5leHQgdGltZSBhIHRy YW5zYWN0aW9uIGNvbW1pdHMuICAoSXQgY291bGQgcGVyaGFwcyBiZSBkb25lCisgKiBzb29uZXIs IGJ1dCBpdCdzIG5vdCBjcnVjaWFsLCBzaW5jZSBzdWNoIHN0b3JhZ2Ugd2lsbCBiZSBkZWxldGVk IG9uCisgKiBiYWNrZW5kIGV4aXQgYW55d2F5LikKKyAqCisgKiBBIHNoYXJlZCBoYXNoIHRhYmxl IGlzIHVzZWQgdG8gdHJhY2sgYWxsIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIGluCisgKiB1 c2UgYWNyb3NzIGFsbCBkYXRhYmFzZXMgYW5kIGFsbCBiYWNrZW5kcy4gIEEgInVzYWdlIGNvdW50 IiBpcyBrZXB0IGZvcgorICogZWFjaCByZWxhdGlvbiwgd2hpY2ggaXMgYSBjb3VudCBvZiB0aGUg bnVtYmVyIG9mIGJhY2tlbmRzIHVzaW5nIGl0LgorICogVGhpcyBpcyB1c2VkIHRvIHByZXZlbnQg b3BlcmF0aW9ucyBsaWtlIEFMVEVSIFRBQkxFIGZyb20gYWx0ZXJpbmcgYQorICogZ2xvYmFsIHRl bXBvcmFyeSB0YWJsZSBpbiBhIHdheSB0aGF0IHdvdWxkIHJlcXVpcmUgcmV3cml0aW5nIGl0cwor ICogY29udGVudHMsIGlmIGl0J3MgaW4gdXNlIGJ5IG90aGVyIGJhY2tlbmRzLCB3aGljaCBjYW5u b3QgYmUgYWxsb3dlZCwKKyAqIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byByZXdyaXRlIHRoZSBs b2NhbCBzdG9yYWdlIG9mIG90aGVyIGJhY2tlbmRzLgorICoKKyAqIEEgZ2xvYmFsIHRlbXBvcmFy eSByZWxhdGlvbiBpcyByZWdhcmRlZCBhcyAiaW4gdXNlIiBieSBhIGJhY2tlbmQgZnJvbQorICog dGhlIHRpbWUgaXQgaXMgY3JlYXRlZCBvciBmaXJzdCBvcGVuZWQgdW50aWwgdGhlIHRpbWUgaXQg aXMgZHJvcHBlZCBvcgorICogdGhlIGJhY2tlbmQgZXhpdHMgKG9yIGEgcm9sbGJhY2sgdW5kb2Vz IHRoZSBjcmVhdGlvbiBvciBvcGVuaW5nIG9mIHRoZQorICogcmVsYXRpb24pLiAgVGhpcyBtZWFu cyB0aGF0IGEgYmFja2VuZCB0aGF0IGV4ZWN1dGVzIENSRUFURSBHTE9CQUwgVEVNUAorICogVEFC TEUgaXMgY291bnRlZCBhcyB1c2luZyBpdCwgZXZlbiBpZiBpdCBuZXZlciBvcGVucyBpdC4KKyAq CisgKiBXaGVuIGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBpcyBub3QgaW4gdXNlIGJ5IGFu eSBiYWNrZW5kLCBpdCBoYXMgbm8KKyAqIHBoeXNpY2FsIHN0b3JhZ2UuICBUaHVzIGEgZ2xvYmFs IHRlbXBvcmFyeSByZWxhdGlvbiBtdXN0IGhhdmUgYSBzaGFyZWQKKyAqIGRlcGVuZGVuY3kgb24g aXRzIHRhYmxlc3BhY2UgdG8gcHJldmVudCB0aGUgdGFibGVzcGFjZSBmcm9tIGJlaW5nCisgKiBk cm9wcGVkIHdoaWxlIHRoZSByZWxhdGlvbiBpcyBub3QgYmVpbmcgdXNlZC4KKyAqCisgKiBDb3B5 cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgor ICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5j CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisj aW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCisj aW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgorI2lu Y2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2dsb2JhbF90ZW1w LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvdGFi bGVjbWRzLmgiCisjaW5jbHVkZSAibGliL2RzaGFzaC5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIK KyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1z LmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKKworLyoKKyAqIGd0cl9sb2NhbF9z dG9yYWdlCisgKgorICoJSGFzaCB0YWJsZSB0byB0cmFjayBsb2NhbCBzdG9yYWdlIGNyZWF0ZWQg YnkgdGhpcyBiYWNrZW5kIGZvciBnbG9iYWwKKyAqCXRlbXBvcmFyeSByZWxhdGlvbnMuCisgKi8K K3R5cGVkZWYgc3RydWN0IEd0clN0b3JhZ2VFbnRyeQoreworCVJlbEZpbGVMb2NhdG9yIHJsb2Nh dG9yOwkvKiBsb29rdXAga2V5OiByZWxmaWxlbG9jYXRvciBvZiBzdG9yYWdlICovCisJT2lkCQkJ cmVsaWQ7CQkJLyogT0lEIG9mIHJlbGF0aW9uIG93bmluZyB0aGUgc3RvcmFnZSAqLworCVN1YlRy YW5zYWN0aW9uSWQgY3JlYXRlZF9zdWJpZDsgLyogc3RvcmFnZSB3YXMgY3JlYXRlZCBpbiBjdXJy ZW50IHhhY3QgKi8KKwlTdWJUcmFuc2FjdGlvbklkIGRyb3BwZWRfc3ViaWQ7IC8qIGRyb3BwZWQg d2l0aCBhbm90aGVyIHN1YmlkIHNldCAqLworfSBHdHJTdG9yYWdlRW50cnk7CisKK3N0YXRpYyBI VEFCICpndHJfbG9jYWxfc3RvcmFnZTsKKworLyoKKyAqIGVveGFjdF9zdG9yYWdlX2xpc3RbXQor ICoKKyAqCUxpc3Qgb2YgcmVsZmlsZWxvY2F0b3JzIG9mIHN0b3JhZ2UgdGhhdCAobWlnaHQpIG5l ZWQgQXRFT1hhY3QgY2xlYW51cAorICoJd29yay4gIEFzIHdpdGggdGhlIHJlbGNhY2hlJ3MgZW94 YWN0X2xpc3RbXSwgdGhpcyBsaXN0IGludGVudGlvbmFsbHkgaGFzCisgKglsaW1pdGVkIHNpemUs IGFuZCB3ZSBzd2l0Y2ggdG8gYSBmdWxsIGhhc2ggdGFibGUgdHJhdmVyc2FsIGlmIHRoZSBsaXN0 CisgKglvdmVyZmxvd3MuCisgKi8KKyNkZWZpbmUgTUFYX0VPWEFDVF9TVE9SQUdFX0xJU1QgMzIK K3N0YXRpYyBSZWxGaWxlTG9jYXRvciBlb3hhY3Rfc3RvcmFnZV9saXN0W01BWF9FT1hBQ1RfU1RP UkFHRV9MSVNUXTsKK3N0YXRpYyBpbnQJZW94YWN0X3N0b3JhZ2VfbGlzdF9sZW4gPSAwOworc3Rh dGljIGJvb2wgZW94YWN0X3N0b3JhZ2VfbGlzdF9vdmVyZmxvd2VkID0gZmFsc2U7CisKKyNkZWZp bmUgRU9YYWN0U3RvcmFnZUxpc3RBZGQocmxvY2F0b3IpIFwKKwlkbyB7IFwKKwkJaWYgKGVveGFj dF9zdG9yYWdlX2xpc3RfbGVuIDwgTUFYX0VPWEFDVF9TVE9SQUdFX0xJU1QpIFwKKwkJCWVveGFj dF9zdG9yYWdlX2xpc3RbZW94YWN0X3N0b3JhZ2VfbGlzdF9sZW4rK10gPSAocmxvY2F0b3IpOyBc CisJCWVsc2UgXAorCQkJZW94YWN0X3N0b3JhZ2VfbGlzdF9vdmVyZmxvd2VkID0gdHJ1ZTsgXAor CX0gd2hpbGUgKDApCisKKy8qCisgKiBndHJfbG9jYWxfdXNhZ2UKKyAqCisgKglIYXNoIHRhYmxl IHRvIHRyYWNrIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIGluIHVzZSBpbiB0aGlzIGJhY2tl bmQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEd0clVzYWdlRW50cnkKK3sKKwlPaWQJCQlyZWxpZDsJ CQkvKiBsb29rdXAga2V5OiBPSUQgb2YgcmVsYXRpb24gaW4gdXNlICovCisJU3ViVHJhbnNhY3Rp b25JZCBzdGFydGVkX3N1YmlkOyAvKiB1c2FnZSBzdGFydGVkIGluIGN1cnJlbnQgeGFjdCAqLwor CVN1YlRyYW5zYWN0aW9uSWQgc3RvcHBlZF9zdWJpZDsgLyogdXNhZ2UgZW5kZWQgd2l0aCBhbm90 aGVyIHN1YmlkIHNldCAqLworfSBHdHJVc2FnZUVudHJ5OworCitzdGF0aWMgSFRBQiAqZ3RyX2xv Y2FsX3VzYWdlOworCisvKgorICogZW94YWN0X3VzYWdlX2xpc3RbXQorICoKKyAqCUxpc3Qgb2Yg T0lEcyBvZiBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIHVzYWdlIGVudHJpZXMgdGhhdCAobWln aHQpIG5lZWQKKyAqCUF0RU9YYWN0IGNsZWFudXAgd29yay4gIENmLiBlb3hhY3Rfc3RvcmFnZV9s aXN0W10uCisgKi8KKyNkZWZpbmUgTUFYX0VPWEFDVF9VU0FHRV9MSVNUIDMyCitzdGF0aWMgT2lk CWVveGFjdF91c2FnZV9saXN0W01BWF9FT1hBQ1RfVVNBR0VfTElTVF07CitzdGF0aWMgaW50CWVv eGFjdF91c2FnZV9saXN0X2xlbiA9IDA7CitzdGF0aWMgYm9vbCBlb3hhY3RfdXNhZ2VfbGlzdF9v dmVyZmxvd2VkID0gZmFsc2U7CisKKyNkZWZpbmUgRU9YYWN0VXNhZ2VMaXN0QWRkKHJlbGlkKSBc CisJZG8geyBcCisJCWlmIChlb3hhY3RfdXNhZ2VfbGlzdF9sZW4gPCBNQVhfRU9YQUNUX1VTQUdF X0xJU1QpIFwKKwkJCWVveGFjdF91c2FnZV9saXN0W2VveGFjdF91c2FnZV9saXN0X2xlbisrXSA9 IChyZWxpZCk7IFwKKwkJZWxzZSBcCisJCQllb3hhY3RfdXNhZ2VfbGlzdF9vdmVyZmxvd2VkID0g dHJ1ZTsgXAorCX0gd2hpbGUgKDApCisKKy8qCisgKiBJbnZhbGlkYXRpb24gbWVzc2FnZSBoYW5k bGluZyBsaXN0czoKKyAqCisgKglndHJzX2ludmFsaWRhdGVkCisgKgkJT0lEcyBvZiBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9ucyB0aGF0IHdlIGFyZSB1c2luZywgZm9yIHdoaWNoIHdlCisgKgkJ aGF2ZSByZWNlaXZlZCBhbiBpbnZhbGlkYXRpb24gbWVzc2FnZS4KKyAqCisgKglndHJzX2Ryb3Bw ZWQKKyAqCQlPSURzIG9mIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIHRoYXQgd2Ugd2VyZSB1 c2luZywgd2hpY2ggaGF2ZSBiZWVuCisgKgkJZHJvcHBlZCAoYnkgdXMgb3IgYW5vdGhlciBiYWNr ZW5kKS4KKyAqLworc3RhdGljIExpc3QgKmd0cnNfaW52YWxpZGF0ZWQ7CitzdGF0aWMgTGlzdCAq Z3Ryc19kcm9wcGVkOworCisvKgorICogZ3RyX3NoYXJlZF91c2FnZQorICoKKyAqCVNoYXJlZCBo YXNoIHRhYmxlIHJlY29yZGluZyBhbGwgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiB1c2FnZSBh Y3Jvc3MgYWxsCisgKglkYXRhYmFzZXMgYW5kIGJhY2tlbmRzLiAgRm9yIGVhY2ggcmVsYXRpb24s ICJ1c2FnZV9jb3VudCIgcmVjb3JkcyB0aGUKKyAqCW51bWJlciBvZiBiYWNrZW5kcyAoaW5jbHVk aW5nIHVzKSB1c2luZyB0aGUgcmVsYXRpb24uICBFbnRyaWVzIGFyZQorICoJcmVtb3ZlZCB3aGVu IHRoZSB1c2FnZSBjb3VudCBoaXRzIHplcm8uCisgKi8KK3R5cGVkZWYgc3RydWN0IEd0clNoYXJl ZFVzYWdlS2V5Cit7CisJT2lkCQkJZGJpZDsJCQkvKiBEQiBjb250YWluaW5nIGdsb2JhbCB0ZW1w b3JhcnkgcmVsYXRpb24gKi8KKwlPaWQJCQlyZWxpZDsJCQkvKiBPSUQgb2YgZ2xvYmFsIHRlbXBv cmFyeSByZWxhdGlvbiAqLworfSBHdHJTaGFyZWRVc2FnZUtleTsKKwordHlwZWRlZiBzdHJ1Y3Qg R3RyU2hhcmVkVXNhZ2VFbnRyeQoreworCUd0clNoYXJlZFVzYWdlS2V5IGtleTsJCS8qIGxvb2t1 cCBrZXk6IChkYmlkLCByZWxpZCkgb2YgcmVsYXRpb24gKi8KKwlpbnQJCQl1c2FnZV9jb3VudDsJ LyogbnVtYmVyIG9mIGJhY2tlbmRzIGFjY2Vzc2luZyByZWxhdGlvbiAqLworfSBHdHJTaGFyZWRV c2FnZUVudHJ5OworCitzdGF0aWMgY29uc3QgZHNoYXNoX3BhcmFtZXRlcnMgZ3RyX3NoYXJlZF91 c2FnZV9wYXJhbXMgPSB7CisJc2l6ZW9mKEd0clNoYXJlZFVzYWdlS2V5KSwKKwlzaXplb2YoR3Ry U2hhcmVkVXNhZ2VFbnRyeSksCisJZHNoYXNoX21lbWNtcCwKKwlkc2hhc2hfbWVtaGFzaCwKKwlk c2hhc2hfbWVtY3B5LAorCUxXVFJBTkNIRV9HTE9CQUxfVEVNUF9SRUxfSEFTSAorfTsKKworc3Rh dGljIGRzYV9hcmVhICpndHJfc2hhcmVkX3VzYWdlX2RzYTsKK3N0YXRpYyBkc2hhc2hfdGFibGUg Kmd0cl9zaGFyZWRfdXNhZ2U7CisKKy8qCisgKiBndHJfc2htZW1fY29udHJvbAorICoKKyAqCVNo YXJlZCBtZW1vcnkgc3RhdGUgZm9yIHRoZSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIHNoYXJl ZCB1c2FnZSB0YWJsZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVGVtcFJlbFNobWVtQ29u dHJvbAoreworCWRzYV9oYW5kbGUgZHNhX2hhbmRsZTsJCS8qIHVzYWdlIHRhYmxlJ3MgRFNBIGhh bmRsZSAqLworCWRzaGFzaF90YWJsZV9oYW5kbGUgZHNoYXNoX2hhbmRsZTsJLyogdXNhZ2UgdGFi bGUncyBkc2hhc2ggaGFuZGxlICovCit9IEdsb2JhbFRlbXBSZWxTaG1lbUNvbnRyb2w7CisKK3N0 YXRpYyBHbG9iYWxUZW1wUmVsU2htZW1Db250cm9sICpndHJfc2htZW1fY29udHJvbDsKKworLyoK KyAqIEdsb2JhbFRlbXBSZWxTaG1lbUNhbGxiYWNrcworICoKKyAqCUNhbGxiYWNrcyB0byByZWdp c3RlciBvdXIgc2hhcmVkIG1lbW9yeSByZXF1aXJlbWVudHMgYW5kIGluaXRpYWxpemUgaXQuCisg Ki8KK3N0YXRpYyB2b2lkCitndHJfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCit7CisJU2htZW1S ZXF1ZXN0U3RydWN0KC5uYW1lID0gIkdsb2JhbCBUZW1wb3JhcnkgUmVsYXRpb24gVXNhZ2UgVGFi bGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihHbG9iYWxUZW1wUmVsU2htZW1Db250cm9sKSwK KwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmZ3RyX3NobWVtX2NvbnRyb2wsCisJCSk7Cit9CisK K3N0YXRpYyB2b2lkCitndHJfc2htZW1faW5pdCh2b2lkICphcmcpCit7CisJZ3RyX3NobWVtX2Nv bnRyb2wtPmRzYV9oYW5kbGUgPSBEU0FfSEFORExFX0lOVkFMSUQ7CisJZ3RyX3NobWVtX2NvbnRy b2wtPmRzaGFzaF9oYW5kbGUgPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7Cit9CisKK2NvbnN0IFNo bWVtQ2FsbGJhY2tzIEdsb2JhbFRlbXBSZWxTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9m biA9IGd0cl9zaG1lbV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gZ3RyX3NobWVtX2luaXQsCit9Owor CisvKgorICogZ3RyX2RlbGV0ZV9hbGxfc3RvcmFnZV9vbl9leGl0CisgKgorICoJQmFja2VuZCBl eGl0IGNhbGxiYWNrIHRvIGRlbGV0ZSBhbGwgbG9jYWwgc3RvcmFnZSBjcmVhdGVkIGZvciBnbG9i YWwKKyAqCXRlbXBvcmFyeSByZWxhdGlvbnMgaW4gdGhpcyBiYWNrZW5kLgorICovCitzdGF0aWMg dm9pZAorZ3RyX2RlbGV0ZV9hbGxfc3RvcmFnZV9vbl9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcp Cit7CisJUHJvY051bWJlcgliYWNrZW5kOworCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CisJR3Ry U3RvcmFnZUVudHJ5ICplbnRyeTsKKwlTTWdyUmVsYXRpb24gc3JlbDsKKworCS8qIExvb3Agb3Zl ciBhbGwgc3RvcmFnZSBjcmVhdGVkIGFuZCBkZWxldGUgaXQgKi8KKwliYWNrZW5kID0gUHJvY051 bWJlckZvclRlbXBSZWxhdGlvbnMoKTsKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd0cl9sb2Nh bF9zdG9yYWdlKTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAh PSBOVUxMKQorCXsKKwkJc3JlbCA9IHNtZ3JvcGVuKGVudHJ5LT5ybG9jYXRvciwgYmFja2VuZCk7 CisJCXNtZ3Jkb3VubGlua2FsbCgmc3JlbCwgMSwgZmFsc2UpOworCQlzbWdyY2xvc2Uoc3JlbCk7 CisJfQorfQorCisvKgorICogZ3RyX2luaXRfc3RvcmFnZV90YWJsZQorICoKKyAqCUluaXRpYWxp emUgdGhlIGhhc2ggdGFibGUgcmVjb3JkaW5nIGxvY2FsIHN0b3JhZ2UgY3JlYXRlZCBmb3IgZ2xv YmFsCisgKgl0ZW1wb3JhcnkgcmVsYXRpb25zLCBpZiBub3QgYWxyZWFkeSBkb25lLgorICovCitz dGF0aWMgdm9pZAorZ3RyX2luaXRfc3RvcmFnZV90YWJsZSh2b2lkKQoreworCWlmIChndHJfbG9j YWxfc3RvcmFnZSA9PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCWN0bC5rZXlzaXpl ID0gc2l6ZW9mKFJlbEZpbGVMb2NhdG9yKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihHdHJT dG9yYWdlRW50cnkpOworCisJCWd0cl9sb2NhbF9zdG9yYWdlID0KKwkJCWhhc2hfY3JlYXRlKCJH bG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIHN0b3JhZ2UgdGFibGUiLAorCQkJCQkJMTI4LCAmY3Rs LCBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTKTsKKworCQkvKiBSZWdpc3RlciBjYWxsYmFjayB0byBk ZWxldGUgYWxsIGxvY2FsIHN0b3JhZ2Ugb24gZXhpdCAqLworCQliZWZvcmVfc2htZW1fZXhpdChn dHJfZGVsZXRlX2FsbF9zdG9yYWdlX29uX2V4aXQsIDApOworCX0KK30KKworLyoKKyAqIGd0cl9z dG9yYWdlX2Ryb3BwZWQKKyAqCisgKglJbnZhbGlkYXRlIGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxh dGlvbiB3aG9zZSBzdG9yYWdlIGhhcyBiZWVuIGRyb3BwZWQuCisgKgorICoJVGhpcyBpcyBjYWxs ZWQgYXMgcGFydCBvZiBBdEVPKFN1YilYYWN0IGNsZWFudXAgaWYgc3RvcmFnZSBjcmVhdGlvbiBp cworICoJcm9sbGVkIGJhY2ssIG9yIHN0b3JhZ2UgZGVsZXRpb24gaXMgY29tbWl0dGVkLiAgVGhp cyBjYW4gaGFwcGVuIHNldmVyYWwKKyAqCWRpZmZlcmVudCB3YXlzOgorICoKKyAqCS0gVGhlIHJl bGF0aW9uIHdhcyBpbml0aWFsaXplZCBpbiBhIHRyYW5zYWN0aW9uIHdoaWNoIHdhcyB0aGVuIHJv bGxlZAorICoJICBiYWNrLCBjYXVzaW5nIHRoZSBsb2NhbCBzdG9yYWdlIGNyZWF0ZWQgZHVyaW5n IGluaXRpYWxpemF0aW9uIHRvIGJlCisgKgkgIGRyb3BwZWQuCisgKgorICoJLSBBbiBvcGVyYXRp b24gbGlrZSBSRVBBQ0sgb3IgVFJVTkNBVEUgY29tbWl0dGVkIGFuZCB0aGUgb2xkIHN0b3JhZ2Ug d2FzCisgKgkgIGRyb3BwZWQuCisgKgorICoJLSBBbiBvcGVyYXRpb24gbGlrZSBSRVBBQ0sgb3Ig VFJVTkNBVEUgd2FzIHJvbGxlZCBiYWNrIGFuZCB0aGUgbmV3IHN0b3JhZ2UKKyAqCSAgd2FzIGRy b3BwZWQuICBUaGUgb2xkIHN0b3JhZ2UgbWF5IG9yIG1heSBub3Qgc3RpbGwgZXhpc3QsIGRlcGVu ZGluZyBvbgorICoJICB3aGVuIGl0IHdhcyBjcmVhdGVkLgorICoKKyAqCS0gVGhlIHRhYmxlIGl0 c2VsZiB3YXMgZHJvcHBlZC4KKyAqCisgKglIZXJlLCB3ZSBoYXZlIG5vIHdheSB0byBkaXN0aW5n dWlzaCBiZXR3ZWVuIHRoZXNlIGNhc2VzLCBzbyB3ZSBqdXN0IG1hcmsKKyAqCXRoZSByZWxhdGlv bidzIHJlbGNhY2hlIGVudHJ5IGFzIGludmFsaWQgKGlmIGl0IHN0aWxsIGhhcyBvbmUpLCBmb3Jj aW5nIGl0CisgKgl0byBiZSByZWxvYWRlZCBhbmQgcmVpbml0aWFsaXplZCB3aGVuIGl0IGlzIG5l eHQgb3BlbmVkLiAgTmV3IHN0b3JhZ2UgZm9yCisgKgl0aGUgcmVsYXRpb24gd2lsbCB0aGVuIGJl IGNyZWF0ZWQsIGlmIG5lZWRlZC4KKyAqLworc3RhdGljIHZvaWQKK2d0cl9zdG9yYWdlX2Ryb3Bw ZWQoT2lkIHJlbGlkLCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKK3sKKwkvKiBJZiB0aGUgcmVs YXRpb24gaXMgc3RpbGwgaW4gdGhlIHJlbGNhY2hlIG1hcmsgaXQgYXMgaW52YWxpZCAqLworCVJl bGF0aW9uTWFya0ludmFsaWQocmVsaWQpOworCisJLyoKKwkgKiBSZW1vdmUgdGhlIGhhc2ggZW50 cnkgZm9yIHRoZSBkcm9wcGVkIHN0b3JhZ2UsIGZvcmNpbmcgdGhlIHJlbGF0aW9uIHRvCisJICog Y3JlYXRlIG5ldyBzdG9yYWdlIGlmIGl0cyByZWxmaWxlbm9kZSBwb2ludHMgdG8gdGhpcyBzdG9y YWdlIGFmdGVyIGl0CisJICogaXMgcmVsb2FkZWQuCisJICovCisJKHZvaWQpIGhhc2hfc2VhcmNo KGd0cl9sb2NhbF9zdG9yYWdlLCAmcmxvY2F0b3IsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKK30KKwor LyoKKyAqIEF0RU9YYWN0X1N0b3JhZ2VDbGVhbnVwCisgKgorICoJQ2xlYW4gdXAgc3RvcmFnZSBy ZWNvcmRzIGZvciBhIHNpbmdsZSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGF0CisgKgltYWlu LXRyYW5zYWN0aW9uIGNvbW1pdCBvciBhYm9ydC4KKyAqCisgKglOQjogdGhpcyBwcm9jZXNzaW5n IG11c3QgYmUgaWRlbXBvdGVudCwgYmVjYXVzZSBFT1hhY3RTdG9yYWdlTGlzdEFkZCgpCisgKglk b2Vzbid0IGJvdGhlciB0byBwcmV2ZW50IGR1cGxpY2F0ZSBlbnRyaWVzIGluIGVveGFjdF9zdG9y YWdlX2xpc3RbXS4KKyAqLworc3RhdGljIHZvaWQKK0F0RU9YYWN0X1N0b3JhZ2VDbGVhbnVwKEd0 clN0b3JhZ2VFbnRyeSAqZW50cnksIGJvb2wgaXNDb21taXQpCit7CisJLyoKKwkgKiBJZiB0aGUg c3RvcmFnZSBubyBsb25nZXIgZXhpc3RzIGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24gZW5kcywgdGhl IGdsb2JhbAorCSAqIHRlbXBvcmFyeSByZWxhdGlvbiB0aGF0IHdhcyB1c2luZyBpdCBtYXkgbm8g bG9uZ2VyIGhhdmUgYW55IHN0b3JhZ2UuCisJICogTWFyayB0aGUgcmVsYXRpb24gYXMgaW52YWxp ZCBhbmQgcmVtb3ZlIHRoZSBzdG9yYWdlIGhhc2ggZW50cnksIGZvcmNpbmcKKwkgKiB0aGUgcmVs YXRpb24gdG8gYmUgcmVpbml0aWFsaXplZCBhbmQgaGF2ZSBuZXcgc3RvcmFnZSBjcmVhdGVkLCBp ZgorCSAqIG5lY2Vzc2FyeSwgd2hlbiBpdCBpcyBuZXh0IGxvYWRlZC4gIE90aGVyd2lzZSwgcmVz ZXQgdGhlIGhhc2ggZW50cnkncworCSAqIHN1YmlkcyB0byB6ZXJvLgorCSAqLworCWlmICgoaXND b21taXQgJiYgZW50cnktPmRyb3BwZWRfc3ViaWQgIT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQp IHx8CisJCSghaXNDb21taXQgJiYgZW50cnktPmNyZWF0ZWRfc3ViaWQgIT0gSW52YWxpZFN1YlRy YW5zYWN0aW9uSWQpKQorCXsKKwkJZ3RyX3N0b3JhZ2VfZHJvcHBlZChlbnRyeS0+cmVsaWQsIGVu dHJ5LT5ybG9jYXRvcik7CisJfQorCWVsc2UKKwl7CisJCWVudHJ5LT5jcmVhdGVkX3N1YmlkID0g SW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJCWVudHJ5LT5kcm9wcGVkX3N1YmlkID0gSW52YWxp ZFN1YlRyYW5zYWN0aW9uSWQ7CisJfQorfQorCisvKgorICogQXRFT1N1YlhhY3RfU3RvcmFnZUNs ZWFudXAKKyAqCisgKglDbGVhbiB1cCBzdG9yYWdlIHJlY29yZHMgZm9yIGEgc2luZ2xlIGdsb2Jh bCB0ZW1wb3JhcnkgcmVsYXRpb24gYXQKKyAqCXN1YnRyYW5zYWN0aW9uIGNvbW1pdCBvciBhYm9y dC4KKyAqCisgKglOQjogdGhpcyBwcm9jZXNzaW5nIG11c3QgYmUgaWRlbXBvdGVudCwgYmVjYXVz ZSBFT1hhY3RTdG9yYWdlTGlzdEFkZCgpCisgKglkb2Vzbid0IGJvdGhlciB0byBwcmV2ZW50IGR1 cGxpY2F0ZSBlbnRyaWVzIGluIGVveGFjdF9zdG9yYWdlX2xpc3RbXS4KKyAqLworc3RhdGljIHZv aWQKK0F0RU9TdWJYYWN0X1N0b3JhZ2VDbGVhbnVwKEd0clN0b3JhZ2VFbnRyeSAqZW50cnksIGJv b2wgaXNDb21taXQsCisJCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCisJCQkJCQkg ICBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1YmlkKQoreworCS8qCisJICogSXMgaXQgc3RvcmFn ZSBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHN1YnRyYW5zYWN0aW9uPworCSAqCisJICogRHVyaW5n IHN1YmNvbW1pdCwgbWFyayBpdCBhcyBiZWxvbmdpbmcgdG8gdGhlIHBhcmVudCwgaW5zdGVhZCwg YXMgbG9uZworCSAqIGFzIGl0IGhhcyBub3QgYmVlbiBkZWxldGVkLiAgT3RoZXJ3aXNlLCB0aGUg Z2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbgorCSAqIHRoYXQgd2FzIHVzaW5nIHRoaXMgc3RvcmFn ZSBtYXkgbm8gbG9uZ2VyIGhhdmUgYW55IHN0b3JhZ2U7IG1hcmsgdGhlCisJICogcmVsYXRpb24g YXMgaW52YWxpZCBhbmQgcmVtb3ZlIHRoZSBzdG9yYWdlIGhhc2ggZW50cnksIGZvcmNpbmcgdGhl CisJICogcmVsYXRpb24gdG8gYmUgcmVpbml0aWFsaXplZCBhbmQgaGF2ZSBuZXcgc3RvcmFnZSBj cmVhdGVkLCBpZgorCSAqIG5lY2Vzc2FyeS4KKwkgKi8KKwlpZiAoZW50cnktPmNyZWF0ZWRfc3Vi aWQgPT0gbXlTdWJpZCkKKwl7CisJCUFzc2VydChlbnRyeS0+ZHJvcHBlZF9zdWJpZCA9PSBteVN1 YmlkIHx8CisJCQkgICBlbnRyeS0+ZHJvcHBlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rp b25JZCk7CisKKwkJaWYgKGlzQ29tbWl0ICYmIGVudHJ5LT5kcm9wcGVkX3N1YmlkID09IEludmFs aWRTdWJUcmFuc2FjdGlvbklkKQorCQkJZW50cnktPmNyZWF0ZWRfc3ViaWQgPSBwYXJlbnRTdWJp ZDsKKwkJZWxzZQorCQkJZ3RyX3N0b3JhZ2VfZHJvcHBlZChlbnRyeS0+cmVsaWQsIGVudHJ5LT5y bG9jYXRvcik7CisJfQorCisJLyogVXBkYXRlIHRoZSBzdG9yYWdlIGRyb3BwZWQgc3ViaWQgKi8K KwlpZiAoZW50cnktPmRyb3BwZWRfc3ViaWQgPT0gbXlTdWJpZCkKKwl7CisJCWlmIChpc0NvbW1p dCkKKwkJCWVudHJ5LT5kcm9wcGVkX3N1YmlkID0gcGFyZW50U3ViaWQ7CisJCWVsc2UKKwkJCWVu dHJ5LT5kcm9wcGVkX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJfQorfQorCisv KgorICogZ3RyX3JlbW92ZV9hbGxfdXNhZ2Vfb25fZXhpdAorICoKKyAqCUJhY2tlbmQgZXhpdCBj YWxsYmFjayB0byByZW1vdmUgYWxsIHJlY29yZHMgb2YgdGhpcyBiYWNrZW5kJ3MgdXNlIG9mCisg KglnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBmcm9tIHRoZSBzaGFyZWQgdXNhZ2UgaGFzaCB0 YWJsZS4KKyAqLworc3RhdGljIHZvaWQKK2d0cl9yZW1vdmVfYWxsX3VzYWdlX29uX2V4aXQoaW50 IGNvZGUsIERhdHVtIGFyZykKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCUd0clVzYWdl RW50cnkgKmxvY2FsX2VudHJ5OworCUd0clNoYXJlZFVzYWdlS2V5IGtleTsKKwlHdHJTaGFyZWRV c2FnZUVudHJ5ICpzaGFyZWRfZW50cnk7CisKKwkvKiBMb29wIG92ZXIgYWxsIHRoZSBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9ucyB3ZSB3ZXJlIHVzaW5nICovCisJaGFzaF9zZXFfaW5pdCgmc3Rh dHVzLCBndHJfbG9jYWxfdXNhZ2UpOworCXdoaWxlICgobG9jYWxfZW50cnkgPSBoYXNoX3NlcV9z ZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQkvKiBGaW5kIHRoZSBzaGFyZWQgdXNhZ2Ug ZW50cnkgKi8KKwkJa2V5LmRiaWQgPSBNeURhdGFiYXNlSWQ7CisJCWtleS5yZWxpZCA9IGxvY2Fs X2VudHJ5LT5yZWxpZDsKKwkJc2hhcmVkX2VudHJ5ID0gZHNoYXNoX2ZpbmQoZ3RyX3NoYXJlZF91 c2FnZSwgJmtleSwgdHJ1ZSk7CisKKwkJaWYgKHNoYXJlZF9lbnRyeS0+dXNhZ2VfY291bnQgPiAx KQorCQl7CisJCQkvKiBPdGhlciBiYWNrZW5kcyBhcmUgc3RpbGwgdXNpbmcgdGhlIHJlbGF0aW9u ICovCisJCQlzaGFyZWRfZW50cnktPnVzYWdlX2NvdW50LS07CisJCQlkc2hhc2hfcmVsZWFzZV9s b2NrKGd0cl9zaGFyZWRfdXNhZ2UsIHNoYXJlZF9lbnRyeSk7CisJCX0KKwkJZWxzZQorCQl7CisJ CQkvKiBObyBtb3JlIGJhY2tlbmRzIHVzaW5nIGl0ICovCisJCQlkc2hhc2hfZGVsZXRlX2VudHJ5 KGd0cl9zaGFyZWRfdXNhZ2UsIHNoYXJlZF9lbnRyeSk7CisJCX0KKworCQkvKgorCQkgKiBOQjog SXQgaXMgcG9zc2libGUgZm9yIGd0cl9yZW1vdmVfdXNhZ2UoKSB0byBydW4gYWZ0ZXIgdGhpcywg c28gd2UKKwkJICogbmVlZCB0byByZW1vdmUgYWxsIGxvY2FsIGVudHJpZXMgdG9vLgorCQkgKi8K KwkJKHZvaWQpIGhhc2hfc2VhcmNoKGd0cl9sb2NhbF91c2FnZSwKKwkJCQkJCSAgICZsb2NhbF9l bnRyeS0+cmVsaWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwl9Cit9CisKKy8qCisgKiBndHJfaW5p dF91c2FnZV90YWJsZXMKKyAqCisgKglJbml0aWFsaXplIHRoZSBsb2NhbCBhbmQgc2hhcmVkIHVz YWdlIGhhc2ggdGFibGVzIGZvciBnbG9iYWwgdGVtcG9yYXJ5CisgKglyZWxhdGlvbnMsIGlmIG5v dCBhbHJlYWR5IGRvbmUuCisgKi8KK3N0YXRpYyB2b2lkCitndHJfaW5pdF91c2FnZV90YWJsZXMo dm9pZCkKK3sKKwlIQVNIQ1RMCQljdGw7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJ LyogTG9jYWwgdXNhZ2UgdGFibGUgKi8KKwlpZiAoZ3RyX2xvY2FsX3VzYWdlID09IE5VTEwpCisJ eworCQljdGwua2V5c2l6ZSA9IHNpemVvZihPaWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9m KEd0clVzYWdlRW50cnkpOworCisJCWd0cl9sb2NhbF91c2FnZSA9IGhhc2hfY3JlYXRlKCJHbG9i YWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBpbiB1c2UgbG9jYWxseSIsCisJCQkJCQkJCQkgIDEyOCwg JmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7CisJfQorCisJLyogU2hhcmVkIHVzYWdlIHRh YmxlICovCisJaWYgKGd0cl9zaGFyZWRfdXNhZ2UgPT0gTlVMTCkKKwl7CisJCS8qIFVzZSBhIGxv Y2sgdG8gZW5zdXJlIG9ubHkgb25lIHByb2Nlc3MgY3JlYXRlcyB0aGUgdGFibGUgKi8KKwkJTFdM b2NrQWNxdWlyZShHbG9iYWxUZW1wUmVsQ29udHJvbExvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkJ LyogQmUgc3VyZSBhbnkgbG9jYWwgbWVtb3J5IGFsbG9jYXRlZCBieSBEU0Egcm91dGluZXMgaXMg cGVyc2lzdGVudCAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1l bW9yeUNvbnRleHQpOworCisJCWlmIChndHJfc2htZW1fY29udHJvbC0+ZHNoYXNoX2hhbmRsZSA9 PSBEU0FfSEFORExFX0lOVkFMSUQpCisJCXsKKwkJCS8qIEluaXRpYWxpemUgZHluYW1pYyBzaGFy ZWQgaGFzaCB0YWJsZSB0byB0cmFjayBzaGFyZWQgdXNhZ2UgKi8KKwkJCWd0cl9zaGFyZWRfdXNh Z2VfZHNhID0gZHNhX2NyZWF0ZShMV1RSQU5DSEVfR0xPQkFMX1RFTVBfUkVMX0RTQSk7CisJCQlk c2FfcGluKGd0cl9zaGFyZWRfdXNhZ2VfZHNhKTsKKwkJCWRzYV9waW5fbWFwcGluZyhndHJfc2hh cmVkX3VzYWdlX2RzYSk7CisKKwkJCWd0cl9zaGFyZWRfdXNhZ2UgPSBkc2hhc2hfY3JlYXRlKGd0 cl9zaGFyZWRfdXNhZ2VfZHNhLAorCQkJCQkJCQkJCQkgJmd0cl9zaGFyZWRfdXNhZ2VfcGFyYW1z LCBOVUxMKTsKKworCQkJLyogU3RvcmUgaGFuZGxlcyBpbiBzaGFyZWQgbWVtb3J5IGZvciBvdGhl ciBiYWNrZW5kcyB0byB1c2UgKi8KKwkJCWd0cl9zaG1lbV9jb250cm9sLT5kc2FfaGFuZGxlID0g ZHNhX2dldF9oYW5kbGUoZ3RyX3NoYXJlZF91c2FnZV9kc2EpOworCQkJZ3RyX3NobWVtX2NvbnRy b2wtPmRzaGFzaF9oYW5kbGUgPQorCQkJCWRzaGFzaF9nZXRfaGFzaF90YWJsZV9oYW5kbGUoZ3Ry X3NoYXJlZF91c2FnZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBBdHRhY2ggdG8gZXhpc3Rp bmcgZHluYW1pYyBzaGFyZWQgaGFzaCB0YWJsZSAqLworCQkJZ3RyX3NoYXJlZF91c2FnZV9kc2Eg PSBkc2FfYXR0YWNoKGd0cl9zaG1lbV9jb250cm9sLT5kc2FfaGFuZGxlKTsKKwkJCWRzYV9waW5f bWFwcGluZyhndHJfc2hhcmVkX3VzYWdlX2RzYSk7CisKKwkJCWd0cl9zaGFyZWRfdXNhZ2UgPSBk c2hhc2hfYXR0YWNoKGd0cl9zaGFyZWRfdXNhZ2VfZHNhLAorCQkJCQkJCQkJCQkgJmd0cl9zaGFy ZWRfdXNhZ2VfcGFyYW1zLAorCQkJCQkJCQkJCQkgZ3RyX3NobWVtX2NvbnRyb2wtPmRzaGFzaF9o YW5kbGUsCisJCQkJCQkJCQkJCSBOVUxMKTsKKwkJfQorCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKKwkJTFdMb2NrUmVsZWFzZShHbG9iYWxUZW1wUmVsQ29udHJvbExvY2sp OworCisJCS8qIFJlZ2lzdGVyIGNhbGxiYWNrIHRvIHJlbW92ZSBhbGwgb3VyIHVzYWdlIHJlY29y ZHMgb24gZXhpdCAqLworCQliZWZvcmVfc2htZW1fZXhpdChndHJfcmVtb3ZlX2FsbF91c2FnZV9v bl9leGl0LCAwKTsKKwl9Cit9CisKKy8qCisgKiBndHJfcmVjb3JkX3VzYWdlCisgKgorICoJUmVj b3JkIHRoZSBmYWN0IHRoYXQgd2UncmUgdXNpbmcgYSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9u IGJ5IGFkZGluZworICoJZW50cmllcyB0byB0aGUgbG9jYWwgYW5kIHNoYXJlZCB1c2FnZSBoYXNo IHRhYmxlcy4KKyAqCisgKglOb3RlOiBUaGlzIGlzIGludGVudGlvbmFsbHkgaWRlbXBvdGVudC4K KyAqLworc3RhdGljIHZvaWQKK2d0cl9yZWNvcmRfdXNhZ2UoT2lkIHJlbGlkKQoreworCUd0clVz YWdlRW50cnkgKmxvY2FsX2VudHJ5OworCUd0clNoYXJlZFVzYWdlS2V5IGtleTsKKwlHdHJTaGFy ZWRVc2FnZUVudHJ5ICpzaGFyZWRfZW50cnk7CisJYm9vbAkJZm91bmQ7CisKKwkvKiBJbml0aWFs aXplIHRoZSB1c2FnZSB0YWJsZXMsIGlmIG5lY2Vzc2FyeSAqLworCWd0cl9pbml0X3VzYWdlX3Rh YmxlcygpOworCisJLyogQWRkIGxvY2FsIHVzYWdlIGVudHJ5LCBpZiBub3QgYWxyZWFkeSB0aGVy ZSAqLworCWxvY2FsX2VudHJ5ID0gaGFzaF9zZWFyY2goZ3RyX2xvY2FsX3VzYWdlLCAmcmVsaWQs IEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCQlyZXR1cm47CQkJCQkvKiBhbHJl YWR5IHJlY29yZGVkLCBub3RoaW5nIHRvIGRvICovCisKKwkvKiBSZWNvcmQgdGhlIHVzYWdlIGFz IHN0YXJ0aW5nIGluIHRoZSBjdXJyZW50IHN1YnRyYW5zYWN0aW9uICovCisJbG9jYWxfZW50cnkt PnN0YXJ0ZWRfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOworCWxvY2FsX2Vu dHJ5LT5zdG9wcGVkX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisKKwkvKiBGbGFn IHRoZSB1c2FnZSBlbnRyeSBmb3IgZW94YWN0IGNsZWFudXAgKi8KKwlFT1hhY3RVc2FnZUxpc3RB ZGQocmVsaWQpOworCisJLyogQWRkL3VwZGF0ZSBzaGFyZWQgdXNhZ2UgZW50cnkgKi8KKwlrZXku ZGJpZCA9IE15RGF0YWJhc2VJZDsKKwlrZXkucmVsaWQgPSByZWxpZDsKKwlzaGFyZWRfZW50cnkg PSBkc2hhc2hfZmluZF9vcl9pbnNlcnQoZ3RyX3NoYXJlZF91c2FnZSwgJmtleSwgJmZvdW5kKTsK KworCWlmIChmb3VuZCkKKwkJc2hhcmVkX2VudHJ5LT51c2FnZV9jb3VudCsrOworCWVsc2UKKwkJ c2hhcmVkX2VudHJ5LT51c2FnZV9jb3VudCA9IDE7CisKKwlkc2hhc2hfcmVsZWFzZV9sb2NrKGd0 cl9zaGFyZWRfdXNhZ2UsIHNoYXJlZF9lbnRyeSk7Cit9CisKKy8qCisgKiBndHJfcmVtb3ZlX3Vz YWdlCisgKgorICoJUmVtb3ZlIG91ciB1c2FnZSByZWNvcmRzIGZvciBhIGdsb2JhbCB0ZW1wb3Jh cnkgcmVsYXRpb24gdGhhdCB3ZSdyZSBubworICoJbG9uZ2VyIHVzaW5nLgorICoKKyAqCU5vdGU6 IFRoaXMgaXMgaW50ZW50aW9uYWxseSBpZGVtcG90ZW50LgorICovCitzdGF0aWMgdm9pZAorZ3Ry X3JlbW92ZV91c2FnZShPaWQgcmVsaWQpCit7CisJR3RyU2hhcmVkVXNhZ2VLZXkga2V5OworCUd0 clNoYXJlZFVzYWdlRW50cnkgKnNoYXJlZF9lbnRyeTsKKworCS8qIEluaXRpYWxpemUgdGhlIHVz YWdlIHRhYmxlcywgaWYgbmVjZXNzYXJ5ICovCisJZ3RyX2luaXRfdXNhZ2VfdGFibGVzKCk7CisK KwkvKiBSZW1vdmUgbG9jYWwgdXNhZ2UgZW50cnkgKi8KKwlpZiAoIWhhc2hfc2VhcmNoKGd0cl9s b2NhbF91c2FnZSwgJnJlbGlkLCBIQVNIX1JFTU9WRSwgTlVMTCkpCisJCXJldHVybjsJCQkJCS8q IG5vdGhpbmcgdG8gZG8gKi8KKworCS8qIFVwZGF0ZS9kZWxldGUgc2hhcmVkIHVzYWdlIGVudHJ5 ICovCisJa2V5LmRiaWQgPSBNeURhdGFiYXNlSWQ7CisJa2V5LnJlbGlkID0gcmVsaWQ7CisJc2hh cmVkX2VudHJ5ID0gZHNoYXNoX2ZpbmQoZ3RyX3NoYXJlZF91c2FnZSwgJmtleSwgdHJ1ZSk7CisK KwlpZiAoc2hhcmVkX2VudHJ5LT51c2FnZV9jb3VudCA+IDEpCisJeworCQkvKiBPdGhlciBiYWNr ZW5kcyBhcmUgc3RpbGwgdXNpbmcgdGhlIHJlbGF0aW9uICovCisJCXNoYXJlZF9lbnRyeS0+dXNh Z2VfY291bnQtLTsKKwkJZHNoYXNoX3JlbGVhc2VfbG9jayhndHJfc2hhcmVkX3VzYWdlLCBzaGFy ZWRfZW50cnkpOworCX0KKwllbHNlCisJeworCQkvKiBObyBtb3JlIGJhY2tlbmRzIHVzaW5nIGl0 ICovCisJCWRzaGFzaF9kZWxldGVfZW50cnkoZ3RyX3NoYXJlZF91c2FnZSwgc2hhcmVkX2VudHJ5 KTsKKwl9Cit9CisKKy8qCisgKiBBdEVPWGFjdF9Vc2FnZUNsZWFudXAKKyAqCisgKglDbGVhbiB1 cCB1c2FnZSByZWNvcmRzIGZvciBhIHNpbmdsZSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGF0 CisgKgltYWluLXRyYW5zYWN0aW9uIGNvbW1pdCBvciBhYm9ydC4KKyAqCisgKglOQjogdGhpcyBw cm9jZXNzaW5nIG11c3QgYmUgaWRlbXBvdGVudCwgYmVjYXVzZSBFT1hhY3RVc2FnZUxpc3RBZGQo KQorICoJZG9lc24ndCBib3RoZXIgdG8gcHJldmVudCBkdXBsaWNhdGUgZW50cmllcyBpbiBlb3hh Y3RfdXNhZ2VfbGlzdFtdLgorICovCitzdGF0aWMgdm9pZAorQXRFT1hhY3RfVXNhZ2VDbGVhbnVw KEd0clVzYWdlRW50cnkgKmVudHJ5LCBib29sIGlzQ29tbWl0KQoreworCS8qCisJICogSWYgdGhl IHJlbGF0aW9uIGlzIG5vIGxvbmdlciBpbiB1c2UgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbiBlbmRz LCByZW1vdmUKKwkgKiB0aGUgdXNhZ2UgaGFzaCB0YWJsZSBlbnRyaWVzIGZvciBpdC4gIE90aGVy d2lzZSwgcmVzZXQgdGhlIGhhc2ggZW50cnkncworCSAqIHN1YmlkcyB0byB6ZXJvLgorCSAqLwor CWlmICgoaXNDb21taXQgJiYgZW50cnktPnN0b3BwZWRfc3ViaWQgIT0gSW52YWxpZFN1YlRyYW5z YWN0aW9uSWQpIHx8CisJCSghaXNDb21taXQgJiYgZW50cnktPnN0YXJ0ZWRfc3ViaWQgIT0gSW52 YWxpZFN1YlRyYW5zYWN0aW9uSWQpKQorCXsKKwkJZ3RyX3JlbW92ZV91c2FnZShlbnRyeS0+cmVs aWQpOworCX0KKwllbHNlCisJeworCQllbnRyeS0+c3RhcnRlZF9zdWJpZCA9IEludmFsaWRTdWJU cmFuc2FjdGlvbklkOworCQllbnRyeS0+c3RvcHBlZF9zdWJpZCA9IEludmFsaWRTdWJUcmFuc2Fj dGlvbklkOworCX0KK30KKworLyoKKyAqIEF0RU9TdWJYYWN0X1VzYWdlQ2xlYW51cAorICoKKyAq CUNsZWFuIHVwIHVzYWdlIHJlY29yZHMgZm9yIGEgc2luZ2xlIGdsb2JhbCB0ZW1wb3JhcnkgcmVs YXRpb24gYXQKKyAqCXN1YnRyYW5zYWN0aW9uIGNvbW1pdCBvciBhYm9ydC4KKyAqCisgKglOQjog dGhpcyBwcm9jZXNzaW5nIG11c3QgYmUgaWRlbXBvdGVudCwgYmVjYXVzZSBFT1hhY3RVc2FnZUxp c3RBZGQoKQorICoJZG9lc24ndCBib3RoZXIgdG8gcHJldmVudCBkdXBsaWNhdGUgZW50cmllcyBp biBlb3hhY3RfdXNhZ2VfbGlzdFtdLgorICovCitzdGF0aWMgdm9pZAorQXRFT1N1YlhhY3RfVXNh Z2VDbGVhbnVwKEd0clVzYWdlRW50cnkgKmVudHJ5LCBib29sIGlzQ29tbWl0LAorCQkJCQkJIFN1 YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKKwkJCQkJCSBTdWJUcmFuc2FjdGlvbklkIHBhcmVudFN1 YmlkKQoreworCS8qCisJICogRGlkIHVzYWdlIHN0YXJ0IGluIHRoZSBjdXJyZW50IHN1YnRyYW5z YWN0aW9uPworCSAqCisJICogRHVyaW5nIHN1YmNvbW1pdCwgbWFyayBpdCBhcyBzdGFydGluZyBp biB0aGUgcGFyZW50LCBpbnN0ZWFkLCBhcyBsb25nCisJICogYXMgaXQgaGFzIG5vdCBiZWVuIHN0 b3BwZWQuICBPdGhlcndpc2UsIHRoZSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uCisJICogaXMg bm8gbG9uZ2VyIGluIHVzZS4KKwkgKi8KKwlpZiAoZW50cnktPnN0YXJ0ZWRfc3ViaWQgPT0gbXlT dWJpZCkKKwl7CisJCUFzc2VydChlbnRyeS0+c3RvcHBlZF9zdWJpZCA9PSBteVN1YmlkIHx8CisJ CQkgICBlbnRyeS0+c3RvcHBlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCk7CisK KwkJaWYgKGlzQ29tbWl0ICYmIGVudHJ5LT5zdG9wcGVkX3N1YmlkID09IEludmFsaWRTdWJUcmFu c2FjdGlvbklkKQorCQkJZW50cnktPnN0YXJ0ZWRfc3ViaWQgPSBwYXJlbnRTdWJpZDsKKwkJZWxz ZQorCQkJZ3RyX3JlbW92ZV91c2FnZShlbnRyeS0+cmVsaWQpOworCX0KKworCS8qIFVwZGF0ZSB0 aGUgdXNhZ2Ugc3RvcHBlZCBzdWJpZCAqLworCWlmIChlbnRyeS0+c3RvcHBlZF9zdWJpZCA9PSBt eVN1YmlkKQorCXsKKwkJaWYgKGlzQ29tbWl0KQorCQkJZW50cnktPnN0b3BwZWRfc3ViaWQgPSBw YXJlbnRTdWJpZDsKKwkJZWxzZQorCQkJZW50cnktPnN0b3BwZWRfc3ViaWQgPSBJbnZhbGlkU3Vi VHJhbnNhY3Rpb25JZDsKKwl9Cit9CisKKy8qCisgKiBndHJfcHJvY2Vzc19pbnZhbGlkYXRlZF9n dHJzCisgKgorICoJUHJvY2VzcyB0aGUgbGlzdCBvZiBpbnZhbGlkYXRlZCBnbG9iYWwgdGVtcG9y YXJ5IHJlbGF0aW9ucyBhbmQgd29yayBvdXQKKyAqCXdoaWNoIHJlbGF0aW9ucyBoYXZlIGJlZW4g ZHJvcHBlZC4gIE5vdGUgdGhhdCB0aGlzIHdpbGwgaW5jbHVkZSBsb2NhbGx5CisgKglkcm9wcGVk IHJlbGF0aW9ucyBhcyB3ZWxsIGFzIHJlbGF0aW9ucyBkcm9wcGVkIGJ5IG90aGVyIGJhY2tlbmRz LgorICovCitzdGF0aWMgdm9pZAorZ3RyX3Byb2Nlc3NfaW52YWxpZGF0ZWRfZ3Rycyh2b2lkKQor eworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlPaWQJCQlyZWxpZDsKKworCS8qCisJICog U2NhbiB0aGUgZ3Ryc19pbnZhbGlkYXRlZCBsaXN0IGFuZCBhZGQgYW55IGRyb3BwZWQgcmVsYXRp b25zIHRvIHRoZQorCSAqIGd0cnNfZHJvcHBlZCBsaXN0LiAgU2luY2UgdGhlIHRyYW5zYWN0aW9u IG1pZ2h0IGZhaWwgbGF0ZXIgb24sIHdlIG5lZWQKKwkgKiB0aGUgZ3Ryc19kcm9wcGVkIGxpc3Qg dG8gcGVyc2lzdCB1bnRpbCB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3MgaXQuCisJICovCisJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKKwor CS8qCisJICogQXMgd2Ugc2NhbiB0aGUgZ3Ryc19pbnZhbGlkYXRlZCBsaXN0LCBtb3JlIGludmFs aWRhdGlvbiBtZXNzYWdlcyBtaWdodAorCSAqIGFycml2ZSwgc28ga2VlcCBnb2luZyB1bnRpbCBp dCBpcyBlbXB0eS4KKwkgKi8KKwl3aGlsZSAoZ3Ryc19pbnZhbGlkYXRlZCAhPSBOSUwpCisJewor CQkvKiBQb3AgdGhlIGxhc3QgcmVsaWQgZnJvbSB0aGUgbGlzdCAqLworCQlyZWxpZCA9IGxsYXN0 X29pZChndHJzX2ludmFsaWRhdGVkKTsKKwkJZ3Ryc19pbnZhbGlkYXRlZCA9IGxpc3RfZGVsZXRl X2xhc3QoZ3Ryc19pbnZhbGlkYXRlZCk7CisKKwkJLyogSWdub3JlIHJlbGF0aW9ucyB3ZSd2ZSBh bHJlYWR5IGZvdW5kICovCisJCWlmIChsaXN0X21lbWJlcl9vaWQoZ3Ryc19kcm9wcGVkLCByZWxp ZCkpCisJCQljb250aW51ZTsKKworCQkvKiBJZ25vcmUgcmVsYXRpb25zIHRoYXQgc3RpbGwgZXhp c3QgKi8KKwkJaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMShSRUxPSUQsIE9iamVjdElkR2V0RGF0 dW0ocmVsaWQpKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIFJlbGF0aW9uIGRyb3BwZWQ7IGFkZCBp dCB0byB0aGUgZ3Ryc19kcm9wcGVkIGxpc3QgKi8KKwkJZ3Ryc19kcm9wcGVkID0gbGFwcGVuZF9v aWQoZ3Ryc19kcm9wcGVkLCByZWxpZCk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOworfQorCisvKgorICogVHJhY2tHbG9iYWxUZW1wUmVsYXRpb25TdG9yYWdlCisg KgorICoJVHJhY2sgYWJvdXQtdG8tYmUtY3JlYXRlZCBvciBzY2hlZHVsZWQtdG8tYmUtZGVsZXRl ZCBzdG9yYWdlIGZvciBhIGdsb2JhbAorICoJdGVtcG9yYXJ5IHJlbGF0aW9uLCBhbmQgYXJyYW5n ZSBmb3IgYWxsIHN0b3JhZ2UgY3JlYXRlZCB0byBiZSBkZWxldGVkIG9uCisgKgliYWNrZW5kIGV4 aXQuCisgKgorICoJVGhpcyBpcyBjYWxsZWQgZm9yIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25z IHdoZW5ldmVyIHN0b3JhZ2UgaXMgY3JlYXRlZAorICoJdXNpbmcgUmVsYXRpb25DcmVhdGVTdG9y YWdlKCkgb3IgZGVsZXRlZCB1c2luZyBSZWxhdGlvbkRyb3BTdG9yYWdlKCkuCisgKi8KK3ZvaWQK K1RyYWNrR2xvYmFsVGVtcFJlbGF0aW9uU3RvcmFnZShPaWQgcmVsaWQsIFJlbEZpbGVMb2NhdG9y IHJsb2NhdG9yLAorCQkJCQkJCSAgIFByb2NOdW1iZXIgYmFja2VuZCwgYm9vbCBjcmVhdGUpCit7 CisJR3RyU3RvcmFnZUVudHJ5ICplbnRyeTsKKwlib29sCQlmb3VuZDsKKwlTTWdyUmVsYXRpb24g c3JlbDsKKworCWlmIChjcmVhdGUpCisJeworCQkvKiBJbml0aWFsaXplIHRoZSBzdG9yYWdlIHRh YmxlLCBpZiBuZWNlc3NhcnkgKi8KKwkJZ3RyX2luaXRfc3RvcmFnZV90YWJsZSgpOworCisJCS8q IEluc2VydCBhbiBlbnRyeSB0byB0cmFjayB0aGUgc3RvcmFnZSAqLworCQllbnRyeSA9IGhhc2hf c2VhcmNoKGd0cl9sb2NhbF9zdG9yYWdlLCAmcmxvY2F0b3IsIEhBU0hfRU5URVIsICZmb3VuZCk7 CisJCWlmIChmb3VuZCkKKwkJCWVsb2coRVJST1IsICJTdG9yYWdlIGFscmVhZHkgZXhpc3RzIGZv ciByZWxhdGlvbiAldSIsIHJlbGlkKTsKKworCQkvKgorCQkgKiBXZSdyZSBhYm91dCB0byBjcmVh dGUgc3RvcmFnZSBmb3IgYSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uLgorCQkgKiBGaXJzdCwg Y2hlY2sgaWYgc3RvcmFnZSBhbHJlYWR5IGV4aXN0cyBhbmQgaWYgc28sIGRlbGV0ZSBpdCAtLS0g Y2FuCisJCSAqIGhhcHBlbiBpZiBhIHByZXZpb3VzIGJhY2tlbmQgd2l0aCB0aGUgc2FtZSBQcm9j TnVtYmVyIGNyYXNoZWQsIGFuZAorCQkgKiBSZW1vdmVQZ1RlbXBGaWxlcygpIGRpZG4ndCBkZWxl dGUgaXQuICBUaGUgb2xkIHN0b3JhZ2UgaXMgZGVsZXRlZAorCQkgKiBub24tdHJhbnNhY3Rpb25h bGx5LCBzbyB0aGlzIGlzIG5ldmVyIHJvbGxlZCBiYWNrLgorCQkgKi8KKwkJc3JlbCA9IHNtZ3Jv cGVuKHJsb2NhdG9yLCBiYWNrZW5kKTsKKwkJaWYgKHNtZ3JleGlzdHMoc3JlbCwgTUFJTl9GT1JL TlVNKSkKKwkJCXNtZ3Jkb3VubGlua2FsbCgmc3JlbCwgMSwgZmFsc2UpOworCQlzbWdyY2xvc2Uo c3JlbCk7CisKKwkJLyogTWFyayB0aGUgc3RvcmFnZSBhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50 IHN1YnRyYW5zYWN0aW9uICovCisJCWVudHJ5LT5yZWxpZCA9IHJlbGlkOworCQllbnRyeS0+Y3Jl YXRlZF9zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CisJCWVudHJ5LT5kcm9w cGVkX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJfQorCWVsc2UKKwl7CisJCS8q IE1hcmsgdGhlIHN0b3JhZ2UgYXMgZGVsZXRlZCBpbiB0aGUgY3VycmVudCBzdWJ0cmFuc2FjdGlv biAqLworCQllbnRyeSA9IGd0cl9sb2NhbF9zdG9yYWdlID09IE5VTEwgPyBOVUxMIDoKKwkJCWhh c2hfc2VhcmNoKGd0cl9sb2NhbF9zdG9yYWdlLCAmcmxvY2F0b3IsIEhBU0hfRklORCwgTlVMTCk7 CisJCWlmIChlbnRyeSA9PSBOVUxMKQorCQkJZWxvZyhFUlJPUiwgIlN0b3JhZ2Ugbm90IGZvdW5k IGZvciByZWxhdGlvbiAldSIsIHJlbGlkKTsKKworCQllbnRyeS0+ZHJvcHBlZF9zdWJpZCA9IEdl dEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CisJfQorCisJLyogRmxhZyB0aGUgc3RvcmFnZSBm b3IgZW94YWN0IGNsZWFudXAgKi8KKwlFT1hhY3RTdG9yYWdlTGlzdEFkZChybG9jYXRvcik7Cit9 CisKKy8qCisgKiBSZWFzc2lnbkdsb2JhbFRlbXBSZWxhdGlvblN0b3JhZ2UKKyAqCisgKglSZWFz c2lnbiBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIHN0b3JhZ2UgdG8gYSBkaWZmZXJlbnQgcmVs YXRpb24uICBUaGlzCisgKglpcyBuZWVkZWQgZm9yIG9wZXJhdGlvbnMgc3VjaCBhcyBBTFRFUiBU QUJMRSBhbmQgUkVQQUNLLCB0aGF0IHJld3JpdGUgYQorICoJcmVsYXRpb24ncyBjb250ZW50cyBi eSBidWlsZGluZyBhIHRyYW5zaWVudCByZWxhdGlvbiBhbmQgdGhlbiBzd2FwcGluZyBpdHMKKyAq CXN0b3JhZ2Ugd2l0aCB0aGUgb3JpZ2luYWwgcmVsYXRpb24uICBXZSBtdXN0IG1hcmsgdGhlIG5l dyBzdG9yYWdlIGFzCisgKgliZWxvbmdpbmcgdG8gdGhlIG9yaWdpbmFsIHJlbGF0aW9uIGhlcmUs IG90aGVyd2lzZSBpdCB3b3VsZCBiZSBkZWxldGVkCisgKgl3aGVuIHRoZSB0cmFuc2llbnQgcmVs YXRpb24gaXMgZHJvcHBlZC4KKyAqCisgKglOb3RlOiB3ZSBoYXZlIG5vIHdheSBvZiB1bmRvaW5n IHRoaXMgcmVhc3NpZ25tZW50IGluIGNhc2Ugb2Ygcm9sbGJhY2ssIHNvCisgKgl3ZSBkbyBub3Qg YXNzaWduIHRoZSBvcmlnaW5hbCBzdG9yYWdlIHRvIHRoZSB0cmFuc2llbnQgcmVsYXRpb24sIHNp bmNlCisgKgl0aGF0IHdvdWxkIGxlYXZlIGl0IGluIGFuIGludmFsaWQgc3RhdGUgYWZ0ZXIgcm9s bGJhY2suICBUaGlzIGlzbid0IGEKKyAqCXByb2JsZW0gZm9yIHRoZSBuZXcgc3RvcmFnZSwgc2lu Y2UgdGhhdCBpcyBkcm9wcGVkIG9uIHJvbGxiYWNrLiAgVGh1cywKKyAqCXRoaXMgb3BlcmF0ZXMg aW4gdGhlIHNhbWUgd2F5IGFzIFRSVU5DQVRFLCB3aGVyZSBib3RoIHRoZSBvbGQgYW5kIG5ldwor ICoJc3RvcmFnZSBhcmUgdGVtcG9yYXJpbHkgbWFya2VkIGFzIGJlbG9uZ2luZyB0byB0aGUgc2Ft ZSByZWxhdGlvbi4gIE9uCisgKgljb21taXQsIHRoZSBvbGQgc3RvcmFnZSBpcyBkcm9wcGVkIGFu ZCB0aGUgcmVsYXRpb24gaXMgbGVmdCBwb2ludGluZyB0bworICoJdGhlIG5ldyBzdG9yYWdlLCBh bmQgb24gcm9sbGJhY2sgdGhlIG5ldyBzdG9yYWdlIGlzIGRyb3BwZWQgYW5kIHRoZQorICoJcmVs YXRpb24gaXMgcmVsb2FkZWQgYW5kIG1hZGUgdG8gcG9pbnQgdG8gdGhlIG9sZCBzdG9yYWdlLgor ICovCit2b2lkCitSZWFzc2lnbkdsb2JhbFRlbXBSZWxhdGlvblN0b3JhZ2UoUmVsRmlsZUxvY2F0 b3IgcmxvY2F0b3IsCisJCQkJCQkJCSAgT2lkIG5ld1JlbGlkKQoreworCUd0clN0b3JhZ2VFbnRy eSAqZW50cnk7CisKKwkvKiBNdXN0IGFscmVhZHkgYmUgdHJhY2tpbmcgdGhlIHN0b3JhZ2UgKi8K KwllbnRyeSA9IGhhc2hfc2VhcmNoKGd0cl9sb2NhbF9zdG9yYWdlLCAmcmxvY2F0b3IsIEhBU0hf RklORCwgTlVMTCk7CisJaWYgKGVudHJ5ID09IE5VTEwpCisJCWVsb2coRVJST1IsICJjb3VsZCBu b3QgZmluZCBnbG9iYWwgdGVtcCByZWxhdGlvbiBzdG9yYWdlIHtzcGNPaWQ6ICV1LCBkYk9pZDog JXUsIHJlbE51bWJlcjogJXV9IiwKKwkJCSBybG9jYXRvci5zcGNPaWQsIHJsb2NhdG9yLmRiT2lk LCBybG9jYXRvci5yZWxOdW1iZXIpOworCisJLyogUmVhc3NpZ24gaXQgKi8KKwllbnRyeS0+cmVs aWQgPSBuZXdSZWxpZDsKK30KKworLyoKKyAqIEluaXRHbG9iYWxUZW1wUmVsYXRpb24KKyAqCisg KglJbml0aWFsaXplIGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBmb3IgdXNlIGluIHRoaXMg YmFja2VuZCwgaWYgd2UKKyAqCWhhdmVuJ3QgYWxyZWFkeSBkb25lIHNvLgorICoKKyAqCVRoaXMg aXMgaW50ZW5kZWQgZm9yIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIHRoYXQgd2VyZSBjcmVh dGVkIGluIHNvbWUKKyAqCW90aGVyIGJhY2tlbmQuICBTdWNoIHJlbGF0aW9ucyB3aWxsIGhhdmUg dmFsaWQgY2F0YWxvZyBlbnRyaWVzLCBidXQgbWF5CisgKgloYXZlIG5vIGxvY2FsIHN0b3JhZ2Ug Zm9yIHRoaXMgYmFja2VuZCB5ZXQuCisgKgorICoJTm90ZTogVGhpcyBpcyBpbnRlbnRpb25hbGx5 IGlkZW1wb3RlbnQuCisgKi8KK3ZvaWQKK0luaXRHbG9iYWxUZW1wUmVsYXRpb24oUmVsYXRpb24g cmVsYXRpb24pCit7CisJLyoKKwkgKiBDZXJ0YWluIG9wZXJhdGlvbnMgKGUuZy4sIHBnX3RhYmxl X3NpemUoKSkgbWF5IG9wZW4gZ2xvYmFsIHRlbXBvcmFyeQorCSAqIHJlbGF0aW9ucyBmcm9tIHBh cmFsbGVsIHdvcmtlcnMuICBXZSBhbGxvdyB0aGlzLCBidXQgb25seSB0aGUgcGFyYWxsZWwKKwkg KiBsZWFkZXIgaXMgYWxsb3dlZCB0byBpbml0aWFsaXplIHRoZSByZWxhdGlvbi4gIENoZWNrcyBp biB0aGUgcGxhbm5lcgorCSAqIHNob3VsZCBwcmV2ZW50IHdvcmtlcnMgZnJvbSBhY3R1YWxseSBh dHRlbXB0aW5nIHRvIHJlYWQgZnJvbSBvciB3cml0ZQorCSAqIHRvIHRoZSByZWxhdGlvbi4KKwkg Ki8KKwlpZiAoSXNQYXJhbGxlbFdvcmtlcigpKQorCQlyZXR1cm47CisKKwkvKiBDcmVhdGUgc3Rv cmFnZSBmb3IgdGhlIHJlbGF0aW9uLCBpZiBpdCBoYXMgbm9uZSAqLworCWlmIChSRUxLSU5EX0hB U19TVE9SQUdFKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQpICYmCisJCShndHJfbG9jYWxfc3Rv cmFnZSA9PSBOVUxMIHx8CisJCSBoYXNoX3NlYXJjaChndHJfbG9jYWxfc3RvcmFnZSwKKwkJCQkJ ICZyZWxhdGlvbi0+cmRfbG9jYXRvciwgSEFTSF9GSU5ELCBOVUxMKSA9PSBOVUxMKSkKKwl7CisJ CS8qIENyZWF0ZSAoYW5kIHRyYWNrKSBzdG9yYWdlIGZvciB0aGUgcmVsYXRpb24gKi8KKwkJaWYg KFJFTEtJTkRfSEFTX1RBQkxFX0FNKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQpKQorCQkJdGFi bGVfcmVsYXRpb25fc2V0X25ld19maWxlbG9jYXRvcihyZWxhdGlvbiwKKwkJCQkJCQkJCQkJICAg JnJlbGF0aW9uLT5yZF9sb2NhdG9yLAorCQkJCQkJCQkJCQkgICByZWxhdGlvbi0+cmRfcmVsLT5y ZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLT5yZF9yZWwtPnJlbGZyb3pl bnhpZCwKKwkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLT5yZF9yZWwtPnJlbG1pbm14aWQpOworCQll bHNlCisJCQlSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UocmVsYXRpb24tPnJkX2lkLAorCQkJCQkJCQkg IHJlbGF0aW9uLT5yZF9sb2NhdG9yLAorCQkJCQkJCQkgIHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlLAorCQkJCQkJCQkgIHRydWUpOworCisJCS8qIFJlZ2lzdGVyIHRoZSBPTiBDT01N SVQgYWN0aW9uIGZvciByZWxhdGlvbiwgaWYgaXQncyBERUxFVEUgUk9XUyAqLworCQlBc3NlcnQo cmVsYXRpb24tPnJkX3JlbC0+cmVsb25jb21taXQgPT0gUkVMT05DT01NSVRfUFJFU0VSVkVfUk9X UyB8fAorCQkJICAgcmVsYXRpb24tPnJkX3JlbC0+cmVsb25jb21taXQgPT0gUkVMT05DT01NSVRf REVMRVRFX1JPV1MpOworCisJCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxvbmNvbW1pdCA9PSBS RUxPTkNPTU1JVF9ERUxFVEVfUk9XUykKKwkJCXJlZ2lzdGVyX29uX2NvbW1pdF9hY3Rpb24ocmVs YXRpb24tPnJkX2lkLCBPTkNPTU1JVF9ERUxFVEVfUk9XUyk7CisJfQorCisJLyogVGhlIHJlbWFp bmluZyBpbml0aWFsaXphdGlvbiB3b3JrcyBhcyBpZiB3ZSBoYWQgY3JlYXRlZCBpdCBsb2NhbGx5 ICovCisJR2xvYmFsVGVtcFJlbGF0aW9uQ3JlYXRlZChyZWxhdGlvbik7Cit9CisKKy8qCisgKiBJ bnZhbGlkYXRlR2xvYmFsVGVtcFJlbGF0aW9uCisgKgorICoJUHJvY2VzcyBhbiBpbnZhbGlkYXRp b24gbWVzc2FnZSBmb3IgYSByZWxhdGlvbi4KKyAqCisgKglXZSBhcmUgb25seSBpbnRlcmVzdGVk IGluIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIHRoYXQgd2UgYXJlIGN1cnJlbnRseQorICoJ dXNpbmcsIGJ1dCB0aGUgcmVsY2FjaGUgd2lsbCBjYWxsIHRoaXMgZm9yIGFsbCBpbnZhbGlkYXRl ZCByZWxhdGlvbnMsIG5vdAorICoJanVzdCBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucywgc2lu Y2UgaXQgaGFzIG5vIHdheSBvZiBrbm93aW5nIHRoZQorICoJZGlmZmVyZW5jZSBmb3IgcmVsYXRp b25zIG5vIGxvbmdlciBpbiBpdHMgY2FjaGUuICBXZSBmaWx0ZXIgb3V0IHRoZSBvbmVzCisgKgl3 ZSdyZSBub3QgaW50ZXJlc3RlZCBpbi4KKyAqCisgKglGb3IgYSB3aG9sZS1yZWxjYWNoZSBpbnZh bGlkYXRpb24sIFJlbGF0aW9uQ2FjaGVJbnZhbGlkYXRlKCkgd2lsbCBpbnZva2UKKyAqCXRoaXMg d2l0aCByZWxpZCA9IEludmFsaWRPaWQuCisgKi8KK3ZvaWQKK0ludmFsaWRhdGVHbG9iYWxUZW1w UmVsYXRpb24oT2lkIHJlbGlkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlIQVNI X1NFUV9TVEFUVVMgc3RhdHVzOworCUd0clVzYWdlRW50cnkgKmVudHJ5OworCisJLyogUXVpY2sg ZXhpdCBpZiB3ZSBoYXZlbid0IHVzZWQgYW55IGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zICov CisJaWYgKGd0cl9sb2NhbF91c2FnZSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBCZSBzdXJl IGFueSBtZW1vcnkgYWxsb2NhdGVkIGZvciBndHJzX2ludmFsaWRhdGVkIGlzIHBlcnNpc3RlbnQg Ki8KKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcE1lbW9yeUNvbnRleHQp OworCisJLyoKKwkgKiBXZSBjYW4ndCBkbyBhbnkgREIgYWNjZXNzIGhlcmUsIHNvIGp1c3QgbWFr ZSBhIHJlY29yZCBvZiB0aGUKKwkgKiBpbnZhbGlkYXRpb25zIHRoYXQgbWlnaHQgYmUgb2YgaW50 ZXJlc3QgdG8gdXMgKHRob3NlIGZvciBpbi11c2UgZ2xvYmFsCisJICogdGVtcG9yYXJ5IHJlbGF0 aW9ucykuICBXZSBkb24ndCBjYXJlIGFib3V0IGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zCisJ ICogdGhhdCB3ZSBoYXZlbid0IHRvdWNoZWQsIG9yIGFueSBvdGhlciB0eXBlcyBvZiByZWxhdGlv bnMuCisJICovCisJaWYgKE9pZElzVmFsaWQocmVsaWQpKQorCXsKKwkJLyogSW52YWxpZGF0ZSBy ZWwgaWYgaXQncyBhIGxvY2FsbHkgaW4tdXNlIGdsb2JhbCB0ZW1wIHJlbGF0aW9uICovCisJCWlm IChoYXNoX3NlYXJjaChndHJfbG9jYWxfdXNhZ2UsICZyZWxpZCwgSEFTSF9GSU5ELCBOVUxMKSkK KwkJeworCQkJZ3Ryc19pbnZhbGlkYXRlZCA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoZ3Ryc19p bnZhbGlkYXRlZCwgcmVsaWQpOworCQl9CisJfQorCWVsc2UKKwl7CisJCS8qIEludmFsaWRhdGUg YWxsIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIGluIHVzZSBsb2NhbGx5ICovCisJCWxpc3Rf ZnJlZShndHJzX2ludmFsaWRhdGVkKTsKKwkJZ3Ryc19pbnZhbGlkYXRlZCA9IE5JTDsKKworCQlo YXNoX3NlcV9pbml0KCZzdGF0dXMsIGd0cl9sb2NhbF91c2FnZSk7CisJCXdoaWxlICgoZW50cnkg PSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCXsKKwkJCWd0cnNfaW52YWxp ZGF0ZWQgPSBsYXBwZW5kX29pZChndHJzX2ludmFsaWRhdGVkLCBlbnRyeS0+cmVsaWQpOworCQl9 CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworfQorCisvKgorICog R2xvYmFsVGVtcFJlbGF0aW9uQ3JlYXRlZAorICoKKyAqCUluaXRpYWxpemUgYSBqdXN0LWNyZWF0 ZWQgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBmb3IgdXNlIGluIHRoaXMKKyAqCWJhY2tlbmQu ICBUaGlzIGlzIGFsc28gdXNlZCBieSBJbml0R2xvYmFsVGVtcFJlbGF0aW9uKCkgZm9yIGp1c3Qt b3BlbmVkCisgKglyZWxhdGlvbnMgY3JlYXRlZCBpbiBvdGhlciBiYWNrZW5kcywgYWZ0ZXIgd2Ug aGF2ZSBjcmVhdGVkIGxvY2FsIHN0b3JhZ2UKKyAqCWZvciB0aGVtLgorICoKKyAqCU5vdGU6IFRo aXMgaXMgaW50ZW50aW9uYWxseSBpZGVtcG90ZW50LgorICovCit2b2lkCitHbG9iYWxUZW1wUmVs YXRpb25DcmVhdGVkKFJlbGF0aW9uIHJlbGF0aW9uKQoreworCS8qIFJlY29yZCBvdXIgdXNlIG9m IHRoZSByZWxhdGlvbiAqLworCWd0cl9yZWNvcmRfdXNhZ2UocmVsYXRpb24tPnJkX2lkKTsKK30K KworLyoKKyAqIEdsb2JhbFRlbXBSZWxhdGlvbkRyb3BwZWQKKyAqCisgKglUaWR5IHVwIGFmdGVy IGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBoYXMgYmVlbiBkcm9wcGVkLgorICoKKyAqCU5v dGU6IFRoaXMgaXMgaW50ZW50aW9uYWxseSBpZGVtcG90ZW50LiAgSXQgaXMgY2FsbGVkIGZvciBs b2NhbGx5IGRyb3BwZWQKKyAqCXJlbGF0aW9ucyBhcyB3ZWxsIGFzIHJlbGF0aW9ucyB0aGF0IHdl IHdlcmUgdXNpbmcgdGhhdCB3ZXJlIGRyb3BwZWQgYnkKKyAqCW90aGVyIGJhY2tlbmRzLCB3aGlj aCBtZWFucyBpdCBjYW4gYmUgY2FsbGVkIHR3aWNlIGZvciB0aGUgc2FtZSByZWxhdGlvbi4KKyAq Lwordm9pZAorR2xvYmFsVGVtcFJlbGF0aW9uRHJvcHBlZChPaWQgcmVsaWQpCit7CisJR3RyVXNh Z2VFbnRyeSAqZW50cnk7CisKKwkvKgorCSAqIE1hcmsgdGhlIHJlbGF0aW9uJ3MgdXNhZ2UgYXMg ZW5kaW5nIGluIHRoZSBjdXJyZW50IHN1YnRyYW5zYWN0aW9uLCBpZgorCSAqIHdlIGhhdmVuJ3Qg ZG9uZSBzbyBhbHJlYWR5LgorCSAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2goZ3RyX2xvY2FsX3Vz YWdlLCAmcmVsaWQsIEhBU0hfRklORCwgTlVMTCk7CisKKwlpZiAoZW50cnkgJiYgZW50cnktPnN0 b3BwZWRfc3ViaWQgPT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJeworCQllbnRyeS0+c3Rv cHBlZF9zdWJpZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CisKKwkJLyogRmxhZyB0 aGUgdXNhZ2UgZW50cnkgZm9yIGVveGFjdCBjbGVhbnVwICovCisJCUVPWGFjdFVzYWdlTGlzdEFk ZChyZWxpZCk7CisJfQorCisJLyogRm9yZ2V0IGFueSBPTiBDT01NSVQgYWN0aW9uIGZvciB0aGUg cmVsYXRpb24gKi8KKwlyZW1vdmVfb25fY29tbWl0X2FjdGlvbihyZWxpZCk7Cit9CisKKy8qCisg KiBQcmVDb21taXRfR2xvYmFsVGVtcFJlbGF0aW9uCisgKgorICoJUHJvY2VzcyBhbGwgZHJvcHBl ZCBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyB0aGF0IHdlIHdlcmUgdXNpbmcuICBGb3IKKyAq CXJlbGF0aW9ucyBkcm9wcGVkIGJ5IG90aGVyIGJhY2tlbmRzLCB3ZSBuZWVkIHRvIGRlbGV0ZSBh bnkgbG9jYWwgc3RvcmFnZQorICoJdGhhdCB3ZSBjcmVhdGVkLiAgRm9yIHJlbGF0aW9ucyBkcm9w cGVkIGJ5IHRoaXMgYmFja2VuZCwgdGhlIHN0b3JhZ2UKKyAqCXNob3VsZCBoYXZlIGFscmVhZHkg YmVlbiBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uLCBzbyB3ZSBvdWdodCB0byBoYXZlCisgKglub3Ro aW5nIHRvIGRvLgorICovCit2b2lkCitQcmVDb21taXRfR2xvYmFsVGVtcFJlbGF0aW9uKHZvaWQp Cit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlHdHJTdG9yYWdlRW50cnkgKnN0b3JhZ2Vf ZW50cnk7CisJUmVsYXRpb24JcmVsOworCisJLyoKKwkgKiBVcGRhdGUgdGhlIGxpc3Qgb2YgZHJv cHBlZCBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBmcm9tIHRoZSBsaXN0IG9mCisJICogaW52 YWxpZGF0ZWQgcmVsYXRpb25zLgorCSAqLworCWd0cl9wcm9jZXNzX2ludmFsaWRhdGVkX2d0cnMo KTsKKworCS8qIFF1aWNrIGV4aXQgaWYgbm8gZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMgd2Vy ZSBkcm9wcGVkICovCisJaWYgKGd0cnNfZHJvcHBlZCA9PSBOSUwpCisJCXJldHVybjsKKworCS8q CisJICogU2NoZWR1bGUgYWxsIGxvY2FsIHN0b3JhZ2UgdGhhdCB3ZSBjcmVhdGVkIGZvciBkcm9w cGVkIHJlbGF0aW9ucyB0byBiZQorCSAqIGRlbGV0ZWQgYXQgdHJhbnNhY3Rpb24gY29tbWl0LiAg QXRFT1hhY3RfR2xvYmFsVGVtcFJlbGF0aW9uKCkgd2lsbCBkbworCSAqIHRoZSByZW1haW5pbmcg Y2xlYW51cCB3b3JrIGZvciBndHJzX2Ryb3BwZWQgYW5kIHRoZSBoYXNoIHRhYmxlcy4KKwkgKi8K KwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIGd0cl9sb2NhbF9zdG9yYWdlKTsKKwl3aGlsZSAoKHN0 b3JhZ2VfZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJeworCQkv KiBJZ25vcmUgc3RvcmFnZSBhbHJlYWR5IHNjaGVkdWxlZCB0byBiZSBkZWxldGVkICovCisJCWlm IChzdG9yYWdlX2VudHJ5LT5kcm9wcGVkX3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklk KQorCQkJY29udGludWU7CisKKwkJLyogSWdub3JlIGVudHJpZXMgbm90IGluIHRoZSBkcm9wcGVk IGxpc3QgKi8KKwkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZ3Ryc19kcm9wcGVkLCBzdG9yYWdlX2Vu dHJ5LT5yZWxpZCkpCisJCQljb250aW51ZTsKKworCQkvKiBOZWVkIGEgZmFrZWQtdXAgUmVsYXRp b24gZGVzY3JpcHRvciAqLworCQlyZWwgPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShzdG9yYWdl X2VudHJ5LT5ybG9jYXRvcik7CisJCXJlbC0+cmRfaWQgPSBzdG9yYWdlX2VudHJ5LT5yZWxpZDsK KwkJcmVsLT5yZF9iYWNrZW5kID0gUHJvY051bWJlckZvclRlbXBSZWxhdGlvbnMoKTsKKwkJcmVs LT5yZF9zbWdyID0gTlVMTDsKKwkJcmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID0gUkVMUEVS U0lTVEVOQ0VfR0xPQkFMX1RFTVA7CisKKwkJLyogU2NoZWR1bGUgdGhlIHN0b3JhZ2UgdG8gYmUg ZGVsZXRlZCBhbmQgdGlkeSB1cCAqLworCQlSZWxhdGlvbkRyb3BTdG9yYWdlKHJlbCk7CisJCUZy ZWVGYWtlUmVsY2FjaGVFbnRyeShyZWwpOworCX0KKworCS8qCisJICogUGVyZm9ybSBhZGRpdGlv bmFsIHRpZHlpbmcgdXAgZm9yIGFsbCBkcm9wcGVkIHJlbGF0aW9ucy4KKwkgKi8KKwlmb3JlYWNo X29pZChyZWxpZCwgZ3Ryc19kcm9wcGVkKQorCXsKKwkJR2xvYmFsVGVtcFJlbGF0aW9uRHJvcHBl ZChyZWxpZCk7CisJfQorfQorCisvKgorICogQXRFT1hhY3RfR2xvYmFsVGVtcFJlbGF0aW9uCisg KgorICoJQ2xlYW4gdXAgc3RvcmFnZSBhbmQgdXNhZ2UgcmVjb3JkcyBhdCBtYWluLXRyYW5zYWN0 aW9uIGNvbW1pdCBvciBhYm9ydC4KKyAqLwordm9pZAorQXRFT1hhY3RfR2xvYmFsVGVtcFJlbGF0 aW9uKGJvb2wgaXNDb21taXQpCit7CisJSEFTSF9TRVFfU1RBVFVTIHN0YXR1czsKKwlHdHJTdG9y YWdlRW50cnkgKnN0b3JhZ2VfZW50cnk7CisJR3RyVXNhZ2VFbnRyeSAqdXNhZ2VfZW50cnk7CisK KwkvKgorCSAqIFVubGVzcyB0aGUgZW94YWN0X3N0b3JhZ2VfbGlzdFtdIG92ZXJmbG93ZWQsIHdl IG9ubHkgbmVlZCB0byBleGFtaW5lCisJICogdGhlIHN0b3JhZ2UgbGlzdGVkIGluIGl0LiAgT3Ro ZXJ3aXNlIGZhbGwgYmFjayBvbiBhIGhhc2hfc2VxX3NlYXJjaAorCSAqIHNjYW4gLS0tIHNlZSBz aW1pbGFyIGNvZGUgaW4gQXRFT1hhY3RfUmVsYXRpb25DYWNoZSgpLgorCSAqLworCWlmIChlb3hh Y3Rfc3RvcmFnZV9saXN0X292ZXJmbG93ZWQpCisJeworCQloYXNoX3NlcV9pbml0KCZzdGF0dXMs IGd0cl9sb2NhbF9zdG9yYWdlKTsKKwkJd2hpbGUgKChzdG9yYWdlX2VudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQl7CisJCQlBdEVPWGFjdF9TdG9yYWdlQ2xlYW51 cChzdG9yYWdlX2VudHJ5LCBpc0NvbW1pdCk7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCBlb3hhY3Rfc3RvcmFnZV9saXN0X2xlbjsgaSsrKQorCQl7CisJCQlzdG9y YWdlX2VudHJ5ID0gaGFzaF9zZWFyY2goZ3RyX2xvY2FsX3N0b3JhZ2UsCisJCQkJCQkJCQkJJmVv eGFjdF9zdG9yYWdlX2xpc3RbaV0sCisJCQkJCQkJCQkJSEFTSF9GSU5ELCBOVUxMKTsKKwkJCWlm IChzdG9yYWdlX2VudHJ5KQorCQkJCUF0RU9YYWN0X1N0b3JhZ2VDbGVhbnVwKHN0b3JhZ2VfZW50 cnksIGlzQ29tbWl0KTsKKwkJfQorCX0KKworCS8qIFNpbWlsYXJseSwgY2xlYW51cCB1c2FnZSBy ZWNvcmRzICovCisJaWYgKGVveGFjdF91c2FnZV9saXN0X292ZXJmbG93ZWQpCisJeworCQloYXNo X3NlcV9pbml0KCZzdGF0dXMsIGd0cl9sb2NhbF91c2FnZSk7CisJCXdoaWxlICgodXNhZ2VfZW50 cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9IE5VTEwpCisJCXsKKwkJCUF0RU9YYWN0 X1VzYWdlQ2xlYW51cCh1c2FnZV9lbnRyeSwgaXNDb21taXQpOworCQl9CisJfQorCWVsc2UKKwl7 CisJCWZvciAoaW50IGkgPSAwOyBpIDwgZW94YWN0X3VzYWdlX2xpc3RfbGVuOyBpKyspCisJCXsK KwkJCXVzYWdlX2VudHJ5ID0gaGFzaF9zZWFyY2goZ3RyX2xvY2FsX3VzYWdlLCAmZW94YWN0X3Vz YWdlX2xpc3RbaV0sCisJCQkJCQkJCQkgIEhBU0hfRklORCwgTlVMTCk7CisJCQlpZiAodXNhZ2Vf ZW50cnkpCisJCQkJQXRFT1hhY3RfVXNhZ2VDbGVhbnVwKHVzYWdlX2VudHJ5LCBpc0NvbW1pdCk7 CisJCX0KKwl9CisKKwkvKiBOb3cgd2UncmUgb3V0IG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgY2Fu IGNsZWFyIHRoZSBsaXN0cyAqLworCWVveGFjdF9zdG9yYWdlX2xpc3RfbGVuID0gMDsKKwllb3hh Y3Rfc3RvcmFnZV9saXN0X292ZXJmbG93ZWQgPSBmYWxzZTsKKwllb3hhY3RfdXNhZ2VfbGlzdF9s ZW4gPSAwOworCWVveGFjdF91c2FnZV9saXN0X292ZXJmbG93ZWQgPSBmYWxzZTsKKwlsaXN0X2Zy ZWUoZ3Ryc19kcm9wcGVkKTsKKwlndHJzX2Ryb3BwZWQgPSBOSUw7Cit9CisKKy8qCisgKiBBdEVP U3ViWGFjdF9HbG9iYWxUZW1wUmVsYXRpb24KKyAqCisgKglDbGVhbiB1cCBzdG9yYWdlIGFuZCB1 c2FnZSByZWNvcmRzIGF0IHN1Yi10cmFuc2FjdGlvbiBjb21taXQgb3IgYWJvcnQuCisgKi8KK3Zv aWQKK0F0RU9TdWJYYWN0X0dsb2JhbFRlbXBSZWxhdGlvbihib29sIGlzQ29tbWl0LCBTdWJUcmFu c2FjdGlvbklkIG15U3ViaWQsCisJCQkJCQkJICAgU3ViVHJhbnNhY3Rpb25JZCBwYXJlbnRTdWJp ZCkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCUd0clN0b3JhZ2VFbnRyeSAqc3RvcmFn ZV9lbnRyeTsKKwlHdHJVc2FnZUVudHJ5ICp1c2FnZV9lbnRyeTsKKworCS8qCisJICogVW5sZXNz IHRoZSBlb3hhY3Rfc3RvcmFnZV9saXN0W10gb3ZlcmZsb3dlZCwgd2Ugb25seSBuZWVkIHRvIGV4 YW1pbmUKKwkgKiB0aGUgc3RvcmFnZSBsaXN0ZWQgaW4gaXQuICBPdGhlcndpc2UgZmFsbCBiYWNr IG9uIGEgaGFzaF9zZXFfc2VhcmNoCisJICogc2Nhbi4gIFNhbWUgbG9naWMgYXMgaW4gQXRFT1hh Y3RfR2xvYmFsVGVtcFJlbGF0aW9uKCkuCisJICovCisJaWYgKGVveGFjdF9zdG9yYWdlX2xpc3Rf b3ZlcmZsb3dlZCkKKwl7CisJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgZ3RyX2xvY2FsX3N0b3Jh Z2UpOworCQl3aGlsZSAoKHN0b3JhZ2VfZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykp ICE9IE5VTEwpCisJCXsKKwkJCUF0RU9TdWJYYWN0X1N0b3JhZ2VDbGVhbnVwKHN0b3JhZ2VfZW50 cnksIGlzQ29tbWl0LCBteVN1YmlkLAorCQkJCQkJCQkJICAgcGFyZW50U3ViaWQpOworCQl9CisJ fQorCWVsc2UKKwl7CisJCWZvciAoaW50IGkgPSAwOyBpIDwgZW94YWN0X3N0b3JhZ2VfbGlzdF9s ZW47IGkrKykKKwkJeworCQkJc3RvcmFnZV9lbnRyeSA9IGhhc2hfc2VhcmNoKGd0cl9sb2NhbF9z dG9yYWdlLAorCQkJCQkJCQkJCSZlb3hhY3Rfc3RvcmFnZV9saXN0W2ldLAorCQkJCQkJCQkJCUhB U0hfRklORCwgTlVMTCk7CisJCQlpZiAoc3RvcmFnZV9lbnRyeSkKKwkJCQlBdEVPU3ViWGFjdF9T dG9yYWdlQ2xlYW51cChzdG9yYWdlX2VudHJ5LCBpc0NvbW1pdCwgbXlTdWJpZCwKKwkJCQkJCQkJ CQkgICBwYXJlbnRTdWJpZCk7CisJCX0KKwl9CisKKwkvKiBTaW1pbGFybHksIGNsZWFudXAgdXNh Z2UgcmVjb3JkcyAqLworCWlmIChlb3hhY3RfdXNhZ2VfbGlzdF9vdmVyZmxvd2VkKQorCXsKKwkJ aGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBndHJfbG9jYWxfdXNhZ2UpOworCQl3aGlsZSAoKHVzYWdl X2VudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQl7CisJCQlBdEVP U3ViWGFjdF9Vc2FnZUNsZWFudXAodXNhZ2VfZW50cnksIGlzQ29tbWl0LCBteVN1YmlkLAorCQkJ CQkJCQkJIHBhcmVudFN1YmlkKTsKKwkJfQorCX0KKwllbHNlCisJeworCQlmb3IgKGludCBpID0g MDsgaSA8IGVveGFjdF91c2FnZV9saXN0X2xlbjsgaSsrKQorCQl7CisJCQl1c2FnZV9lbnRyeSA9 IGhhc2hfc2VhcmNoKGd0cl9sb2NhbF91c2FnZSwgJmVveGFjdF91c2FnZV9saXN0W2ldLAorCQkJ CQkJCQkJICBIQVNIX0ZJTkQsIE5VTEwpOworCQkJaWYgKHVzYWdlX2VudHJ5KQorCQkJCUF0RU9T dWJYYWN0X1VzYWdlQ2xlYW51cCh1c2FnZV9lbnRyeSwgaXNDb21taXQsIG15U3ViaWQsCisJCQkJ CQkJCQkJIHBhcmVudFN1YmlkKTsKKwkJfQorCX0KKworCS8qIERvbid0IHJlc2V0IHRoZSBsaXN0 czsgd2Ugc3RpbGwgbmVlZCBtb3JlIGNsZWFudXAgbGF0ZXIgKi8KK30KKworLyoKKyAqIElzT3Ro ZXJVc2luZ0dsb2JhbFRlbXBSZWxhdGlvbgorICoKKyAqCVRlc3QgaWYgYW55IG90aGVyIGJhY2tl bmQgaXMgdXNpbmcgdGhlIHNwZWNpZmllZCBnbG9iYWwgdGVtcG9yYXJ5CisgKglyZWxhdGlvbi4g IFRoZSBjYWxsZXIgc2hvdWxkIGhhdmUgYW4gZXhjbHVzaXZlIGxvY2sgb24gdGhlIHJlbGF0aW9u LCBvcgorICoJZWxzZSB0aGUgcmVzdWx0IGNvdWxkIGJlIHF1aWNrbHkgb3V0LWRhdGVkLgorICov Citib29sCitJc090aGVyVXNpbmdHbG9iYWxUZW1wUmVsYXRpb24oT2lkIHJlbGlkKQoreworCWJv b2wJCXVzZWRfbG9jYWxseTsKKwlHdHJTaGFyZWRVc2FnZUtleSBrZXk7CisJR3RyU2hhcmVkVXNh Z2VFbnRyeSAqZW50cnk7CisJaW50CQkJdXNhZ2VfY291bnQ7CisKKwlndHJfaW5pdF91c2FnZV90 YWJsZXMoKTsKKworCS8qIEFyZSB3ZSB1c2luZyB0aGUgcmVsYXRpb24/IChleHBlY3QgdHJ1ZSkg Ki8KKwkodm9pZCkgaGFzaF9zZWFyY2goZ3RyX2xvY2FsX3VzYWdlLCAmcmVsaWQsIEhBU0hfRklO RCwgJnVzZWRfbG9jYWxseSk7CisKKwkvKiBUb3RhbCB1c2FnZSBjb3VudCAoaW5jbHVkaW5nIHVz KSAqLworCWtleS5kYmlkID0gTXlEYXRhYmFzZUlkOworCWtleS5yZWxpZCA9IHJlbGlkOworCWVu dHJ5ID0gZHNoYXNoX2ZpbmQoZ3RyX3NoYXJlZF91c2FnZSwgJmtleSwgZmFsc2UpOworCisJaWYg KGVudHJ5KQorCXsKKwkJdXNhZ2VfY291bnQgPSBlbnRyeS0+dXNhZ2VfY291bnQ7CisJCUFzc2Vy dCh1c2FnZV9jb3VudCA+IDApOworCQlkc2hhc2hfcmVsZWFzZV9sb2NrKGd0cl9zaGFyZWRfdXNh Z2UsIGVudHJ5KTsKKwl9CisJZWxzZQorCQl1c2FnZV9jb3VudCA9IDA7CisKKwlyZXR1cm4gdXNl ZF9sb2NhbGx5ID8gKHVzYWdlX2NvdW50ID4gMSkgOiAodXNhZ2VfY291bnQgPiAwKTsKK30KKwor LyoKKyAqIEFsbEdsb2JhbFRlbXBSZWxhdGlvbnNJblVzZQorICoKKyAqCVJldHVybnMgYSBsaXN0 IG9mIE9JRHMgb2YgYWxsIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIGluIHVzZSAoYnkgYW55 CisgKgliYWNrZW5kKSBpbiB0aGUgc3BlY2lmaWVkIGRhdGFiYXNlIChvciBhbGwgZGF0YWJhc2Vz LCBpZiBkYmlkIGlzCisgKglJbnZhbGlkT2lkKS4KKyAqCisgKglOb3RlOiBUaGUgcmVzdWx0IG1h eSBiZSBhbG1vc3QgaW1tZWRpYXRlbHkgb3V0LWRhdGVkLgorICovCitMaXN0ICoKK0FsbEdsb2Jh bFRlbXBSZWxhdGlvbnNJblVzZShPaWQgZGJpZCkKK3sKKwlMaXN0CSAgICpyZWxzX2luX3VzZSA9 IE5JTDsKKwlkc2hhc2hfc2VxX3N0YXR1cyBzdGF0dXM7CisJR3RyU2hhcmVkVXNhZ2VFbnRyeSAq ZW50cnk7CisKKwlndHJfaW5pdF91c2FnZV90YWJsZXMoKTsKKworCWRzaGFzaF9zZXFfaW5pdCgm c3RhdHVzLCBndHJfc2hhcmVkX3VzYWdlLCBmYWxzZSk7CisJd2hpbGUgKChlbnRyeSA9IGRzaGFz aF9zZXFfbmV4dCgmc3RhdHVzKSkgIT0gTlVMTCkKKwl7CisJCUFzc2VydChlbnRyeS0+dXNhZ2Vf Y291bnQgPiAwKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKGRiaWQpIHx8IGVudHJ5LT5rZXkuZGJpZCA9 PSBkYmlkKQorCQkJcmVsc19pbl91c2UgPSBsYXBwZW5kX29pZChyZWxzX2luX3VzZSwgZW50cnkt PmtleS5yZWxpZCk7CisJfQorCWRzaGFzaF9zZXFfdGVybSgmc3RhdHVzKTsKKworCXJldHVybiBy ZWxzX2luX3VzZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNjg0YTQ0OTQ2ZmMuLjAxMmRlNDM0MzIx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2hlYXAuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90YWJs ZWFtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9iaW5hcnlfdXBncmFkZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvY2F0YWxvZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvZ2xvYmFsX3RlbXAuaCIKICNpbmNs dWRlICJjYXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKQEAgLTM4OSw3ICszOTAsOCBAQCBoZWFwX2NyZWF0 ZShjb25zdCBjaGFyICpyZWxuYW1lLAogCQkJCQkJCQkJCQkgICByZWxwZXJzaXN0ZW5jZSwKIAkJ CQkJCQkJCQkJICAgcmVsZnJvemVueGlkLCByZWxtaW5teGlkKTsKIAkJZWxzZSBpZiAoUkVMS0lO RF9IQVNfU1RPUkFHRShyZWwtPnJkX3JlbC0+cmVsa2luZCkpCi0JCQlSZWxhdGlvbkNyZWF0ZVN0 b3JhZ2UocmVsLT5yZF9sb2NhdG9yLCByZWxwZXJzaXN0ZW5jZSwgdHJ1ZSk7CisJCQlSZWxhdGlv bkNyZWF0ZVN0b3JhZ2UocmVsLT5yZF9pZCwgcmVsLT5yZF9sb2NhdG9yLAorCQkJCQkJCQkgIHJl bHBlcnNpc3RlbmNlLCB0cnVlKTsKIAkJZWxzZQogCQkJQXNzZXJ0KGZhbHNlKTsKIAl9CkBAIC0z OTgsOCArNDAwLDEzIEBAIGhlYXBfY3JlYXRlKGNvbnN0IGNoYXIgKnJlbG5hbWUsCiAJICogSWYg YSB0YWJsZXNwYWNlIGlzIHNwZWNpZmllZCwgcmVtb3ZhbCBvZiB0aGF0IHRhYmxlc3BhY2UgaXMg bm9ybWFsbHkKIAkgKiBwcm90ZWN0ZWQgYnkgdGhlIGV4aXN0ZW5jZSBvZiBhIHBoeXNpY2FsIGZp bGU7IGJ1dCBmb3IgcmVsYXRpb25zIHdpdGgKIAkgKiBubyBmaWxlcywgYWRkIGEgcGdfc2hkZXBl bmQgZW50cnkgdG8gYWNjb3VudCBmb3IgdGhhdC4KKwkgKgorCSAqIE5vdGUsIGhvd2V2ZXIsIHRo YXQgYWx0aG91Z2ggZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMgbWF5IGhhdmUgZmlsZXMsCisJ ICogdGhvc2UgZmlsZXMgd2lsbCBnbyBhd2F5IGF0IHRoZSBlbmQgb2YgdGhlIHNlc3Npb24sIGFu ZCBzbyBwcm92aWRlIG5vCisJICogcHJvdGVjdGlvbiwgYW5kIHdlIG11c3QgYWRkIGEgcGdfc2hk ZXBlbmQgZW50cnkgaW4gdGhpcyBjYXNlIHRvby4KIAkgKi8KLQlpZiAoIWNyZWF0ZV9zdG9yYWdl ICYmIHJlbHRhYmxlc3BhY2UgIT0gSW52YWxpZE9pZCkKKwlpZiAoKCFjcmVhdGVfc3RvcmFnZSB8 fCByZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkgJiYKKwkJcmVs dGFibGVzcGFjZSAhPSBJbnZhbGlkT2lkKQogCQlyZWNvcmREZXBlbmRlbmN5T25UYWJsZXNwYWNl KFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsaWQsCiAJCQkJCQkJCQkgcmVsdGFibGVzcGFjZSk7CiAK QEAgLTk5Miw2ICs5OTksMTAgQEAgSW5zZXJ0UGdDbGFzc1R1cGxlKFJlbGF0aW9uIHBnX2NsYXNz X2Rlc2MsCiAJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHBnX2NsYXNzX2Rlc2MsIHR1cCk7CiAKIAloZWFw X2ZyZWV0dXBsZSh0dXApOworCisJLyogQWRkaXRpb25hbCBzZXR1cCBmb3IgZ2xvYmFsIHRlbXBv cmFyeSByZWxhdGlvbnMgKi8KKwlpZiAoUkVMQVRJT05fSVNfR0xPQkFMX1RFTVAobmV3X3JlbF9k ZXNjKSkKKwkJR2xvYmFsVGVtcFJlbGF0aW9uQ3JlYXRlZChuZXdfcmVsX2Rlc2MpOwogfQogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTYwMSw2ICsxNjEyLDcgQEAg RGVsZXRlUmVsYXRpb25UdXBsZShPaWQgcmVsaWQpCiB7CiAJUmVsYXRpb24JcGdfY2xhc3NfZGVz YzsKIAlIZWFwVHVwbGUJdHVwOworCWNoYXIJCXJlbHBlcnNpc3RlbmNlOwogCiAJLyogR3JhYiBh biBhcHByb3ByaWF0ZSBsb2NrIG9uIHRoZSBwZ19jbGFzcyByZWxhdGlvbiAqLwogCXBnX2NsYXNz X2Rlc2MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7 CkBAIC0xNjA4LDYgKzE2MjAsNyBAQCBEZWxldGVSZWxhdGlvblR1cGxlKE9pZCByZWxpZCkKIAl0 dXAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CiAJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCiAJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbGlkKTsKKwlyZWxwZXJzaXN0ZW5jZSA9ICgoRm9y bV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cCkpLT5yZWxwZXJzaXN0ZW5jZTsKIAogCS8qIGRlbGV0 ZSB0aGUgcmVsYXRpb24gdHVwbGUgZnJvbSBwZ19jbGFzcywgYW5kIGZpbmlzaCB1cCAqLwogCUNh dGFsb2dUdXBsZURlbGV0ZShwZ19jbGFzc19kZXNjLCAmdHVwLT50X3NlbGYpOwpAQCAtMTYxNSw2 ICsxNjI4LDEwIEBAIERlbGV0ZVJlbGF0aW9uVHVwbGUoT2lkIHJlbGlkKQogCVJlbGVhc2VTeXND YWNoZSh0dXApOwogCiAJdGFibGVfY2xvc2UocGdfY2xhc3NfZGVzYywgUm93RXhjbHVzaXZlTG9j ayk7CisKKwkvKiBBZGRpdGlvbmFsIHRpZHlpbmcgdXAgZm9yIGdsb2JhbCB0ZW1wb3JhcnkgcmVs YXRpb25zICovCisJaWYgKHJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9U RU1QKQorCQlHbG9iYWxUZW1wUmVsYXRpb25Ecm9wcGVkKHJlbGlkKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAppbmRleCA0ZjBlMjQ5MjkzNy4u YTkxYTg0OGNkMTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25f c2NoZW1hLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5z cWwKQEAgLTE5NTIsNiArMTk1Miw3IEBAIENSRUFURSBWSUVXIHRhYmxlcyBBUwogCiAgICAgICAg ICAgIENBU1QoCiAgICAgICAgICAgICAgQ0FTRSBXSEVOIG5jLm9pZCA9IHBnX215X3RlbXBfc2No ZW1hKCkgVEhFTiAnTE9DQUwgVEVNUE9SQVJZJworICAgICAgICAgICAgICAgICAgV0hFTiBjLnJl bHBlcnNpc3RlbmNlID0gJ2cnIFRIRU4gJ0dMT0JBTCBURU1QT1JBUlknCiAgICAgICAgICAgICAg ICAgICBXSEVOIGMucmVsa2luZCBJTiAoJ3InLCAncCcpIFRIRU4gJ0JBU0UgVEFCTEUnCiAgICAg ICAgICAgICAgICAgICBXSEVOIGMucmVsa2luZCA9ICd2JyBUSEVOICdWSUVXJwogICAgICAgICAg ICAgICAgICAgV0hFTiBjLnJlbGtpbmQgPSAnZicgVEhFTiAnRk9SRUlHTicKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21l c29uLmJ1aWxkCmluZGV4IDExZDIxYzVhZDZiLi43Mjg1YWIyZGZjZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21l c29uLmJ1aWxkCkBAIC00LDYgKzQsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdh Y2xjaGsuYycsCiAgICdjYXRhbG9nLmMnLAogICAnZGVwZW5kZW5jeS5jJywKKyAgJ2dsb2JhbF90 ZW1wLmMnLAogICAnaGVhcC5jJywKICAgJ2luZGV4LmMnLAogICAnaW5kZXhpbmcuYycsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL25hbWVzcGFjZS5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9uYW1lc3BhY2UuYwppbmRleCA1NmI4N2Q4NzhlOC4uYjg1NTVjZGZhMjIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvbmFtZXNwYWNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9uYW1lc3BhY2UuYwpAQCAtNzM0LDcgKzczNCw4IEBAIFJhbmdlVmFyR2V0Q3JlYXRpb25O YW1lc3BhY2UoY29uc3QgUmFuZ2VWYXIgKm5ld1JlbGF0aW9uKQogICogdG8gYSBuby1sb25nZXIt ZXhpc3RlbnQgbmFtZXNwYWNlLgogICoKICAqIEFzIGEgZnVydGhlciBzaWRlLWVmZmVjdCwgaWYg dGhlIHNlbGVjdGVkIG5hbWVzcGFjZSBpcyBhIHRlbXBvcmFyeSBuYW1lc3BhY2UsCi0gKiB3ZSBt YXJrIHRoZSBSYW5nZVZhciBhcyBSRUxQRVJTSVNURU5DRV9URU1QLgorICogd2UgbWFyayB0aGUg UmFuZ2VWYXIgYXMgUkVMUEVSU0lTVEVOQ0VfVEVNUCwgdW5sZXNzIGl0IHdhcyBtYXJrZWQgYXMK KyAqIFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QLCBpbiB3aGljaCBjYXNlIGFuIGVycm9yIGlz IHJhaXNlZC4KICAqLwogT2lkCiBSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uo UmFuZ2VWYXIgKnJlbGF0aW9uLApAQCAtODU4LDkgKzg1OSwxOSBAQCBSYW5nZVZhckFkanVzdFJl bGF0aW9uUGVyc2lzdGVuY2UoUmFuZ2VWYXIgKm5ld1JlbGF0aW9uLCBPaWQgbnNwaWQpCiAJCQkJ ZWxzZQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9UQUJMRV9ERUZJTklUSU9OKSwKLQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgY3JlYXRlIHRlbXBv cmFyeSByZWxhdGlvbiBpbiBub24tdGVtcG9yYXJ5IHNjaGVtYSIpKSk7CisJCQkJCQkJIGVycm1z ZygiY2Fubm90IGNyZWF0ZSBsb2NhbCB0ZW1wb3JhcnkgcmVsYXRpb24gaW4gbm9uLXRlbXBvcmFy eSBzY2hlbWEiKSkpOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfR0xP QkFMX1RFTVA6CisJCQlpZiAoaXNUZW1wT3JUZW1wVG9hc3ROYW1lc3BhY2UobnNwaWQpKQorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEFCTEVfREVG SU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgY3JlYXRlIGdsb2JhbCB0ZW1wb3Jhcnkg cmVsYXRpb24gaW4gdGVtcG9yYXJ5IHNjaGVtYSIpKSk7CisJCQllbHNlIGlmIChpc0FueVRlbXBO YW1lc3BhY2UobnNwaWQpKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfVEFCTEVfREVGSU5JVElPTiksCisJCQkJCQkgZXJybXNnKCJjYW5ub3QgY3Jl YXRlIHJlbGF0aW9ucyBpbiB0ZW1wb3Jhcnkgc2NoZW1hcyBvZiBvdGhlciBzZXNzaW9ucyIpKSk7 CisJCQlicmVhazsKIAkJY2FzZSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQ6CiAJCQlpZiAoaXNU ZW1wT3JUZW1wVG9hc3ROYW1lc3BhY2UobnNwaWQpKQogCQkJCW5ld1JlbGF0aW9uLT5yZWxwZXJz aXN0ZW5jZSA9IFJFTFBFUlNJU1RFTkNFX1RFTVA7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKaW5kZXggMWVjOTRjODUxYjIuLjg0NjE2NWUxYTVlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19wdWJsaWNhdGlvbi5jCkBAIC0xMDAsNyArMTAwLDggQEAgY2hlY2tfcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQkJCSBlcnJkZXRhaWwoIlRoaXMg b3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGNvbmZsaWN0IGxvZyB0YWJsZXMuIikpKTsK IAogCS8qIFVOTE9HR0VEIGFuZCBURU1QIHJlbGF0aW9ucyBjYW5ub3QgYmUgcGFydCBvZiBwdWJs aWNhdGlvbi4gKi8KLQlpZiAodGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJF TFBFUlNJU1RFTkNFX1RFTVApCisJaWYgKHRhcmdldHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QIHx8CisJCXRhcmdldHJlbC0+cmRfcmVsLT5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJy bXNnKGVycm9ybXNnLCByZWxuYW1lKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3RvcmFnZS5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zdG9yYWdlLmMKaW5kZXggZTQ0M2E0OTkz YzUuLjEyNTlhYmVlNWFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2Uu YworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N0b3JhZ2UuYwpAQCAtMTksMTEgKzE5LDEzIEBA CiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFj dC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNl cnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9n bG9iYWxfdGVtcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvc3RvcmFnZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvc3RvcmFnZV94bG9nLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0xMTksMTQg KzEyMSwxOCBAQCBBZGRQZW5kaW5nU3luYyhjb25zdCBSZWxGaWxlTG9jYXRvciAqcmxvY2F0b3Ip CiAgKiBwYXNzIHJlZ2lzdGVyX2RlbGV0ZSA9IGZhbHNlLgogICovCiBTTWdyUmVsYXRpb24KLVJl bGF0aW9uQ3JlYXRlU3RvcmFnZShSZWxGaWxlTG9jYXRvciBybG9jYXRvciwgY2hhciByZWxwZXJz aXN0ZW5jZSwKK1JlbGF0aW9uQ3JlYXRlU3RvcmFnZShPaWQgcmVsaWQsIFJlbEZpbGVMb2NhdG9y IHJsb2NhdG9yLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCQkJCQkgIGJvb2wgcmVnaXN0ZXJfZGVs ZXRlKQogewogCVNNZ3JSZWxhdGlvbiBzcmVsOwogCVByb2NOdW1iZXIJcHJvY051bWJlcjsKIAli b29sCQluZWVkc193YWw7CiAKLQlBc3NlcnQoIUlzSW5QYXJhbGxlbE1vZGUoKSk7CS8qIGNvdWxk bid0IHVwZGF0ZSBwZW5kaW5nU3luY0hhc2ggKi8KKwkvKiByZWxpZCBpcyBvbmx5IG5lZWRlZCBm b3IgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMgKi8KKwlBc3NlcnQoT2lkSXNWYWxpZChyZWxp ZCkgfHwgcmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApOworCisJ LyogcGVyIEluaXRHbG9iYWxUZW1wUmVsYXRpb24oKSwgdGhpcyBjYW5ub3QgYmUgYSBwYXJhbGxl bCB3b3JrZXIgKi8KKwlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIoKSk7CS8qIGNvdWxkbid0IHVw ZGF0ZSBwZW5kaW5nU3luY0hhc2ggKi8KIAogCXN3aXRjaCAocmVscGVyc2lzdGVuY2UpCiAJewpA QCAtMTM0LDYgKzE0MCwxMiBAQCBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UoUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQlwcm9jTnVtYmVyID0gUHJvY051bWJl ckZvclRlbXBSZWxhdGlvbnMoKTsKIAkJCW5lZWRzX3dhbCA9IGZhbHNlOwogCQkJYnJlYWs7CisJ CWNhc2UgUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVA6CisJCQkvKiBUcmFjayBzdG9yYWdlIGNy ZWF0ZWQgZm9yIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zICovCisJCQlwcm9jTnVtYmVyID0g UHJvY051bWJlckZvclRlbXBSZWxhdGlvbnMoKTsKKwkJCVRyYWNrR2xvYmFsVGVtcFJlbGF0aW9u U3RvcmFnZShyZWxpZCwgcmxvY2F0b3IsIHByb2NOdW1iZXIsIHRydWUpOworCQkJbmVlZHNfd2Fs ID0gZmFsc2U7CisJCQlicmVhazsKIAkJY2FzZSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRDoKIAkJ CXByb2NOdW1iZXIgPSBJTlZBTElEX1BST0NfTlVNQkVSOwogCQkJbmVlZHNfd2FsID0gZmFsc2U7 CkBAIC0yMDgsNiArMjIwLDExIEBAIFJlbGF0aW9uRHJvcFN0b3JhZ2UoUmVsYXRpb24gcmVsKQog ewogCVBlbmRpbmdSZWxEZWxldGUgKnBlbmRpbmc7CiAKKwkvKiBUcmFjayB0by1iZS1kZWxldGVk IHN0b3JhZ2UgZm9yIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zICovCisJaWYgKFJFTEFUSU9O X0lTX0dMT0JBTF9URU1QKHJlbCkpCisJCVRyYWNrR2xvYmFsVGVtcFJlbGF0aW9uU3RvcmFnZShy ZWwtPnJkX2lkLCByZWwtPnJkX2xvY2F0b3IsCisJCQkJCQkJCQkgICByZWwtPnJkX2JhY2tlbmQs IGZhbHNlKTsKKwogCS8qIEFkZCB0aGUgcmVsYXRpb24gdG8gdGhlIGxpc3Qgb2Ygc3R1ZmYgdG8g ZGVsZXRlIGF0IGNvbW1pdCAqLwogCXBlbmRpbmcgPSAoUGVuZGluZ1JlbERlbGV0ZSAqKQogCQlN ZW1vcnlDb250ZXh0QWxsb2MoVG9wTWVtb3J5Q29udGV4dCwgc2l6ZW9mKFBlbmRpbmdSZWxEZWxl dGUpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYwppbmRleCBmMDgxOWQxNWFiNy4uNTJiODZi MDFhMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2RiY29tbWFuZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9kYmNvbW1hbmRzLmMKQEAgLTQxMCwxMSArNDEwLDEzIEBA IFNjYW5Tb3VyY2VEYXRhYmFzZVBnQ2xhc3NUdXBsZShIZWFwVHVwbGVEYXRhICp0dXBsZSwgT2lk IHRiaWQsIE9pZCBkYmlkLAogCSAqIGFyZSBpbmFjY2Vzc2libGUgb3V0c2lkZSBvZiB0aGUgc2Vz c2lvbiB0aGF0IGNyZWF0ZWQgdGhlbSwgd2hpY2ggbXVzdAogCSAqIGJlIGdvbmUgYWxyZWFkeSwg YW5kIGNvdWxkbid0IGNvbm5lY3QgdG8gYSBkaWZmZXJlbnQgZGF0YWJhc2UgaWYgaXQKIAkgKiBz dGlsbCBleGlzdGVkLiBhdXRvdmFjdXVtIHdpbGwgZXZlbnR1YWxseSByZW1vdmUgdGhlIHBnX2Ns YXNzIGVudHJpZXMKLQkgKiBhcyB3ZWxsLgorCSAqIGFzIHdlbGwuIExpa2V3aXNlLCBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9ucyBkb24ndCBuZWVkIHRvIGJlIGNvcGllZCwKKwkgKiB0aG91Z2gg dGhlaXIgcGdfY2xhc3MgZW50cmllcyBuZXZlciBnbyBhd2F5LgogCSAqLwogCWlmIChjbGFzc0Zv cm0tPnJlbHRhYmxlc3BhY2UgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQgfHwKIAkJIVJFTEtJTkRf SEFTX1NUT1JBR0UoY2xhc3NGb3JtLT5yZWxraW5kKSB8fAotCQljbGFzc0Zvcm0tPnJlbHBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCWNsYXNzRm9ybS0+cmVscGVyc2lzdGVu Y2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQljbGFzc0Zvcm0tPnJlbHBlcnNpc3RlbmNl ID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCQlyZXR1cm4gTlVMTDsKIAogCS8qCkBA IC00NDQsNyArNDQ2LDggQEAgU2NhblNvdXJjZURhdGFiYXNlUGdDbGFzc1R1cGxlKEhlYXBUdXBs ZURhdGEgKnR1cGxlLCBPaWQgdGJpZCwgT2lkIGRiaWQsCiAJcmVsaW5mby0+cmVsb2lkID0gY2xh c3NGb3JtLT5vaWQ7CiAKIAkvKiBUZW1wb3JhcnkgcmVsYXRpb25zIHdlcmUgcmVqZWN0ZWQgYWJv dmUuICovCi0JQXNzZXJ0KGNsYXNzRm9ybS0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVO Q0VfVEVNUCk7CisJQXNzZXJ0KGNsYXNzRm9ybS0+cmVscGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lT VEVOQ0VfVEVNUCAmJgorCQkgICBjbGFzc0Zvcm0tPnJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJ U1RFTkNFX0dMT0JBTF9URU1QKTsKIAlyZWxpbmZvLT5wZXJtYW5lbnQgPQogCQkoY2xhc3NGb3Jt LT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQpID8gdHJ1ZSA6IGZh bHNlOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9sb2NrY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwppbmRleCAxMzIzMmEzNjE5Ni4uZTQ3MDFhZjNi YjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2xvY2tjbWRzLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbG9ja2NtZHMuYwpAQCAtMTA5LDcgKzEwOSw4IEBAIFJhbmdlVmFy Q2FsbGJhY2tGb3JMb2NrVGFibGUoY29uc3QgUmFuZ2VWYXIgKnJ2LCBPaWQgcmVsaWQsIE9pZCBv bGRyZWxpZCwKIAkgKiB0cmFuc2FjdGlvbi4KIAkgKi8KIAlyZWxwZXJzaXN0ZW5jZSA9IGdldF9y ZWxfcGVyc2lzdGVuY2UocmVsaWQpOwotCWlmIChyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNU RU5DRV9URU1QKQorCWlmIChyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QIHx8 CisJCXJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCQlNeVhh Y3RGbGFncyB8PSBYQUNUX0ZMQUdTX0FDQ0VTU0VEVEVNUE5BTUVTUEFDRTsKIAogCS8qIENoZWNr IHBlcm1pc3Npb25zLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJvcGdy YXBoY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJvcGdyYXBoY21kcy5jCmluZGV4IDc4 Y2JmN2QwOGQwLi4zMDhiMjA3YWZmZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJvcGdyYXBoY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Byb3BncmFwaGNtZHMu YwpAQCAtMTE3LDYgKzExNywxMSBAQCBDcmVhdGVQcm9wR3JhcGgoUGFyc2VTdGF0ZSAqcHN0YXRl LCBjb25zdCBDcmVhdGVQcm9wR3JhcGhTdG10ICpzdG10KQogCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJwcm9wZXJ0eSBncmFwaHMgY2Fubm90IGJlIHVu bG9nZ2VkIGJlY2F1c2UgdGhleSBkbyBub3QgaGF2ZSBzdG9yYWdlIikpKTsKIAorCWlmIChzdG10 LT5wZ25hbWUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJ CQkgZXJybXNnKCJwcm9wZXJ0eSBncmFwaHMgY2Fubm90IGJlIGdsb2JhbCB0ZW1wb3JhcnkgYmVj YXVzZSB0aGV5IGRvIG5vdCBoYXZlIHN0b3JhZ2UiKSkpOworCiAJY29tcG9uZW50c19wZXJzaXN0 ZW5jZSA9IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVDsKIAogCWZvcmVhY2gobGMsIHN0bXQtPnZl cnRleF90YWJsZXMpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IGZhYTA3ZDFhMTE4Li43YTg1ZWRi OTMxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNh dGFsb2cvZGVwZW5kZW5jeS5oIgorI2luY2x1ZGUgImNhdGFsb2cvZ2xvYmFsX3RlbXAuaCIKICNp bmNsdWRlICJjYXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKQEAgLTE2NzYsNiArMTY3NywxNSBAQCBzd2FwX3Jl bGF0aW9uX2ZpbGVzKE9pZCByMSwgT2lkIHIyLCBib29sIHRhcmdldF9pc19wZ19jbGFzcywKIAkJ cmVsMi0+cmRfbmV3UmVsZmlsZWxvY2F0b3JTdWJpZCA9IHJlbDEtPnJkX25ld1JlbGZpbGVsb2Nh dG9yU3ViaWQ7CiAJCXJlbDItPnJkX2ZpcnN0UmVsZmlsZWxvY2F0b3JTdWJpZCA9IHJlbDEtPnJk X2ZpcnN0UmVsZmlsZWxvY2F0b3JTdWJpZDsKIAkJUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9j YXRvcihyZWwxKTsKKworCQkvKgorCQkgKiBJZiB0aGV5J3JlIGdsb2JhbCB0ZW1wIHJlbGF0aW9u cywgcmVhc3NpZ24gcmVsMidzIHN0b3JhZ2UgdG8gcmVsMS4KKwkJICogTkI6IFdlIGludGVudGlv bmFsbHkgZG8gbm90IHJlYXNzaWduIHJlbDEncyBzdG9yYWdlIHRvIHJlbDIsIHNpbmNlCisJCSAq IHRoYXQgd291bGQgbGVhdmUgaXQgaW4gYW4gaW52YWxpZCBzdGF0ZSBvbiByb2xsYmFjay4KKwkJ ICovCisJCWlmIChSRUxBVElPTl9JU19HTE9CQUxfVEVNUChyZWwxKSkKKwkJCVJlYXNzaWduR2xv YmFsVGVtcFJlbGF0aW9uU3RvcmFnZShyZWwyLT5yZF9sb2NhdG9yLCByZWwxLT5yZF9pZCk7CisK IAkJcmVsYXRpb25fY2xvc2UocmVsMSwgTm9Mb2NrKTsKIAkJcmVsYXRpb25fY2xvc2UocmVsMiwg Tm9Mb2NrKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDk1YWJhZjQ4OTBjLi5i YTEzOTU2MGY5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTMwLDYgKzMwLDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9nbG9iYWxf dGVtcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvaW5k ZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgpAQCAtMTc1LDYgKzE3Niw3IEBA IHR5cGVkZWYgc3RydWN0IEFsdGVyZWRUYWJsZUluZm8KIAlPaWQJCQlyZWxpZDsJCQkvKiBSZWxh dGlvbiB0byB3b3JrIG9uICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIEl0cyByZWxraW5kICovCiAJ VHVwbGVEZXNjCW9sZERlc2M7CQkvKiBQcmUtbW9kaWZpY2F0aW9uIHR1cGxlIGRlc2NyaXB0b3Ig Ki8KKwljaGFyCQlvbGRyZWxwZXJzaXN0ZW5jZTsJLyogUHJlLW1vZGlmaWNhdGlvbiByZWxwZXJz aXN0ZW5jZSAqLwogCiAJLyoKIAkgKiBUcmFuc2llbnRseSBzZXQgZHVyaW5nIFBoYXNlIDIsIG5v cm1hbGx5IHNldCB0byBOVUxMLgpAQCAtODQ5LDExICs4NTEsMTcgQEAgRGVmaW5lUmVsYXRpb24o Q3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAkvKgogCSAqIENo ZWNrIGNvbnNpc3RlbmN5IG9mIGFyZ3VtZW50cwogCSAqLwotCWlmIChzdG10LT5vbmNvbW1pdCAh PSBPTkNPTU1JVF9OT09QCi0JCSYmIHN0bXQtPnJlbGF0aW9uLT5yZWxwZXJzaXN0ZW5jZSAhPSBS RUxQRVJTSVNURU5DRV9URU1QKQorCWlmIChzdG10LT5vbmNvbW1pdCAhPSBPTkNPTU1JVF9OT09Q ICYmCisJCXN0bXQtPnJlbGF0aW9uLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9U RU1QICYmCisJCXN0bXQtPnJlbGF0aW9uLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5D RV9HTE9CQUxfVEVNUCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfVEFCTEVfREVGSU5JVElPTiksCiAJCQkJIGVycm1zZygiT04gQ09NTUlUIGNhbiBvbmx5 IGJlIHVzZWQgb24gdGVtcG9yYXJ5IHRhYmxlcyIpKSk7CisJaWYgKHN0bXQtPm9uY29tbWl0ID09 IE9OQ09NTUlUX0RST1AgJiYKKwkJc3RtdC0+cmVsYXRpb24tPnJlbHBlcnNpc3RlbmNlID09IFJF TFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJPTiBDT01N SVQgRFJPUCBjYW5ub3QgYmUgdXNlZCBvbiBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyIpKSk7CiAK IAlpZiAoc3RtdC0+cGFydHNwZWMgIT0gTlVMTCkKIAl7CkBAIC0xNzExLDcgKzE3MTksOCBAQCBS ZW1vdmVSZWxhdGlvbnMoRHJvcFN0bXQgKmRyb3ApCiAJCSAqIGNhbGxiYWNrIHJldHJpZXZlZCB0 aGUgcmVsJ3MgcGVyc2lzdGVuY2UgZm9yIHVzLgogCQkgKi8KIAkJaWYgKGRyb3AtPmNvbmN1cnJl bnQgJiYKLQkJCXN0YXRlLmFjdHVhbF9yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9U RU1QKQorCQkJc3RhdGUuYWN0dWFsX3JlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RF TVAgJiYKKwkJCXN0YXRlLmFjdHVhbF9yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9H TE9CQUxfVEVNUCkKIAkJewogCQkJQXNzZXJ0KGxpc3RfbGVuZ3RoKGRyb3AtPm9iamVjdHMpID09 IDEgJiYKIAkJCQkgICBkcm9wLT5yZW1vdmVUeXBlID09IE9CSkVDVF9JTkRFWCk7CkBAIC0yNzc5 LDE0ICsyNzg4LDE3IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0 ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAKIAkJLyoKIAkJICogSWYgdGhlIHBhcmVu dCBpcyBwZXJtYW5lbnQsIHNvIG11c3QgYmUgYWxsIG9mIGl0cyBwYXJ0aXRpb25zLiAgTm90ZQot CQkgKiB0aGF0IGluaGVyaXRhbmNlIGFsbG93cyB0aGF0IGNhc2UuCisJCSAqIHRoYXQgaW5oZXJp dGFuY2UgYWxsb3dzIHRoYXQgY2FzZS4gIEZvciB0aGVzZSBwdXJwb3NlcywgZ2xvYmFsCisJCSAq IHRlbXBvcmFyeSB0YWJsZXMgYmVoYXZlIGxpa2UgcGVybWFuZW50IHRhYmxlcy4KIAkJICovCiAJ CWlmIChpc19wYXJ0aXRpb24gJiYKIAkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNl ICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKIAkJCXJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJ U1RFTkNFX1RFTVApCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1dS T05HX09CSkVDVF9UWVBFKSwKLQkJCQkJIGVycm1zZygiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFy eSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9uIFwiJXNcIiIsCisJ CQkJCSBlcnJtc2coUkVMQVRJT05fSVNfR0xPQkFMX1RFTVAocmVsYXRpb24pCisJCQkJCQkJPyAi Y2Fubm90IGNyZWF0ZSBhIGxvY2FsIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2Yg Z2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiCisJCQkJCQkJOiAiY2Fubm90IGNyZWF0 ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0aW9u IFwiJXNcIiIsCiAJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOwog CiAJCS8qIFBlcm1hbmVudCByZWxzIGNhbm5vdCBpbmhlcml0IGZyb20gdGVtcG9yYXJ5IG9uZXMg Ki8KQEAgLTI3OTYsNiArMjgwOCw4IEBAIE1lcmdlQXR0cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBj b25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2UsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCQkgZXJybXNnKCFpc19wYXJ0aXRpb24KIAkJ CQkJCQk/ICJjYW5ub3QgaW5oZXJpdCBmcm9tIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiCisJ CQkJCQkJOiByZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUAorCQkJ CQkJCT8gImNhbm5vdCBjcmVhdGUgYSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRp dGlvbiBvZiBsb2NhbCB0ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wiIgogCQkJCQkJCTogImNhbm5v dCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSBy ZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSkpKTsKIApAQCAtMzg1NSwxMCArMzg2OSwxMiBAQCBTZXRSZWxhdGlvblRhYmxlU3BhY2UoUmVs YXRpb24gcmVsLAogCVVubG9ja1R1cGxlKHBnX2NsYXNzLCAmb3RpZCwgSW5wbGFjZVVwZGF0ZVR1 cGxlTG9jayk7CiAKIAkvKgotCSAqIFJlY29yZCBkZXBlbmRlbmN5IG9uIHRhYmxlc3BhY2UuICBU aGlzIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlbGF0aW9ucwotCSAqIHRoYXQgaGF2ZSBubyBwaHlz aWNhbCBzdG9yYWdlLgorCSAqIFJlY29yZCBkZXBlbmRlbmN5IG9uIHRhYmxlc3BhY2UuICBUaGlz IGlzIHJlcXVpcmVkIGZvciByZWxhdGlvbnMgdGhhdAorCSAqIGhhdmUgbm8gcGh5c2ljYWwgc3Rv cmFnZSwgYW5kIGZvciBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyB3aG9zZQorCSAqIHBoeXNp Y2FsIHN0b3JhZ2UgaXMgdGVtcG9yYXJ5LgogCSAqLwotCWlmICghUkVMS0lORF9IQVNfU1RPUkFH RShyZWwtPnJkX3JlbC0+cmVsa2luZCkpCisJaWYgKCFSRUxLSU5EX0hBU19TVE9SQUdFKHJlbC0+ cmRfcmVsLT5yZWxraW5kKSB8fAorCQlSRUxBVElPTl9JU19HTE9CQUxfVEVNUChyZWwpKQogCQlj aGFuZ2VEZXBlbmRlbmN5T25UYWJsZXNwYWNlKFJlbGF0aW9uUmVsYXRpb25JZCwgcmVsb2lkLAog CQkJCQkJCQkJIHJkX3JlbC0+cmVsdGFibGVzcGFjZSk7CiAKQEAgLTYwMzksNiArNjA1NSwxOCBA QCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwgTGlzdCAqKndxdWV1 ZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCiAJCQkJCQkgZXJybXNnKCJjYW5ub3QgcmV3cml0ZSB0ZW1wb3JhcnkgdGFi bGVzIG9mIG90aGVyIHNlc3Npb25zIikpKTsKIAorCQkJLyoKKwkJCSAqIERvbid0IGFsbG93IHJl d3JpdGUgb24gZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMsIGlmIHRoZXkncmUKKwkJCSAqIGJlaW5n IHVzZWQgYnkgb3RoZXIgYmFja2VuZHMgLi4uIHdlIGhhdmUgbm8gd2F5IHRvIHJld3JpdGUKKwkJ CSAqIGxvY2FsIHN0b3JhZ2Ugb2YgYW5vdGhlciBiYWNrZW5kLgorCQkJICovCisJCQlpZiAoUkVM QVRJT05fSVNfR0xPQkFMX1RFTVAoT2xkSGVhcCkgJiYKKwkJCQlJc090aGVyVXNpbmdHbG9iYWxU ZW1wUmVsYXRpb24oUmVsYXRpb25HZXRSZWxpZChPbGRIZWFwKSkpCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJ ZXJybXNnKCJjYW5ub3QgcmV3cml0ZSBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlIFwiJXNcIiBiZWNh dXNlIGl0IGlzIGJlaW5nIHVzZWQgaW4gYW5vdGhlciBzZXNzaW9uIiwKKwkJCQkJCQkgICBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShPbGRIZWFwKSkpOworCiAJCQkvKgogCQkJICogU2VsZWN0IGRl c3RpbmF0aW9uIHRhYmxlc3BhY2UgKHNhbWUgYXMgb3JpZ2luYWwgdW5sZXNzIHVzZXIKIAkJCSAq IHJlcXVlc3RlZCBhIGNoYW5nZSkKQEAgLTYxMzUsMTEgKzYxNjMsMjIgQEAgQVRSZXdyaXRlVGFi bGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tNT0RFIGxv Y2ttb2RlLAogCQkJLyoKIAkJCSAqIElmIHJlcXVpcmVkLCB0ZXN0IHRoZSBjdXJyZW50IGRhdGEg d2l0aGluIHRoZSB0YWJsZSBhZ2FpbnN0IG5ldwogCQkJICogY29uc3RyYWludHMgZ2VuZXJhdGVk IGJ5IEFMVEVSIFRBQkxFIGNvbW1hbmRzLCBidXQgZG9uJ3QKLQkJCSAqIHJlYnVpbGQgZGF0YS4K KwkJCSAqIHJlYnVpbGQgZGF0YS4gIERvbid0IGFsbG93IHRoaXMgZm9yIGdsb2JhbCB0ZW1wb3Jh cnkgdGFibGVzLCBpZgorCQkJICogdGhleSdyZSBiZWluZyB1c2VkIGJ5IG90aGVyIGJhY2tlbmRz IC4uLiB3ZSBoYXZlIG5vIHdheSB0byBzY2FuCisJCQkgKiBsb2NhbCBzdG9yYWdlIG9mIGFub3Ro ZXIgYmFja2VuZC4KIAkJCSAqLwogCQkJaWYgKHRhYi0+Y29uc3RyYWludHMgIT0gTklMIHx8IHRh Yi0+dmVyaWZ5X25ld19ub3RudWxsIHx8CiAJCQkJdGFiLT5wYXJ0aXRpb25fY29uc3RyYWludCAh PSBOVUxMKQorCQkJeworCQkJCWlmICh0YWItPm9sZHJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJ U1RFTkNFX0dMT0JBTF9URU1QICYmCisJCQkJCUlzT3RoZXJVc2luZ0dsb2JhbFRlbXBSZWxhdGlv bih0YWItPnJlbGlkKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQllcnJtc2coImNhbm5vdCBhZGQgb3Ig YWx0ZXIgY29uc3RyYWludHMgb2YgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZSBcIiVzXCIgYmVjYXVz ZSBpdCBpcyBiZWluZyB1c2VkIGluIGFub3RoZXIgc2Vzc2lvbiIsCisJCQkJCQkJCSAgIGdldF9y ZWxfbmFtZSh0YWItPnJlbGlkKSkpOworCiAJCQkJQVRSZXdyaXRlVGFibGUodGFiLCBJbnZhbGlk T2lkKTsKKwkJCX0KIAogCQkJLyoKIAkJCSAqIElmIHdlIGhhZCBTRVQgVEFCTEVTUEFDRSBidXQg bm8gcmVhc29uIHRvIHJlY29uc3RydWN0IHR1cGxlcywKQEAgLTY3MDEsNiArNjc0MCw3IEBAIEFU R2V0UXVldWVFbnRyeShMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiByZWwpCiAJdGFiLT5yZWwgPSBO VUxMOwkJCS8qIHNldCBsYXRlciAqLwogCXRhYi0+cmVsa2luZCA9IHJlbC0+cmRfcmVsLT5yZWxr aW5kOwogCXRhYi0+b2xkRGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHlDb25zdHIoUmVsYXRpb25H ZXREZXNjcihyZWwpKTsKKwl0YWItPm9sZHJlbHBlcnNpc3RlbmNlID0gcmVsLT5yZF9yZWwtPnJl bHBlcnNpc3RlbmNlOwogCXRhYi0+bmV3QWNjZXNzTWV0aG9kID0gSW52YWxpZE9pZDsKIAl0YWIt PmNoZ0FjY2Vzc01ldGhvZCA9IGZhbHNlOwogCXRhYi0+bmV3VGFibGVTcGFjZSA9IEludmFsaWRP aWQ7CkBAIC0xMDI5MSwxMSArMTAzMzEsMTcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChM aXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCWlm IChwa3JlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QKQog CQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfVEFCTEVf REVGSU5JVElPTiksCi0JCQkJCQkgZXJybXNnKCJjb25zdHJhaW50cyBvbiB0ZW1wb3JhcnkgdGFi bGVzIG1heSByZWZlcmVuY2Ugb25seSB0ZW1wb3JhcnkgdGFibGVzIikpKTsKKwkJCQkJCSBlcnJt c2coImNvbnN0cmFpbnRzIG9uIGxvY2FsIHRlbXBvcmFyeSB0YWJsZXMgbWF5IHJlZmVyZW5jZSBv bmx5IGxvY2FsIHRlbXBvcmFyeSB0YWJsZXMiKSkpOwogCQkJaWYgKCFwa3JlbC0+cmRfaXNsb2Nh bHRlbXAgfHwgIXJlbC0+cmRfaXNsb2NhbHRlbXApCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UQUJMRV9ERUZJTklUSU9OKSwKLQkJCQkJCSBlcnJt c2coImNvbnN0cmFpbnRzIG9uIHRlbXBvcmFyeSB0YWJsZXMgbXVzdCBpbnZvbHZlIHRlbXBvcmFy eSB0YWJsZXMgb2YgdGhpcyBzZXNzaW9uIikpKTsKKwkJCQkJCSBlcnJtc2coImNvbnN0cmFpbnRz IG9uIGxvY2FsIHRlbXBvcmFyeSB0YWJsZXMgbXVzdCBpbnZvbHZlIGxvY2FsIHRlbXBvcmFyeSB0 YWJsZXMgb2YgdGhpcyBzZXNzaW9uIikpKTsKKwkJCWJyZWFrOworCQljYXNlIFJFTFBFUlNJU1RF TkNFX0dMT0JBTF9URU1QOgorCQkJaWYgKCFSRUxBVElPTl9JU19HTE9CQUxfVEVNUChwa3JlbCkp CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9UQUJM RV9ERUZJTklUSU9OKSwKKwkJCQkJCSBlcnJtc2coImNvbnN0cmFpbnRzIG9uIGdsb2JhbCB0ZW1w b3JhcnkgdGFibGVzIG1heSByZWZlcmVuY2Ugb25seSBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyIp KSk7CiAJCQlicmVhazsKIAl9CiAKQEAgLTE3Njk5LDcgKzE3NzQ1LDggQEAgaW5kZXhfY29weV9k YXRhKFJlbGF0aW9uIHJlbCwgUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3IpCiAJICogTk9URTog YW55IGNvbmZsaWN0IGluIHJlbGZpbGVudW1iZXIgdmFsdWUgd2lsbCBiZSBjYXVnaHQgaW4KIAkg KiBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UoKS4KIAkgKi8KLQlkc3RyZWwgPSBSZWxhdGlvbkNyZWF0 ZVN0b3JhZ2UobmV3cmxvY2F0b3IsIHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSwgdHJ1ZSk7 CisJZHN0cmVsID0gUmVsYXRpb25DcmVhdGVTdG9yYWdlKHJlbC0+cmRfaWQsIG5ld3Jsb2NhdG9y LAorCQkJCQkJCQkgICByZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UsIHRydWUpOwogCiAJLyog Y29weSBtYWluIGZvcmsgKi8KIAlSZWxhdGlvbkNvcHlTdG9yYWdlKFJlbGF0aW9uR2V0U21ncihy ZWwpLCBkc3RyZWwsIE1BSU5fRk9SS05VTSwKQEAgLTE5MzYwLDYgKzE5NDA3LDcgQEAgQVRQcmVw Q2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsIGJv b2wgdG9Mb2dnZWQpCiAJc3dpdGNoIChyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpCiAJewog CQljYXNlIFJFTFBFUlNJU1RFTkNFX1RFTVA6CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfR0xPQkFM X1RFTVA6CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf VEFCTEVfREVGSU5JVElPTiksCiAJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgbG9nZ2VkIHN0 YXR1cyBvZiB0YWJsZSBcIiVzXCIgYmVjYXVzZSBpdCBpcyB0ZW1wb3JhcnkiLApAQCAtMjA5OTIs NyArMjEwNDAsOSBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVsYXRp b24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJYXR0YWNocmVsLT5yZF9yZWwtPnJlbHBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGF0 dGFjaCBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFuZW50IHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkJIGVycm1zZyhSRUxBVElPTl9JU19HTE9CQUxfVEVNUChyZWwpCisJ CQkJCQk/ICJjYW5ub3QgYXR0YWNoIGEgbG9jYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRp dGlvbiBvZiBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIFwiJXNcIiIKKwkJCQkJCTogImNhbm5v dCBhdHRhY2ggYSB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHBlcm1hbmVudCBy ZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK IAogCS8qIFRlbXAgcGFyZW50IGNhbm5vdCBoYXZlIGEgcGFydGl0aW9uIHRoYXQgaXMgaXRzZWxm IG5vdCBhIHRlbXAgKi8KQEAgLTIxMDAwLDcgKzIxMDUwLDkgQEAgQVRFeGVjQXR0YWNoUGFydGl0 aW9uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJCWF0 dGFjaHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAotCQkJCSBlcnJtc2coImNhbm5vdCBhdHRhY2ggYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFy dGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCSBlcnJtc2coUkVMQVRJ T05fSVNfR0xPQkFMX1RFTVAoYXR0YWNocmVsKQorCQkJCQkJPyAiY2Fubm90IGF0dGFjaCBhIGds b2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIGxvY2FsIHRlbXBvcmFyeSBy ZWxhdGlvbiBcIiVzXCIiCisJCQkJCQk6ICJjYW5ub3QgYXR0YWNoIGEgcGVybWFuZW50IHJlbGF0 aW9uIGFzIHBhcnRpdGlvbiBvZiB0ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CiAKIAkvKiBJZiB0aGUgcGFyZW50IGlzIHRl bXAsIGl0IG11c3QgYmVsb25nIHRvIHRoaXMgc2Vzc2lvbiAqLwpAQCAtMjMwNzksNyArMjMxMzEs OSBAQCBjcmVhdGVQYXJ0aXRpb25UYWJsZShMaXN0ICoqd3F1ZXVlLCBSYW5nZVZhciAqbmV3UGFy dE5hbWUsCiAJCW5ld1BhcnROYW1lLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9U RU1QKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCWVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1Rf VFlQRSksCi0JCQkJZXJybXNnKCJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFz IHBhcnRpdGlvbiBvZiBwZXJtYW5lbnQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQllcnJtc2cocGFy ZW50X3JlbGZvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1Q CisJCQkJCSAgID8gImNhbm5vdCBjcmVhdGUgYSBsb2NhbCB0ZW1wb3JhcnkgcmVsYXRpb24gYXMg cGFydGl0aW9uIG9mIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gXCIlc1wiIgorCQkJCQkgICA6 ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBwZXJt YW5lbnQgcmVsYXRpb24gXCIlc1wiIiwKIAkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cGFyZW50X3JlbCkpKTsKIAogCS8qIFBlcm1hbmVudCByZWxzIGNhbm5vdCBiZSBwYXJ0aXRpb25z IGJlbG9uZ2luZyB0byBhIHRlbXBvcmFyeSBwYXJlbnQuICovCkBAIC0yMzA4Nyw3ICsyMzE0MSw5 IEBAIGNyZWF0ZVBhcnRpdGlvblRhYmxlKExpc3QgKip3cXVldWUsIFJhbmdlVmFyICpuZXdQYXJ0 TmFtZSwKIAkJcGFyZW50X3JlbGZvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNF X1RFTVApCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVD VF9UWVBFKSwKLQkJCQllcnJtc2coImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24g YXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiLAorCQkJCWVycm1zZyhu ZXdQYXJ0TmFtZS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAK KwkJCQkJICAgPyAiY2Fubm90IGNyZWF0ZSBhIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gYXMg cGFydGl0aW9uIG9mIGxvY2FsIHRlbXBvcmFyeSByZWxhdGlvbiBcIiVzXCIiCisJCQkJCSAgIDog ImNhbm5vdCBjcmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBv cmFyeSByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShw YXJlbnRfcmVsKSkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh Ymxlc3BhY2UuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlc3BhY2UuYwppbmRleCBkOTFm Y2YwZmFjZi4uYWEzMDkzZmIyZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Rh Ymxlc3BhY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZXNwYWNlLmMKQEAgLTEx NTksNyArMTE1OSw4IEBAIEdldERlZmF1bHRUYWJsZXNwYWNlKGNoYXIgcmVscGVyc2lzdGVuY2Us IGJvb2wgcGFydGl0aW9uZWQpCiAJT2lkCQkJcmVzdWx0OwogCiAJLyogVGhlIHRlbXAtdGFibGUg Y2FzZSBpcyBoYW5kbGVkIGVsc2V3aGVyZSAqLwotCWlmIChyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQ RVJTSVNURU5DRV9URU1QKQorCWlmIChyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9U RU1QIHx8CisJCXJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQog CXsKIAkJUHJlcGFyZVRlbXBUYWJsZXNwYWNlcygpOwogCQlyZXR1cm4gR2V0TmV4dFRlbXBUYWJs ZVNwYWNlKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92aWV3LmMKaW5kZXggMWJkNzhhNGNkZjAuLjYxODk2Mzg4MGMwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmlldy5jCkBAIC00NzYsNiArNDc2LDE1IEBAIERlZmluZVZpZXcoVmlld1N0bXQg KnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKIAkJCQkgZXJybXNnKCJ2aWV3cyBjYW5ub3QgYmUgdW5sb2dnZWQgYmVjYXVz ZSB0aGV5IGRvIG5vdCBoYXZlIHN0b3JhZ2UiKSkpOwogCisJLyoKKwkgKiBHbG9iYWwgdGVtcG9y YXJ5IHZpZXdzIGFyZSBub3Qgc2Vuc2libGUgZWl0aGVyLiAgVGhpcyB1c2VkIHRvIGdlbmVyYXRl CisJICogYSB3YXJuaW5nIGluIHRoZSBwYXJzZXIsIGJ1dCBub3cgd2UgcmFpc2UgYW4gZXJyb3Iu CisJICovCisJaWYgKHN0bXQtPnZpZXctPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNF X0dMT0JBTF9URU1QKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lO VEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJ2aWV3cyBjYW5ub3QgYmUgZ2xvYmFsIHRlbXBvcmFy eSBiZWNhdXNlIHRoZXkgZG8gbm90IGhhdmUgc3RvcmFnZSIpKSk7CisKIAkvKgogCSAqIElmIHRo ZSB1c2VyIGRpZG4ndCBleHBsaWNpdGx5IGFzayBmb3IgYSB0ZW1wb3JhcnkgdmlldywgY2hlY2sg d2hldGhlcgogCSAqIHdlIG5lZWQgb25lIGltcGxpY2l0bHkuICBXZSBhbGxvdyBURU1QIHRvIGJl IGluc2VydGVkIGF1dG9tYXRpY2FsbHkgYXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGlt aXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jCmluZGV4IGMxMzQ1OTRhMjFhLi5lZmJjMmI3NTRkMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9hbGxwYXRocy5jCkBAIC02NDUsNiArNjQ1LDggQEAgc3RhdGljIHZvaWQKIHNldF9yZWxf Y29uc2lkZXJfcGFyYWxsZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJ CQkJCSAgUmFuZ2VUYmxFbnRyeSAqcnRlKQogeworCWNoYXIJCXJlbHBlcnNpc3RlbmNlOworCiAJ LyoKIAkgKiBUaGUgZmxhZyBoYXMgcHJldmlvdXNseSBiZWVuIGluaXRpYWxpemVkIHRvIGZhbHNl LCBzbyB3ZSBjYW4ganVzdAogCSAqIHJldHVybiBpZiBpdCBiZWNvbWVzIGNsZWFyIHRoYXQgd2Ug Y2FuJ3Qgc2FmZWx5IHNldCBpdC4KQEAgLTY3Miw3ICs2NzQsOSBAQCBzZXRfcmVsX2NvbnNpZGVy X3BhcmFsbGVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkgKiB0aGUg cmVzdCBvZiB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIHJpZ2h0IG5vdyBhbnl3YXkuICBT bwogCQkJICogZm9yIG5vdywgYmFpbCBvdXQgaWYgd2Ugc2VlIGEgdGVtcG9yYXJ5IHRhYmxlLgog CQkJICovCi0JCQlpZiAoZ2V0X3JlbF9wZXJzaXN0ZW5jZShydGUtPnJlbGlkKSA9PSBSRUxQRVJT SVNURU5DRV9URU1QKQorCQkJcmVscGVyc2lzdGVuY2UgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKHJ0 ZS0+cmVsaWQpOworCQkJaWYgKHJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAg fHwKKwkJCQlyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkKIAkJ CQlyZXR1cm47CiAKIAkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBmZjRlMTM4OGM1NS4uYWM2NTllNDNm ZTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQpAQCAtMzkxMywzMSArMzkxMywyMSBAQCBDcmVhdGVTdG10OglDUkVB VEUgT3B0VGVtcCBUQUJMRSBxdWFsaWZpZWRfbmFtZSAnKCcgT3B0VGFibGVFbGVtZW50TGlzdCAn KScKICAqIFJlZHVuZGFuY3kgaGVyZSBpcyBuZWVkZWQgdG8gYXZvaWQgc2hpZnQvcmVkdWNlIGNv bmZsaWN0cywKICAqIHNpbmNlIFRFTVAgaXMgbm90IGEgcmVzZXJ2ZWQgd29yZC4gIFNlZSBhbHNv IE9wdFRlbXBUYWJsZU5hbWUuCiAgKgotICogTk9URTogd2UgYWNjZXB0IGJvdGggR0xPQkFMIGFu ZCBMT0NBTCBvcHRpb25zLiAgVGhleSBjdXJyZW50bHkgZG8gbm90aGluZywKLSAqIGJ1dCBmdXR1 cmUgdmVyc2lvbnMgbWlnaHQgY29uc2lkZXIgR0xPQkFMIHRvIHJlcXVlc3QgU1FMLXNwZWMtY29t cGxpYW50Ci0gKiB0ZW1wIHRhYmxlIGJlaGF2aW9yLCBzbyB3YXJuIGFib3V0IHRoYXQuICBTaW5j ZSB3ZSBoYXZlIG5vIG1vZHVsZXMgdGhlCisgKiBOT1RFOiB3ZSBhY2NlcHQgYm90aCBHTE9CQUwg YW5kIExPQ0FMIG9wdGlvbnMuICBHTE9CQUwgcmVzdWx0cyBpbgorICogU1FMLXNwZWMtY29tcGxp YW50IHRlbXAgdGFibGUgYmVoYXZpb3IuICBTaW5jZSB3ZSBoYXZlIG5vIG1vZHVsZXMsIHRoZQog ICogTE9DQUwga2V5d29yZCBpcyByZWFsbHkgbWVhbmluZ2xlc3M7IGZ1cnRoZXJtb3JlLCBzb21l IG90aGVyIHByb2R1Y3RzCi0gKiBpbXBsZW1lbnQgTE9DQUwgYXMgbWVhbmluZyB0aGUgc2FtZSBh cyBvdXIgZGVmYXVsdCB0ZW1wIHRhYmxlIGJlaGF2aW9yLAotICogc28gd2UnbGwgcHJvYmFibHkg Y29udGludWUgdG8gdHJlYXQgTE9DQUwgYXMgYSBub2lzZSB3b3JkLgorICogaW1wbGVtZW50IExP Q0FMIGFzIG1lYW5pbmcgdGhlIHNhbWUgYXMgb3VyIGRlZmF1bHQgdGVtcCB0YWJsZSBiZWhhdmlv ciBvZgorICoga2VlcGluZyB0aGUgdGFibGUgZGVmaW5pdGlvbiBwcml2YXRlIHRvIHRoZSBzZXNz aW9uIHRoYXQgY3JlYXRlZCBpdCwgYW5kCisgKiBkcm9wcGluZyB0aGUgdGFibGUgYXQgdGhlIGVu ZCBvZiB0aGUgc2Vzc2lvbiwgc28gd2UganVzdCB0cmVhdCBMT0NBTCBhcyBhCisgKiBub2lzZSB3 b3JkLiAgKEFjdHVhbGx5LCB0aGUgU1FMLXNwZWMgbWFuZGF0ZXMgdGhhdCBlaXRoZXIgR0xPQkFM IG9yIExPQ0FMCisgKiBtdXN0IGJlIHNwZWNpZmllZCwgYnV0IHdlIGFsbG93IGl0IHRvIGJlIG9t aXR0ZWQuKQogICovCiBPcHRUZW1wOglURU1QT1JBUlkJCQkJCXsgJCQgPSBSRUxQRVJTSVNURU5D RV9URU1QOyB9CiAJCQl8IFRFTVAJCQkJCQl7ICQkID0gUkVMUEVSU0lTVEVOQ0VfVEVNUDsgfQog CQkJfCBMT0NBTCBURU1QT1JBUlkJCQl7ICQkID0gUkVMUEVSU0lTVEVOQ0VfVEVNUDsgfQogCQkJ fCBMT0NBTCBURU1QCQkJCXsgJCQgPSBSRUxQRVJTSVNURU5DRV9URU1QOyB9Ci0JCQl8IEdMT0JB TCBURU1QT1JBUlkKLQkJCQl7Ci0JCQkJCWVyZXBvcnQoV0FSTklORywKLQkJCQkJCQkoZXJybXNn KCJHTE9CQUwgaXMgZGVwcmVjYXRlZCBpbiB0ZW1wb3JhcnkgdGFibGUgY3JlYXRpb24iKSwKLQkJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEAxKSkpOwotCQkJCQkkJCA9IFJFTFBFUlNJU1RFTkNF X1RFTVA7Ci0JCQkJfQotCQkJfCBHTE9CQUwgVEVNUAotCQkJCXsKLQkJCQkJZXJlcG9ydChXQVJO SU5HLAotCQkJCQkJCShlcnJtc2coIkdMT0JBTCBpcyBkZXByZWNhdGVkIGluIHRlbXBvcmFyeSB0 YWJsZSBjcmVhdGlvbiIpLAotCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDEpKSk7Ci0JCQkJ CSQkID0gUkVMUEVSU0lTVEVOQ0VfVEVNUDsKLQkJCQl9CisJCQl8IEdMT0JBTCBURU1QT1JBUlkJ CQl7ICQkID0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVA7IH0KKwkJCXwgR0xPQkFMIFRFTVAJ CQkJeyAkJCA9IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QOyB9CiAJCQl8IFVOTE9HR0VECQkJ CQl7ICQkID0gUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQ7IH0KIAkJCXwgLypFTVBUWSovCQkJCQl7 ICQkID0gUkVMUEVSU0lTVEVOQ0VfUEVSTUFORU5UOyB9CiAJCTsKQEAgLTEzOTcyLDE5ICsxMzk2 MiwxMyBAQCBPcHRUZW1wVGFibGVOYW1lOgogCQkJCX0KIAkJCXwgR0xPQkFMIFRFTVBPUkFSWSBv cHRfdGFibGUgcXVhbGlmaWVkX25hbWUKIAkJCQl7Ci0JCQkJCWVyZXBvcnQoV0FSTklORywKLQkJ CQkJCQkoZXJybXNnKCJHTE9CQUwgaXMgZGVwcmVjYXRlZCBpbiB0ZW1wb3JhcnkgdGFibGUgY3Jl YXRpb24iKSwKLQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEAxKSkpOwogCQkJCQkkJCA9ICQ0 OwotCQkJCQkkJC0+cmVscGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNURU5DRV9URU1QOworCQkJCQkk JC0+cmVscGVyc2lzdGVuY2UgPSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUDsKIAkJCQl9CiAJ CQl8IEdMT0JBTCBURU1QIG9wdF90YWJsZSBxdWFsaWZpZWRfbmFtZQogCQkJCXsKLQkJCQkJZXJl cG9ydChXQVJOSU5HLAotCQkJCQkJCShlcnJtc2coIkdMT0JBTCBpcyBkZXByZWNhdGVkIGluIHRl bXBvcmFyeSB0YWJsZSBjcmVhdGlvbiIpLAotCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oQDEp KSk7CiAJCQkJCSQkID0gJDQ7Ci0JCQkJCSQkLT5yZWxwZXJzaXN0ZW5jZSA9IFJFTFBFUlNJU1RF TkNFX1RFTVA7CisJCQkJCSQkLT5yZWxwZXJzaXN0ZW5jZSA9IFJFTFBFUlNJU1RFTkNFX0dMT0JB TF9URU1QOwogCQkJCX0KIAkJCXwgVU5MT0dHRUQgb3B0X3RhYmxlIHF1YWxpZmllZF9uYW1lCiAJ CQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCAxMjdiZDllN2RhMy4uNmZi Mzg4ZjU3YjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j CisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCkBAIC0yMDUwLDcgKzIw NTAsMTAgQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCiAJCS8qCiAJCSAqIENoZWNrIGlmIGl0IGlz IGEgdGVtcCB0YWJsZSAocHJlc3VtYWJseSwgb2Ygc29tZSBvdGhlciBiYWNrZW5kJ3MpLgotCQkg KiBXZSBjYW5ub3Qgc2FmZWx5IHByb2Nlc3Mgb3RoZXIgYmFja2VuZHMnIHRlbXAgdGFibGVzLgor CQkgKiBXZSBjYW5ub3Qgc2FmZWx5IHByb2Nlc3Mgb3RoZXIgYmFja2VuZHMnIGxvY2FsIHRlbXAg dGFibGVzLCBzbyBqdXN0CisJCSAqIHJlY29yZCBhbnkgdGhhdCBhcHBlYXIgdG8gYmUgb3JwaGFu ZWQsIHNvIHdlIGNhbiBkcm9wIHRoZW0gbGF0ZXIuCisJCSAqIEdsb2JhbCB0ZW1wb3JhcnkgdGFi bGVzIGNhbm5vdCBiZSBwcm9jZXNzZWQgZWl0aGVyLCBidXQgdGhleSBjYW5ub3QKKwkJICogYmUg b3JwaGFuZWQgaW4gdGhpcyB3YXkgZWl0aGVyLCBzbyB3ZSBzaW1wbHkgaWdub3JlIHRoZW0uCiAJ CSAqLwogCQlpZiAoY2xhc3NGb3JtLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9U RU1QKQogCQl7CkBAIC0yMDcyLDYgKzIwNzUsOCBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCQl9 CiAJCQljb250aW51ZTsKIAkJfQorCQllbHNlIGlmIChjbGFzc0Zvcm0tPnJlbHBlcnNpc3RlbmNl ID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQorCQkJY29udGludWU7CiAKIAkJLyogRmV0 Y2ggcmVsb3B0aW9ucyBhbmQgdGhlIHBnc3RhdCBlbnRyeSBmb3IgdGhpcyB0YWJsZSAqLwogCQly ZWxvcHRzID0gZXh0cmFjdF9hdXRvdmFjX29wdHModHVwbGUsIHBnX2NsYXNzX2Rlc2MpOwpAQCAt MjE0OSw3ICsyMTU0LDggQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQkvKgogCQkgKiBXZSBjYW5u b3Qgc2FmZWx5IHByb2Nlc3Mgb3RoZXIgYmFja2VuZHMnIHRlbXAgdGFibGVzLCBzbyBza2lwICdl bS4KIAkJICovCi0JCWlmIChjbGFzc0Zvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1RFTVApCisJCWlmIChjbGFzc0Zvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1RFTVAgfHwKKwkJCWNsYXNzRm9ybS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVO Q0VfR0xPQkFMX1RFTVApCiAJCQljb250aW51ZTsKIAogCQlyZWxpZCA9IGNsYXNzRm9ybS0+b2lk OwpAQCAtMjI0NCw3ICsyMjUwLDggQEAgZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQkgKi8KIAkJaWYg KCEoKGNsYXNzRm9ybS0+cmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OIHx8CiAJCQkgICBjbGFz c0Zvcm0tPnJlbGtpbmQgPT0gUkVMS0lORF9NQVRWSUVXKSAmJgotCQkJICBjbGFzc0Zvcm0tPnJl bHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApKQorCQkJICAoY2xhc3NGb3JtLT5y ZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QIHx8CisJCQkgICBjbGFzc0Zvcm0t PnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKSkpCiAJCXsKIAkJ CVVubG9ja1JlbGF0aW9uT2lkKHJlbGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAkJCWNvbnRp bnVlOwpAQCAtMzY4MCw3ICszNjg3LDggQEAgcGdfc3RhdF9nZXRfYXV0b3ZhY3V1bV9zY29yZXMo UEdfRlVOQ1RJT05fQVJHUykKIAkJCWZvcm0tPnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXICYm CiAJCQlmb3JtLT5yZWxraW5kICE9IFJFTEtJTkRfVE9BU1RWQUxVRSkKIAkJCWNvbnRpbnVlOwot CQlpZiAoZm9ybS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJaWYg KGZvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAgfHwKKwkJCWZvcm0t PnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCQkJY29udGlu dWU7CiAKIAkJYXZvcHRzID0gZXh0cmFjdF9hdXRvdmFjX29wdHModHVwLCBSZWxhdGlvbkdldERl c2NyKHJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tz dW1fc3RhdGUuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMK aW5kZXggNjg1NTdjMTZjYjkuLjZjMDgzYTc3ZmFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKQEAgLTE5Miw2ICsxOTIsNyBAQAogI2luY2x1ZGUgImFj Y2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvZ2xvYmFsX3RlbXAuaCIKICNpbmNsdWRl ICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKQEAgLTE1MDAsNiArMTUwMSwxMSBAQCBCdWls ZFJlbGF0aW9uTGlzdChib29sIHRlbXBfcmVsYXRpb25zLCBib29sIGluY2x1ZGVfc2hhcmVkKQog CQkJaWYgKCF0ZW1wX3JlbGF0aW9ucykKIAkJCQljb250aW51ZTsKIAkJfQorCQllbHNlIGlmIChw Z2MtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQorCQl7CisJ CQkvKiBEZWFsIHdpdGggZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMgc2VwYXJhdGVseSBiZWxv dyAqLworCQkJY29udGludWU7CisJCX0KIAkJZWxzZQogCQl7CiAJCQkvKgpAQCAtMTUyNiw2ICsx NTMyLDIzIEBAIEJ1aWxkUmVsYXRpb25MaXN0KGJvb2wgdGVtcF9yZWxhdGlvbnMsIGJvb2wgaW5j bHVkZV9zaGFyZWQpCiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAorCS8qCisJICog SWYgd2Ugd2VyZSBhc2tlZCBmb3IgdGVtcG9yYXJ5IHJlbGF0aW9ucywgaW5jbHVkZSBhbGwgZ2xv YmFsIHRlbXBvcmFyeQorCSAqIHJlbGF0aW9ucyBjdXJyZW50bHkgaW4gdXNlLiAgVGhpcyBsaXN0 IGNhbiBiZSBvdXQgb2YgZGF0ZSBhcyBzb29uIGFzIGl0CisJICogaXMgcmV0dXJuZWQsIGJ1dCB0 aGF0IGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2Ugd2Ugb25seSBuZWVkIHRvIHdvcnJ5CisJICogYWJv dXQgdGhvc2UgdGhhdCB3ZXJlIGluIHVzZSB3aGVuIHRoZSAiaW5wcm9ncmVzcy1vbiIgc3RhdGUg d2FzIHNldCwKKwkgKiBhbmQgYXJlIHN0aWxsIGluIHVzZSBub3cuICBUaGlzIGRvZXMgbm90IHJl cXVpcmUgZGF0YWJhc2UgYWNjZXNzLgorCSAqLworCWlmICh0ZW1wX3JlbGF0aW9ucykKKwl7CisJ CUxpc3QJICAgKmd0cnNfaW5fdXNlOworCisJCWd0cnNfaW5fdXNlID0gQWxsR2xvYmFsVGVtcFJl bGF0aW9uc0luVXNlKE15RGF0YWJhc2VJZCk7CisKKwkJUmVsYXRpb25MaXN0ID0gbGlzdF9jb25j YXQoUmVsYXRpb25MaXN0LCBndHJzX2luX3VzZSk7CisJCWxpc3RfZnJlZShndHJzX2luX3VzZSk7 CisJfQorCiAJcmV0dXJuIFJlbGF0aW9uTGlzdDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYwppbmRleCA5YWIyODJhNzZkMS4uZWJkYzc4Mzg1NjAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv YnVmZmVyL2J1Zm1nci5jCkBAIC0xMjM2LDYgKzEyMzYsNyBAQCBQaW5CdWZmZXJGb3JCbG9jayhS ZWxhdGlvbiByZWwsCiAKIAkvKiBQZXJzaXN0ZW5jZSBzaG91bGQgYmUgc2V0IGJlZm9yZSAqLwog CUFzc2VydCgocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQkJcGVyc2lz dGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAgfHwKIAkJCXBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCB8fAogCQkJcGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lT VEVOQ0VfVU5MT0dHRUQpKTsKIApAQCAtMTI0NSw3ICsxMjQ2LDggQEAgUGluQnVmZmVyRm9yQmxv Y2soUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJICAgc21nci0+c21ncl9ybG9jYXRvci5sb2NhdG9y LnJlbE51bWJlciwKIAkJCQkJCQkJCSAgIHNtZ3ItPnNtZ3JfcmxvY2F0b3IuYmFja2VuZCk7CiAK LQlpZiAocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwlpZiAocGVyc2lzdGVu Y2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQlwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNU RU5DRV9HTE9CQUxfVEVNUCkKIAkJYnVmSGRyID0gTG9jYWxCdWZmZXJBbGxvYyhzbWdyLCBmb3Jr TnVtLCBibG9ja051bSwgZm91bmRQdHIpOwogCWVsc2UKIAkJYnVmSGRyID0gQnVmZmVyQWxsb2Mo c21nciwgcGVyc2lzdGVuY2UsIGZvcmtOdW0sIGJsb2NrTnVtLApAQCAtMTMyNyw3ICsxMzI5LDgg QEAgUmVhZEJ1ZmZlcl9jb21tb24oUmVsYXRpb24gcmVsLCBTTWdyUmVsYXRpb24gc21nciwgY2hh ciBzbWdyX3BlcnNpc3RlbmNlLAogCQlJT0NvbnRleHQJaW9fY29udGV4dDsKIAkJSU9PYmplY3QJ aW9fb2JqZWN0OwogCi0JCWlmIChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQor CQlpZiAocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQkJcGVyc2lzdGVu Y2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApCiAJCXsKIAkJCWlvX2NvbnRleHQgPSBJ T0NPTlRFWFRfTk9STUFMOwogCQkJaW9fb2JqZWN0ID0gSU9PQkpFQ1RfVEVNUF9SRUxBVElPTjsK QEAgLTEzOTEsNyArMTM5NCw4IEBAIFN0YXJ0UmVhZEJ1ZmZlcnNJbXBsKFJlYWRCdWZmZXJzT3Bl cmF0aW9uICpvcGVyYXRpb24sCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coImNhbm5vdCBhY2Nlc3MgdGVtcG9yYXJ5IHRhYmxlcyBvZiBv dGhlciBzZXNzaW9ucyIpKSk7CiAKLQlpZiAob3BlcmF0aW9uLT5wZXJzaXN0ZW5jZSA9PSBSRUxQ RVJTSVNURU5DRV9URU1QKQorCWlmIChvcGVyYXRpb24tPnBlcnNpc3RlbmNlID09IFJFTFBFUlNJ U1RFTkNFX1RFTVAgfHwKKwkJb3BlcmF0aW9uLT5wZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5D RV9HTE9CQUxfVEVNUCkKIAl7CiAJCWlvX2NvbnRleHQgPSBJT0NPTlRFWFRfTk9STUFMOwogCQlp b19vYmplY3QgPSBJT09CSkVDVF9URU1QX1JFTEFUSU9OOwpAQCAtMTY5Miw3ICsxNjk2LDggQEAg VHJhY2tCdWZmZXJIaXQoSU9PYmplY3QgaW9fb2JqZWN0LCBJT0NvbnRleHQgaW9fY29udGV4dCwK IAkJCQkJCQkJCSAgc21nci0+c21ncl9ybG9jYXRvci5iYWNrZW5kLAogCQkJCQkJCQkJICB0cnVl KTsKIAotCWlmIChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCWlmIChwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QIHx8CisJCXBlcnNpc3RlbmNlID09IFJFTFBF UlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCQlwZ0J1ZmZlclVzYWdlLmxvY2FsX2Jsa3NfaGl0ICs9 IDE7CiAJZWxzZQogCQlwZ0J1ZmZlclVzYWdlLnNoYXJlZF9ibGtzX2hpdCArPSAxOwpAQCAtMTc2 Myw3ICsxNzY4LDggQEAgV2FpdFJlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVy YXRpb24pCiAJSU9PYmplY3QJaW9fb2JqZWN0OwogCWJvb2wJCW5lZWRlZF93YWl0ID0gZmFsc2U7 CiAKLQlpZiAob3BlcmF0aW9uLT5wZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQor CWlmIChvcGVyYXRpb24tPnBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAgfHwKKwkJ b3BlcmF0aW9uLT5wZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkKIAl7 CiAJCWlvX2NvbnRleHQgPSBJT0NPTlRFWFRfTk9STUFMOwogCQlpb19vYmplY3QgPSBJT09CSkVD VF9URU1QX1JFTEFUSU9OOwpAQCAtMTk1Myw3ICsxOTU5LDggQEAgQXN5bmNSZWFkQnVmZmVycyhS ZWFkQnVmZmVyc09wZXJhdGlvbiAqb3BlcmF0aW9uLCBpbnQgKm5ibG9ja3NfcHJvZ3Jlc3MpCiAJ aW5zdHJfdGltZQlpb19zdGFydDsKIAlTdGFydEJ1ZmZlcklPUmVzdWx0IHN0YXR1czsKIAotCWlm IChwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCWlmIChwZXJzaXN0ZW5jZSA9 PSBSRUxQRVJTSVNURU5DRV9URU1QIHx8CisJCXBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNF X0dMT0JBTF9URU1QKQogCXsKIAkJaW9fY29udGV4dCA9IElPQ09OVEVYVF9OT1JNQUw7CiAJCWlv X29iamVjdCA9IElPT0JKRUNUX1RFTVBfUkVMQVRJT047CkBAIC0xOTcyLDcgKzE5NzksOCBAQCBB c3luY1JlYWRCdWZmZXJzKFJlYWRCdWZmZXJzT3BlcmF0aW9uICpvcGVyYXRpb24sIGludCAqbmJs b2Nrc19wcm9ncmVzcykKIAlpZiAoZmxhZ3MgJiBSRUFEX0JVRkZFUlNfU1lOQ0hST05PVVNMWSkK IAkJaW9oX2ZsYWdzIHw9IFBHQUlPX0hGX1NZTkNIUk9OT1VTOwogCi0JaWYgKHBlcnNpc3RlbmNl ID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJaWYgKHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1RFTVAgfHwKKwkJcGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAp CiAJCWlvaF9mbGFncyB8PSBQR0FJT19IRl9SRUZFUkVOQ0VTX0xPQ0FMOwogCiAJLyoKQEAgLTIx MzMsNyArMjE0MSw4IEBAIEFzeW5jUmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVyYXRpb24gKm9w ZXJhdGlvbiwgaW50ICpuYmxvY2tzX3Byb2dyZXNzKQogCXBnYWlvX2lvX3NldF9oYW5kbGVfZGF0 YV8zMihpb2gsICh1aW50MzIgKikgaW9fYnVmZmVycywgaW9fYnVmZmVyc19sZW4pOwogCiAJcGdh aW9faW9fcmVnaXN0ZXJfY2FsbGJhY2tzKGlvaCwKLQkJCQkJCQkJcGVyc2lzdGVuY2UgPT0gUkVM UEVSU0lTVEVOQ0VfVEVNUCA/CisJCQkJCQkJCXBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNF X1RFTVAgfHwKKwkJCQkJCQkJcGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RF TVAgPwogCQkJCQkJCQlQR0FJT19IQ0JfTE9DQUxfQlVGRkVSX1JFQURWIDoKIAkJCQkJCQkJUEdB SU9fSENCX1NIQVJFRF9CVUZGRVJfUkVBRFYsCiAJCQkJCQkJCWZsYWdzKTsKQEAgLTIxNTYsNyAr MjE2NSw4IEBAIEFzeW5jUmVhZEJ1ZmZlcnMoUmVhZEJ1ZmZlcnNPcGVyYXRpb24gKm9wZXJhdGlv biwgaW50ICpuYmxvY2tzX3Byb2dyZXNzKQogCXBnc3RhdF9jb3VudF9pb19vcF90aW1lKGlvX29i amVjdCwgaW9fY29udGV4dCwgSU9PUF9SRUFELAogCQkJCQkJCWlvX3N0YXJ0LCAxLCBpb19idWZm ZXJzX2xlbiAqIEJMQ0tTWik7CiAKLQlpZiAocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0Vf VEVNUCkKKwlpZiAocGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQlwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkKIAkJcGdCdWZmZXJVc2FnZS5s b2NhbF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47CiAJZWxzZQogCQlwZ0J1ZmZlclVzYWdl LnNoYXJlZF9ibGtzX3JlYWQgKz0gaW9fYnVmZmVyc19sZW47CkBAIC0yNzY2LDcgKzI3NzYsOCBA QCBFeHRlbmRCdWZmZXJlZFJlbENvbW1vbihCdWZmZXJNYW5hZ2VyUmVsYXRpb24gYm1yLAogCQkJ CQkJCQkJCSBCTVJfR0VUX1NNR1IoYm1yKS0+c21ncl9ybG9jYXRvci5iYWNrZW5kLAogCQkJCQkJ CQkJCSBleHRlbmRfYnkpOwogCi0JaWYgKGJtci5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNU RU5DRV9URU1QKQorCWlmIChibXIucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVN UCB8fAorCQlibXIucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAp CiAJewogCQkvKgogCQkgKiBSZWplY3QgYXR0ZW1wdHMgdG8gZXh0ZW5kIG5vbi1sb2NhbCB0ZW1w b3JhcnkgcmVsYXRpb25zOyB3ZSBoYXZlIG5vCkBAIC01NTAwLDkgKzU1MTEsMTAgQEAgQ3JlYXRl QW5kQ29weVJlbGF0aW9uRGF0YShSZWxGaWxlTG9jYXRvciBzcmNfcmxvY2F0b3IsCiAJICogQ3Jl YXRlIGFuZCBjb3B5IGFsbCBmb3JrcyBvZiB0aGUgcmVsYXRpb24uICBEdXJpbmcgY3JlYXRlIGRh dGFiYXNlIHdlCiAJICogaGF2ZSBhIHNlcGFyYXRlIGNsZWFudXAgbWVjaGFuaXNtIHdoaWNoIGRl bGV0ZXMgY29tcGxldGUgZGF0YWJhc2UKIAkgKiBkaXJlY3RvcnkuICBUaGVyZWZvcmUsIGVhY2gg aW5kaXZpZHVhbCByZWxhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUKLQkgKiByZWdpc3RlcmVkIGZv ciBjbGVhbnVwLgorCSAqIHJlZ2lzdGVyZWQgZm9yIGNsZWFudXAuICBBbHNvLCB0aGUgcmVsaWQg aXNuJ3QgbmVlZGVkLCBzaW5jZSBpdCdzIG5vdCBhCisJICogZ2xvYmFsIHRlbXBvcmFyeSByZWxh dGlvbi4KIAkgKi8KLQlSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UoZHN0X3Jsb2NhdG9yLCByZWxwZXJz aXN0ZW5jZSwgZmFsc2UpOworCVJlbGF0aW9uQ3JlYXRlU3RvcmFnZShJbnZhbGlkT2lkLCBkc3Rf cmxvY2F0b3IsIHJlbHBlcnNpc3RlbmNlLCBmYWxzZSk7CiAKIAkvKiBjb3B5IG1haW4gZm9yay4g Ki8KIAlSZWxhdGlvbkNvcHlTdG9yYWdlVXNpbmdCdWZmZXIoc3JjX3Jsb2NhdG9yLCBkc3Rfcmxv Y2F0b3IsIE1BSU5fRk9SS05VTSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudF9uYW1lcy50eHQKaW5kZXggNTYwNjU5Zjk1NjguLmY5OTcwM2JkNzkwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dAorKysg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dApAQCAtMzcw LDYgKzM3MCw3IEBAIFdhaXRMU04JIldhaXRpbmcgdG8gcmVhZCBvciB1cGRhdGUgc2hhcmVkIFdh aXQtZm9yLUxTTiBzdGF0ZS4iCiBMb2dpY2FsRGVjb2RpbmdDb250cm9sCSJXYWl0aW5nIHRvIHJl YWQgb3IgdXBkYXRlIGxvZ2ljYWwgZGVjb2Rpbmcgc3RhdHVzIGluZm9ybWF0aW9uLiIKIERhdGFD aGVja3N1bXNXb3JrZXIJIldhaXRpbmcgZm9yIGRhdGEgY2hlY2tzdW1zIHdvcmtlci4iCiBBaW9X b3JrZXJDb250cm9sCSJXYWl0aW5nIHRvIHVwZGF0ZSBBSU8gd29ya2VyIGluZm9ybWF0aW9uLiIK K0dsb2JhbFRlbXBSZWxDb250cm9sCSJXYWl0aW5nIHRvIHVwZGF0ZSBnbG9iYWwgdGVtcG9yYXJ5 IHJlbGF0aW9uIGluZm9ybWF0aW9uLiIKIAogIwogIyBFTkQgT0YgUFJFREVGSU5FRCBMV0xPQ0tT IChETyBOT1QgQ0hBTkdFIFRISVMgTElORSkKQEAgLTQxNyw2ICs0MTgsOCBAQCBYYWN0U0xSVQki V2FpdGluZyB0byBhY2Nlc3MgdGhlIHRyYW5zYWN0aW9uIHN0YXR1cyBTTFJVIGNhY2hlLiIKIFBh cmFsbGVsVmFjdXVtRFNBCSJXYWl0aW5nIGZvciBwYXJhbGxlbCB2YWN1dW0gZHluYW1pYyBzaGFy ZWQgbWVtb3J5IGFsbG9jYXRpb24uIgogQWlvVXJpbmdDb21wbGV0aW9uCSJXYWl0aW5nIGZvciBh bm90aGVyIHByb2Nlc3MgdG8gY29tcGxldGUgSU8gdmlhIGlvX3VyaW5nLiIKIFNobWVtSW5kZXgJ IldhaXRpbmcgdG8gZmluZCBvciBhbGxvY2F0ZSBzcGFjZSBpbiBzaGFyZWQgbWVtb3J5LiIKK0ds b2JhbFRlbXBSZWxEU0EJIldhaXRpbmcgZm9yIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gZHlu YW1pYyBzaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24uIgorR2xvYmFsVGVtcFJlbEhhc2gJIldhaXRp bmcgdG8gYWNjZXNzIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gc2hhcmVkIHVzYWdlIHRhYmxl LiIKIAogIyBObyAiQUJJX2NvbXBhdGliaWxpdHkiIHJlZ2lvbiBoZXJlIGFzIFdhaXRFdmVudExX TG9jayBoYXMgaXRzIG93biBDIGNvZGUuCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9kYnNpemUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYwppbmRleCBjY2Nj NGEyNGM4NC4uZTA5ZWE4ZmUyMjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9k YnNpemUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZGJzaXplLmMKQEAgLTEwMzIsNiAr MTAzMiw5IEBAIHBnX3JlbGF0aW9uX2ZpbGVwYXRoKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJQXNz ZXJ0KGJhY2tlbmQgIT0gSU5WQUxJRF9QUk9DX05VTUJFUik7CiAJCQl9CiAJCQlicmVhazsKKwkJ Y2FzZSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUDoKKwkJCWJhY2tlbmQgPSBQcm9jTnVtYmVy Rm9yVGVtcFJlbGF0aW9ucygpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9S LCAiaW52YWxpZCByZWxwZXJzaXN0ZW5jZTogJWMiLCByZWxmb3JtLT5yZWxwZXJzaXN0ZW5jZSk7 CiAJCQliYWNrZW5kID0gSU5WQUxJRF9QUk9DX05VTUJFUjsJLyogcGxhY2F0ZSBjb21waWxlciAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggMWIyMGYxZjgyZTIuLmQ5YTk2ZGQy ZTc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNp bmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvYmluYXJ5X3VwZ3JhZGUu aCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2dsb2Jh bF90ZW1wLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgogI2luY2x1ZGUgImNhdGFs b2cvbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKQEAgLTExNzIs OCArMTE3Myw5IEBAIHJldHJ5OgogCQkJZWxzZQogCQkJewogCQkJCS8qCi0JCQkJICogSWYgaXQn cyBhIHRlbXAgdGFibGUsIGJ1dCBub3Qgb25lIG9mIG91cnMsIHdlIGhhdmUgdG8gdXNlCi0JCQkJ ICogdGhlIHNsb3csIGdyb3R0eSBtZXRob2QgdG8gZmlndXJlIG91dCB0aGUgb3duaW5nIGJhY2tl bmQuCisJCQkJICogSWYgaXQncyBhIGxvY2FsIHRlbXAgdGFibGUsIGJ1dCBub3Qgb25lIG9mIG91 cnMsIHdlIGhhdmUgdG8KKwkJCQkgKiB1c2UgdGhlIHNsb3csIGdyb3R0eSBtZXRob2QgdG8gZmln dXJlIG91dCB0aGUgb3duaW5nCisJCQkJICogYmFja2VuZC4KIAkJCQkgKgogCQkJCSAqIE5vdGU6 IGl0J3MgcG9zc2libGUgdGhhdCByZF9iYWNrZW5kIGdldHMgc2V0IHRvCiAJCQkJICogTXlQcm9j TnVtYmVyIGhlcmUsIGluIGNhc2Ugd2UgYXJlIGxvb2tpbmcgYXQgYSBwZ19jbGFzcwpAQCAtMTE5 MCw2ICsxMTkyLDEwIEBAIHJldHJ5OgogCQkJCXJlbGF0aW9uLT5yZF9pc2xvY2FsdGVtcCA9IGZh bHNlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVA6 CisJCQlyZWxhdGlvbi0+cmRfYmFja2VuZCA9IFByb2NOdW1iZXJGb3JUZW1wUmVsYXRpb25zKCk7 CisJCQlyZWxhdGlvbi0+cmRfaXNsb2NhbHRlbXAgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgImludmFsaWQgcmVscGVyc2lzdGVuY2U6ICVjIiwKIAkJCQkg cmVsYXRpb24tPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOwpAQCAtMjExNSw2ICsyMTIxLDE0IEBA IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihPaWQgcmVsYXRpb25JZCkKIAkJewogCQkJUmVsYXRpb25S ZWJ1aWxkUmVsYXRpb24ocmQpOwogCisJCQkvKgorCQkJICogSWYgaXQncyBhIGdsb2JhbCB0ZW1w b3JhcnkgcmVsYXRpb24sIG1ha2Ugc3VyZSBpdCBoYXMgYmVlbgorCQkJICogaW5pdGlhbGl6ZWQg Zm9yIHVzZSBpbiB0aGlzIGJhY2tlbmQgKGEgcHJpb3IgaW5pdGlhbGl6YXRpb24KKwkJCSAqIG1p Z2h0IGhhdmUgYmVlbiByb2xsZWQgYmFjaykuCisJCQkgKi8KKwkJCWlmIChSRUxBVElPTl9JU19H TE9CQUxfVEVNUChyZCkpCisJCQkJSW5pdEdsb2JhbFRlbXBSZWxhdGlvbihyZCk7CisKIAkJCS8q CiAJCQkgKiBOb3JtYWxseSBlbnRyaWVzIG5lZWQgdG8gYmUgdmFsaWQgaGVyZSwgYnV0IGJlZm9y ZSB0aGUgcmVsY2FjaGUKIAkJCSAqIGhhcyBiZWVuIGluaXRpYWxpemVkLCBub3QgZW5vdWdoIGlu ZnJhc3RydWN0dXJlIGV4aXN0cyB0bwpAQCAtMjEzNCw3ICsyMTQ4LDExIEBAIFJlbGF0aW9uSWRH ZXRSZWxhdGlvbihPaWQgcmVsYXRpb25JZCkKIAkgKi8KIAlyZCA9IFJlbGF0aW9uQnVpbGREZXNj KHJlbGF0aW9uSWQsIHRydWUpOwogCWlmIChSZWxhdGlvbklzVmFsaWQocmQpKQorCXsKIAkJUmVs YXRpb25JbmNyZW1lbnRSZWZlcmVuY2VDb3VudChyZCk7CisJCWlmIChSRUxBVElPTl9JU19HTE9C QUxfVEVNUChyZCkpCisJCQlJbml0R2xvYmFsVGVtcFJlbGF0aW9uKHJkKTsKKwl9CiAJcmV0dXJu IHJkOwogfQogCkBAIC0yMjA4LDYgKzIyMjYsMjEgQEAgUmVsYXRpb25EZWNyZW1lbnRSZWZlcmVu Y2VDb3VudChSZWxhdGlvbiByZWwpCiAJCVJlc291cmNlT3duZXJGb3JnZXRSZWxhdGlvblJlZihD dXJyZW50UmVzb3VyY2VPd25lciwgcmVsKTsKIH0KIAorLyoKKyAqIFJlbGF0aW9uTWFya0ludmFs aWQKKyAqCQlNYXJrIGEgcmVsYXRpb24gYXMgaW52YWxpZCwgaWYgaXQncyBpbiB0aGUgcmVsY2Fj aGUsIGZvcmNpbmcgaXQgdG8gYmUKKyAqCQlyZWxvYWRlZCBvbiBuZXh0IGFjY2Vzcy4KKyAqLwor dm9pZAorUmVsYXRpb25NYXJrSW52YWxpZChPaWQgcmVsaWQpCit7CisJUmVsYXRpb24JcmVsYXRp b247CisKKwlSZWxhdGlvbklkQ2FjaGVMb29rdXAocmVsaWQsIHJlbGF0aW9uKTsKKwlpZiAoUmVs YXRpb25Jc1ZhbGlkKHJlbGF0aW9uKSAmJiByZWxhdGlvbi0+cmRfaXN2YWxpZCkKKwkJUmVsYXRp b25JbnZhbGlkYXRlUmVsYXRpb24ocmVsYXRpb24pOworfQorCiAvKgogICogUmVsYXRpb25DbG9z ZSAtIGNsb3NlIGFuIG9wZW4gcmVsYXRpb24KICAqCkBAIC0yOTU3LDYgKzI5OTAsOSBAQCBSZWxh dGlvbkNhY2hlSW52YWxpZGF0ZUVudHJ5KE9pZCByZWxhdGlvbklkKQogCQkJaWYgKGluX3Byb2dy ZXNzX2xpc3RbaV0ucmVsb2lkID09IHJlbGF0aW9uSWQpCiAJCQkJaW5fcHJvZ3Jlc3NfbGlzdFtp XS5pbnZhbGlkYXRlZCA9IHRydWU7CiAJfQorCisJLyogQWRkaXRpb25hbCBwcm9jZXNzaW5nIHJl cXVpcmVkIGZvciBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyAqLworCUludmFsaWRhdGVHbG9i YWxUZW1wUmVsYXRpb24ocmVsYXRpb25JZCk7CiB9CiAKIC8qCkBAIC0zMTAxLDYgKzMxMzcsOSBA QCBSZWxhdGlvbkNhY2hlSW52YWxpZGF0ZShib29sIGRlYnVnX2Rpc2NhcmQpCiAJCS8qIEFueSBS ZWxhdGlvbkJ1aWxkRGVzYygpIG9uIHRoZSBzdGFjayBtdXN0IHN0YXJ0IG92ZXIuICovCiAJCWZv ciAoaSA9IDA7IGkgPCBpbl9wcm9ncmVzc19saXN0X2xlbjsgaSsrKQogCQkJaW5fcHJvZ3Jlc3Nf bGlzdFtpXS5pbnZhbGlkYXRlZCA9IHRydWU7CisKKwkvKiBJbnZhbGlkYXRlIGFsbCBpbi11c2Ug Z2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMgKi8KKwlJbnZhbGlkYXRlR2xvYmFsVGVtcFJlbGF0 aW9uKEludmFsaWRPaWQpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzY1Nyw2ICszNjk2LDcgQEAg UmVsYXRpb25CdWlsZExvY2FsUmVsYXRpb24oY29uc3QgY2hhciAqcmVsbmFtZSwKIAl7CiAJCWNh c2UgUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQ6CiAJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfUEVSTUFO RU5UOgorCQkJQXNzZXJ0KCFpc1RlbXBPclRlbXBUb2FzdE5hbWVzcGFjZShyZWxuYW1lc3BhY2Up KTsKIAkJCXJlbC0+cmRfYmFja2VuZCA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAJCQlyZWwtPnJk X2lzbG9jYWx0ZW1wID0gZmFsc2U7CiAJCQlicmVhazsKQEAgLTM2NjUsNiArMzcwNSwxMSBAQCBS ZWxhdGlvbkJ1aWxkTG9jYWxSZWxhdGlvbihjb25zdCBjaGFyICpyZWxuYW1lLAogCQkJcmVsLT5y ZF9iYWNrZW5kID0gUHJvY051bWJlckZvclRlbXBSZWxhdGlvbnMoKTsKIAkJCXJlbC0+cmRfaXNs b2NhbHRlbXAgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgUkVMUEVSU0lTVEVOQ0VfR0xPQkFM X1RFTVA6CisJCQlBc3NlcnQoIWlzVGVtcE9yVGVtcFRvYXN0TmFtZXNwYWNlKHJlbG5hbWVzcGFj ZSkpOworCQkJcmVsLT5yZF9iYWNrZW5kID0gUHJvY051bWJlckZvclRlbXBSZWxhdGlvbnMoKTsK KwkJCXJlbC0+cmRfaXNsb2NhbHRlbXAgPSBmYWxzZTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0Ogog CQkJZWxvZyhFUlJPUiwgImludmFsaWQgcmVscGVyc2lzdGVuY2U6ICVjIiwgcmVscGVyc2lzdGVu Y2UpOwogCQkJYnJlYWs7CkBAIC0zOTAxLDcgKzM5NDYsOCBAQCBSZWxhdGlvblNldE5ld1JlbGZp bGVudW1iZXIoUmVsYXRpb24gcmVsYXRpb24sIGNoYXIgcGVyc2lzdGVuY2UpCiAJCS8qIGhhbmRs ZSB0aGVzZSBkaXJlY3RseSwgYXQgbGVhc3QgZm9yIG5vdyAqLwogCQlTTWdyUmVsYXRpb24gc3Jl bDsKIAotCQlzcmVsID0gUmVsYXRpb25DcmVhdGVTdG9yYWdlKG5ld3Jsb2NhdG9yLCBwZXJzaXN0 ZW5jZSwgdHJ1ZSk7CisJCXNyZWwgPSBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2UocmVsYXRpb24tPnJk X2lkLCBuZXdybG9jYXRvciwKKwkJCQkJCQkJCSBwZXJzaXN0ZW5jZSwgdHJ1ZSk7CiAJCXNtZ3Jj bG9zZShzcmVsKTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsZmlsZW51bWJlcm1hcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51 bWJlcm1hcC5jCmluZGV4IDZmOTcwZmFmYTA1Li4xZjlmZTg3ZWJiMCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsZmlsZW51bWJlcm1hcC5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3JlbGZpbGVudW1iZXJtYXAuYwpAQCAtMjEzLDcgKzIxMyw4IEBAIFJlbGlk QnlSZWxmaWxlbnVtYmVyKE9pZCByZWx0YWJsZXNwYWNlLCBSZWxGaWxlTnVtYmVyIHJlbGZpbGVu dW1iZXIpCiAJCXsKIAkJCUZvcm1fcGdfY2xhc3MgY2xhc3Nmb3JtID0gKEZvcm1fcGdfY2xhc3Mp IEdFVFNUUlVDVChudHApOwogCi0JCQlpZiAoY2xhc3Nmb3JtLT5yZWxwZXJzaXN0ZW5jZSA9PSBS RUxQRVJTSVNURU5DRV9URU1QKQorCQkJaWYgKGNsYXNzZm9ybS0+cmVscGVyc2lzdGVuY2UgPT0g UkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQkJCWNsYXNzZm9ybS0+cmVscGVyc2lzdGVuY2UgPT0g UkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApCiAJCQkJY29udGludWU7CiAKIAkJCWlmIChmb3Vu ZCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYW1jaGVjay9wZ19hbWNoZWNrLmMgYi9zcmMvYmlu L3BnX2FtY2hlY2svcGdfYW1jaGVjay5jCmluZGV4IDA5YmEwNTk2NDAwLi4yNzQ5N2Q4YmNhMyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19hbWNoZWNrL3BnX2FtY2hlY2suYworKysgYi9zcmMvYmlu L3BnX2FtY2hlY2svcGdfYW1jaGVjay5jCkBAIC04NTksNyArODU5LDggQEAgcHJlcGFyZV9oZWFw X2NvbW1hbmQoUFFFeHBCdWZmZXIgc3FsLCBSZWxhdGlvbkluZm8gKnJlbCwgUEdjb25uICpjb25u KQogCiAJYXBwZW5kUFFFeHBCdWZmZXIoc3FsLAogCQkJCQkgICJcbikgdiBXSEVSRSBjLm9pZCA9 ICV1ICIKLQkJCQkJICAiQU5EIGMucmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVM UEVSU0lTVEVOQ0VfVEVNUCksCisJCQkJCSAgIkFORCBjLnJlbHBlcnNpc3RlbmNlICE9ICIgQ3Bw QXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX1RFTVApICIgIgorCQkJCQkgICJBTkQgYy5yZWxwZXJz aXN0ZW5jZSAhPSAiIENwcEFzU3RyaW5nMihSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCksCiAJ CQkJCSAgcmVsLT5yZWxvaWQpOwogfQogCkBAIC04OTMsNiArODk0LDcgQEAgcHJlcGFyZV9idHJl ZV9jb21tYW5kKFBRRXhwQnVmZmVyIHNxbCwgUmVsYXRpb25JbmZvICpyZWwsIFBHY29ubiAqY29u bikKIAkJCQkJCSAgIldIRVJFIGMub2lkID0gJXUgIgogCQkJCQkJICAiQU5EIGMub2lkID0gaS5p bmRleHJlbGlkICIKIAkJCQkJCSAgIkFORCBjLnJlbHBlcnNpc3RlbmNlICE9ICIgQ3BwQXNTdHJp bmcyKFJFTFBFUlNJU1RFTkNFX1RFTVApICIgIgorCQkJCQkJICAiQU5EIGMucmVscGVyc2lzdGVu Y2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApICIgIgogCQkJ CQkJICAiQU5EIGkuaW5kaXNyZWFkeSBBTkQgaS5pbmRpc3ZhbGlkIEFORCBpLmluZGlzbGl2ZSIs CiAJCQkJCQkgIHJlbC0+ZGF0aW5mby0+YW1jaGVja19zY2hlbWEsCiAJCQkJCQkgIChvcHRzLmhl YXBhbGxpbmRleGVkID8gInRydWUiIDogImZhbHNlIiksCkBAIC05MDgsNiArOTEwLDcgQEAgcHJl cGFyZV9idHJlZV9jb21tYW5kKFBRRXhwQnVmZmVyIHNxbCwgUmVsYXRpb25JbmZvICpyZWwsIFBH Y29ubiAqY29ubikKIAkJCQkJCSAgIldIRVJFIGMub2lkID0gJXUgIgogCQkJCQkJICAiQU5EIGMu b2lkID0gaS5pbmRleHJlbGlkICIKIAkJCQkJCSAgIkFORCBjLnJlbHBlcnNpc3RlbmNlICE9ICIg Q3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX1RFTVApICIgIgorCQkJCQkJICAiQU5EIGMucmVs cGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAp ICIgIgogCQkJCQkJICAiQU5EIGkuaW5kaXNyZWFkeSBBTkQgaS5pbmRpc3ZhbGlkIEFORCBpLmlu ZGlzbGl2ZSIsCiAJCQkJCQkgIHJlbC0+ZGF0aW5mby0+YW1jaGVja19zY2hlbWEsCiAJCQkJCQkg IChvcHRzLmhlYXBhbGxpbmRleGVkID8gInRydWUiIDogImZhbHNlIiksCkBAIC0xOTU0LDggKzE5 NTcsOSBAQCBjb21waWxlX3JlbGF0aW9uX2xpc3Rfb25lX2RiKFBHY29ubiAqY29ubiwgU2ltcGxl UHRyTGlzdCAqcmVsYXRpb25zLAogCSAqIHVudGlsIGZpcmluZyBvZmYgdGhlIGFtY2hlY2sgY29t bWFuZCwgYXMgdGhlIHN0YXRlIG9mIGFuIGluZGV4IG1heQogCSAqIGNoYW5nZSBieSB0aGVuLgog CSAqLwotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZzcWwsICJcbldIRVJFIGMucmVscGVyc2lzdGVu Y2UgIT0gIgotCQkJCQkJIENwcEFzU3RyaW5nMihSRUxQRVJTSVNURU5DRV9URU1QKSk7CisJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwKKwkJCQkJCSAiXG5XSEVSRSBjLnJlbHBlcnNpc3RlbmNl ICE9ICIgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCQkJCQkgIlxuQU5EIGMu cmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RF TVApKTsKIAlpZiAob3B0cy5leGNsdWRldGJsIHx8IG9wdHMuZXhjbHVkZWlkeCB8fCBvcHRzLmV4 Y2x1ZGVuc3ApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZzcWwsICJcbkFORCBlcC5wYXR0ZXJu X2lkIElTIE5VTEwiKTsKIApAQCAtMjAyNCw3ICsyMDI4LDggQEAgY29tcGlsZV9yZWxhdGlvbl9s aXN0X29uZV9kYihQR2Nvbm4gKmNvbm4sIFNpbXBsZVB0ckxpc3QgKnJlbGF0aW9ucywKIAkJCQkJ CQkJICJcbkFORCAodC5yZWxuYW1lIH4gZXAucmVsX3JlZ2V4IE9SIGVwLnJlbF9yZWdleCBJUyBO VUxMKSIKIAkJCQkJCQkJICJcbkFORCBlcC5oZWFwX29ubHkiCiAJCQkJCQkJCSAiXG5XSEVSRSBl cC5wYXR0ZXJuX2lkIElTIE5VTEwiCi0JCQkJCQkJCSAiXG5BTkQgdC5yZWxwZXJzaXN0ZW5jZSAh PSAiIENwcEFzU3RyaW5nMihSRUxQRVJTSVNURU5DRV9URU1QKSk7CisJCQkJCQkJCSAiXG5BTkQg dC5yZWxwZXJzaXN0ZW5jZSAhPSAiIENwcEFzU3RyaW5nMihSRUxQRVJTSVNURU5DRV9URU1QKQor CQkJCQkJCQkgIlxuQU5EIHQucmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVS U0lTVEVOQ0VfR0xPQkFMX1RFTVApKTsKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwKIAkJ CQkJCQkgIlxuKSIpOwogCX0KQEAgLTIwNDMsNyArMjA0OCw4IEBAIGNvbXBpbGVfcmVsYXRpb25f bGlzdF9vbmVfZGIoUEdjb25uICpjb25uLCBTaW1wbGVQdHJMaXN0ICpyZWxhdGlvbnMsCiAJCQkJ CQkJICJPTiByLm9pZCA9IGkuaW5kcmVsaWQgIgogCQkJCQkJCSAiSU5ORVIgSk9JTiBwZ19jYXRh bG9nLnBnX2NsYXNzIGMgIgogCQkJCQkJCSAiT04gaS5pbmRleHJlbGlkID0gYy5vaWQgIgotCQkJ CQkJCSAiQU5EIGMucmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVSU0lTVEVO Q0VfVEVNUCkpOworCQkJCQkJCSAiQU5EIGMucmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmlu ZzIoUkVMUEVSU0lTVEVOQ0VfVEVNUCkgIiAiCisJCQkJCQkJICJBTkQgYy5yZWxwZXJzaXN0ZW5j ZSAhPSAiIENwcEFzU3RyaW5nMihSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkpOwogCQlpZiAo b3B0cy5leGNsdWRlaWR4IHx8IG9wdHMuZXhjbHVkZW5zcCkKIAkJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZzcWwsCiAJCQkJCQkJCSAiXG5JTk5FUiBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNl IG4gIgpAQCAtMjA4Miw3ICsyMDg4LDggQEAgY29tcGlsZV9yZWxhdGlvbl9saXN0X29uZV9kYihQ R2Nvbm4gKmNvbm4sIFNpbXBsZVB0ckxpc3QgKnJlbGF0aW9ucywKIAkJCQkJCQkgIk9OIHQub2lk ID0gaS5pbmRyZWxpZCIKIAkJCQkJCQkgIlxuSU5ORVIgSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNz IGMgIgogCQkJCQkJCSAiT04gaS5pbmRleHJlbGlkID0gYy5vaWQgIgotCQkJCQkJCSAiQU5EIGMu cmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVSU0lTVEVOQ0VfVEVNUCkpOwor CQkJCQkJCSAiQU5EIGMucmVscGVyc2lzdGVuY2UgIT0gIiBDcHBBc1N0cmluZzIoUkVMUEVSU0lT VEVOQ0VfVEVNUCkgIiAiCisJCQkJCQkJICJBTkQgYy5yZWxwZXJzaXN0ZW5jZSAhPSAiIENwcEFz U3RyaW5nMihSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkpOwogCQlpZiAob3B0cy5leGNsdWRl aWR4KQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnNxbCwKIAkJCQkJCQkJICJcbkxFRlQgT1VU RVIgSk9JTiBleGNsdWRlX3BhdCBlcCAiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmNjdkYWY4NTkxMS4uNDMz YzdkZTg2YWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtMzAyNCw2ICszMDI0LDEwIEBAIG1ha2VUYWJsZURh dGFJbmZvKER1bXBPcHRpb25zICpkb3B0LCBUYWJsZUluZm8gKnRiaW5mbykKIAlpZiAodGJpbmZv LT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCiAJCXJldHVybjsKIAorCS8q IERvbid0IGR1bXAgZGF0YSBpbiBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyAqLworCWlmICh0Ymlu Zm8tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQorCQlyZXR1 cm47CisKIAkvKiBEb24ndCBkdW1wIGRhdGEgaW4gdW5sb2dnZWQgdGFibGVzLCBpZiBzbyByZXF1 ZXN0ZWQgKi8KIAlpZiAodGJpbmZvLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9V TkxPR0dFRCAmJgogCQlkb3B0LT5ub191bmxvZ2dlZF90YWJsZV9kYXRhKQpAQCAtMTcyMDUsNyAr MTcyMDksOSBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZv ICp0YmluZm8pCiAJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJDUkVBVEUgJXMlcyAlcyIsCiAJCQkJ CQkgICh0YmluZm8tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEICYm CiAJCQkJCQkgICB0YmluZm8tPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkg PwotCQkJCQkJICAiVU5MT0dHRUQgIiA6ICIiLAorCQkJCQkJICAiVU5MT0dHRUQgIiA6CisJCQkJ CQkgIHRiaW5mby0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAg PworCQkJCQkJICAiR0xPQkFMIFRFTVAgIiA6ICIiLAogCQkJCQkJICByZWx0eXBlbmFtZSwKIAkJ CQkJCSAgcXVhbHJlbG5hbWUpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvaW5m by5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL2luZm8uYwppbmRleCAzN2ZmZjkzODkyZi4uOTE5MjQ4 NTcxNTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9pbmZvLmMKKysrIGIvc3JjL2Jp bi9wZ191cGdyYWRlL2luZm8uYwpAQCAtNTAzLDYgKzUwMyw5IEBAIGdldF9yZWxfaW5mb3NfcXVl cnkodm9pZCkKIAkJCQkJICAiICAgICAgICAgT04gYy5yZWxuYW1lc3BhY2UgPSBuLm9pZCAiCiAJ CQkJCSAgIiAgV0hFUkUgcmVsa2luZCBJTiAoIiBDcHBBc1N0cmluZzIoUkVMS0lORF9SRUxBVElP TikgIiwgIgogCQkJCQkgIENwcEFzU3RyaW5nMihSRUxLSU5EX01BVFZJRVcpICIlcykgQU5EICIK KwkvKiBleGNsdWRlIGdsb2JhbCB0ZW1wb3JhcnkgdGFibGVzICovCisJCQkJCSAgIiAgICByZWxw ZXJzaXN0ZW5jZSAhPSAiCisJCQkJCSAgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX0dMT0JB TF9URU1QKSAiIEFORCAiCiAJLyogZXhjbHVkZSBwb3NzaWJsZSBvcnBoYW5lZCB0ZW1wIHRhYmxl cyAqLwogCQkJCQkgICIgICAgKChuLm5zcG5hbWUgIX4gJ15wZ190ZW1wXycgQU5EICIKIAkJCQkJ ICAiICAgICAgbi5uc3BuYW1lICF+ICdecGdfdG9hc3RfdGVtcF8nIEFORCAiCmRpZmYgLS1naXQg YS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4 IGU3MTBkYjhlMTAyLi5kYWFhOWY5ZTY5ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTIwMjYsMTMgKzIwMjYsMjMg QEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCWlm ICh0YWJsZWluZm8ucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVU5MT0dHRUQpCiAJ CQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCB0YWJsZSBcIiVzLiVzXCIi KSwKIAkJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOworCQkJZWxzZSBpZiAodGFi bGVpbmZvLnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCQkJcHJpbnRm UFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJUZW1wb3JhcnkgdGFibGUgXCIlcy4lc1wiIiksCisJCQkJ CQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKKwkJCWVsc2UgaWYgKHRhYmxlaW5mby5y ZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkKKwkJCQlwcmludGZQ UUV4cEJ1ZmZlcigmdGl0bGUsIF8oIkdsb2JhbCB0ZW1wb3JhcnkgdGFibGUgXCIlcy4lc1wiIiks CisJCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKIAkJCWVsc2UKIAkJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlRhYmxlIFwiJXMuJXNcIiIpLAogCQkJCQkJCQkgIHNj aGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CiAJCQlicmVhazsKIAkJY2FzZSBSRUxLSU5EX1ZJRVc6 Ci0JCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlZpZXcgXCIlcy4lc1wiIiksCi0JCQkJ CQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOworCQkJaWYgKHRhYmxlaW5mby5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0 aXRsZSwgXygiVGVtcG9yYXJ5IHZpZXcgXCIlcy4lc1wiIiksCisJCQkJCQkJCSAgc2NoZW1hbmFt ZSwgcmVsYXRpb25uYW1lKTsKKwkJCWVsc2UKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUs IF8oIlZpZXcgXCIlcy4lc1wiIiksCisJCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1l KTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfTUFUVklFVzoKIAkJCXByaW50ZlBRRXhwQnVm ZmVyKCZ0aXRsZSwgXygiTWF0ZXJpYWxpemVkIHZpZXcgXCIlcy4lc1wiIiksCkBAIC0yMDcwLDYg KzIwODAsMTIgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAkJCWlmICh0YWJsZWluZm8ucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVU5M T0dHRUQpCiAJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJVbmxvZ2dlZCBwYXJ0aXRp b25lZCB0YWJsZSBcIiVzLiVzXCIiKSwKIAkJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5h bWUpOworCQkJZWxzZSBpZiAodGFibGVpbmZvLnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RF TkNFX1RFTVApCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJUZW1wb3JhcnkgcGFy dGl0aW9uZWQgdGFibGUgXCIlcy4lc1wiIiksCisJCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRp b25uYW1lKTsKKwkJCWVsc2UgaWYgKHRhYmxlaW5mby5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJT SVNURU5DRV9HTE9CQUxfVEVNUCkKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIkds b2JhbCB0ZW1wb3JhcnkgcGFydGl0aW9uZWQgdGFibGUgXCIlcy4lc1wiIiksCisJCQkJCQkJCSAg c2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKIAkJCWVsc2UKIAkJCQlwcmludGZQUUV4cEJ1ZmZl cigmdGl0bGUsIF8oIlBhcnRpdGlvbmVkIHRhYmxlIFwiJXMuJXNcIiIpLAogCQkJCQkJCQkgIHNj aGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7CkBAIC00MTc4LDEwICs0MTk0LDEyIEBAIGxpc3RUYWJs ZXMoY29uc3QgY2hhciAqdGFidHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9z ZSwgYm9vbCBzaG93U3lzCiAJCQkJCQkgICIsXG4gIENBU0UgYy5yZWxwZXJzaXN0ZW5jZSAiCiAJ CQkJCQkgICJXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCkgIiBU SEVOICclcycgIgogCQkJCQkJICAiV0hFTiAiIENwcEFzU3RyaW5nMihSRUxQRVJTSVNURU5DRV9U RU1QKSAiIFRIRU4gJyVzJyAiCisJCQkJCQkgICJXSEVOICIgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJ U1RFTkNFX0dMT0JBTF9URU1QKSAiIFRIRU4gJyVzJyAiCiAJCQkJCQkgICJXSEVOICIgQ3BwQXNT dHJpbmcyKFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKSAiIFRIRU4gJyVzJyAiCiAJCQkJCQkgICJF TkQgYXMgXCIlc1wiIiwKIAkJCQkJCSAgZ2V0dGV4dF9ub29wKCJwZXJtYW5lbnQiKSwKIAkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJ0ZW1wb3JhcnkiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJnbG9i YWwgdGVtcG9yYXJ5IiksCiAJCQkJCQkgIGdldHRleHRfbm9vcCgidW5sb2dnZWQiKSwKIAkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJQZXJzaXN0ZW5jZSIpKTsKIAkJdHJhbnNsYXRlX2NvbHVtbnNbY29s c19zb19mYXJdID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcu YyBiL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcuYwppbmRleCA4NTVhNTc1NGM5OC4uZWY3ZWI4 ZWQzMjcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy92YWN1dW1pbmcuYworKysgYi9zcmMv YmluL3NjcmlwdHMvdmFjdXVtaW5nLmMKQEAgLTYyNCw3ICs2MjQsOSBAQCByZXRyaWV2ZV9vYmpl Y3RzKFBHY29ubiAqY29ubiwgdmFjdXVtaW5nT3B0aW9ucyAqdmFjb3B0cywKIAkgKi8KIAlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmY2F0YWxvZ19xdWVyeSwKIAkJCQkJCSAiIFdIRVJFIGMucmVscGVy c2lzdGVuY2UgT1BFUkFUT1IocGdfY2F0YWxvZy4hPSkgIgotCQkJCQkJIENwcEFzU3RyaW5nMihS RUxQRVJTSVNURU5DRV9URU1QKSAiXG4iKTsKKwkJCQkJCSBDcHBBc1N0cmluZzIoUkVMUEVSU0lT VEVOQ0VfVEVNUCkKKwkJCQkJCSAiXG5BTkQgYy5yZWxwZXJzaXN0ZW5jZSBPUEVSQVRPUihwZ19j YXRhbG9nLiE9KSAiCisJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9U RU1QKSAiXG4iKTsKIAogCS8qCiAJICogVXNlZCB0byBtYXRjaCB0aGUgdGFibGVzIG9yIHNjaGVt YXMgbGlzdGVkIGJ5IHRoZSB1c2VyLCBmb3IgdGhlIFdIRVJFCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL2dsb2JhbF90ZW1wLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2dsb2JhbF90 ZW1wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhkMDVjMDJmMjk3 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9nbG9iYWxfdGVtcC5oCkBA IC0wLDAgKzEsNDUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGdsb2JhbF90ZW1wLmgK KyAqCSAgR2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBtYW5hZ2VtZW50LgorICoKKyAqCisgKiBD b3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9nbG9iYWxfdGVtcC5oCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgR0xPQkFMX1RFTVBfSAorI2RlZmluZSBHTE9CQUxfVEVNUF9I CisKKyNpbmNsdWRlICJzdG9yYWdlL3JlbGZpbGVsb2NhdG9yLmgiCisjaW5jbHVkZSAidXRpbHMv cmVsLmgiCisKK2V4dGVybiB2b2lkIFRyYWNrR2xvYmFsVGVtcFJlbGF0aW9uU3RvcmFnZShPaWQg cmVsaWQsIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLAorCQkJCQkJCQkJCSAgIFByb2NOdW1iZXIg YmFja2VuZCwgYm9vbCBjcmVhdGUpOworCitleHRlcm4gdm9pZCBSZWFzc2lnbkdsb2JhbFRlbXBS ZWxhdGlvblN0b3JhZ2UoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsCisJCQkJCQkJCQkJCSAgT2lk IG5ld1JlbGlkKTsKKworZXh0ZXJuIHZvaWQgSW5pdEdsb2JhbFRlbXBSZWxhdGlvbihSZWxhdGlv biByZWxhdGlvbik7CisKK2V4dGVybiB2b2lkIEludmFsaWRhdGVHbG9iYWxUZW1wUmVsYXRpb24o T2lkIHJlbGlkKTsKKworZXh0ZXJuIHZvaWQgR2xvYmFsVGVtcFJlbGF0aW9uQ3JlYXRlZChSZWxh dGlvbiByZWxhdGlvbik7CisKK2V4dGVybiB2b2lkIEdsb2JhbFRlbXBSZWxhdGlvbkRyb3BwZWQo T2lkIHJlbGlkKTsKKworZXh0ZXJuIHZvaWQgUHJlQ29tbWl0X0dsb2JhbFRlbXBSZWxhdGlvbih2 b2lkKTsKKworZXh0ZXJuIHZvaWQgQXRFT1hhY3RfR2xvYmFsVGVtcFJlbGF0aW9uKGJvb2wgaXND b21taXQpOworCitleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9HbG9iYWxUZW1wUmVsYXRpb24oYm9v bCBpc0NvbW1pdCwKKwkJCQkJCQkJCQkgICBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCisJCQkJ CQkJCQkJICAgU3ViVHJhbnNhY3Rpb25JZCBwYXJlbnRTdWJpZCk7CisKK2V4dGVybiBib29sIElz T3RoZXJVc2luZ0dsb2JhbFRlbXBSZWxhdGlvbihPaWQgcmVsaWQpOworCitleHRlcm4gTGlzdCAq QWxsR2xvYmFsVGVtcFJlbGF0aW9uc0luVXNlKE9pZCBkYklkKTsKKworI2VuZGlmCQkJCQkJCS8q IEdMT0JBTF9URU1QX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xh c3MuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAppbmRleCAwZTJjNTM1OTFjNC4u YmYwZDhjYTdiYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY2xhc3MuaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NsYXNzLmgKQEAgLTE4NSw3ICsxODUsOCBAQCBN QUtFX1NZU0NBQ0hFKFJFTE5BTUVOU1AsIHBnX2NsYXNzX3JlbG5hbWVfbnNwX2luZGV4LCAxMjgp OwogCiAjZGVmaW5lCQkgIFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVAkncCcgLyogcmVndWxhciB0 YWJsZSAqLwogI2RlZmluZQkJICBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRAkndScgLyogdW5sb2dn ZWQgcGVybWFuZW50IHRhYmxlICovCi0jZGVmaW5lCQkgIFJFTFBFUlNJU1RFTkNFX1RFTVAJCSd0 JyAvKiB0ZW1wb3JhcnkgdGFibGUgKi8KKyNkZWZpbmUJCSAgUkVMUEVSU0lTVEVOQ0VfVEVNUAkJ J3QnIC8qIHRlbXAgdGFibGUgKGluIHRlbXAgc2NoZW1hKSAqLworI2RlZmluZQkJICBSRUxQRVJT SVNURU5DRV9HTE9CQUxfVEVNUCAnZycJLyogZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZSAqLwogCiAv KiBvbi1jb21taXQgYWN0aW9uIChvbmx5IHRlbXBvcmFyeSB0YWJsZXMgc3VwcG9ydCBkZWxldGUv ZHJvcCkgKi8KICNkZWZpbmUJCSAgUkVMT05DT01NSVRfUFJFU0VSVkVfUk9XUyAncCcgLyogZGVm YXVsdDoga2VlcCBkYXRhIG9uIGNvbW1pdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9zdG9yYWdlLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3N0b3JhZ2UuaAppbmRleCA3MGY2 MTlhNmQ2Zi4uNzgyN2M0YmE3MTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvc3Rv cmFnZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvc3RvcmFnZS5oCkBAIC0yMiw3ICsyMiw3 IEBACiAvKiBHVUMgdmFyaWFibGVzICovCiBleHRlcm4gUEdETExJTVBPUlQgaW50IHdhbF9za2lw X3RocmVzaG9sZDsKIAotZXh0ZXJuIFNNZ3JSZWxhdGlvbiBSZWxhdGlvbkNyZWF0ZVN0b3JhZ2Uo UmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsCitleHRlcm4gU01nclJlbGF0aW9uIFJlbGF0aW9uQ3Jl YXRlU3RvcmFnZShPaWQgcmVsaWQsIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLAogCQkJCQkJCQkJ CSAgY2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkJCQkgIGJvb2wgcmVnaXN0ZXJfZGVsZXRl KTsKIGV4dGVybiB2b2lkIFJlbGF0aW9uRHJvcFN0b3JhZ2UoUmVsYXRpb24gcmVsKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHdsb2NrbGlzdC5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sd2xvY2tsaXN0LmgKaW5kZXggZDdlYjY0OGJkMjcuLjU1N2ZmNGRjYmUzIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9z dG9yYWdlL2x3bG9ja2xpc3QuaApAQCAtODksNiArODksNyBAQCBQR19MV0xPQ0soNTQsIFdhaXRM U04pCiBQR19MV0xPQ0soNTUsIExvZ2ljYWxEZWNvZGluZ0NvbnRyb2wpCiBQR19MV0xPQ0soNTYs IERhdGFDaGVja3N1bXNXb3JrZXIpCiBQR19MV0xPQ0soNTcsIEFpb1dvcmtlckNvbnRyb2wpCitQ R19MV0xPQ0soNTgsIEdsb2JhbFRlbXBSZWxDb250cm9sKQogCiAvKgogICogVGhlcmUgYWxzbyBl eGlzdCBzZXZlcmFsIGJ1aWx0LWluIExXTG9jayB0cmFuY2hlcy4gIEFzIHdpdGggdGhlIHByZWRl ZmluZWQKQEAgLTE0MCwzICsxNDEsNSBAQCBQR19MV0xPQ0tUUkFOQ0hFKFhBQ1RfU0xSVSwgWGFj dFNMUlUpCiBQR19MV0xPQ0tUUkFOQ0hFKFBBUkFMTEVMX1ZBQ1VVTV9EU0EsIFBhcmFsbGVsVmFj dXVtRFNBKQogUEdfTFdMT0NLVFJBTkNIRShBSU9fVVJJTkdfQ09NUExFVElPTiwgQWlvVXJpbmdD b21wbGV0aW9uKQogUEdfTFdMT0NLVFJBTkNIRShTSE1FTV9JTkRFWCwgU2htZW1JbmRleCkKK1BH X0xXTE9DS1RSQU5DSEUoR0xPQkFMX1RFTVBfUkVMX0RTQSwgR2xvYmFsVGVtcFJlbERTQSkKK1BH X0xXTE9DS1RSQU5DSEUoR0xPQkFMX1RFTVBfUkVMX0hBU0gsIEdsb2JhbFRlbXBSZWxIYXNoKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAppbmRleCA5YWQ2MTkwODBiZS4uODkzNzhkMWQ4 N2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCkBAIC04OCwzICs4OCw2IEBAIFBH X1NITUVNX1NVQlNZU1RFTShEYXRhQ2hlY2tzdW1zU2htZW1DYWxsYmFja3MpCiAKIC8qIEFJTyBz dWJzeXN0ZW0uIFRoaXMgZGVsZWdhdGVzIHRvIHRoZSBtZXRob2Qtc3BlY2lmaWMgY2FsbGJhY2tz ICovCiBQR19TSE1FTV9TVUJTWVNURU0oQWlvU2htZW1DYWxsYmFja3MpCisKKy8qIGdsb2JhbCB0 ZW1wb3JhcnkgcmVsYXRpb24gdXNhZ2UgdGFibGUgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShHbG9i YWxUZW1wUmVsU2htZW1DYWxsYmFja3MpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IDg5YzE1OWIxMzNmLi43OWZjMGM2 OWM1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcmVsLmgKQEAgLTU4LDcgKzU4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsYXRpb25E YXRhCiAJU01nclJlbGF0aW9uIHJkX3NtZ3I7CQkvKiBjYWNoZWQgZmlsZSBoYW5kbGUsIG9yIE5V TEwgKi8KIAlpbnQJCQlyZF9yZWZjbnQ7CQkvKiByZWZlcmVuY2UgY291bnQgKi8KIAlQcm9jTnVt YmVyCXJkX2JhY2tlbmQ7CQkvKiBvd25pbmcgYmFja2VuZCdzIHByb2MgbnVtYmVyLCBpZiB0ZW1w IHJlbCAqLwotCWJvb2wJCXJkX2lzbG9jYWx0ZW1wOyAvKiByZWwgaXMgYSB0ZW1wIHJlbCBvZiB0 aGlzIHNlc3Npb24gKi8KKwlib29sCQlyZF9pc2xvY2FsdGVtcDsgLyogcmVsIGlzIGEgbG9jYWwg dGVtcCByZWwgb2YgdGhpcyBzZXNzaW9uICovCiAJYm9vbAkJcmRfaXNuYWlsZWQ7CS8qIHJlbCBp cyBuYWlsZWQgaW4gY2FjaGUgKi8KIAlib29sCQlyZF9pc3ZhbGlkOwkJLyogcmVsY2FjaGUgZW50 cnkgaXMgdmFsaWQgKi8KIAlib29sCQlyZF9pbmRleHZhbGlkOwkvKiBpcyByZF9pbmRleGxpc3Qg dmFsaWQ/IChhbHNvIHJkX3BraW5kZXggYW5kCkBAIC02NDYsMTMgKzY0NiwxNSBAQCBSZWxhdGlv bkNsb3NlU21ncihSZWxhdGlvbiByZWxhdGlvbikKICAqCQlUcnVlIGlmIHJlbGF0aW9uJ3MgcGFn ZXMgYXJlIHN0b3JlZCBpbiBsb2NhbCBidWZmZXJzLgogICovCiAjZGVmaW5lIFJlbGF0aW9uVXNl c0xvY2FsQnVmZmVycyhyZWxhdGlvbikgXAotCSgocmVsYXRpb24pLT5yZF9yZWwtPnJlbHBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJKChyZWxhdGlvbiktPnJkX3JlbC0+cmVs cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCB8fCBcCisJIChyZWxhdGlvbiktPnJk X3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApCiAKIC8q CiAgKiBSRUxBVElPTl9JU19MT0NBTAotICoJCUlmIGEgcmVsIGlzIGVpdGhlciB0ZW1wIG9yIG5l d2x5IGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24sCi0gKgkJaXQgY2FuIGJlIGFz c3VtZWQgdG8gYmUgYWNjZXNzaWJsZSBvbmx5IHRvIHRoZSBjdXJyZW50IGJhY2tlbmQuCi0gKgkJ VGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB0byBkZWNpZGUgdGhhdCB3ZSBjYW4gc2tpcCBhY3F1aXJp bmcgbG9ja3MuCisgKgkJSWYgYSByZWwgaXMgZWl0aGVyIGxvY2FsIHRlbXAgb3IgbmV3bHkgY3Jl YXRlZCBpbiB0aGUgY3VycmVudAorICoJCXRyYW5zYWN0aW9uLCBpdCBjYW4gYmUgYXNzdW1lZCB0 byBiZSBhY2Nlc3NpYmxlIG9ubHkgdG8gdGhlIGN1cnJlbnQKKyAqCQliYWNrZW5kLiAgVGhpcyBp cyB0eXBpY2FsbHkgdXNlZCB0byBkZWNpZGUgdGhhdCB3ZSBjYW4gc2tpcCBhY3F1aXJpbmcKKyAq CQlsb2Nrcy4KICAqCiAgKiBCZXdhcmUgb2YgbXVsdGlwbGUgZXZhbCBvZiBhcmd1bWVudAogICov CkBAIC02NjIsNyArNjY0LDggQEAgUmVsYXRpb25DbG9zZVNtZ3IoUmVsYXRpb24gcmVsYXRpb24p CiAKIC8qCiAgKiBSRUxBVElPTl9JU19PVEhFUl9URU1QCi0gKgkJVGVzdCBmb3IgYSB0ZW1wb3Jh cnkgcmVsYXRpb24gdGhhdCBiZWxvbmdzIHRvIHNvbWUgb3RoZXIgc2Vzc2lvbi4KKyAqCQlUZXN0 IGZvciBhIGxvY2FsIHRlbXBvcmFyeSByZWxhdGlvbiB0aGF0IGJlbG9uZ3MgdG8gc29tZSBvdGhl cgorICoJCXNlc3Npb24uCiAgKgogICogUmVhZGluZyBhbm90aGVyIHNlc3Npb24ncyB0ZW1wLXRh YmxlIGRhdGEgdGhyb3VnaCBuZXZlciB3b3JrcyByaWdodDoKICAqIHRoZSBvd25pbmcgc2Vzc2lv biBrZWVwcyB0aGUgZGF0YSBpbiBpdHMgcHJpdmF0ZSBsb2NhbCBidWZmZXIgcG9vbCwKQEAgLTY3 OSw2ICs2ODIsMTMgQEAgUmVsYXRpb25DbG9zZVNtZ3IoUmVsYXRpb24gcmVsYXRpb24pCiAJKChy ZWxhdGlvbiktPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAm JiBcCiAJICEocmVsYXRpb24pLT5yZF9pc2xvY2FsdGVtcCkKIAorLyoKKyAqIFJFTEFUSU9OX0lT X0dMT0JBTF9URU1QCisgKgkJVHJ1ZSBpZiB0aGUgcmVsYXRpb24gaXMgYSBnbG9iYWwgdGVtcG9y YXJ5IHJlbGF0aW9uLgorICovCisjZGVmaW5lIFJFTEFUSU9OX0lTX0dMT0JBTF9URU1QKHJlbGF0 aW9uKSBcCisJKChyZWxhdGlvbiktPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lT VEVOQ0VfR0xPQkFMX1RFTVApCisKIAogLyoKICAqIFJlbGF0aW9uSXNTY2FubmFibGUKQEAgLTcy Nyw1ICs3MzcsNiBAQCBSZWxhdGlvbkNsb3NlU21ncihSZWxhdGlvbiByZWxhdGlvbikKIC8qIHJv dXRpbmVzIGluIHV0aWxzL2NhY2hlL3JlbGNhY2hlLmMgKi8KIGV4dGVybiB2b2lkIFJlbGF0aW9u SW5jcmVtZW50UmVmZXJlbmNlQ291bnQoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIFJlbGF0 aW9uRGVjcmVtZW50UmVmZXJlbmNlQ291bnQoUmVsYXRpb24gcmVsKTsKK2V4dGVybiB2b2lkIFJl bGF0aW9uTWFya0ludmFsaWQoT2lkIHJlbGlkKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJFTF9IICov CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0 IGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2dsb2JhbC10ZW1wLm91dApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWFjOGVjY2JiYTYKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0CkBAIC0wLDAg KzEsMjUyIEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogaW5zMSBpbnMyIHNlbDEgc2VsMgorc3RlcCBpbnMxOiBJTlNFUlQgSU5UTyB0 bXAgVkFMVUVTICgxLCAnczEnKTsKK3N0ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAo MSwgJ3MyJyk7CitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZhbAorLS0tKy0t LQorICAxfHMxIAorKDEgcm93KQorCitzdGVwIHNlbDI6IFNFTEVDVCAqIEZST00gdG1wOwora2V5 fHZhbAorLS0tKy0tLQorICAxfHMyIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9u OiBpbnMxcDEgaW5zMXAyIGluczJwMSBpbnMycDIgc2VsMXAgc2VsMnAKK3N0ZXAgaW5zMXAxOiBJ TlNFUlQgSU5UTyB0bXBfcGFydGVkIFZBTFVFUyAoMSwgJ3MxIHAxJyk7CitzdGVwIGluczFwMjog SU5TRVJUIElOVE8gdG1wX3BhcnRlZCBWQUxVRVMgKDIsICdzMSBwMicpOworc3RlcCBpbnMycDE6 IElOU0VSVCBJTlRPIHRtcF9wYXJ0ZWQgVkFMVUVTICgxLCAnczIgcDEnKTsKK3N0ZXAgaW5zMnAy OiBJTlNFUlQgSU5UTyB0bXBfcGFydGVkIFZBTFVFUyAoMiwgJ3MyIHAyJyk7CitzdGVwIHNlbDFw OiBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdG1wX3BhcnRlZDsKK3RhYmxlb2lk fGtleXx2YWwgIAorLS0tLS0tLS0rLS0tKy0tLS0tCit0bXBfcDEgIHwgIDF8czEgcDEKK3RtcF9w MiAgfCAgMnxzMSBwMgorKDIgcm93cykKKworc3RlcCBzZWwycDogU0VMRUNUIHRhYmxlb2lkOjpy ZWdjbGFzcywgKiBGUk9NIHRtcF9wYXJ0ZWQ7Cit0YWJsZW9pZHxrZXl8dmFsICAKKy0tLS0tLS0t Ky0tLSstLS0tLQordG1wX3AxICB8ICAxfHMyIHAxCit0bXBfcDIgIHwgIDJ8czIgcDIKKygyIHJv d3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGluczEgYjIgaW5zMiBzZWwxIHNlbDIgYzIg c2VsMSBzZWwyCitzdGVwIGluczE6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdzMScpOwor c3RlcCBiMjogQkVHSU47CitzdGVwIGluczI6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdz MicpOworc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwKKy0tLSstLS0KKyAg MXxzMSAKKygxIHJvdykKKworc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwK Ky0tLSstLS0KKyAgMXxzMiAKKygxIHJvdykKKworc3RlcCBjMjogQ09NTUlUOworc3RlcCBzZWwx OiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwKKy0tLSstLS0KKyAgMXxzMSAKKygxIHJvdykK Kworc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwKKy0tLSstLS0KKyAgMXxz MiAKKygxIHJvdykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogaW5zMSBiMiBpbnMyIHNlbDEg c2VsMiByMiBzZWwxIHNlbDIKK3N0ZXAgaW5zMTogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwg J3MxJyk7CitzdGVwIGIyOiBCRUdJTjsKK3N0ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1wIFZBTFVF UyAoMSwgJ3MyJyk7CitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZhbAorLS0t Ky0tLQorICAxfHMxIAorKDEgcm93KQorCitzdGVwIHNlbDI6IFNFTEVDVCAqIEZST00gdG1wOwor a2V5fHZhbAorLS0tKy0tLQorICAxfHMyIAorKDEgcm93KQorCitzdGVwIHIyOiBST0xMQkFDSzsK K3N0ZXAgc2VsMTogU0VMRUNUICogRlJPTSB0bXA7CitrZXl8dmFsCistLS0rLS0tCisgIDF8czEg CisoMSByb3cpCisKK3N0ZXAgc2VsMjogU0VMRUNUICogRlJPTSB0bXA7CitrZXl8dmFsCistLS0r LS0tCisoMCByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBpbnMxIGIyIGluczIgc2Vs MSBzZWwyIHNwMiByMiBzZWwxIHNlbDIKK3N0ZXAgaW5zMTogSU5TRVJUIElOVE8gdG1wIFZBTFVF UyAoMSwgJ3MxJyk7CitzdGVwIGIyOiBCRUdJTjsKK3N0ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1w IFZBTFVFUyAoMSwgJ3MyJyk7CitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZh bAorLS0tKy0tLQorICAxfHMxIAorKDEgcm93KQorCitzdGVwIHNlbDI6IFNFTEVDVCAqIEZST00g dG1wOwora2V5fHZhbAorLS0tKy0tLQorICAxfHMyIAorKDEgcm93KQorCitzdGVwIHNwMjogU0FW RVBPSU5UIHNwOworc3RlcCByMjogUk9MTEJBQ0s7CitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00g dG1wOwora2V5fHZhbAorLS0tKy0tLQorICAxfHMxIAorKDEgcm93KQorCitzdGVwIHNlbDI6IFNF TEVDVCAqIEZST00gdG1wOwora2V5fHZhbAorLS0tKy0tLQorKDAgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogaW5zMSBiMiBzcDIgaW5zMiBzZWwxIHNlbDIgcnNwMiBzZWwxIHNlbDIg cjIgc2VsMSBzZWwyCitzdGVwIGluczE6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdzMScp Oworc3RlcCBiMjogQkVHSU47CitzdGVwIHNwMjogU0FWRVBPSU5UIHNwOworc3RlcCBpbnMyOiBJ TlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsKK3N0ZXAgc2VsMTogU0VMRUNUICogRlJP TSB0bXA7CitrZXl8dmFsCistLS0rLS0tCisgIDF8czEgCisoMSByb3cpCisKK3N0ZXAgc2VsMjog U0VMRUNUICogRlJPTSB0bXA7CitrZXl8dmFsCistLS0rLS0tCisgIDF8czIgCisoMSByb3cpCisK K3N0ZXAgcnNwMjogUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwOworc3RlcCBzZWwxOiBTRUxFQ1Qg KiBGUk9NIHRtcDsKK2tleXx2YWwKKy0tLSstLS0KKyAgMXxzMSAKKygxIHJvdykKKworc3RlcCBz ZWwyOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwKKy0tLSstLS0KKygwIHJvd3MpCisKK3N0 ZXAgcjI6IFJPTExCQUNLOworc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwK Ky0tLSstLS0KKyAgMXxzMSAKKygxIHJvdykKKworc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRt cDsKK2tleXx2YWwKKy0tLSstLS0KKygwIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IGluczEgYjIgaW5zMiBzcDIgdDIgcnNwMiBzZWwxIHNlbDIgcjIgc2VsMSBzZWwyCitzdGVwIGlu czE6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdzMScpOworc3RlcCBiMjogQkVHSU47Citz dGVwIGluczI6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdzMicpOworc3RlcCBzcDI6IFNB VkVQT0lOVCBzcDsKK3N0ZXAgdDI6IFRSVU5DQVRFIHRtcDsKK3N0ZXAgcnNwMjogUk9MTEJBQ0sg VE8gU0FWRVBPSU5UIHNwOworc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWwK Ky0tLSstLS0KKyAgMXxzMSAKKygxIHJvdykKKworc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRt cDsKK2tleXx2YWwKKy0tLSstLS0KKyAgMXxzMiAKKygxIHJvdykKKworc3RlcCByMjogUk9MTEJB Q0s7CitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZhbAorLS0tKy0tLQorICAx fHMxIAorKDEgcm93KQorCitzdGVwIHNlbDI6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZhbAor LS0tKy0tLQorKDAgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogY3JlYXRlMSBpbnMx XzIgYWx0ZXIxYSBhbHRlcjFiIGluczJfMiBzZWx0eXBlMSBzZWx0eXBlMiBkcm9wMQorc3RlcCBj cmVhdGUxOiBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoa2V5IGludCwgdmFsIHRleHQp Oworc3RlcCBpbnMxXzI6IElOU0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxLCAnczEnKTsKK3N0ZXAg YWx0ZXIxYTogQUxURVIgVEFCTEUgdG1wMiBBTFRFUiBDT0xVTU4ga2V5IFNFVCBEQVRBIFRZUEUg bnVtZXJpYzsKK3N0ZXAgYWx0ZXIxYjogQUxURVIgVEFCTEUgdG1wMiBBTFRFUiBDT0xVTU4gdmFs IFNFVCBOT1QgTlVMTDsKK3N0ZXAgaW5zMl8yOiBJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSwg J3MyJyk7CitzdGVwIHNlbHR5cGUxOiBTRUxFQ1Qga2V5LCBwZ190eXBlb2Yoa2V5KSwgdmFsIEZS T00gdG1wMjsKK2tleXxwZ190eXBlb2Z8dmFsCistLS0rLS0tLS0tLS0tKy0tLQorICAxfG51bWVy aWMgIHxzMSAKKygxIHJvdykKKworc3RlcCBzZWx0eXBlMjogU0VMRUNUIGtleSwgcGdfdHlwZW9m KGtleSksIHZhbCBGUk9NIHRtcDI7CitrZXl8cGdfdHlwZW9mfHZhbAorLS0tKy0tLS0tLS0tLSst LS0KKyAgMXxudW1lcmljICB8czIgCisoMSByb3cpCisKK3N0ZXAgZHJvcDE6IERST1AgVEFCTEUg dG1wMjsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGNyZWF0ZTEgaW5zMV8yIGluczJfMiBhbHRl cjFhIGFsdGVyMWIgc2VsdHlwZTEgc2VsdHlwZTIgZHJvcDEKK3N0ZXAgY3JlYXRlMTogQ1JFQVRF IEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGtleSBpbnQsIHZhbCB0ZXh0KTsKK3N0ZXAgaW5zMV8y OiBJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSwgJ3MxJyk7CitzdGVwIGluczJfMjogSU5TRVJU IElOVE8gdG1wMiBWQUxVRVMgKDEsICdzMicpOworc3RlcCBhbHRlcjFhOiBBTFRFUiBUQUJMRSB0 bXAyIEFMVEVSIENPTFVNTiBrZXkgU0VUIERBVEEgVFlQRSBudW1lcmljOworRVJST1I6ICBjYW5u b3QgcmV3cml0ZSBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlICJ0bXAyIiBiZWNhdXNlIGl0IGlzIGJl aW5nIHVzZWQgaW4gYW5vdGhlciBzZXNzaW9uCitzdGVwIGFsdGVyMWI6IEFMVEVSIFRBQkxFIHRt cDIgQUxURVIgQ09MVU1OIHZhbCBTRVQgTk9UIE5VTEw7CitFUlJPUjogIGNhbm5vdCBhZGQgb3Ig YWx0ZXIgY29uc3RyYWludHMgb2YgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZSAidG1wMiIgYmVjYXVz ZSBpdCBpcyBiZWluZyB1c2VkIGluIGFub3RoZXIgc2Vzc2lvbgorc3RlcCBzZWx0eXBlMTogU0VM RUNUIGtleSwgcGdfdHlwZW9mKGtleSksIHZhbCBGUk9NIHRtcDI7CitrZXl8cGdfdHlwZW9mfHZh bAorLS0tKy0tLS0tLS0tLSstLS0KKyAgMXxpbnRlZ2VyICB8czEgCisoMSByb3cpCisKK3N0ZXAg c2VsdHlwZTI6IFNFTEVDVCBrZXksIHBnX3R5cGVvZihrZXkpLCB2YWwgRlJPTSB0bXAyOwora2V5 fHBnX3R5cGVvZnx2YWwKKy0tLSstLS0tLS0tLS0rLS0tCisgIDF8aW50ZWdlciAgfHMyIAorKDEg cm93KQorCitzdGVwIGRyb3AxOiBEUk9QIFRBQkxFIHRtcDI7CisKK3N0YXJ0aW5nIHBlcm11dGF0 aW9uOiBjcmVhdGUxZHIgaW5zMV8yIGluczJfMiBkcm9wMSBjcmVhdGUxZHIgaW5zMV8yIGluczJf MiBkcm9wMQorc3RlcCBjcmVhdGUxZHI6IENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChr ZXkgaW50LCB2YWwgdGV4dCkgT04gQ09NTUlUIERFTEVURSBST1dTOworc3RlcCBpbnMxXzI6IElO U0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxLCAnczEnKTsKK3N0ZXAgaW5zMl8yOiBJTlNFUlQgSU5U TyB0bXAyIFZBTFVFUyAoMSwgJ3MyJyk7CitzdGVwIGRyb3AxOiBEUk9QIFRBQkxFIHRtcDI7Citz dGVwIGNyZWF0ZTFkcjogQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGtleSBpbnQsIHZh bCB0ZXh0KSBPTiBDT01NSVQgREVMRVRFIFJPV1M7CitzdGVwIGluczFfMjogSU5TRVJUIElOVE8g dG1wMiBWQUxVRVMgKDEsICdzMScpOworc3RlcCBpbnMyXzI6IElOU0VSVCBJTlRPIHRtcDIgVkFM VUVTICgxLCAnczInKTsKK3N0ZXAgZHJvcDE6IERST1AgVEFCTEUgdG1wMjsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUgYi9zcmMvdGVzdC9pc29sYXRp b24vaXNvbGF0aW9uX3NjaGVkdWxlCmluZGV4IGI4ZWJlOTI1NTNjLi43ZDFhYWNlYzI2NyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQorKysgYi9zcmMv dGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCkBAIC0xMjgsMyArMTI4LDQgQEAgdGVz dDogbWF0dmlldy13cml0ZS1za2V3CiB0ZXN0OiBsb2NrLW5vd2FpdAogdGVzdDogZm9yLXBvcnRp b24tb2YKIHRlc3Q6IGRkbC1kZXBlbmRlbmN5LWxvY2tpbmcKK3Rlc3Q6IGdsb2JhbC10ZW1wCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFsLXRlbXAuc3BlYyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYjI0MjQyNmZlNQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCkBAIC0wLDAgKzEsNjAgQEAK KyMgVGVzdCBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucworCitzZXR1cCB7CisgIENSRUFURSBH TE9CQUwgVEVNUCBUQUJMRSB0bXAgKGtleSBpbnQsIHZhbCB0ZXh0KTsKKworICBDUkVBVEUgR0xP QkFMIFRFTVAgVEFCTEUgdG1wX3BhcnRlZCAoa2V5IGludCwgdmFsIHRleHQpIFBBUlRJVElPTiBC WSBMSVNUIChrZXkpOworICBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wX3AxIFBBUlRJVElP TiBPRiB0bXBfcGFydGVkIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgR0xPQkFMIFRFTVAg VEFCTEUgdG1wX3AyIFBBUlRJVElPTiBPRiB0bXBfcGFydGVkIEZPUiBWQUxVRVMgSU4gKCgyKSwg KDMpKTsKK30KKwordGVhcmRvd24geworICBEUk9QIFRBQkxFIHRtcCwgdG1wX3BhcnRlZDsKK30K Kworc2Vzc2lvbiBzMQorc3RlcCBpbnMxIHsgSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3Mx Jyk7IH0KK3N0ZXAgaW5zMXAxIHsgSU5TRVJUIElOVE8gdG1wX3BhcnRlZCBWQUxVRVMgKDEsICdz MSBwMScpOyB9CitzdGVwIGluczFwMiB7IElOU0VSVCBJTlRPIHRtcF9wYXJ0ZWQgVkFMVUVTICgy LCAnczEgcDInKTsgfQorc3RlcCBzZWwxIHsgU0VMRUNUICogRlJPTSB0bXA7IH0KK3N0ZXAgc2Vs MXAgeyBTRUxFQ1QgdGFibGVvaWQ6OnJlZ2NsYXNzLCAqIEZST00gdG1wX3BhcnRlZDsgfQorc3Rl cCBjcmVhdGUxIHsgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGtleSBpbnQsIHZhbCB0 ZXh0KTsgfQorc3RlcCBjcmVhdGUxZHIgeyBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAo a2V5IGludCwgdmFsIHRleHQpIE9OIENPTU1JVCBERUxFVEUgUk9XUzsgfQorc3RlcCBpbnMxXzIg eyBJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSwgJ3MxJyk7IH0KK3N0ZXAgYWx0ZXIxYSB7IEFM VEVSIFRBQkxFIHRtcDIgQUxURVIgQ09MVU1OIGtleSBTRVQgREFUQSBUWVBFIG51bWVyaWM7IH0K K3N0ZXAgYWx0ZXIxYiB7IEFMVEVSIFRBQkxFIHRtcDIgQUxURVIgQ09MVU1OIHZhbCBTRVQgTk9U IE5VTEw7IH0KK3N0ZXAgc2VsdHlwZTEgeyBTRUxFQ1Qga2V5LCBwZ190eXBlb2Yoa2V5KSwgdmFs IEZST00gdG1wMjsgfQorc3RlcCBkcm9wMSB7IERST1AgVEFCTEUgdG1wMjsgfQorCitzZXNzaW9u IHMyCitzdGVwIGIyIHsgQkVHSU47IH0KK3N0ZXAgaW5zMiB7IElOU0VSVCBJTlRPIHRtcCBWQUxV RVMgKDEsICdzMicpOyB9CitzdGVwIGluczJwMSB7IElOU0VSVCBJTlRPIHRtcF9wYXJ0ZWQgVkFM VUVTICgxLCAnczIgcDEnKTsgfQorc3RlcCBpbnMycDIgeyBJTlNFUlQgSU5UTyB0bXBfcGFydGVk IFZBTFVFUyAoMiwgJ3MyIHAyJyk7IH0KK3N0ZXAgc2VsMiB7IFNFTEVDVCAqIEZST00gdG1wOyB9 CitzdGVwIHNlbDJwIHsgU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIHRtcF9wYXJ0 ZWQ7IH0KK3N0ZXAgdDIgeyBUUlVOQ0FURSB0bXA7IH0KK3N0ZXAgYzIgeyBDT01NSVQ7IH0KK3N0 ZXAgcjIgeyBST0xMQkFDSzsgfQorc3RlcCBzcDIgeyBTQVZFUE9JTlQgc3A7IH0KK3N0ZXAgcnNw MiB7IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcDsgfQorc3RlcCBpbnMyXzIgeyBJTlNFUlQgSU5U TyB0bXAyIFZBTFVFUyAoMSwgJ3MyJyk7IH0KK3N0ZXAgc2VsdHlwZTIgeyBTRUxFQ1Qga2V5LCBw Z190eXBlb2Yoa2V5KSwgdmFsIEZST00gdG1wMjsgfQorCisjIEJhc2ljIGVmZmVjdHMKK3Blcm11 dGF0aW9uIGluczEgaW5zMiBzZWwxIHNlbDIKK3Blcm11dGF0aW9uIGluczFwMSBpbnMxcDIgaW5z MnAxIGluczJwMiBzZWwxcCBzZWwycAorCisjIFRlc3Qgcm9sbGJhY2sgb2YgR1RUIGluaXRpYWxp emF0aW9uCitwZXJtdXRhdGlvbiBpbnMxIGIyIGluczIgc2VsMSBzZWwyIGMyIHNlbDEgc2VsMgor cGVybXV0YXRpb24gaW5zMSBiMiBpbnMyIHNlbDEgc2VsMiByMiBzZWwxIHNlbDIKK3Blcm11dGF0 aW9uIGluczEgYjIgaW5zMiBzZWwxIHNlbDIgc3AyIHIyIHNlbDEgc2VsMgorcGVybXV0YXRpb24g aW5zMSBiMiBzcDIgaW5zMiBzZWwxIHNlbDIgcnNwMiBzZWwxIHNlbDIgcjIgc2VsMSBzZWwyCitw ZXJtdXRhdGlvbiBpbnMxIGIyIGluczIgc3AyIHQyIHJzcDIgc2VsMSBzZWwyIHIyIHNlbDEgc2Vs MgorCisjIFRlc3QgcHJldmVudGlvbiBvZiBBTFRFUiBUQUJMRSB3aXRoIHJld3JpdGUsIGlmIGlu IHVzZQorcGVybXV0YXRpb24gY3JlYXRlMSBpbnMxXzIgYWx0ZXIxYSBhbHRlcjFiIGluczJfMiBz ZWx0eXBlMSBzZWx0eXBlMiBkcm9wMQorcGVybXV0YXRpb24gY3JlYXRlMSBpbnMxXzIgaW5zMl8y IGFsdGVyMWEgYWx0ZXIxYiBzZWx0eXBlMSBzZWx0eXBlMiBkcm9wMQorCisjIFRlc3QgRFJPUCB3 aXRoIE9OIENPTU1JVCBERUxFVEUgUk9XUworcGVybXV0YXRpb24gY3JlYXRlMWRyIGluczFfMiBp bnMyXzIgZHJvcDEgY3JlYXRlMWRyIGluczFfMiBpbnMyXzIgZHJvcDEKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMTBfZ2xvYmFsX3RlbXAucGwgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfY2hlY2tzdW1zL3QvMDEwX2dsb2JhbF90ZW1wLnBsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40MzU1ZWJlMTdiZAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9jaGVja3N1bXMvdC8wMTBfZ2xvYmFsX3RlbXAu cGwKQEAgLTAsMCArMSw1NiBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNiwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IHN1aXRlIGZvciB0ZXN0aW5nIGVuYWJs aW5nIGRhdGEgY2hlY2tzdW1zIGluIGFuIG9ubGluZSBjbHVzdGVyIHdpdGgKKyMgZ2xvYmFsIHRl bXBvcmFyeSB0YWJsZXMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7 CisKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJp bjo6UmVhbEJpbjsKKwordXNlIERhdGFDaGVja3N1bXM6OlV0aWxzOworCisjIEluaXRpYWxpemUg bm9kZSB3aXRoIGNoZWNrc3VtcyBkaXNhYmxlZC4KK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3Rlci0+bmV3KCdnbG9iYWxfdGVtcF90YWJsZV9ub2RlJyk7Ciskbm9kZS0+aW5pdChu b19kYXRhX2NoZWNrc3VtcyA9PiAxKTsKKyRub2RlLT5zdGFydDsKKworIyBDcmVhdGUgYSBnbG9i YWwgdGVtcG9yYXJ5IHRhYmxlIGluIGFuIGludGVyYWN0aXZlIHBzcWwgcHJvY2Vzcy4gIFNob3Vs ZCBhY3QKKyMgYXMgYSBiYXJyaWVyIGZvciBjaGVja3N1bSBlbmFibGVtZW50IHRvIGJsb2NrIG9u LgorbXkgJGJzZXNzaW9uID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKyRi c2Vzc2lvbi0+cXVlcnlfc2FmZSgKKwknQ1JFQVRFIEdMT0JBTCBURU1QT1JBUlkgVEFCTEUgZ3R0 IEFTIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSB4OycpOworCisjIEVu c3VyZSB0aGF0IGNoZWNrc3VtcyBhcmUgZGlzYWJsZWQKK3Rlc3RfY2hlY2tzdW1fc3RhdGUoJG5v ZGUsICdvZmYnKTsKKworIyBJbiBhbm90aGVyIHNlc3Npb24sIG1ha2Ugc3VyZSB3ZSBjYW4gc2Vl IHRoZSBibG9ja2luZyBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlCisjIGJ1dCBzdGFydCBwcm9jZXNz aW5nIGFueXdheXMgYW5kIGNoZWNrIHRoYXQgd2UgYXJlIGJsb2NrZWQgd2l0aCBhIHByb3Blcgor IyB3YWl0IGV2ZW50LgorbXkgJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHJlbHBlcnNpc3RlbmNlIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBXSEVSRSBy ZWxuYW1lID0gJ2d0dCc7Iik7CitpcygkcmVzdWx0LCAnZycsICdlbnN1cmUgd2UgY2FuIHNlZSB0 aGUgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZScpOworCisjIEVuYWJsZSwgYnV0IHN0b3Agd2FpdGlu ZyBhdCBpbnByb2dyZXNzLW9uIHNpbmNlIGl0IHdpbGwgc2l0IHRoZXJlIHVudGlsIHRoZQorIyBh Ym92ZSB0ZW1wb3JhcnkgdGFibGUgaXMgcmVtb3ZlZC4KK2VuYWJsZV9kYXRhX2NoZWNrc3Vtcygk bm9kZSwgd2FpdCA9PiAnaW5wcm9ncmVzcy1vbicpOworCisjIEVuc3VyZSB0aGF0IGNoZWNrc3Vt IGVuYWJsZW1lbnQgY29udGludWVzIHRvIGJsb2NrCitzbGVlcCgxKTsKK3Rlc3RfY2hlY2tzdW1f c3RhdGUoJG5vZGUsICdpbnByb2dyZXNzLW9uJyk7CisKKyMgTWFrZSBzdXJlIGJhY2tncm91bmQg c2Vzc2lvbiBjYW4gc3RpbGwgcmVhZCBiYWNrIGl0cyBkYXRhCiskcmVzdWx0ID0gJGJzZXNzaW9u LT5xdWVyeV9zYWZlKCdTRUxFQ1QgY291bnQoKikgRlJPTSBndHQgV0hFUkUgeCAlIDIgPSAwOycp OworaXMoJHJlc3VsdCwgJzUwMDAnLCAnZW5zdXJlIGdsb2JhbCB0ZW1wb3JhcnkgdGFibGUgY2Fu IHN0aWxsIGJlIHJlYWQnKTsKKworIyBRdWl0IGJhY2tncm91bmQgc2Vzc2lvbiBhbmQgY2hlY2sg dGhhdCBjaGVja3N1bSBlbmFibGVtZW50IHVuYmxvY2tzCiskYnNlc3Npb24tPnF1aXQ7Cit3YWl0 X2Zvcl9jaGVja3N1bV9zdGF0ZSgkbm9kZSwgJ29uJyk7CisKKyRub2RlLT5zdG9wOworZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FsdGVyX3Rh YmxlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWx0ZXJfdGFibGUub3V0CmluZGV4 IGUxNjdhNDFjZTc5Li5hNzFjZTBhMGNmOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9hbHRlcl90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9h bHRlcl90YWJsZS5vdXQKQEAgLTM1OTMsNiArMzU5Myw3IEBAIEZST00gcGdfY2xhc3MsCiAgICAg cGdfZmlsZW5vZGVfcmVsYXRpb24ocmVsdGFibGVzcGFjZSwgcGdfcmVsYXRpb25fZmlsZW5vZGUo b2lkKSkgQVMgbWFwcGVkX29pZAogV0hFUkUgcmVsa2luZCBJTiAoJ3InLCAnaScsICdTJywgJ3Qn LCAnbScpCiAgIEFORCByZWxwZXJzaXN0ZW5jZSAhPSAndCcKKyAgQU5EIHJlbHBlcnNpc3RlbmNl ICE9ICdnJwogICBBTkQgbWFwcGVkX29pZCBJUyBESVNUSU5DVCBGUk9NIG9pZDsKIFNFTEVDVCBt LiogRlJPTSBmaWxlbm9kZV9tYXBwaW5nIG0gTEVGVCBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQg PSBtLm9pZAogV0hFUkUgYy5vaWQgSVMgTk9UIE5VTEwgT1IgbS5tYXBwZWRfb2lkIElTIE5PVCBO VUxMOwpAQCAtNDA5OSw5ICs0MTAwLDEyIEBAIERST1AgVEFCTEUgcGFyZW50IENBU0NBREU7CiAt LSBjaGVjayBhbnkgVEVNUC1uZXNzCiBDUkVBVEUgVEVNUCBUQUJMRSB0ZW1wX3BhcnRlZCAoYSBp bnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKIENSRUFURSBUQUJMRSBwZXJtX3BhcnQgKGEgaW50 KTsKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSBnbG9iYWxfdGVtcF9wYXJ0IChhIGludCk7CiBB TFRFUiBUQUJMRSB0ZW1wX3BhcnRlZCBBVFRBQ0ggUEFSVElUSU9OIHBlcm1fcGFydCBGT1IgVkFM VUVTIElOICgxKTsKIEVSUk9SOiAgY2Fubm90IGF0dGFjaCBhIHBlcm1hbmVudCByZWxhdGlvbiBh cyBwYXJ0aXRpb24gb2YgdGVtcG9yYXJ5IHJlbGF0aW9uICJ0ZW1wX3BhcnRlZCIKLURST1AgVEFC TEUgdGVtcF9wYXJ0ZWQsIHBlcm1fcGFydDsKK0FMVEVSIFRBQkxFIHRlbXBfcGFydGVkIEFUVEFD SCBQQVJUSVRJT04gZ2xvYmFsX3RlbXBfcGFydCBGT1IgVkFMVUVTIElOICgxKTsKK0VSUk9SOiAg Y2Fubm90IGF0dGFjaCBhIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9m IGxvY2FsIHRlbXBvcmFyeSByZWxhdGlvbiAidGVtcF9wYXJ0ZWQiCitEUk9QIFRBQkxFIHRlbXBf cGFydGVkLCBwZXJtX3BhcnQsIGdsb2JhbF90ZW1wX3BhcnQ7CiAtLSBjaGVjayB0aGF0IHRoZSB0 YWJsZSBiZWluZyBhdHRhY2hlZCBpcyBub3QgYSB0eXBlZCB0YWJsZQogQ1JFQVRFIFRZUEUgbXl0 eXBlIEFTIChhIGludCk7CiBDUkVBVEUgVEFCTEUgZmFpbF9wYXJ0IE9GIG15dHlwZTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Byb3BlcnR5X2dyYXBoLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY3JlYXRlX3Byb3BlcnR5X2dyYXBoLm91dApp bmRleCAyYTUyYTM5NmZiNC4uODk2OWRhNWUzODQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvY3JlYXRlX3Byb3BlcnR5X2dyYXBoLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5vdXQKQEAgLTExNyw2ICsxMTcsOCBA QCBTRUxFQ1QgcGdfZ2V0X3Byb3BncmFwaGRlZignZzUnOjpyZWdjbGFzcyk7CiAtLSBlcnJvciBj YXNlcwogQ1JFQVRFIFVOTE9HR0VEIFBST1BFUlRZIEdSQVBIIGd4IFZFUlRFWCBUQUJMRVMgKHh4 LCB5eSk7CiBFUlJPUjogIHByb3BlcnR5IGdyYXBocyBjYW5ub3QgYmUgdW5sb2dnZWQgYmVjYXVz ZSB0aGV5IGRvIG5vdCBoYXZlIHN0b3JhZ2UKK0NSRUFURSBHTE9CQUwgVEVNUCBQUk9QRVJUWSBH UkFQSCBneCBWRVJURVggVEFCTEVTICh4eCwgeXkpOworRVJST1I6ICBwcm9wZXJ0eSBncmFwaHMg Y2Fubm90IGJlIGdsb2JhbCB0ZW1wb3JhcnkgYmVjYXVzZSB0aGV5IGRvIG5vdCBoYXZlIHN0b3Jh Z2UKIENSRUFURSBQUk9QRVJUWSBHUkFQSCBneCBWRVJURVggVEFCTEVTICh4eCwgeXkpOwogRVJS T1I6ICByZWxhdGlvbiAieHgiIGRvZXMgbm90IGV4aXN0CiBDUkVBVEUgUFJPUEVSVFkgR1JBUEgg Z3ggVkVSVEVYIFRBQkxFUyAodDEgS0VZIChhKSwgdDIgS0VZIChpKSwgdDEgS0VZIChhKSk7CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV90YWJsZS5vdXQKaW5kZXggMmRmODc2MWFl OGUuLjgwNTI1OTcxODczIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Ny ZWF0ZV90YWJsZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdGFi bGUub3V0CkBAIC00Niw3ICs0Niw3IEBAIENSRUFURSBUQUJMRSBwZ190ZW1wLmltcGxpY2l0bHlf dGVtcCAoYSBpbnQgcHJpbWFyeSBrZXkpOwkJLS0gT0sKIENSRUFURSBURU1QIFRBQkxFIGV4cGxp Y2l0bHlfdGVtcCAoYSBpbnQgcHJpbWFyeSBrZXkpOwkJCS0tIGFsc28gT0sKIENSRUFURSBURU1Q IFRBQkxFIHBnX3RlbXAuZG91Ymx5X3RlbXAgKGEgaW50IHByaW1hcnkga2V5KTsJCS0tIGFsc28g T0sKIENSRUFURSBURU1QIFRBQkxFIHB1YmxpYy50ZW1wX3RvX3Blcm0gKGEgaW50IHByaW1hcnkg a2V5KTsJCS0tIG5vdCBPSwotRVJST1I6ICBjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSByZWxhdGlv biBpbiBub24tdGVtcG9yYXJ5IHNjaGVtYQorRVJST1I6ICBjYW5ub3QgY3JlYXRlIGxvY2FsIHRl bXBvcmFyeSByZWxhdGlvbiBpbiBub24tdGVtcG9yYXJ5IHNjaGVtYQogTElORSAxOiBDUkVBVEUg VEVNUCBUQUJMRSBwdWJsaWMudGVtcF90b19wZXJtIChhIGludCBwcmltYXJ5IGtleSk7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KIERST1AgVEFCTEUgdW5sb2dnZWQxLCBwdWJsaWMudW5s b2dnZWQyOwpAQCAtMTA1NCwxMyArMTA1NCwyMSBAQCBkcm9wIHRhYmxlIGJvb2xzcGFydDsKIC0t IHBhcnRpdGlvbnMgbWl4aW5nIHRlbXBvcmFyeSBhbmQgcGVybWFuZW50IHJlbGF0aW9ucwogY3Jl YXRlIHRhYmxlIHBlcm1fcGFydGVkIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOwogY3Jl YXRlIHRlbXBvcmFyeSB0YWJsZSB0ZW1wX3BhcnRlZCAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0 IChhKTsKK2NyZWF0ZSBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlIGdsb2JhbF90ZW1wX3BhcnRlZCAo YSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKIGNyZWF0ZSB0YWJsZSBwZXJtX3BhcnQgcGFy dGl0aW9uIG9mIHRlbXBfcGFydGVkIGRlZmF1bHQ7IC0tIGVycm9yCiBFUlJPUjogIGNhbm5vdCBj cmVhdGUgYSBwZXJtYW5lbnQgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9mIHRlbXBvcmFyeSByZWxh dGlvbiAidGVtcF9wYXJ0ZWQiCitjcmVhdGUgdGFibGUgcGVybV9wYXJ0IHBhcnRpdGlvbiBvZiBn bG9iYWxfdGVtcF9wYXJ0ZWQgZGVmYXVsdDsgLS0gb2sKIGNyZWF0ZSB0ZW1wIHRhYmxlIHRlbXBf cGFydCBwYXJ0aXRpb24gb2YgcGVybV9wYXJ0ZWQgZGVmYXVsdDsgLS0gZXJyb3IKIEVSUk9SOiAg Y2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgcGVybWFu ZW50IHJlbGF0aW9uICJwZXJtX3BhcnRlZCIKK2NyZWF0ZSB0ZW1wIHRhYmxlIHRlbXBfcGFydCBw YXJ0aXRpb24gb2YgZ2xvYmFsX3RlbXBfcGFydGVkIGRlZmF1bHQ7IC0tIGVycm9yCitFUlJPUjog IGNhbm5vdCBjcmVhdGUgYSBsb2NhbCB0ZW1wb3JhcnkgcmVsYXRpb24gYXMgcGFydGl0aW9uIG9m IGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gImdsb2JhbF90ZW1wX3BhcnRlZCIKIGNyZWF0ZSB0 ZW1wIHRhYmxlIHRlbXBfcGFydCBwYXJ0aXRpb24gb2YgdGVtcF9wYXJ0ZWQgZGVmYXVsdDsgLS0g b2sKK2NyZWF0ZSBnbG9iYWwgdGVtcCB0YWJsZSBnbG9iYWxfdGVtcF9wYXJ0IHBhcnRpdGlvbiBv ZiB0ZW1wX3BhcnRlZCBkZWZhdWx0OyAtLSBlcnJvcgorRVJST1I6ICBjYW5ub3QgY3JlYXRlIGEg Z2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiBhcyBwYXJ0aXRpb24gb2YgbG9jYWwgdGVtcG9yYXJ5 IHJlbGF0aW9uICJ0ZW1wX3BhcnRlZCIKK2NyZWF0ZSBnbG9iYWwgdGVtcCB0YWJsZSBnbG9iYWxf dGVtcF9wYXJ0IHBhcnRpdGlvbiBvZiBwZXJtX3BhcnRlZCBkZWZhdWx0OyAtLSBvawogZHJvcCB0 YWJsZSBwZXJtX3BhcnRlZCBjYXNjYWRlOwogZHJvcCB0YWJsZSB0ZW1wX3BhcnRlZCBjYXNjYWRl OworZHJvcCB0YWJsZSBnbG9iYWxfdGVtcF9wYXJ0ZWQgY2FzY2FkZTsKIC0tIGNoZWNrIHRoYXQg YWRkaW5nIHBhcnRpdGlvbnMgdG8gYSB0YWJsZSB3aGlsZSBpdCBpcyBiZWluZyB1c2VkIGlzIHBy ZXZlbnRlZAogY3JlYXRlIHRhYmxlIHRhYl9wYXJ0X2NyZWF0ZSAoYSBpbnQpIHBhcnRpdGlvbiBi eSBsaXN0IChhKTsKIGNyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIGZ1bmNfcGFydF9jcmVhdGUo KSByZXR1cm5zIHRyaWdnZXIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y3JlYXRlX3ZpZXcub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jcmVhdGVfdmlldy5v dXQKaW5kZXggNjNjZjRiNDM3MWQuLjE3NTM3NjE2OGYxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NyZWF0ZV92aWV3Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2NyZWF0ZV92aWV3Lm91dApAQCAtMTIzLDcgKzEyMyw3IEBAIENSRUFURSBWSUVXIHRl bXBfdmlld190ZXN0LnYyIEFTIFNFTEVDVCAqIEZST00gYmFzZV90YWJsZTsKIENSRUFURSBWSUVX IHRlbXBfdmlld190ZXN0LnYzX3RlbXAgQVMgU0VMRUNUICogRlJPTSB0ZW1wX3RhYmxlOwogTk9U SUNFOiAgdmlldyAidjNfdGVtcCIgd2lsbCBiZSBhIHRlbXBvcmFyeSB2aWV3CiBERVRBSUw6ICBJ dCBkZXBlbmRzIG9uIHRlbXBvcmFyeSB0YWJsZSB0ZW1wX3RhYmxlLgotRVJST1I6ICBjYW5ub3Qg Y3JlYXRlIHRlbXBvcmFyeSByZWxhdGlvbiBpbiBub24tdGVtcG9yYXJ5IHNjaGVtYQorRVJST1I6 ICBjYW5ub3QgY3JlYXRlIGxvY2FsIHRlbXBvcmFyeSByZWxhdGlvbiBpbiBub24tdGVtcG9yYXJ5 IHNjaGVtYQogLS0gc2hvdWxkIGZhaWwKIENSRUFURSBTQ0hFTUEgdGVzdF92aWV3X3NjaGVtYQog ICAgIENSRUFURSBURU1QIFZJRVcgdGVzdHZpZXcgQVMgU0VMRUNUIDE7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi40M2U5MTE2ZjdkNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CkBAIC0wLDAgKzEsMjkwIEBACistLQorLS0gR0xP QkFMIFRFTVAKKy0tCitDUkVBVEUgU0NIRU1BIGdsb2JhbF90ZW1wX3Rlc3RzOworR1JBTlQgVVNB R0UgT04gU0NIRU1BIGdsb2JhbF90ZW1wX3Rlc3RzIFRPIFBVQkxJQzsKK1NFVCBzZWFyY2hfcGF0 aCA9IGdsb2JhbF90ZW1wX3Rlc3RzOworQ1JFQVRFIFJPTEUgcmVncmVzc19nbG9iYWxfdGVtcF91 c2VyOworR1JBTlQgQ1JFQVRFIE9OIFNDSEVNQSBnbG9iYWxfdGVtcF90ZXN0cyBUTyByZWdyZXNz X2dsb2JhbF90ZW1wX3VzZXI7CitHUkFOVCBDUkVBVEUgT04gREFUQUJBU0UgcmVncmVzc2lvbiBU TyByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXI7CitTRVQgUk9MRSByZWdyZXNzX2dsb2JhbF90ZW1w X3VzZXI7CistLSBUZXN0IHRhYmxlIGNyZWF0aW9uCitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUg cGdfdGVtcC50bXAxIChhIGludCk7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IGNyZWF0ZSBnbG9i YWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGluIHRlbXBvcmFyeSBzY2hlbWEKK0xJTkUgMTogQ1JFQVRF IEdMT0JBTCBURU1QIFRBQkxFIHBnX3RlbXAudG1wMSAoYSBpbnQpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDEgKGEgaW50 KTsKK0NSRUFURSBTQ0hFTUEgZ2xvYmFsX3RlbXBfeHh4IENSRUFURSBHTE9CQUwgVEVNUCBUQUJM RSB0bXAyIChhIGludCk7CitDUkVBVEUgU0NIRU1BIGdsb2JhbF90ZW1wX3l5eTsKK0NSRUFURSBH TE9CQUwgVEVNUCBUQUJMRSBnbG9iYWxfdGVtcF95eXkudG1wMyAoYSBpbnQpOworXGQgdG1wMQor ICBHbG9iYWwgdGVtcG9yYXJ5IHRhYmxlICJnbG9iYWxfdGVtcF90ZXN0cy50bXAxIgorIENvbHVt biB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworXGR0KyBnbG9iYWxfdGVtcF8qLnRtcCoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgdGFi bGVzCisgICAgICBTY2hlbWEgICAgICAgfCBOYW1lIHwgVHlwZSAgfCAgICAgICAgICBPd25lciAg ICAgICAgICAgfCAgIFBlcnNpc3RlbmNlICAgIHwgIFNpemUgICB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBnbG9iYWxfdGVt cF90ZXN0cyB8IHRtcDEgfCB0YWJsZSB8IHJlZ3Jlc3NfZ2xvYmFsX3RlbXBfdXNlciB8IGdsb2Jh bCB0ZW1wb3JhcnkgfCAwIGJ5dGVzIHwgCisgZ2xvYmFsX3RlbXBfeHh4ICAgfCB0bXAyIHwgdGFi bGUgfCByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXIgfCBnbG9iYWwgdGVtcG9yYXJ5IHwgMCBieXRl cyB8IAorIGdsb2JhbF90ZW1wX3l5eSAgIHwgdG1wMyB8IHRhYmxlIHwgcmVncmVzc19nbG9iYWxf dGVtcF91c2VyIHwgZ2xvYmFsIHRlbXBvcmFyeSB8IDAgYnl0ZXMgfCAKKygzIHJvd3MpCisKKy0t IEluZm9ybWF0aW9uIHNjaGVtYQorU0VMRUNUIHRhYmxlX2NhdGFsb2csIHRhYmxlX3NjaGVtYSwg dGFibGVfbmFtZSwgdGFibGVfdHlwZQorRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzCitX SEVSRSB0YWJsZV9uYW1lIH4gJ3RtcCcgQU5EIHRhYmxlX3NjaGVtYSB+ICdnbG9iYWxfdGVtcCcK K09SREVSIEJZIHRhYmxlX25hbWU7CisgdGFibGVfY2F0YWxvZyB8ICAgdGFibGVfc2NoZW1hICAg IHwgdGFibGVfbmFtZSB8ICAgIHRhYmxlX3R5cGUgICAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc2lv biAgICB8IGdsb2JhbF90ZW1wX3Rlc3RzIHwgdG1wMSAgICAgICB8IEdMT0JBTCBURU1QT1JBUlkK KyByZWdyZXNzaW9uICAgIHwgZ2xvYmFsX3RlbXBfeHh4ICAgfCB0bXAyICAgICAgIHwgR0xPQkFM IFRFTVBPUkFSWQorIHJlZ3Jlc3Npb24gICAgfCBnbG9iYWxfdGVtcF95eXkgICB8IHRtcDMgICAg ICAgfCBHTE9CQUwgVEVNUE9SQVJZCisoMyByb3dzKQorCitEUk9QIFNDSEVNQSBnbG9iYWxfdGVt cF94eHggQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZ2xvYmFsX3Rl bXBfeHh4LnRtcDIKK0RST1AgU0NIRU1BIGdsb2JhbF90ZW1wX3l5eSBDQVNDQURFOworTk9USUNF OiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBnbG9iYWxfdGVtcF95eXkudG1wMworLS0gQmFzaWMg dGVzdHMKK0lOU0VSVCBJTlRPIHRtcDEgVkFMVUVTICgxKTsKK1NFTEVDVCAqIEZST00gdG1wMTsK KyBhIAorLS0tCisgMQorKDEgcm93KQorCitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3Rl bXBfdGVzdHM7CitTRUxFQ1QgKiBGUk9NIHRtcDE7CisgYSAKKy0tLQorKDAgcm93cykKKworLS0g VGVzdCBPTiBDT01NSVQgREVMRVRFIFJPV1MKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAy IChhIGludCkgT04gQ09NTUlUIERFTEVURSBST1dTOworQkVHSU47CitJTlNFUlQgSU5UTyB0bXAy IFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRtcDI7CisgYSAKKy0tLQorIDEKKygxIHJvdykK KworQ09NTUlUOworU0VMRUNUICogRlJPTSB0bXAyOworIGEgCistLS0KKygwIHJvd3MpCisKKy0t IFJlcGVhdCB0ZXN0IGluIGEgbmV3IHNlc3Npb24KK1xjCitTRVQgc2VhcmNoX3BhdGggPSBnbG9i YWxfdGVtcF90ZXN0czsKK0JFR0lOOworSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEpOworU0VM RUNUICogRlJPTSB0bXAyOworIGEgCistLS0KKyAxCisoMSByb3cpCisKK0NPTU1JVDsKK1NFTEVD VCAqIEZST00gdG1wMjsKKyBhIAorLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIHRtcDI7Cist LSBPTiBDT01NSVQgRFJPUCBub3QgYWxsb3dlZAorQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRt cDIgKGEgaW50KSBPTiBDT01NSVQgRFJPUDsgLS0gZmFpbAorRVJST1I6ICBPTiBDT01NSVQgRFJP UCBjYW5ub3QgYmUgdXNlZCBvbiBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcworLS0gVHdvLXBoYXNl IGNvbW1pdCBub3QgYWxsb3dlZCB3aXRoIGdsb2JhbCB0ZW1wIHRhYmxlcworQkVHSU47CitTRUxF Q1QgKiBGUk9NIHRtcDE7CisgYSAKKy0tLQorKDAgcm93cykKKworUFJFUEFSRSBUUkFOU0FDVElP TiAndHdvcGhhc2UnOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBQUkVQQVJFIGEgdHJhbnNhY3Rp b24gdGhhdCBoYXMgb3BlcmF0ZWQgb24gdGVtcG9yYXJ5IG9iamVjdHMKKy0tIFRlc3QgcGFydGl0 aW9uZWQgZ2xvYmFsIHRlbXAgdGFibGUKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChh IGludCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRt cDJfcDEgUEFSVElUSU9OIE9GIHRtcDIgRk9SIFZBTFVFUyBJTiAoMSk7CitDUkVBVEUgVEFCTEUg dG1wMl9wMiBQQVJUSVRJT04gT0YgdG1wMiBGT1IgVkFMVUVTIElOICgyKTsKK0NSRUFURSBURU1Q IFRBQkxFIGxvY2FsX3RtcCAoYSBpbnQpOworQUxURVIgVEFCTEUgdG1wMiBBVFRBQ0ggUEFSVElU SU9OIGxvY2FsX3RtcCBGT1IgVkFMVUVTIElOICgzKTsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3Qg YXR0YWNoIGEgbG9jYWwgdGVtcG9yYXJ5IHJlbGF0aW9uIGFzIHBhcnRpdGlvbiBvZiBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9uICJ0bXAyIgorSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEpLCAo Mik7CitTRUxFQ1QgKiBGUk9NIHRtcDIgT1JERVIgQlkgYTsKKyBhIAorLS0tCisgMQorIDIKKygy IHJvd3MpCisKK1xjCitTRVQgc2VhcmNoX3BhdGggPSBnbG9iYWxfdGVtcF90ZXN0czsKK1NFTEVD VCAqIEZST00gdG1wMiBPUkRFUiBCWSBhOworIGEgCistLS0KKyAyCisoMSByb3cpCisKK0RST1Ag VEFCTEUgdG1wMjsKKy0tIFRlc3QgQUxURVIgVEFCTEUgd2l0aCByZXdyaXRlCitDUkVBVEUgR0xP QkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpOworSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEp OworQUxURVIgVEFCTEUgdG1wMiBBTFRFUiBDT0xVTU4gYSBTRVQgREFUQSBUWVBFIG51bWVyaWM7 CitTRUxFQ1QgYSwgcGdfdHlwZW9mKGEpIEZST00gdG1wMjsKKyBhIHwgcGdfdHlwZW9mIAorLS0t Ky0tLS0tLS0tLS0tCisgMSB8IG51bWVyaWMKKygxIHJvdykKKworRFJPUCBUQUJMRSB0bXAyOwor LS0gVGVzdCBmb3JlaWduIGtleXMKK0NSRUFURSBUQUJMRSBwZXJtX3BrX3JlbCAoYSBpbnQgUFJJ TUFSWSBLRVkpOworQ1JFQVRFIFRFTVAgVEFCTEUgdGVtcF9wa19yZWwgKGEgaW50IFBSSU1BUlkg S0VZKTsKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCBSRUZFUkVOQ0VTIHBl cm1fcGtfcmVsKTsgLS0gZmFpbAorRVJST1I6ICBjb25zdHJhaW50cyBvbiBnbG9iYWwgdGVtcG9y YXJ5IHRhYmxlcyBtYXkgcmVmZXJlbmNlIG9ubHkgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMKK0NS RUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCBSRUZFUkVOQ0VTIHRlbXBfcGtfcmVs KTsgLS0gZmFpbAorRVJST1I6ICBjb25zdHJhaW50cyBvbiBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxl cyBtYXkgcmVmZXJlbmNlIG9ubHkgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMKK0RST1AgVEFCTEUg cGVybV9wa19yZWwsIHRlbXBfcGtfcmVsOworLS0gVGVzdCBBTFRFUiBUQUJMRSAuLi4gU0VUIFRB QkxFU1BBQ0UKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCk7CitJTlNFUlQg SU5UTyB0bXAyIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9NIHRtcDI7CisgYSAKKy0tLQorIDEK KygxIHJvdykKKworU0VMRUNUIHJlZ2V4cF9yZXBsYWNlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0 bXAyJyksICcoXGQrKScsICdOTk4nLCAnZycpOworICByZWdleHBfcmVwbGFjZSAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLQorIGJhc2UvTk5OL3ROTk5fTk5OCisoMSByb3cpCisKK0FMVEVSIFRBQkxF IHRtcDIgU0VUIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1NFTEVDVCAqIEZST00gdG1w MjsKKyBhIAorLS0tCisgMQorKDEgcm93KQorCitTRUxFQ1QgcmVnZXhwX3JlcGxhY2UocGdfcmVs YXRpb25fZmlsZXBhdGgoJ3RtcDInKSwgJyhcZCspJywgJ05OTicsICdnJyk7CisgICAgICAgICAg ICByZWdleHBfcmVwbGFjZSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHBnX3RibHNwYy9OTk4vUEdfTk5OX05OTi9OTk4vdE5OTl9OTk4KKygx IHJvdykKKworRFJPUCBUQUJMRSB0bXAyOworLS0gVGVzdCBkZXBlbmRlbmN5IG9uIHRhYmxlc3Bh Y2UKK1NFVCBhbGxvd19pbl9wbGFjZV90YWJsZXNwYWNlcyA9IHRydWU7CitDUkVBVEUgVEFCTEVT UEFDRSByZWdyZXNzX3RlbXBfdGVzdF90YWJsZXNwYWNlIExPQ0FUSU9OICcnOworQ1JFQVRFIEdM T0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50KSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVtcF90ZXN0 X3RhYmxlc3BhY2U7CitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVzdHM7CitE Uk9QIFRBQkxFU1BBQ0UgcmVncmVzc190ZW1wX3Rlc3RfdGFibGVzcGFjZTsgLS0gZmFpbAorRVJS T1I6ICB0YWJsZXNwYWNlICJyZWdyZXNzX3RlbXBfdGVzdF90YWJsZXNwYWNlIiBjYW5ub3QgYmUg ZHJvcHBlZCBiZWNhdXNlIHNvbWUgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHRhYmxl c3BhY2UgZm9yIHRhYmxlIHRtcDIKK0RST1AgVEFCTEUgdG1wMjsKK0RST1AgVEFCTEVTUEFDRSBy ZWdyZXNzX3RlbXBfdGVzdF90YWJsZXNwYWNlOworU0VUIGFsbG93X2luX3BsYWNlX3RhYmxlc3Bh Y2VzID0gdHJ1ZTsKK0NSRUFURSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVtcF90ZXN0X3RhYmxlc3Bh Y2UgTE9DQVRJT04gJyc7CitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpOwor QUxURVIgVEFCTEUgdG1wMiBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RlbXBfdGVzdF90YWJsZXNw YWNlOworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2JhbF90ZW1wX3Rlc3RzOworRFJPUCBUQUJM RVNQQUNFIHJlZ3Jlc3NfdGVtcF90ZXN0X3RhYmxlc3BhY2U7IC0tIGZhaWwKK0VSUk9SOiAgdGFi bGVzcGFjZSAicmVncmVzc190ZW1wX3Rlc3RfdGFibGVzcGFjZSIgY2Fubm90IGJlIGRyb3BwZWQg YmVjYXVzZSBzb21lIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICB0YWJsZXNwYWNlIGZv ciB0YWJsZSB0bXAyCitEUk9QIFRBQkxFIHRtcDI7CitEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190 ZW1wX3Rlc3RfdGFibGVzcGFjZTsKKy0tIFRlc3QgVFJVTkNBVEUKK0lOU0VSVCBJTlRPIHRtcDEg VkFMVUVTICgxKTsKK0JFR0lOOworVFJVTkNBVEUgdG1wMTsKK1NFTEVDVCAqIEZST00gdG1wMTsK KyBhIAorLS0tCisoMCByb3dzKQorCitST0xMQkFDSzsKK1NFTEVDVCAqIEZST00gdG1wMTsKKyBh IAorLS0tCisgMQorKDEgcm93KQorCitCRUdJTjsKK1NBVkVQT0lOVCBzcDE7CitUUlVOQ0FURSB0 bXAxOworU0VMRUNUICogRlJPTSB0bXAxOworIGEgCistLS0KKygwIHJvd3MpCisKK1JFTEVBU0Ug c3AxOworU0VMRUNUICogRlJPTSB0bXAxOworIGEgCistLS0KKygwIHJvd3MpCisKK1JPTExCQUNL OworU0VMRUNUICogRlJPTSB0bXAxOworIGEgCistLS0KKyAxCisoMSByb3cpCisKK0JFR0lOOwor U0FWRVBPSU5UIHNwMTsKK1RSVU5DQVRFIHRtcDE7CitTRUxFQ1QgKiBGUk9NIHRtcDE7CisgYSAK Ky0tLQorKDAgcm93cykKKworUk9MTEJBQ0sgVE8gc3AxOworU0VMRUNUICogRlJPTSB0bXAxOwor IGEgCistLS0KKyAxCisoMSByb3cpCisKK0NPTU1JVDsKK1NFTEVDVCAqIEZST00gdG1wMTsKKyBh IAorLS0tCisgMQorKDEgcm93KQorCitUUlVOQ0FURSB0bXAxOworU0VMRUNUICogRlJPTSB0bXAx OworIGEgCistLS0KKygwIHJvd3MpCisKKy0tIFRlc3QgdmlldyBjcmVhdGlvbgorSU5TRVJUIElO VE8gdG1wMSBWQUxVRVMgKDEpOworQ1JFQVRFIFZJRVcgdiBBUyBTRUxFQ1QgKiBGUk9NIHRtcDE7 CitTRUxFQ1QgKiBGUk9NIHY7CisgYSAKKy0tLQorIDEKKygxIHJvdykKKworRFJPUCBWSUVXIHY7 CitDUkVBVEUgVEVNUCBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSB0bXAxOworU0VMRUNUICogRlJP TSB2OworIGEgCistLS0KKyAxCisoMSByb3cpCisKK0RST1AgVklFVyB2OworQ1JFQVRFIEdMT0JB TCBURU1QIFZJRVcgdiBBUyBTRUxFQ1QgKiBGUk9NIHRtcDE7IC0tIGZhaWwKK0VSUk9SOiAgdmll d3MgY2Fubm90IGJlIGdsb2JhbCB0ZW1wb3JhcnkgYmVjYXVzZSB0aGV5IGRvIG5vdCBoYXZlIHN0 b3JhZ2UKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdHlwZV9zYW5pdHku b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90eXBlX3Nhbml0eS5vdXQKaW5kZXggMWQy MWQzZWI0NDYuLmQ0NDFmNTE0YTQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3R5cGVfc2FuaXR5Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3R5cGVf c2FuaXR5Lm91dApAQCAtNTA1LDcgKzUwNSw3IEBAIE9SREVSIEJZIDE7CiBTRUxFQ1QgYzEub2lk LCBjMS5yZWxuYW1lCiBGUk9NIHBnX2NsYXNzIGFzIGMxCiBXSEVSRSByZWxraW5kIE5PVCBJTiAo J3InLCAnaScsICdTJywgJ3QnLCAndicsICdtJywgJ2MnLCAnZicsICdwJywgJ0knKSBPUgotICAg IHJlbHBlcnNpc3RlbmNlIE5PVCBJTiAoJ3AnLCAndScsICd0JykgT1IKKyAgICByZWxwZXJzaXN0 ZW5jZSBOT1QgSU4gKCdwJywgJ3UnLCAndCcsICdnJykgT1IKICAgICByZWxyZXBsaWRlbnQgTk9U IElOICgnZCcsICduJywgJ2YnLCAnaScpOwogIG9pZCB8IHJlbG5hbWUgCiAtLS0tLSstLS0tLS0t LS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMv dGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDhmYTBhNmM0N2ZiLi4wZThhNzQ5 MTI3NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMDEsOCArMTAxLDEwIEBA IHRlc3Q6IHB1YmxpY2F0aW9uIHN1YnNjcmlwdGlvbgogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIg Z3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgc2VsZWN0X3ZpZXdzIGRlcGVuZHMgb24gY3JlYXRl X3ZpZXcKKyMgTkI6IGdsb2JhbF90ZW1wLnNxbCBkb2VzIHJlY29ubmVjdHMgd2hpY2ggdHJhbnNp ZW50bHkgdXNlcyAyIGNvbm5lY3Rpb25zLAorIyBzbyBrZWVwIHRoaXMgcGFyYWxsZWwgZ3JvdXAg dG8gYXQgbW9zdCAxOSB0ZXN0cwogIyAtLS0tLS0tLS0tCi10ZXN0OiBzZWxlY3Rfdmlld3MgcG9y dGFsc19wMiBmb3JlaWduX2tleSBkZXBlbmRlbmN5IGd1YyBiaXRtYXBvcHMgY29tYm9jaWQgdHNl YXJjaCB0c2RpY3RzIGZvcmVpZ25fZGF0YSB3aW5kb3cgeG1sbWFwIGZ1bmN0aW9uYWxfZGVwcyBh ZHZpc29yeV9sb2NrIGluZGlyZWN0X3RvYXN0IGVxdWl2Y2xhc3Mgc3RhdHNfcmV3cml0ZSBncmFw aF90YWJsZQordGVzdDogc2VsZWN0X3ZpZXdzIHBvcnRhbHNfcDIgZm9yZWlnbl9rZXkgZGVwZW5k ZW5jeSBndWMgYml0bWFwb3BzIGNvbWJvY2lkIHRzZWFyY2ggdHNkaWN0cyBmb3JlaWduX2RhdGEg d2luZG93IHhtbG1hcCBmdW5jdGlvbmFsX2RlcHMgYWR2aXNvcnlfbG9jayBpbmRpcmVjdF90b2Fz dCBlcXVpdmNsYXNzIHN0YXRzX3Jld3JpdGUgZ3JhcGhfdGFibGUgZ2xvYmFsX3RlbXAKIAogIyAt LS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMgKEpTT04gcmVsYXRl ZCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNxbAppbmRleCBmNWYxM2JiZDNlNy4uOTAx MTk1OWU1MGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FsdGVyX3RhYmxlLnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hbHRlcl90YWJsZS5zcWwKQEAgLTIyMTAsNiAr MjIxMCw3IEBAIEZST00gcGdfY2xhc3MsCiAgICAgcGdfZmlsZW5vZGVfcmVsYXRpb24ocmVsdGFi bGVzcGFjZSwgcGdfcmVsYXRpb25fZmlsZW5vZGUob2lkKSkgQVMgbWFwcGVkX29pZAogV0hFUkUg cmVsa2luZCBJTiAoJ3InLCAnaScsICdTJywgJ3QnLCAnbScpCiAgIEFORCByZWxwZXJzaXN0ZW5j ZSAhPSAndCcKKyAgQU5EIHJlbHBlcnNpc3RlbmNlICE9ICdnJwogICBBTkQgbWFwcGVkX29pZCBJ UyBESVNUSU5DVCBGUk9NIG9pZDsKIFNFTEVDVCBtLiogRlJPTSBmaWxlbm9kZV9tYXBwaW5nIG0g TEVGVCBKT0lOIHBnX2NsYXNzIGMgT04gYy5vaWQgPSBtLm9pZAogV0hFUkUgYy5vaWQgSVMgTk9U IE5VTEwgT1IgbS5tYXBwZWRfb2lkIElTIE5PVCBOVUxMOwpAQCAtMjQ3NCw4ICsyNDc1LDEwIEBA IERST1AgVEFCTEUgcGFyZW50IENBU0NBREU7CiAtLSBjaGVjayBhbnkgVEVNUC1uZXNzCiBDUkVB VEUgVEVNUCBUQUJMRSB0ZW1wX3BhcnRlZCAoYSBpbnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsK IENSRUFURSBUQUJMRSBwZXJtX3BhcnQgKGEgaW50KTsKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJM RSBnbG9iYWxfdGVtcF9wYXJ0IChhIGludCk7CiBBTFRFUiBUQUJMRSB0ZW1wX3BhcnRlZCBBVFRB Q0ggUEFSVElUSU9OIHBlcm1fcGFydCBGT1IgVkFMVUVTIElOICgxKTsKLURST1AgVEFCTEUgdGVt cF9wYXJ0ZWQsIHBlcm1fcGFydDsKK0FMVEVSIFRBQkxFIHRlbXBfcGFydGVkIEFUVEFDSCBQQVJU SVRJT04gZ2xvYmFsX3RlbXBfcGFydCBGT1IgVkFMVUVTIElOICgxKTsKK0RST1AgVEFCTEUgdGVt cF9wYXJ0ZWQsIHBlcm1fcGFydCwgZ2xvYmFsX3RlbXBfcGFydDsKIAogLS0gY2hlY2sgdGhhdCB0 aGUgdGFibGUgYmVpbmcgYXR0YWNoZWQgaXMgbm90IGEgdHlwZWQgdGFibGUKIENSRUFURSBUWVBF IG15dHlwZSBBUyAoYSBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3Jl YXRlX3Byb3BlcnR5X2dyYXBoLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9w ZXJ0eV9ncmFwaC5zcWwKaW5kZXggM2IyN2Q0MTcwYmIuLjkwZDY2YzdmODMwIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfcHJvcGVydHlfZ3JhcGguc3FsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV9wcm9wZXJ0eV9ncmFwaC5zcWwKQEAgLTk4LDYgKzk4 LDcgQEAgU0VMRUNUIHBnX2dldF9wcm9wZ3JhcGhkZWYoJ2c1Jzo6cmVnY2xhc3MpOwogCiAtLSBl cnJvciBjYXNlcwogQ1JFQVRFIFVOTE9HR0VEIFBST1BFUlRZIEdSQVBIIGd4IFZFUlRFWCBUQUJM RVMgKHh4LCB5eSk7CitDUkVBVEUgR0xPQkFMIFRFTVAgUFJPUEVSVFkgR1JBUEggZ3ggVkVSVEVY IFRBQkxFUyAoeHgsIHl5KTsKIENSRUFURSBQUk9QRVJUWSBHUkFQSCBneCBWRVJURVggVEFCTEVT ICh4eCwgeXkpOwogQ1JFQVRFIFBST1BFUlRZIEdSQVBIIGd4IFZFUlRFWCBUQUJMRVMgKHQxIEtF WSAoYSksIHQyIEtFWSAoaSksIHQxIEtFWSAoYSkpOwogQUxURVIgUFJPUEVSVFkgR1JBUEggZzMg QUREIFZFUlRFWCBUQUJMRVMgKHQzIEtFWSAoeCkpOyAgLS0gZHVwbGljYXRlIGFsaWFzCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jcmVhdGVfdGFibGUuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlLnNxbAppbmRleCA4MGU0MjRlNmJkYS4uYmM2OTYwOGU1 NWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NyZWF0ZV90YWJsZS5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY3JlYXRlX3RhYmxlLnNxbApAQCAtNjg2LDExICs2ODYs MTcgQEAgZHJvcCB0YWJsZSBib29sc3BhcnQ7CiAtLSBwYXJ0aXRpb25zIG1peGluZyB0ZW1wb3Jh cnkgYW5kIHBlcm1hbmVudCByZWxhdGlvbnMKIGNyZWF0ZSB0YWJsZSBwZXJtX3BhcnRlZCAoYSBp bnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKIGNyZWF0ZSB0ZW1wb3JhcnkgdGFibGUgdGVtcF9w YXJ0ZWQgKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgZ2xvYmFsIHRlbXBv cmFyeSB0YWJsZSBnbG9iYWxfdGVtcF9wYXJ0ZWQgKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAo YSk7CiBjcmVhdGUgdGFibGUgcGVybV9wYXJ0IHBhcnRpdGlvbiBvZiB0ZW1wX3BhcnRlZCBkZWZh dWx0OyAtLSBlcnJvcgorY3JlYXRlIHRhYmxlIHBlcm1fcGFydCBwYXJ0aXRpb24gb2YgZ2xvYmFs X3RlbXBfcGFydGVkIGRlZmF1bHQ7IC0tIG9rCiBjcmVhdGUgdGVtcCB0YWJsZSB0ZW1wX3BhcnQg cGFydGl0aW9uIG9mIHBlcm1fcGFydGVkIGRlZmF1bHQ7IC0tIGVycm9yCitjcmVhdGUgdGVtcCB0 YWJsZSB0ZW1wX3BhcnQgcGFydGl0aW9uIG9mIGdsb2JhbF90ZW1wX3BhcnRlZCBkZWZhdWx0OyAt LSBlcnJvcgogY3JlYXRlIHRlbXAgdGFibGUgdGVtcF9wYXJ0IHBhcnRpdGlvbiBvZiB0ZW1wX3Bh cnRlZCBkZWZhdWx0OyAtLSBvaworY3JlYXRlIGdsb2JhbCB0ZW1wIHRhYmxlIGdsb2JhbF90ZW1w X3BhcnQgcGFydGl0aW9uIG9mIHRlbXBfcGFydGVkIGRlZmF1bHQ7IC0tIGVycm9yCitjcmVhdGUg Z2xvYmFsIHRlbXAgdGFibGUgZ2xvYmFsX3RlbXBfcGFydCBwYXJ0aXRpb24gb2YgcGVybV9wYXJ0 ZWQgZGVmYXVsdDsgLS0gb2sKIGRyb3AgdGFibGUgcGVybV9wYXJ0ZWQgY2FzY2FkZTsKIGRyb3Ag dGFibGUgdGVtcF9wYXJ0ZWQgY2FzY2FkZTsKK2Ryb3AgdGFibGUgZ2xvYmFsX3RlbXBfcGFydGVk IGNhc2NhZGU7CiAKIC0tIGNoZWNrIHRoYXQgYWRkaW5nIHBhcnRpdGlvbnMgdG8gYSB0YWJsZSB3 aGlsZSBpdCBpcyBiZWluZyB1c2VkIGlzIHByZXZlbnRlZAogY3JlYXRlIHRhYmxlIHRhYl9wYXJ0 X2NyZWF0ZSAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ds b2JhbF90ZW1wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTM5 ZTBmNzRiNGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9iYWxf dGVtcC5zcWwKQEAgLTAsMCArMSwxNjAgQEAKKy0tCistLSBHTE9CQUwgVEVNUAorLS0KK0NSRUFU RSBTQ0hFTUEgZ2xvYmFsX3RlbXBfdGVzdHM7CitHUkFOVCBVU0FHRSBPTiBTQ0hFTUEgZ2xvYmFs X3RlbXBfdGVzdHMgVE8gUFVCTElDOworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVz dHM7CitDUkVBVEUgUk9MRSByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXI7CitHUkFOVCBDUkVBVEUg T04gU0NIRU1BIGdsb2JhbF90ZW1wX3Rlc3RzIFRPIHJlZ3Jlc3NfZ2xvYmFsX3RlbXBfdXNlcjsK K0dSQU5UIENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIFRPIHJlZ3Jlc3NfZ2xvYmFsX3Rl bXBfdXNlcjsKK1NFVCBST0xFIHJlZ3Jlc3NfZ2xvYmFsX3RlbXBfdXNlcjsKKworLS0gVGVzdCB0 YWJsZSBjcmVhdGlvbgorQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHBnX3RlbXAudG1wMSAoYSBp bnQpOyAtLSBmYWlsCitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMSAoYSBpbnQpOworQ1JF QVRFIFNDSEVNQSBnbG9iYWxfdGVtcF94eHggQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIg KGEgaW50KTsKK0NSRUFURSBTQ0hFTUEgZ2xvYmFsX3RlbXBfeXl5OworQ1JFQVRFIEdMT0JBTCBU RU1QIFRBQkxFIGdsb2JhbF90ZW1wX3l5eS50bXAzIChhIGludCk7CisKK1xkIHRtcDEKK1xkdCsg Z2xvYmFsX3RlbXBfKi50bXAqCisKKy0tIEluZm9ybWF0aW9uIHNjaGVtYQorU0VMRUNUIHRhYmxl X2NhdGFsb2csIHRhYmxlX3NjaGVtYSwgdGFibGVfbmFtZSwgdGFibGVfdHlwZQorRlJPTSBpbmZv cm1hdGlvbl9zY2hlbWEudGFibGVzCitXSEVSRSB0YWJsZV9uYW1lIH4gJ3RtcCcgQU5EIHRhYmxl X3NjaGVtYSB+ICdnbG9iYWxfdGVtcCcKK09SREVSIEJZIHRhYmxlX25hbWU7CisKK0RST1AgU0NI RU1BIGdsb2JhbF90ZW1wX3h4eCBDQVNDQURFOworRFJPUCBTQ0hFTUEgZ2xvYmFsX3RlbXBfeXl5 IENBU0NBREU7CisKKy0tIEJhc2ljIHRlc3RzCitJTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSk7 CitTRUxFQ1QgKiBGUk9NIHRtcDE7CitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBf dGVzdHM7CitTRUxFQ1QgKiBGUk9NIHRtcDE7CisKKy0tIFRlc3QgT04gQ09NTUlUIERFTEVURSBS T1dTCitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpIE9OIENPTU1JVCBERUxF VEUgUk9XUzsKK0JFR0lOOworSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEpOworU0VMRUNUICog RlJPTSB0bXAyOworQ09NTUlUOworU0VMRUNUICogRlJPTSB0bXAyOworCistLSBSZXBlYXQgdGVz dCBpbiBhIG5ldyBzZXNzaW9uCitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVz dHM7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxKTsKK1NFTEVDVCAqIEZST00g dG1wMjsKK0NPTU1JVDsKK1NFTEVDVCAqIEZST00gdG1wMjsKK0RST1AgVEFCTEUgdG1wMjsKKwor LS0gT04gQ09NTUlUIERST1Agbm90IGFsbG93ZWQKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0 bXAyIChhIGludCkgT04gQ09NTUlUIERST1A7IC0tIGZhaWwKKworLS0gVHdvLXBoYXNlIGNvbW1p dCBub3QgYWxsb3dlZCB3aXRoIGdsb2JhbCB0ZW1wIHRhYmxlcworQkVHSU47CitTRUxFQ1QgKiBG Uk9NIHRtcDE7CitQUkVQQVJFIFRSQU5TQUNUSU9OICd0d29waGFzZSc7IC0tIGZhaWwKKworLS0g VGVzdCBwYXJ0aXRpb25lZCBnbG9iYWwgdGVtcCB0YWJsZQorQ1JFQVRFIEdMT0JBTCBURU1QIFRB QkxFIHRtcDIgKGEgaW50KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CitDUkVBVEUgR0xPQkFMIFRF TVAgVEFCTEUgdG1wMl9wMSBQQVJUSVRJT04gT0YgdG1wMiBGT1IgVkFMVUVTIElOICgxKTsKK0NS RUFURSBUQUJMRSB0bXAyX3AyIFBBUlRJVElPTiBPRiB0bXAyIEZPUiBWQUxVRVMgSU4gKDIpOwor Q1JFQVRFIFRFTVAgVEFCTEUgbG9jYWxfdG1wIChhIGludCk7CitBTFRFUiBUQUJMRSB0bXAyIEFU VEFDSCBQQVJUSVRJT04gbG9jYWxfdG1wIEZPUiBWQUxVRVMgSU4gKDMpOyAtLSBmYWlsCitJTlNF UlQgSU5UTyB0bXAyIFZBTFVFUyAoMSksICgyKTsKK1NFTEVDVCAqIEZST00gdG1wMiBPUkRFUiBC WSBhOworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2JhbF90ZW1wX3Rlc3RzOworU0VMRUNUICog RlJPTSB0bXAyIE9SREVSIEJZIGE7CitEUk9QIFRBQkxFIHRtcDI7CisKKy0tIFRlc3QgQUxURVIg VEFCTEUgd2l0aCByZXdyaXRlCitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQp OworSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEpOworQUxURVIgVEFCTEUgdG1wMiBBTFRFUiBD T0xVTU4gYSBTRVQgREFUQSBUWVBFIG51bWVyaWM7CitTRUxFQ1QgYSwgcGdfdHlwZW9mKGEpIEZS T00gdG1wMjsKK0RST1AgVEFCTEUgdG1wMjsKKworLS0gVGVzdCBmb3JlaWduIGtleXMKK0NSRUFU RSBUQUJMRSBwZXJtX3BrX3JlbCAoYSBpbnQgUFJJTUFSWSBLRVkpOworQ1JFQVRFIFRFTVAgVEFC TEUgdGVtcF9wa19yZWwgKGEgaW50IFBSSU1BUlkgS0VZKTsKK0NSRUFURSBHTE9CQUwgVEVNUCBU QUJMRSB0bXAyIChhIGludCBSRUZFUkVOQ0VTIHBlcm1fcGtfcmVsKTsgLS0gZmFpbAorQ1JFQVRF IEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50IFJFRkVSRU5DRVMgdGVtcF9wa19yZWwpOyAt LSBmYWlsCitEUk9QIFRBQkxFIHBlcm1fcGtfcmVsLCB0ZW1wX3BrX3JlbDsKKworLS0gVGVzdCBB TFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0 bXAyIChhIGludCk7CitJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSk7CitTRUxFQ1QgKiBGUk9N IHRtcDI7CitTRUxFQ1QgcmVnZXhwX3JlcGxhY2UocGdfcmVsYXRpb25fZmlsZXBhdGgoJ3RtcDIn KSwgJyhcZCspJywgJ05OTicsICdnJyk7CitBTFRFUiBUQUJMRSB0bXAyIFNFVCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2U7CitTRUxFQ1QgKiBGUk9NIHRtcDI7CitTRUxFQ1QgcmVnZXhwX3Jl cGxhY2UocGdfcmVsYXRpb25fZmlsZXBhdGgoJ3RtcDInKSwgJyhcZCspJywgJ05OTicsICdnJyk7 CitEUk9QIFRBQkxFIHRtcDI7CisKKy0tIFRlc3QgZGVwZW5kZW5jeSBvbiB0YWJsZXNwYWNlCitT RVQgYWxsb3dfaW5fcGxhY2VfdGFibGVzcGFjZXMgPSB0cnVlOworQ1JFQVRFIFRBQkxFU1BBQ0Ug cmVncmVzc190ZW1wX3Rlc3RfdGFibGVzcGFjZSBMT0NBVElPTiAnJzsKK0NSRUFURSBHTE9CQUwg VEVNUCBUQUJMRSB0bXAyIChhIGludCkgVEFCTEVTUEFDRSByZWdyZXNzX3RlbXBfdGVzdF90YWJs ZXNwYWNlOworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2JhbF90ZW1wX3Rlc3RzOworRFJPUCBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGVtcF90ZXN0X3RhYmxlc3BhY2U7IC0tIGZhaWwKK0RST1AgVEFC TEUgdG1wMjsKK0RST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RlbXBfdGVzdF90YWJsZXNwYWNlOwor CitTRVQgYWxsb3dfaW5fcGxhY2VfdGFibGVzcGFjZXMgPSB0cnVlOworQ1JFQVRFIFRBQkxFU1BB Q0UgcmVncmVzc190ZW1wX3Rlc3RfdGFibGVzcGFjZSBMT0NBVElPTiAnJzsKK0NSRUFURSBHTE9C QUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCk7CitBTFRFUiBUQUJMRSB0bXAyIFNFVCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGVtcF90ZXN0X3RhYmxlc3BhY2U7CitcYworU0VUIHNlYXJjaF9wYXRoID0g Z2xvYmFsX3RlbXBfdGVzdHM7CitEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190ZW1wX3Rlc3RfdGFi bGVzcGFjZTsgLS0gZmFpbAorRFJPUCBUQUJMRSB0bXAyOworRFJPUCBUQUJMRVNQQUNFIHJlZ3Jl c3NfdGVtcF90ZXN0X3RhYmxlc3BhY2U7CisKKy0tIFRlc3QgVFJVTkNBVEUKK0lOU0VSVCBJTlRP IHRtcDEgVkFMVUVTICgxKTsKK0JFR0lOOworVFJVTkNBVEUgdG1wMTsKK1NFTEVDVCAqIEZST00g dG1wMTsKK1JPTExCQUNLOworU0VMRUNUICogRlJPTSB0bXAxOworCitCRUdJTjsKK1NBVkVQT0lO VCBzcDE7CitUUlVOQ0FURSB0bXAxOworU0VMRUNUICogRlJPTSB0bXAxOworUkVMRUFTRSBzcDE7 CitTRUxFQ1QgKiBGUk9NIHRtcDE7CitST0xMQkFDSzsKK1NFTEVDVCAqIEZST00gdG1wMTsKKwor QkVHSU47CitTQVZFUE9JTlQgc3AxOworVFJVTkNBVEUgdG1wMTsKK1NFTEVDVCAqIEZST00gdG1w MTsKK1JPTExCQUNLIFRPIHNwMTsKK1NFTEVDVCAqIEZST00gdG1wMTsKK0NPTU1JVDsKK1NFTEVD VCAqIEZST00gdG1wMTsKKworVFJVTkNBVEUgdG1wMTsKK1NFTEVDVCAqIEZST00gdG1wMTsKKwor LS0gVGVzdCB2aWV3IGNyZWF0aW9uCitJTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSk7CitDUkVB VEUgVklFVyB2IEFTIFNFTEVDVCAqIEZST00gdG1wMTsKK1NFTEVDVCAqIEZST00gdjsKK0RST1Ag VklFVyB2OworCitDUkVBVEUgVEVNUCBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSB0bXAxOworU0VM RUNUICogRlJPTSB2OworRFJPUCBWSUVXIHY7CisKK0NSRUFURSBHTE9CQUwgVEVNUCBWSUVXIHYg QVMgU0VMRUNUICogRlJPTSB0bXAxOyAtLSBmYWlsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC90eXBlX3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90eXBlX3Nhbml0 eS5zcWwKaW5kZXggOTVkNWI2ZTA5MTUuLmIxZjBhNjBhYmVhIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC90eXBlX3Nhbml0eS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv dHlwZV9zYW5pdHkuc3FsCkBAIC0zNjcsNyArMzY3LDcgQEAgT1JERVIgQlkgMTsKIFNFTEVDVCBj MS5vaWQsIGMxLnJlbG5hbWUKIEZST00gcGdfY2xhc3MgYXMgYzEKIFdIRVJFIHJlbGtpbmQgTk9U IElOICgncicsICdpJywgJ1MnLCAndCcsICd2JywgJ20nLCAnYycsICdmJywgJ3AnLCAnSScpIE9S Ci0gICAgcmVscGVyc2lzdGVuY2UgTk9UIElOICgncCcsICd1JywgJ3QnKSBPUgorICAgIHJlbHBl cnNpc3RlbmNlIE5PVCBJTiAoJ3AnLCAndScsICd0JywgJ2cnKSBPUgogICAgIHJlbHJlcGxpZGVu dCBOT1QgSU4gKCdkJywgJ24nLCAnZicsICdpJyk7CiAKIC0tIEFsbCB0YWJsZXMsIGluZGV4ZXMs IHBhcnRpdGlvbmVkIGluZGV4ZXMgYW5kIG1hdHZpZXdzIHNob3VsZCBoYXZlIGFuCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CmluZGV4IDExN2U3Mzc5ZjEwLi5kZGY5ODI3ZWUyNSAxMDA2NDQKLS0t IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNjEsNiArMTE2MSw3IEBAIEdpc3RUc1ZlY3Rvck9wdGlv bnMKIEdpc3RWYWNTdGF0ZQogR2xvYmFsQ2hhbm5lbEVudHJ5CiBHbG9iYWxDaGFubmVsS2V5CitH bG9iYWxUZW1wUmVsU2htZW1Db250cm9sCiBHbG9iYWxUcmFuc2FjdGlvbgogR2xvYmFsVHJhbnNh Y3Rpb25EYXRhCiBHbG9iYWxWaXNIb3Jpem9uS2luZApAQCAtMTE5MCw2ICsxMTkxLDEwIEBAIEdy b3VwaW5nU2V0CiBHcm91cGluZ1NldERhdGEKIEdyb3VwaW5nU2V0S2luZAogR3JvdXBpbmdTZXRz UGF0aAorR3RyU3RvcmFnZUVudHJ5CitHdHJTaGFyZWRVc2FnZUVudHJ5CitHdHJTaGFyZWRVc2Fn ZUtleQorR3RyVXNhZ2VFbnRyeQogR3VjQWN0aW9uCiBHdWNCb29sQXNzaWduSG9vawogR3VjQm9v bENoZWNrSG9vawotLSAKMi41MS4wCgo= --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0003-Support-indexes-on-global-temporary-tables.patch" Content-Disposition: attachment; filename="v7-0003-Support-indexes-on-global-temporary-tables.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr915ioy2 RnJvbSAxZTcyMzJmYTk3ZTY1ZGJmNDNmNmY4YjVlNTYyZDQ3NDZhOGVmODQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA5IEp1biAyMDI2IDEzOjUwOjQ3ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NyAwMy8xMF0gU3VwcG9ydCBpbmRleGVzIG9uIGdsb2JhbCB0ZW1wb3JhcnkgdGFibGVzLgoKQXMg d2l0aCBsb2NhbCB0ZW1wb3JhcnkgdGFibGVzLCBjb25jdXJyZW50IGluZGV4IGJ1aWxkL3JlaW5k ZXgvZHJvcCBpcwpub3Qgc3VwcG9ydGVkLgotLS0KIGNvbnRyaWIvYmxvb20vYmxpbnNlcnQuYyAg ICAgICAgICAgICAgICAgICAgICB8ICAgNiArLQogY29udHJpYi9ibG9vbS9ibG9vbS5oICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmlu LmMgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdC5j ICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMg ICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVl LmMgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNl cnQuYyAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5z ZXJ0LmMgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvZ2xvYmFsX3RlbXAuYyAg ICAgICAgICAgICB8ICAyNCArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAg ICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgICAg ICAgICAgICAgIHwgIDI3ICsrLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYyAgICAgICAgICAg ICAgICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGkuaCAgICAgICAgICAgICAg ICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2ludGVybmFsLmggICAgICAg ICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dpbl9wcml2YXRlLmggICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdF9wcml2YXRlLmggICAgICAgICAg ICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oYXNoLmggICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc3BnaXN0LmggICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9nbG9iYWwtdGVtcC5vdXQgICB8 IDE0NCArKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFsLXRl bXAuc3BlYyAgICAgfCAgMjUgKystCiAuLi4vbW9kdWxlcy9kdW1teV9pbmRleF9hbS9kdW1teV9p bmRleF9hbS5jICAgfCAgIDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3Rl bXAub3V0ICAgICB8IDE1OCArKysrKysrKysrKystLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2dsb2JhbF90ZW1wLnNxbCAgICAgICAgICB8ICA0MSArKysrLQogMjYgZmlsZXMgY2hhbmdlZCwg NDA1IGluc2VydGlvbnMoKyksIDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv Ymxvb20vYmxpbnNlcnQuYyBiL2NvbnRyaWIvYmxvb20vYmxpbnNlcnQuYwppbmRleCBkZjI0ODU2 ZDlhZS4uODA0Yzc3YWU3NjggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmxpbnNlcnQuYwor KysgYi9jb250cmliL2Jsb29tL2JsaW5zZXJ0LmMKQEAgLTE1OSwxMyArMTU5LDEzIEBAIGJsYnVp bGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQog fQogCiAvKgotICogQnVpbGQgYW4gZW1wdHkgYmxvb20gaW5kZXggaW4gdGhlIGluaXRpYWxpemF0 aW9uIGZvcmsuCisgKiBCdWlsZCBhbiBlbXB0eSBibG9vbSBpbmRleCBpbiB0aGUgc3BlY2lmaWVk IGZvcmsuCiAgKi8KIHZvaWQKLWJsYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK2JsYnVpbGRl bXB0eShSZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVtKQogewogCS8qIEluaXRpYWxp emUgdGhlIG1ldGEgcGFnZSAqLwotCUJsb29tSW5pdE1ldGFwYWdlKGluZGV4LCBJTklUX0ZPUktO VU0pOworCUJsb29tSW5pdE1ldGFwYWdlKGluZGV4LCBmb3JrbnVtKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYmxvb20vYmxvb20uaCBiL2NvbnRyaWIvYmxvb20vYmxvb20uaAppbmRl eCA5YTQxMjViZGZiMS4uNGYwMDU4NDAwNmIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmxv b20uaAorKysgYi9jb250cmliL2Jsb29tL2Jsb29tLmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBleHRl cm4gdm9pZCBibHJlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sIFNjYW5LZXkgc2NhbmtleSwgaW50 IG5zY2Fua2V5cywKIGV4dGVybiB2b2lkIGJsZW5kc2NhbihJbmRleFNjYW5EZXNjIHNjYW4pOwog ZXh0ZXJuIEluZGV4QnVpbGRSZXN1bHQgKmJsYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24g aW5kZXgsCiAJCQkJCQkJCSBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOwotZXh0ZXJuIHZv aWQgYmxidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVybiB2b2lkIGJsYnVpbGRlbXB0 eShSZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVtKTsKIGV4dGVybiBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKmJsYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sCiAJCQkJCQkJ CQkJICAgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywgSW5kZXhCdWxrRGVsZXRlQ2FsbGJh Y2sgY2FsbGJhY2ssCiAJCQkJCQkJCQkJICAgdm9pZCAqY2FsbGJhY2tfc3RhdGUpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2JyaW4vYnJpbi5jCmluZGV4IGJkYjMwNzUyZTA5Li45NDQ5NGM5ZDhmYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9i cmluL2JyaW4uYwpAQCAtMTI3NiwxMiArMTI3NiwxMiBAQCBicmluYnVpbGQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5kZXhJbmZvKQogfQogCiB2b2lkCi1icmlu YnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK2JyaW5idWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4 LCBGb3JrTnVtYmVyIGZvcmtudW0pCiB7CiAJQnVmZmVyCQltZXRhYnVmOwogCiAJLyogQW4gZW1w dHkgQlJJTiBpbmRleCBoYXMgYSBtZXRhcGFnZSBvbmx5LiAqLwotCW1ldGFidWYgPSBFeHRlbmRC dWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLCBOVUxMLAorCW1ldGFidWYg PSBFeHRlbmRCdWZmZXJlZFJlbChCTVJfUkVMKGluZGV4KSwgZm9ya251bSwgTlVMTCwKIAkJCQkJ CQkJRUJfTE9DS19GSVJTVCB8IEVCX1NLSVBfRVhURU5TSU9OX0xPQ0spOwogCiAJLyogSW5pdGlh bGl6ZSBhbmQgeGxvZyBtZXRhYnVmZmVyLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpbi9naW5pbnNlcnQuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMK aW5kZXggY2I5ZWQzYjU2M2MuLmU5YzJkMWVlZGYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2luL2dpbmluc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKQEAgLTgwNiwxOCArODA2LDE4IEBAIGdpbmJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0 aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4SW5mbykKIH0KIAogLyoKLSAqCWdpbmJ1aWxkZW1w dHkoKSAtLSBidWlsZCBhbiBlbXB0eSBnaW4gaW5kZXggaW4gdGhlIGluaXRpYWxpemF0aW9uIGZv cmsKKyAqCWdpbmJ1aWxkZW1wdHkoKSAtLSBidWlsZCBhbiBlbXB0eSBnaW4gaW5kZXggaW4gdGhl IHNwZWNpZmllZCBmb3JrCiAgKi8KIHZvaWQKLWdpbmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgp CitnaW5idWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pCiB7CiAJ QnVmZmVyCQlSb290QnVmZmVyLAogCQkJCU1ldGFCdWZmZXI7CiAKIAkvKiBBbiBlbXB0eSBHSU4g aW5kZXggaGFzIHR3byBwYWdlcy4gKi8KLQlNZXRhQnVmZmVyID0gRXh0ZW5kQnVmZmVyZWRSZWwo Qk1SX1JFTChpbmRleCksIElOSVRfRk9SS05VTSwgTlVMTCwKKwlNZXRhQnVmZmVyID0gRXh0ZW5k QnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIGZvcmtudW0sIE5VTEwsCiAJCQkJCQkJCSAgIEVC X0xPQ0tfRklSU1QgfCBFQl9TS0lQX0VYVEVOU0lPTl9MT0NLKTsKLQlSb290QnVmZmVyID0gRXh0 ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIElOSVRfRk9SS05VTSwgTlVMTCwKKwlSb290 QnVmZmVyID0gRXh0ZW5kQnVmZmVyZWRSZWwoQk1SX1JFTChpbmRleCksIGZvcmtudW0sIE5VTEws CiAJCQkJCQkJCSAgIEVCX0xPQ0tfRklSU1QgfCBFQl9TS0lQX0VYVEVOU0lPTl9MT0NLKTsKIAog CS8qIEluaXRpYWxpemUgYW5kIHhsb2cgbWV0YWJ1ZmZlciBhbmQgcm9vdCBidWZmZXIuICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0LmMKaW5kZXggODU2NWUyMjViZTcuLjllYWU0NDk3ODZiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdC5jCkBAIC0xMzQsMTUgKzEzNCwxNSBAQCBjcmVhdGVUZW1wR2lzdENvbnRl eHQodm9pZCkKIH0KIAogLyoKLSAqCWdpc3RidWlsZGVtcHR5KCkgLS0gYnVpbGQgYW4gZW1wdHkg Z2lzdCBpbmRleCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gZm9yaworICoJZ2lzdGJ1aWxkZW1wdHko KSAtLSBidWlsZCBhbiBlbXB0eSBnaXN0IGluZGV4IGluIHRoZSBzcGVjaWZpZWQgZm9yawogICov CiB2b2lkCi1naXN0YnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK2dpc3RidWlsZGVtcHR5KFJl bGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pCiB7CiAJQnVmZmVyCQlidWZmZXI7CiAK IAkvKiBJbml0aWFsaXplIHRoZSByb290IHBhZ2UgKi8KLQlidWZmZXIgPSBFeHRlbmRCdWZmZXJl ZFJlbChCTVJfUkVMKGluZGV4KSwgSU5JVF9GT1JLTlVNLCBOVUxMLAorCWJ1ZmZlciA9IEV4dGVu ZEJ1ZmZlcmVkUmVsKEJNUl9SRUwoaW5kZXgpLCBmb3JrbnVtLCBOVUxMLAogCQkJCQkJCSAgIEVC X1NLSVBfRVhURU5TSU9OX0xPQ0sgfCBFQl9MT0NLX0ZJUlNUKTsKIAogCS8qIEluaXRpYWxpemUg YW5kIHhsb2cgYnVmZmVyICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9o YXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKaW5kZXggOGQ4Y2QzMGRjMzgu LmNkY2JiOWVmYWUwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaC5jCkBAIC0xNzUsMTAgKzE3NSwxMCBA QCBoYXNoYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4SW5mbyAqaW5k ZXhJbmZvKQogCSAqIG1ldGFwYWdlLCBub3IgdGhlIGZpcnN0IGJpdG1hcCBwYWdlLgogCSAqLwog CXNvcnRfdGhyZXNob2xkID0gKG1haW50ZW5hbmNlX3dvcmtfbWVtICogKFNpemUpIDEwMjQpIC8g QkxDS1NaOwotCWlmIChpbmRleC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNU RU5DRV9URU1QKQotCQlzb3J0X3RocmVzaG9sZCA9IE1pbihzb3J0X3RocmVzaG9sZCwgTkJ1ZmZl cnMpOwotCWVsc2UKKwlpZiAoUmVsYXRpb25Vc2VzTG9jYWxCdWZmZXJzKGluZGV4KSkKIAkJc29y dF90aHJlc2hvbGQgPSBNaW4oc29ydF90aHJlc2hvbGQsIE5Mb2NCdWZmZXIpOworCWVsc2UKKwkJ c29ydF90aHJlc2hvbGQgPSBNaW4oc29ydF90aHJlc2hvbGQsIE5CdWZmZXJzKTsKIAogCWlmIChu dW1fYnVja2V0cyA+PSBzb3J0X3RocmVzaG9sZCkKIAkJYnVpbGRzdGF0ZS5zcG9vbCA9IF9oX3Nw b29saW5pdChoZWFwLCBpbmRleCwgbnVtX2J1Y2tldHMpOwpAQCAtMjE1LDEyICsyMTUsMTIgQEAg aGFzaGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJbmRleEluZm8gKmluZGV4 SW5mbykKIH0KIAogLyoKLSAqCWhhc2hidWlsZGVtcHR5KCkgLS0gYnVpbGQgYW4gZW1wdHkgaGFz aCBpbmRleCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gZm9yaworICoJaGFzaGJ1aWxkZW1wdHkoKSAt LSBidWlsZCBhbiBlbXB0eSBoYXNoIGluZGV4IGluIHRoZSBzcGVjaWZpZWQgZm9yawogICovCiB2 b2lkCi1oYXNoYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCkKK2hhc2hidWlsZGVtcHR5KFJlbGF0 aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pCiB7Ci0JX2hhc2hfaW5pdChpbmRleCwgMCwg SU5JVF9GT1JLTlVNKTsKKwlfaGFzaF9pbml0KGluZGV4LCAwLCBmb3JrbnVtKTsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cmVlLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCmluZGV4IDNkZjJjNzUyZWFkLi5iZTFiNWNlNTFm OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRyZWUuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHJlZS5jCkBAIC0xNzcsMTYgKzE3NywxNiBAQCBi dGhhbmRsZXIoUEdfRlVOQ1RJT05fQVJHUykKIH0KIAogLyoKLSAqCWJ0YnVpbGRlbXB0eSgpIC0t IGJ1aWxkIGFuIGVtcHR5IGJ0cmVlIGluZGV4IGluIHRoZSBpbml0aWFsaXphdGlvbiBmb3JrCisg KglidGJ1aWxkZW1wdHkoKSAtLSBidWlsZCBhbiBlbXB0eSBidHJlZSBpbmRleCBpbiB0aGUgc3Bl Y2lmaWVkIGZvcmsKICAqLwogdm9pZAotYnRidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4KQorYnRi dWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pCiB7CiAJYm9vbAkJ YWxsZXF1YWxpbWFnZSA9IF9idF9hbGxlcXVhbGltYWdlKGluZGV4LCBmYWxzZSk7CiAJQnVsa1dy aXRlU3RhdGUgKmJ1bGtzdGF0ZTsKIAlCdWxrV3JpdGVCdWZmZXIgbWV0YWJ1ZjsKIAotCWJ1bGtz dGF0ZSA9IHNtZ3JfYnVsa19zdGFydF9yZWwoaW5kZXgsIElOSVRfRk9SS05VTSk7CisJYnVsa3N0 YXRlID0gc21ncl9idWxrX3N0YXJ0X3JlbChpbmRleCwgZm9ya251bSk7CiAKIAkvKiBDb25zdHJ1 Y3QgbWV0YXBhZ2UuICovCiAJbWV0YWJ1ZiA9IHNtZ3JfYnVsa19nZXRfYnVmKGJ1bGtzdGF0ZSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ2luc2VydC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwppbmRleCA3ODBlZjY0NmE1NC4uMWEx NGY4NDE3NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BnaW5zZXJ0 LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGdpbnNlcnQuYwpAQCAtMTQ4LDE1 ICsxNDgsMTUgQEAgc3BnYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsIEluZGV4 SW5mbyAqaW5kZXhJbmZvKQogfQogCiAvKgotICogQnVpbGQgYW4gZW1wdHkgU1BHaVNUIGluZGV4 IGluIHRoZSBpbml0aWFsaXphdGlvbiBmb3JrCisgKiBCdWlsZCBhbiBlbXB0eSBTUEdpU1QgaW5k ZXggaW4gdGhlIHNwZWNpZmllZCBmb3JrCiAgKi8KIHZvaWQKLXNwZ2J1aWxkZW1wdHkoUmVsYXRp b24gaW5kZXgpCitzcGdidWlsZGVtcHR5KFJlbGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtu dW0pCiB7CiAJQnVsa1dyaXRlU3RhdGUgKmJ1bGtzdGF0ZTsKIAlCdWxrV3JpdGVCdWZmZXIgYnVm OwogCi0JYnVsa3N0YXRlID0gc21ncl9idWxrX3N0YXJ0X3JlbChpbmRleCwgSU5JVF9GT1JLTlVN KTsKKwlidWxrc3RhdGUgPSBzbWdyX2J1bGtfc3RhcnRfcmVsKGluZGV4LCBmb3JrbnVtKTsKIAog CS8qIENvbnN0cnVjdCBtZXRhcGFnZS4gKi8KIAlidWYgPSBzbWdyX2J1bGtfZ2V0X2J1ZihidWxr c3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2Vy dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCmluZGV4IGYyZTEw YjgyYjdkLi45YjA5OWQ4N2YzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ2luc2VydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dpbnNl cnQuYwpAQCAtNTYxLDcgKzU2MSw4IEBAIFhMb2dTaW1wbGVJbnNlcnRJbnQ2NChSbWdySWQgcm1p ZCwgdWludDggaW5mbywgaW50NjQgdmFsdWUpCiBYTG9nUmVjUHRyCiBYTG9nR2V0RmFrZUxTTihS ZWxhdGlvbiByZWwpCiB7Ci0JaWYgKHJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQ RVJTSVNURU5DRV9URU1QKQorCWlmIChyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVM UEVSU0lTVEVOQ0VfVEVNUCB8fAorCQlyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVM UEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApCiAJewogCQkvKgogCQkgKiBUZW1wb3JhcnkgcmVsYXRp b25zIGFyZSBvbmx5IGFjY2Vzc2libGUgaW4gb3VyIHNlc3Npb24sIHNvIGEgc2ltcGxlCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2dsb2JhbF90ZW1wLmMKaW5kZXggYzIxOTVkY2UyZTAuLjM4NjNjYjEyODM3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jCkBAIC01Myw4ICs1MywxMCBAQAogICovCiAjaW5jbHVk ZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9hbWFwaS5oIgogI2luY2x1ZGUgImFj Y2Vzcy9nZW5hbS5oIgogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgorI2luY2x1ZGUgImFj Y2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCkBAIC04NDksNiArODUx LDI4IEBAIEluaXRHbG9iYWxUZW1wUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24pCiAKIAkJaWYg KHJlbGF0aW9uLT5yZF9yZWwtPnJlbG9uY29tbWl0ID09IFJFTE9OQ09NTUlUX0RFTEVURV9ST1dT KQogCQkJcmVnaXN0ZXJfb25fY29tbWl0X2FjdGlvbihyZWxhdGlvbi0+cmRfaWQsIE9OQ09NTUlU X0RFTEVURV9ST1dTKTsKKworCQkvKgorCQkgKiBJZiBpdCdzIGFuIGluZGV4LCBidWlsZCBhbiBl bXB0eSBpbmRleCBpbiB0aGUgbWFpbiBmb3JrLgorCQkgKgorCQkgKiBJZiB0aGUgdGFibGUgaXMg bm90IGVtcHR5IChjYW4gaGFwcGVuIGlmIGFub3RoZXIgc2Vzc2lvbiBhZGRlZCB0aGUKKwkJICog aW5kZXggYWZ0ZXIgd2UgcG9wdWxhdGVkIHRoZSB0YWJsZSksIHRoZW4gbWFyayBpdCBhcyBpbnZh bGlkLiAgVGhlCisJCSAqIHVzZXIgd2lsbCBuZWVkIHRvIGRvIGEgUkVJTkRFWCB0byBidWlsZCBp dC4KKwkJICovCisJCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfSU5E RVgpCisJCXsKKwkJCVJlbGF0aW9uCWhlYXBSZWxhdGlvbjsKKwkJCUJsb2NrTnVtYmVyIG5ibG9j a3M7CisKKwkJCXJlbGF0aW9uLT5yZF9pbmRhbS0+YW1idWlsZGVtcHR5KHJlbGF0aW9uLCBNQUlO X0ZPUktOVU0pOworCisJCQloZWFwUmVsYXRpb24gPSB0YWJsZV9vcGVuKHJlbGF0aW9uLT5yZF9p bmRleC0+aW5kcmVsaWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQluYmxvY2tzID0gUmVsYXRpb25H ZXROdW1iZXJPZkJsb2NrcyhoZWFwUmVsYXRpb24pOworCQkJdGFibGVfY2xvc2UoaGVhcFJlbGF0 aW9uLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQlpZiAobmJsb2NrcyA+IDApCisJCQkJcmVsYXRp b24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkID0gZmFsc2U7CisJCX0KIAl9CiAKIAkvKiBUaGUgcmVt YWluaW5nIGluaXRpYWxpemF0aW9uIHdvcmtzIGFzIGlmIHdlIGhhZCBjcmVhdGVkIGl0IGxvY2Fs bHkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBmZmM3ZjZjMjU0ZS4uMzMwYzc3NTY3NTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2luZGV4LmMKQEAgLTIxNTcsNyArMjE1Nyw4IEBAIGluZGV4X2Ryb3AoT2lkIGluZGV4SWQs IGJvb2wgY29uY3VycmVudCwgYm9vbCBjb25jdXJyZW50X2xvY2tfbW9kZSkKIAkgKiBsb2NrIChz ZWUgY29tbWVudHMgaW4gUmVtb3ZlUmVsYXRpb25zKSwgYW5kIGEgbm9uLWNvbmN1cnJlbnQgRFJP UCBpcwogCSAqIG1vcmUgZWZmaWNpZW50LgogCSAqLwotCUFzc2VydChnZXRfcmVsX3BlcnNpc3Rl bmNlKGluZGV4SWQpICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgfHwKKwlBc3NlcnQoKGdldF9yZWxf cGVyc2lzdGVuY2UoaW5kZXhJZCkgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCAmJgorCQkJZ2V0X3Jl bF9wZXJzaXN0ZW5jZShpbmRleElkKSAhPSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkgfHwK IAkJICAgKCFjb25jdXJyZW50ICYmICFjb25jdXJyZW50X2xvY2tfbW9kZSkpOwogCiAJLyoKQEAg LTMxMTMsNyArMzExNCw3IEBAIGluZGV4X2J1aWxkKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAl7 CiAJCXNtZ3JjcmVhdGUoUmVsYXRpb25HZXRTbWdyKGluZGV4UmVsYXRpb24pLCBJTklUX0ZPUktO VU0sIGZhbHNlKTsKIAkJbG9nX3NtZ3JjcmVhdGUoJmluZGV4UmVsYXRpb24tPnJkX2xvY2F0b3Is IElOSVRfRk9SS05VTSk7Ci0JCWluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbWJ1aWxkZW1wdHko aW5kZXhSZWxhdGlvbik7CisJCWluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbWJ1aWxkZW1wdHko aW5kZXhSZWxhdGlvbiwgSU5JVF9GT1JLTlVNKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYwppbmRleCA3MTNiYjVkMTBmMS4uOGJhYWM1OGVmODEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jCkBAIC02MjYsOCArNjI2LDE2IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkgKiBpcyBtb3JlIGVmZmljaWVudC4gIERvIHRoaXMgYmVmb3JlIGFueSB1c2Ugb2Yg dGhlIGNvbmN1cnJlbnQgb3B0aW9uIGlzCiAJICogZG9uZS4KIAkgKi8KLQlpZiAoc3RtdC0+Y29u Y3VycmVudCAmJiBnZXRfcmVsX3BlcnNpc3RlbmNlKHRhYmxlSWQpICE9IFJFTFBFUlNJU1RFTkNF X1RFTVApCi0JCWNvbmN1cnJlbnQgPSB0cnVlOworCWlmIChzdG10LT5jb25jdXJyZW50KQorCXsK KwkJY2hhcgkJcmVscGVyc2lzdGVuY2UgPSBnZXRfcmVsX3BlcnNpc3RlbmNlKHRhYmxlSWQpOwor CisJCWlmIChyZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QIHx8CisJCQlyZWxw ZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkKKwkJCWNvbmN1cnJlbnQg PSBmYWxzZTsKKwkJZWxzZQorCQkJY29uY3VycmVudCA9IHRydWU7CisJfQogCWVsc2UKIAkJY29u Y3VycmVudCA9IGZhbHNlOwogCkBAIC0zMTA2LDcgKzMxMTQsOCBAQCBSZWluZGV4SW5kZXgoY29u c3QgUmVpbmRleFN0bXQgKnN0bXQsIGNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcywgYm9vbCBp c1RvcExldgogCWlmIChyZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCiAJCVJl aW5kZXhQYXJ0aXRpb25zKHN0bXQsIGluZE9pZCwgcGFyYW1zLCBpc1RvcExldmVsKTsKIAllbHNl IGlmICgocGFyYW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkpICE9IDAgJiYK LQkJCSBwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQkJIHBlcnNpc3RlbmNl ICE9IFJFTFBFUlNJU1RFTkNFX1RFTVAgJiYKKwkJCSBwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNU RU5DRV9HTE9CQUxfVEVNUCkKIAkJUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KHN0bXQsIGlu ZE9pZCwgcGFyYW1zKTsKIAllbHNlCiAJewpAQCAtMzIwMiw2ICszMjExLDcgQEAgc3RhdGljIE9p ZAogUmVpbmRleFRhYmxlKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBjb25zdCBSZWluZGV4UGFy YW1zICpwYXJhbXMsIGJvb2wgaXNUb3BMZXZlbCkKIHsKIAlPaWQJCQloZWFwT2lkOworCWNoYXIJ CXBlcnNpc3RlbmNlOwogCWJvb2wJCXJlc3VsdDsKIAljb25zdCBSYW5nZVZhciAqcmVsYXRpb24g PSBzdG10LT5yZWxhdGlvbjsKIApAQCAtMzIxOSwxMCArMzIyOSwxMyBAQCBSZWluZGV4VGFibGUo Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIGNvbnN0IFJlaW5kZXhQYXJhbXMgKnBhcmFtcywgYm9v bCBpc1RvcExldgogCQkJCQkJCQkJICAgMCwKIAkJCQkJCQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tN YWludGFpbnNUYWJsZSwgTlVMTCk7CiAKKwlwZXJzaXN0ZW5jZSA9IGdldF9yZWxfcGVyc2lzdGVu Y2UoaGVhcE9pZCk7CisKIAlpZiAoZ2V0X3JlbF9yZWxraW5kKGhlYXBPaWQpID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUpCiAJCVJlaW5kZXhQYXJ0aXRpb25zKHN0bXQsIGhlYXBPaWQsIHBh cmFtcywgaXNUb3BMZXZlbCk7CiAJZWxzZSBpZiAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhP UFRfQ09OQ1VSUkVOVExZKSAhPSAwICYmCi0JCQkgZ2V0X3JlbF9wZXJzaXN0ZW5jZShoZWFwT2lk KSAhPSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQkJIHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RF TkNFX1RFTVAgJiYKKwkJCSBwZXJzaXN0ZW5jZSAhPSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVN UCkKIAl7CiAJCXJlc3VsdCA9IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShzdG10LCBoZWFw T2lkLCBwYXJhbXMpOwogCkBAIC0zNjQ2LDcgKzM2NTksOCBAQCBSZWluZGV4TXVsdGlwbGVJbnRl cm5hbChjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgY29uc3QgTGlzdCAqcmVsaWRzLCBjb25zdCBS ZWluZAogCQlBc3NlcnQoIVJFTEtJTkRfSEFTX1BBUlRJVElPTlMocmVsa2luZCkpOwogCiAJCWlm ICgocGFyYW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkpICE9IDAgJiYKLQkJ CXJlbHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVApCisJCQlyZWxwZXJzaXN0ZW5j ZSAhPSBSRUxQRVJTSVNURU5DRV9URU1QICYmCisJCQlyZWxwZXJzaXN0ZW5jZSAhPSBSRUxQRVJT SVNURU5DRV9HTE9CQUxfVEVNUCkKIAkJewogCQkJUmVpbmRleFBhcmFtcyBuZXdwYXJhbXMgPSAq cGFyYW1zOwogCkBAIC00MDg4LDcgKzQxMDIsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50 bHkoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgog CQlpZHgtPmFtSWQgPSBpbmRleFJlbC0+cmRfcmVsLT5yZWxhbTsKIAogCQkvKiBUaGlzIGZ1bmN0 aW9uIHNob3VsZG4ndCBiZSBjYWxsZWQgZm9yIHRlbXBvcmFyeSByZWxhdGlvbnMuICovCi0JCWlm IChpbmRleFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1Q KQorCQlpZiAoaW5kZXhSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVO Q0VfVEVNUCB8fAorCQkJaW5kZXhSZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVS U0lTVEVOQ0VfR0xPQkFMX1RFTVApCiAJCQllbG9nKEVSUk9SLCAiY2Fubm90IHJlaW5kZXggYSB0 ZW1wb3JhcnkgdGFibGUgY29uY3VycmVudGx5Iik7CiAKIAkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0 X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsIGlkeC0+dGFibGVJZCk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggODQ2YmQ3YzFmYmUuLjQ5NWU0OGJl NjM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03MzY0LDYgKzczNjQs NyBAQCBwbGFuX2NyZWF0ZV9pbmRleF93b3JrZXJzKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lk KQogCSAqIHNhZmUuCiAJICovCiAJaWYgKGhlYXAtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0g UkVMUEVSU0lTVEVOQ0VfVEVNUCB8fAorCQloZWFwLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09 IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QIHx8CiAJCSFpc19wYXJhbGxlbF9zYWZlKHJvb3Qs IChOb2RlICopIFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleCkpIHx8CiAJCSFpc19w YXJhbGxlbF9zYWZlKHJvb3QsIChOb2RlICopIFJlbGF0aW9uR2V0SW5kZXhQcmVkaWNhdGUoaW5k ZXgpKSkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMgYi9zcmMv YmluL3NjcmlwdHMvcmVpbmRleGRiLmMKaW5kZXggZDdmYjE2ZDNjODUuLjcwZGEwN2QyMzY5IDEw MDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMKKysrIGIvc3JjL2Jpbi9zY3Jp cHRzL3JlaW5kZXhkYi5jCkBAIC02NTUsNiArNjU1LDggQEAgZ2V0X3BhcmFsbGVsX3RhYmxlc19s aXN0KFBHY29ubiAqY29ubiwgUmVpbmRleFR5cGUgdHlwZSwKIAkJCQkJCQkJIENwcEFzU3RyaW5n MihSRUxLSU5EX01BVFZJRVcpICIpXG4iCiAJCQkJCQkJCSAiICAgQU5EIGMucmVscGVyc2lzdGVu Y2UgIT0gIgogCQkJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX1RFTVApICJcbiIK KwkJCQkJCQkJICIgICBBTkQgYy5yZWxwZXJzaXN0ZW5jZSAhPSAiCisJCQkJCQkJCSBDcHBBc1N0 cmluZzIoUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVApICJcbiIKIAkJCQkJCQkJICIgT1JERVIg QlkgYy5yZWxwYWdlcyBERVNDOyIpOwogCQkJYnJlYWs7CiAKQEAgLTY3OCw2ICs2ODAsOCBAQCBn ZXRfcGFyYWxsZWxfdGFibGVzX2xpc3QoUEdjb25uICpjb25uLCBSZWluZGV4VHlwZSB0eXBlLAog CQkJCQkJCQkJIENwcEFzU3RyaW5nMihSRUxLSU5EX01BVFZJRVcpICIpXG4iCiAJCQkJCQkJCQkg IiAgIEFORCBjLnJlbHBlcnNpc3RlbmNlICE9ICIKIAkJCQkJCQkJCSBDcHBBc1N0cmluZzIoUkVM UEVSU0lTVEVOQ0VfVEVNUCkgIlxuIgorCQkJCQkJCQkJICIgICBBTkQgYy5yZWxwZXJzaXN0ZW5j ZSAhPSAiCisJCQkJCQkJCQkgQ3BwQXNTdHJpbmcyKFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1Q KSAiXG4iCiAJCQkJCQkJCQkgIiBBTkQgbnMubnNwbmFtZSBJTiAoIik7CiAKIAkJCQlmb3IgKGNl bGwgPSB1c2VyX2xpc3QtPmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2FtYXBpLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvYW1hcGku aAppbmRleCA3OTI0MDMzMzUzMC4uYjNiOWNiNjAzOWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9hbWFwaS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9hbWFwaS5oCkBAIC0xNSw2 ICsxNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2NtcHR5cGUuaCIKICNpbmNsdWRlICJhY2Nlc3Mv Z2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3RyYXRudW0uaCIKKyNpbmNsdWRlICJjb21tb24v cmVscGF0aC5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVzLmgiCiAjaW5jbHVkZSAibm9kZXMvcGdf bGlzdC5oIgogCkBAIC0xMTUsNyArMTE2LDggQEAgdHlwZWRlZiBJbmRleEJ1aWxkUmVzdWx0ICoo KmFtYnVpbGRfZnVuY3Rpb24pIChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJCSAg IEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKIAogLyogYnVpbGQgZW1wdHkgaW5kZXggKi8KLXR5cGVk ZWYgdm9pZCAoKmFtYnVpbGRlbXB0eV9mdW5jdGlvbikgKFJlbGF0aW9uIGluZGV4UmVsYXRpb24p OwordHlwZWRlZiB2b2lkICgqYW1idWlsZGVtcHR5X2Z1bmN0aW9uKSAoUmVsYXRpb24gaW5kZXhS ZWxhdGlvbiwKKwkJCQkJCQkJCSAgIEZvcmtOdW1iZXIgZm9ya251bSk7CiAKIC8qIGluc2VydCB0 aGlzIHR1cGxlICovCiB0eXBlZGVmIGJvb2wgKCphbWluc2VydF9mdW5jdGlvbikgKFJlbGF0aW9u IGluZGV4UmVsYXRpb24sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvYnJpbl9pbnRl cm5hbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaAppbmRleCBlMTdjN2Zl ZTUxMS4uMTAxMzcyNzVjNGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9icmluX2lu dGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2JyaW5faW50ZXJuYWwuaApAQCAtOTAs NyArOTAsNyBAQCBleHRlcm4gQnJpbkRlc2MgKmJyaW5fYnVpbGRfZGVzYyhSZWxhdGlvbiByZWwp OwogZXh0ZXJuIHZvaWQgYnJpbl9mcmVlX2Rlc2MoQnJpbkRlc2MgKmJkZXNjKTsKIGV4dGVybiBJ bmRleEJ1aWxkUmVzdWx0ICpicmluYnVpbGQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgs CiAJCQkJCQkJCSAgIEluZGV4SW5mbyAqaW5kZXhJbmZvKTsKLWV4dGVybiB2b2lkIGJyaW5idWls ZGVtcHR5KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVybiB2b2lkIGJyaW5idWlsZGVtcHR5KFJlbGF0 aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pOwogZXh0ZXJuIGJvb2wgYnJpbmluc2VydChS ZWxhdGlvbiBpZHhSZWwsIERhdHVtICp2YWx1ZXMsIGJvb2wgKm51bGxzLAogCQkJCQkgICBJdGVt UG9pbnRlciBoZWFwdGlkLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkgICBJbmRleFVuaXF1ZUNo ZWNrIGNoZWNrVW5pcXVlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dpbl9wcml2 YXRlLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2luX3ByaXZhdGUuaAppbmRleCA2NzI1ZWUyODM5 Zi4uMWNlN2JmZmJlNzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW5fcHJpdmF0 ZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naW5fcHJpdmF0ZS5oCkBAIC0xMTAsNyArMTEw LDcgQEAgZXh0ZXJuIGNoYXIgKmdpbmJ1aWxkcGhhc2VuYW1lKGludDY0IHBoYXNlbnVtKTsKIC8q IGdpbmluc2VydC5jICovCiBleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqZ2luYnVpbGQoUmVsYXRp b24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCSAgc3RydWN0IEluZGV4SW5mbyAqaW5k ZXhJbmZvKTsKLWV4dGVybiB2b2lkIGdpbmJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpOworZXh0 ZXJuIHZvaWQgZ2luYnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVt KTsKIGV4dGVybiBib29sIGdpbmluc2VydChSZWxhdGlvbiBpbmRleCwgRGF0dW0gKnZhbHVlcywg Ym9vbCAqaXNudWxsLAogCQkJCQkgIEl0ZW1Qb2ludGVyIGh0X2N0aWQsIFJlbGF0aW9uIGhlYXBS ZWwsCiAJCQkJCSAgSW5kZXhVbmlxdWVDaGVjayBjaGVja1VuaXF1ZSwKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 X3ByaXZhdGUuaAppbmRleCA0NDUxNGYxY2I4ZC4uMzM0YzNkZTQ1NDEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2lzdF9wcml2YXRlLmgKQEAgLTM5OSw3ICszOTksNyBAQCB0eXBlZGVmIHN0cnVjdCBHaVNUT3B0 aW9ucwogfSBHaVNUT3B0aW9uczsKIAogLyogZ2lzdC5jICovCi1leHRlcm4gdm9pZCBnaXN0YnVp bGRlbXB0eShSZWxhdGlvbiBpbmRleCk7CitleHRlcm4gdm9pZCBnaXN0YnVpbGRlbXB0eShSZWxh dGlvbiBpbmRleCwgRm9ya051bWJlciBmb3JrbnVtKTsKIGV4dGVybiBib29sIGdpc3RpbnNlcnQo UmVsYXRpb24gciwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAogCQkJCQkgICBJdGVtUG9p bnRlciBodF9jdGlkLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJCQkgICBJbmRleFVuaXF1ZUNoZWNr IGNoZWNrVW5pcXVlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hhc2guaCBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oYXNoLmgKaW5kZXggYTg3MDJmMGU1ZWEuLmE3MTlkMzc0YWYxIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFzaC5oCisrKyBiL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oYXNoLmgKQEAgLTM2Miw3ICszNjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBIYXNoT3B0aW9u cwogCiBleHRlcm4gSW5kZXhCdWlsZFJlc3VsdCAqaGFzaGJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJl bGF0aW9uIGluZGV4LAogCQkJCQkJCQkgICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOwot ZXh0ZXJuIHZvaWQgaGFzaGJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgpOworZXh0ZXJuIHZvaWQg aGFzaGJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251bSk7CiBleHRl cm4gYm9vbCBoYXNoaW5zZXJ0KFJlbGF0aW9uIHJlbCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNu dWxsLAogCQkJCQkgICBJdGVtUG9pbnRlciBodF9jdGlkLCBSZWxhdGlvbiBoZWFwUmVsLAogCQkJ CQkgICBJbmRleFVuaXF1ZUNoZWNrIGNoZWNrVW5pcXVlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHJlZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL25idHJlZS5oCmluZGV4IDMw OTdlOWJiMWFmLi44MDUzZGZlM2Q2YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHJlZS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnRyZWUuaApAQCAtMTE1MSw3ICsxMTUx LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQlRPcHRpb25zCiAvKgogICogZXh0ZXJuYWwgZW50cnkgcG9p bnRzIGZvciBidHJlZSwgaW4gbmJ0cmVlLmMKICAqLwotZXh0ZXJuIHZvaWQgYnRidWlsZGVtcHR5 KFJlbGF0aW9uIGluZGV4KTsKK2V4dGVybiB2b2lkIGJ0YnVpbGRlbXB0eShSZWxhdGlvbiBpbmRl eCwgRm9ya051bWJlciBmb3JrbnVtKTsKIGV4dGVybiBib29sIGJ0aW5zZXJ0KFJlbGF0aW9uIHJl bCwgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAogCQkJCQkgSXRlbVBvaW50ZXIgaHRfY3Rp ZCwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJIEluZGV4VW5pcXVlQ2hlY2sgY2hlY2tVbmlxdWUs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BnaXN0LmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc3BnaXN0LmgKaW5kZXggMDgzZDkzZjhmZmQuLjM5MmM2NTM4Y2JmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BnaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Nw Z2lzdC5oCkBAIC0xOTUsNyArMTk1LDcgQEAgZXh0ZXJuIGJ5dGVhICpzcGdvcHRpb25zKERhdHVt IHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUpOwogLyogc3BnaW5zZXJ0LmMgKi8KIGV4dGVybiBJ bmRleEJ1aWxkUmVzdWx0ICpzcGdidWlsZChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAkJCQkJCQkJICBzdHJ1Y3QgSW5kZXhJbmZvICppbmRleEluZm8pOwotZXh0ZXJuIHZvaWQgc3Bn YnVpbGRlbXB0eShSZWxhdGlvbiBpbmRleCk7CitleHRlcm4gdm9pZCBzcGdidWlsZGVtcHR5KFJl bGF0aW9uIGluZGV4LCBGb3JrTnVtYmVyIGZvcmtudW0pOwogZXh0ZXJuIGJvb2wgc3BnaW5zZXJ0 KFJlbGF0aW9uIGluZGV4LCBEYXR1bSAqdmFsdWVzLCBib29sICppc251bGwsCiAJCQkJCSAgSXRl bVBvaW50ZXIgaHRfY3RpZCwgUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJICBJbmRleFVuaXF1ZUNo ZWNrIGNoZWNrVW5pcXVlLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVk L2dsb2JhbC10ZW1wLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9nbG9iYWwtdGVt cC5vdXQKaW5kZXggNWFjOGVjY2JiYTYuLjNhNmFmN2ViMjNlIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0CisrKyBiL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9nbG9iYWwtdGVtcC5vdXQKQEAgLTI1MCwzICsyNTAsMTQ3IEBAIHN0ZXAg Y3JlYXRlMWRyOiBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoa2V5IGludCwgdmFsIHRl eHQpIE9OIENPTU1JVCBERUxFCiBzdGVwIGluczFfMjogSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMg KDEsICdzMScpOwogc3RlcCBpbnMyXzI6IElOU0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxLCAnczIn KTsKIHN0ZXAgZHJvcDE6IERST1AgVEFCTEUgdG1wMjsKKworc3RhcnRpbmcgcGVybXV0YXRpb246 IGluczEgaWR4MSBzZWwxX2lkeCBpbnMyIHNlbDJfaWR4CitzdGVwIGluczE6IElOU0VSVCBJTlRP IHRtcCBWQUxVRVMgKDEsICdzMScpOworc3RlcCBpZHgxOiBDUkVBVEUgSU5ERVggdG1wX3ZhbF9p ZHggT04gdG1wKHZhbCk7CitzdGVwIHNlbDFfaWR4OiAKKyAgU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworICBTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisgIEVYUExBSU4gKENPU1RTIE9G RikKKyAgU0VMRUNUICogRlJPTSB0bXAgV0hFUkUgdmFsID0gJ3MxJzsKKyAgU0VMRUNUICogRlJP TSB0bXAgV0hFUkUgdmFsID0gJ3MxJzsKKworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbmRleCBTY2FuIHVz aW5nIHRtcF92YWxfaWR4IG9uIHRtcAorICBJbmRleCBDb25kOiAodmFsID0gJ3MxJzo6dGV4dCkg ICAKKygyIHJvd3MpCisKK2tleXx2YWwKKy0tLSstLS0KKyAgMXxzMSAKKygxIHJvdykKKworc3Rl cCBpbnMyOiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsKK3N0ZXAgc2VsMl9pZHg6 IAorICBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisgIFNFVCBlbmFibGVfYml0bWFwc2NhbiA9 IG9mZjsKKyAgRVhQTEFJTiAoQ09TVFMgT0ZGKQorICBTRUxFQ1QgKiBGUk9NIHRtcCBXSEVSRSB2 YWwgPSAnczInOworICBTRUxFQ1QgKiBGUk9NIHRtcCBXSEVSRSB2YWwgPSAnczInOworCitRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0luZGV4IFNjYW4gdXNpbmcgdG1wX3ZhbF9pZHggb24gdG1wCisgIEluZGV4 IENvbmQ6ICh2YWwgPSAnczInOjp0ZXh0KSAgIAorKDIgcm93cykKKwora2V5fHZhbAorLS0tKy0t LQorICAxfHMyIAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBpbnMxIGluczIg aWR4MSBzZWwxX2lkeCBzZWwyX2lkeAorc3RlcCBpbnMxOiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVT ICgxLCAnczEnKTsKK3N0ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MyJyk7 CitzdGVwIGlkeDE6IENSRUFURSBJTkRFWCB0bXBfdmFsX2lkeCBPTiB0bXAodmFsKTsKK3N0ZXAg c2VsMV9pZHg6IAorICBTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisgIFNFVCBlbmFibGVfYml0 bWFwc2NhbiA9IG9mZjsKKyAgRVhQTEFJTiAoQ09TVFMgT0ZGKQorICBTRUxFQ1QgKiBGUk9NIHRt cCBXSEVSRSB2YWwgPSAnczEnOworICBTRUxFQ1QgKiBGUk9NIHRtcCBXSEVSRSB2YWwgPSAnczEn OworCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZGV4IFNjYW4gdXNpbmcgdG1wX3ZhbF9pZHggb24gdG1w CisgIEluZGV4IENvbmQ6ICh2YWwgPSAnczEnOjp0ZXh0KSAgIAorKDIgcm93cykKKwora2V5fHZh bAorLS0tKy0tLQorICAxfHMxIAorKDEgcm93KQorCitzdGVwIHNlbDJfaWR4OiAKKyAgU0VUIGVu YWJsZV9zZXFzY2FuID0gb2ZmOworICBTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisgIEVY UExBSU4gKENPU1RTIE9GRikKKyAgU0VMRUNUICogRlJPTSB0bXAgV0hFUkUgdmFsID0gJ3MyJzsK KyAgU0VMRUNUICogRlJPTSB0bXAgV0hFUkUgdmFsID0gJ3MyJzsKKworUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VxIFNjYW4gb24g dG1wICAgICAgICAgICAgIAorICBEaXNhYmxlZDogdHJ1ZSAgICAgICAgICAgIAorICBGaWx0ZXI6 ICh2YWwgPSAnczInOjp0ZXh0KQorKDMgcm93cykKKwora2V5fHZhbAorLS0tKy0tLQorICAxfHMy IAorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBpbnMxIGluczIgaWR4MSBzZWwx X2lkeCBzZWwyX2lkeCByZWlkeDIgc2VsMl9pZHgKK3N0ZXAgaW5zMTogSU5TRVJUIElOVE8gdG1w IFZBTFVFUyAoMSwgJ3MxJyk7CitzdGVwIGluczI6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEs ICdzMicpOworc3RlcCBpZHgxOiBDUkVBVEUgSU5ERVggdG1wX3ZhbF9pZHggT04gdG1wKHZhbCk7 CitzdGVwIHNlbDFfaWR4OiAKKyAgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworICBTRVQgZW5h YmxlX2JpdG1hcHNjYW4gPSBvZmY7CisgIEVYUExBSU4gKENPU1RTIE9GRikKKyAgU0VMRUNUICog RlJPTSB0bXAgV0hFUkUgdmFsID0gJ3MxJzsKKyAgU0VMRUNUICogRlJPTSB0bXAgV0hFUkUgdmFs ID0gJ3MxJzsKKworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbmRleCBTY2FuIHVzaW5nIHRtcF92YWxfaWR4 IG9uIHRtcAorICBJbmRleCBDb25kOiAodmFsID0gJ3MxJzo6dGV4dCkgICAKKygyIHJvd3MpCisK K2tleXx2YWwKKy0tLSstLS0KKyAgMXxzMSAKKygxIHJvdykKKworc3RlcCBzZWwyX2lkeDogCisg IFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKyAgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2Zm OworICBFWFBMQUlOIChDT1NUUyBPRkYpCisgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJFIHZhbCA9 ICdzMic7CisgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJFIHZhbCA9ICdzMic7CisKK1FVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1NlcSBT Y2FuIG9uIHRtcCAgICAgICAgICAgICAKKyAgRGlzYWJsZWQ6IHRydWUgICAgICAgICAgICAKKyAg RmlsdGVyOiAodmFsID0gJ3MyJzo6dGV4dCkKKygzIHJvd3MpCisKK2tleXx2YWwKKy0tLSstLS0K KyAgMXxzMiAKKygxIHJvdykKKworc3RlcCByZWlkeDI6IFJFSU5ERVggSU5ERVggdG1wX3ZhbF9p ZHg7CitzdGVwIHNlbDJfaWR4OiAKKyAgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworICBTRVQg ZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisgIEVYUExBSU4gKENPU1RTIE9GRikKKyAgU0VMRUNU ICogRlJPTSB0bXAgV0hFUkUgdmFsID0gJ3MyJzsKKyAgU0VMRUNUICogRlJPTSB0bXAgV0hFUkUg dmFsID0gJ3MyJzsKKworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJbmRleCBTY2FuIHVzaW5nIHRtcF92YWxf aWR4IG9uIHRtcAorICBJbmRleCBDb25kOiAodmFsID0gJ3MyJzo6dGV4dCkgICAKKygyIHJvd3Mp CisKK2tleXx2YWwKKy0tLSstLS0KKyAgMXxzMiAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10ZW1wLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRp b24vc3BlY3MvZ2xvYmFsLXRlbXAuc3BlYwppbmRleCBkYjI0MjQyNmZlNS4uNTEzNjIzMGU4NTkg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCkBAIC0xLDkgKzEs OSBAQAogIyBUZXN0IGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zCiAKIHNldHVwIHsKLSAgQ1JF QVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcCAoa2V5IGludCwgdmFsIHRleHQpOworICBDUkVBVEUg R0xPQkFMIFRFTVAgVEFCTEUgdG1wIChrZXkgaW50IFBSSU1BUlkgS0VZLCB2YWwgdGV4dCk7CiAK LSAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcF9wYXJ0ZWQgKGtleSBpbnQsIHZhbCB0ZXh0 KSBQQVJUSVRJT04gQlkgTElTVCAoa2V5KTsKKyAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRt cF9wYXJ0ZWQgKGtleSBpbnQgUFJJTUFSWSBLRVksIHZhbCB0ZXh0KSBQQVJUSVRJT04gQlkgTElT VCAoa2V5KTsKICAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcF9wMSBQQVJUSVRJT04gT0Yg dG1wX3BhcnRlZCBGT1IgVkFMVUVTIElOICgxKTsKICAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxF IHRtcF9wMiBQQVJUSVRJT04gT0YgdG1wX3BhcnRlZCBGT1IgVkFMVUVTIElOICgoMiksICgzKSk7 CiB9CkBAIC0yNSw2ICsyNSwxNCBAQCBzdGVwIGFsdGVyMWEgeyBBTFRFUiBUQUJMRSB0bXAyIEFM VEVSIENPTFVNTiBrZXkgU0VUIERBVEEgVFlQRSBudW1lcmljOyB9CiBzdGVwIGFsdGVyMWIgeyBB TFRFUiBUQUJMRSB0bXAyIEFMVEVSIENPTFVNTiB2YWwgU0VUIE5PVCBOVUxMOyB9CiBzdGVwIHNl bHR5cGUxIHsgU0VMRUNUIGtleSwgcGdfdHlwZW9mKGtleSksIHZhbCBGUk9NIHRtcDI7IH0KIHN0 ZXAgZHJvcDEgeyBEUk9QIFRBQkxFIHRtcDI7IH0KK3N0ZXAgaWR4MSB7IENSRUFURSBJTkRFWCB0 bXBfdmFsX2lkeCBPTiB0bXAodmFsKTsgfQorc3RlcCBzZWwxX2lkeCB7CisgIFNFVCBlbmFibGVf c2Vxc2NhbiA9IG9mZjsKKyAgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworICBFWFBMQUlO IChDT1NUUyBPRkYpCisgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJFIHZhbCA9ICdzMSc7CisgIFNF TEVDVCAqIEZST00gdG1wIFdIRVJFIHZhbCA9ICdzMSc7Cit9CiAKIHNlc3Npb24gczIKIHN0ZXAg YjIgeyBCRUdJTjsgfQpAQCAtNDAsNiArNDgsMTQgQEAgc3RlcCBzcDIgeyBTQVZFUE9JTlQgc3A7 IH0KIHN0ZXAgcnNwMiB7IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcDsgfQogc3RlcCBpbnMyXzIg eyBJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSwgJ3MyJyk7IH0KIHN0ZXAgc2VsdHlwZTIgeyBT RUxFQ1Qga2V5LCBwZ190eXBlb2Yoa2V5KSwgdmFsIEZST00gdG1wMjsgfQorc3RlcCBzZWwyX2lk eCB7CisgIFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKKyAgU0VUIGVuYWJsZV9iaXRtYXBzY2Fu ID0gb2ZmOworICBFWFBMQUlOIChDT1NUUyBPRkYpCisgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJF IHZhbCA9ICdzMic7CisgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJFIHZhbCA9ICdzMic7Cit9Citz dGVwIHJlaWR4MiB7IFJFSU5ERVggSU5ERVggdG1wX3ZhbF9pZHg7IH0KIAogIyBCYXNpYyBlZmZl Y3RzCiBwZXJtdXRhdGlvbiBpbnMxIGluczIgc2VsMSBzZWwyCkBAIC01OCwzICs3NCw4IEBAIHBl cm11dGF0aW9uIGNyZWF0ZTEgaW5zMV8yIGluczJfMiBhbHRlcjFhIGFsdGVyMWIgc2VsdHlwZTEg c2VsdHlwZTIgZHJvcDEKIAogIyBUZXN0IERST1Agd2l0aCBPTiBDT01NSVQgREVMRVRFIFJPV1MK IHBlcm11dGF0aW9uIGNyZWF0ZTFkciBpbnMxXzIgaW5zMl8yIGRyb3AxIGNyZWF0ZTFkciBpbnMx XzIgaW5zMl8yIGRyb3AxCisKKyMgVGVzdCB2YWwgaW5kZXgKK3Blcm11dGF0aW9uIGluczEgaWR4 MSBzZWwxX2lkeCBpbnMyIHNlbDJfaWR4CitwZXJtdXRhdGlvbiBpbnMxIGluczIgaWR4MSBzZWwx X2lkeCBzZWwyX2lkeAorcGVybXV0YXRpb24gaW5zMSBpbnMyIGlkeDEgc2VsMV9pZHggc2VsMl9p ZHggcmVpZHgyIHNlbDJfaWR4CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2lu ZGV4X2FtL2R1bW15X2luZGV4X2FtLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2Ft L2R1bW15X2luZGV4X2FtLmMKaW5kZXggMzFmOGQyYjgxNjEuLjY1YjExNjI4MGJmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9tb2R1bGVzL2R1bW15X2luZGV4X2FtL2R1bW15X2luZGV4X2FtLmMKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9kdW1teV9pbmRleF9hbS9kdW1teV9pbmRleF9hbS5jCkBAIC0x NjYsMTAgKzE2NiwxMCBAQCBkaWJ1aWxkKFJlbGF0aW9uIGhlYXAsIFJlbGF0aW9uIGluZGV4LCBJ bmRleEluZm8gKmluZGV4SW5mbykKIH0KIAogLyoKLSAqIEJ1aWxkIGFuIGVtcHR5IGluZGV4IGZv ciB0aGUgaW5pdGlhbGl6YXRpb24gZm9yay4KKyAqIEJ1aWxkIGFuIGVtcHR5IGluZGV4IGZvciB0 aGUgc3BlY2lmaWVkIGZvcmsuCiAgKi8KIHN0YXRpYyB2b2lkCi1kaWJ1aWxkZW1wdHkoUmVsYXRp b24gaW5kZXgpCitkaWJ1aWxkZW1wdHkoUmVsYXRpb24gaW5kZXgsIEZvcmtOdW1iZXIgZm9ya251 bSkKIHsKIAkvKiBObyBuZWVkIHRvIGJ1aWxkIGFuIGluaXQgZm9yayBmb3IgYSBkdW1teSBpbmRl eCAqLwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVt cC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dAppbmRleCA0 M2U5MTE2ZjdkNS4uMWIyNDUwYTQ5YjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xv YmFsX3RlbXAub3V0CkBAIC0xMyw3ICsxMyw3IEBAIENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSBw Z190ZW1wLnRtcDEgKGEgaW50KTsgLS0gZmFpbAogRVJST1I6ICBjYW5ub3QgY3JlYXRlIGdsb2Jh bCB0ZW1wb3JhcnkgcmVsYXRpb24gaW4gdGVtcG9yYXJ5IHNjaGVtYQogTElORSAxOiBDUkVBVEUg R0xPQkFMIFRFTVAgVEFCTEUgcGdfdGVtcC50bXAxIChhIGludCk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCi1DUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMSAoYSBpbnQp OworQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDEgKGEgaW50IFBSSU1BUlkgS0VZLCBiIHRl eHQpOwogQ1JFQVRFIFNDSEVNQSBnbG9iYWxfdGVtcF94eHggQ1JFQVRFIEdMT0JBTCBURU1QIFRB QkxFIHRtcDIgKGEgaW50KTsKIENSRUFURSBTQ0hFTUEgZ2xvYmFsX3RlbXBfeXl5OwogQ1JFQVRF IEdMT0JBTCBURU1QIFRBQkxFIGdsb2JhbF90ZW1wX3l5eS50bXAzIChhIGludCk7CkBAIC0yMSwx NSArMjEsMTggQEAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIGdsb2JhbF90ZW1wX3l5eS50bXAz IChhIGludCk7CiAgIEdsb2JhbCB0ZW1wb3JhcnkgdGFibGUgImdsb2JhbF90ZW1wX3Rlc3RzLnRt cDEiCiAgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAK IC0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQotIGEg ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGEgICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIGIgICAgICB8IHRleHQgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidG1wMV9wa2V5IiBQUklNQVJZIEtFWSwg YnRyZWUgKGEpCiAKIFxkdCsgZ2xvYmFsX3RlbXBfKi50bXAqCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHRhYmxlcwotICAgICAgU2NoZW1hICAg ICAgIHwgTmFtZSB8IFR5cGUgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgICBQZXJzaXN0 ZW5jZSAgICB8ICBTaXplICAgfCBEZXNjcmlwdGlvbiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCi0gZ2xvYmFsX3RlbXBfdGVzdHMgfCB0bXAxIHwgdGFi bGUgfCByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXIgfCBnbG9iYWwgdGVtcG9yYXJ5IHwgMCBieXRl cyB8IAotIGdsb2JhbF90ZW1wX3h4eCAgIHwgdG1wMiB8IHRhYmxlIHwgcmVncmVzc19nbG9iYWxf dGVtcF91c2VyIHwgZ2xvYmFsIHRlbXBvcmFyeSB8IDAgYnl0ZXMgfCAKLSBnbG9iYWxfdGVtcF95 eXkgICB8IHRtcDMgfCB0YWJsZSB8IHJlZ3Jlc3NfZ2xvYmFsX3RlbXBfdXNlciB8IGdsb2JhbCB0 ZW1wb3JhcnkgfCAwIGJ5dGVzIHwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiB0YWJsZXMKKyAgICAgIFNjaGVtYSAgICAgICB8IE5hbWUgfCBU eXBlICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8ICAgUGVyc2lzdGVuY2UgICAgfCAgICBT aXplICAgIHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGdsb2JhbF90ZW1wX3Rlc3RzIHwgdG1wMSB8IHRhYmxlIHwgcmVn cmVzc19nbG9iYWxfdGVtcF91c2VyIHwgZ2xvYmFsIHRlbXBvcmFyeSB8IDgxOTIgYnl0ZXMgfCAK KyBnbG9iYWxfdGVtcF94eHggICB8IHRtcDIgfCB0YWJsZSB8IHJlZ3Jlc3NfZ2xvYmFsX3RlbXBf dXNlciB8IGdsb2JhbCB0ZW1wb3JhcnkgfCAwIGJ5dGVzICAgIHwgCisgZ2xvYmFsX3RlbXBfeXl5 ICAgfCB0bXAzIHwgdGFibGUgfCByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXIgfCBnbG9iYWwgdGVt cG9yYXJ5IHwgMCBieXRlcyAgICB8IAogKDMgcm93cykKIAogLS0gSW5mb3JtYXRpb24gc2NoZW1h CkBAIC00OSwyMCArNTIsNTkgQEAgTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBnbG9i YWxfdGVtcF94eHgudG1wMgogRFJPUCBTQ0hFTUEgZ2xvYmFsX3RlbXBfeXl5IENBU0NBREU7CiBO T1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGdsb2JhbF90ZW1wX3l5eS50bXAzCiAtLSBC YXNpYyB0ZXN0cwotSU5TRVJUIElOVE8gdG1wMSBWQUxVRVMgKDEpOworSU5TRVJUIElOVE8gdG1w MSBWQUxVRVMgKDEsICd4eHgnKTsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIAotLS0tCi0gMQor IGEgfCAgYiAgCistLS0rLS0tLS0KKyAxIHwgeHh4CiAoMSByb3cpCiAKIFxjCiBTRVQgc2VhcmNo X3BhdGggPSBnbG9iYWxfdGVtcF90ZXN0czsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIAotLS0t CisgYSB8IGIgCistLS0rLS0tCiAoMCByb3dzKQogCistLSBUZXN0IGluZGV4CitJTlNFUlQgSU5U TyB0bXAxIFZBTFVFUyAoMSwgJ3h4eCcpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSB0bXAxIFdIRVJFIGEgPSAxOworICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVzaW5nIHRtcDFfcGtleSBvbiB0bXAxCisgICBJbmRl eCBDb25kOiAoYSA9IDEpCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRtcDEgV0hFUkUgYSA9 IDE7CisgYSB8ICBiICAKKy0tLSstLS0tLQorIDEgfCB4eHgKKygxIHJvdykKKworUkVTRVQgZW5h YmxlX3NlcXNjYW47CistLSBUZXN0IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgLS0gQ09OQ1VSUkVO VExZIGlzIGlnbm9yZWQgd2l0aCB0ZW1wIHRhYmxlcworQ1JFQVRFIElOREVYIENPTkNVUlJFTlRM WSB0bXAxX2JfaWR4IE9OIHRtcDEoYik7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRtcDEgV0hFUkUgYiA9ICd4eHgnOworICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIEluZGV4IFNjYW4gdXNpbmcgdG1wMV9iX2lkeCBvbiB0bXAxCisg ICBJbmRleCBDb25kOiAoYiA9ICd4eHgnOjp0ZXh0KQorKDIgcm93cykKKworU0VMRUNUICogRlJP TSB0bXAxIFdIRVJFIGIgPSAneHh4JzsKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IHh4eAor KDEgcm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFSU5ERVggSU5ERVggQ09OQ1VSUkVO VExZIHRtcDFfYl9pZHg7CitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSB0bXAxOworRFJPUCBJ TkRFWCBDT05DVVJSRU5UTFkgdG1wMV9iX2lkeDsKIC0tIFRlc3QgT04gQ09NTUlUIERFTEVURSBS T1dTCiBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpIE9OIENPTU1JVCBERUxF VEUgUk9XUzsKIEJFR0lOOwpAQCAtMTAzLDggKzE0NSw4IEBAIEVSUk9SOiAgT04gQ09NTUlUIERS T1AgY2Fubm90IGJlIHVzZWQgb24gZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMKIC0tIFR3by1waGFz ZSBjb21taXQgbm90IGFsbG93ZWQgd2l0aCBnbG9iYWwgdGVtcCB0YWJsZXMKIEJFR0lOOwogU0VM RUNUICogRlJPTSB0bXAxOwotIGEgCi0tLS0KKyBhIHwgYiAKKy0tLSstLS0KICgwIHJvd3MpCiAK IFBSRVBBUkUgVFJBTlNBQ1RJT04gJ3R3b3BoYXNlJzsgLS0gZmFpbApAQCAtMTQ3LDExICsxODks MzMgQEAgRFJPUCBUQUJMRSB0bXAyOwogLS0gVGVzdCBmb3JlaWduIGtleXMKIENSRUFURSBUQUJM RSBwZXJtX3BrX3JlbCAoYSBpbnQgUFJJTUFSWSBLRVkpOwogQ1JFQVRFIFRFTVAgVEFCTEUgdGVt cF9wa19yZWwgKGEgaW50IFBSSU1BUlkgS0VZKTsKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSBn dGVtcF9wa19yZWwgKGEgaW50IFBSSU1BUlkgS0VZKTsKK0NSRUFURSBUQUJMRSB0bXAyIChhIGlu dCBSRUZFUkVOQ0VTIGd0ZW1wX3BrX3JlbCk7IC0tIGZhaWwKK0VSUk9SOiAgY29uc3RyYWludHMg b24gcGVybWFuZW50IHRhYmxlcyBtYXkgcmVmZXJlbmNlIG9ubHkgcGVybWFuZW50IHRhYmxlcwor Q1JFQVRFIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQgUkVGRVJFTkNFUyBndGVtcF9wa19yZWwpOyAt LSBmYWlsCitFUlJPUjogIGNvbnN0cmFpbnRzIG9uIGxvY2FsIHRlbXBvcmFyeSB0YWJsZXMgbWF5 IHJlZmVyZW5jZSBvbmx5IGxvY2FsIHRlbXBvcmFyeSB0YWJsZXMKIENSRUFURSBHTE9CQUwgVEVN UCBUQUJMRSB0bXAyIChhIGludCBSRUZFUkVOQ0VTIHBlcm1fcGtfcmVsKTsgLS0gZmFpbAogRVJS T1I6ICBjb25zdHJhaW50cyBvbiBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyBtYXkgcmVmZXJlbmNl IG9ubHkgZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMKIENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0 bXAyIChhIGludCBSRUZFUkVOQ0VTIHRlbXBfcGtfcmVsKTsgLS0gZmFpbAogRVJST1I6ICBjb25z dHJhaW50cyBvbiBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyBtYXkgcmVmZXJlbmNlIG9ubHkgZ2xv YmFsIHRlbXBvcmFyeSB0YWJsZXMKLURST1AgVEFCTEUgcGVybV9wa19yZWwsIHRlbXBfcGtfcmVs OworQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50IFJFRkVSRU5DRVMgZ3RlbXBf cGtfcmVsKTsKK0lOU0VSVCBJTlRPIGd0ZW1wX3BrX3JlbCBWQUxVRVMgKDEpOworSU5TRVJUIElO VE8gdG1wMiBWQUxVRVMgKDEpOworSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDIpOyAtLSBmYWls CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRtcDIiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRtcDJfYV9ma2V5IgorREVUQUlMOiAgS2V5IChhKT0oMikgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgImd0ZW1wX3BrX3JlbCIuCitERUxFVEUgRlJPTSBndGVtcF9w a19yZWwgV0hFUkUgYSA9IDE7IC0tIGZhaWwKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAiZ3RlbXBfcGtfcmVsIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0bXAy X2FfZmtleSIgb24gdGFibGUgInRtcDIiCitERVRBSUw6ICBLZXkgKGEpPSgxKSBpcyBzdGlsbCBy ZWZlcmVuY2VkIGZyb20gdGFibGUgInRtcDIiLgorQUxURVIgVEFCTEUgdG1wMiBEUk9QIENPTlNU UkFJTlQgdG1wMl9hX2ZrZXk7CitBTFRFUiBUQUJMRSB0bXAyIEFERCBGT1JFSUdOIEtFWSAoYSkg UkVGRVJFTkNFUyBndGVtcF9wa19yZWwgT04gREVMRVRFIENBU0NBREU7CitERUxFVEUgRlJPTSBn dGVtcF9wa19yZWwgV0hFUkUgYSA9IDE7CitTRUxFQ1QgKiBGUk9NIHRtcDI7CisgYSAKKy0tLQor KDAgcm93cykKKworRFJPUCBUQUJMRSBwZXJtX3BrX3JlbCwgdGVtcF9wa19yZWwsIHRtcDI7CiAt LSBUZXN0IEFMVEVSIFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRQogQ1JFQVRFIEdMT0JBTCBURU1Q IFRBQkxFIHRtcDIgKGEgaW50KTsKIElOU0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxKTsKQEAgLTIw NCw4NSArMjY4LDg1IEBAIERFVEFJTDogIHRhYmxlc3BhY2UgZm9yIHRhYmxlIHRtcDIKIERST1Ag VEFCTEUgdG1wMjsKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RlbXBfdGVzdF90YWJsZXNwYWNl OwogLS0gVGVzdCBUUlVOQ0FURQotSU5TRVJUIElOVE8gdG1wMSBWQUxVRVMgKDEpOworSU5TRVJU IElOVE8gdG1wMSBWQUxVRVMgKDEsICd4eHgnKTsKIEJFR0lOOwogVFJVTkNBVEUgdG1wMTsKIFNF TEVDVCAqIEZST00gdG1wMTsKLSBhIAotLS0tCisgYSB8IGIgCistLS0rLS0tCiAoMCByb3dzKQog CiBST0xMQkFDSzsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIAotLS0tCi0gMQorIGEgfCAgYiAg CistLS0rLS0tLS0KKyAxIHwgeHh4CiAoMSByb3cpCiAKIEJFR0lOOwogU0FWRVBPSU5UIHNwMTsK IFRSVU5DQVRFIHRtcDE7CiBTRUxFQ1QgKiBGUk9NIHRtcDE7Ci0gYSAKLS0tLQorIGEgfCBiIAor LS0tKy0tLQogKDAgcm93cykKIAogUkVMRUFTRSBzcDE7CiBTRUxFQ1QgKiBGUk9NIHRtcDE7Ci0g YSAKLS0tLQorIGEgfCBiIAorLS0tKy0tLQogKDAgcm93cykKIAogUk9MTEJBQ0s7CiBTRUxFQ1Qg KiBGUk9NIHRtcDE7Ci0gYSAKLS0tLQotIDEKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IHh4 eAogKDEgcm93KQogCiBCRUdJTjsKIFNBVkVQT0lOVCBzcDE7CiBUUlVOQ0FURSB0bXAxOwogU0VM RUNUICogRlJPTSB0bXAxOwotIGEgCi0tLS0KKyBhIHwgYiAKKy0tLSstLS0KICgwIHJvd3MpCiAK IFJPTExCQUNLIFRPIHNwMTsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIAotLS0tCi0gMQorIGEg fCAgYiAgCistLS0rLS0tLS0KKyAxIHwgeHh4CiAoMSByb3cpCiAKIENPTU1JVDsKIFNFTEVDVCAq IEZST00gdG1wMTsKLSBhIAotLS0tCi0gMQorIGEgfCAgYiAgCistLS0rLS0tLS0KKyAxIHwgeHh4 CiAoMSByb3cpCiAKIFRSVU5DQVRFIHRtcDE7CiBTRUxFQ1QgKiBGUk9NIHRtcDE7Ci0gYSAKLS0t LQorIGEgfCBiIAorLS0tKy0tLQogKDAgcm93cykKIAogLS0gVGVzdCB2aWV3IGNyZWF0aW9uCi1J TlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSwg J3h4eCcpOwogQ1JFQVRFIFZJRVcgdiBBUyBTRUxFQ1QgKiBGUk9NIHRtcDE7CiBTRUxFQ1QgKiBG Uk9NIHY7Ci0gYSAKLS0tLQotIDEKKyBhIHwgIGIgIAorLS0tKy0tLS0tCisgMSB8IHh4eAogKDEg cm93KQogCiBEUk9QIFZJRVcgdjsKIENSRUFURSBURU1QIFZJRVcgdiBBUyBTRUxFQ1QgKiBGUk9N IHRtcDE7CiBTRUxFQ1QgKiBGUk9NIHY7Ci0gYSAKLS0tLQotIDEKKyBhIHwgIGIgIAorLS0tKy0t LS0tCisgMSB8IHh4eAogKDEgcm93KQogCiBEUk9QIFZJRVcgdjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ds b2JhbF90ZW1wLnNxbAppbmRleCAxMzllMGY3NGI0Yi4uNzI1NWEzNWYyZDQgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9nbG9iYWxfdGVtcC5zcWwKQEAgLTExLDcgKzExLDcgQEAgU0VUIFJPTEUgcmVncmVz c19nbG9iYWxfdGVtcF91c2VyOwogCiAtLSBUZXN0IHRhYmxlIGNyZWF0aW9uCiBDUkVBVEUgR0xP QkFMIFRFTVAgVEFCTEUgcGdfdGVtcC50bXAxIChhIGludCk7IC0tIGZhaWwKLUNSRUFURSBHTE9C QUwgVEVNUCBUQUJMRSB0bXAxIChhIGludCk7CitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1w MSAoYSBpbnQgUFJJTUFSWSBLRVksIGIgdGV4dCk7CiBDUkVBVEUgU0NIRU1BIGdsb2JhbF90ZW1w X3h4eCBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpOwogQ1JFQVRFIFNDSEVN QSBnbG9iYWxfdGVtcF95eXk7CiBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgZ2xvYmFsX3RlbXBf eXl5LnRtcDMgKGEgaW50KTsKQEAgLTI5LDEyICsyOSwzMSBAQCBEUk9QIFNDSEVNQSBnbG9iYWxf dGVtcF94eHggQ0FTQ0FERTsKIERST1AgU0NIRU1BIGdsb2JhbF90ZW1wX3l5eSBDQVNDQURFOwog CiAtLSBCYXNpYyB0ZXN0cwotSU5TRVJUIElOVE8gdG1wMSBWQUxVRVMgKDEpOworSU5TRVJUIElO VE8gdG1wMSBWQUxVRVMgKDEsICd4eHgnKTsKIFNFTEVDVCAqIEZST00gdG1wMTsKIFxjCiBTRVQg c2VhcmNoX3BhdGggPSBnbG9iYWxfdGVtcF90ZXN0czsKIFNFTEVDVCAqIEZST00gdG1wMTsKIAor LS0gVGVzdCBpbmRleAorSU5TRVJUIElOVE8gdG1wMSBWQUxVRVMgKDEsICd4eHgnKTsKK1NFVCBl bmFibGVfc2Vxc2NhbiA9IG9mZjsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00g dG1wMSBXSEVSRSBhID0gMTsKK1NFTEVDVCAqIEZST00gdG1wMSBXSEVSRSBhID0gMTsKK1JFU0VU IGVuYWJsZV9zZXFzY2FuOworCistLSBUZXN0IGNvbmN1cnJlbnQgaW5kZXggYnVpbGQgLS0gQ09O Q1VSUkVOVExZIGlzIGlnbm9yZWQgd2l0aCB0ZW1wIHRhYmxlcworQ1JFQVRFIElOREVYIENPTkNV UlJFTlRMWSB0bXAxX2JfaWR4IE9OIHRtcDEoYik7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7 CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NIHRtcDEgV0hFUkUgYiA9ICd4eHgn OworU0VMRUNUICogRlJPTSB0bXAxIFdIRVJFIGIgPSAneHh4JzsKK1JFU0VUIGVuYWJsZV9zZXFz Y2FuOworUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdG1wMV9iX2lkeDsKK1JFSU5ERVggVEFC TEUgQ09OQ1VSUkVOVExZIHRtcDE7CitEUk9QIElOREVYIENPTkNVUlJFTlRMWSB0bXAxX2JfaWR4 OworCiAtLSBUZXN0IE9OIENPTU1JVCBERUxFVEUgUk9XUwogQ1JFQVRFIEdMT0JBTCBURU1QIFRB QkxFIHRtcDIgKGEgaW50KSBPTiBDT01NSVQgREVMRVRFIFJPV1M7CiBCRUdJTjsKQEAgLTg0LDkg KzEwMywyMSBAQCBEUk9QIFRBQkxFIHRtcDI7CiAtLSBUZXN0IGZvcmVpZ24ga2V5cwogQ1JFQVRF IFRBQkxFIHBlcm1fcGtfcmVsIChhIGludCBQUklNQVJZIEtFWSk7CiBDUkVBVEUgVEVNUCBUQUJM RSB0ZW1wX3BrX3JlbCAoYSBpbnQgUFJJTUFSWSBLRVkpOworQ1JFQVRFIEdMT0JBTCBURU1QIFRB QkxFIGd0ZW1wX3BrX3JlbCAoYSBpbnQgUFJJTUFSWSBLRVkpOworQ1JFQVRFIFRBQkxFIHRtcDIg KGEgaW50IFJFRkVSRU5DRVMgZ3RlbXBfcGtfcmVsKTsgLS0gZmFpbAorQ1JFQVRFIFRFTVAgVEFC TEUgdG1wMiAoYSBpbnQgUkVGRVJFTkNFUyBndGVtcF9wa19yZWwpOyAtLSBmYWlsCiBDUkVBVEUg R0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQgUkVGRVJFTkNFUyBwZXJtX3BrX3JlbCk7IC0t IGZhaWwKIENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCBSRUZFUkVOQ0VTIHRl bXBfcGtfcmVsKTsgLS0gZmFpbAotRFJPUCBUQUJMRSBwZXJtX3BrX3JlbCwgdGVtcF9wa19yZWw7 CitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQgUkVGRVJFTkNFUyBndGVtcF9w a19yZWwpOworSU5TRVJUIElOVE8gZ3RlbXBfcGtfcmVsIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5U TyB0bXAyIFZBTFVFUyAoMSk7CitJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMik7IC0tIGZhaWwK K0RFTEVURSBGUk9NIGd0ZW1wX3BrX3JlbCBXSEVSRSBhID0gMTsgLS0gZmFpbAorQUxURVIgVEFC TEUgdG1wMiBEUk9QIENPTlNUUkFJTlQgdG1wMl9hX2ZrZXk7CitBTFRFUiBUQUJMRSB0bXAyIEFE RCBGT1JFSUdOIEtFWSAoYSkgUkVGRVJFTkNFUyBndGVtcF9wa19yZWwgT04gREVMRVRFIENBU0NB REU7CitERUxFVEUgRlJPTSBndGVtcF9wa19yZWwgV0hFUkUgYSA9IDE7CitTRUxFQ1QgKiBGUk9N IHRtcDI7CitEUk9QIFRBQkxFIHBlcm1fcGtfcmVsLCB0ZW1wX3BrX3JlbCwgdG1wMjsKIAogLS0g VGVzdCBBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UKIENSRUFURSBHTE9CQUwgVEVNUCBU QUJMRSB0bXAyIChhIGludCk7CkBAIC0xMTksNyArMTUwLDcgQEAgRFJPUCBUQUJMRSB0bXAyOwog RFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGVtcF90ZXN0X3RhYmxlc3BhY2U7CiAKIC0tIFRlc3Qg VFJVTkNBVEUKLUlOU0VSVCBJTlRPIHRtcDEgVkFMVUVTICgxKTsKK0lOU0VSVCBJTlRPIHRtcDEg VkFMVUVTICgxLCAneHh4Jyk7CiBCRUdJTjsKIFRSVU5DQVRFIHRtcDE7CiBTRUxFQ1QgKiBGUk9N IHRtcDE7CkBAIC0xNDgsNyArMTc5LDcgQEAgVFJVTkNBVEUgdG1wMTsKIFNFTEVDVCAqIEZST00g dG1wMTsKIAogLS0gVGVzdCB2aWV3IGNyZWF0aW9uCi1JTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAo MSk7CitJTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSwgJ3h4eCcpOwogQ1JFQVRFIFZJRVcgdiBB UyBTRUxFQ1QgKiBGUk9NIHRtcDE7CiBTRUxFQ1QgKiBGUk9NIHY7CiBEUk9QIFZJRVcgdjsKLS0g CjIuNTEuMAoK --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0004-Support-global-temporary-sequences.patch" Content-Disposition: attachment; filename="v7-0004-Support-global-temporary-sequences.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr915nj93 RnJvbSA4OTE4NWExNmMwYTllNTNhMDhhZDU2NGMwYmE4YjU2YjgzMDM0ZWM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogVHVlLCA5IEp1biAyMDI2IDE5OjAwOjA5ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NyAwNC8xMF0gU3VwcG9ydCBnbG9iYWwgdGVtcG9yYXJ5IHNlcXVlbmNlcy4KCi0tLQogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jICAgICAgICAgICB8ICAgNSArCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jICAgICAgICAgICAgIHwgIDY2ICsrKysrKysrCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgIHwgICAzICstCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BzcWwv ZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL2NvbW1h bmRzL3NlcXVlbmNlLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL2dsb2JhbC10ZW1wLm91dCB8IDE3NiArKysrKysrKysrLS0tLS0tLS0tLQogc3JjL3Rl c3QvaXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10ZW1wLnNwZWMgICB8ICAgMiArLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQgICB8IDEyMSArKysrKysrKystLS0tLQog c3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsICAgICAgICB8ICAxMCArLQogMTAg ZmlsZXMgY2hhbmdlZCwgMjU3IGluc2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2dsb2JhbF90ZW1wLmMKaW5kZXggMzg2M2NiMTI4MzcuLmJlZmVlMDc0NGUyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jCkBAIC02Miw2ICs2Miw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2d1dGlscy5oIgogI2luY2x1ZGUgImNhdGFsb2cvZ2xvYmFsX3RlbXAuaCIKICNpbmNs dWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImxpYi9kc2hhc2guaCIK ICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTg3Myw2ICs4NzQsMTAgQEAgSW5pdEdsb2JhbFRl bXBSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbikKIAkJCWlmIChuYmxvY2tzID4gMCkKIAkJCQly ZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQgPSBmYWxzZTsKIAkJfQorCisJCS8qIElmIGl0 J3MgYSBzZXF1ZW5jZSwgaW5pdGlhbGl6ZSBpdCAqLworCQlpZiAocmVsYXRpb24tPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCQkJSW5pdEdsb2JhbFRlbXBTZXF1ZW5jZShy ZWxhdGlvbik7CiAJfQogCiAJLyogVGhlIHJlbWFpbmluZyBpbml0aWFsaXphdGlvbiB3b3JrcyBh cyBpZiB3ZSBoYWQgY3JlYXRlZCBpdCBsb2NhbGx5ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpp bmRleCA1NTE2Njc2NTBiYS4uOWE3Y2FjZTZjMzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpA QCAtMzIxLDYgKzMyMSw3MiBAQCBSZXNldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQpCiAJc2VxdWVu Y2VfY2xvc2Uoc2VxX3JlbCwgTm9Mb2NrKTsKIH0KIAorLyoKKyAqIEluaXRHbG9iYWxUZW1wU2Vx dWVuY2UgLSBpbml0aWFsaXplIGEgZ2xvYmFsIHRlbXBvcmFyeSBzZXF1ZW5jZQorICoKKyAqIFRo aXMgaXMgY2FsbGVkIHRoZSBmaXJzdCB0aW1lIGEgZ2xvYmFsIHRlbXBvcmFyeSBzZXF1ZW5jZSBp cyBhY2Nlc3NlZCBmcm9tCisgKiBhIGJhY2tlbmQgb3RoZXIgdGhhbiB0aGUgYmFja2VuZCB0aGF0 IGNyZWF0ZWQgaXQuICBPbiBlbnRyeSwgdGhlIHNlcXVlbmNlCisgKiBzaG91bGQgaGF2ZSB2YWxp ZCBjYXRhbG9nIGVudHJpZXMsIGFuZCBpdHMgcGh5c2ljYWwgZGlzayBmaWxlIHNob3VsZCBoYXZl CisgKiBiZWVuIGNyZWF0ZWQsIGJ1dCBiZSBlbXB0eS4KKyAqLwordm9pZAorSW5pdEdsb2JhbFRl bXBTZXF1ZW5jZShSZWxhdGlvbiBzZXFfcmVsKQoreworCU9pZAkJCXNlcV9yZWxpZCA9IFJlbGF0 aW9uR2V0UmVsaWQoc2VxX3JlbCk7CisJU2VxVGFibGUJZWxtOworCUhlYXBUdXBsZQlwZ3N0dXBs ZTsKKwlGb3JtX3BnX3NlcXVlbmNlIHBnc2Zvcm07CisJaW50NjQJCXN0YXJ0djsKKwlpbnQJCQlp OworCURhdHVtCQl2YWx1ZVtTRVFfQ09MX0xBU1RDT0xdOworCWJvb2wJCW51bGxbU0VRX0NPTF9M QVNUQ09MXTsKKwlUdXBsZURlc2MJdHVwRGVzYzsKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwkvKiBG aW5kIG9yIGNyZWF0ZSBhIGhhc2ggdGFibGUgZW50cnkgZm9yIHRoaXMgc2VxdWVuY2UgKi8KKwlp ZiAoc2VxaGFzaHRhYiA9PSBOVUxMKQorCQljcmVhdGVfc2VxX2hhc2h0YWJsZSgpOworCisJZWxt ID0gKFNlcVRhYmxlKSBoYXNoX3NlYXJjaChzZXFoYXNodGFiLCAmc2VxX3JlbGlkLCBIQVNIX0VO VEVSLCBOVUxMKTsKKworCS8qIEluaXRpYWxpemUgdGhlIHNlcXVlbmNlIHN0YXRlICovCisJZWxt LT5maWxlbnVtYmVyID0gc2VxX3JlbC0+cmRfcmVsLT5yZWxmaWxlbm9kZTsKKwllbG0tPmx4aWQg PSBJbnZhbGlkTG9jYWxUcmFuc2FjdGlvbklkOworCWVsbS0+bGFzdF92YWxpZCA9IGZhbHNlOwor CWVsbS0+bGFzdCA9IGVsbS0+Y2FjaGVkID0gMDsKKworCS8qIFJlYWQgdGhlIHNlcXVlbmNlIGRl ZmluaXRpb24gZnJvbSBwZ19zZXF1ZW5jZSAqLworCXBnc3R1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KFNFUVJFTElELCBPYmplY3RJZEdldERhdHVtKHNlcV9yZWxpZCkpOworCWlmICghSGVhcFR1cGxl SXNWYWxpZChwZ3N0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBzZXF1ZW5jZSAldSIsIHNlcV9yZWxpZCk7CisJcGdzZm9ybSA9IChGb3JtX3BnX3NlcXVlbmNl KSBHRVRTVFJVQ1QocGdzdHVwbGUpOworCXN0YXJ0diA9IHBnc2Zvcm0tPnNlcXN0YXJ0OworCVJl bGVhc2VTeXNDYWNoZShwZ3N0dXBsZSk7CisKKwkvKiBCdWlsZCBhIG5ldyBzZXF1ZW5jZSB0dXBs ZSAqLworCWZvciAoaSA9IFNFUV9DT0xfRklSU1RDT0w7IGkgPD0gU0VRX0NPTF9MQVNUQ09MOyBp KyspCisJeworCQlzd2l0Y2ggKGkpCisJCXsKKwkJCWNhc2UgU0VRX0NPTF9MQVNUVkFMOgorCQkJ CXZhbHVlW2kgLSAxXSA9IEludDY0R2V0RGF0dW1GYXN0KHN0YXJ0dik7CisJCQkJYnJlYWs7CisJ CQljYXNlIFNFUV9DT0xfTE9HOgorCQkJCXZhbHVlW2kgLSAxXSA9IEludDY0R2V0RGF0dW0oKGlu dDY0KSAwKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgU0VRX0NPTF9DQUxMRUQ6CisJCQkJdmFsdWVb aSAtIDFdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKKwkJCQlicmVhazsKKwkJfQorCQludWxsW2kg LSAxXSA9IGZhbHNlOworCX0KKwl0dXBEZXNjID0gUmVsYXRpb25HZXREZXNjcihzZXFfcmVsKTsK Kwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZSh0dXBEZXNjLCB2YWx1ZSwgbnVsbCk7CisKKwkvKiBJ bml0aWFsaXplIHRoZSBzZXF1ZW5jZSdzIGRhdGEgKi8KKwlmaWxsX3NlcV93aXRoX2RhdGEoc2Vx X3JlbCwgdHVwbGUpOworfQorCiAvKgogICogSW5pdGlhbGl6ZSBhIHNlcXVlbmNlJ3MgcmVsYXRp b24gd2l0aCB0aGUgc3BlY2lmaWVkIHR1cGxlIGFzIGNvbnRlbnQKICAqCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX3V0aWxjbWQuYwppbmRleCA1OGNjYzdiNjhmMi4uMmIzNmQ2YzdmOTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtNDk2LDcgKzQ5Niw4IEBAIGdlbmVyYXRlU2VyaWFsRXh0 cmFTdG10cyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBDb2x1bW5EZWYgKmNvbHVtbiwKIAlzZXFw ZXJzaXN0ZW5jZSA9IGN4dC0+cmVsID8gY3h0LT5yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2Ug OiBjeHQtPnJlbGF0aW9uLT5yZWxwZXJzaXN0ZW5jZTsKIAlpZiAobG9nZ2VkRWwpCiAJewotCQlp ZiAoc2VxcGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJaWYgKHNlcXBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVAgfHwKKwkJCXNlcXBlcnNpc3RlbmNlID09IFJF TFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1RBQkxFX0RFRklOSVRJT04pLAogCQkJCQkgZXJybXNnKCJjYW5u b3Qgc2V0IGxvZ2dlZCBzdGF0dXMgb2YgYSB0ZW1wb3Jhcnkgc2VxdWVuY2UiKSwKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CmluZGV4IDQzM2M3ZGU4NmFiLi5iYWFkYTJmN2NjNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC0xOTMxNyw3 ICsxOTMxNyw5IEBAIGR1bXBTZXF1ZW5jZShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8g KnRiaW5mbykKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkgICJDUkVBVEUgJXNT RVFVRU5DRSAlc1xuIiwKIAkJCQkJCSAgdGJpbmZvLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJT SVNURU5DRV9VTkxPR0dFRCA/Ci0JCQkJCQkgICJVTkxPR0dFRCAiIDogIiIsCisJCQkJCQkgICJV TkxPR0dFRCAiIDoKKwkJCQkJCSAgdGJpbmZvLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNU RU5DRV9HTE9CQUxfVEVNUCA/CisJCQkJCQkgICJHTE9CQUwgVEVNUCAiIDogIiIsCiAJCQkJCQkg IGZtdFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOwogCiAJCWlmIChzZXEtPnNlcXR5cGUgIT0g U0VRVFlQRV9CSUdJTlQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGRhYWE5ZjllNjlkLi44Y2U0ZGVjYjkxZSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTE4MDYsNiArMTgwNiwxMiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25z dCBjaGFyICpzY2hlbWFuYW1lLAogCQlpZiAodGFibGVpbmZvLnJlbHBlcnNpc3RlbmNlID09IFJF TFBFUlNJU1RFTkNFX1VOTE9HR0VEKQogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJV bmxvZ2dlZCBzZXF1ZW5jZSBcIiVzLiVzXCIiKSwKIAkJCQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0 aW9ubmFtZSk7CisJCWVsc2UgaWYgKHRhYmxlaW5mby5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJT SVNURU5DRV9URU1QKQorCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJUZW1wb3Jhcnkg c2VxdWVuY2UgXCIlcy4lc1wiIiksCisJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUp OworCQllbHNlIGlmICh0YWJsZWluZm8ucmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0Vf R0xPQkFMX1RFTVApCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIkdsb2JhbCB0ZW1w b3Jhcnkgc2VxdWVuY2UgXCIlcy4lc1wiIiksCisJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlv bm5hbWUpOwogCQllbHNlCiAJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlNlcXVlbmNl IFwiJXMuJXNcIiIpLAogCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9zZXF1ZW5jZS5oCmluZGV4IDJjM2M0YTNmMDc0Li42ZjUxNGFjNmRkMSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9zZXF1ZW5jZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIEFs dGVyU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwogZXh0 ZXJuIHZvaWQgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIgbmV3cmVs cGVyc2lzdGVuY2UpOwogZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQgcmVsaWQp OwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4dGVybiB2b2lk IEluaXRHbG9iYWxUZW1wU2VxdWVuY2UoUmVsYXRpb24gc2VxX3JlbCk7CiBleHRlcm4gdm9pZCBT ZXRTZXF1ZW5jZShPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxsZWQpOwogZXh0ZXJu IHZvaWQgUmVzZXRTZXF1ZW5jZUNhY2hlcyh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2dsb2JhbC10ZW1wLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9nbG9iYWwtdGVtcC5vdXQKaW5kZXggM2E2YWY3ZWIyM2UuLmQ0NmNhODVhY2JiIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0Cisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9nbG9iYWwtdGVtcC5vdXQKQEAgLTQsMTUg KzQsMTUgQEAgc3RhcnRpbmcgcGVybXV0YXRpb246IGluczEgaW5zMiBzZWwxIHNlbDIKIHN0ZXAg aW5zMTogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MxJyk7CiBzdGVwIGluczI6IElOU0VS VCBJTlRPIHRtcCBWQUxVRVMgKDEsICdzMicpOwogc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRt cDsKLWtleXx2YWwKLS0tLSstLS0KLSAgMXxzMSAKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQor ICAxfHMxIHwgIDEKICgxIHJvdykKIAogc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRtcDsKLWtl eXx2YWwKLS0tLSstLS0KLSAgMXxzMiAKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQorICAxfHMy IHwgIDEKICgxIHJvdykKIAogCkBAIC00MSwyOCArNDEsMjggQEAgc3RlcCBpbnMxOiBJTlNFUlQg SU5UTyB0bXAgVkFMVUVTICgxLCAnczEnKTsKIHN0ZXAgYjI6IEJFR0lOOwogc3RlcCBpbnMyOiBJ TlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsKIHN0ZXAgc2VsMTogU0VMRUNUICogRlJP TSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0tKy0tLSst LS0KKyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc2VsMjogU0VMRUNUICogRlJPTSB0bXA7 Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czIgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAg MXxzMiB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgYzI6IENPTU1JVDsKIHN0ZXAgc2VsMTogU0VMRUNU ICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0t Ky0tLSstLS0KKyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc2VsMjogU0VMRUNUICogRlJP TSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czIgCitrZXl8dmFsfHNlcQorLS0tKy0tLSst LS0KKyAgMXxzMiB8ICAxCiAoMSByb3cpCiAKIApAQCAtNzEsMjcgKzcxLDI3IEBAIHN0ZXAgaW5z MTogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MxJyk7CiBzdGVwIGIyOiBCRUdJTjsKIHN0 ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MyJyk7CiBzdGVwIHNlbDE6IFNF TEVDVCAqIEZST00gdG1wOwota2V5fHZhbAotLS0tKy0tLQotICAxfHMxIAora2V5fHZhbHxzZXEK Ky0tLSstLS0rLS0tCisgIDF8czEgfCAgMQogKDEgcm93KQogCiBzdGVwIHNlbDI6IFNFTEVDVCAq IEZST00gdG1wOwota2V5fHZhbAotLS0tKy0tLQotICAxfHMyIAora2V5fHZhbHxzZXEKKy0tLSst LS0rLS0tCisgIDF8czIgfCAgMQogKDEgcm93KQogCiBzdGVwIHIyOiBST0xMQkFDSzsKIHN0ZXAg c2VsMTogU0VMRUNUICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czEgCitrZXl8 dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc2VsMjog U0VMRUNUICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCitrZXl8dmFsfHNlcQorLS0tKy0t LSstLS0KICgwIHJvd3MpCiAKIApAQCAtMTAwLDI4ICsxMDAsMjggQEAgc3RlcCBpbnMxOiBJTlNF UlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczEnKTsKIHN0ZXAgYjI6IEJFR0lOOwogc3RlcCBpbnMy OiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsKIHN0ZXAgc2VsMTogU0VMRUNUICog RlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0tKy0t LSstLS0KKyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc2VsMjogU0VMRUNUICogRlJPTSB0 bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czIgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0K KyAgMXxzMiB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc3AyOiBTQVZFUE9JTlQgc3A7CiBzdGVwIHIy OiBST0xMQkFDSzsKIHN0ZXAgc2VsMTogU0VMRUNUICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0r LS0tCi0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMSB8ICAxCiAoMSBy b3cpCiAKIHN0ZXAgc2VsMjogU0VMRUNUICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCitr ZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KICgwIHJvd3MpCiAKIApAQCAtMTMxLDM5ICsxMzEsMzkg QEAgc3RlcCBiMjogQkVHSU47CiBzdGVwIHNwMjogU0FWRVBPSU5UIHNwOwogc3RlcCBpbnMyOiBJ TlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsKIHN0ZXAgc2VsMTogU0VMRUNUICogRlJP TSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0tKy0tLSst LS0KKyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc2VsMjogU0VMRUNUICogRlJPTSB0bXA7 Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czIgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAg MXxzMiB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgcnNwMjogUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNw Owogc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRtcDsKLWtleXx2YWwKLS0tLSstLS0KLSAgMXxz MSAKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQorICAxfHMxIHwgIDEKICgxIHJvdykKIAogc3Rl cCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRtcDsKLWtleXx2YWwKLS0tLSstLS0KK2tleXx2YWx8c2Vx CistLS0rLS0tKy0tLQogKDAgcm93cykKIAogc3RlcCByMjogUk9MTEJBQ0s7CiBzdGVwIHNlbDE6 IFNFTEVDVCAqIEZST00gdG1wOwota2V5fHZhbAotLS0tKy0tLQotICAxfHMxIAora2V5fHZhbHxz ZXEKKy0tLSstLS0rLS0tCisgIDF8czEgfCAgMQogKDEgcm93KQogCiBzdGVwIHNlbDI6IFNFTEVD VCAqIEZST00gdG1wOwota2V5fHZhbAotLS0tKy0tLQora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0t CiAoMCByb3dzKQogCiAKQEAgLTE3NSwyNyArMTc1LDI3IEBAIHN0ZXAgc3AyOiBTQVZFUE9JTlQg c3A7CiBzdGVwIHQyOiBUUlVOQ0FURSB0bXA7CiBzdGVwIHJzcDI6IFJPTExCQUNLIFRPIFNBVkVQ T0lOVCBzcDsKIHN0ZXAgc2VsMTogU0VMRUNUICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0t Ci0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMSB8ICAxCiAoMSByb3cp CiAKIHN0ZXAgc2VsMjogU0VMRUNUICogRlJPTSB0bXA7Ci1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8 czIgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMiB8ICAxCiAoMSByb3cpCiAKIHN0 ZXAgcjI6IFJPTExCQUNLOwogc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRtcDsKLWtleXx2YWwK LS0tLSstLS0KLSAgMXxzMSAKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQorICAxfHMxIHwgIDEK ICgxIHJvdykKIAogc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9NIHRtcDsKLWtleXx2YWwKLS0tLSst LS0KK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQogKDAgcm93cykKIAogCkBAIC0yNjcsOSArMjY3 LDkgQEAgSW5kZXggU2NhbiB1c2luZyB0bXBfdmFsX2lkeCBvbiB0bXAKICAgSW5kZXggQ29uZDog KHZhbCA9ICdzMSc6OnRleHQpICAgCiAoMiByb3dzKQogCi1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8 czEgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0 ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MyJyk7CkBAIC0yODYsOSArMjg2 LDkgQEAgSW5kZXggU2NhbiB1c2luZyB0bXBfdmFsX2lkeCBvbiB0bXAKICAgSW5kZXggQ29uZDog KHZhbCA9ICdzMic6OnRleHQpICAgCiAoMiByb3dzKQogCi1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8 czIgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMiB8ICAxCiAoMSByb3cpCiAKIApA QCAtMzA5LDkgKzMwOSw5IEBAIEluZGV4IFNjYW4gdXNpbmcgdG1wX3ZhbF9pZHggb24gdG1wCiAg IEluZGV4IENvbmQ6ICh2YWwgPSAnczEnOjp0ZXh0KSAgIAogKDIgcm93cykKIAota2V5fHZhbAot LS0tKy0tLQotICAxfHMxIAora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0tCisgIDF8czEgfCAgMQog KDEgcm93KQogCiBzdGVwIHNlbDJfaWR4OiAKQEAgLTMyOCw5ICszMjgsOSBAQCBTZXEgU2NhbiBv biB0bXAKICAgRmlsdGVyOiAodmFsID0gJ3MyJzo6dGV4dCkKICgzIHJvd3MpCiAKLWtleXx2YWwK LS0tLSstLS0KLSAgMXxzMiAKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQorICAxfHMyIHwgIDEK ICgxIHJvdykKIAogCkBAIC0zNTEsOSArMzUxLDkgQEAgSW5kZXggU2NhbiB1c2luZyB0bXBfdmFs X2lkeCBvbiB0bXAKICAgSW5kZXggQ29uZDogKHZhbCA9ICdzMSc6OnRleHQpICAgCiAoMiByb3dz KQogCi1rZXl8dmFsCi0tLS0rLS0tCi0gIDF8czEgCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0K KyAgMXxzMSB8ICAxCiAoMSByb3cpCiAKIHN0ZXAgc2VsMl9pZHg6IApAQCAtMzcwLDkgKzM3MCw5 IEBAIFNlcSBTY2FuIG9uIHRtcAogICBGaWx0ZXI6ICh2YWwgPSAnczInOjp0ZXh0KQogKDMgcm93 cykKIAota2V5fHZhbAotLS0tKy0tLQotICAxfHMyIAora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0t CisgIDF8czIgfCAgMQogKDEgcm93KQogCiBzdGVwIHJlaWR4MjogUkVJTkRFWCBJTkRFWCB0bXBf dmFsX2lkeDsKQEAgLTM4OSw4ICszODksOCBAQCBJbmRleCBTY2FuIHVzaW5nIHRtcF92YWxfaWR4 IG9uIHRtcAogICBJbmRleCBDb25kOiAodmFsID0gJ3MyJzo6dGV4dCkgICAKICgyIHJvd3MpCiAK LWtleXx2YWwKLS0tLSstLS0KLSAgMXxzMiAKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQorICAx fHMyIHwgIDEKICgxIHJvdykKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNz L2dsb2JhbC10ZW1wLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFsLXRlbXAu c3BlYwppbmRleCA1MTM2MjMwZTg1OS4uNGVjOTYzZTEwNGEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCkBAIC0xLDcgKzEsNyBAQAogIyBUZXN0IGdsb2JhbCB0 ZW1wb3JhcnkgcmVsYXRpb25zCiAKIHNldHVwIHsKLSAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxF IHRtcCAoa2V5IGludCBQUklNQVJZIEtFWSwgdmFsIHRleHQpOworICBDUkVBVEUgR0xPQkFMIFRF TVAgVEFCTEUgdG1wIChrZXkgaW50IFBSSU1BUlkgS0VZLCB2YWwgdGV4dCwgc2VxIHNlcmlhbCk7 CiAKICAgQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcF9wYXJ0ZWQgKGtleSBpbnQgUFJJTUFS WSBLRVksIHZhbCB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVCAoa2V5KTsKICAgQ1JFQVRFIEdMT0JB TCBURU1QIFRBQkxFIHRtcF9wMSBQQVJUSVRJT04gT0YgdG1wX3BhcnRlZCBGT1IgVkFMVUVTIElO ICgxKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQKaW5kZXggMWIy NDUwYTQ5YjUuLjZkMjc1MWU2ODk5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dsb2JhbF90ZW1wLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2Jh bF90ZW1wLm91dApAQCAtMTMsMTYgKzEzLDE3IEBAIENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSBw Z190ZW1wLnRtcDEgKGEgaW50KTsgLS0gZmFpbAogRVJST1I6ICBjYW5ub3QgY3JlYXRlIGdsb2Jh bCB0ZW1wb3JhcnkgcmVsYXRpb24gaW4gdGVtcG9yYXJ5IHNjaGVtYQogTElORSAxOiBDUkVBVEUg R0xPQkFMIFRFTVAgVEFCTEUgcGdfdGVtcC50bXAxIChhIGludCk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCi1DUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMSAoYSBpbnQg UFJJTUFSWSBLRVksIGIgdGV4dCk7CitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMSAoYSBp bnQgUFJJTUFSWSBLRVksIGIgdGV4dCwgYyBzZXJpYWwpOwogQ1JFQVRFIFNDSEVNQSBnbG9iYWxf dGVtcF94eHggQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50KTsKIENSRUFURSBT Q0hFTUEgZ2xvYmFsX3RlbXBfeXl5OwogQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIGdsb2JhbF90 ZW1wX3l5eS50bXAzIChhIGludCk7CiBcZCB0bXAxCi0gIEdsb2JhbCB0ZW1wb3JhcnkgdGFibGUg Imdsb2JhbF90ZW1wX3Rlc3RzLnRtcDEiCi0gQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8 IE51bGxhYmxlIHwgRGVmYXVsdCAKLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLQorICAgICAgICAgICAgICBHbG9iYWwgdGVtcG9yYXJ5IHRhYmxlICJn bG9iYWxfdGVtcF90ZXN0cy50bXAxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8ICAgICAgICAgICAgIERlZmF1bHQgICAgICAgICAgICAgCistLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKICBiICAg ICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBjICAgICAgfCBpbnRlZ2Vy IHwgICAgICAgICAgIHwgbm90IG51bGwgfCBuZXh0dmFsKCd0bXAxX2Nfc2VxJzo6cmVnY2xhc3Mp CiBJbmRleGVzOgogICAgICJ0bXAxX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoYSkKIApAQCAt NTQsMTYgKzU1LDE2IEBAIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgZ2xvYmFsX3Rl bXBfeXl5LnRtcDMKIC0tIEJhc2ljIHRlc3RzCiBJTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSwg J3h4eCcpOwogU0VMRUNUICogRlJPTSB0bXAxOwotIGEgfCAgYiAgCi0tLS0rLS0tLS0KLSAxIHwg eHh4CisgYSB8ICBiICB8IGMgCistLS0rLS0tLS0rLS0tCisgMSB8IHh4eCB8IDEKICgxIHJvdykK IAogXGMKIFNFVCBzZWFyY2hfcGF0aCA9IGdsb2JhbF90ZW1wX3Rlc3RzOwogU0VMRUNUICogRlJP TSB0bXAxOwotIGEgfCBiIAotLS0tKy0tLQorIGEgfCBiIHwgYyAKKy0tLSstLS0rLS0tCiAoMCBy b3dzKQogCiAtLSBUZXN0IGluZGV4CkBAIC03OCw5ICs3OSw5IEBAIFNFTEVDVCAqIEZST00gdG1w MSBXSEVSRSBhID0gMTsKICgyIHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdG1wMSBXSEVSRSBhID0g MTsKLSBhIHwgIGIgIAotLS0tKy0tLS0tCi0gMSB8IHh4eAorIGEgfCAgYiAgfCBjIAorLS0tKy0t LS0tKy0tLQorIDEgfCB4eHggfCAxCiAoMSByb3cpCiAKIFJFU0VUIGVuYWJsZV9zZXFzY2FuOwpA QCAtOTYsOSArOTcsOSBAQCBTRUxFQ1QgKiBGUk9NIHRtcDEgV0hFUkUgYiA9ICd4eHgnOwogKDIg cm93cykKIAogU0VMRUNUICogRlJPTSB0bXAxIFdIRVJFIGIgPSAneHh4JzsKLSBhIHwgIGIgIAot LS0tKy0tLS0tCi0gMSB8IHh4eAorIGEgfCAgYiAgfCBjIAorLS0tKy0tLS0tKy0tLQorIDEgfCB4 eHggfCAxCiAoMSByb3cpCiAKIFJFU0VUIGVuYWJsZV9zZXFzY2FuOwpAQCAtMTQ1LDggKzE0Niw4 IEBAIEVSUk9SOiAgT04gQ09NTUlUIERST1AgY2Fubm90IGJlIHVzZWQgb24gZ2xvYmFsIHRlbXBv cmFyeSB0YWJsZXMKIC0tIFR3by1waGFzZSBjb21taXQgbm90IGFsbG93ZWQgd2l0aCBnbG9iYWwg dGVtcCB0YWJsZXMKIEJFR0lOOwogU0VMRUNUICogRlJPTSB0bXAxOwotIGEgfCBiIAotLS0tKy0t LQorIGEgfCBiIHwgYyAKKy0tLSstLS0rLS0tCiAoMCByb3dzKQogCiBQUkVQQVJFIFRSQU5TQUNU SU9OICd0d29waGFzZSc7IC0tIGZhaWwKQEAgLTI3Miw4MyArMjczLDExMyBAQCBJTlNFUlQgSU5U TyB0bXAxIFZBTFVFUyAoMSwgJ3h4eCcpOwogQkVHSU47CiBUUlVOQ0FURSB0bXAxOwogU0VMRUNU ICogRlJPTSB0bXAxOwotIGEgfCBiIAotLS0tKy0tLQorIGEgfCBiIHwgYyAKKy0tLSstLS0rLS0t CiAoMCByb3dzKQogCiBST0xMQkFDSzsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIHwgIGIgIAot LS0tKy0tLS0tCi0gMSB8IHh4eAorIGEgfCAgYiAgfCBjIAorLS0tKy0tLS0tKy0tLQorIDEgfCB4 eHggfCAxCiAoMSByb3cpCiAKIEJFR0lOOwogU0FWRVBPSU5UIHNwMTsKIFRSVU5DQVRFIHRtcDE7 CiBTRUxFQ1QgKiBGUk9NIHRtcDE7Ci0gYSB8IGIgCi0tLS0rLS0tCisgYSB8IGIgfCBjIAorLS0t Ky0tLSstLS0KICgwIHJvd3MpCiAKIFJFTEVBU0Ugc3AxOwogU0VMRUNUICogRlJPTSB0bXAxOwot IGEgfCBiIAotLS0tKy0tLQorIGEgfCBiIHwgYyAKKy0tLSstLS0rLS0tCiAoMCByb3dzKQogCiBS T0xMQkFDSzsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIHwgIGIgIAotLS0tKy0tLS0tCi0gMSB8 IHh4eAorIGEgfCAgYiAgfCBjIAorLS0tKy0tLS0tKy0tLQorIDEgfCB4eHggfCAxCiAoMSByb3cp CiAKIEJFR0lOOwogU0FWRVBPSU5UIHNwMTsKIFRSVU5DQVRFIHRtcDE7CiBTRUxFQ1QgKiBGUk9N IHRtcDE7Ci0gYSB8IGIgCi0tLS0rLS0tCisgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0KICgwIHJv d3MpCiAKIFJPTExCQUNLIFRPIHNwMTsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIHwgIGIgIAot LS0tKy0tLS0tCi0gMSB8IHh4eAorIGEgfCAgYiAgfCBjIAorLS0tKy0tLS0tKy0tLQorIDEgfCB4 eHggfCAxCiAoMSByb3cpCiAKIENPTU1JVDsKIFNFTEVDVCAqIEZST00gdG1wMTsKLSBhIHwgIGIg IAotLS0tKy0tLS0tCi0gMSB8IHh4eAorIGEgfCAgYiAgfCBjIAorLS0tKy0tLS0tKy0tLQorIDEg fCB4eHggfCAxCiAoMSByb3cpCiAKIFRSVU5DQVRFIHRtcDE7CiBTRUxFQ1QgKiBGUk9NIHRtcDE7 Ci0gYSB8IGIgCi0tLS0rLS0tCisgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0KICgwIHJvd3MpCiAK IC0tIFRlc3QgdmlldyBjcmVhdGlvbgogSU5TRVJUIElOVE8gdG1wMSBWQUxVRVMgKDEsICd4eHgn KTsKIENSRUFURSBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSB0bXAxOwogU0VMRUNUICogRlJPTSB2 OwotIGEgfCAgYiAgCi0tLS0rLS0tLS0KLSAxIHwgeHh4CisgYSB8ICBiICB8IGMgCistLS0rLS0t LS0rLS0tCisgMSB8IHh4eCB8IDIKICgxIHJvdykKIAogRFJPUCBWSUVXIHY7CiBDUkVBVEUgVEVN UCBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSB0bXAxOwogU0VMRUNUICogRlJPTSB2OwotIGEgfCAg YiAgCi0tLS0rLS0tLS0KLSAxIHwgeHh4CisgYSB8ICBiICB8IGMgCistLS0rLS0tLS0rLS0tCisg MSB8IHh4eCB8IDIKICgxIHJvdykKIAogRFJPUCBWSUVXIHY7CiBDUkVBVEUgR0xPQkFMIFRFTVAg VklFVyB2IEFTIFNFTEVDVCAqIEZST00gdG1wMTsgLS0gZmFpbAogRVJST1I6ICB2aWV3cyBjYW5u b3QgYmUgZ2xvYmFsIHRlbXBvcmFyeSBiZWNhdXNlIHRoZXkgZG8gbm90IGhhdmUgc3RvcmFnZQor LS0gVGVzdCBnbG9iYWwgdGVtcCBzZXF1ZW5jZQorQ1JFQVRFIEdMT0JBTCBURU1QIFNFUVVFTkNF IHMgTUlOVkFMVUUgMTAwIE1BWFZBTFVFIDEzMCBJTkNSRU1FTlQgMTAgU1RBUlQgV0lUSCAxMTAg Q1lDTEU7CitcZCBzCisgICAgICAgICBHbG9iYWwgdGVtcG9yYXJ5IHNlcXVlbmNlICJnbG9iYWxf dGVtcF90ZXN0cy5zIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8IE1heGltdW0gfCBJbmNy ZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgIDExMCB8ICAg ICAxMDAgfCAgICAgMTMwIHwgICAgICAgIDEwIHwgeWVzICAgICB8ICAgICAxCisKK1NFTEVDVCBu ZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNSk7CisgbmV4dHZhbCAKKy0tLS0t LS0tLQorICAgICAxMTAKKyAgICAgMTIwCisgICAgIDEzMAorICAgICAxMDAKKyAgICAgMTEwCiso NSByb3dzKQorCitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVzdHM7CitTRUxF Q1QgbmV4dHZhbCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpOworIG5leHR2YWwgCist LS0tLS0tLS0KKyAgICAgMTEwCisgICAgIDEyMAorICAgICAxMzAKKyAgICAgMTAwCisgICAgIDEx MAorKDUgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3Rl bXAuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsCmluZGV4IDcyNTVh MzVmMmQ0Li4yMzczZWFlMGFkMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xv YmFsX3RlbXAuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbApA QCAtMTEsNyArMTEsNyBAQCBTRVQgUk9MRSByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXI7CiAKIC0t IFRlc3QgdGFibGUgY3JlYXRpb24KIENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSBwZ190ZW1wLnRt cDEgKGEgaW50KTsgLS0gZmFpbAotQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDEgKGEgaW50 IFBSSU1BUlkgS0VZLCBiIHRleHQpOworQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDEgKGEg aW50IFBSSU1BUlkgS0VZLCBiIHRleHQsIGMgc2VyaWFsKTsKIENSRUFURSBTQ0hFTUEgZ2xvYmFs X3RlbXBfeHh4IENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCk7CiBDUkVBVEUg U0NIRU1BIGdsb2JhbF90ZW1wX3l5eTsKIENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSBnbG9iYWxf dGVtcF95eXkudG1wMyAoYSBpbnQpOwpAQCAtMTg5LDMgKzE4OSwxMSBAQCBTRUxFQ1QgKiBGUk9N IHY7CiBEUk9QIFZJRVcgdjsKIAogQ1JFQVRFIEdMT0JBTCBURU1QIFZJRVcgdiBBUyBTRUxFQ1Qg KiBGUk9NIHRtcDE7IC0tIGZhaWwKKworLS0gVGVzdCBnbG9iYWwgdGVtcCBzZXF1ZW5jZQorQ1JF QVRFIEdMT0JBTCBURU1QIFNFUVVFTkNFIHMgTUlOVkFMVUUgMTAwIE1BWFZBTFVFIDEzMCBJTkNS RU1FTlQgMTAgU1RBUlQgV0lUSCAxMTAgQ1lDTEU7CitcZCBzCitTRUxFQ1QgbmV4dHZhbCgncycp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUpOworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2Jh bF90ZW1wX3Rlc3RzOworU0VMRUNUIG5leHR2YWwoJ3MnKSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1KTsKLS0gCjIuNTEuMAoK --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0005-Support-global-temporary-catalog-tables-and-add-p.patch" Content-Disposition: attachment; filename="v7-0005-Support-global-temporary-catalog-tables-and-add-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr915rhe4 RnJvbSA5MzdhNmRjYTFiZjdhNzg2MWU3MDhmNDlhOTg1ZGI2Y2I0YWYxZTBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAxMCBKdW4gMjAyNiAxODoyMzoyNCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMDUvMTBdIFN1cHBvcnQgZ2xvYmFsIHRlbXBvcmFyeSBjYXRhbG9nIHRhYmxlcyBhbmQgYWRk CiBwZ190ZW1wX2NsYXNzLgoKVGhpcyBjb21taXQgYWxsb3dzIHN5c3RlbSBjYXRhbG9nIHRhYmxl cyB0byBiZSBnbG9iYWwgdGVtcG9yYXJ5CnRhYmxlcywgYW5kIGFkZHMgdGhlIGZpcnN0IHN1Y2gg ZXhhbXBsZTogcGdfdGVtcF9jbGFzcy4gVGhlIGlkZWEgaXMKdGhhdCBwZ190ZW1wX2NsYXNzIHdp bGwgY29udGFpbiBvbmUgcm93IGZvciBlYWNoIGdsb2JhbCB0ZW1wb3JhcnkKdGFibGUgYWNjZXNz ZWQgaW4gdGhlIHNlc3Npb24sIGFsbG93aW5nIGEgc3Vic2V0IG9mIHRoZSBhdHRyaWJ1dGVzCmZy b20gcGdfY2xhc3MgdG8gYmUgb3ZlcnJpZGRlbiBsb2NhbGx5IGZvciB0aGF0IHNlc3Npb24uCgpU byBhdm9pZCBib290c3RyYXBwaW5nIGRpZmZpY3VsdGllcyB3aGVuIHBnX3RlbXBfY2xhc3MgaXRz ZWxmIGlzIGZpcnN0CmFjY2Vzc2VkLCBhbmQgbmVlZHMgdG8gaW5zZXJ0IHJvd3MgZGVzY3JpYmlu ZyBpdHNlbGYgYW5kIGl0cyBpbmRleCwKYWxsIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcyBhcmUg aGVsZCBpbiBhIHBlbmRpbmcgcXVldWUgdG8gYmUgZmx1c2hlZApsYXRlciAoYXQgdGhlIGVuZCBv ZiB0aGUgY3VycmVudCBjb21tYW5kIG9yIChzdWIpdHJhbnNhY3Rpb24gY29tbWl0KS4KCkluIHRo aXMgaW5pdGlhbCBjb21taXQsIHBnX3RlbXBfY2xhc3Mgb25seSBoYXMgb2lkLCByZWxmaWxlbm9k ZSwgYW5kCnJlbHRhYmxlc3BhY2UgYXR0cmlidXRlcywgYWxsb3dpbmcgQ0xVU1RFUiwgUkVJTkRF WCwgUkVQQUNLLCBUUlVOQ0FURSwKYW5kIFZBQ1VVTSBGVUxMIHRvIG1ha2UgY2hhbmdlcyBsb2Nh bGx5IHRvIHRoZSBjdXJyZW50IHNlc3Npb24sCndpdGhvdXQgYWZmZWN0aW5nIG90aGVyIHJ1bm5p bmcgc2Vzc2lvbnMuIEFMVEVSIFRBQkxFIFNFVCBUQUJMRVNQQUNFCndvcmtzIHNpbWlsYXJseSwg ZXhjZXB0IHRoYXQgaXQgdXBkYXRlcyBib3RoIHBnX2NsYXNzIGFuZApwZ190ZW1wX2NsYXNzLCBz byB0aGF0IGl0IGFwcGxpZXMgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiBhbmQgYW55CmZ1dHVyZSBz ZXNzaW9ucywgYnV0IG5vdCBhbnkgb3RoZXIgY3VycmVudCBzZXNzaW9ucyB0aGF0IGhhdmUgYWxy ZWFkeQphY2Nlc3NlZCB0aGUgdGFibGUuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGFjdC5jICAgICAgICAgICB8ICAxMyArCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHBhcnNl LnkgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHNjYW5uZXIu bCAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvQ2F0YWxvZy5wbSAgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2dlbmJraS5wbCAgICAgICAgICAgICAgIHwg IDQyICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMgICAgICAgICAgIHwgIDIz ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgIHwgIDE4ICsK IHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmMgICAgICAgICB8IDY2NSArKysrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMgICAgICAgICAgICAgICB8 ICA5NCArKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgfCAg NDAgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAgICAgfCAgMTgg Kwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICB8ICAgOSArLQog c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2lvLmMgICAgICB8ICAxMSArLQogc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jICAgICAgICAgICAgICB8ICAxMSArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvaW52YWwuYyAgICAgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICB8ICAxNCArCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgIHwgIDY5ICstCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mv aHR1cF9kZXRhaWxzLmggICAgICAgICAgIHwgIDExICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvTWFr ZWZpbGUgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvZ2VuYmtp LmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWls ZCAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfY2xhc3Mu aCAgICAgICAgIHwgMTUwICsrKysrCiBzcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFs LXRlbXAub3V0IHwgMTA5ICsrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVt cC5zcGVjICAgfCAgMzcgKysKIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDE4X3dhbF9vcHRpbWl6ZS5w bCAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQg ICB8IDE4NCArKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0ICAg ICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQgICAgICAgICB8 ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsICAgICAgICB8IDEx NCArKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgIHwgICAz ICsKIDMzIGZpbGVzIGNoYW5nZWQsIDE2MjMgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfY2xhc3MuaAoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCBlMWIwOTIwMTRlOS4uN2M2MzFkZTkzOTMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX2VudW0uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfY2xhc3Mu aCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3lu Yy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgpAQCAtMTE0OCw2ICsxMTQ5LDkg QEAgQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQodm9pZCkKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX1RSQU5TQUNUSU9OX1NUQVRFKSwKIAkJCQkJIGVycm1zZygiY2Fubm90IHN0YXJ0IGNv bW1hbmRzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpKSk7CiAKKwkJLyogRmx1c2ggb3V0 IGFueSBwZW5kaW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcyAqLworCQlQcmVDQ0lfUGdUZW1w Q2xhc3MoKTsKKwogCQljdXJyZW50Q29tbWFuZElkICs9IDE7CiAJCWlmIChjdXJyZW50Q29tbWFu ZElkID09IEludmFsaWRDb21tYW5kSWQpCiAJCXsKQEAgLTIzNjAsNiArMjM2NCw5IEBAIENvbW1p dFRyYW5zYWN0aW9uKHZvaWQpCiAJICovCiAJUHJlQ29tbWl0X29uX2NvbW1pdF9hY3Rpb25zKCk7 CiAKKwkvKiBGbHVzaCBvdXQgYW55IHBlbmRpbmcgaW5zZXJ0cyB0byBwZ190ZW1wX2NsYXNzICov CisJUHJlQ29tbWl0X1BnVGVtcENsYXNzKCk7CisKIAkvKgogCSAqIFN5bmNocm9uaXplIGZpbGVz IHRoYXQgYXJlIGNyZWF0ZWQgYW5kIG5vdCBXQUwtbG9nZ2VkIGR1cmluZyB0aGlzCiAJICogdHJh bnNhY3Rpb24uIFRoaXMgbXVzdCBoYXBwZW4gYmVmb3JlIEF0RU9YYWN0X1JlbGF0aW9uTWFwKCks IHNvIHRoYXQgd2UKQEAgLTI2MzMsNiArMjY0MCw5IEBAIFByZXBhcmVUcmFuc2FjdGlvbih2b2lk KQogCSAqLwogCVByZUNvbW1pdF9vbl9jb21taXRfYWN0aW9ucygpOwogCisJLyogRmx1c2ggb3V0 IGFueSBwZW5kaW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcyAqLworCVByZUNvbW1pdF9QZ1Rl bXBDbGFzcygpOworCiAJLyoKIAkgKiBTeW5jaHJvbml6ZSBmaWxlcyB0aGF0IGFyZSBjcmVhdGVk IGFuZCBub3QgV0FMLWxvZ2dlZCBkdXJpbmcgdGhpcwogCSAqIHRyYW5zYWN0aW9uLiBUaGlzIG11 c3QgaGFwcGVuIGJlZm9yZSBFbmRQcmVwYXJlKCksIHNvIHRoYXQgd2UgZG9uJ3Qgc2VlCkBAIC01 MTkyLDYgKzUyMDIsOSBAQCBDb21taXRTdWJUcmFuc2FjdGlvbih2b2lkKQogCUNhbGxTdWJYYWN0 Q2FsbGJhY2tzKFNVQlhBQ1RfRVZFTlRfUFJFX0NPTU1JVF9TVUIsIHMtPnN1YlRyYW5zYWN0aW9u SWQsCiAJCQkJCQkgcy0+cGFyZW50LT5zdWJUcmFuc2FjdGlvbklkKTsKIAorCS8qIEZsdXNoIG91 dCBhbnkgcGVuZGluZyBpbnNlcnRzIHRvIHBnX3RlbXBfY2xhc3MgKi8KKwlQcmVTdWJDb21taXRf UGdUZW1wQ2xhc3MoKTsKKwogCS8qCiAJICogSWYgdGhpcyBzdWJ4YWN0IGhhcyBzdGFydGVkIGFu eSB1bmZpbmlzaGVkIHBhcmFsbGVsIG9wZXJhdGlvbiwgY2xlYW4gdXAKIAkgKiBpdHMgd29ya2Vy cyBhbmQgZXhpdCBwYXJhbGxlbCBtb2RlLiAgV2FybiBhYm91dCBsZWFrZWQgcmVzb3VyY2VzLgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55IGIvc3JjL2JhY2tl bmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55CmluZGV4IDMwNWE1NjU0ZmYzLi43MDI2YTEzODM3NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RwYXJzZS55CisrKyBiL3NyYy9i YWNrZW5kL2Jvb3RzdHJhcC9ib290cGFyc2UueQpAQCAtOTYsNyArOTYsNyBAQCBzdGF0aWMgaW50 IG51bV9jb2x1bW5zX3JlYWQgPSAwOwogJXR5cGUgPGxpc3Q+ICBib290X2luZGV4X3BhcmFtcwog JXR5cGUgPGllbGVtPiBib290X2luZGV4X3BhcmFtCiAldHlwZSA8c3RyPiAgIGJvb3RfaWRlbnQK LSV0eXBlIDxpdmFsPiAgb3B0Ym9vdHN0cmFwIG9wdHNoYXJlZHJlbGF0aW9uIGJvb3RfY29sdW1u X251bGxuZXNzCisldHlwZSA8aXZhbD4gIG9wdGJvb3RzdHJhcCBvcHRzaGFyZWRyZWxhdGlvbiBv cHR0ZW1wcmVsYXRpb24gYm9vdF9jb2x1bW5fbnVsbG5lc3MKICV0eXBlIDxvaWR2YWw+IG9pZHNw ZWMgb3B0cm93dHlwZW9pZAogCiAldG9rZW4gPHN0cj4gSUQKQEAgLTEwNiw3ICsxMDYsNyBAQCBz dGF0aWMgaW50IG51bV9jb2x1bW5zX3JlYWQgPSAwOwogLyogQWxsIHRoZSByZXN0IGFyZSB1bnJl c2VydmVkLCBhbmQgc2hvdWxkIGJlIGhhbmRsZWQgaW4gYm9vdF9pZGVudCEgKi8KICV0b2tlbiA8 a3c+IE9QRU4gWENMT1NFIFhDUkVBVEUgSU5TRVJUX1RVUExFCiAldG9rZW4gPGt3PiBYREVDTEFS RSBJTkRFWCBPTiBVU0lORyBYQlVJTEQgSU5ESUNFUyBVTklRVUUgWFRPQVNUCi0ldG9rZW4gPGt3 PiBPQkpfSUQgWEJPT1RTVFJBUCBYU0hBUkVEX1JFTEFUSU9OIFhST1dUWVBFX09JRAorJXRva2Vu IDxrdz4gT0JKX0lEIFhCT09UU1RSQVAgWFNIQVJFRF9SRUxBVElPTiBYVEVNUF9SRUxBVElPTiBY Uk9XVFlQRV9PSUQKICV0b2tlbiA8a3c+IFhGT1JDRSBYTk9UIFhOVUxMCiAKICVzdGFydCBUb3BM ZXZlbApAQCAtMTU1LDEzICsxNTUsMTQgQEAgQm9vdF9DbG9zZVN0bXQ6CiAJCTsKIAogQm9vdF9D cmVhdGVTdG10OgotCQkgIFhDUkVBVEUgYm9vdF9pZGVudCBvaWRzcGVjIG9wdGJvb3RzdHJhcCBv cHRzaGFyZWRyZWxhdGlvbiBvcHRyb3d0eXBlb2lkIExQQVJFTgorCQkgIFhDUkVBVEUgYm9vdF9p ZGVudCBvaWRzcGVjIG9wdGJvb3RzdHJhcCBvcHRzaGFyZWRyZWxhdGlvbiBvcHR0ZW1wcmVsYXRp b24gb3B0cm93dHlwZW9pZCBMUEFSRU4KIAkJCQl7CiAJCQkJCWRvX3N0YXJ0KCk7CiAJCQkJCW51 bWF0dHIgPSAwOwotCQkJCQllbG9nKERFQlVHNCwgImNyZWF0aW5nJXMlcyByZWxhdGlvbiAlcyAl dSIsCisJCQkJCWVsb2coREVCVUc0LCAiY3JlYXRpbmclcyVzJXMgcmVsYXRpb24gJXMgJXUiLAog CQkJCQkJICQ0ID8gIiBib290c3RyYXAiIDogIiIsCiAJCQkJCQkgJDUgPyAiIHNoYXJlZCIgOiAi IiwKKwkJCQkJCSAkNiA/ICIgZ2xvYmFsIHRlbXAiIDogIiIsCiAJCQkJCQkgJDIsCiAJCQkJCQkg JDMpOwogCQkJCX0KQEAgLTE3Myw2ICsxNzQsNyBAQCBCb290X0NyZWF0ZVN0bXQ6CiAJCQkJewog CQkJCQlUdXBsZURlc2MJdHVwZGVzYzsKIAkJCQkJYm9vbAkJc2hhcmVkX3JlbGF0aW9uOworCQkJ CQlib29sCQl0ZW1wX3JlbGF0aW9uOwogCQkJCQlib29sCQltYXBwZWRfcmVsYXRpb247CiAKIAkJ CQkJZG9fc3RhcnQoKTsKQEAgLTE4MCw2ICsxODIsNyBAQCBCb290X0NyZWF0ZVN0bXQ6CiAJCQkJ CXR1cGRlc2MgPSBDcmVhdGVUdXBsZURlc2MobnVtYXR0ciwgYXR0cnR5cGVzKTsKIAogCQkJCQlz aGFyZWRfcmVsYXRpb24gPSAkNTsKKwkJCQkJdGVtcF9yZWxhdGlvbiA9ICQ2OwogCiAJCQkJCS8q CiAJCQkJCSAqIFRoZSBjYXRhbG9ncyB0aGF0IHVzZSB0aGUgcmVsYXRpb24gbWFwcGVyIGFyZSB0 aGUKQEAgLTIxMSw2ICsyMTQsOCBAQCBCb290X0NyZWF0ZVN0bXQ6CiAJCQkJCQkJCQkJCQkgICBI RUFQX1RBQkxFX0FNX09JRCwKIAkJCQkJCQkJCQkJCSAgIHR1cGRlc2MsCiAJCQkJCQkJCQkJCQkg ICBSRUxLSU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCQkJICAgdGVtcF9yZWxhdGlvbiA/CisJCQkJ CQkJCQkJCQkgICBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCA6CiAJCQkJCQkJCQkJCQkgICBS RUxQRVJTSVNURU5DRV9QRVJNQU5FTlQsCiAJCQkJCQkJCQkJCQkgICBzaGFyZWRfcmVsYXRpb24s CiAJCQkJCQkJCQkJCQkgICBtYXBwZWRfcmVsYXRpb24sCkBAIC0yMjksMTMgKzIzNCwxNSBAQCBC b290X0NyZWF0ZVN0bXQ6CiAJCQkJCQkJCQkJCQkJICBQR19DQVRBTE9HX05BTUVTUEFDRSwKIAkJ CQkJCQkJCQkJCQkgIHNoYXJlZF9yZWxhdGlvbiA/IEdMT0JBTFRBQkxFU1BBQ0VfT0lEIDogMCwK IAkJCQkJCQkJCQkJCQkgICQzLAotCQkJCQkJCQkJCQkJCSAgJDYsCisJCQkJCQkJCQkJCQkJICAk NywKIAkJCQkJCQkJCQkJCQkgIEludmFsaWRPaWQsCiAJCQkJCQkJCQkJCQkJICBCT09UU1RSQVBf U1VQRVJVU0VSSUQsCiAJCQkJCQkJCQkJCQkJICBIRUFQX1RBQkxFX0FNX09JRCwKIAkJCQkJCQkJ CQkJCQkgIHR1cGRlc2MsCiAJCQkJCQkJCQkJCQkJICBOSUwsCiAJCQkJCQkJCQkJCQkJICBSRUxL SU5EX1JFTEFUSU9OLAorCQkJCQkJCQkJCQkJCSAgdGVtcF9yZWxhdGlvbiA/CisJCQkJCQkJCQkJ CQkJICBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCA6CiAJCQkJCQkJCQkJCQkJICBSRUxQRVJT SVNURU5DRV9QRVJNQU5FTlQsCiAJCQkJCQkJCQkJCQkJICBzaGFyZWRfcmVsYXRpb24sCiAJCQkJ CQkJCQkJCQkJICBtYXBwZWRfcmVsYXRpb24sCkBAIC00MzMsNiArNDQwLDExIEBAIG9wdHNoYXJl ZHJlbGF0aW9uOgogCQl8CQkJCQkJeyAkJCA9IDA7IH0KIAkJOwogCitvcHR0ZW1wcmVsYXRpb246 CisJCQlYVEVNUF9SRUxBVElPTgl7ICQkID0gMTsgfQorCQl8CQkJCQl7ICQkID0gMDsgfQorCQk7 CisKIG9wdHJvd3R5cGVvaWQ6CiAJCQlYUk9XVFlQRV9PSUQgb2lkc3BlYwl7ICQkID0gJDI7IH0K IAkJfAkJCQkJCQl7ICQkID0gSW52YWxpZE9pZDsgfQpAQCAtNDkyLDYgKzUwNCw3IEBAIGJvb3Rf aWRlbnQ6CiAJCXwgT0JKX0lECQl7ICQkID0gcHN0cmR1cCgkMSk7IH0KIAkJfCBYQk9PVFNUUkFQ CXsgJCQgPSBwc3RyZHVwKCQxKTsgfQogCQl8IFhTSEFSRURfUkVMQVRJT04JeyAkJCA9IHBzdHJk dXAoJDEpOyB9CisJCXwgWFRFTVBfUkVMQVRJT04JeyAkJCA9IHBzdHJkdXAoJDEpOyB9CiAJCXwg WFJPV1RZUEVfT0lECXsgJCQgPSBwc3RyZHVwKCQxKTsgfQogCQl8IFhGT1JDRQkJeyAkJCA9IHBz dHJkdXAoJDEpOyB9CiAJCXwgWE5PVAkJCXsgJCQgPSBwc3RyZHVwKCQxKTsgfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzY2FubmVyLmwgYi9zcmMvYmFja2VuZC9ib290 c3RyYXAvYm9vdHNjYW5uZXIubAppbmRleCA5Njc0ZjI3OTVkMS4uZjhjMWE2NzE3MTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c2Nhbm5lci5sCisrKyBiL3NyYy9iYWNr ZW5kL2Jvb3RzdHJhcC9ib290c2Nhbm5lci5sCkBAIC04Miw2ICs4Miw3IEBAIGNyZWF0ZQkJCXsg eXlsdmFsLT5rdyA9ICJjcmVhdGUiOyByZXR1cm4gWENSRUFURTsgfQogT0lECQkJCXsgeXlsdmFs LT5rdyA9ICJPSUQiOyByZXR1cm4gT0JKX0lEOyB9CiBib290c3RyYXAJCXsgeXlsdmFsLT5rdyA9 ICJib290c3RyYXAiOyByZXR1cm4gWEJPT1RTVFJBUDsgfQogc2hhcmVkX3JlbGF0aW9uCXsgeXls dmFsLT5rdyA9ICJzaGFyZWRfcmVsYXRpb24iOyByZXR1cm4gWFNIQVJFRF9SRUxBVElPTjsgfQor dGVtcF9yZWxhdGlvbgl7IHl5bHZhbC0+a3cgPSAidGVtcF9yZWxhdGlvbiI7IHJldHVybiBYVEVN UF9SRUxBVElPTjsgfQogcm93dHlwZV9vaWQJCXsgeXlsdmFsLT5rdyA9ICJyb3d0eXBlX29pZCI7 IHJldHVybiBYUk9XVFlQRV9PSUQ7IH0KIAogaW5zZXJ0CQkJeyB5eWx2YWwtPmt3ID0gImluc2Vy dCI7IHJldHVybiBJTlNFUlRfVFVQTEU7IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvQ2F0YWxvZy5wbSBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvQ2F0YWxvZy5wbQppbmRleCAyMTlh ZjU4ODRkOS4uNzhlNjliM2YwZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvQ2F0 YWxvZy5wbQorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL0NhdGFsb2cucG0KQEAgLTE3Niw2ICsx NzYsOCBAQCBzdWIgUGFyc2VIZWFkZXIKIAkJCSRjYXRhbG9ne2Jvb3RzdHJhcH0gPSAvQktJX0JP T1RTVFJBUC8gPyAnIGJvb3RzdHJhcCcgOiAnJzsKIAkJCSRjYXRhbG9ne3NoYXJlZF9yZWxhdGlv bn0gPQogCQkJICAvQktJX1NIQVJFRF9SRUxBVElPTi8gPyAnIHNoYXJlZF9yZWxhdGlvbicgOiAn JzsKKwkJCSRjYXRhbG9ne3RlbXBfcmVsYXRpb259ID0KKwkJCSAgL0JLSV9URU1QX1JFTEFUSU9O LyA/ICcgdGVtcF9yZWxhdGlvbicgOiAnJzsKIAkJCWlmICgvQktJX1JPV1RZUEVfT0lEXChccyoK IAkJCQkgKD88cm93dHlwZV9vaWQ+XGQrKSxccyoKIAkJCQkgKD88cm93dHlwZV9vaWRfbWFjcm8+ XHcrKVxzKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggMGZiMDg1ZmQ4ZWUuLmIxMzI5M2E5MzNlIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvTWFrZWZpbGUKQEAgLTQ2LDYgKzQ2LDcgQEAgT0JKUyA9IFwKIAlwZ19zaGRlcGVu ZC5vIFwKIAlwZ19zdWJzY3JpcHRpb24ubyBcCiAJcGdfdGFibGVzcGFjZS5vIFwKKwlwZ190ZW1w X2NsYXNzLm8gXAogCXBnX3R5cGUubyBcCiAJc3RvcmFnZS5vIFwKIAl0b2FzdGluZy5vCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2dlbmJraS5wbCBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvZ2VuYmtpLnBsCmluZGV4IDg2ZjMxMzVmOWM3Li45YTNmMDE2NDk2MiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9nZW5ia2kucGwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9n ZW5ia2kucGwKQEAgLTE3NCw2ICsxNzQsNyBAQCBmb3JlYWNoIG15ICRoZWFkZXIgKEBBUkdWKQog CQkJaW5kZXhfb2lkX21hY3JvID0+ICRpbmRleC0+e2luZGV4X29pZF9tYWNyb30sCiAJCQlrZXkg PT4gJGtleSwKIAkJCW5idWNrZXRzID0+ICRzeXNjYWNoZS0+e3N5c2NhY2hlX25idWNrZXRzfSwK KwkJCXRhYmxlX2lzX3RlbXAgPT4gJGNhdGFsb2dzeyR0YmxuYW1lfS0+e3RlbXBfcmVsYXRpb259 IGVxICIiID8gMCA6IDEsCiAJCX07CiAKIAkJJHN5c2NhY2hlX2NhdGFsb2dzeyRjYXRuYW1lfSA9 IDE7CkBAIC01MTgsNiArNTE5LDcgQEAgRU9NCiAJIyAuYmtpIENSRUFURSBjb21tYW5kIGZvciB0 aGlzIGNhdGFsb2cKIAlwcmludCAkYmtpICJjcmVhdGUgJGNhdG5hbWUgJGNhdGFsb2ctPntyZWxh dGlvbl9vaWR9IgogCSAgLiAkY2F0YWxvZy0+e3NoYXJlZF9yZWxhdGlvbn0KKwkgIC4gJGNhdGFs b2ctPnt0ZW1wX3JlbGF0aW9ufQogCSAgLiAkY2F0YWxvZy0+e2Jvb3RzdHJhcH0KIAkgIC4gJGNh dGFsb2ctPntyb3d0eXBlX29pZF9jbGF1c2V9OwogCkBAIC04MzgsNiArODQwLDQ2IEBAIGZvcmVh Y2ggbXkgJHN5c2NhY2hlIChzb3J0IGtleXMgJXN5c2NhY2hlcykKIHByaW50ICRzeXNjYWNoZV9p ZHNfZmggIn0gU3lzQ2FjaGVJZGVudGlmaWVyO1xuIjsKIHByaW50ICRzeXNjYWNoZV9pZHNfZmgg IiNkZWZpbmUgU3lzQ2FjaGVTaXplICgkbGFzdF9zeXNjYWNoZSArIDEpXG5cbiI7CiAKKyMgTWFj cm8gdG8gdGVzdCBpZiBhIGNhdGFsb2cgcmVsYXRpb24gaXMgZ2xvYmFsIHRlbXBvcmFyeQorcHJp bnQgJHN5c2NhY2hlX2lkc19maCAiLyogSXMgdGhlIHNwZWNpZmllZCBjYXRhbG9nIHJlbGF0aW9u IGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbj8gKi9cbiI7CitwcmludCAkc3lzY2FjaGVfaWRz X2ZoICIjZGVmaW5lIElzR2xvYmFsVGVtcENhdGFsb2dSZWxhdGlvbihyZWxpZCkgXFxcbiI7CisK K215ICRudW1fY2xhdXNlcyA9IDA7Citmb3JlYWNoIG15ICRjYXRuYW1lIChzb3J0IGtleXMgJWNh dGFsb2dzKQoreworCW15ICRjYXRhbG9nID0gJGNhdGFsb2dzeyRjYXRuYW1lfTsKKworCWlmICgk Y2F0YWxvZy0+e3RlbXBfcmVsYXRpb259KQorCXsKKwkJcHJpbnQgJHN5c2NhY2hlX2lkc19maCAk bnVtX2NsYXVzZXMgPT0gMCA/ICJcdCgiIDogIiB8fCBcXFxuXHQgIjsKKwkJcHJpbnQgJHN5c2Nh Y2hlX2lkc19maCAiKHJlbGlkKSA9PSAkY2F0YWxvZy0+e3JlbGF0aW9uX29pZF9tYWNyb30iOwor CQkkbnVtX2NsYXVzZXMrKzsKKworCQlmb3JlYWNoIG15ICRpbmRleCAoQHsgJGNhdGFsb2ctPntp bmRleGluZ30gfSkKKwkJeworCQkJcHJpbnQgJHN5c2NhY2hlX2lkc19maCAiIHx8IFxcXG5cdCAo cmVsaWQpID09ICRpbmRleC0+e2luZGV4X29pZF9tYWNyb30iOworCQkJJG51bV9jbGF1c2VzKys7 CisJCX0KKwl9Cit9CitwcmludCAkc3lzY2FjaGVfaWRzX2ZoICRudW1fY2xhdXNlcyA9PSAwID8g ImZhbHNlXG5cbiIgOiAiKVxuXG4iOworCisjIE1hY3JvIHRvIHRlc3QgaWYgYSBzeXNjYWNoZSdz IHJlbGF0aW9uIGlzIGdsb2JhbCB0ZW1wb3JhcnkKK3ByaW50ICRzeXNjYWNoZV9pZHNfZmggIi8q IERvZXMgdGhlIHNwZWNpZmllZCBTeXNDYWNoZSB1c2UgYSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0 aW9uPyAqL1xuIjsKK3ByaW50ICRzeXNjYWNoZV9pZHNfZmggIiNkZWZpbmUgU3lzQ2FjaGVSZWxh dGlvbklzR2xvYmFsVGVtcChjYWNoZUlkKSBcXFxuIjsKKworJG51bV9jbGF1c2VzID0gMDsKK2Zv cmVhY2ggbXkgJHN5c2NhY2hlIChzb3J0IGtleXMgJXN5c2NhY2hlcykKK3sKKwlpZiAoJHN5c2Nh Y2hlc3skc3lzY2FjaGV9e3RhYmxlX2lzX3RlbXB9KQorCXsKKwkJcHJpbnQgJHN5c2NhY2hlX2lk c19maCAkbnVtX2NsYXVzZXMgPT0gMCA/ICJcdCgiIDogIiB8fCBcXFxuXHQgIjsKKwkJcHJpbnQg JHN5c2NhY2hlX2lkc19maCAiKGNhY2hlSWQpID09ICRzeXNjYWNoZSI7CisJCSRudW1fY2xhdXNl cysrOworCX0KK30KK3ByaW50ICRzeXNjYWNoZV9pZHNfZmggJG51bV9jbGF1c2VzID09IDAgPyAi ZmFsc2VcblxuIiA6ICIpXG5cbiI7CisKICMgQ2xvc2luZyBib2lsZXJwbGF0ZSBmb3Igc3lzY2Fj aGVfaWRzLmgKIHByaW50ICRzeXNjYWNoZV9pZHNfZmggIiNlbmRpZlx0XHRcdFx0XHRcdFx0Lyog U1lTQ0FDSEVfSURTX0ggKi9cbiI7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv Z2xvYmFsX3RlbXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2xvYmFsX3RlbXAuYwppbmRleCBi ZWZlZTA3NDRlMi4uYjcwZmRjNzBmMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv Z2xvYmFsX3RlbXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2dsb2JhbF90ZW1wLmMKQEAg LTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9ndXRpbHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL2dsb2JhbF90ZW1wLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJs ZWNtZHMuaCIKQEAgLTk1NSw4ICs5NTYsMTcgQEAgSW52YWxpZGF0ZUdsb2JhbFRlbXBSZWxhdGlv bihPaWQgcmVsaWQpCiB2b2lkCiBHbG9iYWxUZW1wUmVsYXRpb25DcmVhdGVkKFJlbGF0aW9uIHJl bGF0aW9uKQogewotCS8qIFJlY29yZCBvdXIgdXNlIG9mIHRoZSByZWxhdGlvbiAqLwotCWd0cl9y ZWNvcmRfdXNhZ2UocmVsYXRpb24tPnJkX2lkKTsKKwkvKgorCSAqIElmIHRoaXMgaXMgdGhlIGZp cnN0IHRpbWUgd2UndmUgdXNlZCB0aGlzIHJlbGF0aW9uIGluIHRoaXMgc2Vzc2lvbiwKKwkgKiBp bnNlcnQgYSBwZ190ZW1wX2NsYXNzIHR1cGxlIGZvciBpdCwgYW5kIHVwZGF0ZSB0aGUgdXNhZ2Ug aGFzaCB0YWJsZXMuCisJICovCisJaWYgKGd0cl9sb2NhbF91c2FnZSA9PSBOVUxMIHx8CisJCWhh c2hfc2VhcmNoKGd0cl9sb2NhbF91c2FnZSwKKwkJCQkJJnJlbGF0aW9uLT5yZF9pZCwgSEFTSF9G SU5ELCBOVUxMKSA9PSBOVUxMKQorCXsKKwkJSW5zZXJ0UGdUZW1wQ2xhc3NUdXBsZShyZWxhdGlv bik7CisJCWd0cl9yZWNvcmRfdXNhZ2UocmVsYXRpb24tPnJkX2lkKTsKKwl9CiB9CiAKIC8qCkBA IC05ODUsNiArOTk1LDkgQEAgR2xvYmFsVGVtcFJlbGF0aW9uRHJvcHBlZChPaWQgcmVsaWQpCiAK IAkJLyogRmxhZyB0aGUgdXNhZ2UgZW50cnkgZm9yIGVveGFjdCBjbGVhbnVwICovCiAJCUVPWGFj dFVzYWdlTGlzdEFkZChyZWxpZCk7CisKKwkJLyogRGVsZXRlIGl0J3MgcGdfdGVtcF9jbGFzcyB0 dXBsZSAqLworCQlEZWxldGVQZ1RlbXBDbGFzc1R1cGxlKHJlbGlkKTsKIAl9CiAKIAkvKiBGb3Jn ZXQgYW55IE9OIENPTU1JVCBhY3Rpb24gZm9yIHRoZSByZWxhdGlvbiAqLwpAQCAtMTExMSw2ICsx MTI0LDkgQEAgQXRFT1hhY3RfR2xvYmFsVGVtcFJlbGF0aW9uKGJvb2wgaXNDb21taXQpCiAJCX0K IAl9CiAKKwkvKiBQZXJmb3JtIGFueSBwZ190ZW1wX2NsYXNzIHByb2Nlc3NpbmcgKi8KKwlBdEVP WGFjdF9QZ1RlbXBDbGFzcyhpc0NvbW1pdCk7CisKIAkvKiBOb3cgd2UncmUgb3V0IG9mIHRoZSB0 cmFuc2FjdGlvbiBhbmQgY2FuIGNsZWFyIHRoZSBsaXN0cyAqLwogCWVveGFjdF9zdG9yYWdlX2xp c3RfbGVuID0gMDsKIAllb3hhY3Rfc3RvcmFnZV9saXN0X292ZXJmbG93ZWQgPSBmYWxzZTsKQEAg LTExODIsNiArMTE5OCw5IEBAIEF0RU9TdWJYYWN0X0dsb2JhbFRlbXBSZWxhdGlvbihib29sIGlz Q29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViaWQsCiAJCX0KIAl9CiAKKwkvKiBQZXJmb3Jt IGFueSBwZ190ZW1wX2NsYXNzIHByb2Nlc3NpbmcgKi8KKwlBdEVPU3ViWGFjdF9QZ1RlbXBDbGFz cyhpc0NvbW1pdCwgbXlTdWJpZCwgcGFyZW50U3ViaWQpOworCiAJLyogRG9uJ3QgcmVzZXQgdGhl IGxpc3RzOyB3ZSBzdGlsbCBuZWVkIG1vcmUgY2xlYW51cCBsYXRlciAqLwogfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggMzMwYzc3NTY3NTguLmYwMmQ1MTcwNGI0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBA IC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFj ZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvc3RvcmFnZS5oIgpAQCAtMzY0Niw2ICszNjQ3LDIzIEBAIHJlaW5kZXhfaW5kZXgo Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElkLAogCiAJcGdfcnVzYWdlX2luaXQo JnJ1MCk7CiAKKwkvKgorCSAqIFNwZWNpYWwgY2FzZTogY2Fubm90IHJlY3JlYXRlIHBnX3RlbXBf Y2xhc3Nfb2lkX2luZGV4IC0tLSB0byBkbyBzbworCSAqIHdvdWxkIHJlcXVpcmUgcGdfdGVtcF9j bGFzcyB0byBiZSBhIG1hcHBlZCByZWxhdGlvbiAodG8gYXZvaWQgdXNlIG9mCisJICogdGhlIGlu ZGV4IHdoaWxlIHJlYnVpbGRpbmcgaXQpIGFuZCB0aGUgcmVsbWFwcGVyIGRvZXMgbm90IHN1cHBv cnQKKwkgKiB0ZW1wb3JhcnkgdGFibGVzLiAgSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gbWFrZSB0 aGlzIHdvcmssIGJ1dCBpdAorCSAqIGRvZXNuJ3Qgc2VlbSB3b3J0aCB0aGUgZWZmb3J0LCBzbyBq dXN0IHB1bnQuCisJICovCisJaWYgKGluZGV4SWQgPT0gVGVtcENsYXNzT2lkSW5kZXhJZCkKKwl7 CisJCWVyZXBvcnQoTk9USUNFLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCWVycm1zZygiY2Fubm90IHJlaW5kZXggdGVtcG9yYXJ5IHN5c3RlbSBpbmRl eCBcIiVzXCIsIHNraXBwaW5nIiwKKwkJCQkJICAgZ2V0X3JlbF9uYW1lKGluZGV4SWQpKSk7CisJ CVJlbW92ZVJlaW5kZXhQZW5kaW5nKGluZGV4SWQpOworCQlyZXR1cm47CisJfQorCiAJLyoKIAkg KiBPcGVuIGFuZCBsb2NrIHRoZSBwYXJlbnQgaGVhcCByZWxhdGlvbi4gIFNoYXJlTG9jayBpcyBz dWZmaWNpZW50IHNpbmNlCiAJICogd2Ugb25seSBuZWVkIHRvIGJlIHN1cmUgbm8gc2NoZW1hIG9y IGRhdGEgY2hhbmdlcyBhcmUgZ29pbmcgb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCA3 Mjg1YWIyZGZjZi4uNTM4NmQ5NjBiNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv bWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZApAQCAtMzMs NiArMzMsNyBAQCBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCiAgICdwZ19zaGRlcGVuZC5jJywK ICAgJ3BnX3N1YnNjcmlwdGlvbi5jJywKICAgJ3BnX3RhYmxlc3BhY2UuYycsCisgICdwZ190ZW1w X2NsYXNzLmMnLAogICAncGdfdHlwZS5jJywKICAgJ3N0b3JhZ2UuYycsCiAgICd0b2FzdGluZy5j JywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjg1ZGFiNGJiYjBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmMKQEAgLTAsMCArMSw2NjUgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICoKKyAqIHBnX3RlbXBfY2xhc3MuYworICoJICByb3V0aW5lcyB0byBzdXBwb3J0 IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfdGVtcF9jbGFzcyByZWxhdGlvbgorICoKKyAqIFRoZSBw Z190ZW1wX2NsYXNzIHN5c3RlbSBjYXRhbG9nIHRhYmxlIGlzIGEgZ2xvYmFsIHRlbXBvcmFyeSB0 YWJsZSB0aGF0CisgKiBzdG9yZXMgbG9jYWwgb3ZlcnJpZGVzIHRvIHZhcmlvdXMgZmllbGRzIGZy b20gdGhlIHBnX2NsYXNzIHRhYmxlIGZvciB0aGUKKyAqIGR1cmF0aW9uIG9mIHRoZSBjdXJyZW50 IHNlc3Npb24uICBDdXJyZW50bHksIHRoaXMgaXMgb25seSB1c2VkIGZvcgorICogZ2xvYmFsIHRl bXBvcmFyeSByZWxhdGlvbnMsIHRob3VnaCBpbiB0aGUgZnV0dXJlLCBpdCBtaWdodCBhbHNvIGJl IHVzZWQKKyAqIGZvciBsb2NhbCB0ZW1wb3JhcnkgcmVsYXRpb25zLgorICoKKyAqIFR1cGxlcyBh cmUgZmlyc3QgYWRkZWQgdG8gcGdfdGVtcF9jbGFzcyB3aGVuIGdsb2JhbCB0ZW1wb3JhcnkgcmVs YXRpb25zCisgKiAoaW5jbHVkaW5nIHBnX3RlbXBfY2xhc3MgaXRzZWxmKSBhcmUgY3JlYXRlZCBv ciBvcGVuZWQgZm9yIHRoZSBmaXJzdAorICogdGltZSBpbiBhIHNlc3Npb24uICBUaGlzICJmaXJz dCB0aW1lIiBtaWdodCBiZSByZXBlYXRlZCBpZiBhIHByZXZpb3VzCisgKiAiZmlyc3QgdGltZSIg aW5zZXJ0IHdhcyByb2xsZWQgYmFjay4KKyAqCisgKiBBbGwgdHVwbGVzIHRvIGJlIGluc2VydGVk IGludG8gcGdfdGVtcF9jbGFzcyBhcmUgaGVsZCBpbiBhICJwZW5kaW5nIgorICogcXVldWUsIHJh dGhlciB0aGFuIGJlaW5nIHdyaXR0ZW4gb3V0IGltbWVkaWF0ZWx5LCBkZWxheWluZyB0aGUgcG9p bnQgYXQKKyAqIHdoaWNoIHRoZSB0dXBsZSBmb3IgcGdfdGVtcF9jbGFzcyBpdHNlbGYgaXMgaW5z ZXJ0ZWQgdW50aWwgYWZ0ZXIgdGhlCisgKiByZWxhdGlvbiBoYXMgYmVlbiBmdWxseSBvcGVuZWQu ICBUaGlzIHBlbmRpbmcgcXVldWUgYWxzbyBzZXJ2ZXMgYSBudW1iZXIKKyAqIG9mIG90aGVyIHVz ZWZ1bCBwdXJwb3NlcyAtLS0gaXQgcHJldmVudHMgc3lzdGVtIGNhdGFsb2cgdXBkYXRlcyBpbiB3 aGF0CisgKiBtaWdodCBvdGhlcndpc2UgYmUgZXhwZWN0ZWQgdG8gYmUgcmVhZC1vbmx5IGNvbnRl eHRzIChmb3IgZXhhbXBsZSwgd2hpbGUKKyAqIG9wZW5pbmcgYSBnbG9iYWwgdGVtcG9yYXJ5IHJl bGF0aW9uIGF0IHBhcnNlIHRpbWUpOyAgaXQgYWxsb3dzIG5ldworICogcGdfdGVtcF9jbGFzcyB0 dXBsZXMgdG8gYmUgc2VlbiBpbiB0aGUgY3VycmVudCBjb21tYW5kLCB3aXRob3V0IGhhdmluZwor ICogdG8gaXNzdWUgYSBDb21tYW5kQ291bnRlckluY3JlbWVudCgpOyBhbmQgaXQgYWxsb3dzIHVz IHRvIGRlbGF5IG9wZW5pbmcKKyAqIChhbmQgaGVuY2UgY3JlYXRpbmcgc3RvcmFnZSBmb3IpIHBn X3RlbXBfY2xhc3MgaXRzZWxmLCB1bnRpbCB3ZSBoYXZlIHRvLgorICogVGhpcyBsYXN0IHBvaW50 IGlzIG1vcmUgdGhhbiBqdXN0IGFuIG9wdGltaXphdGlvbiAtLS0gaW4gYSByZWFkLW9ubHkKKyAq IGNvbnRleHQsIHdoZXJlIHdlIGtub3cgdGhhdCB3ZSBoYXZlbid0IHdyaXR0ZW4gdG8gcGdfdGVt cF9jbGFzcywgd2UgYXJlCisgKiBjYXJlZnVsIHRvIG5ldmVyIG9wZW4gaXQsIHdoaWNoIHdvdWxk IGNhdXNlIGl0IHRvIGhhdmUgbG9jYWwgc3RvcmFnZQorICogY3JlYXRlZC4gIFRodXMsIGZvciBl eGFtcGxlLCBhIHBhcmFsbGVsIHdvcmtlciBjYW4gb3BlbiBnbG9iYWwgdGVtcG9yYXJ5CisgKiBy ZWxhdGlvbnMgd2l0aG91dCByZWFkaW5nIGZyb20gdGhlbSBvciBwZ190ZW1wX2NsYXNzLgorICoK KyAqIFBlbmRpbmcgaW5zZXJ0cyB0byBwZ190ZW1wX2NsYXNzIGFyZSBmbHVzaGVkIHRvIHRoZSBk YXRhYmFzZSBhdCB0aGUgZW5kCisgKiBvZiBhbnkgbm9uLXJlYWQtb25seSBjb21tYW5kIGFuZCB3 aGVuIGNvbW1pdHRpbmcgYSB0cmFuc2FjdGlvbiBvcgorICogc3VidHJhbnNhY3Rpb24uCisgKgor ICogTkI6IEFsbCByZWFkcyBhbmQgd3JpdGVzIHRvIHBnX3RlbXBfY2xhc3MgYnkgYmFja2VuZCBj b2RlIG11c3QgZ28KKyAqIHRocm91Z2ggdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGhlcmUgKHRob3Vn aCB1c2VyIFNRTCBxdWVyaWVzIG1heSByZWFkIGl0CisgKiBub3JtYWxseSkuCisgKgorICogQ29w eXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoK KyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdGVtcF9jbGFz cy5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgor CisjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgorI2luY2x1ZGUgImFjY2Vzcy94YWN0Lmgi CisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVt cF9jbGFzcy5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2Nh Y2hlLmgiCisKKy8qCisgKiBIYXZlIHdlIG9wZW5lZCBhbmQgaW5pdGlhbGl6ZWQgcGdfdGVtcF9j bGFzcyBpbiB0aGlzIHNlc3Npb24/CisgKi8KK3N0YXRpYyBib29sIHBnX3RlbXBfY2xhc3Nfb3Bl bmVkID0gZmFsc2U7CisKKy8qCisgKiBTdWJ0cmFuc2FjdGlvbiBJRCBpbiB3aGljaCBwZ190ZW1w X2NsYXNzIHdhcyBvcGVuZWQsIGlmIGl0IHdhcyBvcGVuZWQgaW4KKyAqIHRoZSBjdXJyZW50IHRy YW5zYWN0aW9uLCBlbHNlIHplcm8uCisgKi8KK3N0YXRpYyBTdWJUcmFuc2FjdGlvbklkIHBnX3Rl bXBfY2xhc3Nfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKKworLyogQ2FjaGVkIGNv cHkgb2YgdGhlIHBnX3RlbXBfY2xhc3MgdHVwbGUgZGVzY3JpcHRvciAqLworc3RhdGljIFR1cGxl RGVzYyBwZ190ZW1wX2NsYXNzX3R1cGRlc2MgPSBOVUxMOworCisvKgorICogUGVuZGluZyBpbnNl cnRzIHRvIHBnX3RlbXBfY2xhc3MuCisgKgorICogSGVyZSwgY3JlYXRlZF9zdWJpZCBpcyB0aGUg SUQgb2YgdGhlIHN1YnRyYW5zYWN0aW9uIHRoYXQgZmlyc3QgYWRkZWQgdGhlCisgKiBwZW5kaW5n IGluc2VydCwgaW5zZXJ0ZWRfc3ViaWQgaXMgdGhlIElEIG9mIHRoZSBzdWJ0cmFuc2FjdGlvbiB0 aGF0IGZsdXNoZWQKKyAqIHRoZSBwZW5kaW5nIGluc2VydCB0byB0aGUgZGF0YWJhc2UsIGFuZCBk ZWxldGVkX3N1YmlkIGlzIHRoZSBJRCBvZiB0aGUKKyAqIHN1YnRyYW5zYWN0aW9uIHRoYXQgZGVs ZXRlZCB0aGUgdHVwbGUgKGRlbGV0aW5nIGl0IGZyb20gdGhlIGRhdGFiYXNlLCBpZiBpdAorICog d2FzIHByZXZpb3VzbHkgZmx1c2hlZCwgb3IganVzdCBtYXJraW5nIHRoZSBwZW5kaW5nIGVudHJ5 IGFzIGRlbGV0ZWQpLgorICovCit0eXBlZGVmIHN0cnVjdCBQZW5kaW5nSW5zZXJ0Cit7CisJT2lk CQkJcmVsaWQ7CQkJLyogbG9va3VwIGtleTogT0lEIHRoZSB0dXBsZSBpcyBmb3IgKi8KKwlIZWFw VHVwbGUJdHVwbGU7CQkJLyogY29weSBvZiB0dXBsZSB0byBiZSBpbnNlcnRlZCAqLworCVN1YlRy YW5zYWN0aW9uSWQgY3JlYXRlZF9zdWJpZDsgLyogZW50cnkgY3JlYXRlZCBpbiBjdXJyZW50IHhh Y3QgKi8KKwlTdWJUcmFuc2FjdGlvbklkIGluc2VydGVkX3N1YmlkOwkvKiBpbnNlcnRlZCB3aXRo IGFub3RoZXIgc3ViaWQgc2V0ICovCisJU3ViVHJhbnNhY3Rpb25JZCBkZWxldGVkX3N1YmlkOyAv KiBkZWxldGVkIHdpdGggYW5vdGhlciBzdWJpZCBzZXQgKi8KK30gUGVuZGluZ0luc2VydDsKKwor c3RhdGljIEhUQUIgKnBlbmRpbmdfaW5zZXJ0cyA9IE5VTEw7CitzdGF0aWMgYm9vbCBoYXZlX2lu c2VydHNfdG9fZmx1c2ggPSBmYWxzZTsKKworLyogTWVtb3J5IGNvbnRleHQgZm9yIGFsbCB0dXBs ZXMgcGVuZGluZyBpbnNlcnQgKi8KK3N0YXRpYyBNZW1vcnlDb250ZXh0IHBlbmRpbmdfaW5zZXJ0 c190dXBjdHggPSBOVUxMOworCisvKgorICogb3Blbl9wZ190ZW1wX2NsYXNzCisgKgorICoJT3Bl biBwZ190ZW1wX2NsYXNzIGFuZCBtYWtlIGEgbm90ZSBvZiB0aGUgc3VidHJhbnNjYXRpb24gSUQs IGlmIHRoaXMgaXMKKyAqCXRoZSBmaXJzdCB0aW1lIG9wZW5pbmcgaXQuCisgKi8KK3N0YXRpYyBS ZWxhdGlvbgorb3Blbl9wZ190ZW1wX2NsYXNzKExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVJlbGF0 aW9uCXBnX3RlbXBfY2xhc3M7CisKKwlwZ190ZW1wX2NsYXNzID0gdGFibGVfb3BlbihUZW1wUmVs YXRpb25SZWxhdGlvbklkLCBsb2NrbW9kZSk7CisJaWYgKCFwZ190ZW1wX2NsYXNzX29wZW5lZCkK Kwl7CisJCXBnX3RlbXBfY2xhc3Nfb3BlbmVkID0gdHJ1ZTsKKwkJcGdfdGVtcF9jbGFzc19zdWJp ZCA9IEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CisJfQorCXJldHVybiBwZ190ZW1wX2Ns YXNzOworfQorCisvKgorICogaW5pdF9wZW5kaW5nX2luc2VydHNfaGFzaHRhYmxlCisgKgorICoJ SW5pdGlhbGl6ZSB0aGUgcGVuZGluZyBpbnNlcnRzIGhhc2h0YWJsZSwgaWYgbm90IGFscmVhZHkg ZG9uZS4KKyAqLworc3RhdGljIHZvaWQKK2luaXRfcGVuZGluZ19pbnNlcnRzX2hhc2h0YWJsZSh2 b2lkKQoreworCWlmIChwZW5kaW5nX2luc2VydHMgPT0gTlVMTCkKKwl7CisJCUhBU0hDVEwJCWN0 bDsKKworCQkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KKwkJY3RsLmtleXNpemUgPSBzaXpl b2YoT2lkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZW5kaW5nSW5zZXJ0KTsKKworCQlw ZW5kaW5nX2luc2VydHMgPSBoYXNoX2NyZWF0ZSgiUGVuZGluZyBwZ190ZW1wX2NsYXNzIGluc2Vy dHMiLAorCQkJCQkJCQkJICAxMjgsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOworCisJ CS8qIENyZWF0ZSBhIHNlcGFyYXRlIG1lbW9yeSBjb250ZXh0IGZvciBhbGwgdHVwbGVzIGluIGl0 ICovCisJCXBlbmRpbmdfaW5zZXJ0c190dXBjdHggPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9w TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkgICAiUGVuZGluZyBwZ190ZW1wX2NsYXNzIHR1 cGxlcyIsCisJCQkJCQkJCQkJCQkJICAgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJfQorfQor CisvKgorICogZ2V0X3BnX3RlbXBfY2xhc3NfdHVwZGVzYworICoKKyAqCVJldHVybnMgdGhlIHR1 cGxlIGRlc2NyaXB0b3IgZm9yIHBnX3RlbXBfY2xhc3MuCisgKi8KK3N0YXRpYyBUdXBsZURlc2MK K2dldF9wZ190ZW1wX2NsYXNzX3R1cGRlc2Modm9pZCkKK3sKKwkvKiBCdWlsZCB0aGUgdHVwbGUg ZGVzY3JpcHRvciB0aGUgZmlyc3QgdGltZSB0aHJvdWdoICovCisJaWYgKHBnX3RlbXBfY2xhc3Nf dHVwZGVzYyA9PSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCQlUdXBs ZURlc2MJdHVwZGVzYzsKKworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRv cE1lbW9yeUNvbnRleHQpOworCisJCXR1cGRlc2MgPSBDcmVhdGVUZW1wbGF0ZVR1cGxlRGVzYyhO YXR0c19wZ190ZW1wX2NsYXNzKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsCisJCQkJ CQkgICAoQXR0ck51bWJlcikgQW51bV9wZ190ZW1wX2NsYXNzX29pZCwKKwkJCQkJCSAgICJvaWQi LCBPSURPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsCisJCQkJCQkg ICAoQXR0ck51bWJlcikgQW51bV9wZ190ZW1wX2NsYXNzX3JlbGZpbGVub2RlLAorCQkJCQkJICAg InJlbGZpbGVub2RlIiwgT0lET0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBk ZXNjLAorCQkJCQkJICAgKEF0dHJOdW1iZXIpIEFudW1fcGdfdGVtcF9jbGFzc19yZWx0YWJsZXNw YWNlLAorCQkJCQkJICAgInJlbHRhYmxlc3BhY2UiLCBPSURPSUQsIC0xLCAwKTsKKwkJVHVwbGVE ZXNjRmluYWxpemUodHVwZGVzYyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRl eHQpOworCisJCS8qIENhY2hlIGl0IGZvciBhbGwgZnV0dXJlIHVzZSAqLworCQlwZ190ZW1wX2Ns YXNzX3R1cGRlc2MgPSB0dXBkZXNjOworCX0KKwlyZXR1cm4gcGdfdGVtcF9jbGFzc190dXBkZXNj OworfQorCisvKgorICogaGVhcF9mb3JtX3BnX3RlbXBfY2xhc3NfdHVwbGUKKyAqCisgKglDcmVh dGUgYSBwZ190ZW1wX2NsYXNzIHR1cGxlIGZvciB0aGUgc3BlY2lmaWVkIHJlbGF0aW9uLiAgQWxs IHR1cGxlIGRhdGEKKyAqCWlzIHRha2VuIGZyb20gcmVsLT5yZF9yZWwuCisgKi8KK3N0YXRpYyBI ZWFwVHVwbGUKK2hlYXBfZm9ybV9wZ190ZW1wX2NsYXNzX3R1cGxlKFJlbGF0aW9uIHJlbCkKK3sK KwlGb3JtX3BnX2NsYXNzIGZvcm0gPSByZWwtPnJkX3JlbDsKKwlEYXR1bQkJdmFsdWVzW05hdHRz X3BnX3RlbXBfY2xhc3NdOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3RlbXBfY2xhc3NdID0gezB9 OworCisJdmFsdWVzW0FudW1fcGdfdGVtcF9jbGFzc19vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0 dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKwl2YWx1ZXNbQW51bV9wZ190ZW1wX2NsYXNzX3Jl bGZpbGVub2RlIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZvcm0tPnJlbGZpbGVub2RlKTsKKwl2 YWx1ZXNbQW51bV9wZ190ZW1wX2NsYXNzX3JlbHRhYmxlc3BhY2UgLSAxXSA9IE9iamVjdElkR2V0 RGF0dW0oZm9ybS0+cmVsdGFibGVzcGFjZSk7CisKKwlyZXR1cm4gaGVhcF9mb3JtX3R1cGxlKGdl dF9wZ190ZW1wX2NsYXNzX3R1cGRlc2MoKSwgdmFsdWVzLCBudWxscyk7Cit9CisKKy8qCisgKiBm bHVzaF9wZW5kaW5nX3BnX3RlbXBfY2xhc3NfaW5zZXJ0cworICoKKyAqCUZsdXNoIGFueSBwZW5k aW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcy4KKyAqLworc3RhdGljIHZvaWQKK2ZsdXNoX3Bl bmRpbmdfcGdfdGVtcF9jbGFzc19pbnNlcnRzKHZvaWQpCit7CisJU3ViVHJhbnNhY3Rpb25JZCBj dXJyZW50U3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpOworCVJlbGF0aW9uCXBn X3RlbXBfY2xhc3M7CisJQ2F0YWxvZ0luZGV4U3RhdGUgaW5kc3RhdGU7CisJSEFTSF9TRVFfU1RB VFVTIHN0YXR1czsKKwlQZW5kaW5nSW5zZXJ0ICplbnRyeTsKKworCXBnX3RlbXBfY2xhc3MgPSBv cGVuX3BnX3RlbXBfY2xhc3MoUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIEZsdXNoIGFs bCBwZW5kaW5nIGluc2VydHMgbm90IGFscmVhZHkgaW5zZXJ0ZWQsIG9yIGRlbGV0ZWQgaW4gdGhl IHNhbWUKKwkgKiBzdWJ0cmFuc2FjdGlvbi4KKwkgKi8KKwlpbmRzdGF0ZSA9IENhdGFsb2dPcGVu SW5kZXhlcyhwZ190ZW1wX2NsYXNzKTsKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHBlbmRpbmdf aW5zZXJ0cyk7CisJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0g TlVMTCkKKwl7CisJCWlmIChlbnRyeS0+aW5zZXJ0ZWRfc3ViaWQgPT0gSW52YWxpZFN1YlRyYW5z YWN0aW9uSWQgJiYKKwkJCWVudHJ5LT5kZWxldGVkX3N1YmlkID09IEludmFsaWRTdWJUcmFuc2Fj dGlvbklkKQorCQl7CisJCQlDYXRhbG9nVHVwbGVJbnNlcnRXaXRoSW5mbyhwZ190ZW1wX2NsYXNz LCBlbnRyeS0+dHVwbGUsIGluZHN0YXRlKTsKKwkJCWVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9IGN1 cnJlbnRTdWJpZDsKKwkJfQorCX0KKwlDYXRhbG9nQ2xvc2VJbmRleGVzKGluZHN0YXRlKTsKKwor CXRhYmxlX2Nsb3NlKHBnX3RlbXBfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJaGF2ZV9p bnNlcnRzX3RvX2ZsdXNoID0gZmFsc2U7Cit9CisKKy8qCisgKiBkaXNjYXJkX3BlbmRpbmdfcGdf dGVtcF9jbGFzc19pbnNlcnRzCisgKgorICoJRGlzY2FyZCBhbnkgcGVuZGluZyBpbnNlcnRzIHRv IHBnX3RlbXBfY2xhc3MuCisgKi8KK3N0YXRpYyB2b2lkCitkaXNjYXJkX3BlbmRpbmdfcGdfdGVt cF9jbGFzc19pbnNlcnRzKHZvaWQpCit7CisJLyogSnVzdCBibG93IGF3YXkgdGhlIGhhc2ggdGFi bGUgYW5kIHR1cGxlIG1lbW9yeSBjb250ZXh0ICovCisJaGFzaF9kZXN0cm95KHBlbmRpbmdfaW5z ZXJ0cyk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShwZW5kaW5nX2luc2VydHNfdHVwY3R4KTsKKwor CXBlbmRpbmdfaW5zZXJ0cyA9IE5VTEw7CisJcGVuZGluZ19pbnNlcnRzX3R1cGN0eCA9IE5VTEw7 CisJaGF2ZV9pbnNlcnRzX3RvX2ZsdXNoID0gZmFsc2U7Cit9CisKKy8qCisgKiBHZXRQZ1RlbXBD bGFzc1R1cGxlCisgKgorICoJR2V0IHRoZSBwZ190ZW1wX2NsYXNzIHR1cGxlIGZvciBhIGdsb2Jh bCB0ZW1wb3JhcnkgcmVsYXRpb24uCisgKgorICoJUmV0dXJucyBOVUxMIGlmIHRoZSB0dXBsZSBj b3VsZCBub3QgYmUgZm91bmQuICBPdGhlcndpc2UsIHRoZSB0dXBsZQorICoJcmV0dXJuZWQgc2hv dWxkIGJlIGZyZWVkIHdpdGggaGVhcF9mcmVldHVwbGUoKS4KKyAqLworSGVhcFR1cGxlCitHZXRQ Z1RlbXBDbGFzc1R1cGxlKE9pZCByZWxpZCkKK3sKKwlQZW5kaW5nSW5zZXJ0ICplbnRyeTsKKwor CS8qIElmIHRoZXJlIGlzIGEgcGVuZGluZyBpbnNlcnQgZm9yIHRoaXMgcmVsYXRpb24sIGp1c3Qg cmV0dXJuIHRoYXQgKi8KKwlpZiAocGVuZGluZ19pbnNlcnRzICE9IE5VTEwpCisJeworCQllbnRy eSA9IGhhc2hfc2VhcmNoKHBlbmRpbmdfaW5zZXJ0cywgJnJlbGlkLCBIQVNIX0ZJTkQsIE5VTEwp OworCQlpZiAoZW50cnkgIT0gTlVMTCkKKwkJeworCQkJLyogUmV0dXJuIE5VTEwgaWYgcGVuZGlu ZyBpbnNlcnQgd2FzIGRlbGV0ZWQgKi8KKwkJCWlmIChlbnRyeS0+ZGVsZXRlZF9zdWJpZCAhPSBJ bnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkKKwkJCQlyZXR1cm4gTlVMTDsKKworCQkJLyogSWYgdGhl IGluc2VydCBpcyBzdGlsbCBwZW5kaW5nLCByZXR1cm4gaXQgKi8KKwkJCWlmIChlbnRyeS0+aW5z ZXJ0ZWRfc3ViaWQgPT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJCQkJcmV0dXJuIGhlYXBf Y29weXR1cGxlKGVudHJ5LT50dXBsZSk7CisKKwkJCS8qCisJCQkgKiBPdGhlcndpc2UsIGZhbGwg dGhyb3VnaCBhbmQgcmV0dXJuIHdoYXRldmVyIGlzIGluIHRoZSBkYXRhYmFzZSwKKwkJCSAqIGlu IGNhc2UgaXQgd2FzIHN1YnNlcXVlbnRseSB1cGRhdGVkLgorCQkJICovCisJCX0KKwl9CisKKwkv KiBJZiB3ZSBoYXZlbid0IG9wZW5lZCBwZ190ZW1wX2NsYXNzIHlldCwgaXQgbXVzdCBiZSBlbXB0 eSAqLworCWlmICghcGdfdGVtcF9jbGFzc19vcGVuZWQpCisJCXJldHVybiBOVUxMOworCisJLyog T3RoZXJ3aXNlIGZldGNoIGEgY29weSBvZiB0aGUgdHVwbGUgZnJvbSB0aGUgc3lzdGVtIGNhY2hl cyAqLworCXJldHVybiBTZWFyY2hTeXNDYWNoZUNvcHkxKFRFTVBSRUxPSUQsIE9iamVjdElkR2V0 RGF0dW0ocmVsaWQpKTsKK30KKworLyoKKyAqIEluc2VydFBnVGVtcENsYXNzVHVwbGUKKyAqCisg KglJbnNlcnQgYSBuZXcgcGdfdGVtcF9jbGFzcyB0dXBsZSBmb3IgYSBnbG9iYWwgdGVtcG9yYXJ5 IHJlbGF0aW9uLgorICoKKyAqCVRoaXMgaXMgY2FsbGVkIHdoZW4gYSBnbG9iYWwgdGVtcG9yYXJ5 IHJlbGF0aW9uIGlzIGNyZWF0ZWQgb3IgYWNjZXNzZWQgZm9yCisgKgl0aGUgZmlyc3QgdGltZSBp biBhIHNlc3Npb24uICBBbGwgdHVwbGUgZGF0YSBpcyB0YWtlbiBmcm9tIHJlbC0+cmRfcmVsLgor ICoKKyAqCU5vdGU6IFRoZSBuZXcgdHVwbGUgaXMgbm90IHdyaXR0ZW4gdG8gdGhlIGRhdGFiYXNl IHVubGVzcyBhbmQgdW50aWwKKyAqCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCkgaXMgY2FsbGVk IGZvciBhIG5vbi1yZWFkLW9ubHkgY29tbWFuZCwgb3IgdGhlCisgKgkoc3ViKXRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZC4gIEhvd2V2ZXIsIHRoZSBuZXcgdHVwbGUgKmlzKiB2aXNpYmxlIHRvIGFs bAorICoJdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGhlcmUuCisgKi8KK3ZvaWQKK0luc2VydFBnVGVt cENsYXNzVHVwbGUoUmVsYXRpb24gcmVsKQoreworCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRS ZWxpZChyZWwpOworCVBlbmRpbmdJbnNlcnQgKmVudHJ5OworCWJvb2wJCWZvdW5kOworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKworCS8qCisJICogQWRkIGEgbmV3IHR1cGxlIGZvciB0aGUg cmVsYXRpb24gdG8gdGhlIHBlbmRpbmcgaW5zZXJ0cyBoYXNoIHRhYmxlLAorCSAqIHRha2luZyBj YXJlIHRvIGFsbG9jYXRlIHRoZSB0dXBsZSBpbiB0aGUgbG9uZy10ZXJtIG1lbW9yeSBjb250ZXh0 IGZvcgorCSAqIHBlbmRpbmcgaW5zZXJ0IHR1cGxlcy4KKwkgKi8KKwlpbml0X3BlbmRpbmdfaW5z ZXJ0c19oYXNodGFibGUoKTsKKworCWVudHJ5ID0gaGFzaF9zZWFyY2gocGVuZGluZ19pbnNlcnRz LCAmcmVsaWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCQkvKiBTaG91bGQg bmV2ZXIgdHJ5IHRvIHJlLWluc2VydCB0aGUgc2FtZSByZWxpZCAqLworCQllbG9nKEVSUk9SLCAi cGdfdGVtcF9jbGFzcyB0dXBsZSBmb3IgcmVsYXRpb24gJXUgYWxyZWFkeSBleGlzdHMiLCByZWxp ZCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBlbmRpbmdfaW5zZXJ0 c190dXBjdHgpOworCWVudHJ5LT50dXBsZSA9IGhlYXBfZm9ybV9wZ190ZW1wX2NsYXNzX3R1cGxl KHJlbCk7CisJZW50cnktPmNyZWF0ZWRfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25J ZCgpOworCWVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOwor CWVudHJ5LT5kZWxldGVkX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJaGF2ZV9pbnNlcnRzX3RvX2ZsdXNoID0g dHJ1ZTsKK30KKworLyoKKyAqIFVwZGF0ZVBnVGVtcENsYXNzVHVwbGUKKyAqCisgKglVcGRhdGUg dGhlIHBnX3RlbXBfY2xhc3MgdHVwbGUgZm9yIGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbi4K KyAqLwordm9pZAorVXBkYXRlUGdUZW1wQ2xhc3NUdXBsZShPaWQgcmVsaWQsIEhlYXBUdXBsZSBu ZXd0dXBsZSkKK3sKKwlSZWxhdGlvbglwZ190ZW1wX2NsYXNzOworCUhlYXBUdXBsZQlvbGR0dXBs ZTsKKworCS8qCisJICogSWYgdGhlcmUgaXMgYSBwZW5kaW5nIGluc2VydCBmb3IgdGhpcyByZWxh dGlvbiB0aGF0IGhhc24ndCBiZWVuCisJICogZmx1c2hlZCwgdGhlbiBpbnNlcnQgdGhlIG5ldyB0 dXBsZSBpbnN0ZWFkLCBhbmQgbWFyayB0aGUgcGVuZGluZyBlbnRyeQorCSAqIGFzIGluc2VydGVk LCBzbyBzdWJzZXF1ZW50IGZldGNoZXMgcmV0cmlldmUgaXQgZnJvbSB0aGUgZGF0YWJhc2UuICBP bgorCSAqIHN1YnRyYW5zYWN0aW9uIHJvbGxiYWNrLCB0aGUgcGVuZGluZyBlbnRyeSB3aWxsIGJl IHVubWFya2VkLCBhbmQgbWF5IGJlCisJICogaW5zZXJ0ZWQgaW5zdGVhZC4gIFdlIGludGVudGlv bmFsbHkgZmx1c2ggdG8gdGhlIGRhdGFiYXNlIGhlcmUgaW4gb3JkZXIKKwkgKiB0byB0cmlnZ2Vy IGNhY2hlIGludmFsaWRhdGlvbiBmb3IgdGhpcyByZWxhdGlvbi4KKwkgKi8KKwlpZiAocGVuZGlu Z19pbnNlcnRzICE9IE5VTEwpCisJeworCQlQZW5kaW5nSW5zZXJ0ICplbnRyeTsKKworCQllbnRy eSA9IGhhc2hfc2VhcmNoKHBlbmRpbmdfaW5zZXJ0cywgJnJlbGlkLCBIQVNIX0ZJTkQsIE5VTEwp OworCQlpZiAoZW50cnkgIT0gTlVMTCkKKwkJeworCQkJLyogRW50cnkgbXVzdCBub3QgaGF2ZSBi ZWVuIGRlbGV0ZWQgaW4gdGhlIHNhbWUgc3VidHJhbnNhY3Rpb24gKi8KKwkJCWlmIChlbnRyeS0+ ZGVsZXRlZF9zdWJpZCAhPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkKKwkJCQllbG9nKEVSUk9S LAorCQkJCQkgInBlbmRpbmcgaW5zZXJ0IGZvciBnbG9iYWwgdGVtcCByZWxhdGlvbiAldSB3YXMg ZGVsZXRlZCIsCisJCQkJCSByZWxpZCk7CisKKwkJCWlmIChlbnRyeS0+aW5zZXJ0ZWRfc3ViaWQg PT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJCQl7CisJCQkJLyogSW5zZXJ0IHRoZSBuZXcg dmVyc2lvbiBvZiB0aGUgdHVwbGUgKi8KKwkJCQlwZ190ZW1wX2NsYXNzID0gb3Blbl9wZ190ZW1w X2NsYXNzKFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJCUNhdGFsb2dUdXBsZUluc2VydChwZ190ZW1w X2NsYXNzLCBuZXd0dXBsZSk7CisJCQkJdGFibGVfY2xvc2UocGdfdGVtcF9jbGFzcywgUm93RXhj bHVzaXZlTG9jayk7CisJCQkJZW50cnktPmluc2VydGVkX3N1YmlkID0gR2V0Q3VycmVudFN1YlRy YW5zYWN0aW9uSWQoKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBPdGhlcndp c2UsIHVwZGF0ZSB0aGUgcGdfdGVtcF9jbGFzcyB0dXBsZSBkaXJlY3RseSAqLworCXBnX3RlbXBf Y2xhc3MgPSBvcGVuX3BnX3RlbXBfY2xhc3MoUm93RXhjbHVzaXZlTG9jayk7CisKKwlvbGR0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlMShURU1QUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKG9sZHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIGdsb2JhbCB0ZW1wIHJlbGF0aW9uICV1IiwgcmVsaWQpOworCisJ Q2F0YWxvZ1R1cGxlVXBkYXRlKHBnX3RlbXBfY2xhc3MsICZvbGR0dXBsZS0+dF9zZWxmLCBuZXd0 dXBsZSk7CisJUmVsZWFzZVN5c0NhY2hlKG9sZHR1cGxlKTsKKworCXRhYmxlX2Nsb3NlKHBnX3Rl bXBfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCisvKgorICogRGVsZXRlUGdUZW1wQ2xh c3NUdXBsZQorICoKKyAqCURlbGV0ZSB0aGUgcGdfdGVtcF9jbGFzcyB0dXBsZSBmb3IgYSBnbG9i YWwgdGVtcG9yYXJ5IHJlbGF0aW9uLgorICovCit2b2lkCitEZWxldGVQZ1RlbXBDbGFzc1R1cGxl KE9pZCByZWxpZCkKK3sKKwlSZWxhdGlvbglwZ190ZW1wX2NsYXNzOworCUhlYXBUdXBsZQlvbGR0 dXBsZTsKKworCS8qIElmIHRoZXJlIGlzIGEgcGVuZGluZyBpbnNlcnQgZm9yIHRoaXMgcmVsYXRp b24sIG1hcmsgaXQgZGVsZXRlZCAqLworCWlmIChwZW5kaW5nX2luc2VydHMgIT0gTlVMTCkKKwl7 CisJCVBlbmRpbmdJbnNlcnQgKmVudHJ5OworCisJCWVudHJ5ID0gaGFzaF9zZWFyY2gocGVuZGlu Z19pbnNlcnRzLCAmcmVsaWQsIEhBU0hfRklORCwgTlVMTCk7CisJCWlmIChlbnRyeSAhPSBOVUxM KQorCQl7CisJCQkvKiBFbnRyeSBtdXN0IG5vdCBhbHJlYWR5IGJlIG1hcmtlZCBkZWxldGVkIGlu IHRoaXMgc3VieGFjdCAqLworCQkJaWYgKGVudHJ5LT5kZWxldGVkX3N1YmlkICE9IEludmFsaWRT dWJUcmFuc2FjdGlvbklkKQorCQkJCWVsb2coRVJST1IsCisJCQkJCSAicGVuZGluZyBpbnNlcnQg Zm9yIGdsb2JhbCB0ZW1wIHJlbGF0aW9uICV1IGFscmVhZHkgZGVsZXRlZCIsCisJCQkJCSByZWxp ZCk7CisKKwkJCWVudHJ5LT5kZWxldGVkX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9u SWQoKTsKKworCQkJLyogSWYgbm90IGluc2VydGVkLCBub3RoaW5nIHRvIGRvLCBlbHNlIG5lZWQg dG8gZGVsZXRlIGl0ICovCisJCQlpZiAoZW50cnktPmluc2VydGVkX3N1YmlkID09IEludmFsaWRT dWJUcmFuc2FjdGlvbklkKQorCQkJCXJldHVybjsKKwkJfQorCX0KKworCS8qIE90aGVyd2lzZSwg ZGVsZXRlIHRoZSB0dXBsZSBmcm9tIHBnX3RlbXBfY2xhc3MgZGlyZWN0bHkgKi8KKwlwZ190ZW1w X2NsYXNzID0gb3Blbl9wZ190ZW1wX2NsYXNzKFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2xkdHVw bGUgPSBTZWFyY2hTeXNDYWNoZTEoVEVNUFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChvbGR0dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBnbG9iYWwgdGVtcCByZWxhdGlvbiAldSIsIHJlbGlkKTsKKwor CUNhdGFsb2dUdXBsZURlbGV0ZShwZ190ZW1wX2NsYXNzLCAmb2xkdHVwbGUtPnRfc2VsZik7CisJ UmVsZWFzZVN5c0NhY2hlKG9sZHR1cGxlKTsKKworCXRhYmxlX2Nsb3NlKHBnX3RlbXBfY2xhc3Ms IFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCisvKgorICogR2V0UGdDbGFzc0FuZFBnVGVtcENsYXNz VHVwbGVzCisgKgorICoJR2V0IHRoZSBwZ19jbGFzcyB0dXBsZSBmb3IgYSByZWxhdGlvbiwgYW5k IGlmIGl0J3MgYSBnbG9iYWwgdGVtcG9yYXJ5CisgKglyZWxhdGlvbiwgYWxzbyBnZXQgdGhlIGNv cnJlc3BvbmRpbmcgcGdfdGVtcF9jbGFzcyB0dXBsZS4KKyAqCisgKglJZiBsb2NrX3R1cGxlIGlz IHRydWUsIHRoZSBwZ19jbGFzcyB0dXBsZSB3aWxsIGJlIGxvY2tlZCwgYnV0IG5vdCB0aGUKKyAq CXBnX3RlbXBfY2xhc3MgdHVwbGUuCisgKgorICoJSWYgY2hlY2tfdGVtcCBpcyB0cnVlLCBhbiBl cnJvciB3aWxsIGJlIHJhaXNlZCBpZiBhIGdsb2JhbCB0ZW1wb3JhcnkKKyAqCXJlbGF0aW9uJ3Mg cGdfdGVtcF9jbGFzcyB0dXBsZSBpcyBub3QgZm91bmQuICBBZnRlciBhIGdsb2JhbCB0ZW1wb3Jh cnkKKyAqCXJlbGF0aW9uIGhhcyBiZWVuIG9wZW5lZCwgaXRzIHBnX3RlbXBfY2xhc3MgdHVwbGUg c2hvdWxkIGFsd2F5cyBleGlzdC4KKyAqCisgKglSZXR1cm5zIE5VTEwgaWYgdGhlIHBnX2NsYXNz IHR1cGxlIGNvdWxkIG5vdCBiZSBmb3VuZC4gIE90aGVyd2lzZSwgdGhlCisgKgl0dXBsZShzKSBy ZXR1cm5lZCBzaG91bGQgYmUgZnJlZWQgd2l0aCBoZWFwX2ZyZWV0dXBsZSgpLgorICovCitIZWFw VHVwbGUKK0dldFBnQ2xhc3NBbmRQZ1RlbXBDbGFzc1R1cGxlcyhPaWQgcmVsaWQsIGJvb2wgbG9j a190dXBsZSwKKwkJCQkJCQkgICBIZWFwVHVwbGUgKnRlbXBfdHVwbGUsIGJvb2wgY2hlY2tfdGVt cCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisKKwkvKiBHZXQgYSBjb3B5IG9mIHRoZSBwZ19jbGFz cyB0dXBsZSAqLworCWlmIChsb2NrX3R1cGxlKQorCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlTG9j a2VkQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7CisJZWxzZQorCQl0dXBs ZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7 CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkgJiYKKwkJKChGb3JtX3BnX2NsYXNzKSBH RVRTVFJVQ1QodHVwbGUpKS0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFM X1RFTVApCisJeworCQkvKiBHZXQgdGhlIHBnX3RlbXBfY2xhc3MgdHVwbGUsIGFuZCBjaGVjayBp dCBleGlzdHMsIGlmIHJlcXVlc3RlZCAqLworCQkqdGVtcF90dXBsZSA9IEdldFBnVGVtcENsYXNz VHVwbGUocmVsaWQpOworCQlpZiAoY2hlY2tfdGVtcCAmJiAhSGVhcFR1cGxlSXNWYWxpZCgqdGVt cF90dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZ2xvYmFs IHRlbXAgcmVsYXRpb24gJXUiLCByZWxpZCk7CisJfQorCWVsc2UKKwkJKnRlbXBfdHVwbGUgPSBO VUxMOworCisJcmV0dXJuIHR1cGxlOworfQorCisvKgorICogR2V0RWZmZWN0aXZlUGdDbGFzc1R1 cGxlCisgKgorICoJR2V0IHRoZSBlZmZlY3RpdmUgcGdfY2xhc3MgdHVwbGUgZm9yIGEgcmVsYXRp b24uCisgKgorICoJVGhpcyB3aWxsIGZldGNoIHRoZSBwZ19jbGFzcyB0dXBsZSBmb3IgdGhlIHJl bGF0aW9uIGFuZCB0aGVuLCBpZiBpdCdzIGEKKyAqCWdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24s IGZldGNoIHRoZSBjb3JyZXNwb25kaW5nIHBnX3RlbXBfY2xhc3MgdHVwbGUgYW5kCisgKgl1c2Ug dGhlIHZhbHVlcyBpbiBpdCB0byBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXMgaW4g dGhlIHBnX2NsYXNzCisgKgl0dXBsZS4gIFRodXMsIHRoZSByZXN1bHQgcmVwcmVzZW50cyB0aGUg ZWZmZWN0aXZlIHN0YXRlIG9mIHRoZSByZWxhdGlvbiBpbgorICoJdGhpcyBzZXNzaW9uLgorICoK KyAqCUZvciBhIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24gdGhhdCBoYXMgbm90IHlldCBiZWVu IG9wZW5lZCBpbiB0aGlzCisgKglzZXNzaW9uLCB0aGVyZSB3aWxsIGJlIG5vIHBnX3RlbXBfY2xh c3MgdHVwbGUsIGFuZCB0aGUgcGdfY2xhc3MgdHVwbGUgd2lsbAorICoJYmUgcmV0dXJuZWQgdW5j aGFuZ2VkLgorICoKKyAqCVJldHVybnMgTlVMTCBpZiB0aGUgcGdfY2xhc3MgdHVwbGUgY291bGQg bm90IGJlIGZvdW5kLiAgT3RoZXJ3aXNlLCB0aGUKKyAqCXR1cGxlIHJldHVybmVkIHNob3VsZCBi ZSBmcmVlZCB3aXRoIGhlYXBfZnJlZXR1cGxlKCkuCisgKi8KK0hlYXBUdXBsZQorR2V0RWZmZWN0 aXZlUGdDbGFzc1R1cGxlKE9pZCByZWxpZCkKK3sKKwlIZWFwVHVwbGUJdHVwbGU7CisJSGVhcFR1 cGxlCXRlbXBfdHVwbGU7CisJRm9ybV9wZ19jbGFzcyBjbGFzc2Zvcm07CisJRm9ybV9wZ190ZW1w X2NsYXNzIHRlbXBfY2xhc3Nmb3JtOworCisJLyoKKwkgKiBHZXQgdGhlIHBnX2NsYXNzIGFuZCBw Z190ZW1wX2NsYXNzIHR1cGxlcy4gIElmIHdlIGhhdmUgdGhlIGxhdHRlciwgdXNlCisJICogaXQg dG8gdXBkYXRlIHRoZSBmb3JtZXIuCisJICovCisJdHVwbGUgPSBHZXRQZ0NsYXNzQW5kUGdUZW1w Q2xhc3NUdXBsZXMocmVsaWQsIGZhbHNlLCAmdGVtcF90dXBsZSwgZmFsc2UpOworCisJaWYgKEhl YXBUdXBsZUlzVmFsaWQodHVwbGUpICYmIEhlYXBUdXBsZUlzVmFsaWQodGVtcF90dXBsZSkpCisJ eworCQljbGFzc2Zvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJdGVt cF9jbGFzc2Zvcm0gPSAoRm9ybV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QodGVtcF90dXBsZSk7 CisJCUNPUFlfUEdfVEVNUF9DTEFTU19BVFRSUyh0ZW1wX2NsYXNzZm9ybSwgY2xhc3Nmb3JtKTsK Kwl9CisJcmV0dXJuIHR1cGxlOworfQorCisvKgorICogUHJlQ0NJX1BnVGVtcENsYXNzCisgKgor ICoJUHJlLWVuZC1vZi1jb21tYW5kIHByb2Nlc3Npbmc7IGZsdXNoIG91dCBhbnkgcGVuZGluZyBp bnNlcnRzLgorICovCit2b2lkCitQcmVDQ0lfUGdUZW1wQ2xhc3Modm9pZCkKK3sKKwlpZiAoaGF2 ZV9pbnNlcnRzX3RvX2ZsdXNoKQorCQlmbHVzaF9wZW5kaW5nX3BnX3RlbXBfY2xhc3NfaW5zZXJ0 cygpOworfQorCisvKgorICogUHJlQ29tbWl0X1BnVGVtcENsYXNzCisgKgorICoJUHJlLWNvbW1p dCBwcm9jZXNzaW5nOyBmbHVzaCBvdXQgYW55IHBlbmRpbmcgaW5zZXJ0cy4KKyAqLwordm9pZAor UHJlQ29tbWl0X1BnVGVtcENsYXNzKHZvaWQpCit7CisJaWYgKGhhdmVfaW5zZXJ0c190b19mbHVz aCkKKwkJZmx1c2hfcGVuZGluZ19wZ190ZW1wX2NsYXNzX2luc2VydHMoKTsKK30KKworLyoKKyAq IFByZVN1YkNvbW1pdF9QZ1RlbXBDbGFzcworICoKKyAqCVByZS1zdWJjb21taXQgcHJvY2Vzc2lu ZzsgZmx1c2ggb3V0IGFueSBwZW5kaW5nIGluc2VydHMuCisgKi8KK3ZvaWQKK1ByZVN1YkNvbW1p dF9QZ1RlbXBDbGFzcyh2b2lkKQoreworCWlmIChoYXZlX2luc2VydHNfdG9fZmx1c2gpCisJCWZs dXNoX3BlbmRpbmdfcGdfdGVtcF9jbGFzc19pbnNlcnRzKCk7Cit9CisKKy8qCisgKiBBdEVPWGFj dF9QZ1RlbXBDbGFzcworICoKKyAqCU1haW4tdHJhbnNhY3Rpb24gY29tbWl0IG9yIGFib3J0IHBy b2Nlc3NpbmcuCisgKi8KK3ZvaWQKK0F0RU9YYWN0X1BnVGVtcENsYXNzKGJvb2wgaXNDb21taXQp Cit7CisJLyoKKwkgKiBJZiBwZ190ZW1wX2NsYXNzIHdhcyBmaXJzdCBvcGVuZWQgYW5kIGluaXRp YWxpemVkIGluIHRoaXMgdHJhbnNhY3Rpb24sCisJICogcm9sbGJhY2sgdW5kb2VzIHRoYXQsIGFu ZCBpdCBpcyBubyBsb25nZXIgaW5pdGlhbGl6ZWQuCisJICovCisJaWYgKCFpc0NvbW1pdCAmJiBw Z190ZW1wX2NsYXNzX3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCQlwZ190ZW1w X2NsYXNzX29wZW5lZCA9IGZhbHNlOworCXBnX3RlbXBfY2xhc3Nfc3ViaWQgPSBJbnZhbGlkU3Vi VHJhbnNhY3Rpb25JZDsKKworCS8qCisJICogQmxvdyBhd2F5IHRoZSBwZW5kaW5nIGluc2VydHMg aGFzaCB0YWJsZS4gIE9uIGNvbW1pdCwgdGhlcmUgc2hvdWxkIGJlCisJICogbm8gcmVtYWluaW5n IGluc2VydHMgdG8gZmx1c2gsIGJ1dCBvbiByb2xsYmFjaywgdGhlcmUgbWF5IGJlLgorCSAqLwor CUFzc2VydCghKGlzQ29tbWl0ICYmIGhhdmVfaW5zZXJ0c190b19mbHVzaCkpOworCWlmIChwZW5k aW5nX2luc2VydHMgIT0gTlVMTCkKKwkJZGlzY2FyZF9wZW5kaW5nX3BnX3RlbXBfY2xhc3NfaW5z ZXJ0cygpOworfQorCisvKgorICogQXRFT1N1YlhhY3RfUGdUZW1wQ2xhc3MKKyAqCisgKglTdWIt dHJhbnNhY3Rpb24gY29tbWl0IG9yIGFib3J0IHByb2Nlc3NpbmcuCisgKi8KK3ZvaWQKK0F0RU9T dWJYYWN0X1BnVGVtcENsYXNzKGJvb2wgaXNDb21taXQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJp ZCwKKwkJCQkJCVN1YlRyYW5zYWN0aW9uSWQgcGFyZW50U3ViaWQpCit7CisJLyoKKwkgKiBXYXMg cGdfdGVtcF9jbGFzcyBmaXJzdCBvcGVuZWQgYW5kIGluaXRpYWxpemVkIGluIHRoZSBjdXJyZW50 CisJICogc3VidHJhbnNhY3Rpb24/CisJICoKKwkgKiBEdXJpbmcgc3ViY29tbWl0LCBtYXJrIGl0 IGFzIGJlbG9uZ2luZyB0byB0aGUgcGFyZW50LiAgT3RoZXJ3aXNlLCBpdCBpcworCSAqIG5vIGxv bmdlciBpbml0aWFsaXplZC4KKwkgKi8KKwlpZiAocGdfdGVtcF9jbGFzc19zdWJpZCA9PSBteVN1 YmlkKQorCXsKKwkJaWYgKGlzQ29tbWl0KQorCQkJcGdfdGVtcF9jbGFzc19zdWJpZCA9IHBhcmVu dFN1YmlkOworCQllbHNlCisJCXsKKwkJCXBnX3RlbXBfY2xhc3Nfb3BlbmVkID0gZmFsc2U7CisJ CQlwZ190ZW1wX2NsYXNzX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJCX0KKwl9 CisKKwkvKgorCSAqIFRpZHkgdXAgYW55IHBlbmRpbmcgaW5zZXJ0cy4KKwkgKi8KKwlpZiAocGVu ZGluZ19pbnNlcnRzICE9IE5VTEwpCisJeworCQlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCQlQ ZW5kaW5nSW5zZXJ0ICplbnRyeTsKKworCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHBlbmRpbmdf aW5zZXJ0cyk7CisJCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2goJnN0YXR1cykpICE9 IE5VTEwpCisJCXsKKwkJCS8qCisJCQkgKiBXYXMgdGhlIHBlbmRpbmcgZW50cnkgY3JlYXRlZCBp biB0aGUgY3VycmVudCBzdWJ0cmFuc2FjdGlvbj8KKwkJCSAqCisJCQkgKiBEdXJpbmcgc3ViY29t bWl0LCBtYXJrIGlzIGFzIGNyZWF0ZWQgaW4gdGhlIHBhcmVudCwgaW5zdGVhZCwgYXMKKwkJCSAq IGxvbmcgYXMgaXQgaGFzIG5vdCBiZWVuIGRlbGV0ZWQuICBPdGhlcndpc2UsIGRpc2NhcmQgdGhl IGVudHJ5LgorCQkJICovCisJCQlpZiAoZW50cnktPmNyZWF0ZWRfc3ViaWQgPT0gbXlTdWJpZCkK KwkJCXsKKwkJCQlBc3NlcnQoZW50cnktPmRlbGV0ZWRfc3ViaWQgPT0gbXlTdWJpZCB8fAorCQkJ CQkgICBlbnRyeS0+ZGVsZXRlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCk7CisK KwkJCQlpZiAoaXNDb21taXQgJiYgZW50cnktPmRlbGV0ZWRfc3ViaWQgPT0gSW52YWxpZFN1YlRy YW5zYWN0aW9uSWQpCisJCQkJCWVudHJ5LT5jcmVhdGVkX3N1YmlkID0gcGFyZW50U3ViaWQ7CisJ CQkJZWxzZQorCQkJCQloYXNoX3NlYXJjaChwZW5kaW5nX2luc2VydHMsICZlbnRyeS0+cmVsaWQs IEhBU0hfUkVNT1ZFLCBOVUxMKTsKKwkJCX0KKworCQkJLyogVXBkYXRlIHRoZSBpbnNlcnRlZCBz dWJpZCAobWF5IHJvbGxiYWNrIGZsdXNoKSAqLworCQkJaWYgKGVudHJ5LT5pbnNlcnRlZF9zdWJp ZCA9PSBteVN1YmlkKQorCQkJeworCQkJCWlmIChpc0NvbW1pdCkKKwkJCQkJZW50cnktPmluc2Vy dGVkX3N1YmlkID0gcGFyZW50U3ViaWQ7CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJZW50cnktPmlu c2VydGVkX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7CisJCQkJCWhhdmVfaW5zZXJ0 c190b19mbHVzaCA9IHRydWU7CisJCQkJfQorCQkJfQorCisJCQkvKiBVcGRhdGUgdGhlIGRlbGV0 ZWQgc3ViaWQgKi8KKwkJCWlmIChlbnRyeS0+ZGVsZXRlZF9zdWJpZCA9PSBteVN1YmlkKQorCQkJ eworCQkJCWlmIChpc0NvbW1pdCkKKwkJCQkJZW50cnktPmRlbGV0ZWRfc3ViaWQgPSBwYXJlbnRT dWJpZDsKKwkJCQllbHNlCisJCQkJCWVudHJ5LT5kZWxldGVkX3N1YmlkID0gSW52YWxpZFN1YlRy YW5zYWN0aW9uSWQ7CisJCQl9CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9yZXBhY2suYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDdh ODVlZGI5MzE3Li44MWJjN2RjYzMxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv cmVwYWNrLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTUyLDYgKzUy LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2F0dHJkZWYuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2luaGVyaXRzLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy90b2FzdGlu Zy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3By b2dyZXNzLmgiCkBAIC0xMzM4LDExICsxMzM5LDE3IEBAIGNvcHlfdGFibGVfZGF0YShSZWxhdGlv biBOZXdIZWFwLCBSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBPbGRJbmRleCwKIAkgKiBhcmUg b25seSBSRUNFTlRMWV9ERUFELiAgVGhlbiB3ZSdkIGZhaWwgd2hpbGUgdHJ5aW5nIHRvIGNvcHkg dGhvc2UKIAkgKiB0dXBsZXMuCiAJICoKLQkgKiBXZSBkb24ndCBuZWVkIHRvIG9wZW4gdGhlIHRv YXN0IHJlbGF0aW9uIGhlcmUsIGp1c3QgbG9jayBpdC4gIFRoZSBsb2NrCi0JICogd2lsbCBiZSBo ZWxkIHRpbGwgZW5kIG9mIHRyYW5zYWN0aW9uLgorCSAqIElmIGl0J3MgYSBnbG9iYWwgdGVtcG9y YXJ5IHJlbGF0aW9uLCB3ZSBtdXN0IG9wZW4gaXQsIHRvIGVuc3VyZSB0aGF0IGl0CisJICogaXMg cHJvcGVybHkgaW5pdGlhbGl6ZWQsIHNvIHdlIG1pZ2h0IGFzIHdlbGwgZG8gdGhhdCBmb3IgYWxs IHJlbGF0aW9uCisJICogdHlwZXMuICBLZWVwIHRoZSByZWxhdGlvbiBsb2NrZWQgdGlsbCBlbmQg b2YgdHJhbnNhY3Rpb24uCiAJICovCiAJaWYgKE9sZEhlYXAtPnJkX3JlbC0+cmVsdG9hc3RyZWxp ZCkKLQkJTG9ja1JlbGF0aW9uT2lkKE9sZEhlYXAtPnJkX3JlbC0+cmVsdG9hc3RyZWxpZCwgbG1v ZGUpOworCXsKKwkJUmVsYXRpb24JdG9hc3RSZWw7CisKKwkJdG9hc3RSZWwgPSByZWxhdGlvbl9v cGVuKE9sZEhlYXAtPnJkX3JlbC0+cmVsdG9hc3RyZWxpZCwgbG1vZGUpOworCQlyZWxhdGlvbl9j bG9zZSh0b2FzdFJlbCwgTm9Mb2NrKTsKKwl9CiAKIAkvKgogCSAqIElmIGJvdGggdGFibGVzIGhh dmUgVE9BU1QgdGFibGVzLCBwZXJmb3JtIHRvYXN0IHN3YXAgYnkgY29udGVudC4gIEl0IGlzCkBA IC0xNTQ2LDkgKzE1NTMsMTMgQEAgc3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9pZCByMiwg Ym9vbCB0YXJnZXRfaXNfcGdfY2xhc3MsCiB7CiAJUmVsYXRpb24JcmVsUmVsYXRpb247CiAJSGVh cFR1cGxlCXJlbHR1cDEsCi0JCQkJcmVsdHVwMjsKKwkJCQlyZWx0dXAyLAorCQkJCXRlbXBfcmVs dHVwMSwKKwkJCQl0ZW1wX3JlbHR1cDI7CiAJRm9ybV9wZ19jbGFzcyByZWxmb3JtMSwKIAkJCQly ZWxmb3JtMjsKKwlGb3JtX3BnX3RlbXBfY2xhc3MgdGVtcF9yZWxmb3JtMSwKKwkJCQl0ZW1wX3Jl bGZvcm0yOwogCVJlbEZpbGVOdW1iZXIgcmVsZmlsZW51bWJlcjEsCiAJCQkJcmVsZmlsZW51bWJl cjI7CiAJUmVsRmlsZU51bWJlciBzd2FwdGVtcDsKQEAgLTE1NTYsMjEgKzE1NjcsMjggQEAgc3dh cF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9pZCByMiwgYm9vbCB0YXJnZXRfaXNfcGdfY2xhc3Ms CiAJT2lkCQkJcmVsYW0xLAogCQkJCXJlbGFtMjsKIAotCS8qIFdlIG5lZWQgd3JpdGFibGUgY29w aWVzIG9mIGJvdGggcGdfY2xhc3MgdHVwbGVzLiAqLworCS8qCisJICogV2UgbmVlZCB3cml0YWJs ZSBjb3BpZXMgb2YgYm90aCBwZ19jbGFzcyB0dXBsZXMsIGFuZCB0aGUgY29ycmVzcG9uZGluZwor CSAqIHBnX3RlbXBfY2xhc3MgdHVwbGVzLCBpZiB0aGV5J3JlIGdsb2JhbCB0ZW1wb3JhcnkgcmVs YXRpb25zLgorCSAqLwogCXJlbFJlbGF0aW9uID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JcmVsdHVwMSA9IFNlYXJjaFN5c0NhY2hlQ29weTEo UkVMT0lELCBPYmplY3RJZEdldERhdHVtKHIxKSk7CisJcmVsdHVwMSA9IEdldFBnQ2xhc3NBbmRQ Z1RlbXBDbGFzc1R1cGxlcyhyMSwgZmFsc2UsICZ0ZW1wX3JlbHR1cDEsIHRydWUpOwogCWlmICgh SGVhcFR1cGxlSXNWYWxpZChyZWx0dXAxKSkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcjEpOwogCXJlbGZvcm0xID0gKEZvcm1fcGdfY2xhc3Mp IEdFVFNUUlVDVChyZWx0dXAxKTsKKwl0ZW1wX3JlbGZvcm0xID0gKEZvcm1fcGdfdGVtcF9jbGFz cykgR0VUU1RSVUNUX1NBRkUodGVtcF9yZWx0dXAxKTsKIAotCXJlbHR1cDIgPSBTZWFyY2hTeXND YWNoZUNvcHkxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyMikpOworCXJlbHR1cDIgPSBHZXRQ Z0NsYXNzQW5kUGdUZW1wQ2xhc3NUdXBsZXMocjIsIGZhbHNlLCAmdGVtcF9yZWx0dXAyLCB0cnVl KTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocmVsdHVwMikpCiAJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHIyKTsKIAlyZWxmb3JtMiA9IChGb3Jt X3BnX2NsYXNzKSBHRVRTVFJVQ1QocmVsdHVwMik7CisJdGVtcF9yZWxmb3JtMiA9IChGb3JtX3Bn X3RlbXBfY2xhc3MpIEdFVFNUUlVDVF9TQUZFKHRlbXBfcmVsdHVwMik7CisKKwlBc3NlcnQoSGVh cFR1cGxlSXNWYWxpZCh0ZW1wX3JlbHR1cDEpID09IEhlYXBUdXBsZUlzVmFsaWQodGVtcF9yZWx0 dXAyKSk7CiAKLQlyZWxmaWxlbnVtYmVyMSA9IHJlbGZvcm0xLT5yZWxmaWxlbm9kZTsKLQlyZWxm aWxlbnVtYmVyMiA9IHJlbGZvcm0yLT5yZWxmaWxlbm9kZTsKKwlyZWxmaWxlbnVtYmVyMSA9IEdl dEVmZmVjdGl2ZV9yZWxmaWxlbm9kZShyZWxmb3JtMSwgdGVtcF9yZWxmb3JtMSk7CisJcmVsZmls ZW51bWJlcjIgPSBHZXRFZmZlY3RpdmVfcmVsZmlsZW5vZGUocmVsZm9ybTIsIHRlbXBfcmVsZm9y bTIpOwogCXJlbGFtMSA9IHJlbGZvcm0xLT5yZWxhbTsKIAlyZWxhbTIgPSByZWxmb3JtMi0+cmVs YW07CiAKQEAgLTE1ODMsMTMgKzE2MDEsMTQgQEAgc3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEs IE9pZCByMiwgYm9vbCB0YXJnZXRfaXNfcGdfY2xhc3MsCiAJCSAqLwogCQlBc3NlcnQoIXRhcmdl dF9pc19wZ19jbGFzcyk7CiAKLQkJc3dhcHRlbXAgPSByZWxmb3JtMS0+cmVsZmlsZW5vZGU7Ci0J CXJlbGZvcm0xLT5yZWxmaWxlbm9kZSA9IHJlbGZvcm0yLT5yZWxmaWxlbm9kZTsKLQkJcmVsZm9y bTItPnJlbGZpbGVub2RlID0gc3dhcHRlbXA7CisJCVNldEVmZmVjdGl2ZV9yZWxmaWxlbm9kZShy ZWxmb3JtMSwgdGVtcF9yZWxmb3JtMSwgcmVsZmlsZW51bWJlcjIpOworCQlTZXRFZmZlY3RpdmVf cmVsZmlsZW5vZGUocmVsZm9ybTIsIHRlbXBfcmVsZm9ybTIsIHJlbGZpbGVudW1iZXIxKTsKIAot CQlzd2FwdGVtcCA9IHJlbGZvcm0xLT5yZWx0YWJsZXNwYWNlOwotCQlyZWxmb3JtMS0+cmVsdGFi bGVzcGFjZSA9IHJlbGZvcm0yLT5yZWx0YWJsZXNwYWNlOwotCQlyZWxmb3JtMi0+cmVsdGFibGVz cGFjZSA9IHN3YXB0ZW1wOworCQlzd2FwdGVtcCA9IEdldEVmZmVjdGl2ZV9yZWx0YWJsZXNwYWNl KHJlbGZvcm0xLCB0ZW1wX3JlbGZvcm0xKTsKKwkJU2V0RWZmZWN0aXZlX3JlbHRhYmxlc3BhY2Uo cmVsZm9ybTEsIHRlbXBfcmVsZm9ybTEsCisJCQkJCQkJCSAgIEdldEVmZmVjdGl2ZV9yZWx0YWJs ZXNwYWNlKHJlbGZvcm0yLAorCQkJCQkJCQkJCQkJCQkJICB0ZW1wX3JlbGZvcm0yKSk7CisJCVNl dEVmZmVjdGl2ZV9yZWx0YWJsZXNwYWNlKHJlbGZvcm0yLCB0ZW1wX3JlbGZvcm0yLCBzd2FwdGVt cCk7CiAKIAkJc3dhcHRlbXAgPSByZWxmb3JtMS0+cmVsYW07CiAJCXJlbGZvcm0xLT5yZWxhbSA9 IHJlbGZvcm0yLT5yZWxhbTsKQEAgLTE3NTgsNiArMTc3NywxNyBAQCBzd2FwX3JlbGF0aW9uX2Zp bGVzKE9pZCByMSwgT2lkIHIyLCBib29sIHRhcmdldF9pc19wZ19jbGFzcywKIAkJQ2FjaGVJbnZh bGlkYXRlUmVsY2FjaGVCeVR1cGxlKHJlbHR1cDIpOwogCX0KIAorCS8qCisJICogRm9yIGdsb2Jh bCB0ZW1wb3JhcnkgcmVsYXRpb25zLCB1cGRhdGUgdGhlIHR1cGxlcyBpbiBwZ190ZW1wX2NsYXNz LgorCSAqLworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRlbXBfcmVsdHVwMSkgJiYgSGVhcFR1cGxl SXNWYWxpZCh0ZW1wX3JlbHR1cDIpKQorCXsKKwkJVXBkYXRlUGdUZW1wQ2xhc3NUdXBsZShyMSwg dGVtcF9yZWx0dXAxKTsKKwkJVXBkYXRlUGdUZW1wQ2xhc3NUdXBsZShyMiwgdGVtcF9yZWx0dXAy KTsKKwkJaGVhcF9mcmVldHVwbGUodGVtcF9yZWx0dXAxKTsKKwkJaGVhcF9mcmVldHVwbGUodGVt cF9yZWx0dXAyKTsKKwl9CisKIAkvKgogCSAqIE5vdyB0aGF0IHBnX2NsYXNzIGhhcyBiZWVuIHVw ZGF0ZWQgd2l0aCBpdHMgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yCiAJICogdGhlIHN3YXAsIHVw ZGF0ZSB0aGUgZGVwZW5kZW5jeSBvZiB0aGUgcmVsYXRpb25zIHRvIHBvaW50IHRvIHRoZWlyIG5l dwpAQCAtMjE3OSw2ICsyMjA5LDE2IEBAIGdldF90YWJsZXNfdG9fcmVwYWNrKFJlcGFja0NvbW1h bmQgY21kLCBib29sIHVzaW5naW5kZXgsIE1lbW9yeUNvbnRleHQgcGVybWN4dCkKIAogCQkJaW5k ZXggPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKHR1cGxlKTsKIAorCQkJLyoKKwkJCSAqIFNp bGVudGx5IHNraXAgcGdfdGVtcF9jbGFzcyAtLS0gaXQgZG9lcyBub3Qgc3VwcG9ydCByZWxmaWxl bm9kZQorCQkJICogY2hhbmdlcywgYmVjYXVzZSB0aGF0IHdvdWxkIHJlcXVpcmUgaXQgdG8gYmUg YSBtYXBwZWQgcmVsYXRpb24sCisJCQkgKiBhbmQgdGhlIHJlbG1hcHBlciBkb2VzIG5vdCBzdXBw b3J0IHRlbXBvcmFyeSB0YWJsZXMuICBJdCBtaWdodAorCQkJICogYmUgcG9zc2libGUgdG8gbWFr ZSB0aGlzIHdvcmssIGJ1dCBpdCBkb2Vzbid0IHNlZW0gd29ydGggdGhlCisJCQkgKiBlZmZvcnQu CisJCQkgKi8KKwkJCWlmIChpbmRleC0+aW5kcmVsaWQgPT0gVGVtcFJlbGF0aW9uUmVsYXRpb25J ZCkKKwkJCQljb250aW51ZTsKKwogCQkJLyoKIAkJCSAqIFRyeSB0byBvYnRhaW4gYSBsaWdodCBs b2NrIG9uIHRoZSBpbmRleCdzIHRhYmxlLCB0byBlbnN1cmUgaXQKIAkJCSAqIGRvZXNuJ3QgZ28g YXdheSB3aGlsZSB3ZSBjb2xsZWN0IHRoZSBsaXN0LiAgSWYgd2UgY2Fubm90LCBqdXN0CkBAIC0y MjM4LDYgKzIyNzgsMTYgQEAgZ2V0X3RhYmxlc190b19yZXBhY2soUmVwYWNrQ29tbWFuZCBjbWQs IGJvb2wgdXNpbmdpbmRleCwgTWVtb3J5Q29udGV4dCBwZXJtY3h0KQogCiAJCQljbGFzcyA9IChG b3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOwogCisJCQkvKgorCQkJICogU2lsZW50bHkg c2tpcCBwZ190ZW1wX2NsYXNzIC0tLSBpdCBkb2VzIG5vdCBzdXBwb3J0IHJlbGZpbGVub2RlCisJ CQkgKiBjaGFuZ2VzLCBiZWNhdXNlIHRoYXQgd291bGQgcmVxdWlyZSBpdCB0byBiZSBhIG1hcHBl ZCByZWxhdGlvbiwKKwkJCSAqIGFuZCB0aGUgcmVsbWFwcGVyIGRvZXMgbm90IHN1cHBvcnQgdGVt cG9yYXJ5IHRhYmxlcy4gIEl0IG1pZ2h0CisJCQkgKiBiZSBwb3NzaWJsZSB0byBtYWtlIHRoaXMg d29yaywgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB3b3J0aCB0aGUKKwkJCSAqIGVmZm9ydC4KKwkJCSAq LworCQkJaWYgKGNsYXNzLT5vaWQgPT0gVGVtcFJlbGF0aW9uUmVsYXRpb25JZCkKKwkJCQljb250 aW51ZTsKKwogCQkJLyoKIAkJCSAqIFRyeSB0byBvYnRhaW4gYSBsaWdodCBsb2NrIG9uIHRoZSB0 YWJsZSwgdG8gZW5zdXJlIGl0IGRvZXNuJ3QKIAkJCSAqIGdvIGF3YXkgd2hpbGUgd2UgY29sbGVj dCB0aGUgbGlzdC4gIElmIHdlIGNhbm5vdCwganVzdApAQCAtMjQzMCw2ICsyNDgwLDIwIEBAIHBy b2Nlc3Nfc2luZ2xlX3JlbGF0aW9uKFJlcGFja1N0bXQgKnN0bXQsIExPQ0tNT0RFIGxvY2ttb2Rl LCBib29sIGlzVG9wTGV2ZWwsCiAJCQkJZXJybXNnKCJjYW5ub3QgZXhlY3V0ZSAlcyBvbiB0ZW1w b3JhcnkgdGFibGVzIG9mIG90aGVyIHNlc3Npb25zIiwKIAkJCQkJICAgUmVwYWNrQ29tbWFuZEFz U3RyaW5nKHN0bXQtPmNvbW1hbmQpKSk7CiAKKwkvKgorCSAqIFJlamVjdCBjbHVzdGVyaW5nIHBn X3RlbXBfY2xhc3MgLS0tIGl0IGRvZXMgbm90IHN1cHBvcnQgcmVsZmlsZW5vZGUKKwkgKiBjaGFu Z2VzLCBiZWNhdXNlIHRoYXQgd291bGQgcmVxdWlyZSBpdCB0byBiZSBhIG1hcHBlZCByZWxhdGlv biwgYW5kIHRoZQorCSAqIHJlbG1hcHBlciBkb2VzIG5vdCBzdXBwb3J0IHRlbXBvcmFyeSB0YWJs ZXMuICBJdCBtaWdodCBiZSBwb3NzaWJsZSB0bworCSAqIG1ha2UgdGhpcyB3b3JrLCBidXQgaXQg ZG9lc24ndCBzZWVtIHdvcnRoIHRoZSBlZmZvcnQuCisJICovCisJaWYgKHRhYmxlT2lkID09IFRl bXBSZWxhdGlvblJlbGF0aW9uSWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCS8qLSB0cmFuc2xhdG9yOiBmaXJzdCAlcyBp cyBuYW1lIG9mIGEgU1FMIGNvbW1hbmQsIGVnLiBSRVBBQ0sgKi8KKwkJCQllcnJtc2coImNhbm5v dCBleGVjdXRlICVzIG9uIHRlbXBvcmFyeSBzeXN0ZW0gY2F0YWxvZyBcIiVzXCIiLAorCQkJCQkg ICBSZXBhY2tDb21tYW5kQXNTdHJpbmcoc3RtdC0+Y29tbWFuZCksCisJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKTsKKwogCS8qCiAJICogRm9yIHBhcnRpdGlvbmVkIHRhYmxl cywgbGV0IGNhbGxlciBoYW5kbGUgdGhpcy4gIE90aGVyd2lzZSwgcHJvY2VzcyBpdAogCSAqIGhl cmUgYW5kIHdlJ3JlIGRvbmUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGJhMTM5NTYw ZjkwLi5kMzM5NGZmZmQ2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTU0LDYgKzU0 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Jld3JpdGUuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3RyaWdnZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRh bG9nL3N0b3JhZ2UuaCIKQEAgLTM4MjUsNyArMzgyNiw4IEBAIENoZWNrUmVsYXRpb25UYWJsZVNw YWNlTW92ZShSZWxhdGlvbiByZWwsIE9pZCBuZXdUYWJsZVNwYWNlSWQpCiAKIC8qCiAgKiBTZXRS ZWxhdGlvblRhYmxlU3BhY2UKLSAqCQlTZXQgbmV3IHJlbHRhYmxlc3BhY2UgYW5kIHJlbGZpbGVu dW1iZXIgaW4gcGdfY2xhc3MgZW50cnkuCisgKgkJU2V0IG5ldyByZWx0YWJsZXNwYWNlIGFuZCBy ZWxmaWxlbnVtYmVyIGluIHBnX2NsYXNzIChhbmQvb3IKKyAqCQlwZ190ZW1wX2NsYXNzIGZvciBh IGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24pLgogICoKICAqIG5ld1RhYmxlU3BhY2VJZCBpcyB0 aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRoZSByZWxhdGlvbiwgYW5kCiAgKiBuZXdSZWxGaWxlbnVt YmVyIGl0cyBuZXcgZmlsZW51bWJlci4gIElmIG5ld1JlbEZpbGVudW1iZXIgaXMKQEAgLTM4NDUs MzMgKzM4NDcsNTUgQEAgU2V0UmVsYXRpb25UYWJsZVNwYWNlKFJlbGF0aW9uIHJlbCwKIHsKIAlS ZWxhdGlvbglwZ19jbGFzczsKIAlIZWFwVHVwbGUJdHVwbGU7CisJSGVhcFR1cGxlCXRlbXBfdHVw bGU7CiAJSXRlbVBvaW50ZXJEYXRhIG90aWQ7CiAJRm9ybV9wZ19jbGFzcyByZF9yZWw7CisJRm9y bV9wZ190ZW1wX2NsYXNzIHRlbXBfcmRfcmVsOwogCU9pZAkJCXJlbG9pZCA9IFJlbGF0aW9uR2V0 UmVsaWQocmVsKTsKIAogCUFzc2VydChDaGVja1JlbGF0aW9uVGFibGVTcGFjZU1vdmUocmVsLCBu ZXdUYWJsZVNwYWNlSWQpKTsKIAotCS8qIEdldCBhIG1vZGlmaWFibGUgY29weSBvZiB0aGUgcmVs YXRpb24ncyBwZ19jbGFzcyByb3cuICovCisJLyoKKwkgKiBHZXQgYSBtb2RpZmlhYmxlIGNvcHkg b2YgdGhlIHJlbGF0aW9uJ3MgcGdfY2xhc3Mgcm93IGFuZCwgZm9yIGEgZ2xvYmFsCisJICogdGVt cG9yYXJ5IHJlbGF0aW9uLCBpdHMgcGdfdGVtcF9jbGFzcyByb3cuCisJICovCiAJcGdfY2xhc3Mg PSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQl0 dXBsZSA9IFNlYXJjaFN5c0NhY2hlTG9ja2VkQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVt KHJlbG9pZCkpOworCXR1cGxlID0gR2V0UGdDbGFzc0FuZFBnVGVtcENsYXNzVHVwbGVzKHJlbG9p ZCwgdHJ1ZSwgJnRlbXBfdHVwbGUsIHRydWUpOwogCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBs ZSkpCiAJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIs IHJlbG9pZCk7CiAJb3RpZCA9IHR1cGxlLT50X3NlbGY7CiAJcmRfcmVsID0gKEZvcm1fcGdfY2xh c3MpIEdFVFNUUlVDVCh0dXBsZSk7CisJdGVtcF9yZF9yZWwgPSAoRm9ybV9wZ190ZW1wX2NsYXNz KSBHRVRTVFJVQ1RfU0FGRSh0ZW1wX3R1cGxlKTsKIAotCS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3Mg cm93LiAqLwotCXJkX3JlbC0+cmVsdGFibGVzcGFjZSA9IChuZXdUYWJsZVNwYWNlSWQgPT0gTXlE YXRhYmFzZVRhYmxlU3BhY2UpID8KLQkJSW52YWxpZE9pZCA6IG5ld1RhYmxlU3BhY2VJZDsKKwkv KgorCSAqIFVwZGF0ZSB0aGUgcGdfY2xhc3MgYW5kL29yIHBnX3RlbXBfY2xhc3Mgcm93cy4gIEZv ciBnbG9iYWwgdGVtcG9yYXJ5CisJICogcmVsYXRpb25zLCB0aGUgbmV3IHRhYmxlc3BhY2UgaXMg c2V0IGluIGJvdGggcGdfY2xhc3MgYW5kIHBnX3RlbXBfY2xhc3MKKwkgKiBzbyB0aGF0IHRoZSBj aGFuZ2UgaXMgbWFkZSBpbiB0aGUgY3VycmVudCBzZXNzaW9uIGFuZCBmb3IgYWxsIGZ1dHVyZQor CSAqIHNlc3Npb25zLiAgT3RoZXIgY3VycmVudCBzZXNzaW9ucyB1c2luZyB0aGUgcmVsYXRpb24g YXJlIG5vdCBhZmZlY3RlZC4KKwkgKi8KKwlTZXRFZmZlY3RpdmVfcmVsdGFibGVzcGFjZShyZF9y ZWwsIHRlbXBfcmRfcmVsLAorCQkJCQkJCSAgIG5ld1RhYmxlU3BhY2VJZCA9PSBNeURhdGFiYXNl VGFibGVTcGFjZSA/CisJCQkJCQkJICAgSW52YWxpZE9pZCA6IG5ld1RhYmxlU3BhY2VJZCk7CiAJ aWYgKFJlbEZpbGVOdW1iZXJJc1ZhbGlkKG5ld1JlbEZpbGVudW1iZXIpKQotCQlyZF9yZWwtPnJl bGZpbGVub2RlID0gbmV3UmVsRmlsZW51bWJlcjsKKwkJU2V0RWZmZWN0aXZlX3JlbGZpbGVub2Rl KHJkX3JlbCwgdGVtcF9yZF9yZWwsIG5ld1JlbEZpbGVudW1iZXIpOworCiAJQ2F0YWxvZ1R1cGxl VXBkYXRlKHBnX2NsYXNzLCAmb3RpZCwgdHVwbGUpOwogCVVubG9ja1R1cGxlKHBnX2NsYXNzLCAm b3RpZCwgSW5wbGFjZVVwZGF0ZVR1cGxlTG9jayk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodGVt cF90dXBsZSkpCisJeworCQlVcGRhdGVQZ1RlbXBDbGFzc1R1cGxlKHJlbG9pZCwgdGVtcF90dXBs ZSk7CisJCWhlYXBfZnJlZXR1cGxlKHRlbXBfdHVwbGUpOworCX0KIAogCS8qCiAJICogUmVjb3Jk IGRlcGVuZGVuY3kgb24gdGFibGVzcGFjZS4gIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHJlbGF0aW9u cyB0aGF0CiAJICogaGF2ZSBubyBwaHlzaWNhbCBzdG9yYWdlLCBhbmQgZm9yIGdsb2JhbCB0ZW1w b3JhcnkgcmVsYXRpb25zIHdob3NlCi0JICogcGh5c2ljYWwgc3RvcmFnZSBpcyB0ZW1wb3Jhcnku CisJICogcGh5c2ljYWwgc3RvcmFnZSBpcyB0ZW1wb3JhcnkuICBOb3RlIHRoYXQgYSBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9uCisJICogYmVpbmcgdXNlZCBpbiBhbm90aGVyIHNlc3Npb24gd2ls bCBub3Qgc2VlIHRoZSBjaGFuZ2UgaW4gdGFibGVzcGFjZSwKKwkgKiBhbmQgd2lsbCBjb250aW51 ZSB0byB1c2UgdGhlIG9yaWdpbmFsIHRhYmxlc3BhY2UgdW50aWwgdGhlIHNlc3Npb24KKwkgKiBl eGl0cywgYnV0IGl0cyBsb2NhbCB0ZW1wb3Jhcnkgc3RvcmFnZSB3aWxsIHByZXZlbnQgdGhlIG9s ZCB0YWJsZXNwYWNlCisJICogZnJvbSBiZWluZyBkcm9wcGVkIHVudGlsIHRoZW4uCiAJICovCiAJ aWYgKCFSRUxLSU5EX0hBU19TVE9SQUdFKHJlbC0+cmRfcmVsLT5yZWxraW5kKSB8fAogCQlSRUxB VElPTl9JU19HTE9CQUxfVEVNUChyZWwpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCAzODUzOWE2 ZmQzZC4uNGUxNTAyODIxN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0zNyw2ICszNyw3IEBA CiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2Rh dGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgorI2luY2x1ZGUgImNh dGFsb2cvcGdfdGVtcF9jbGFzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIK QEAgLTIxNTUsNiArMjE1NiwyMyBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJl bGF0aW9uLCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJLyoK KwkgKiBWQUNVVU0gRlVMTCBvbiBwZ190ZW1wX2NsYXNzIGlzIG5vdCBzdXBwb3J0ZWQgLS0tIGl0 IGRvZXMgbm90IHN1cHBvcnQKKwkgKiByZWxmaWxlbm9kZSBjaGFuZ2VzLCBiZWNhdXNlIHRoYXQg d291bGQgcmVxdWlyZSBpdCB0byBiZSBhIG1hcHBlZAorCSAqIHJlbGF0aW9uLCBhbmQgdGhlIHJl bG1hcHBlciBkb2VzIG5vdCBzdXBwb3J0IHRlbXBvcmFyeSB0YWJsZXMuIEl0IG1pZ2h0CisJICog YmUgcG9zc2libGUgdG8gbWFrZSB0aGlzIHdvcmssIGJ1dCBpdCBkb2Vzbid0IHNlZW0gd29ydGgg dGhlIGVmZm9ydCwgc28KKwkgKiBkbyBhbiAiYWdncmVzc2l2ZSIgVkFDVVVNIEZSRUVaRSBpbnN0 ZWFkLgorCSAqLworCWlmIChyZWxpZCA9PSBUZW1wUmVsYXRpb25SZWxhdGlvbklkICYmIChwYXJh bXMub3B0aW9ucyAmIFZBQ09QVF9GVUxMKSkKKwl7CisJCXBhcmFtcy5vcHRpb25zICY9IH5WQUNP UFRfRlVMTDsKKwkJcGFyYW1zLm9wdGlvbnMgfD0gVkFDT1BUX0ZSRUVaRTsKKwkJcGFyYW1zLmZy ZWV6ZV9taW5fYWdlID0gMDsKKwkJcGFyYW1zLmZyZWV6ZV90YWJsZV9hZ2UgPSAwOworCQlwYXJh bXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gMDsKKwkJcGFyYW1zLm11bHRpeGFjdF9mcmVl emVfdGFibGVfYWdlID0gMDsKKwl9CisKIAkvKgogCSAqIFNpbGVudGx5IGlnbm9yZSBwYXJ0aXRp b25lZCB0YWJsZXMgYXMgdGhlcmUgaXMgbm8gd29yayB0byBiZSBkb25lLiAgVGhlCiAJICogdXNl ZnVsIHdvcmsgaXMgb24gdGhlaXIgY2hpbGQgcGFydGl0aW9ucywgd2hpY2ggaGF2ZSBiZWVuIHF1 ZXVlZCB1cCBmb3IKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21k LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDJiMzZkNmM3Zjk4 Li5hNGFmYmNjYzNlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC00MCw2ICs0 MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgor I2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKICNpbmNsdWRlICJjb21tYW5k cy9kZWZyZW0uaCIKQEAgLTE3MTQsMTAgKzE3MTUsMTAgQEAgZ2VuZXJhdGVDbG9uZWRJbmRleFN0 bXQoUmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCSpjb25zdHJhaW50 T2lkID0gSW52YWxpZE9pZDsKIAogCS8qCi0JICogRmV0Y2ggcGdfY2xhc3MgdHVwbGUgb2Ygc291 cmNlIGluZGV4LiAgV2UgY2FuJ3QgdXNlIHRoZSBjb3B5IGluIHRoZQotCSAqIHJlbGNhY2hlIGVu dHJ5IGJlY2F1c2UgaXQgZG9lc24ndCBpbmNsdWRlIG9wdGlvbmFsIGZpZWxkcy4KKwkgKiBGZXRj aCBlZmZlY3RpdmUgcGdfY2xhc3MgdHVwbGUgb2Ygc291cmNlIGluZGV4LiAgV2UgY2FuJ3QgdXNl IHRoZSBjb3B5CisJICogaW4gdGhlIHJlbGNhY2hlIGVudHJ5IGJlY2F1c2UgaXQgZG9lc24ndCBp bmNsdWRlIG9wdGlvbmFsIGZpZWxkcy4KIAkgKi8KLQlodF9pZHhyZWwgPSBTZWFyY2hTeXNDYWNo ZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHNvdXJjZV9yZWxpZCkpOworCWh0X2lkeHJlbCA9 IEdldEVmZmVjdGl2ZVBnQ2xhc3NUdXBsZShzb3VyY2VfcmVsaWQpOwogCWlmICghSGVhcFR1cGxl SXNWYWxpZChodF9pZHhyZWwpKQogCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgcmVsYXRpb24gJXUiLCBzb3VyY2VfcmVsaWQpOwogCWlkeHJlbHJlYyA9IChGb3JtX3BnX2Ns YXNzKSBHRVRTVFJVQ1QoaHRfaWR4cmVsKTsKQEAgLTIwMzIsNyArMjAzMyw3IEBAIGdlbmVyYXRl Q2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAog CX0KIAogCS8qIENsZWFuIHVwICovCi0JUmVsZWFzZVN5c0NhY2hlKGh0X2lkeHJlbCk7CisJaGVh cF9mcmVldHVwbGUoaHRfaWR4cmVsKTsKIAlSZWxlYXNlU3lzQ2FjaGUoaHRfYW0pOwogCiAJcmV0 dXJuIGluZGV4OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X2lvLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfaW8uYwppbmRleCAzOGJh ZTdiMTVkMi4uMjRjNDY3MzQ0MTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9pby5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9p by5jCkBAIC00MjEsMTggKzQyMSwxNyBAQCBwZ3N0YXRfdHJhY2tzX2lvX29iamVjdChCYWNrZW5k VHlwZSBia3R5cGUsIElPT2JqZWN0IGlvX29iamVjdCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoK LQkgKiBJbiBjb3JlIFBvc3RncmVzLCBvbmx5IHJlZ3VsYXIgYmFja2VuZHMgYW5kIFdBTCBTZW5k ZXIgcHJvY2Vzc2VzCi0JICogZXhlY3V0aW5nIHF1ZXJpZXMgd2lsbCB1c2UgbG9jYWwgYnVmZmVy cyBhbmQgb3BlcmF0ZSBvbiB0ZW1wb3JhcnkKLQkgKiByZWxhdGlvbnMuIFBhcmFsbGVsIHdvcmtl cnMgd2lsbCBub3QgdXNlIGxvY2FsIGJ1ZmZlcnMgKHNlZQorCSAqIEluIGNvcmUgUG9zdGdyZXMs IG9ubHkgaW5pdGRiLCByZWd1bGFyIGJhY2tlbmRzLCBhbmQgV0FMIFNlbmRlcgorCSAqIHByb2Nl c3NlcyBleGVjdXRpbmcgcXVlcmllcyB3aWxsIHVzZSBsb2NhbCBidWZmZXJzIGFuZCBvcGVyYXRl IG9uCisJICogdGVtcG9yYXJ5IHJlbGF0aW9ucy4gUGFyYWxsZWwgd29ya2VycyB3aWxsIG5vdCB1 c2UgbG9jYWwgYnVmZmVycyAoc2VlCiAJICogSW5pdExvY2FsQnVmZmVycygpKTsgaG93ZXZlciwg ZXh0ZW5zaW9ucyBsZXZlcmFnaW5nIGJhY2tncm91bmQgd29ya2VycwogCSAqIGhhdmUgbm8gc3Vj aCBsaW1pdGF0aW9uLCBzbyB0cmFjayBJTyBvbiBJT09CSkVDVF9URU1QX1JFTEFUSU9OIGZvcgog CSAqIEJhY2tlbmRUeXBlIEJfQkdfV09SS0VSLgogCSAqLwogCW5vX3RlbXBfcmVsID0gYmt0eXBl ID09IEJfQVVUT1ZBQ19MQVVOQ0hFUiB8fCBia3R5cGUgPT0gQl9CR19XUklURVIgfHwKIAkJYmt0 eXBlID09IEJfQ0hFQ0tQT0lOVEVSIHx8IGJrdHlwZSA9PSBCX0FVVE9WQUNfV09SS0VSIHx8Ci0J CWJrdHlwZSA9PSBCX1NUQU5EQUxPTkVfQkFDS0VORCB8fCBia3R5cGUgPT0gQl9TVEFSVFVQIHx8 Ci0JCWJrdHlwZSA9PSBCX1dBTF9TVU1NQVJJWkVSIHx8IGJrdHlwZSA9PSBCX1dBTF9XUklURVIg fHwKLQkJYmt0eXBlID09IEJfV0FMX1JFQ0VJVkVSOworCQlia3R5cGUgPT0gQl9TVEFSVFVQIHx8 IGJrdHlwZSA9PSBCX1dBTF9TVU1NQVJJWkVSIHx8CisJCWJrdHlwZSA9PSBCX1dBTF9XUklURVIg fHwgYmt0eXBlID09IEJfV0FMX1JFQ0VJVkVSOwogCiAJaWYgKG5vX3RlbXBfcmVsICYmIGlvX2Nv bnRleHQgPT0gSU9DT05URVhUX05PUk1BTCAmJgogCQlpb19vYmplY3QgPT0gSU9PQkpFQ1RfVEVN UF9SRUxBVElPTikKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYwppbmRleCBlMDllYThmZTIyMC4uZGYxOTYx YWNjYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvZGJzaXplLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3RlbXBfY2xhc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgpAQCAtOTAxLDcgKzkwMiw3 IEBAIHBnX3JlbGF0aW9uX2ZpbGVub2RlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJSGVhcFR1cGxlCXR1 cGxlOwogCUZvcm1fcGdfY2xhc3MgcmVsZm9ybTsKIAotCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUx KFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCXR1cGxlID0gR2V0RWZmZWN0aXZl UGdDbGFzc1R1cGxlKHJlbGlkKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQogCQlQ R19SRVRVUk5fTlVMTCgpOwogCXJlbGZvcm0gPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1 cGxlKTsKQEAgLTkyMCw3ICs5MjEsNyBAQCBwZ19yZWxhdGlvbl9maWxlbm9kZShQR19GVU5DVElP Tl9BUkdTKQogCQlyZXN1bHQgPSBJbnZhbGlkUmVsRmlsZU51bWJlcjsKIAl9CiAKLQlSZWxlYXNl U3lzQ2FjaGUodHVwbGUpOworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKIAogCWlmICghUmVsRmls ZU51bWJlcklzVmFsaWQocmVzdWx0KSkKIAkJUEdfUkVUVVJOX05VTEwoKTsKQEAgLTk3OCw3ICs5 NzksNyBAQCBwZ19yZWxhdGlvbl9maWxlcGF0aChQR19GVU5DVElPTl9BUkdTKQogCVByb2NOdW1i ZXIJYmFja2VuZDsKIAlSZWxQYXRoU3RyCXBhdGg7CiAKLQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hl MShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKwl0dXBsZSA9IEdldEVmZmVjdGl2 ZVBnQ2xhc3NUdXBsZShyZWxpZCk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKIAkJ UEdfUkVUVVJOX05VTEwoKTsKIAlyZWxmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0 dXBsZSk7CkBAIC0xMDExLDcgKzEwMTIsNyBAQCBwZ19yZWxhdGlvbl9maWxlcGF0aChQR19GVU5D VElPTl9BUkdTKQogCiAJaWYgKCFSZWxGaWxlTnVtYmVySXNWYWxpZChybG9jYXRvci5yZWxOdW1i ZXIpKQogCXsKLQkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKKwkJaGVhcF9mcmVldHVwbGUodHVw bGUpOwogCQlQR19SRVRVUk5fTlVMTCgpOwogCX0KIApAQCAtMTA0MSw3ICsxMDQyLDcgQEAgcGdf cmVsYXRpb25fZmlsZXBhdGgoUEdfRlVOQ1RJT05fQVJHUykKIAkJCWJyZWFrOwogCX0KIAotCVJl bGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJaGVhcF9mcmVldHVwbGUodHVwbGUpOwogCiAJcGF0aCA9 IHJlbHBhdGhiYWNrZW5kKHJsb2NhdG9yLCBiYWNrZW5kLCBNQUlOX0ZPUktOVU0pOwogCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9pbnZhbC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvaW52YWwuYwppbmRleCA2M2RjMzZkNGQ5MS4uMTkwMjdlNTc0OTYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2ludmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvaW52YWwuYwpAQCAtNTEsMTAgKzUxLDExIEBACiAgKglQcmVwYXJlVG9JbnZhbGlk YXRlQ2FjaGVUdXBsZSgpIHJvdXRpbmUgcHJvdmlkZXMgdGhlIGtub3dsZWRnZSBvZiB3aGljaAog ICoJY2F0Y2FjaGVzIG1heSBuZWVkIGludmFsaWRhdGlvbiBmb3IgYSBnaXZlbiB0dXBsZS4KICAq Ci0gKglBbHNvLCB3aGVuZXZlciB3ZSBzZWUgYW4gb3BlcmF0aW9uIG9uIGEgcGdfY2xhc3MsIHBn X2F0dHJpYnV0ZSwgb3IKLSAqCXBnX2luZGV4IHR1cGxlLCB3ZSByZWdpc3RlciBhIHJlbGNhY2hl IGZsdXNoIG9wZXJhdGlvbiBmb3IgdGhlIHJlbGF0aW9uCi0gKglkZXNjcmliZWQgYnkgdGhhdCB0 dXBsZSAoYXMgc3BlY2lmaWVkIGluIENhY2hlSW52YWxpZGF0ZUhlYXBUdXBsZSgpKS4KLSAqCUxp a2V3aXNlIGZvciBwZ19jb25zdHJhaW50IHR1cGxlcyBmb3IgZm9yZWlnbiBrZXlzIG9uIHJlbGF0 aW9ucy4KKyAqCUFsc28sIHdoZW5ldmVyIHdlIHNlZSBhbiBvcGVyYXRpb24gb24gYSBwZ19jbGFz cywgcGdfdGVtcF9jbGFzcywKKyAqCXBnX2F0dHJpYnV0ZSwgb3IgcGdfaW5kZXggdHVwbGUsIHdl IHJlZ2lzdGVyIGEgcmVsY2FjaGUgZmx1c2ggb3BlcmF0aW9uCisgKglmb3IgdGhlIHJlbGF0aW9u IGRlc2NyaWJlZCBieSB0aGF0IHR1cGxlIChhcyBzcGVjaWZpZWQgaW4KKyAqCUNhY2hlSW52YWxp ZGF0ZUhlYXBUdXBsZSgpKS4gIExpa2V3aXNlIGZvciBwZ19jb25zdHJhaW50IHR1cGxlcyBmb3IK KyAqCWZvcmVpZ24ga2V5cyBvbiByZWxhdGlvbnMuCiAgKgogICoJV2Uga2VlcCB0aGUgcmVsY2Fj aGUgZmx1c2ggcmVxdWVzdHMgaW4gbGlzdHMgc2VwYXJhdGUgZnJvbSB0aGUgY2F0Y2FjaGUKICAq CXR1cGxlIGZsdXNoIHJlcXVlc3RzLiAgVGhpcyBhbGxvd3MgdXMgdG8gaXNzdWUgYWxsIHRoZSBw ZW5kaW5nIGNhdGNhY2hlCkBAIC0xMTksNiArMTIwLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxv Z2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfY29uc3RyYWludC5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY251bWJlci5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCkBAIC0xNDk2LDYgKzE0OTgsMTMgQEAgQ2FjaGVJ bnZhbGlkYXRlSGVhcFR1cGxlQ29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogCQllbHNlCiAJCQlk YXRhYmFzZUlkID0gTXlEYXRhYmFzZUlkOwogCX0KKwllbHNlIGlmICh0dXBsZVJlbElkID09IFRl bXBSZWxhdGlvblJlbGF0aW9uSWQpCisJeworCQlGb3JtX3BnX3RlbXBfY2xhc3MgdGVtcF9jbGFz c3R1cCA9IChGb3JtX3BnX3RlbXBfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJcmVsYXRp b25JZCA9IHRlbXBfY2xhc3N0dXAtPm9pZDsKKwkJZGF0YWJhc2VJZCA9IE15RGF0YWJhc2VJZDsK Kwl9CiAJZWxzZSBpZiAodHVwbGVSZWxJZCA9PSBBdHRyaWJ1dGVSZWxhdGlvbklkKQogCXsKIAkJ Rm9ybV9wZ19hdHRyaWJ1dGUgYXR0dHVwID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1Qo dHVwbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCAwMzZkZTVmNzllZi4u Y2JkMjVmYTYxNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC00MCw2ICs0 MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfc3RhdGlzdGljLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Ry YW5zZm9ybS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgIm1pc2Nh ZG1pbi5oIgpAQCAtMjM2OCw2ICsyMzY5LDE5IEBAIGdldF9yZWxfdGFibGVzcGFjZShPaWQgcmVs aWQpCiAJCU9pZAkJCXJlc3VsdDsKIAogCQlyZXN1bHQgPSByZWx0dXAtPnJlbHRhYmxlc3BhY2U7 CisKKwkJLyogR2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMgbWF5IG92ZXJyaWRlIHJlbHRhYmxl c3BhY2UgbG9jYWxseSAqLworCQlpZiAocmVsdHVwLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJT SVNURU5DRV9HTE9CQUxfVEVNUCkKKwkJeworCQkJSGVhcFR1cGxlCXRlbXBfdHA7CisKKwkJCXRl bXBfdHAgPSBHZXRQZ1RlbXBDbGFzc1R1cGxlKHJlbGlkKTsKKwkJCWlmIChIZWFwVHVwbGVJc1Zh bGlkKHRlbXBfdHApKQorCQkJeworCQkJCXJlc3VsdCA9ICgoRm9ybV9wZ190ZW1wX2NsYXNzKSBH RVRTVFJVQ1QodGVtcF90cCkpLT5yZWx0YWJsZXNwYWNlOworCQkJCWhlYXBfZnJlZXR1cGxlKHRl bXBfdHApOworCQkJfQorCQl9CiAJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CiAJCXJldHVybiByZXN1 bHQ7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggZDlhOTZkZDJlNzUuLmFm OGI1MjM3ZTQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTYyLDYgKzYyLDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdHJpZ2dlci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvc2NoZW1hcGcuaCIKQEAgLTMzOCw2ICszMzksMTAgQEAgc3RhdGljIHZvaWQgdW5saW5r X2luaXRmaWxlKGNvbnN0IGNoYXIgKmluaXRmaWxlbmFtZSwgaW50IGVsZXZlbCk7CiAgKgkJYW4g YXR0cmlidXRlIHdlcmUgdG8gYmUgYWRkZWQgYWZ0ZXIgc2Nhbm5pbmcgcGdfY2xhc3MgYW5kIGJl Zm9yZQogICoJCXNjYW5uaW5nIHBnX2F0dHJpYnV0ZSwgcmVsbmF0dHMgd291bGRuJ3QgbWF0Y2gu CiAgKgorICoJCUlmIHRhcmdldFJlbElkIGlzIGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiwg cGdfdGVtcF9jbGFzcyBpcworICoJCWFsc28gc2Nhbm5lZCwgYW5kIGlmIGEgbWF0Y2hpbmcgdHVw bGUgaXMgZm91bmQsIGl0cyBhdHRyaWJ1dGVzIGFyZQorICoJCXVzZWQgdG8gb3ZlcnJpZGUgdGhl IGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBmcm9tIHBnX2NsYXNzLgorICoKICAqCQlOQjogdGhl IHJldHVybmVkIHR1cGxlIGhhcyBiZWVuIGNvcGllZCBpbnRvIHBhbGxvYydkIHN0b3JhZ2UKICAq CQlhbmQgbXVzdCBldmVudHVhbGx5IGJlIGZyZWVkIHdpdGggaGVhcF9mcmVldHVwbGUuCiAgKi8K QEAgLTQwNSw2ICs0MTAsMzYgQEAgU2NhblBnUmVsYXRpb24oT2lkIHRhcmdldFJlbElkLCBib29s IGluZGV4T0ssIGJvb2wgZm9yY2Vfbm9uX2hpc3RvcmljKQogCiAJdGFibGVfY2xvc2UocGdfY2xh c3NfZGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAorCS8qCisJICogRm9yIGdsb2JhbCB0ZW1wb3Jh cnkgcmVsYXRpb25zLCBhbHNvIHNjYW4gcGdfdGVtcF9jbGFzcy4gIFdlIGNhbm5vdCBkbworCSAq IHRoaXMgZm9yIHBnX3RlbXBfY2xhc3MgaXRzZWxmLCBvciBpdHMgaW5kZXgsIGJlY2F1c2UgdGhl eSBtYXkgbm90IGhhdmUKKwkgKiBiZWVuIGxvYWRlZCB5ZXQuICBUaGF0J3MgT0sgYmVjYXVzZSB3 ZSBvbmx5IHJlYWxseSBuZWVkIHJlbGZpbGVudW1iZXIKKwkgKiBhbmQgcmVsdGFibGVzcGFjZSB0 byBiZSBjb3JyZWN0IGF0IHRoaXMgc3RhZ2UsIGFuZCB3ZSBkaXNhbGxvdyBjaGFuZ2VzCisJICog dG8gdGhvc2UgYXR0cmlidXRlcyBmb3IgdGhlc2UgcmVsYXRpb25zLgorCSAqLworCWlmIChIZWFw VHVwbGVJc1ZhbGlkKHBnX2NsYXNzX3R1cGxlKSAmJgorCQl0YXJnZXRSZWxJZCAhPSBUZW1wUmVs YXRpb25SZWxhdGlvbklkICYmCisJCXRhcmdldFJlbElkICE9IFRlbXBDbGFzc09pZEluZGV4SWQp CisJeworCQlGb3JtX3BnX2NsYXNzIHBnX2NsYXNzX2Zvcm07CisKKwkJcGdfY2xhc3NfZm9ybSA9 IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QocGdfY2xhc3NfdHVwbGUpOworCisJCWlmIChwZ19j bGFzc19mb3JtLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkK KwkJeworCQkJSGVhcFR1cGxlCXBnX3RlbXBfY2xhc3NfdHVwbGU7CisJCQlGb3JtX3BnX3RlbXBf Y2xhc3MgcGdfdGVtcF9jbGFzc19mb3JtOworCisJCQlwZ190ZW1wX2NsYXNzX3R1cGxlID0gR2V0 UGdUZW1wQ2xhc3NUdXBsZSh0YXJnZXRSZWxJZCk7CisJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChw Z190ZW1wX2NsYXNzX3R1cGxlKSkKKwkJCXsKKwkJCQlwZ190ZW1wX2NsYXNzX2Zvcm0gPSAoRm9y bV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QocGdfdGVtcF9jbGFzc190dXBsZSk7CisJCQkJQ09Q WV9QR19URU1QX0NMQVNTX0FUVFJTKHBnX3RlbXBfY2xhc3NfZm9ybSwgcGdfY2xhc3NfZm9ybSk7 CisJCQkJaGVhcF9mcmVldHVwbGUocGdfdGVtcF9jbGFzc190dXBsZSk7CisJCQl9CisJCX0KKwl9 CisKIAlyZXR1cm4gcGdfY2xhc3NfdHVwbGU7CiB9CiAKQEAgLTM4NDIsNyArMzg3Nyw5IEBAIFJl bGF0aW9uU2V0TmV3UmVsZmlsZW51bWJlcihSZWxhdGlvbiByZWxhdGlvbiwgY2hhciBwZXJzaXN0 ZW5jZSkKIAlSZWxhdGlvbglwZ19jbGFzczsKIAlJdGVtUG9pbnRlckRhdGEgb3RpZDsKIAlIZWFw VHVwbGUJdHVwbGU7CisJSGVhcFR1cGxlCXRlbXBfdHVwbGU7CiAJRm9ybV9wZ19jbGFzcyBjbGFz c2Zvcm07CisJRm9ybV9wZ190ZW1wX2NsYXNzIHRlbXBfY2xhc3Nmb3JtOwogCU11bHRpWGFjdElk IG1pbm11bHRpID0gSW52YWxpZE11bHRpWGFjdElkOwogCVRyYW5zYWN0aW9uSWQgZnJlZXplWGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJUmVsRmlsZUxvY2F0b3IgbmV3cmxvY2F0b3I7CkBA IC0zODc5LDE3ICszOTE2LDE5IEBAIFJlbGF0aW9uU2V0TmV3UmVsZmlsZW51bWJlcihSZWxhdGlv biByZWxhdGlvbiwgY2hhciBwZXJzaXN0ZW5jZSkKIAkJCQkgZXJybXNnKCJ1bmV4cGVjdGVkIHJl cXVlc3QgZm9yIG5ldyByZWxmaWxlbnVtYmVyIGluIGJpbmFyeSB1cGdyYWRlIG1vZGUiKSkpOwog CiAJLyoKLQkgKiBHZXQgYSB3cml0YWJsZSBjb3B5IG9mIHRoZSBwZ19jbGFzcyB0dXBsZSBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgorCSAqIEdldCBhIHdyaXRhYmxlIGNvcHkgb2YgdGhlIHJlbGF0 aW9uJ3MgcGdfY2xhc3MgdHVwbGUgYW5kLCBmb3IgYSBnbG9iYWwKKwkgKiB0ZW1wb3JhcnkgcmVs YXRpb24sIGl0cyBwZ190ZW1wX2NsYXNzIHR1cGxlLgogCSAqLwogCXBnX2NsYXNzID0gdGFibGVf b3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZUxvY2tlZENvcHkxKFJFTE9JRCwKLQkJCQkJCQkJCSAgT2JqZWN0SWRHZXRE YXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSkpOworCXR1cGxlID0gR2V0UGdDbGFzc0Fu ZFBnVGVtcENsYXNzVHVwbGVzKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCB0cnVlLAorCQkJ CQkJCQkJCSAgICZ0ZW1wX3R1cGxlLCB0cnVlKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw bGUpKQogCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgdHVwbGUgZm9yIHJlbGF0aW9uICV1 IiwKIAkJCSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7CiAJb3RpZCA9IHR1cGxlLT50X3Nl bGY7CiAJY2xhc3Nmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisJdGVt cF9jbGFzc2Zvcm0gPSAoRm9ybV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1RfU0FGRSh0ZW1wX3R1 cGxlKTsKIAogCS8qCiAJICogU2NoZWR1bGUgdW5saW5raW5nIG9mIHRoZSBvbGQgc3RvcmFnZSBh dCB0cmFuc2FjdGlvbiBjb21taXQsIGV4Y2VwdApAQCAtMzk5NSw4ICs0MDM0LDggQEAgUmVsYXRp b25TZXROZXdSZWxmaWxlbnVtYmVyKFJlbGF0aW9uIHJlbGF0aW9uLCBjaGFyIHBlcnNpc3RlbmNl KQogCX0KIAllbHNlCiAJewotCQkvKiBOb3JtYWwgY2FzZSwgdXBkYXRlIHRoZSBwZ19jbGFzcyBl bnRyeSAqLwotCQljbGFzc2Zvcm0tPnJlbGZpbGVub2RlID0gbmV3cmVsZmlsZW51bWJlcjsKKwkJ LyogTm9ybWFsIGNhc2UsIHVwZGF0ZSB0aGUgcGdfY2xhc3MgYW5kIHBnX3RlbXBfY2xhc3MgZW50 cmllcyAqLworCQlTZXRFZmZlY3RpdmVfcmVsZmlsZW5vZGUoY2xhc3Nmb3JtLCB0ZW1wX2NsYXNz Zm9ybSwgbmV3cmVsZmlsZW51bWJlcik7CiAKIAkJLyogcmVscGFnZXMgZXRjLiBuZXZlciBjaGFu Z2UgZm9yIHNlcXVlbmNlcyAqLwogCQlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBS RUxLSU5EX1NFUVVFTkNFKQpAQCAtNDAxMSw2ICs0MDUwLDExIEBAIFJlbGF0aW9uU2V0TmV3UmVs ZmlsZW51bWJlcihSZWxhdGlvbiByZWxhdGlvbiwgY2hhciBwZXJzaXN0ZW5jZSkKIAkJY2xhc3Nm b3JtLT5yZWxwZXJzaXN0ZW5jZSA9IHBlcnNpc3RlbmNlOwogCiAJCUNhdGFsb2dUdXBsZVVwZGF0 ZShwZ19jbGFzcywgJm90aWQsIHR1cGxlKTsKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodGVtcF90 dXBsZSkpCisJCXsKKwkJCVVwZGF0ZVBnVGVtcENsYXNzVHVwbGUoUmVsYXRpb25HZXRSZWxpZChy ZWxhdGlvbiksIHRlbXBfdHVwbGUpOworCQkJaGVhcF9mcmVldHVwbGUodGVtcF90dXBsZSk7CisJ CX0KIAl9CiAKIAlVbmxvY2tUdXBsZShwZ19jbGFzcywgJm90aWQsIElucGxhY2VVcGRhdGVUdXBs ZUxvY2spOwpAQCAtNDAxOSw4ICs0MDYzLDggQEAgUmVsYXRpb25TZXROZXdSZWxmaWxlbnVtYmVy KFJlbGF0aW9uIHJlbGF0aW9uLCBjaGFyIHBlcnNpc3RlbmNlKQogCXRhYmxlX2Nsb3NlKHBnX2Ns YXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAogCS8qCi0JICogTWFrZSB0aGUgcGdfY2xhc3Mgcm93 IGNoYW5nZSBvciByZWxhdGlvbiBtYXAgY2hhbmdlIHZpc2libGUuICBUaGlzIHdpbGwKLQkgKiBj YXVzZSB0aGUgcmVsY2FjaGUgZW50cnkgdG8gZ2V0IHVwZGF0ZWQsIHRvby4KKwkgKiBNYWtlIHRo ZSBwZ19jbGFzcyBhbmQgcGdfdGVtcF9jbGFzcyByb3cgY2hhbmdlcyBvciByZWxhdGlvbiBtYXAg Y2hhbmdlCisJICogdmlzaWJsZS4gIFRoaXMgd2lsbCBjYXVzZSB0aGUgcmVsY2FjaGUgZW50cnkg dG8gZ2V0IHVwZGF0ZWQsIHRvby4KIAkgKi8KIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwog CkBAIC02OTEzLDYgKzY5NTcsMTUgQEAgd3JpdGVfaXRlbShjb25zdCB2b2lkICpkYXRhLCBTaXpl IGxlbiwgRklMRSAqZnApCiAgKiBvZiB0aGUgbGF0dGVyLiBUaGUgc3BlY2lhbCBjYXNlcyBhcmUg cmVsYXRpb25zIHdoZXJlCiAgKiBSZWxhdGlvbkNhY2hlSW5pdGlhbGl6ZVBoYXNlMi8zIGNob29z ZXMgdG8gbmFpbCBmb3IgZWZmaWNpZW5jeSByZWFzb25zLCBidXQKICAqIHdoaWNoIGRvIG5vdCBz dXBwb3J0IGFueSBzeXNjYWNoZS4KKyAqCisgKiBHbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBh cmUgbmV2ZXIgbmFpbGVkIChiZWNhdXNlIHRoYXQgd291bGQgcmVxdWlyZWQKKyAqIHRoZW0gdG8g YmUgbWFwcGVkLCBhbmQgdGhlIHJlbG1hcHBlciBkb2VzIG5vdCBzdXBwb3J0IHRlbXBvcmFyeSBy ZWxhdGlvbnMpLAorICogYnV0IHRoZXkgZG8gYWxsIHN1cHBvcnQgc3lzY2FjaGVzLiAgRGVzcGl0 ZSB0aGlzLCB3ZSBpbnRlbnRpb25hbGx5IGRvIG5vdAorICogY2FjaGUgZ2xvYmFsIHRlbXBvcmFy eSByZWxhdGlvbnMsIHNpbmNlIHdlIGRvbid0IHdhbnQgdG8gbG9hZCB0aGVtIG9uCisgKiBzdGFy dHVwLCBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIHJlc3VsdCBpbiB0ZW1wb3JhcnkgcmVsYXRpb24g c3RvcmFnZSBiZWluZworICogY3JlYXRlZCB3aGVuIGl0IG1pZ2h0IG5vdCBiZSBuZWVkZWQuICBJ bnN0ZWFkLCBhbGwgZ2xvYmFsIHRlbXBvcmFyeQorICogcmVsYXRpb25zIGFyZSBsYXppbHkgaW5p dGlhbGl6ZWQsIGlmIGFuZCB3aGVuIHRoZXkgYXJlIG5lZWRlZC4gIFNlZSBhbHNvCisgKiBJbml0 Q2F0YWxvZ0NhY2hlUGhhc2UyKCkuCiAgKi8KIGJvb2wKIFJlbGF0aW9uSWRJc0luSW5pdEZpbGUo T2lkIHJlbGF0aW9uSWQpCkBAIC02OTI5LDYgKzY5ODIsOCBAQCBSZWxhdGlvbklkSXNJbkluaXRG aWxlKE9pZCByZWxhdGlvbklkKQogCQlBc3NlcnQoIVJlbGF0aW9uU3VwcG9ydHNTeXNDYWNoZShy ZWxhdGlvbklkKSk7CiAJCXJldHVybiB0cnVlOwogCX0KKwlpZiAoSXNHbG9iYWxUZW1wQ2F0YWxv Z1JlbGF0aW9uKHJlbGF0aW9uSWQpKQorCQlyZXR1cm4gZmFsc2U7CiAJcmV0dXJuIFJlbGF0aW9u U3VwcG9ydHNTeXNDYWNoZShyZWxhdGlvbklkKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2Nh Y2hlLmMKaW5kZXggZjQyMzNmOWUzMWEuLjdmZTM4MGMyYzA2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3N5c2NhY2hlLmMKQEAgLTE3Niw2ICsxNzYsMTAgQEAgSW5pdENhdGFsb2dDYWNoZSh2b2lkKQog ICogcmVsY2FjaGUgd2l0aCBlbnRyaWVzIGZvciB0aGUgbW9zdC1jb21tb25seS11c2VkIHN5c3Rl bSBjYXRhbG9ncy4KICAqIFRoZXJlZm9yZSwgd2UgaW52b2tlIHRoaXMgcm91dGluZSB3aGVuIHdl IG5lZWQgdG8gd3JpdGUgYSBuZXcgcmVsY2FjaGUKICAqIGluaXQgZmlsZS4KKyAqCisgKiBXZSBz a2lwIGNhY2hlcyBiYXNlZCBvbiBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBiZWNhdXNlIHdl IGRvbid0IHdhbnQKKyAqIHRlbXBvcmFyeSByZWxhdGlvbiBzdG9yYWdlIHRvIGJlIG5lZWRsZXNz bHkgY3JlYXRlZCBvbiBzdGFydHVwLiAgSW5zdGVhZCwKKyAqIGFsd2F5cyBpbml0aWFsaXplIHRo ZXNlIGNhY2hlcyBvbiBmaXJzdCB1c2UuCiAgKi8KIHZvaWQKIEluaXRDYXRhbG9nQ2FjaGVQaGFz ZTIodm9pZCkKQEAgLTE4NSw3ICsxODksOCBAQCBJbml0Q2F0YWxvZ0NhY2hlUGhhc2UyKHZvaWQp CiAJQXNzZXJ0KENhY2hlSW5pdGlhbGl6ZWQpOwogCiAJZm9yIChjYWNoZUlkID0gMDsgY2FjaGVJ ZCA8IFN5c0NhY2hlU2l6ZTsgY2FjaGVJZCsrKQotCQlJbml0Q2F0Q2FjaGVQaGFzZTIoU3lzQ2Fj aGVbY2FjaGVJZF0sIHRydWUpOworCQlpZiAoIVN5c0NhY2hlUmVsYXRpb25Jc0dsb2JhbFRlbXAo Y2FjaGVJZCkpCisJCQlJbml0Q2F0Q2FjaGVQaGFzZTIoU3lzQ2FjaGVbY2FjaGVJZF0sIHRydWUp OwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaAppbmRleCA3N2E2YzQ4ZmQ3MS4uNDA4 NGZhZDZjNmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9odHVwX2RldGFpbHMuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaHR1cF9kZXRhaWxzLmgKQEAgLTcyMSw2ICs3MjEsMTcg QEAgR0VUU1RSVUNUKGNvbnN0IEhlYXBUdXBsZURhdGEgKnR1cGxlKQogCXJldHVybiAoKGNoYXIg KikgKHR1cGxlLT50X2RhdGEpICsgdHVwbGUtPnRfZGF0YS0+dF9ob2ZmKTsKIH0KIAorLyoKKyAq IEdFVFNUUlVDVF9TQUZFIC0gZ2l2ZW4gYSBwb3NzaWJseSBOVUxMIEhlYXBUdXBsZSBwb2ludGVy LCByZXR1cm4gdGhlCisgKiBhZGRyZXNzIG9mIHRoZSB1c2VyIGRhdGEgb3IgTlVMTAorICovCitz dGF0aWMgaW5saW5lIHZvaWQgKgorR0VUU1RSVUNUX1NBRkUoY29uc3QgSGVhcFR1cGxlRGF0YSAq dHVwbGUpCit7CisJcmV0dXJuIEhlYXBUdXBsZUlzVmFsaWQodHVwbGUpID8KKwkJKChjaGFyICop ICh0dXBsZS0+dF9kYXRhKSArIHR1cGxlLT50X2RhdGEtPnRfaG9mZikgOiBOVUxMOworfQorCiAv KgogICogQWNjZXNzb3IgZnVuY3Rpb25zIHRvIGJlIHVzZWQgd2l0aCBIZWFwVHVwbGUgcG9pbnRl cnMuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlCmluZGV4IGJhYjU3MzcyYjg4Li42MjlhMTNlZGMyNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZQorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL01ha2VmaWxlCkBAIC04Niw3ICs4Niw4IEBAIENBVEFMT0dfSEVBREVSUyA6PSBc CiAJcGdfcHJvcGdyYXBoX2VsZW1lbnRfbGFiZWwuaCBcCiAJcGdfcHJvcGdyYXBoX2xhYmVsLmgg XAogCXBnX3Byb3BncmFwaF9sYWJlbF9wcm9wZXJ0eS5oIFwKLQlwZ19wcm9wZ3JhcGhfcHJvcGVy dHkuaAorCXBnX3Byb3BncmFwaF9wcm9wZXJ0eS5oIFwKKwlwZ190ZW1wX2NsYXNzLmgKIAogR0VO RVJBVEVEX0hFQURFUlMgOj0gJChDQVRBTE9HX0hFQURFUlM6JS5oPSVfZC5oKQogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2dlbmJraS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9n ZW5ia2kuaAppbmRleCAxMmQyYTNlMjk1Yi4uMmYxMjUzMjgxYzUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvZ2VuYmtpLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9nZW5ia2ku aApAQCAtNDQsNiArNDQsNyBAQAogLyogT3B0aW9ucyB0aGF0IG1heSBhcHBlYXIgYWZ0ZXIgQ0FU QUxPRyAob24gdGhlIHNhbWUgbGluZSkgKi8KICNkZWZpbmUgQktJX0JPT1RTVFJBUAogI2RlZmlu ZSBCS0lfU0hBUkVEX1JFTEFUSU9OCisjZGVmaW5lIEJLSV9URU1QX1JFTEFUSU9OCiAjZGVmaW5l IEJLSV9ST1dUWVBFX09JRChvaWQsb2lkbWFjcm8pCiAjZGVmaW5lIEJLSV9TQ0hFTUFfTUFDUk8K IApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKaW5kZXggZmE4MzZlNGVlMjUuLjQwNGY4NTAzMjc2IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTc0LDYgKzc0LDcgQEAgY2F0YWxvZ19oZWFkZXJz ID0gWwogICAncGdfcHJvcGdyYXBoX2xhYmVsLmgnLAogICAncGdfcHJvcGdyYXBoX2xhYmVsX3By b3BlcnR5LmgnLAogICAncGdfcHJvcGdyYXBoX3Byb3BlcnR5LmgnLAorICAncGdfdGVtcF9jbGFz cy5oJywKIF0KIAogIyBUaGUgLmRhdCBmaWxlcyB3ZSBuZWVkIGNhbiBqdXN0IGJlIGxpc3RlZCBh bHBoYWJldGljYWxseS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdGVtcF9j bGFzcy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgwMDExZWEwOTU0Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgKQEAgLTAsMCArMSwxNTAgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3RlbXBfY2xhc3MuaAorICoJICBkZWZpbml0 aW9uIG9mIHRoZSAidGVtcG9yYXJ5IHJlbGF0aW9uIiBzeXN0ZW0gY2F0YWxvZyAocGdfdGVtcF9j bGFzcykKKyAqCisgKiBUaGlzIGlzIGEgZ2xvYmFsIHRlbXBvcmFyeSBzeXN0ZW0gY2F0YWxvZyB0 YWJsZSBzdG9yaW5nIHNlc3Npb24tc3BlY2lmaWMKKyAqIGluZm9ybWF0aW9uIGFib3V0IHRlbXBv cmFyeSByZWxhdGlvbnMuICBDdXJyZW50bHksIGl0IGlzIG9ubHkgdXNlZCBmb3IKKyAqIGdsb2Jh bCB0ZW1wb3JhcnkgcmVsYXRpb25zLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIGEgc3Vic2V0IG9mIHRo b3NlIGZyb20KKyAqIHBnX2NsYXNzLCBhbmQgdGhlaXIgdmFsdWVzIHRha2UgcHJlY2VkZW5jZSBv dmVyIHRoZSB2YWx1ZXMgZnJvbSBwZ19jbGFzcy4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQg KGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgKKyAqCisgKiBOT1RFUworICoJICBUaGUg Q2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVtYQorICoJ ICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQR19U RU1QX0NMQVNTX0gKKyNkZWZpbmUgUEdfVEVNUF9DTEFTU19ICisKKyNpbmNsdWRlICJhY2Nlc3Mv aHR1cC5oIgorI2luY2x1ZGUgImNhdGFsb2cvZ2VuYmtpLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19jbGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzc19kLmgiCS8qIElXWVUg cHJhZ21hOiBleHBvcnQgKi8KKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKKworLyogLS0tLS0tLS0t LS0tLS0tLQorICoJCXBnX3RlbXBfY2xhc3MgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGlu dG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ190ZW1wX2NsYXNzCisgKiAtLS0tLS0t LS0tLS0tLS0tCisgKi8KK0JFR0lOX0NBVEFMT0dfU1RSVUNUCisKK0NBVEFMT0cocGdfdGVtcF9j bGFzcyw4MDgyLFRlbXBSZWxhdGlvblJlbGF0aW9uSWQpIEJLSV9URU1QX1JFTEFUSU9OCit7CisJ Lyogb2lkICovCisJT2lkCQkJb2lkIEJLSV9MT09LVVAocGdfY2xhc3MpOworCisJLyogaWRlbnRp ZmllciBvZiBwaHlzaWNhbCBzdG9yYWdlIGZpbGUgKi8KKwkvKiByZWxmaWxlbm9kZSA9PSAwIG1l YW5zIGl0IGlzIGEgIm1hcHBlZCIgcmVsYXRpb24sIHNlZSByZWxtYXBwZXIuYyAqLworCU9pZAkJ CXJlbGZpbGVub2RlIEJLSV9ERUZBVUxUKDApOworCisJLyogaWRlbnRpZmllciBvZiB0YWJsZSBz cGFjZSBmb3IgcmVsYXRpb24gKDAgbWVhbnMgZGVmYXVsdCBmb3IgZGF0YWJhc2UpICovCisJT2lk CQkJcmVsdGFibGVzcGFjZSBCS0lfREVGQVVMVCgwKSBCS0lfTE9PS1VQX09QVChwZ190YWJsZXNw YWNlKTsKK30gRm9ybURhdGFfcGdfdGVtcF9jbGFzczsKKworRU5EX0NBVEFMT0dfU1RSVUNUCisK Ky8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3RlbXBfY2xhc3MgY29ycmVzcG9uZHMg dG8gYSBwb2ludGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfdGVtcF9j bGFzcyByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBGb3JtRGF0 YV9wZ190ZW1wX2NsYXNzICpGb3JtX3BnX3RlbXBfY2xhc3M7CisKK0RFQ0xBUkVfVU5JUVVFX0lO REVYX1BLRVkocGdfdGVtcF9jbGFzc19vaWRfaW5kZXgsIDgwODMsIFRlbXBDbGFzc09pZEluZGV4 SWQsIHBnX3RlbXBfY2xhc3MsIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CisKK01BS0VfU1lTQ0FDSEUo VEVNUFJFTE9JRCwgcGdfdGVtcF9jbGFzc19vaWRfaW5kZXgsIDEyOCk7CisKKy8qCisgKiBDb3B5 IGFsbCBwZ190ZW1wX2NsYXNzIGF0dHJpYnV0ZXMgZnJvbSAic291cmNlIiB0byAidGFyZ2V0Iiwg d2hlcmUgdGhlCisgKiBzb3VyY2UgYW5kIHRhcmdldCBtYXkgYmUgb2YgdHlwZSBGb3JtX3BnX2Ns YXNzIG9yIEZvcm1fcGdfdGVtcF9jbGFzcy4KKyAqCisgKiBCZXdhcmUgb2YgbXVsdGlwbGUgZXZh bHVhdGlvbnMgb2YgYXJndW1lbnRzIQorICovCisjZGVmaW5lIENPUFlfUEdfVEVNUF9DTEFTU19B VFRSUyhzb3VyY2UsIHRhcmdldCkgXAorCWRvIHsgXAorCQkodGFyZ2V0KS0+b2lkID0gKHNvdXJj ZSktPm9pZDsgXAorCQkodGFyZ2V0KS0+cmVsZmlsZW5vZGUgPSAoc291cmNlKS0+cmVsZmlsZW5v ZGU7IFwKKwkJKHRhcmdldCktPnJlbHRhYmxlc3BhY2UgPSAoc291cmNlKS0+cmVsdGFibGVzcGFj ZTsgXAorCX0gd2hpbGUgKDApCisKKy8qCisgKiBHZXQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiBy ZWxmaWxlbm9kZSBmcm9tIHBnX2NsYXNzIGFuZCBwZ190ZW1wX2NsYXNzCisgKiB0dXBsZSBkYXRh LiAgVGhlIHZhbHVlIGZyb20gcGdfdGVtcF9jbGFzcyAoaWYgcHJlc2VudCkgdGFrZXMgcHJlY2Vk ZW5jZS4KKyAqLworc3RhdGljIGlubGluZSBPaWQKK0dldEVmZmVjdGl2ZV9yZWxmaWxlbm9kZShG b3JtX3BnX2NsYXNzIGNmLCBGb3JtX3BnX3RlbXBfY2xhc3MgdGYpCit7CisJcmV0dXJuIHRmICE9 IE5VTEwgPyB0Zi0+cmVsZmlsZW5vZGUgOiBjZi0+cmVsZmlsZW5vZGU7Cit9CisKKy8qCisgKiBH ZXQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiByZWx0YWJsZXNwYWNlIGZyb20gcGdfY2xhc3MgYW5k IHBnX3RlbXBfY2xhc3MKKyAqIHR1cGxlIGRhdGEuICBUaGUgdmFsdWUgZnJvbSBwZ190ZW1wX2Ns YXNzIChpZiBwcmVzZW50KSB0YWtlcyBwcmVjZWRlbmNlLgorICovCitzdGF0aWMgaW5saW5lIE9p ZAorR2V0RWZmZWN0aXZlX3JlbHRhYmxlc3BhY2UoRm9ybV9wZ19jbGFzcyBjZiwgRm9ybV9wZ190 ZW1wX2NsYXNzIHRmKQoreworCXJldHVybiB0ZiAhPSBOVUxMID8gdGYtPnJlbHRhYmxlc3BhY2Ug OiBjZi0+cmVsdGFibGVzcGFjZTsKK30KKworLyoKKyAqIFNldCB0aGUgZWZmZWN0aXZlIHZhbHVl IG9mIHJlbGZpbGVub2RlIGluIHR1cGxlIGZvcm0gZGF0YSBmcm9tIHBnX2NsYXNzIG9yCisgKiBw Z190ZW1wX2NsYXNzLiAgVGhlIHZhbHVlIGlzIHNldCBpbiBwZ190ZW1wX2NsYXNzIGluc3RlYWQg b2YgcGdfY2xhc3MsIGlmCisgKiB0aGUgcGdfdGVtcF9jbGFzcyB0dXBsZSBmb3JtIGRhdGEgaXMg bm9uLU5VTEwuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorU2V0RWZmZWN0aXZlX3JlbGZpbGVu b2RlKEZvcm1fcGdfY2xhc3MgY2YsIEZvcm1fcGdfdGVtcF9jbGFzcyB0ZiwgT2lkIHZhbCkKK3sK KwlpZiAodGYgIT0gTlVMTCkKKwkJdGYtPnJlbGZpbGVub2RlID0gdmFsOworCWVsc2UKKwkJY2Yt PnJlbGZpbGVub2RlID0gdmFsOworfQorCisvKgorICogU2V0IHRoZSBlZmZlY3RpdmUgdmFsdWUg b2YgcmVsdGFibGVzcGFjZSBpbiB0dXBsZSBmb3JtIGRhdGEgZnJvbSBwZ19jbGFzcworICogYW5k IHBnX3RlbXBfY2xhc3MuICBUaGUgdmFsdWUgaXMgc2V0IGluIHBnX3RlbXBfY2xhc3MgYXMgd2Vs bCBhcyBwZ19jbGFzcywKKyAqIGlmIHRoZSBwZ190ZW1wX2NsYXNzIHR1cGxlIGZvcm0gZGF0YSBp cyBub24tTlVMTC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitTZXRFZmZlY3RpdmVfcmVsdGFi bGVzcGFjZShGb3JtX3BnX2NsYXNzIGNmLCBGb3JtX3BnX3RlbXBfY2xhc3MgdGYsIE9pZCB2YWwp Cit7CisJLyogTkI6IFZhbHVlIGlzIHNldCAqYm90aCogbG9jYWxseSBhbmQgZ2xvYmFsbHkgKi8K KwljZi0+cmVsdGFibGVzcGFjZSA9IHZhbDsKKwlpZiAodGYgIT0gTlVMTCkKKwkJdGYtPnJlbHRh Ymxlc3BhY2UgPSB2YWw7Cit9CisKKworZXh0ZXJuIEhlYXBUdXBsZSBHZXRQZ1RlbXBDbGFzc1R1 cGxlKE9pZCByZWxpZCk7CisKK2V4dGVybiB2b2lkIEluc2VydFBnVGVtcENsYXNzVHVwbGUoUmVs YXRpb24gcmVsKTsKKworZXh0ZXJuIHZvaWQgVXBkYXRlUGdUZW1wQ2xhc3NUdXBsZShPaWQgcmVs aWQsIEhlYXBUdXBsZSBuZXd0dXBsZSk7CisKK2V4dGVybiB2b2lkIERlbGV0ZVBnVGVtcENsYXNz VHVwbGUoT2lkIHJlbGlkKTsKKworZXh0ZXJuIEhlYXBUdXBsZSBHZXRQZ0NsYXNzQW5kUGdUZW1w Q2xhc3NUdXBsZXMoT2lkIHJlbGlkLCBib29sIGxvY2tfdHVwbGUsCisJCQkJCQkJCQkJCQlIZWFw VHVwbGUgKnRlbXBfdHVwbGUsCisJCQkJCQkJCQkJCQlib29sIGNoZWNrX3RlbXApOworCitleHRl cm4gSGVhcFR1cGxlIEdldEVmZmVjdGl2ZVBnQ2xhc3NUdXBsZShPaWQgcmVsaWQpOworCitleHRl cm4gdm9pZCBQcmVDQ0lfUGdUZW1wQ2xhc3Modm9pZCk7CisKK2V4dGVybiB2b2lkIFByZUNvbW1p dF9QZ1RlbXBDbGFzcyh2b2lkKTsKKworZXh0ZXJuIHZvaWQgUHJlU3ViQ29tbWl0X1BnVGVtcENs YXNzKHZvaWQpOworCitleHRlcm4gdm9pZCBBdEVPWGFjdF9QZ1RlbXBDbGFzcyhib29sIGlzQ29t bWl0KTsKKworZXh0ZXJuIHZvaWQgQXRFT1N1YlhhY3RfUGdUZW1wQ2xhc3MoYm9vbCBpc0NvbW1p dCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAorCQkJCQkJCQkJU3ViVHJhbnNhY3Rpb25JZCBw YXJlbnRTdWJpZCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQR19URU1QX0NMQVNTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9nbG9iYWwtdGVtcC5vdXQgYi9zcmMv dGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0CmluZGV4IGQ0NmNhODVhY2Ji Li42NTAyNTcyMWRiMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2ds b2JhbC10ZW1wLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRl bXAub3V0CkBAIC0xLDUgKzEsMTYgQEAKIFBhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25z CiAKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBjcmVhdGVfdGJsc3BhY2UgbGlzdF90YmxzcGFjZXMK K3N0ZXAgY3JlYXRlX3RibHNwYWNlOiBDUkVBVEUgVEFCTEVTUEFDRSByZWdyZXNzX2lzb2xhdGlv bl90YWJsZXNwYWNlIExPQ0FUSU9OICcnOworc3RlcCBsaXN0X3RibHNwYWNlczogU0VMRUNUIHNw Y25hbWUgRlJPTSBwZ190YWJsZXNwYWNlIE9SREVSIEJZIDE7CitzcGNuYW1lICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwZ19kZWZhdWx0ICAgICAg ICAgICAgICAgICAgCitwZ19nbG9iYWwgICAgICAgICAgICAgICAgICAgCityZWdyZXNzX2lzb2xh dGlvbl90YWJsZXNwYWNlCisoMyByb3dzKQorCisKIHN0YXJ0aW5nIHBlcm11dGF0aW9uOiBpbnMx IGluczIgc2VsMSBzZWwyCiBzdGVwIGluczE6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdz MScpOwogc3RlcCBpbnMyOiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsKQEAgLTM5 NCwzICs0MDUsMTAxIEBAIGtleXx2YWx8c2VxCiAgIDF8czIgfCAgMQogKDEgcm93KQogCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBpbnMxIGluczIgdDIgc2VsMSBzZWwyIGluczIgdDEgc2VsMSBz ZWwyIGluczEgdDIgc2VsMSBzZWwyCitzdGVwIGluczE6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMg KDEsICdzMScpOworc3RlcCBpbnMyOiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczInKTsK K3N0ZXAgdDI6IFRSVU5DQVRFIHRtcDsKK3N0ZXAgc2VsMTogU0VMRUNUICogRlJPTSB0bXA7Citr ZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMSB8ICAxCisoMSByb3cpCisKK3N0ZXAgc2Vs MjogU0VMRUNUICogRlJPTSB0bXA7CitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKygwIHJvd3Mp CisKK3N0ZXAgaW5zMjogSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MyJyk7CitzdGVwIHQx OiBUUlVOQ0FURSB0bXA7CitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZhbHxz ZXEKKy0tLSstLS0rLS0tCisoMCByb3dzKQorCitzdGVwIHNlbDI6IFNFTEVDVCAqIEZST00gdG1w Owora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0tCisgIDF8czIgfCAgMgorKDEgcm93KQorCitzdGVw IGluczE6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMgKDEsICdzMScpOworc3RlcCB0MjogVFJVTkNB VEUgdG1wOworc3RlcCBzZWwxOiBTRUxFQ1QgKiBGUk9NIHRtcDsKK2tleXx2YWx8c2VxCistLS0r LS0tKy0tLQorICAxfHMxIHwgIDIKKygxIHJvdykKKworc3RlcCBzZWwyOiBTRUxFQ1QgKiBGUk9N IHRtcDsKK2tleXx2YWx8c2VxCistLS0rLS0tKy0tLQorKDAgcm93cykKKworCitzdGFydGluZyBw ZXJtdXRhdGlvbjogaW5zMSBpbnMyIGFsdF90YmxzcGFjZSBnZXRfdGJsc3BhY2UxIGdldF90Ymxz cGFjZTIgc2VsMSBzZWwyIHJlc2V0X3RibHNwYWNlCitzdGVwIGluczE6IElOU0VSVCBJTlRPIHRt cCBWQUxVRVMgKDEsICdzMScpOworc3RlcCBpbnMyOiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgx LCAnczInKTsKK3N0ZXAgYWx0X3RibHNwYWNlOiBBTFRFUiBUQUJMRSB0bXAgU0VUIFRBQkxFU1BB Q0UgcmVncmVzc19pc29sYXRpb25fdGFibGVzcGFjZTsKK3N0ZXAgZ2V0X3RibHNwYWNlMTogCisg IFNFTEVDVCBzMS5zcGNuYW1lLCBzMi5zcGNuYW1lLAorICAgICAgICAgcmVnZXhwX3JlcGxhY2Uo cGdfcmVsYXRpb25fZmlsZXBhdGgoJ3RtcCcpLCAnKFxkKyknLCAnTk5OJywgJ2cnKQorICAgIEZS T00gcGdfY2xhc3MgYworICAgIEpPSU4gcGdfdGFibGVzcGFjZSBzMSBPTiBzMS5vaWQgPSBjLnJl bHRhYmxlc3BhY2UKKyAgICBMRUZUIEpPSU4gcGdfdGVtcF9jbGFzcyB0IE9OIHQub2lkID0gYy5v aWQKKyAgICBKT0lOIHBnX3RhYmxlc3BhY2UgczIgT04gczIub2lkID0gdC5yZWx0YWJsZXNwYWNl CisgICBXSEVSRSBjLnJlbG5hbWUgPSAndG1wJzsKKworc3BjbmFtZSAgICAgICAgICAgICAgICAg ICAgIHxzcGNuYW1lICAgICAgICAgICAgICAgICAgICAgfHJlZ2V4cF9yZXBsYWNlICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCity ZWdyZXNzX2lzb2xhdGlvbl90YWJsZXNwYWNlfHJlZ3Jlc3NfaXNvbGF0aW9uX3RhYmxlc3BhY2V8 cGdfdGJsc3BjL05OTi9QR19OTk5fTk5OL05OTi90Tk5OX05OTgorKDEgcm93KQorCitzdGVwIGdl dF90YmxzcGFjZTI6IAorICBTRUxFQ1QgczEuc3BjbmFtZSwgczIuc3BjbmFtZSwKKyAgICAgICAg IHJlZ2V4cF9yZXBsYWNlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0bXAnKSwgJyhcZCspJywgJ05O TicsICdnJykKKyAgICBGUk9NIHBnX2NsYXNzIGMKKyAgICBKT0lOIHBnX3RhYmxlc3BhY2UgczEg T04gczEub2lkID0gYy5yZWx0YWJsZXNwYWNlCisgICAgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3Mg dCBPTiB0Lm9pZCA9IGMub2lkCisgICAgTEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgczIgT04gczIu b2lkID0gdC5yZWx0YWJsZXNwYWNlCisgICBXSEVSRSBjLnJlbG5hbWUgPSAndG1wJzsKKworc3Bj bmFtZSAgICAgICAgICAgICAgICAgICAgIHxzcGNuYW1lfHJlZ2V4cF9yZXBsYWNlICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KK3JlZ3Jl c3NfaXNvbGF0aW9uX3RhYmxlc3BhY2V8ICAgICAgIHxiYXNlL05OTi90Tk5OX05OTgorKDEgcm93 KQorCitzdGVwIHNlbDE6IFNFTEVDVCAqIEZST00gdG1wOwora2V5fHZhbHxzZXEKKy0tLSstLS0r LS0tCisgIDF8czEgfCAgMQorKDEgcm93KQorCitzdGVwIHNlbDI6IFNFTEVDVCAqIEZST00gdG1w Owora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0tCisgIDF8czIgfCAgMQorKDEgcm93KQorCitzdGVw IHJlc2V0X3RibHNwYWNlOiBBTFRFUiBUQUJMRSB0bXAgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVs dDsKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGRyb3BfdGJsc3BhY2UgbGlzdF90YmxzcGFjZXMK K3N0ZXAgZHJvcF90YmxzcGFjZTogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfaXNvbGF0aW9uX3Rh Ymxlc3BhY2U7CitzdGVwIGxpc3RfdGJsc3BhY2VzOiBTRUxFQ1Qgc3BjbmFtZSBGUk9NIHBnX3Rh Ymxlc3BhY2UgT1JERVIgQlkgMTsKK3NwY25hbWUgICAKKy0tLS0tLS0tLS0KK3BnX2RlZmF1bHQK K3BnX2dsb2JhbCAKKygyIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9z cGVjcy9nbG9iYWwtdGVtcC5zcGVjIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10 ZW1wLnNwZWMKaW5kZXggNGVjOTYzZTEwNGEuLmVjYjA3YWQwYjZlIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFsLXRlbXAuc3BlYworKysgYi9zcmMvdGVzdC9pc29s YXRpb24vc3BlY3MvZ2xvYmFsLXRlbXAuc3BlYwpAQCAtMTMsNiArMTMsMTAgQEAgdGVhcmRvd24g ewogfQogCiBzZXNzaW9uIHMxCitzZXR1cCB7IFNFVCBhbGxvd19pbl9wbGFjZV90YWJsZXNwYWNl cyA9IHRydWU7IH0KK3N0ZXAgY3JlYXRlX3RibHNwYWNlIHsgQ1JFQVRFIFRBQkxFU1BBQ0UgcmVn cmVzc19pc29sYXRpb25fdGFibGVzcGFjZSBMT0NBVElPTiAnJzsgfQorc3RlcCBsaXN0X3RibHNw YWNlcyB7IFNFTEVDVCBzcGNuYW1lIEZST00gcGdfdGFibGVzcGFjZSBPUkRFUiBCWSAxOyB9Citz dGVwIGRyb3BfdGJsc3BhY2UgeyBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc19pc29sYXRpb25fdGFi bGVzcGFjZTsgfQogc3RlcCBpbnMxIHsgSU5TRVJUIElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MxJyk7 IH0KIHN0ZXAgaW5zMXAxIHsgSU5TRVJUIElOVE8gdG1wX3BhcnRlZCBWQUxVRVMgKDEsICdzMSBw MScpOyB9CiBzdGVwIGluczFwMiB7IElOU0VSVCBJTlRPIHRtcF9wYXJ0ZWQgVkFMVUVTICgyLCAn czEgcDInKTsgfQpAQCAtMzMsNiArMzcsMTggQEAgc3RlcCBzZWwxX2lkeCB7CiAgIFNFTEVDVCAq IEZST00gdG1wIFdIRVJFIHZhbCA9ICdzMSc7CiAgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJFIHZh bCA9ICdzMSc7CiB9CitzdGVwIHQxIHsgVFJVTkNBVEUgdG1wOyB9CitzdGVwIGFsdF90YmxzcGFj ZSB7IEFMVEVSIFRBQkxFIHRtcCBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX2lzb2xhdGlvbl90YWJs ZXNwYWNlOyB9CitzdGVwIGdldF90YmxzcGFjZTEgeworICBTRUxFQ1QgczEuc3BjbmFtZSwgczIu c3BjbmFtZSwKKyAgICAgICAgIHJlZ2V4cF9yZXBsYWNlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0 bXAnKSwgJyhcZCspJywgJ05OTicsICdnJykKKyAgICBGUk9NIHBnX2NsYXNzIGMKKyAgICBKT0lO IHBnX3RhYmxlc3BhY2UgczEgT04gczEub2lkID0gYy5yZWx0YWJsZXNwYWNlCisgICAgTEVGVCBK T0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgICAgSk9JTiBwZ190YWJsZXNw YWNlIHMyIE9OIHMyLm9pZCA9IHQucmVsdGFibGVzcGFjZQorICAgV0hFUkUgYy5yZWxuYW1lID0g J3RtcCc7Cit9CitzdGVwIHJlc2V0X3RibHNwYWNlIHsgQUxURVIgVEFCTEUgdG1wIFNFVCBUQUJM RVNQQUNFIHBnX2RlZmF1bHQ7IH0KIAogc2Vzc2lvbiBzMgogc3RlcCBiMiB7IEJFR0lOOyB9CkBA IC01Niw2ICs3MiwxOCBAQCBzdGVwIHNlbDJfaWR4IHsKICAgU0VMRUNUICogRlJPTSB0bXAgV0hF UkUgdmFsID0gJ3MyJzsKIH0KIHN0ZXAgcmVpZHgyIHsgUkVJTkRFWCBJTkRFWCB0bXBfdmFsX2lk eDsgfQorc3RlcCBnZXRfdGJsc3BhY2UyIHsKKyAgU0VMRUNUIHMxLnNwY25hbWUsIHMyLnNwY25h bWUsCisgICAgICAgICByZWdleHBfcmVwbGFjZShwZ19yZWxhdGlvbl9maWxlcGF0aCgndG1wJyks ICcoXGQrKScsICdOTk4nLCAnZycpCisgICAgRlJPTSBwZ19jbGFzcyBjCisgICAgSk9JTiBwZ190 YWJsZXNwYWNlIHMxIE9OIHMxLm9pZCA9IGMucmVsdGFibGVzcGFjZQorICAgIExFRlQgSk9JTiBw Z190ZW1wX2NsYXNzIHQgT04gdC5vaWQgPSBjLm9pZAorICAgIExFRlQgSk9JTiBwZ190YWJsZXNw YWNlIHMyIE9OIHMyLm9pZCA9IHQucmVsdGFibGVzcGFjZQorICAgV0hFUkUgYy5yZWxuYW1lID0g J3RtcCc7Cit9CisKKyMgQ3JlYXRlIHRlc3QgdGFibGVzcGFjZSBmb3IgcmVtYWluaW5nIHRlc3Rz CitwZXJtdXRhdGlvbiBjcmVhdGVfdGJsc3BhY2UgbGlzdF90YmxzcGFjZXMKIAogIyBCYXNpYyBl ZmZlY3RzCiBwZXJtdXRhdGlvbiBpbnMxIGluczIgc2VsMSBzZWwyCkBAIC03OSwzICsxMDcsMTIg QEAgcGVybXV0YXRpb24gY3JlYXRlMWRyIGluczFfMiBpbnMyXzIgZHJvcDEgY3JlYXRlMWRyIGlu czFfMiBpbnMyXzIgZHJvcDEKIHBlcm11dGF0aW9uIGluczEgaWR4MSBzZWwxX2lkeCBpbnMyIHNl bDJfaWR4CiBwZXJtdXRhdGlvbiBpbnMxIGluczIgaWR4MSBzZWwxX2lkeCBzZWwyX2lkeAogcGVy bXV0YXRpb24gaW5zMSBpbnMyIGlkeDEgc2VsMV9pZHggc2VsMl9pZHggcmVpZHgyIHNlbDJfaWR4 CisKKyMgVGVzdCBsb2NhbCBUUlVOQ0FURQorcGVybXV0YXRpb24gaW5zMSBpbnMyIHQyIHNlbDEg c2VsMiBpbnMyIHQxIHNlbDEgc2VsMiBpbnMxIHQyIHNlbDEgc2VsMgorCisjIFRlc3QgQUxURVIg VEFCTEUgLi4uIFNFVCBUQUJMRVNQQUNFCitwZXJtdXRhdGlvbiBpbnMxIGluczIgYWx0X3RibHNw YWNlIGdldF90YmxzcGFjZTEgZ2V0X3RibHNwYWNlMiBzZWwxIHNlbDIgcmVzZXRfdGJsc3BhY2UK KworIyBUaWR5IHVwCitwZXJtdXRhdGlvbiBkcm9wX3RibHNwYWNlIGxpc3RfdGJsc3BhY2VzCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOF93YWxfb3B0aW1pemUucGwgYi9zcmMv dGVzdC9yZWNvdmVyeS90LzAxOF93YWxfb3B0aW1pemUucGwKaW5kZXggOGYyNWI1ZGQxNjUuLjhm ZDk1OTgwZjM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOF93YWxfb3B0aW1p emUucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMThfd2FsX29wdGltaXplLnBsCkBAIC0y OSw2ICsyOSw3IEBAIHN1YiBjaGVja19vcnBoYW5fcmVsZmlsZW5vZGVzCiAJCSdwb3N0Z3Jlcycs ICIKIAkgICBTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgob2lkKSBGUk9NIHBnX2NsYXNzCiAJ ICAgV0hFUkUgcmVsdGFibGVzcGFjZSA9IDAgQU5EIHJlbHBlcnNpc3RlbmNlIDw+ICd0JyBBTkQK KyAgICAgICByZWxwZXJzaXN0ZW5jZSA8PiAnZycgQU5ECiAJICAgcGdfcmVsYXRpb25fZmlsZXBh dGgob2lkKSBJUyBOT1QgTlVMTDsiKTsKIAlpc19kZWVwbHkoCiAJCVsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQKaW5kZXggNmQyNzUxZTY4OTkuLmNjOTQwMDI4NGZm IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dApAQCAtNjcsNiAr NjcsMTQgQEAgU0VMRUNUICogRlJPTSB0bXAxOwogLS0tKy0tLSstLS0KICgwIHJvd3MpCiAKKy0t IFRlc3QgcGdfcmVsYXRpb25fZmlsZW5vZGUoKSBtYXRjaGVzIGdsb2JhbCByZWxmaWxlbm9kZQor U0VMRUNUIHJlbGZpbGVub2RlID0gcGdfcmVsYXRpb25fZmlsZW5vZGUoJ3RtcDEnOjpyZWdjbGFz cykgQVMgb2sKKyAgRlJPTSBwZ19jbGFzcyBXSEVSRSBvaWQgPSAndG1wMSc6OnJlZ2NsYXNzOwor IG9rIAorLS0tLQorIHQKKygxIHJvdykKKwogLS0gVGVzdCBpbmRleAogSU5TRVJUIElOVE8gdG1w MSBWQUxVRVMgKDEsICd4eHgnKTsKIFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9mZjsKQEAgLTEwNSw3 ICsxMTMsMjYgQEAgU0VMRUNUICogRlJPTSB0bXAxIFdIRVJFIGIgPSAneHh4JzsKIFJFU0VUIGVu YWJsZV9zZXFzY2FuOwogUkVJTkRFWCBJTkRFWCBDT05DVVJSRU5UTFkgdG1wMV9iX2lkeDsKIFJF SU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHRtcDE7CistLSBUZXN0IFJFSU5ERVggLS0gcmVsZmls ZW5vZGUgb25seSBjaGFuZ2VzIGxvY2FsbHkKK1NFTEVDVCBjLnJlbGZpbGVub2RlIEFTIGdsb2Jh bF9yZWxmaWxlbm9kZSwgdC5yZWxmaWxlbm9kZSBBUyBsb2NhbF9yZWxmaWxlbm9kZQorICBGUk9N IHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9IGMub2lkCisg V0hFUkUgYy5yZWxuYW1lID0gJ3RtcDFfYl9pZHgnIFxnc2V0CitSRUlOREVYIElOREVYIHRtcDFf Yl9pZHg7CitTRUxFQ1QgQ0FTRSBXSEVOIGMucmVsZmlsZW5vZGUgPSA6Z2xvYmFsX3JlbGZpbGVu b2RlIFRIRU4gJ3VuY2hhbmdlZCcgRUxTRSAnY2hhbmdlZCcgRU5EIEFTIGdsb2JhbF9yZWxmaWxl bm9kZSwKKyAgICAgICBDQVNFIFdIRU4gdC5yZWxmaWxlbm9kZSA9IDpsb2NhbF9yZWxmaWxlbm9k ZSBUSEVOICd1bmNoYW5nZScgRUxTRSAnY2hhbmdlZCcgRU5EIEFTIGxvY2FsX3JlbGZpbGVub2Rl CisgIEZST00gcGdfY2xhc3MgYyBMRUZUIEpPSU4gcGdfdGVtcF9jbGFzcyB0IE9OIHQub2lkID0g Yy5vaWQKKyBXSEVSRSBjLnJlbG5hbWUgPSAndG1wMV9iX2lkeCc7CisgZ2xvYmFsX3JlbGZpbGVu b2RlIHwgbG9jYWxfcmVsZmlsZW5vZGUgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tCisgdW5jaGFuZ2VkICAgICAgICAgIHwgY2hhbmdlZAorKDEgcm93KQorCiBEUk9Q IElOREVYIENPTkNVUlJFTlRMWSB0bXAxX2JfaWR4OworLS0gUkVJTkRFWCBub3QgYWxsb3dlZCBv biBwZ190ZW1wX2NsYXNzCitSRUlOREVYIElOREVYIHBnX3RlbXBfY2xhc3Nfb2lkX2luZGV4Owor Tk9USUNFOiAgY2Fubm90IHJlaW5kZXggdGVtcG9yYXJ5IHN5c3RlbSBpbmRleCAicGdfdGVtcF9j bGFzc19vaWRfaW5kZXgiLCBza2lwcGluZworUkVJTkRFWCBUQUJMRSBwZ190ZW1wX2NsYXNzOwor Tk9USUNFOiAgY2Fubm90IHJlaW5kZXggdGVtcG9yYXJ5IHN5c3RlbSBpbmRleCAicGdfdGVtcF9j bGFzc19vaWRfaW5kZXgiLCBza2lwcGluZwogLS0gVGVzdCBPTiBDT01NSVQgREVMRVRFIFJPV1MK IENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyIChhIGludCkgT04gQ09NTUlUIERFTEVURSBS T1dTOwogQkVHSU47CkBAIC0yMTcsNyArMjQ0LDcgQEAgU0VMRUNUICogRlJPTSB0bXAyOwogKDAg cm93cykKIAogRFJPUCBUQUJMRSBwZXJtX3BrX3JlbCwgdGVtcF9wa19yZWwsIHRtcDI7Ci0tLSBU ZXN0IEFMVEVSIFRBQkxFIC4uLiBTRVQgVEFCTEVTUEFDRQorLS0gVGVzdCBBTFRFUiBUQUJMRSAu Li4gU0VUIFRBQkxFU1BBQ0UgLS0gcmVsdGFibGVzcGFjZSBjaGFuZ2VzIGxvY2FsbHkgYW5kIGds b2JhbGx5CiBDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpOwogSU5TRVJUIElO VE8gdG1wMiBWQUxVRVMgKDEpOwogU0VMRUNUICogRlJPTSB0bXAyOwpAQCAtMjI2LDEwICsyNTMs MTUgQEAgU0VMRUNUICogRlJPTSB0bXAyOwogIDEKICgxIHJvdykKIAotU0VMRUNUIHJlZ2V4cF9y ZXBsYWNlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0bXAyJyksICcoXGQrKScsICdOTk4nLCAnZycp OwotICByZWdleHBfcmVwbGFjZSAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLQotIGJhc2UvTk5OL3RO Tk5fTk5OCitTRUxFQ1QgYy5yZWx0YWJsZXNwYWNlIEFTIGdsb2JhbF90YWJsZXNwYWNlLAorICAg ICAgIHQucmVsdGFibGVzcGFjZSBBUyBsb2NhbF90YWJsZXNwYWNlLAorICAgICAgIHJlZ2V4cF9y ZXBsYWNlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0bXAyJyksICcoXGQrKScsICdOTk4nLCAnZycp CisgIEZST00gcGdfY2xhc3MgYworICBMRUZUIEpPSU4gcGdfdGVtcF9jbGFzcyB0IE9OIHQub2lk ID0gYy5vaWQKKyBXSEVSRSBjLnJlbG5hbWUgPSAndG1wMic7CisgZ2xvYmFsX3RhYmxlc3BhY2Ug fCBsb2NhbF90YWJsZXNwYWNlIHwgIHJlZ2V4cF9yZXBsYWNlICAgCistLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAg ICAgIDAgfCAgICAgICAgICAgICAgICAwIHwgYmFzZS9OTk4vdE5OTl9OTk4KICgxIHJvdykKIAog QUxURVIgVEFCTEUgdG1wMiBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOwpAQCAtMjM5 LDEwICsyNzEsMTYgQEAgU0VMRUNUICogRlJPTSB0bXAyOwogIDEKICgxIHJvdykKIAotU0VMRUNU IHJlZ2V4cF9yZXBsYWNlKHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0bXAyJyksICcoXGQrKScsICdO Tk4nLCAnZycpOwotICAgICAgICAgICAgcmVnZXhwX3JlcGxhY2UgICAgICAgICAgICAgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBwZ190YmxzcGMvTk5OL1BHX05O Tl9OTk4vTk5OL3ROTk5fTk5OCitTRUxFQ1QgczEuc3BjbmFtZSBBUyBnbG9iYWxfdGFibGVzcGFj ZSwgczIuc3BjbmFtZSBBUyBsb2NhbF90YWJsZXNwYWNlLAorICAgICAgIHJlZ2V4cF9yZXBsYWNl KHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0bXAyJyksICcoXGQrKScsICdOTk4nLCAnZycpCisgIEZS T00gcGdfY2xhc3MgYworICBKT0lOIHBnX3RhYmxlc3BhY2UgczEgT04gczEub2lkID0gYy5yZWx0 YWJsZXNwYWNlCisgIExFRlQgSk9JTiBwZ190ZW1wX2NsYXNzIHQgT04gdC5vaWQgPSBjLm9pZAor ICBKT0lOIHBnX3RhYmxlc3BhY2UgczIgT04gczIub2lkID0gdC5yZWx0YWJsZXNwYWNlCisgV0hF UkUgYy5yZWxuYW1lID0gJ3RtcDInOworIGdsb2JhbF90YWJsZXNwYWNlIHwgbG9jYWxfdGFibGVz cGFjZSB8ICAgICAgICAgICAgcmVnZXhwX3JlcGxhY2UgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlICB8IHJlZ3Jlc3NfdGJsc3BhY2UgfCBwZ190 YmxzcGMvTk5OL1BHX05OTl9OTk4vTk5OL3ROTk5fTk5OCiAoMSByb3cpCiAKIERST1AgVEFCTEUg dG1wMjsKQEAgLTMzMywxMyArMzcxLDEzNSBAQCBTRUxFQ1QgKiBGUk9NIHRtcDE7CiAtLS0rLS0t Ky0tLQogKDAgcm93cykKIAotLS0gVGVzdCB2aWV3IGNyZWF0aW9uCistLSBUZXN0IENMVVNURVIg LS0gcmVsZmlsZW5vZGUgb25seSBjaGFuZ2VzIGxvY2FsbHkKK1NFTEVDVCBjLnJlbGZpbGVub2Rl IEFTIGdsb2JhbF9yZWxmaWxlbm9kZSwgdC5yZWxmaWxlbm9kZSBBUyBsb2NhbF9yZWxmaWxlbm9k ZQorICBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9 IGMub2lkCisgV0hFUkUgYy5yZWxuYW1lID0gJ3RtcDEnIFxnc2V0CitDTFVTVEVSIHRtcDEgVVNJ TkcgdG1wMV9wa2V5OworU0VMRUNUIENBU0UgV0hFTiBjLnJlbGZpbGVub2RlID0gOmdsb2JhbF9y ZWxmaWxlbm9kZSBUSEVOICd1bmNoYW5nZWQnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBnbG9iYWxf cmVsZmlsZW5vZGUsCisgICAgICAgQ0FTRSBXSEVOIHQucmVsZmlsZW5vZGUgPSA6bG9jYWxfcmVs ZmlsZW5vZGUgVEhFTiAndW5jaGFuZ2UnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBsb2NhbF9yZWxm aWxlbm9kZQorICBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0 Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5yZWxuYW1lID0gJ3RtcDEnOworIGdsb2JhbF9yZWxmaWxl bm9kZSB8IGxvY2FsX3JlbGZpbGVub2RlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLQorIHVuY2hhbmdlZCAgICAgICAgICB8IGNoYW5nZWQKKygxIHJvdykKKworLS0g Q0xVU1RFUiBub3QgYWxsb3dlZCBvbiBwZ190ZW1wX2NsYXNzCitDTFVTVEVSIHBnX3RlbXBfY2xh c3M7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IGV4ZWN1dGUgQ0xVU1RFUiBvbiB0ZW1wb3Jhcnkg c3lzdGVtIGNhdGFsb2cgInBnX3RlbXBfY2xhc3MiCistLSBUZXN0IFJFUEFDSyAtLSByZWxmaWxl bm9kZSBvbmx5IGNoYW5nZXMgbG9jYWxseQorU0VMRUNUIGMucmVsZmlsZW5vZGUgQVMgZ2xvYmFs X3JlbGZpbGVub2RlLCB0LnJlbGZpbGVub2RlIEFTIGxvY2FsX3JlbGZpbGVub2RlCisgIEZST00g cGdfY2xhc3MgYyBMRUZUIEpPSU4gcGdfdGVtcF9jbGFzcyB0IE9OIHQub2lkID0gYy5vaWQKKyBX SEVSRSBjLnJlbG5hbWUgPSAndG1wMScgXGdzZXQKK1JFUEFDSyB0bXAxOworU0VMRUNUIENBU0Ug V0hFTiBjLnJlbGZpbGVub2RlID0gOmdsb2JhbF9yZWxmaWxlbm9kZSBUSEVOICd1bmNoYW5nZWQn IEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBnbG9iYWxfcmVsZmlsZW5vZGUsCisgICAgICAgQ0FTRSBX SEVOIHQucmVsZmlsZW5vZGUgPSA6bG9jYWxfcmVsZmlsZW5vZGUgVEhFTiAndW5jaGFuZ2UnIEVM U0UgJ2NoYW5nZWQnIEVORCBBUyBsb2NhbF9yZWxmaWxlbm9kZQorICBGUk9NIHBnX2NsYXNzIGMg TEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5yZWxu YW1lID0gJ3RtcDEnOworIGdsb2JhbF9yZWxmaWxlbm9kZSB8IGxvY2FsX3JlbGZpbGVub2RlIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLQorIHVuY2hhbmdlZCAgICAg ICAgICB8IGNoYW5nZWQKKygxIHJvdykKKworLS0gUkVQQUNLIG5vdCBhbGxvd2VkIG9uIHBnX3Rl bXBfY2xhc3MKK1JFUEFDSyBwZ190ZW1wX2NsYXNzOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBl eGVjdXRlIFJFUEFDSyBvbiB0ZW1wb3Jhcnkgc3lzdGVtIGNhdGFsb2cgInBnX3RlbXBfY2xhc3Mi CistLSBUZXN0IFZBQ1VVTSBGVUxMIC0tIHJlbGZpbGVub2RlIG9ubHkgY2hhbmdlcyBsb2NhbGx5 CitTRUxFQ1QgYy5yZWxmaWxlbm9kZSBBUyBnbG9iYWxfcmVsZmlsZW5vZGUsIHQucmVsZmlsZW5v ZGUgQVMgbG9jYWxfcmVsZmlsZW5vZGUKKyAgRlJPTSBwZ19jbGFzcyBjIExFRlQgSk9JTiBwZ190 ZW1wX2NsYXNzIHQgT04gdC5vaWQgPSBjLm9pZAorIFdIRVJFIGMucmVsbmFtZSA9ICd0bXAxJyBc Z3NldAorVkFDVVVNIEZVTEwgdG1wMTsKK1NFTEVDVCBDQVNFIFdIRU4gYy5yZWxmaWxlbm9kZSA9 IDpnbG9iYWxfcmVsZmlsZW5vZGUgVEhFTiAndW5jaGFuZ2VkJyBFTFNFICdjaGFuZ2VkJyBFTkQg QVMgZ2xvYmFsX3JlbGZpbGVub2RlLAorICAgICAgIENBU0UgV0hFTiB0LnJlbGZpbGVub2RlID0g OmxvY2FsX3JlbGZpbGVub2RlIFRIRU4gJ3VuY2hhbmdlJyBFTFNFICdjaGFuZ2VkJyBFTkQgQVMg bG9jYWxfcmVsZmlsZW5vZGUKKyAgRlJPTSBwZ19jbGFzcyBjIExFRlQgSk9JTiBwZ190ZW1wX2Ns YXNzIHQgT04gdC5vaWQgPSBjLm9pZAorIFdIRVJFIGMucmVsbmFtZSA9ICd0bXAxJzsKKyBnbG9i YWxfcmVsZmlsZW5vZGUgfCBsb2NhbF9yZWxmaWxlbm9kZSAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyB1bmNoYW5nZWQgICAgICAgICAgfCBjaGFuZ2VkCisoMSBy b3cpCisKKy0tIFZBQ1VVTSBGVUxMIG5vdCBhbGxvd2VkIG9uIHBnX3RlbXBfY2xhc3MKK1ZBQ1VV TSBGVUxMIHBnX3RlbXBfY2xhc3M7IC0tIHNpbGVudGx5IGlnbm9yZWQKKy0tIFRlc3QgcGdfcmVs YXRpb25fZmlsZW5vZGUoKSBub3cgbWF0Y2hlcyBsb2NhbCByZWxmaWxlbm9kZQorU0VMRUNUIHJl bGZpbGVub2RlID0gcGdfcmVsYXRpb25fZmlsZW5vZGUoJ3RtcDEnOjpyZWdjbGFzcykgQVMgb2sK KyAgRlJPTSBwZ190ZW1wX2NsYXNzIFdIRVJFIG9pZCA9ICd0bXAxJzo6cmVnY2xhc3M7Cisgb2sg CistLS0tCisgdAorKDEgcm93KQorCistLSBWQUNVVU0gaW5pdGlhbGl6ZXMgdG9hc3QgdGFibGVz CitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVzdHM7CitTRUxFQ1QgRVhJU1RT IChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIHQgV0hFUkUgdC5vaWQgPSBjLnJlbHRvYXN0cmVsaWQp LAorICAgICAgIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ190ZW1wX2NsYXNzIHQgV0hFUkUgdC5v aWQgPSBjLnJlbHRvYXN0cmVsaWQpCitGUk9NIHBnX2NsYXNzIGMKK1dIRVJFIG9pZCA9ICd0bXAx Jzo6cmVnY2xhc3M7CisgZXhpc3RzIHwgZXhpc3RzIAorLS0tLS0tLS0rLS0tLS0tLS0KKyB0ICAg ICAgfCBmCisoMSByb3cpCisKK1ZBQ1VVTSB0bXAxOworU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEg RlJPTSBwZ19jbGFzcyB0IFdIRVJFIHQub2lkID0gYy5yZWx0b2FzdHJlbGlkKSwKKyAgICAgICBF WElTVFMgKFNFTEVDVCAxIEZST00gcGdfdGVtcF9jbGFzcyB0IFdIRVJFIHQub2lkID0gYy5yZWx0 b2FzdHJlbGlkKQorRlJPTSBwZ19jbGFzcyBjCitXSEVSRSBvaWQgPSAndG1wMSc6OnJlZ2NsYXNz OworIGV4aXN0cyB8IGV4aXN0cyAKKy0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgIHwgdAorKDEg cm93KQorCitcYworU0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVzdHM7CitWQUNVVU0g RlVMTCB0bXAxOworU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyB0IFdIRVJF IHQub2lkID0gYy5yZWx0b2FzdHJlbGlkKSwKKyAgICAgICBFWElTVFMgKFNFTEVDVCAxIEZST00g cGdfdGVtcF9jbGFzcyB0IFdIRVJFIHQub2lkID0gYy5yZWx0b2FzdHJlbGlkKQorRlJPTSBwZ19j bGFzcyBjCitXSEVSRSBvaWQgPSAndG1wMSc6OnJlZ2NsYXNzOworIGV4aXN0cyB8IGV4aXN0cyAK Ky0tLS0tLS0tKy0tLS0tLS0tCisgdCAgICAgIHwgdAorKDEgcm93KQorCistLSBUZXN0IHN1YnRy YW5zYWN0aW9uIHJvbGxiYWNrIG9mIHBlbmRpbmcgcGdfdGVtcF9jbGFzcyBpbnNlcnRzCitcYwor U0VUIHNlYXJjaF9wYXRoID0gZ2xvYmFsX3RlbXBfdGVzdHM7CitCRUdJTjsKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NIHRtcDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKygxIHJvdykKKworU0FW RVBPSU5UIHNwOworRFJPUCBUQUJMRSB0bXAxOworUk9MTEJBQ0sgVE8gc3A7CiBJTlNFUlQgSU5U TyB0bXAxIFZBTFVFUyAoMSwgJ3h4eCcpOworQ09NTUlUOworU0VMRUNUIG9pZDo6cmVnY2xhc3Mg RlJPTSBwZ190ZW1wX2NsYXNzIE9SREVSIEJZIDE7CisgICAgICAgICAgIG9pZCAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGdfdGVtcF9jbGFzcworIHBnX3RlbXBfY2xh c3Nfb2lkX2luZGV4CisgdG1wMV9jX3NlcQorIHRtcDEKKyB0bXAxX3BrZXkKKyg1IHJvd3MpCisK K1NFTEVDVCAqIEZST00gdG1wMTsKKyBhIHwgIGIgIHwgYyAKKy0tLSstLS0tLSstLS0KKyAxIHwg eHh4IHwgMQorKDEgcm93KQorCistLSBUZXN0IHZpZXcgY3JlYXRpb24KIENSRUFURSBWSUVXIHYg QVMgU0VMRUNUICogRlJPTSB0bXAxOwogU0VMRUNUICogRlJPTSB2OwogIGEgfCAgYiAgfCBjIAog LS0tKy0tLS0tKy0tLQotIDEgfCB4eHggfCAyCisgMSB8IHh4eCB8IDEKICgxIHJvdykKIAogRFJP UCBWSUVXIHY7CkBAIC0zNDcsNyArNTA3LDcgQEAgQ1JFQVRFIFRFTVAgVklFVyB2IEFTIFNFTEVD VCAqIEZST00gdG1wMTsKIFNFTEVDVCAqIEZST00gdjsKICBhIHwgIGIgIHwgYyAKIC0tLSstLS0t LSstLS0KLSAxIHwgeHh4IHwgMgorIDEgfCB4eHggfCAxCiAoMSByb3cpCiAKIERST1AgVklFVyB2 OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAppbmRleCBkNjQxNjliN2JmMC4u M2MzNDA0ZTUxYjggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9p bnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CkBAIC0y ODUsMyArMjg1LDUgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3Bl cnR5IHtwbHBlbGxhYmVsaWR9ID0+IHBnX3Byb3BncmFwaF9lbGUKIE5PVElDRTogIGNoZWNraW5n IHBnX3Byb3BncmFwaF9wcm9wZXJ0eSB7cGdwcGdpZH0gPT4gcGdfY2xhc3Mge29pZH0KIE5PVElD RTogIGNoZWNraW5nIHBnX3Byb3BncmFwaF9wcm9wZXJ0eSB7cGdwdHlwaWR9ID0+IHBnX3R5cGUg e29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3Byb3BncmFwaF9wcm9wZXJ0eSB7cGdwY29sbGF0 aW9ufSA9PiBwZ19jb2xsYXRpb24ge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfY2xh c3Mge29pZH0gPT4gcGdfY2xhc3Mge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfY2xh c3Mge3JlbHRhYmxlc3BhY2V9ID0+IHBnX3RhYmxlc3BhY2Uge29pZH0KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zdGF0cy5vdXQKaW5kZXggMDNjYmMxY2RlZjUuLmI2ZDFkNWZjMzIyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3N0YXRzLm91dApAQCAtODgsNiArODgsNyBAQCBzdGFuZGFsb25lIGJhY2tl bmR8cmVsYXRpb258YnVsa3dyaXRlCiBzdGFuZGFsb25lIGJhY2tlbmR8cmVsYXRpb258aW5pdAog c3RhbmRhbG9uZSBiYWNrZW5kfHJlbGF0aW9ufG5vcm1hbAogc3RhbmRhbG9uZSBiYWNrZW5kfHJl bGF0aW9ufHZhY3V1bQorc3RhbmRhbG9uZSBiYWNrZW5kfHRlbXAgcmVsYXRpb258bm9ybWFsCiBz dGFuZGFsb25lIGJhY2tlbmR8d2FsfGluaXQKIHN0YW5kYWxvbmUgYmFja2VuZHx3YWx8bm9ybWFs CiBzdGFydHVwfHJlbGF0aW9ufGJ1bGtyZWFkCkBAIC0xMTEsNyArMTEyLDcgQEAgd2Fsc3VtbWFy aXplcnx3YWx8aW5pdAogd2Fsc3VtbWFyaXplcnx3YWx8bm9ybWFsCiB3YWx3cml0ZXJ8d2FsfGlu aXQKIHdhbHdyaXRlcnx3YWx8bm9ybWFsCi0oOTUgcm93cykKKyg5NiByb3dzKQogXGEKIC0tIExp c3Qgb2YgcmVnaXN0ZXJlZCBzdGF0aXN0aWNzIGtpbmRzLgogU0VMRUNUIGlkLCBuYW1lLCBmaXhl ZF9hbW91bnQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9iYWxfdGVtcC5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9iYWxfdGVtcC5zcWwKaW5kZXggMjM3M2VhZTBh ZDEuLmExOWIyNWI1YmM2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9iYWxf dGVtcC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsCkBAIC0z NSw2ICszNSwxMCBAQCBTRUxFQ1QgKiBGUk9NIHRtcDE7CiBTRVQgc2VhcmNoX3BhdGggPSBnbG9i YWxfdGVtcF90ZXN0czsKIFNFTEVDVCAqIEZST00gdG1wMTsKIAorLS0gVGVzdCBwZ19yZWxhdGlv bl9maWxlbm9kZSgpIG1hdGNoZXMgZ2xvYmFsIHJlbGZpbGVub2RlCitTRUxFQ1QgcmVsZmlsZW5v ZGUgPSBwZ19yZWxhdGlvbl9maWxlbm9kZSgndG1wMSc6OnJlZ2NsYXNzKSBBUyBvaworICBGUk9N IHBnX2NsYXNzIFdIRVJFIG9pZCA9ICd0bXAxJzo6cmVnY2xhc3M7CisKIC0tIFRlc3QgaW5kZXgK IElOU0VSVCBJTlRPIHRtcDEgVkFMVUVTICgxLCAneHh4Jyk7CiBTRVQgZW5hYmxlX3NlcXNjYW4g PSBvZmY7CkBAIC01Miw4ICs1NiwyMiBAQCBTRUxFQ1QgKiBGUk9NIHRtcDEgV0hFUkUgYiA9ICd4 eHgnOwogUkVTRVQgZW5hYmxlX3NlcXNjYW47CiBSRUlOREVYIElOREVYIENPTkNVUlJFTlRMWSB0 bXAxX2JfaWR4OwogUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgdG1wMTsKKworLS0gVGVzdCBS RUlOREVYIC0tIHJlbGZpbGVub2RlIG9ubHkgY2hhbmdlcyBsb2NhbGx5CitTRUxFQ1QgYy5yZWxm aWxlbm9kZSBBUyBnbG9iYWxfcmVsZmlsZW5vZGUsIHQucmVsZmlsZW5vZGUgQVMgbG9jYWxfcmVs ZmlsZW5vZGUKKyAgRlJPTSBwZ19jbGFzcyBjIExFRlQgSk9JTiBwZ190ZW1wX2NsYXNzIHQgT04g dC5vaWQgPSBjLm9pZAorIFdIRVJFIGMucmVsbmFtZSA9ICd0bXAxX2JfaWR4JyBcZ3NldAorUkVJ TkRFWCBJTkRFWCB0bXAxX2JfaWR4OworU0VMRUNUIENBU0UgV0hFTiBjLnJlbGZpbGVub2RlID0g Omdsb2JhbF9yZWxmaWxlbm9kZSBUSEVOICd1bmNoYW5nZWQnIEVMU0UgJ2NoYW5nZWQnIEVORCBB UyBnbG9iYWxfcmVsZmlsZW5vZGUsCisgICAgICAgQ0FTRSBXSEVOIHQucmVsZmlsZW5vZGUgPSA6 bG9jYWxfcmVsZmlsZW5vZGUgVEhFTiAndW5jaGFuZ2UnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBs b2NhbF9yZWxmaWxlbm9kZQorICBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xh c3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5yZWxuYW1lID0gJ3RtcDFfYl9pZHgnOwog RFJPUCBJTkRFWCBDT05DVVJSRU5UTFkgdG1wMV9iX2lkeDsKIAorLS0gUkVJTkRFWCBub3QgYWxs b3dlZCBvbiBwZ190ZW1wX2NsYXNzCitSRUlOREVYIElOREVYIHBnX3RlbXBfY2xhc3Nfb2lkX2lu ZGV4OworUkVJTkRFWCBUQUJMRSBwZ190ZW1wX2NsYXNzOworCiAtLSBUZXN0IE9OIENPTU1JVCBE RUxFVEUgUk9XUwogQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50KSBPTiBDT01N SVQgREVMRVRFIFJPV1M7CiBCRUdJTjsKQEAgLTExOSwxNCArMTM3LDI1IEBAIERFTEVURSBGUk9N IGd0ZW1wX3BrX3JlbCBXSEVSRSBhID0gMTsKIFNFTEVDVCAqIEZST00gdG1wMjsKIERST1AgVEFC TEUgcGVybV9wa19yZWwsIHRlbXBfcGtfcmVsLCB0bXAyOwogCi0tLSBUZXN0IEFMVEVSIFRBQkxF IC4uLiBTRVQgVEFCTEVTUEFDRQorLS0gVGVzdCBBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BB Q0UgLS0gcmVsdGFibGVzcGFjZSBjaGFuZ2VzIGxvY2FsbHkgYW5kIGdsb2JhbGx5CiBDUkVBVEUg R0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpOwogSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMg KDEpOwogU0VMRUNUICogRlJPTSB0bXAyOwotU0VMRUNUIHJlZ2V4cF9yZXBsYWNlKHBnX3JlbGF0 aW9uX2ZpbGVwYXRoKCd0bXAyJyksICcoXGQrKScsICdOTk4nLCAnZycpOworU0VMRUNUIGMucmVs dGFibGVzcGFjZSBBUyBnbG9iYWxfdGFibGVzcGFjZSwKKyAgICAgICB0LnJlbHRhYmxlc3BhY2Ug QVMgbG9jYWxfdGFibGVzcGFjZSwKKyAgICAgICByZWdleHBfcmVwbGFjZShwZ19yZWxhdGlvbl9m aWxlcGF0aCgndG1wMicpLCAnKFxkKyknLCAnTk5OJywgJ2cnKQorICBGUk9NIHBnX2NsYXNzIGMK KyAgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5y ZWxuYW1lID0gJ3RtcDInOwogQUxURVIgVEFCTEUgdG1wMiBTRVQgVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlOwogU0VMRUNUICogRlJPTSB0bXAyOwotU0VMRUNUIHJlZ2V4cF9yZXBsYWNlKHBn X3JlbGF0aW9uX2ZpbGVwYXRoKCd0bXAyJyksICcoXGQrKScsICdOTk4nLCAnZycpOworU0VMRUNU IHMxLnNwY25hbWUgQVMgZ2xvYmFsX3RhYmxlc3BhY2UsIHMyLnNwY25hbWUgQVMgbG9jYWxfdGFi bGVzcGFjZSwKKyAgICAgICByZWdleHBfcmVwbGFjZShwZ19yZWxhdGlvbl9maWxlcGF0aCgndG1w MicpLCAnKFxkKyknLCAnTk5OJywgJ2cnKQorICBGUk9NIHBnX2NsYXNzIGMKKyAgSk9JTiBwZ190 YWJsZXNwYWNlIHMxIE9OIHMxLm9pZCA9IGMucmVsdGFibGVzcGFjZQorICBMRUZUIEpPSU4gcGdf dGVtcF9jbGFzcyB0IE9OIHQub2lkID0gYy5vaWQKKyAgSk9JTiBwZ190YWJsZXNwYWNlIHMyIE9O IHMyLm9pZCA9IHQucmVsdGFibGVzcGFjZQorIFdIRVJFIGMucmVsbmFtZSA9ICd0bXAyJzsKIERS T1AgVEFCTEUgdG1wMjsKIAogLS0gVGVzdCBkZXBlbmRlbmN5IG9uIHRhYmxlc3BhY2UKQEAgLTE3 OCw4ICsyMDcsODUgQEAgU0VMRUNUICogRlJPTSB0bXAxOwogVFJVTkNBVEUgdG1wMTsKIFNFTEVD VCAqIEZST00gdG1wMTsKIAotLS0gVGVzdCB2aWV3IGNyZWF0aW9uCistLSBUZXN0IENMVVNURVIg LS0gcmVsZmlsZW5vZGUgb25seSBjaGFuZ2VzIGxvY2FsbHkKK1NFTEVDVCBjLnJlbGZpbGVub2Rl IEFTIGdsb2JhbF9yZWxmaWxlbm9kZSwgdC5yZWxmaWxlbm9kZSBBUyBsb2NhbF9yZWxmaWxlbm9k ZQorICBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9 IGMub2lkCisgV0hFUkUgYy5yZWxuYW1lID0gJ3RtcDEnIFxnc2V0CitDTFVTVEVSIHRtcDEgVVNJ TkcgdG1wMV9wa2V5OworU0VMRUNUIENBU0UgV0hFTiBjLnJlbGZpbGVub2RlID0gOmdsb2JhbF9y ZWxmaWxlbm9kZSBUSEVOICd1bmNoYW5nZWQnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBnbG9iYWxf cmVsZmlsZW5vZGUsCisgICAgICAgQ0FTRSBXSEVOIHQucmVsZmlsZW5vZGUgPSA6bG9jYWxfcmVs ZmlsZW5vZGUgVEhFTiAndW5jaGFuZ2UnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBsb2NhbF9yZWxm aWxlbm9kZQorICBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0 Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5yZWxuYW1lID0gJ3RtcDEnOworCistLSBDTFVTVEVSIG5v dCBhbGxvd2VkIG9uIHBnX3RlbXBfY2xhc3MKK0NMVVNURVIgcGdfdGVtcF9jbGFzczsgLS0gZmFp bAorCistLSBUZXN0IFJFUEFDSyAtLSByZWxmaWxlbm9kZSBvbmx5IGNoYW5nZXMgbG9jYWxseQor U0VMRUNUIGMucmVsZmlsZW5vZGUgQVMgZ2xvYmFsX3JlbGZpbGVub2RlLCB0LnJlbGZpbGVub2Rl IEFTIGxvY2FsX3JlbGZpbGVub2RlCisgIEZST00gcGdfY2xhc3MgYyBMRUZUIEpPSU4gcGdfdGVt cF9jbGFzcyB0IE9OIHQub2lkID0gYy5vaWQKKyBXSEVSRSBjLnJlbG5hbWUgPSAndG1wMScgXGdz ZXQKK1JFUEFDSyB0bXAxOworU0VMRUNUIENBU0UgV0hFTiBjLnJlbGZpbGVub2RlID0gOmdsb2Jh bF9yZWxmaWxlbm9kZSBUSEVOICd1bmNoYW5nZWQnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBnbG9i YWxfcmVsZmlsZW5vZGUsCisgICAgICAgQ0FTRSBXSEVOIHQucmVsZmlsZW5vZGUgPSA6bG9jYWxf cmVsZmlsZW5vZGUgVEhFTiAndW5jaGFuZ2UnIEVMU0UgJ2NoYW5nZWQnIEVORCBBUyBsb2NhbF9y ZWxmaWxlbm9kZQorICBGUk9NIHBnX2NsYXNzIGMgTEVGVCBKT0lOIHBnX3RlbXBfY2xhc3MgdCBP TiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5yZWxuYW1lID0gJ3RtcDEnOworCistLSBSRVBBQ0sg bm90IGFsbG93ZWQgb24gcGdfdGVtcF9jbGFzcworUkVQQUNLIHBnX3RlbXBfY2xhc3M7IC0tIGZh aWwKKworLS0gVGVzdCBWQUNVVU0gRlVMTCAtLSByZWxmaWxlbm9kZSBvbmx5IGNoYW5nZXMgbG9j YWxseQorU0VMRUNUIGMucmVsZmlsZW5vZGUgQVMgZ2xvYmFsX3JlbGZpbGVub2RlLCB0LnJlbGZp bGVub2RlIEFTIGxvY2FsX3JlbGZpbGVub2RlCisgIEZST00gcGdfY2xhc3MgYyBMRUZUIEpPSU4g cGdfdGVtcF9jbGFzcyB0IE9OIHQub2lkID0gYy5vaWQKKyBXSEVSRSBjLnJlbG5hbWUgPSAndG1w MScgXGdzZXQKK1ZBQ1VVTSBGVUxMIHRtcDE7CitTRUxFQ1QgQ0FTRSBXSEVOIGMucmVsZmlsZW5v ZGUgPSA6Z2xvYmFsX3JlbGZpbGVub2RlIFRIRU4gJ3VuY2hhbmdlZCcgRUxTRSAnY2hhbmdlZCcg RU5EIEFTIGdsb2JhbF9yZWxmaWxlbm9kZSwKKyAgICAgICBDQVNFIFdIRU4gdC5yZWxmaWxlbm9k ZSA9IDpsb2NhbF9yZWxmaWxlbm9kZSBUSEVOICd1bmNoYW5nZScgRUxTRSAnY2hhbmdlZCcgRU5E IEFTIGxvY2FsX3JlbGZpbGVub2RlCisgIEZST00gcGdfY2xhc3MgYyBMRUZUIEpPSU4gcGdfdGVt cF9jbGFzcyB0IE9OIHQub2lkID0gYy5vaWQKKyBXSEVSRSBjLnJlbG5hbWUgPSAndG1wMSc7CisK Ky0tIFZBQ1VVTSBGVUxMIG5vdCBhbGxvd2VkIG9uIHBnX3RlbXBfY2xhc3MKK1ZBQ1VVTSBGVUxM IHBnX3RlbXBfY2xhc3M7IC0tIHNpbGVudGx5IGlnbm9yZWQKKworLS0gVGVzdCBwZ19yZWxhdGlv bl9maWxlbm9kZSgpIG5vdyBtYXRjaGVzIGxvY2FsIHJlbGZpbGVub2RlCitTRUxFQ1QgcmVsZmls ZW5vZGUgPSBwZ19yZWxhdGlvbl9maWxlbm9kZSgndG1wMSc6OnJlZ2NsYXNzKSBBUyBvaworICBG Uk9NIHBnX3RlbXBfY2xhc3MgV0hFUkUgb2lkID0gJ3RtcDEnOjpyZWdjbGFzczsKKworLS0gVkFD VVVNIGluaXRpYWxpemVzIHRvYXN0IHRhYmxlcworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2Jh bF90ZW1wX3Rlc3RzOworU0VMRUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyB0IFdI RVJFIHQub2lkID0gYy5yZWx0b2FzdHJlbGlkKSwKKyAgICAgICBFWElTVFMgKFNFTEVDVCAxIEZS T00gcGdfdGVtcF9jbGFzcyB0IFdIRVJFIHQub2lkID0gYy5yZWx0b2FzdHJlbGlkKQorRlJPTSBw Z19jbGFzcyBjCitXSEVSRSBvaWQgPSAndG1wMSc6OnJlZ2NsYXNzOworCitWQUNVVU0gdG1wMTsK K1NFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgdCBXSEVSRSB0Lm9pZCA9IGMu cmVsdG9hc3RyZWxpZCksCisgICAgICAgRVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3RlbXBfY2xh c3MgdCBXSEVSRSB0Lm9pZCA9IGMucmVsdG9hc3RyZWxpZCkKK0ZST00gcGdfY2xhc3MgYworV0hF UkUgb2lkID0gJ3RtcDEnOjpyZWdjbGFzczsKKworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2Jh bF90ZW1wX3Rlc3RzOworVkFDVVVNIEZVTEwgdG1wMTsKK1NFTEVDVCBFWElTVFMgKFNFTEVDVCAx IEZST00gcGdfY2xhc3MgdCBXSEVSRSB0Lm9pZCA9IGMucmVsdG9hc3RyZWxpZCksCisgICAgICAg RVhJU1RTIChTRUxFQ1QgMSBGUk9NIHBnX3RlbXBfY2xhc3MgdCBXSEVSRSB0Lm9pZCA9IGMucmVs dG9hc3RyZWxpZCkKK0ZST00gcGdfY2xhc3MgYworV0hFUkUgb2lkID0gJ3RtcDEnOjpyZWdjbGFz czsKKworLS0gVGVzdCBzdWJ0cmFuc2FjdGlvbiByb2xsYmFjayBvZiBwZW5kaW5nIHBnX3RlbXBf Y2xhc3MgaW5zZXJ0cworXGMKK1NFVCBzZWFyY2hfcGF0aCA9IGdsb2JhbF90ZW1wX3Rlc3RzOwor QkVHSU47CitTRUxFQ1QgY291bnQoKikgRlJPTSB0bXAxOworU0FWRVBPSU5UIHNwOworRFJPUCBU QUJMRSB0bXAxOworUk9MTEJBQ0sgVE8gc3A7CiBJTlNFUlQgSU5UTyB0bXAxIFZBTFVFUyAoMSwg J3h4eCcpOworQ09NTUlUOworU0VMRUNUIG9pZDo6cmVnY2xhc3MgRlJPTSBwZ190ZW1wX2NsYXNz IE9SREVSIEJZIDE7CitTRUxFQ1QgKiBGUk9NIHRtcDE7CisKKy0tIFRlc3QgdmlldyBjcmVhdGlv bgogQ1JFQVRFIFZJRVcgdiBBUyBTRUxFQ1QgKiBGUk9NIHRtcDE7CiBTRUxFQ1QgKiBGUk9NIHY7 CiBEUk9QIFZJRVcgdjsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZGRmOTgyN2VlMjUu LjZiMzgxNTVhNDhhIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtOTU2LDYgKzk1Niw3 IEBAIEZvcm1EYXRhX3BnX3N0YXRpc3RpY19leHRfZGF0YQogRm9ybURhdGFfcGdfc3Vic2NyaXB0 aW9uCiBGb3JtRGF0YV9wZ19zdWJzY3JpcHRpb25fcmVsCiBGb3JtRGF0YV9wZ190YWJsZXNwYWNl CitGb3JtRGF0YV9wZ190ZW1wX2NsYXNzCiBGb3JtRGF0YV9wZ190cmFuc2Zvcm0KIEZvcm1EYXRh X3BnX3RyaWdnZXIKIEZvcm1EYXRhX3BnX3RzX2NvbmZpZwpAQCAtMTAyMSw2ICsxMDIyLDcgQEAg Rm9ybV9wZ19zdGF0aXN0aWNfZXh0X2RhdGEKIEZvcm1fcGdfc3Vic2NyaXB0aW9uCiBGb3JtX3Bn X3N1YnNjcmlwdGlvbl9yZWwKIEZvcm1fcGdfdGFibGVzcGFjZQorRm9ybV9wZ190ZW1wX2NsYXNz CiBGb3JtX3BnX3RyYW5zZm9ybQogRm9ybV9wZ190cmlnZ2VyCiBGb3JtX3BnX3RzX2NvbmZpZwpA QCAtMjI1NSw2ICsyMjU3LDcgQEAgUGF0dGVybkluZm9BcnJheQogUGF0dGVybl9QcmVmaXhfU3Rh dHVzCiBQYXR0ZXJuX1R5cGUKIFBlbmRpbmdGc3luY0VudHJ5CitQZW5kaW5nSW5zZXJ0CiBQZW5k aW5nTGlzdGVuQWN0aW9uCiBQZW5kaW5nTGlzdGVuRW50cnkKIFBlbmRpbmdSZWxEZWxldGUKLS0g CjIuNTEuMAoK --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0006-Add-relation-statistics-columns-to-pg_temp_class.patch" Content-Disposition: attachment; filename="v7-0006-Add-relation-statistics-columns-to-pg_temp_class.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr915wqr5 RnJvbSBjYzUwMGIxMTA3OGM1ZjIyNDY2YWFmNmFmOWFjMDI5ZjNmOTY0NTAzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAxNyBKdW4gMjAyNiAwMjowNDo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMDYvMTBdIEFkZCByZWxhdGlvbiBzdGF0aXN0aWNzIGNvbHVtbnMgdG8gcGdfdGVtcF9jbGFz cy4KClRoaXMgYWRkcyByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlLCBhbmQgcmVs YWxsZnJvemVuIGNvbHVtbnMKdG8gcGdfdGVtcF9jbGFzcywgYW5kIHVwZGF0ZXMgQU5BTFlaRSwg Q1JFQVRFIElOREVYLCBSRVBBQ0ssIFZBQ1VVTSwKYW5kIHBnX2NsZWFyL3Jlc3RvcmVfcmVsYXRp b25fc3RhdHMoKSB0byBhcHBseSBzdGF0aXN0aWNzIHVwZGF0ZXMgdG8KcGdfdGVtcF9jbGFzcyBp bnN0ZWFkIG9mIHBnX2NsYXNzIGZvciBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucy4gRWFjaApz ZXNzaW9uIGlzIHRoZW4gYWJsZSB0byB1c2UgaXRzIG93biBsb2NhbCBzdGF0aXN0aWNzIHdoZW4g cGxhbm5pbmcKcXVlcmllcy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jICAgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAg ICB8ICA0MSArKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgICAgICAgICAg ICB8IDEzNyArKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3RlbXBfY2xh c3MuYyAgICAgICAgIHwgIDg0ICsrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFj ay5jICAgICAgICAgICAgICAgfCAgNjEgKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMgICAgICAgICAgICAgICB8ICA4OSArKysrKysrLS0tLQogc3JjL2JhY2tlbmQvc3RhdGlz dGljcy9yZWxhdGlvbl9zdGF0cy5jICAgICB8ICA4MiArKysrKystLS0tCiBzcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jICAgICAgICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3RlbXBfY2xhc3MuaCAgICAgICAgIHwgMTY2ICsrKysrKysrKysrKysrKysrKysrCiBzcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0 L2lzb2xhdGlvbi9leHBlY3RlZC9nbG9iYWwtdGVtcC5vdXQgfCAgMzIgKysrKwogc3JjL3Rlc3Qv aXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10ZW1wLnNwZWMgICB8ICAgNyArCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dCAgIHwgMTM2ICsrKysrKysrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbCAgICAgICAgfCAgODIgKysrKysrKysr KwogMTYgZmlsZXMgY2hhbmdlZCwgODAyIGluc2VydGlvbnMoKyksIDE0MiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGFiZmQ4ZTg5NzBhLi5kMjU4ODc3OWNiOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MveGxvZ2luc2VydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlX2QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Rl bXBfY2xhc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJleGVj dXRvci9pbnN0cnVtZW50X25vZGUuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTQyMDYsNiAr NDIwNyw5IEBAIGNoZWNrX2xvY2tfaWZfaW5wbGFjZV91cGRhdGVhYmxlX3JlbChSZWxhdGlvbiBy ZWxhdGlvbiwKIAkJCQkJcmV0dXJuOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVGVtcFJlbGF0 aW9uUmVsYXRpb25JZDoKKwkJCS8qIE5vIGxvY2sgcmVxdWlyZWQgLS0gdGVtcCB0YWJsZXMgYXJl IG9ubHkgYWNjZXNzaWJsZSBieSB1cyAqLworCQkJcmV0dXJuOwogCQlkZWZhdWx0OgogCQkJQXNz ZXJ0KCFJc0lucGxhY2VVcGRhdGVSZWxhdGlvbihyZWxhdGlvbikpOwogCQkJcmV0dXJuOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9jYXRhbG9nLmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2NhdGFsb2cuYwppbmRleCA2NWQ3ODY2ODVmMi4uYjA0MTViZTJlNGYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvY2F0YWxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv Y2F0YWxvZy5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zaHNlY2xh YmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfY2xhc3Mu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgpAQCAtMTk1LDYgKzE5Niw3IEBAIGJvb2wKIElz SW5wbGFjZVVwZGF0ZU9pZChPaWQgcmVsaWQpCiB7CiAJcmV0dXJuIChyZWxpZCA9PSBSZWxhdGlv blJlbGF0aW9uSWQgfHwKKwkJCXJlbGlkID09IFRlbXBSZWxhdGlvblJlbGF0aW9uSWQgfHwKIAkJ CXJlbGlkID09IERhdGFiYXNlUmVsYXRpb25JZCk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggMDEy ZGU0MzQzMjEuLmZkZDA2ZWNjODc3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hl YXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMzU3NywxMCArMzU3Nywx MCBAQCBSZW1vdmVTdGF0aXN0aWNzKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pCiAgKiB3 aXRoIHRoZSBoZWFwIHJlbGF0aW9uIHRvIHplcm8gdHVwbGVzLgogICoKICAqIFRoZSByb3V0aW5l IHdpbGwgdHJ1bmNhdGUgYW5kIHRoZW4gcmVjb25zdHJ1Y3QgdGhlIGluZGV4ZXMgb24KLSAqIHRo ZSBzcGVjaWZpZWQgcmVsYXRpb24uICBDYWxsZXIgbXVzdCBob2xkIGV4Y2x1c2l2ZSBsb2NrIG9u IHJlbC4KKyAqIHRoZSBzcGVjaWZpZWQgcmVsYXRpb24uICBDYWxsZXIgbXVzdCBob2xkIHRoZSBz cGVjaWZpZWQgbG9jayBvbiByZWwuCiAgKi8KIHN0YXRpYyB2b2lkCi1SZWxhdGlvblRydW5jYXRl SW5kZXhlcyhSZWxhdGlvbiBoZWFwUmVsYXRpb24pCitSZWxhdGlvblRydW5jYXRlSW5kZXhlcyhS ZWxhdGlvbiBoZWFwUmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKQogewogCUxpc3RDZWxsICAg KmluZGxpc3Q7CiAKQEAgLTM1OTEsOCArMzU5MSw4IEBAIFJlbGF0aW9uVHJ1bmNhdGVJbmRleGVz KFJlbGF0aW9uIGhlYXBSZWxhdGlvbikKIAkJUmVsYXRpb24JY3VycmVudEluZGV4OwogCQlJbmRl eEluZm8gICppbmRleEluZm87CiAKLQkJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb247IHVzZSBl eGNsdXNpdmUgbG9jaywganVzdCB0byBiZSBzdXJlICovCi0JCWN1cnJlbnRJbmRleCA9IGluZGV4 X29wZW4oaW5kZXhJZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCS8qIE9wZW4gdGhlIGluZGV4 IHJlbGF0aW9uOyB1c2Ugc2FtZSBsb2NrIGFzIGhlYXAgcmVsYXRpb24gKi8KKwkJY3VycmVudElu ZGV4ID0gaW5kZXhfb3BlbihpbmRleElkLCBsb2NrbW9kZSk7CiAKIAkJLyoKIAkJICogRmV0Y2gg aW5mbyBuZWVkZWQgZm9yIGluZGV4X2J1aWxkLiAgU2luY2Ugd2Uga25vdyB0aGVyZSBhcmUgbm8K QEAgLTM2MzQsMTMgKzM2MzQsMjMgQEAgaGVhcF90cnVuY2F0ZShMaXN0ICpyZWxpZHMpCiAJTGlz dAkgICAqcmVsYXRpb25zID0gTklMOwogCUxpc3RDZWxsICAgKmNlbGw7CiAKLQkvKiBPcGVuIHJl bGF0aW9ucyBmb3IgcHJvY2Vzc2luZywgYW5kIGdyYWIgZXhjbHVzaXZlIGFjY2VzcyBvbiBlYWNo ICovCisJLyoKKwkgKiBPcGVuIHJlbGF0aW9ucyBmb3IgcHJvY2Vzc2luZy4gIEZvciBtb3N0IHJl bGF0aW9ucywgd2UgbXVzdCB1c2UKKwkgKiBBY2Nlc3NFeGNsdXNpdmVMb2NrIHRvIHByZXZlbnQg c2NoZW1hIGFuZCBkYXRhIGNoYW5nZXMuICBIb3dldmVyLCBmb3IKKwkgKiBnbG9iYWwgdGVtcG9y YXJ5IHJlbGF0aW9ucywgd2UgbXVzdCB1c2UgUm93RXhjbHVzaXZlTG9jaywgYmVjYXVzZSB0d28K KwkgKiBiYWNrZW5kcyB0cnlpbmcgdG8gdXBncmFkZSB0byBhbiBleGNsdXNpdmUgbG9jayBvbiB0 aGUgc2FtZSByZWxhdGlvbgorCSAqIGhlcmUgd291bGQgZGVhZGxvY2suICBUaGlzIGlzIHN1ZmZp Y2VudCwgYmVjYXVzZSB0aGUgcmVsYXRpb24ncyBkYXRhIGlzCisJICogc2Vzc2lvbi1sb2NhbC4K KwkgKi8KIAlmb3JlYWNoKGNlbGwsIHJlbGlkcykKIAl7CiAJCU9pZAkJCXJpZCA9IGxmaXJzdF9v aWQoY2VsbCk7CisJCUxPQ0tNT0RFCWxvY2ttb2RlOwogCQlSZWxhdGlvbglyZWw7CiAKLQkJcmVs ID0gdGFibGVfb3BlbihyaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQlsb2NrbW9kZSA9IHJl bF9pc19nbG9iYWxfdGVtcChyaWQpID8gUm93RXhjbHVzaXZlTG9jayA6IEFjY2Vzc0V4Y2x1c2l2 ZUxvY2s7CisKKwkJcmVsID0gdGFibGVfb3BlbihyaWQsIGxvY2ttb2RlKTsKIAkJcmVsYXRpb25z ID0gbGFwcGVuZChyZWxhdGlvbnMsIHJlbCk7CiAJfQogCkBAIC0zNjU1LDcgKzM2NjUsNyBAQCBo ZWFwX3RydW5jYXRlKExpc3QgKnJlbGlkcykKIAkJLyogVHJ1bmNhdGUgdGhlIHJlbGF0aW9uICov CiAJCWhlYXBfdHJ1bmNhdGVfb25lX3JlbChyZWwpOwogCi0JCS8qIENsb3NlIHRoZSByZWxhdGlv biwgYnV0IGtlZXAgZXhjbHVzaXZlIGxvY2sgb24gaXQgdW50aWwgY29tbWl0ICovCisJCS8qIENs b3NlIHRoZSByZWxhdGlvbiwgYnV0IGtlZXAgbG9jayBvbiBpdCB1bnRpbCBjb21taXQgKi8KIAkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KQEAgLTM2NjcsMTMgKzM2NzcsMjIgQEAg aGVhcF90cnVuY2F0ZShMaXN0ICpyZWxpZHMpCiAgKgogICogVGhpcyBpcyBub3QgdHJhbnNhY3Rp b24tc2FmZSwgYmVjYXVzZSB0aGUgdHJ1bmNhdGlvbiBpcyBkb25lIGltbWVkaWF0ZWx5CiAgKiBh bmQgY2Fubm90IGJlIHJvbGxlZCBiYWNrIGxhdGVyLiAgQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZv ciBoYXZpbmcKLSAqIGNoZWNrZWQgcGVybWlzc2lvbnMgZXRjLCBhbmQgbXVzdCBoYXZlIG9idGFp bmVkIEFjY2Vzc0V4Y2x1c2l2ZUxvY2suCisgKiBjaGVja2VkIHBlcm1pc3Npb25zIGV0YywgYW5k IG11c3QgaGF2ZSBvYnRhaW5lZCB0aGUgcmVxdWlyZWQgbG9jaywgd2hpY2ggaXMKKyAqIHR5cGlj YWxseSBBY2Nlc3NFeGNsdXNpdmVMb2NrLCBleGNlcHQgaWYgaXQncyBhIGdsb2JhbCB0ZW1wb3Jh cnkgcmVsYXRpb24sCisgKiBpbiB3aGljaCBjYXNlIFJvd0V4Y2x1c2l2ZUxvY2sgaXMgc3VmZmlj aWVudC4KICAqLwogdm9pZAogaGVhcF90cnVuY2F0ZV9vbmVfcmVsKFJlbGF0aW9uIHJlbCkKIHsK KwlMT0NLTU9ERQlsb2NrbW9kZTsKIAlPaWQJCQl0b2FzdHJlbGlkOwogCisJLyoKKwkgKiBGb3Ig YSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrIGlzIHN1ZmZpY2ll bnQuCisJICogT3RoZXJ3aXNlIG11c3QgdXNlIEFjY2Vzc0V4Y2x1c2l2ZUxvY2suCisJICovCisJ bG9ja21vZGUgPSBSRUxBVElPTl9JU19HTE9CQUxfVEVNUChyZWwpID8gUm93RXhjbHVzaXZlTG9j ayA6IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisKIAkvKgogCSAqIFRydW5jYXRlIHRoZSByZWxhdGlv bi4gIFBhcnRpdGlvbmVkIHRhYmxlcyBoYXZlIG5vIHN0b3JhZ2UsIHNvIHRoZXJlIGlzCiAJICog bm90aGluZyB0byBkbyBmb3IgdGhlbSBoZXJlLgpAQCAtMzY4NSwxNiArMzcwNCwxNiBAQCBoZWFw X3RydW5jYXRlX29uZV9yZWwoUmVsYXRpb24gcmVsKQogCXRhYmxlX3JlbGF0aW9uX25vbnRyYW5z YWN0aW9uYWxfdHJ1bmNhdGUocmVsKTsKIAogCS8qIElmIHRoZSByZWxhdGlvbiBoYXMgaW5kZXhl cywgdHJ1bmNhdGUgdGhlIGluZGV4ZXMgdG9vICovCi0JUmVsYXRpb25UcnVuY2F0ZUluZGV4ZXMo cmVsKTsKKwlSZWxhdGlvblRydW5jYXRlSW5kZXhlcyhyZWwsIGxvY2ttb2RlKTsKIAogCS8qIElm IHRoZXJlIGlzIGEgdG9hc3QgdGFibGUsIHRydW5jYXRlIHRoYXQgdG9vICovCiAJdG9hc3RyZWxp ZCA9IHJlbC0+cmRfcmVsLT5yZWx0b2FzdHJlbGlkOwogCWlmIChPaWRJc1ZhbGlkKHRvYXN0cmVs aWQpKQogCXsKLQkJUmVsYXRpb24JdG9hc3RyZWwgPSB0YWJsZV9vcGVuKHRvYXN0cmVsaWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCQlSZWxhdGlvbgl0b2FzdHJlbCA9IHRhYmxlX29wZW4odG9h c3RyZWxpZCwgbG9ja21vZGUpOwogCiAJCXRhYmxlX3JlbGF0aW9uX25vbnRyYW5zYWN0aW9uYWxf dHJ1bmNhdGUodG9hc3RyZWwpOwotCQlSZWxhdGlvblRydW5jYXRlSW5kZXhlcyh0b2FzdHJlbCk7 CisJCVJlbGF0aW9uVHJ1bmNhdGVJbmRleGVzKHRvYXN0cmVsLCBsb2NrbW9kZSk7CiAJCS8qIGtl ZXAgdGhlIGxvY2suLi4gKi8KIAkJdGFibGVfY2xvc2UodG9hc3RyZWwsIE5vTG9jayk7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IGYwMmQ1MTcwNGI0Li45NDNkZThhNGZkYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwpAQCAtMTIzLDYgKzEyMyw3IEBAIHN0YXRpYyB2b2lkIFVwZGF0ZUluZGV4UmVsYXRpb24o T2lkIGluZGV4b2lkLCBPaWQgaGVhcG9pZCwKIAkJCQkJCQkJYm9vbCBpc3ZhbGlkLAogCQkJCQkJ CQlib29sIGlzcmVhZHkpOwogc3RhdGljIHZvaWQgaW5kZXhfdXBkYXRlX3N0YXRzKFJlbGF0aW9u IHJlbCwKKwkJCQkJCQkgICBib29sIGlzcmVpbmRleCwKIAkJCQkJCQkgICBib29sIGhhc2luZGV4 LAogCQkJCQkJCSAgIGRvdWJsZSByZWx0dXBsZXMpOwogc3RhdGljIHZvaWQgSW5kZXhDaGVja0V4 Y2x1c2lvbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCkBAIC0xMjc1LDYgKzEyNzYsNyBAQCBpbmRl eF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkgKiBoYXZpbmcgYW4gaW5kZXguCiAJ CSAqLwogCQlpbmRleF91cGRhdGVfc3RhdHMoaGVhcFJlbGF0aW9uLAorCQkJCQkJICAgZmFsc2Us CiAJCQkJCQkgICB0cnVlLAogCQkJCQkJICAgLTEuMCk7CiAJCS8qIE1ha2UgdGhlIGFib3ZlIHVw ZGF0ZSB2aXNpYmxlICovCkBAIC0yODA2LDI4ICsyODA4LDM3IEBAIEZvcm1JbmRleERhdHVtKElu ZGV4SW5mbyAqaW5kZXhJbmZvLAogCiAKIC8qCi0gKiBpbmRleF91cGRhdGVfc3RhdHMgLS0tIHVw ZGF0ZSBwZ19jbGFzcyBlbnRyeSBhZnRlciBDUkVBVEUgSU5ERVggb3IgUkVJTkRFWAorICogaW5k ZXhfdXBkYXRlX3N0YXRzIC0tLSB1cGRhdGUgZWZmZWN0aXZlIHBnX2NsYXNzIGVudHJ5IGFmdGVy IENSRUFURSBJTkRFWAorICogb3IgUkVJTkRFWAogICoKLSAqIFRoaXMgcm91dGluZSB1cGRhdGVz IHRoZSBwZ19jbGFzcyByb3cgb2YgZWl0aGVyIGFuIGluZGV4IG9yIGl0cyBwYXJlbnQKLSAqIHJl bGF0aW9uIGFmdGVyIENSRUFURSBJTkRFWCBvciBSRUlOREVYLiAgSXRzIHJhdGhlciBiaXphcnJl IEFQSSBpcyBkZXNpZ25lZAotICogdG8gZW5zdXJlIHdlIGNhbiBkbyBhbGwgdGhlIG5lY2Vzc2Fy eSB3b3JrIGluIGp1c3Qgb25lIHVwZGF0ZS4KKyAqIFRoaXMgcm91dGluZSB1cGRhdGVzIHRoZSBl ZmZlY3RpdmUgcGdfY2xhc3Mgcm93IG9mIGVpdGhlciBhbiBpbmRleCBvciBpdHMKKyAqIHBhcmVu dCByZWxhdGlvbiBhZnRlciBDUkVBVEUgSU5ERVggb3IgUkVJTkRFWC4gIEl0cyByYXRoZXIgYml6 YXJyZSBBUEkgaXMKKyAqIGRlc2lnbmVkIHRvIGVuc3VyZSB3ZSBjYW4gZG8gYWxsIHRoZSBuZWNl c3Nhcnkgd29yayBpbiBqdXN0IG9uZSB1cGRhdGUKKyAqIChleGNlcHQgZm9yIGEgZ2xvYmFsIHRl bXBvcmFyeSByZWxhdGlvbiwgd2hpY2ggcmVxdWlyZXMgYm90aCBwZ19jbGFzcyBhbmQKKyAqIHBn X3RlbXBfY2xhc3MgdG8gYmUgdXBkYXRlZCkuCiAgKgorICogaXNyZWluZGV4OiByZWNyZWF0ZWQg YSBwcmV2aW91c2x5LWV4aXN0aW5nIGluZGV4OyBkb24ndCBzZXQgcmVsaGFzaW5kZXgKICAqIGhh c2luZGV4OiBzZXQgcmVsaGFzaW5kZXggdG8gdGhpcyB2YWx1ZQogICogcmVsdHVwbGVzOiBpZiA+ PSAwLCBzZXQgcmVsdHVwbGVzIHRvIHRoaXMgdmFsdWU7IGVsc2Ugbm8gY2hhbmdlCiAgKgogICog SWYgcmVsdHVwbGVzID49IDAsIHJlbHBhZ2VzLCByZWxhbGx2aXNpYmxlLCBhbmQgcmVsYWxsZnJv emVuIGFyZSBhbHNvCiAgKiB1cGRhdGVkICh1c2luZyBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tz KCkgYW5kIHZpc2liaWxpdHltYXBfY291bnQoKSkuCiAgKgorICogRm9yIGEgZ2xvYmFsIHRlbXBv cmFyeSByZWxhdGlvbiwgcmVsaGFzaW5kZXggaXMgc2V0IGluIHBnX2NsYXNzIGFuZCBhbGwgdGhl CisgKiBvdGhlciBmaWVsZHMgYXJlIHNldCBpbiBwZ190ZW1wX2NsYXNzLiAgRm9yIGFueSBvdGhl ciB0eXBlIG9mIHJlbGF0aW9uLCBhbGwKKyAqIHRoZSBmaWVsZHMgYXJlIHNldCBpbiBwZ19jbGFz cy4KKyAqCiAgKiBOT1RFOiBhbiBpbXBvcnRhbnQgc2lkZS1lZmZlY3Qgb2YgdGhpcyBvcGVyYXRp b24gaXMgdGhhdCBhbiBTSSBpbnZhbGlkYXRpb24KICAqIG1lc3NhZ2UgaXMgc2VudCBvdXQgdG8g YWxsIGJhY2tlbmRzIC0tLSBpbmNsdWRpbmcgbWUgLS0tIGNhdXNpbmcgcmVsY2FjaGUKICAqIGVu dHJpZXMgdG8gYmUgZmx1c2hlZCBvciB1cGRhdGVkIHdpdGggdGhlIG5ldyBkYXRhLiAgVGhpcyBt dXN0IGhhcHBlbiBldmVuCi0gKiBpZiB3ZSBmaW5kIHRoYXQgbm8gY2hhbmdlIGlzIG5lZWRlZCBp biB0aGUgcGdfY2xhc3Mgcm93LiAgV2hlbiB1cGRhdGluZwotICogYSBoZWFwIGVudHJ5LCB0aGlz IGVuc3VyZXMgdGhhdCBvdGhlciBiYWNrZW5kcyBmaW5kIG91dCBhYm91dCB0aGUgbmV3Ci0gKiBp bmRleC4gIFdoZW4gdXBkYXRpbmcgYW4gaW5kZXgsIGl0J3MgaW1wb3J0YW50IGJlY2F1c2Ugc29t ZSBpbmRleCBBTXMKLSAqIGV4cGVjdCBhIHJlbGNhY2hlIGZsdXNoIHRvIG9jY3VyIGFmdGVyIFJF SU5ERVguCisgKiBpZiB3ZSBmaW5kIHRoYXQgbm8gY2hhbmdlIGlzIG5lZWRlZCBpbiB0aGUgcGdf Y2xhc3Mgb3IgcGdfdGVtcF9jbGFzcyByb3dzLgorICogV2hlbiB1cGRhdGluZyBhIGhlYXAgZW50 cnksIHRoaXMgZW5zdXJlcyB0aGF0IG90aGVyIGJhY2tlbmRzIGZpbmQgb3V0IGFib3V0CisgKiB0 aGUgbmV3IGluZGV4LiAgV2hlbiB1cGRhdGluZyBhbiBpbmRleCwgaXQncyBpbXBvcnRhbnQgYmVj YXVzZSBzb21lIGluZGV4CisgKiBBTXMgZXhwZWN0IGEgcmVsY2FjaGUgZmx1c2ggdG8gb2NjdXIg YWZ0ZXIgUkVJTkRFWC4KICAqLwogc3RhdGljIHZvaWQKIGluZGV4X3VwZGF0ZV9zdGF0cyhSZWxh dGlvbiByZWwsCisJCQkJICAgYm9vbCBpc3JlaW5kZXgsCiAJCQkJICAgYm9vbCBoYXNpbmRleCwK IAkJCQkgICBkb3VibGUgcmVsdHVwbGVzKQogewpAQCAtMjgzOSw5ICsyODUwLDEyIEBAIGluZGV4 X3VwZGF0ZV9zdGF0cyhSZWxhdGlvbiByZWwsCiAJUmVsYXRpb24JcGdfY2xhc3M7CiAJU2Nhbktl eURhdGEga2V5WzFdOwogCUhlYXBUdXBsZQl0dXBsZTsKKwlIZWFwVHVwbGUJdGVtcF90dXBsZTsK IAl2b2lkCSAgICpzdGF0ZTsKIAlGb3JtX3BnX2NsYXNzIHJkX3JlbDsKKwlGb3JtX3BnX3RlbXBf Y2xhc3MgdGVtcF9yZF9yZWw7CiAJYm9vbAkJZGlydHk7CisJYm9vbAkJdGVtcF9kaXJ0eTsKIAog CS8qCiAJICogQXMgYSBzcGVjaWFsIGhhY2ssIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYW4gZW1w dHkgdGFibGUgYW5kIHRoZQpAQCAtMjkyNCwxNiArMjkzOCw1NiBAQCBpbmRleF91cGRhdGVfc3Rh dHMoUmVsYXRpb24gcmVsLAogCSAqIHJlbGFsbHZpc2libGUpIGlmIHRoZSBjYWxsZXIgaXNuJ3Qg cHJvdmlkaW5nIGFuIHVwZGF0ZWQgcmVsdHVwbGVzCiAJICogY291bnQsIGJlY2F1c2UgdGhhdCB3 b3VsZCBib2xsaXggdGhlIHJlbHR1cGxlcy9yZWxwYWdlcyByYXRpbyB3aGljaCBpcwogCSAqIHdo YXQncyByZWFsbHkgaW1wb3J0YW50LgorCSAqCisJICogSWYgbm90IGZvciAoMSkgYWJvdmUsIHBn X3RlbXBfY2xhc3MgY291bGQgYmUgdXBkYXRlZCBub3JtYWxseSwgYW5kIGluCisJICogZmFjdCB3 ZSBjb3VsZCB3b3JrIHJvdW5kICgxKSBieSBzaW1wbHkgbm90IHVwZGF0aW5nIHBnX3RlbXBfY2xh c3MgaW4KKwkgKiBib290c3RyYXAgbW9kZSwgc2luY2UgaXRzIHZhbHVlIGp1c3QgZ2V0cyB0aHJv d24gYXdheSB3aGVuIGluaXRkYgorCSAqIGZpbmlzaGVzLiAgSG93ZXZlciwgZm9yIGNvbnNpc3Rl bmN5LCB3ZSB1cGRhdGUgaXQgaW4tcGxhY2UsIGxpa2UKKwkgKiBwZ19jbGFzcyAtLS0gc2VlIGFs c28gdmFjX3VwZGF0ZV9yZWxzdGF0cygpLgogCSAqLwogCi0JcGdfY2xhc3MgPSB0YWJsZV9vcGVu KFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJLyoKKwkgKiBGb3IgYSBn bG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uLCBuZWVkIGEgd3JpdGFibGUgY29weSBvZiBpdHMKKwkg KiBwZ190ZW1wX2NsYXNzIHR1cGxlLiAgTm90ZTogY2FuJ3QgdXNlIHN5c3RhYmxlX2lucGxhY2Vf dXBkYXRlX2JlZ2luKCkKKwkgKiBoZXJlIGJlY2F1c2UgdGhlIHR1cGxlIG1pZ2h0IGJlIGEgcGVu ZGluZyBpbnNlcnQgLS0tIHNlZSBoZWFkZXIKKwkgKiBjb21tZW50cyBpbiBwZ190ZW1wX2NsYXNz LmMuCisJICovCisJaWYgKFJFTEFUSU9OX0lTX0dMT0JBTF9URU1QKHJlbCkpCisJeworCQl0ZW1w X3R1cGxlID0gR2V0UGdUZW1wQ2xhc3NUdXBsZShyZWxpZCk7CisJCWlmICghSGVhcFR1cGxlSXNW YWxpZCh0ZW1wX3R1cGxlKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBnbG9iYWwgdGVtcCByZWxhdGlvbiAldSIsIHJlbGlkKTsKKwkJdGVtcF9yZF9yZWwgPSAoRm9y bV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QodGVtcF90dXBsZSk7CisJfQorCWVsc2UKKwl7CisJ CXRlbXBfdHVwbGUgPSBOVUxMOworCQl0ZW1wX3JkX3JlbCA9IE5VTEw7CisJfQogCi0JU2Nhbktl eUluaXQoJmtleVswXSwKLQkJCQlBbnVtX3BnX2NsYXNzX29pZCwKLQkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfT0lERVEsCi0JCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOwotCXN5c3Rh YmxlX2lucGxhY2VfdXBkYXRlX2JlZ2luKHBnX2NsYXNzLCBDbGFzc09pZEluZGV4SWQsIHRydWUs IE5VTEwsCi0JCQkJCQkJCSAgMSwga2V5LCAmdHVwbGUsICZzdGF0ZSk7CisJLyoKKwkgKiBJZiB0 aGlzIGlzIGEgcmVpbmRleCBvbiBhIGdsb2JhbCB0ZW1wb3JhcnkgdGFibGUsIHdlIGRvbid0IG5l ZWQgdG8gc2V0CisJICogcGdfY2xhc3MucmVsaGFzaW5kZXgsIGFuZCBhbGwgb3RoZXIgZmllbGRz IGdvIGluIHBnX3RlbXBfY2xhc3MsIHNvIHdlCisJICogb25seSBuZWVkIGEgcmVhZC1vbmx5IGNv cHkgb2YgdGhlIHBnX2NsYXNzIHR1cGxlLiAgT3RoZXJ3aXNlLCB3ZSBuZWVkIGEKKwkgKiB3cml0 YWJsZSBjb3B5IG9mIHRoZSBwZ19jbGFzcyB0dXBsZSB0byBzY3JpYmJsZSBvbi4KKwkgKi8KKwlp ZiAoaXNyZWluZGV4ICYmIFJFTEFUSU9OX0lTX0dMT0JBTF9URU1QKHJlbCkpCisJeworCQlwZ19j bGFzcyA9IE5VTEw7CisJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShSRUxPSUQsIE9iamVj dElkR2V0RGF0dW0ocmVsaWQpKTsKKwkJc3RhdGUgPSBOVUxMOworCX0KKwllbHNlCisJeworCQlw Z19jbGFzcyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKworCQlTY2FuS2V5SW5pdCgma2V5WzBdLAorCQkJCQlBbnVtX3BnX2NsYXNzX29pZCwKKwkJ CQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdldERhdHVt KHJlbGlkKSk7CisJCXN5c3RhYmxlX2lucGxhY2VfdXBkYXRlX2JlZ2luKHBnX2NsYXNzLCBDbGFz c09pZEluZGV4SWQsIHRydWUsIE5VTEwsCisJCQkJCQkJCQkgIDEsIGtleSwgJnR1cGxlLCAmc3Rh dGUpOworCX0KIAogCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCiAJCWVsb2coRVJST1Is ICJjb3VsZCBub3QgZmluZCB0dXBsZSBmb3IgcmVsYXRpb24gJXUiLCByZWxpZCk7CkBAIC0yOTQy LDEwICsyOTk2LDExIEBAIGluZGV4X3VwZGF0ZV9zdGF0cyhSZWxhdGlvbiByZWwsCiAJLyogU2hv dWxkIHRoaXMgYmUgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdD8gKi8KIAlBc3NlcnQocmRfcmVs LT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpOwogCi0JLyogQXBwbHkgcmVx dWlyZWQgdXBkYXRlcywgaWYgYW55LCB0byBjb3BpZWQgdHVwbGUgKi8KKwkvKiBBcHBseSByZXF1 aXJlZCB1cGRhdGVzLCBpZiBhbnksIHRvIGNvcGllZCB0dXBsZShzKSAqLwogCiAJZGlydHkgPSBm YWxzZTsKLQlpZiAocmRfcmVsLT5yZWxoYXNpbmRleCAhPSBoYXNpbmRleCkKKwl0ZW1wX2RpcnR5 ID0gZmFsc2U7CisJaWYgKCFpc3JlaW5kZXggJiYgcmRfcmVsLT5yZWxoYXNpbmRleCAhPSBoYXNp bmRleCkKIAl7CiAJCXJkX3JlbC0+cmVsaGFzaW5kZXggPSBoYXNpbmRleDsKIAkJZGlydHkgPSB0 cnVlOwpAQCAtMjk1MywzMCArMzAwOCwxOCBAQCBpbmRleF91cGRhdGVfc3RhdHMoUmVsYXRpb24g cmVsLAogCiAJaWYgKHVwZGF0ZV9zdGF0cykKIAl7Ci0JCWlmIChyZF9yZWwtPnJlbHBhZ2VzICE9 IChpbnQzMikgcmVscGFnZXMpCi0JCXsKLQkJCXJkX3JlbC0+cmVscGFnZXMgPSAoaW50MzIpIHJl bHBhZ2VzOwotCQkJZGlydHkgPSB0cnVlOwotCQl9Ci0JCWlmIChyZF9yZWwtPnJlbHR1cGxlcyAh PSAoZmxvYXQ0KSByZWx0dXBsZXMpCi0JCXsKLQkJCXJkX3JlbC0+cmVsdHVwbGVzID0gKGZsb2F0 NCkgcmVsdHVwbGVzOwotCQkJZGlydHkgPSB0cnVlOwotCQl9Ci0JCWlmIChyZF9yZWwtPnJlbGFs bHZpc2libGUgIT0gKGludDMyKSByZWxhbGx2aXNpYmxlKQotCQl7Ci0JCQlyZF9yZWwtPnJlbGFs bHZpc2libGUgPSAoaW50MzIpIHJlbGFsbHZpc2libGU7Ci0JCQlkaXJ0eSA9IHRydWU7Ci0JCX0K LQkJaWYgKHJkX3JlbC0+cmVsYWxsZnJvemVuICE9IChpbnQzMikgcmVsYWxsZnJvemVuKQotCQl7 Ci0JCQlyZF9yZWwtPnJlbGFsbGZyb3plbiA9IChpbnQzMikgcmVsYWxsZnJvemVuOwotCQkJZGly dHkgPSB0cnVlOwotCQl9CisJCVNldEVmZmVjdGl2ZV9yZWxwYWdlcyhyZF9yZWwsIHRlbXBfcmRf cmVsLCAoaW50MzIpIHJlbHBhZ2VzLAorCQkJCQkJCSAgJmRpcnR5LCAmdGVtcF9kaXJ0eSk7CisJ CVNldEVmZmVjdGl2ZV9yZWx0dXBsZXMocmRfcmVsLCB0ZW1wX3JkX3JlbCwgKGZsb2F0NCkgcmVs dHVwbGVzLAorCQkJCQkJCSAgICZkaXJ0eSwgJnRlbXBfZGlydHkpOworCQlTZXRFZmZlY3RpdmVf cmVsYWxsdmlzaWJsZShyZF9yZWwsIHRlbXBfcmRfcmVsLCAoaW50MzIpIHJlbGFsbHZpc2libGUs CisJCQkJCQkJCSAgICZkaXJ0eSwgJnRlbXBfZGlydHkpOworCQlTZXRFZmZlY3RpdmVfcmVsYWxs ZnJvemVuKHJkX3JlbCwgdGVtcF9yZF9yZWwsIChpbnQzMikgcmVsYWxsZnJvemVuLAorCQkJCQkJ CQkgICZkaXJ0eSwgJnRlbXBfZGlydHkpOwogCX0KIAogCS8qCi0JICogSWYgYW55dGhpbmcgY2hh bmdlZCwgd3JpdGUgb3V0IHRoZSB0dXBsZQorCSAqIElmIGFueXRoaW5nIGNoYW5nZWQsIHdyaXRl IG91dCB0aGUgdHVwbGUocykKIAkgKi8KIAlpZiAoZGlydHkpCiAJewpAQCAtMjk4NSw3ICszMDI4 LDggQEAgaW5kZXhfdXBkYXRlX3N0YXRzKFJlbGF0aW9uIHJlbCwKIAl9CiAJZWxzZQogCXsKLQkJ c3lzdGFibGVfaW5wbGFjZV91cGRhdGVfY2FuY2VsKHN0YXRlKTsKKwkJaWYgKHN0YXRlICE9IE5V TEwpCisJCQlzeXN0YWJsZV9pbnBsYWNlX3VwZGF0ZV9jYW5jZWwoc3RhdGUpOwogCiAJCS8qCiAJ CSAqIFdoaWxlIHdlIGRpZG4ndCBjaGFuZ2UgcmVsaGFzaW5kZXgsIENSRUFURSBJTkRFWCBuZWVk cyBhCkBAIC0yOTk3LDkgKzMwNDEsMTggQEAgaW5kZXhfdXBkYXRlX3N0YXRzKFJlbGF0aW9uIHJl bCwKIAkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVCeVR1cGxlKHR1cGxlKTsKIAl9CiAKKwlpZiAo SGVhcFR1cGxlSXNWYWxpZCh0ZW1wX3R1cGxlKSkKKwl7CisJCWlmICh0ZW1wX2RpcnR5KQorCQkJ VXBkYXRlUGdUZW1wQ2xhc3NUdXBsZUluUGxhY2UocmVsaWQsIHRlbXBfdHVwbGUpOworCisJCWhl YXBfZnJlZXR1cGxlKHRlbXBfdHVwbGUpOworCX0KKwogCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsK IAotCXRhYmxlX2Nsb3NlKHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlpZiAoUmVsYXRp b25Jc1ZhbGlkKHBnX2NsYXNzKSkKKwkJdGFibGVfY2xvc2UocGdfY2xhc3MsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogfQogCiAKQEAgLTMxNzcsMTEgKzMyMzAsMTEgQEAgaW5kZXhfYnVpbGQoUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCSAqIFVwZGF0ZSBoZWFwIGFuZCBpbmRleCBwZ19jbGFzcyByb3dz CiAJICovCiAJaW5kZXhfdXBkYXRlX3N0YXRzKGhlYXBSZWxhdGlvbiwKLQkJCQkJICAgdHJ1ZSwK KwkJCQkJICAgaXNyZWluZGV4LCB0cnVlLAogCQkJCQkgICBzdGF0cy0+aGVhcF90dXBsZXMpOwog CiAJaW5kZXhfdXBkYXRlX3N0YXRzKGluZGV4UmVsYXRpb24sCi0JCQkJCSAgIGZhbHNlLAorCQkJ CQkgICBpc3JlaW5kZXgsIGZhbHNlLAogCQkJCQkgICBzdGF0cy0+aW5kZXhfdHVwbGVzKTsKIAog CS8qIE1ha2UgdGhlIHVwZGF0ZWQgY2F0YWxvZyByb3cgdmVyc2lvbnMgdmlzaWJsZSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3RlbXBfY2xhc3MuYwppbmRleCA4NWRhYjRiYmIwYi4uNTNiMDU4ZmNmM2Qg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFz cy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgi CiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTE2OCw2ICsxNjksMTggQEAgZ2V0X3Bn X3RlbXBfY2xhc3NfdHVwZGVzYyh2b2lkKQogCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywK IAkJCQkJCSAgIChBdHRyTnVtYmVyKSBBbnVtX3BnX3RlbXBfY2xhc3NfcmVsdGFibGVzcGFjZSwK IAkJCQkJCSAgICJyZWx0YWJsZXNwYWNlIiwgT0lET0lELCAtMSwgMCk7CisJCVR1cGxlRGVzY0lu aXRFbnRyeSh0dXBkZXNjLAorCQkJCQkJICAgKEF0dHJOdW1iZXIpIEFudW1fcGdfdGVtcF9jbGFz c19yZWxwYWdlcywKKwkJCQkJCSAgICJyZWxwYWdlcyIsIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsCisJCQkJCQkgICAoQXR0ck51bWJlcikgQW51bV9wZ190 ZW1wX2NsYXNzX3JlbHR1cGxlcywKKwkJCQkJCSAgICJyZWx0dXBsZXMiLCBGTE9BVDRPSUQsIC0x LCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsCisJCQkJCQkgICAoQXR0ck51bWJl cikgQW51bV9wZ190ZW1wX2NsYXNzX3JlbGFsbHZpc2libGUsCisJCQkJCQkgICAicmVsYWxsdmlz aWJsZSIsIElOVDRPSUQsIC0xLCAwKTsKKwkJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsCisJ CQkJCQkgICAoQXR0ck51bWJlcikgQW51bV9wZ190ZW1wX2NsYXNzX3JlbGFsbGZyb3plbiwKKwkJ CQkJCSAgICJyZWxhbGxmcm96ZW4iLCBJTlQ0T0lELCAtMSwgMCk7CiAJCVR1cGxlRGVzY0ZpbmFs aXplKHR1cGRlc2MpOwogCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKQEAg LTE5NCw2ICsyMDcsMTAgQEAgaGVhcF9mb3JtX3BnX3RlbXBfY2xhc3NfdHVwbGUoUmVsYXRpb24g cmVsKQogCXZhbHVlc1tBbnVtX3BnX3RlbXBfY2xhc3Nfb2lkIC0gMV0gPSBPYmplY3RJZEdldERh dHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CiAJdmFsdWVzW0FudW1fcGdfdGVtcF9jbGFzc19y ZWxmaWxlbm9kZSAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShmb3JtLT5yZWxmaWxlbm9kZSk7CiAJ dmFsdWVzW0FudW1fcGdfdGVtcF9jbGFzc19yZWx0YWJsZXNwYWNlIC0gMV0gPSBPYmplY3RJZEdl dERhdHVtKGZvcm0tPnJlbHRhYmxlc3BhY2UpOworCXZhbHVlc1tBbnVtX3BnX3RlbXBfY2xhc3Nf cmVscGFnZXMgLSAxXSA9IEludDMyR2V0RGF0dW0oZm9ybS0+cmVscGFnZXMpOworCXZhbHVlc1tB bnVtX3BnX3RlbXBfY2xhc3NfcmVsdHVwbGVzIC0gMV0gPSBGbG9hdDRHZXREYXR1bShmb3JtLT5y ZWx0dXBsZXMpOworCXZhbHVlc1tBbnVtX3BnX3RlbXBfY2xhc3NfcmVsYWxsdmlzaWJsZSAtIDFd ID0gSW50MzJHZXREYXR1bShmb3JtLT5yZWxhbGx2aXNpYmxlKTsKKwl2YWx1ZXNbQW51bV9wZ190 ZW1wX2NsYXNzX3JlbGFsbGZyb3plbiAtIDFdID0gSW50MzJHZXREYXR1bShmb3JtLT5yZWxhbGxm cm96ZW4pOwogCiAJcmV0dXJuIGhlYXBfZm9ybV90dXBsZShnZXRfcGdfdGVtcF9jbGFzc190dXBk ZXNjKCksIHZhbHVlcywgbnVsbHMpOwogfQpAQCAtMzk1LDYgKzQxMiw3MyBAQCBVcGRhdGVQZ1Rl bXBDbGFzc1R1cGxlKE9pZCByZWxpZCwgSGVhcFR1cGxlIG5ld3R1cGxlKQogCXRhYmxlX2Nsb3Nl KHBnX3RlbXBfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOwogfQogCisvKgorICogVXBkYXRlUGdU ZW1wQ2xhc3NUdXBsZUluUGxhY2UKKyAqCisgKglEbyBhbiBpbi1wbGFjZSB1cGRhdGUgb2YgdGhl IHBnX3RlbXBfY2xhc3MgdHVwbGUgZm9yIGEgZ2xvYmFsIHRlbXBvcmFyeQorICoJcmVsYXRpb24u CisgKi8KK3ZvaWQKK1VwZGF0ZVBnVGVtcENsYXNzVHVwbGVJblBsYWNlKE9pZCByZWxpZCwgSGVh cFR1cGxlIG5ld3R1cGxlKQoreworCVJlbGF0aW9uCXBnX3RlbXBfY2xhc3M7CisJU2NhbktleURh dGEga2V5WzFdOworCUhlYXBUdXBsZQlvbGR0dXBsZTsKKwl2b2lkCSAgICppbnBsYWNlX3N0YXRl OworCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgaW5zZXJ0IGZvciB0aGlzIHJlbGF0 aW9uIHRoYXQgaGFzbid0IGJlZW4KKwkgKiBmbHVzaGVkLCB0aGVuIGluc2VydCB0aGUgbmV3IHR1 cGxlIGluc3RlYWQsIGFuZCBtYXJrIHRoZSBwZW5kaW5nIGVudHJ5CisJICogYXMgaW5zZXJ0ZWQs IHNvIHN1YnNlcXVlbnQgZmV0Y2hlcyByZXRyaWV2ZSBpdCBmcm9tIHRoZSBkYXRhYmFzZS4gIE9u CisJICogc3VidHJhbnNhY3Rpb24gcm9sbGJhY2ssIHRoZSBwZW5kaW5nIGVudHJ5IHdpbGwgYmUg dW5tYXJrZWQsIGFuZCBtYXkgYmUKKwkgKiBpbnNlcnRlZCBpbnN0ZWFkLiAgV2UgaW50ZW50aW9u YWxseSBmbHVzaCB0byB0aGUgZGF0YWJhc2UgaGVyZSBpbiBvcmRlcgorCSAqIHRvIHRyaWdnZXIg Y2FjaGUgaW52YWxpZGF0aW9uIGZvciB0aGlzIHJlbGF0aW9uLgorCSAqLworCWlmIChwZW5kaW5n X2luc2VydHMgIT0gTlVMTCkKKwl7CisJCVBlbmRpbmdJbnNlcnQgKmVudHJ5OworCisJCWVudHJ5 ID0gaGFzaF9zZWFyY2gocGVuZGluZ19pbnNlcnRzLCAmcmVsaWQsIEhBU0hfRklORCwgTlVMTCk7 CisJCWlmIChlbnRyeSAhPSBOVUxMKQorCQl7CisJCQkvKiBFbnRyeSBtdXN0IG5vdCBoYXZlIGJl ZW4gZGVsZXRlZCBpbiB0aGUgc2FtZSBzdWJ0cmFuc2FjdGlvbiAqLworCQkJaWYgKGVudHJ5LT5k ZWxldGVkX3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCQkJCWVsb2coRVJST1Is CisJCQkJCSAicGVuZGluZyBpbnNlcnQgZm9yIGdsb2JhbCB0ZW1wIHJlbGF0aW9uICV1IHdhcyBk ZWxldGVkIiwKKwkJCQkJIHJlbGlkKTsKKworCQkJaWYgKGVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9 PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkKKwkJCXsKKwkJCQkvKiBJbnNlcnQgdGhlIG5ldyB2 ZXJzaW9uIG9mIHRoZSB0dXBsZSAqLworCQkJCXBnX3RlbXBfY2xhc3MgPSBvcGVuX3BnX3RlbXBf Y2xhc3MoUm93RXhjbHVzaXZlTG9jayk7CisJCQkJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHBnX3RlbXBf Y2xhc3MsIG5ld3R1cGxlKTsKKwkJCQl0YWJsZV9jbG9zZShwZ190ZW1wX2NsYXNzLCBSb3dFeGNs dXNpdmVMb2NrKTsKKwkJCQllbnRyeS0+aW5zZXJ0ZWRfc3ViaWQgPSBHZXRDdXJyZW50U3ViVHJh bnNhY3Rpb25JZCgpOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKworCS8qIE90aGVyd2lz ZSwgdXBkYXRlIHRoZSBwZ190ZW1wX2NsYXNzIHR1cGxlIGRpcmVjdGx5ICovCisJcGdfdGVtcF9j bGFzcyA9IG9wZW5fcGdfdGVtcF9jbGFzcyhSb3dFeGNsdXNpdmVMb2NrKTsKKworCVNjYW5LZXlJ bml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ190ZW1wX2NsYXNzX29pZCwKKwkJCQlCVEVxdWFsU3Ry YXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCisJ c3lzdGFibGVfaW5wbGFjZV91cGRhdGVfYmVnaW4ocGdfdGVtcF9jbGFzcywgVGVtcENsYXNzT2lk SW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkJICBOVUxMLCAxLCBrZXksICZvbGR0dXBsZSwgJmlucGxh Y2Vfc3RhdGUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChvbGR0dXBsZSkpCisJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBnbG9iYWwgdGVtcCByZWxhdGlvbiAldSIsIHJl bGlkKTsKKworCXN5c3RhYmxlX2lucGxhY2VfdXBkYXRlX2ZpbmlzaChpbnBsYWNlX3N0YXRlLCBu ZXd0dXBsZSk7CisKKwloZWFwX2ZyZWV0dXBsZShvbGR0dXBsZSk7CisKKwl0YWJsZV9jbG9zZShw Z190ZW1wX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIERlbGV0ZVBnVGVt cENsYXNzVHVwbGUKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2su YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jCmluZGV4IDgxYmM3ZGNjMzEyLi41ZjEx ZTY5OWRjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKQEAgLTEyOTgsNyArMTI5OCw5IEBAIGNvcHlf dGFibGVfZGF0YShSZWxhdGlvbiBOZXdIZWFwLCBSZWxhdGlvbiBPbGRIZWFwLCBSZWxhdGlvbiBP bGRJbmRleCwKIHsKIAlSZWxhdGlvbglyZWxSZWxhdGlvbjsKIAlIZWFwVHVwbGUJcmVsdHVwOwor CUhlYXBUdXBsZQl0ZW1wX3JlbHR1cDsKIAlGb3JtX3BnX2NsYXNzIHJlbGZvcm07CisJRm9ybV9w Z190ZW1wX2NsYXNzIHRlbXBfcmVsZm9ybTsKIAlUdXBsZURlc2MJb2xkVHVwRGVzYyBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CiAJVHVwbGVEZXNjCW5ld1R1cERlc2MgUEdfVVNFRF9GT1JfQVNT RVJUU19PTkxZOwogCVZhY3V1bVBhcmFtcyBwYXJhbXM7CkBAIC0xNDkwLDIxICsxNDkyLDMwIEBA IGNvcHlfdGFibGVfZGF0YShSZWxhdGlvbiBOZXdIZWFwLCBSZWxhdGlvbiBPbGRIZWFwLCBSZWxh dGlvbiBPbGRJbmRleCwKIAkJCQkJICAgdHVwc19yZWNlbnRseV9kZWFkLAogCQkJCQkgICBwZ19y dXNhZ2Vfc2hvdygmcnUwKSkpKTsKIAotCS8qIFVwZGF0ZSBwZ19jbGFzcyB0byByZWZsZWN0IHRo ZSBjb3JyZWN0IHZhbHVlcyBvZiBwYWdlcyBhbmQgdHVwbGVzLiAqLworCS8qCisJICogVXBkYXRl IHBnX2NsYXNzIC8gcGdfdGVtcF9jbGFzcyB0byByZWZsZWN0IHRoZSBjb3JyZWN0IHZhbHVlcyBv ZiBwYWdlcworCSAqIGFuZCB0dXBsZXMuCisJICovCiAJcmVsUmVsYXRpb24gPSB0YWJsZV9vcGVu KFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQlyZWx0dXAgPSBTZWFy Y2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwKLQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oUmVsYXRp b25HZXRSZWxpZChOZXdIZWFwKSkpOworCXJlbHR1cCA9IEdldFBnQ2xhc3NBbmRQZ1RlbXBDbGFz c1R1cGxlcyhSZWxhdGlvbkdldFJlbGlkKE5ld0hlYXApLCBmYWxzZSwKKwkJCQkJCQkJCQkJJnRl bXBfcmVsdHVwLCB0cnVlKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQocmVsdHVwKSkKIAkJZWxv ZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwKIAkJCSBSZWxh dGlvbkdldFJlbGlkKE5ld0hlYXApKTsKIAlyZWxmb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNU UlVDVChyZWx0dXApOworCXRlbXBfcmVsZm9ybSA9IChGb3JtX3BnX3RlbXBfY2xhc3MpIEdFVFNU UlVDVF9TQUZFKHRlbXBfcmVsdHVwKTsKIAotCXJlbGZvcm0tPnJlbHBhZ2VzID0gbnVtX3BhZ2Vz OwotCXJlbGZvcm0tPnJlbHR1cGxlcyA9IG51bV90dXBsZXM7CisJU2V0RWZmZWN0aXZlX3JlbHBh Z2VzKHJlbGZvcm0sIHRlbXBfcmVsZm9ybSwgbnVtX3BhZ2VzLCBOVUxMLCBOVUxMKTsKKwlTZXRF ZmZlY3RpdmVfcmVsdHVwbGVzKHJlbGZvcm0sIHRlbXBfcmVsZm9ybSwgbnVtX3R1cGxlcywgTlVM TCwgTlVMTCk7CiAKIAkvKiBEb24ndCB1cGRhdGUgdGhlIHN0YXRzIGZvciBwZ19jbGFzcy4gIFNl ZSBzd2FwX3JlbGF0aW9uX2ZpbGVzLiAqLwotCWlmIChSZWxhdGlvbkdldFJlbGlkKE9sZEhlYXAp ICE9IFJlbGF0aW9uUmVsYXRpb25JZCkKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0ZW1wX3JlbHR1 cCkpCisJeworCQlVcGRhdGVQZ1RlbXBDbGFzc1R1cGxlKFJlbGF0aW9uR2V0UmVsaWQoTmV3SGVh cCksIHRlbXBfcmVsdHVwKTsKKwkJaGVhcF9mcmVldHVwbGUodGVtcF9yZWx0dXApOworCX0KKwll bHNlIGlmIChSZWxhdGlvbkdldFJlbGlkKE9sZEhlYXApICE9IFJlbGF0aW9uUmVsYXRpb25JZCkK IAkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbFJlbGF0aW9uLCAmcmVsdHVwLT50X3NlbGYsIHJlbHR1 cCk7CiAJZWxzZQogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUJ5VHVwbGUocmVsdHVwKTsKQEAg LTE3MzMsMjEgKzE3NDQsMjkgQEAgc3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9pZCByMiwg Ym9vbCB0YXJnZXRfaXNfcGdfY2xhc3MsCiAJCWludDMyCQlzd2FwX2FsbHZpc2libGU7CiAJCWlu dDMyCQlzd2FwX2FsbGZyb3plbjsKIAotCQlzd2FwX3BhZ2VzID0gcmVsZm9ybTEtPnJlbHBhZ2Vz OwotCQlyZWxmb3JtMS0+cmVscGFnZXMgPSByZWxmb3JtMi0+cmVscGFnZXM7Ci0JCXJlbGZvcm0y LT5yZWxwYWdlcyA9IHN3YXBfcGFnZXM7Ci0KLQkJc3dhcF90dXBsZXMgPSByZWxmb3JtMS0+cmVs dHVwbGVzOwotCQlyZWxmb3JtMS0+cmVsdHVwbGVzID0gcmVsZm9ybTItPnJlbHR1cGxlczsKLQkJ cmVsZm9ybTItPnJlbHR1cGxlcyA9IHN3YXBfdHVwbGVzOwotCi0JCXN3YXBfYWxsdmlzaWJsZSA9 IHJlbGZvcm0xLT5yZWxhbGx2aXNpYmxlOwotCQlyZWxmb3JtMS0+cmVsYWxsdmlzaWJsZSA9IHJl bGZvcm0yLT5yZWxhbGx2aXNpYmxlOwotCQlyZWxmb3JtMi0+cmVsYWxsdmlzaWJsZSA9IHN3YXBf YWxsdmlzaWJsZTsKLQotCQlzd2FwX2FsbGZyb3plbiA9IHJlbGZvcm0xLT5yZWxhbGxmcm96ZW47 Ci0JCXJlbGZvcm0xLT5yZWxhbGxmcm96ZW4gPSByZWxmb3JtMi0+cmVsYWxsZnJvemVuOwotCQly ZWxmb3JtMi0+cmVsYWxsZnJvemVuID0gc3dhcF9hbGxmcm96ZW47CisJCXN3YXBfcGFnZXMgPSBH ZXRFZmZlY3RpdmVfcmVscGFnZXMocmVsZm9ybTEsIHRlbXBfcmVsZm9ybTEpOworCQlTZXRFZmZl Y3RpdmVfcmVscGFnZXMocmVsZm9ybTEsIHRlbXBfcmVsZm9ybTEsCisJCQkJCQkJICBHZXRFZmZl Y3RpdmVfcmVscGFnZXMocmVsZm9ybTIsIHRlbXBfcmVsZm9ybTIpLAorCQkJCQkJCSAgTlVMTCwg TlVMTCk7CisJCVNldEVmZmVjdGl2ZV9yZWxwYWdlcyhyZWxmb3JtMiwgdGVtcF9yZWxmb3JtMiwg c3dhcF9wYWdlcywgTlVMTCwgTlVMTCk7CisKKwkJc3dhcF90dXBsZXMgPSBHZXRFZmZlY3RpdmVf cmVsdHVwbGVzKHJlbGZvcm0xLCB0ZW1wX3JlbGZvcm0xKTsKKwkJU2V0RWZmZWN0aXZlX3JlbHR1 cGxlcyhyZWxmb3JtMSwgdGVtcF9yZWxmb3JtMSwKKwkJCQkJCQkgICBHZXRFZmZlY3RpdmVfcmVs dHVwbGVzKHJlbGZvcm0yLCB0ZW1wX3JlbGZvcm0yKSwKKwkJCQkJCQkgICBOVUxMLCBOVUxMKTsK KwkJU2V0RWZmZWN0aXZlX3JlbHR1cGxlcyhyZWxmb3JtMiwgdGVtcF9yZWxmb3JtMiwgc3dhcF90 dXBsZXMsIE5VTEwsIE5VTEwpOworCisJCXN3YXBfYWxsdmlzaWJsZSA9IEdldEVmZmVjdGl2ZV9y ZWxhbGx2aXNpYmxlKHJlbGZvcm0xLCB0ZW1wX3JlbGZvcm0xKTsKKwkJU2V0RWZmZWN0aXZlX3Jl bGFsbHZpc2libGUocmVsZm9ybTEsIHRlbXBfcmVsZm9ybTEsCisJCQkJCQkJCSAgIEdldEVmZmVj dGl2ZV9yZWxhbGx2aXNpYmxlKHJlbGZvcm0yLCB0ZW1wX3JlbGZvcm0yKSwKKwkJCQkJCQkJICAg TlVMTCwgTlVMTCk7CisJCVNldEVmZmVjdGl2ZV9yZWxhbGx2aXNpYmxlKHJlbGZvcm0yLCB0ZW1w X3JlbGZvcm0yLCBzd2FwX2FsbHZpc2libGUsIE5VTEwsIE5VTEwpOworCisJCXN3YXBfYWxsZnJv emVuID0gR2V0RWZmZWN0aXZlX3JlbGFsbGZyb3plbihyZWxmb3JtMSwgdGVtcF9yZWxmb3JtMSk7 CisJCVNldEVmZmVjdGl2ZV9yZWxhbGxmcm96ZW4ocmVsZm9ybTEsIHRlbXBfcmVsZm9ybTEsCisJ CQkJCQkJCSAgR2V0RWZmZWN0aXZlX3JlbGFsbGZyb3plbihyZWxmb3JtMiwgdGVtcF9yZWxmb3Jt MiksCisJCQkJCQkJCSAgTlVMTCwgTlVMTCk7CisJCVNldEVmZmVjdGl2ZV9yZWxhbGxmcm96ZW4o cmVsZm9ybTIsIHRlbXBfcmVsZm9ybTIsIHN3YXBfYWxsZnJvemVuLCBOVUxMLCBOVUxMKTsKIAl9 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCA0ZTE1MDI4MjE3Yy4uOWM3NzZkNWE5Nzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMzkzLDkgKzEzOTMsMTAgQEAgdmFjX2VzdGltYXRl X3JlbHR1cGxlcyhSZWxhdGlvbiByZWxhdGlvbiwKICAqCXZhY191cGRhdGVfcmVsc3RhdHMoKSAt LSB1cGRhdGUgc3RhdGlzdGljcyBmb3Igb25lIHJlbGF0aW9uCiAgKgogICoJCVVwZGF0ZSB0aGUg d2hvbGUtcmVsYXRpb24gc3RhdGlzdGljcyB0aGF0IGFyZSBrZXB0IGluIGl0cyBwZ19jbGFzcwot ICoJCXJvdy4gIFRoZXJlIGFyZSBhZGRpdGlvbmFsIHN0YXRzIHRoYXQgd2lsbCBiZSB1cGRhdGVk IGlmIHdlIGFyZQotICoJCWRvaW5nIEFOQUxZWkUsIGJ1dCB3ZSBhbHdheXMgdXBkYXRlIHRoZXNl IHN0YXRzLiAgVGhpcyByb3V0aW5lIHdvcmtzCi0gKgkJZm9yIGJvdGggaW5kZXggYW5kIGhlYXAg cmVsYXRpb24gZW50cmllcyBpbiBwZ19jbGFzcy4KKyAqCQlyb3cgKGFuZCBpdHMgcGdfdGVtcF9j bGFzcyByb3csIGZvciBhIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb24pLgorICoJCVRoZXJlIGFy ZSBhZGRpdGlvbmFsIHN0YXRzIHRoYXQgd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGFyZSBkb2luZwor ICoJCUFOQUxZWkUsIGJ1dCB3ZSBhbHdheXMgdXBkYXRlIHRoZXNlIHN0YXRzLiBUaGlzIHJvdXRp bmUgd29ya3MgZm9yIGJvdGgKKyAqCQlpbmRleCBhbmQgaGVhcCByZWxhdGlvbiBlbnRyaWVzIGlu IHBnX2NsYXNzIGFuZCBwZ190ZW1wX2NsYXNzLgogICoKICAqCQlXZSB2aW9sYXRlIHRyYW5zYWN0 aW9uIHNlbWFudGljcyBoZXJlIGJ5IG92ZXJ3cml0aW5nIHRoZSByZWwncwogICoJCWV4aXN0aW5n IHBnX2NsYXNzIHR1cGxlIHdpdGggdGhlIG5ldyB2YWx1ZXMuICBUaGlzIGlzIHJlYXNvbmFibHkK QEAgLTE0MDQsMTIgKzE0MDUsMTcgQEAgdmFjX2VzdGltYXRlX3JlbHR1cGxlcyhSZWxhdGlvbiBy ZWxhdGlvbiwKICAqCQl3ZSB1cGRhdGVkIHRoZXNlIHR1cGxlcyBpbiB0aGUgdXN1YWwgd2F5LCB2 YWN1dW1pbmcgcGdfY2xhc3MgaXRzZWxmCiAgKgkJd291bGRuJ3Qgd29yayB2ZXJ5IHdlbGwgLS0t IGJ5IHRoZSB0aW1lIHdlIGdvdCBkb25lIHdpdGggYSB2YWN1dW0KICAqCQljeWNsZSwgbW9zdCBv ZiB0aGUgdHVwbGVzIGluIHBnX2NsYXNzIHdvdWxkJ3ZlIGJlZW4gb2Jzb2xldGVkLiAgT2YKLSAq CQljb3Vyc2UsIHRoaXMgb25seSB3b3JrcyBmb3IgZml4ZWQtc2l6ZSBub3QtbnVsbCBjb2x1bW5z LCBidXQgdGhlc2UgYXJlLgorICoJCWNvdXJzZSwgdGhpcyBvbmx5IHdvcmtzIGZvciBmaXhlZC1z aXplIG5vdC1udWxsIGNvbHVtbnMsIGJ1dCB0aGVzZQorICoJCWFyZS4gIExpa2V3aXNlIGZvciBw Z190ZW1wX2NsYXNzLCB3aGljaCBpcyBhbHNvIHVwZGF0ZWQgZm9yIGEgZ2xvYmFsCisgKgkJdGVt cG9yYXJ5IHJlbGF0aW9uLgogICoKICAqCQlBbm90aGVyIHJlYXNvbiBmb3IgZG9pbmcgaXQgdGhp cyB3YXkgaXMgdGhhdCB3aGVuIHdlIGFyZSBpbiBhIGxhenkKICAqCQlWQUNVVU0gYW5kIGhhdmUg UFJPQ19JTl9WQUNVVU0gc2V0LCB3ZSBtdXN0bid0IGRvIGFueSByZWd1bGFyIHVwZGF0ZXMuCiAg KgkJU29tZWJvZHkgdmFjdXVtaW5nIHBnX2NsYXNzIG1pZ2h0IHRoaW5rIHRoZXkgY291bGQgZGVs ZXRlIGEgdHVwbGUKLSAqCQltYXJrZWQgd2l0aCB4bWluID0gb3VyIHhpZC4KKyAqCQltYXJrZWQg d2l0aCB4bWluID0gb3VyIHhpZC4gIFRoaXMgaXNuJ3QgYSBwcm9ibGVtIGZvciBwZ190ZW1wX2Ns YXNzCisgKgkJYmVjYXVzZSBubyBvdGhlciBzZXNzaW9uIGNhbiBzZWUgb3VyIGNvcHkgb2YgaXRz IGRhdGEsIGJ1dCBpdCBzdGlsbAorICoJCW1ha2VzIHNlbnNlIHRvIGRvIGFuIGluLXBsYWNlIHVw ZGF0ZSB0byBhdm9pZCB2YWN1dW1lZCBwZ190ZW1wX2NsYXNzCisgKgkJdHVwbGVzIGJlaW5nIG9i c29sZXRlZC4KICAqCiAgKgkJSW4gYWRkaXRpb24gdG8gZnVuZGFtZW50YWxseSBub250cmFuc2Fj dGlvbmFsIHN0YXRpc3RpY3Mgc3VjaCBhcwogICoJCXJlbHBhZ2VzIGFuZCByZWxhbGx2aXNpYmxl LCB3ZSB0cnkgdG8gbWFpbnRhaW4gY2VydGFpbiBsYXppbHktdXBkYXRlZApAQCAtMTQyNCw4ICsx NDMwLDggQEAgdmFjX2VzdGltYXRlX3JlbHR1cGxlcyhSZWxhdGlvbiByZWxhdGlvbiwKICAqCQl0 cmFuc2FjdGlvbi4gIFRoaXMgaXMgT0sgc2luY2UgcG9zdHBvbmluZyB0aGUgZmxhZyBtYWludGVu YW5jZSBpcwogICoJCWFsd2F5cyBhbGxvd2FibGUuCiAgKgotICoJCU5vdGU6IG51bV90dXBsZXMg c2hvdWxkIGNvdW50IG9ubHkgKmxpdmUqIHR1cGxlcywgc2luY2UKLSAqCQlwZ19jbGFzcy5yZWx0 dXBsZXMgaXMgZGVmaW5lZCB0aGF0IHdheS4KKyAqCQlOb3RlOiBudW1fdHVwbGVzIHNob3VsZCBj b3VudCBvbmx5ICpsaXZlKiB0dXBsZXMsIHNpbmNlIHJlbHR1cGxlcyBpbgorICoJCXBnX2NsYXNz IGFuZCBwZ190ZW1wX2NsYXNzIGlzIGRlZmluZWQgdGhhdCB3YXkuCiAgKgogICoJCVRoaXMgcm91 dGluZSBpcyBzaGFyZWQgYnkgVkFDVVVNIGFuZCBBTkFMWVpFLgogICovCkBAIC0xNDQzLDE3ICsx NDQ5LDM5IEBAIHZhY191cGRhdGVfcmVsc3RhdHMoUmVsYXRpb24gcmVsYXRpb24sCiAJUmVsYXRp b24JcmQ7CiAJU2NhbktleURhdGEga2V5WzFdOwogCUhlYXBUdXBsZQljdHVwOworCUhlYXBUdXBs ZQl0ZW1wX2N0dXA7CiAJdm9pZAkgICAqaW5wbGFjZV9zdGF0ZTsKIAlGb3JtX3BnX2NsYXNzIHBn Y2Zvcm07CisJRm9ybV9wZ190ZW1wX2NsYXNzIHRlbXBfcGdjZm9ybTsKIAlib29sCQlkaXJ0eSwK KwkJCQl0ZW1wX2RpcnR5LAogCQkJCWZ1dHVyZXhpZCwKIAkJCQlmdXR1cmVteGlkOwogCVRyYW5z YWN0aW9uSWQgb2xkZnJvemVueGlkOwogCU11bHRpWGFjdElkIG9sZG1pbm11bHRpOwogCisJLyoK KwkgKiBGb3IgYSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9uLCBuZWVkIGEgd3JpdGFibGUgY29w eSBvZiBpdHMKKwkgKiBwZ190ZW1wX2NsYXNzIHR1cGxlLiAgTm90ZTogY2FuJ3QgdXNlIHN5c3Rh YmxlX2lucGxhY2VfdXBkYXRlX2JlZ2luKCkKKwkgKiBoZXJlIGJlY2F1c2UgdGhlIHR1cGxlIG1p Z2h0IGJlIGEgcGVuZGluZyBpbnNlcnQgLS0tIHNlZSBoZWFkZXIKKwkgKiBjb21tZW50cyBpbiBw Z190ZW1wX2NsYXNzLmMuCisJICovCisJaWYgKFJFTEFUSU9OX0lTX0dMT0JBTF9URU1QKHJlbGF0 aW9uKSkKKwl7CisJCXRlbXBfY3R1cCA9IEdldFBnVGVtcENsYXNzVHVwbGUocmVsaWQpOworCQlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodGVtcF9jdHVwKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBs b29rdXAgZmFpbGVkIGZvciBnbG9iYWwgdGVtcCByZWxhdGlvbiAldSIsIHJlbGlkKTsKKwkJdGVt cF9wZ2Nmb3JtID0gKEZvcm1fcGdfdGVtcF9jbGFzcykgR0VUU1RSVUNUKHRlbXBfY3R1cCk7CisJ fQorCWVsc2UKKwl7CisJCXRlbXBfY3R1cCA9IE5VTEw7CisJCXRlbXBfcGdjZm9ybSA9IE5VTEw7 CisJfQorCisJLyogRmV0Y2ggYSBjb3B5IG9mIHRoZSBwZ19jbGFzcyB0dXBsZSB0byBzY3JpYmJs ZSBvbiAqLwogCXJkID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOwogCi0JLyogRmV0Y2ggYSBjb3B5IG9mIHRoZSB0dXBsZSB0byBzY3JpYmJsZSBvbiAq LwogCVNjYW5LZXlJbml0KCZrZXlbMF0sCiAJCQkJQW51bV9wZ19jbGFzc19vaWQsCiAJCQkJQlRF cXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLApAQCAtMTQ2NSwyOSArMTQ5MywyMCBAQCB2YWNf dXBkYXRlX3JlbHN0YXRzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJIHJlbGlkKTsKIAlwZ2Nmb3Jt ID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVChjdHVwKTsKIAotCS8qIEFwcGx5IHN0YXRpc3Rp Y2FsIHVwZGF0ZXMsIGlmIGFueSwgdG8gY29waWVkIHR1cGxlICovCisJLyogQXBwbHkgc3RhdGlz dGljYWwgdXBkYXRlcywgaWYgYW55LCB0byBjb3BpZWQgdHVwbGUocykgKi8KIAogCWRpcnR5ID0g ZmFsc2U7Ci0JaWYgKHBnY2Zvcm0tPnJlbHBhZ2VzICE9IChpbnQzMikgbnVtX3BhZ2VzKQotCXsK LQkJcGdjZm9ybS0+cmVscGFnZXMgPSAoaW50MzIpIG51bV9wYWdlczsKLQkJZGlydHkgPSB0cnVl OwotCX0KLQlpZiAocGdjZm9ybS0+cmVsdHVwbGVzICE9IChmbG9hdDQpIG51bV90dXBsZXMpCi0J ewotCQlwZ2Nmb3JtLT5yZWx0dXBsZXMgPSAoZmxvYXQ0KSBudW1fdHVwbGVzOwotCQlkaXJ0eSA9 IHRydWU7Ci0JfQotCWlmIChwZ2Nmb3JtLT5yZWxhbGx2aXNpYmxlICE9IChpbnQzMikgbnVtX2Fs bF92aXNpYmxlX3BhZ2VzKQotCXsKLQkJcGdjZm9ybS0+cmVsYWxsdmlzaWJsZSA9IChpbnQzMikg bnVtX2FsbF92aXNpYmxlX3BhZ2VzOwotCQlkaXJ0eSA9IHRydWU7Ci0JfQotCWlmIChwZ2Nmb3Jt LT5yZWxhbGxmcm96ZW4gIT0gKGludDMyKSBudW1fYWxsX2Zyb3plbl9wYWdlcykKLQl7Ci0JCXBn Y2Zvcm0tPnJlbGFsbGZyb3plbiA9IChpbnQzMikgbnVtX2FsbF9mcm96ZW5fcGFnZXM7Ci0JCWRp cnR5ID0gdHJ1ZTsKLQl9CisJdGVtcF9kaXJ0eSA9IGZhbHNlOworCVNldEVmZmVjdGl2ZV9yZWxw YWdlcyhwZ2Nmb3JtLCB0ZW1wX3BnY2Zvcm0sIChpbnQzMikgbnVtX3BhZ2VzLAorCQkJCQkJICAm ZGlydHksICZ0ZW1wX2RpcnR5KTsKKwlTZXRFZmZlY3RpdmVfcmVsdHVwbGVzKHBnY2Zvcm0sIHRl bXBfcGdjZm9ybSwgKGZsb2F0NCkgbnVtX3R1cGxlcywKKwkJCQkJCSAgICZkaXJ0eSwgJnRlbXBf ZGlydHkpOworCVNldEVmZmVjdGl2ZV9yZWxhbGx2aXNpYmxlKHBnY2Zvcm0sIHRlbXBfcGdjZm9y bSwKKwkJCQkJCQkgICAoaW50MzIpIG51bV9hbGxfdmlzaWJsZV9wYWdlcywKKwkJCQkJCQkgICAm ZGlydHksICZ0ZW1wX2RpcnR5KTsKKwlTZXRFZmZlY3RpdmVfcmVsYWxsZnJvemVuKHBnY2Zvcm0s IHRlbXBfcGdjZm9ybSwKKwkJCQkJCQkgIChpbnQzMikgbnVtX2FsbF9mcm96ZW5fcGFnZXMsCisJ CQkJCQkJICAmZGlydHksICZ0ZW1wX2RpcnR5KTsKIAogCS8qIEFwcGx5IERETCB1cGRhdGVzLCBi dXQgbm90IGluc2lkZSBhbiBvdXRlciB0cmFuc2FjdGlvbiAoc2VlIGFib3ZlKSAqLwogCkBAIC0x NTcwLDEyICsxNTg5LDIyIEBAIHZhY191cGRhdGVfcmVsc3RhdHMoUmVsYXRpb24gcmVsYXRpb24s CiAJCX0KIAl9CiAKLQkvKiBJZiBhbnl0aGluZyBjaGFuZ2VkLCB3cml0ZSBvdXQgdGhlIHR1cGxl LiAqLworCS8qIElmIGFueXRoaW5nIGNoYW5nZWQsIHdyaXRlIG91dCB0aGUgdHVwbGUocykgKi8K IAlpZiAoZGlydHkpCiAJCXN5c3RhYmxlX2lucGxhY2VfdXBkYXRlX2ZpbmlzaChpbnBsYWNlX3N0 YXRlLCBjdHVwKTsKIAllbHNlCiAJCXN5c3RhYmxlX2lucGxhY2VfdXBkYXRlX2NhbmNlbChpbnBs YWNlX3N0YXRlKTsKIAorCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRlbXBfY3R1cCkpCisJeworCQlp ZiAodGVtcF9kaXJ0eSkKKwkJCVVwZGF0ZVBnVGVtcENsYXNzVHVwbGVJblBsYWNlKHJlbGlkLCB0 ZW1wX2N0dXApOworCisJCWhlYXBfZnJlZXR1cGxlKHRlbXBfY3R1cCk7CisJfQorCisJaGVhcF9m cmVldHVwbGUoY3R1cCk7CisKIAl0YWJsZV9jbG9zZShyZCwgUm93RXhjbHVzaXZlTG9jayk7CiAK IAlpZiAoZnV0dXJleGlkKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9yZWxh dGlvbl9zdGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9yZWxhdGlvbl9zdGF0cy5jCmlu ZGV4IGQ2NjMxZTlhOWE0Li4yNmVjNWIyNDY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rh dGlzdGljcy9yZWxhdGlvbl9zdGF0cy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvcmVs YXRpb25fc3RhdHMuYwpAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0u aCIKICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1l c3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfY2xhc3MuaCIKICNpbmNsdWRlICJu b2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJzdGF0aXN0aWNzL3N0YXRfdXRpbHMuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtNzksMTAgKzgwLDExIEBAIHJlbGF0aW9uX3N0 YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCWJvb2wJCXVwZGF0ZV9y ZWxhbGxmcm96ZW4gPSBmYWxzZTsKIAlIZWFwVHVwbGUJY3R1cDsKIAlGb3JtX3BnX2NsYXNzIHBn Y2Zvcm07Ci0JaW50CQkJcmVwbGFjZXNbNF0gPSB7MH07Ci0JRGF0dW0JCXZhbHVlc1s0XSA9IHsw fTsKLQlib29sCQludWxsc1s0XSA9IHswfTsKLQlpbnQJCQlucmVwbGFjZXMgPSAwOworCVJlbGF0 aW9uCXJlbDsKKwlIZWFwVHVwbGUJdGVtcF9jdHVwOworCUZvcm1fcGdfdGVtcF9jbGFzcyB0ZW1w X3BnY2Zvcm07CisJYm9vbAkJZGlydHk7CisJYm9vbAkJdGVtcF9kaXJ0eTsKIAlPaWQJCQlsb2Nr ZWRfdGFibGUgPSBJbnZhbGlkT2lkOwogCiAJc3RhdHNfY2hlY2tfcmVxdWlyZWRfYXJnKGZjaW5m bywgcmVsYXJnaW5mbywgUkVMU0NIRU1BX0FSRyk7CkBAIC0xMzksNTIgKzE0MSw2NCBAQCByZWxh dGlvbl9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbykKIAkgKi8KIAlj cmVsID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwog Ci0JY3R1cCA9IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVsb2lk KSk7CisJY3R1cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVt KHJlbG9pZCkpOwogCWlmICghSGVhcFR1cGxlSXNWYWxpZChjdHVwKSkKIAkJZWxvZyhFUlJPUiwg InBnX2NsYXNzIGVudHJ5IGZvciByZWxpZCAldSBub3QgZm91bmQiLCByZWxvaWQpOwogCiAJcGdj Zm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QoY3R1cCk7CiAKLQlpZiAodXBkYXRlX3Jl bHBhZ2VzICYmIHJlbHBhZ2VzICE9IHBnY2Zvcm0tPnJlbHBhZ2VzKQorCS8qCisJICogRm9yIGEg Z2xvYmFsIHRlbXBvcmFyeSB0YWJsZSwgbmVlZCB0byB1cGRhdGUgdGhlIHBnX3RlbXBfY2xhc3Mg dHVwbGUKKwkgKiBpbnN0ZWFkLiAgRm9yY2UgaXQgaW50byBleGlzdGVuY2UgYnkgb3BlbmluZyB0 aGUgcmVsYXRpb24uCisJICovCisJaWYgKHBnY2Zvcm0tPnJlbHBlcnNpc3RlbmNlID09IFJFTFBF UlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCXsKLQkJcmVwbGFjZXNbbnJlcGxhY2VzXSA9IEFudW1f cGdfY2xhc3NfcmVscGFnZXM7Ci0JCXZhbHVlc1tucmVwbGFjZXNdID0gVUludDMyR2V0RGF0dW0o cmVscGFnZXMpOwotCQlucmVwbGFjZXMrKzsKLQl9CisJCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVs b2lkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlyZWxhdGlvbl9jbG9zZShyZWwsIEFjY2Vzc1NoYXJl TG9jayk7CiAKLQlpZiAodXBkYXRlX3JlbHR1cGxlcyAmJiByZWx0dXBsZXMgIT0gcGdjZm9ybS0+ cmVsdHVwbGVzKQotCXsKLQkJcmVwbGFjZXNbbnJlcGxhY2VzXSA9IEFudW1fcGdfY2xhc3NfcmVs dHVwbGVzOwotCQl2YWx1ZXNbbnJlcGxhY2VzXSA9IEZsb2F0NEdldERhdHVtKHJlbHR1cGxlcyk7 Ci0JCW5yZXBsYWNlcysrOwotCX0KKwkJdGVtcF9jdHVwID0gR2V0UGdUZW1wQ2xhc3NUdXBsZShy ZWxvaWQpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodGVtcF9jdHVwKSkKKwkJCWVsb2coRVJS T1IsICJwZ190ZW1wX2NsYXNzIGVudHJ5IGZvciByZWxpZCAldSBub3QgZm91bmQiLCByZWxvaWQp OwogCi0JaWYgKHVwZGF0ZV9yZWxhbGx2aXNpYmxlICYmIHJlbGFsbHZpc2libGUgIT0gcGdjZm9y bS0+cmVsYWxsdmlzaWJsZSkKLQl7Ci0JCXJlcGxhY2VzW25yZXBsYWNlc10gPSBBbnVtX3BnX2Ns YXNzX3JlbGFsbHZpc2libGU7Ci0JCXZhbHVlc1tucmVwbGFjZXNdID0gVUludDMyR2V0RGF0dW0o cmVsYWxsdmlzaWJsZSk7Ci0JCW5yZXBsYWNlcysrOworCQl0ZW1wX3BnY2Zvcm0gPSAoRm9ybV9w Z190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QodGVtcF9jdHVwKTsKIAl9Ci0KLQlpZiAodXBkYXRlX3Jl bGFsbGZyb3plbiAmJiByZWxhbGxmcm96ZW4gIT0gcGdjZm9ybS0+cmVsYWxsZnJvemVuKQorCWVs c2UKIAl7Ci0JCXJlcGxhY2VzW25yZXBsYWNlc10gPSBBbnVtX3BnX2NsYXNzX3JlbGFsbGZyb3pl bjsKLQkJdmFsdWVzW25yZXBsYWNlc10gPSBVSW50MzJHZXREYXR1bShyZWxhbGxmcm96ZW4pOwot CQlucmVwbGFjZXMrKzsKKwkJdGVtcF9jdHVwID0gTlVMTDsKKwkJdGVtcF9wZ2Nmb3JtID0gTlVM TDsKIAl9CiAKLQlpZiAobnJlcGxhY2VzID4gMCkKKwlkaXJ0eSA9IGZhbHNlOworCXRlbXBfZGly dHkgPSBmYWxzZTsKKworCWlmICh1cGRhdGVfcmVscGFnZXMpCisJCVNldEVmZmVjdGl2ZV9yZWxw YWdlcyhwZ2Nmb3JtLCB0ZW1wX3BnY2Zvcm0sIChpbnQzMikgcmVscGFnZXMsCisJCQkJCQkJICAm ZGlydHksICZ0ZW1wX2RpcnR5KTsKKworCWlmICh1cGRhdGVfcmVsdHVwbGVzKQorCQlTZXRFZmZl Y3RpdmVfcmVsdHVwbGVzKHBnY2Zvcm0sIHRlbXBfcGdjZm9ybSwgKGZsb2F0NCkgcmVsdHVwbGVz LAorCQkJCQkJCSAgICZkaXJ0eSwgJnRlbXBfZGlydHkpOworCisJaWYgKHVwZGF0ZV9yZWxhbGx2 aXNpYmxlKQorCQlTZXRFZmZlY3RpdmVfcmVsYWxsdmlzaWJsZShwZ2Nmb3JtLCB0ZW1wX3BnY2Zv cm0sIChpbnQzMikgcmVsYWxsdmlzaWJsZSwKKwkJCQkJCQkJICAgJmRpcnR5LCAmdGVtcF9kaXJ0 eSk7CisKKwlpZiAodXBkYXRlX3JlbGFsbGZyb3plbikKKwkJU2V0RWZmZWN0aXZlX3JlbGFsbGZy b3plbihwZ2Nmb3JtLCB0ZW1wX3BnY2Zvcm0sIChpbnQzMikgcmVsYWxsZnJvemVuLAorCQkJCQkJ CQkgICZkaXJ0eSwgJnRlbXBfZGlydHkpOworCisJaWYgKGRpcnR5KQorCQlDYXRhbG9nVHVwbGVV cGRhdGUoY3JlbCwgJmN0dXAtPnRfc2VsZiwgY3R1cCk7CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxp ZCh0ZW1wX2N0dXApKQogCXsKLQkJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KGNyZWwpOwotCQlIZWFwVHVwbGUJbmV3dHVwOworCQlpZiAodGVtcF9kaXJ0eSkKKwkJCVVwZGF0 ZVBnVGVtcENsYXNzVHVwbGUocmVsb2lkLCB0ZW1wX2N0dXApOwogCi0JCW5ld3R1cCA9IGhlYXBf bW9kaWZ5X3R1cGxlX2J5X2NvbHMoY3R1cCwgdHVwZGVzYywgbnJlcGxhY2VzLAotCQkJCQkJCQkJ CSAgIHJlcGxhY2VzLCB2YWx1ZXMsIG51bGxzKTsKLQkJQ2F0YWxvZ1R1cGxlVXBkYXRlKGNyZWws ICZuZXd0dXAtPnRfc2VsZiwgbmV3dHVwKTsKLQkJaGVhcF9mcmVldHVwbGUobmV3dHVwKTsKKwkJ aGVhcF9mcmVldHVwbGUodGVtcF9jdHVwKTsKIAl9CiAKLQlSZWxlYXNlU3lzQ2FjaGUoY3R1cCk7 CisJaGVhcF9mcmVldHVwbGUoY3R1cCk7CiAKIAkvKiByZWxlYXNlIHRoZSBsb2NrLCBjb25zaXN0 ZW50IHdpdGggdmFjX3VwZGF0ZV9yZWxzdGF0cygpICovCiAJdGFibGVfY2xvc2UoY3JlbCwgUm93 RXhjbHVzaXZlTG9jayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGNiZDI1 ZmE2MTQ0Li5lODA2OGE0NWNjOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAg LTI0MTEsNiArMjQxMSwxNyBAQCBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCkKIAlyZXR1 cm4gcmVzdWx0OwogfQogCisvKgorICogcmVsX2lzX2dsb2JhbF90ZW1wCisgKgorICoJCVJldHVy bnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24gaXMgYSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0 aW9uLgorICovCitib29sCityZWxfaXNfZ2xvYmFsX3RlbXAoT2lkIHJlbGlkKQoreworCXJldHVy biBnZXRfcmVsX3BlcnNpc3RlbmNlKHJlbGlkKSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVN UDsKK30KKwogLyoKICAqIGdldF9yZWxfcmVsYW0KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYwppbmRleCBhZjhiNTIzN2U0NS4uMjc0MTMyY2VkODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYwpAQCAtNDA0MCwxMCArNDA0MCwxMSBAQCBSZWxhdGlvblNldE5ld1JlbGZpbGVu dW1iZXIoUmVsYXRpb24gcmVsYXRpb24sIGNoYXIgcGVyc2lzdGVuY2UpCiAJCS8qIHJlbHBhZ2Vz IGV0Yy4gbmV2ZXIgY2hhbmdlIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHJlbGF0aW9uLT5yZF9y ZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9TRVFVRU5DRSkKIAkJewotCQkJY2xhc3Nmb3JtLT5yZWxw YWdlcyA9IDA7CS8qIGl0J3MgZW1wdHkgdW50aWwgZnVydGhlciBub3RpY2UgKi8KLQkJCWNsYXNz Zm9ybS0+cmVsdHVwbGVzID0gLTE7Ci0JCQljbGFzc2Zvcm0tPnJlbGFsbHZpc2libGUgPSAwOwot CQkJY2xhc3Nmb3JtLT5yZWxhbGxmcm96ZW4gPSAwOworCQkJLyogaXQncyBlbXB0eSB1bnRpbCBm dXJ0aGVyIG5vdGljZSAqLworCQkJU2V0RWZmZWN0aXZlX3JlbHBhZ2VzKGNsYXNzZm9ybSwgdGVt cF9jbGFzc2Zvcm0sIDAsIE5VTEwsIE5VTEwpOworCQkJU2V0RWZmZWN0aXZlX3JlbHR1cGxlcyhj bGFzc2Zvcm0sIHRlbXBfY2xhc3Nmb3JtLCAtMSwgTlVMTCwgTlVMTCk7CisJCQlTZXRFZmZlY3Rp dmVfcmVsYWxsdmlzaWJsZShjbGFzc2Zvcm0sIHRlbXBfY2xhc3Nmb3JtLCAwLCBOVUxMLCBOVUxM KTsKKwkJCVNldEVmZmVjdGl2ZV9yZWxhbGxmcm96ZW4oY2xhc3Nmb3JtLCB0ZW1wX2NsYXNzZm9y bSwgMCwgTlVMTCwgTlVMTCk7CiAJCX0KIAkJY2xhc3Nmb3JtLT5yZWxmcm96ZW54aWQgPSBmcmVl emVYaWQ7CiAJCWNsYXNzZm9ybS0+cmVsbWlubXhpZCA9IG1pbm11bHRpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3RlbXBfY2xhc3MuaAppbmRleCA4MDAxMWVhMDk1NC4uZTZiNzdiNTBkMjMgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5oCkBAIC00NSw2ICs0NSwxOCBAQCBDQVRBTE9HKHBnX3Rl bXBfY2xhc3MsODA4MixUZW1wUmVsYXRpb25SZWxhdGlvbklkKSBCS0lfVEVNUF9SRUxBVElPTgog CiAJLyogaWRlbnRpZmllciBvZiB0YWJsZSBzcGFjZSBmb3IgcmVsYXRpb24gKDAgbWVhbnMgZGVm YXVsdCBmb3IgZGF0YWJhc2UpICovCiAJT2lkCQkJcmVsdGFibGVzcGFjZSBCS0lfREVGQVVMVCgw KSBCS0lfTE9PS1VQX09QVChwZ190YWJsZXNwYWNlKTsKKworCS8qICMgb2YgYmxvY2tzIChub3Qg YWx3YXlzIHVwLXRvLWRhdGUpICovCisJaW50MzIJCXJlbHBhZ2VzIEJLSV9ERUZBVUxUKDApOwor CisJLyogIyBvZiB0dXBsZXMgKG5vdCBhbHdheXMgdXAtdG8tZGF0ZTsgLTEgbWVhbnMgInVua25v d24iKSAqLworCWZsb2F0NAkJcmVsdHVwbGVzIEJLSV9ERUZBVUxUKC0xKTsKKworCS8qICMgb2Yg YWxsLXZpc2libGUgYmxvY2tzIChub3QgYWx3YXlzIHVwLXRvLWRhdGUpICovCisJaW50MzIJCXJl bGFsbHZpc2libGUgQktJX0RFRkFVTFQoMCk7CisKKwkvKiAjIG9mIGFsbC1mcm96ZW4gYmxvY2tz IChub3QgYWx3YXlzIHVwLXRvLWRhdGUpICovCisJaW50MzIJCXJlbGFsbGZyb3plbiBCS0lfREVG QVVMVCgwKTsKIH0gRm9ybURhdGFfcGdfdGVtcF9jbGFzczsKIAogRU5EX0NBVEFMT0dfU1RSVUNU CkBAIC03MSw2ICs4MywxMCBAQCBNQUtFX1NZU0NBQ0hFKFRFTVBSRUxPSUQsIHBnX3RlbXBfY2xh c3Nfb2lkX2luZGV4LCAxMjgpOwogCQkodGFyZ2V0KS0+b2lkID0gKHNvdXJjZSktPm9pZDsgXAog CQkodGFyZ2V0KS0+cmVsZmlsZW5vZGUgPSAoc291cmNlKS0+cmVsZmlsZW5vZGU7IFwKIAkJKHRh cmdldCktPnJlbHRhYmxlc3BhY2UgPSAoc291cmNlKS0+cmVsdGFibGVzcGFjZTsgXAorCQkodGFy Z2V0KS0+cmVscGFnZXMgPSAoc291cmNlKS0+cmVscGFnZXM7IFwKKwkJKHRhcmdldCktPnJlbHR1 cGxlcyA9IChzb3VyY2UpLT5yZWx0dXBsZXM7IFwKKwkJKHRhcmdldCktPnJlbGFsbHZpc2libGUg PSAoc291cmNlKS0+cmVsYWxsdmlzaWJsZTsgXAorCQkodGFyZ2V0KS0+cmVsYWxsZnJvemVuID0g KHNvdXJjZSktPnJlbGFsbGZyb3plbjsgXAogCX0gd2hpbGUgKDApCiAKIC8qCkBAIC05Myw2ICsx MDksNDYgQEAgR2V0RWZmZWN0aXZlX3JlbHRhYmxlc3BhY2UoRm9ybV9wZ19jbGFzcyBjZiwgRm9y bV9wZ190ZW1wX2NsYXNzIHRmKQogCXJldHVybiB0ZiAhPSBOVUxMID8gdGYtPnJlbHRhYmxlc3Bh Y2UgOiBjZi0+cmVsdGFibGVzcGFjZTsKIH0KIAorLyoKKyAqIEdldCB0aGUgZWZmZWN0aXZlIHZh bHVlIG9mIHJlbHBhZ2VzIGZyb20gcGdfY2xhc3MgYW5kIHBnX3RlbXBfY2xhc3MgdHVwbGUKKyAq IGRhdGEuICBUaGUgdmFsdWUgZnJvbSBwZ190ZW1wX2NsYXNzIChpZiBwcmVzZW50KSB0YWtlcyBw cmVjZWRlbmNlLgorICovCitzdGF0aWMgaW5saW5lIGludDMyCitHZXRFZmZlY3RpdmVfcmVscGFn ZXMoRm9ybV9wZ19jbGFzcyBjZiwgRm9ybV9wZ190ZW1wX2NsYXNzIHRmKQoreworCXJldHVybiB0 ZiAhPSBOVUxMID8gdGYtPnJlbHBhZ2VzIDogY2YtPnJlbHBhZ2VzOworfQorCisvKgorICogR2V0 IHRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgcmVsdHVwbGVzIGZyb20gcGdfY2xhc3MgYW5kIHBnX3Rl bXBfY2xhc3MgdHVwbGUKKyAqIGRhdGEuICBUaGUgdmFsdWUgZnJvbSBwZ190ZW1wX2NsYXNzIChp ZiBwcmVzZW50KSB0YWtlcyBwcmVjZWRlbmNlLgorICovCitzdGF0aWMgaW5saW5lIGZsb2F0NAor R2V0RWZmZWN0aXZlX3JlbHR1cGxlcyhGb3JtX3BnX2NsYXNzIGNmLCBGb3JtX3BnX3RlbXBfY2xh c3MgdGYpCit7CisJcmV0dXJuIHRmICE9IE5VTEwgPyB0Zi0+cmVsdHVwbGVzIDogY2YtPnJlbHR1 cGxlczsKK30KKworLyoKKyAqIEdldCB0aGUgZWZmZWN0aXZlIHZhbHVlIG9mIHJlbGFsbHZpc2li bGUgZnJvbSBwZ19jbGFzcyBhbmQgcGdfdGVtcF9jbGFzcworICogdHVwbGUgZGF0YS4gIFRoZSB2 YWx1ZSBmcm9tIHBnX3RlbXBfY2xhc3MgKGlmIHByZXNlbnQpIHRha2VzIHByZWNlZGVuY2UuCisg Ki8KK3N0YXRpYyBpbmxpbmUgaW50MzIKK0dldEVmZmVjdGl2ZV9yZWxhbGx2aXNpYmxlKEZvcm1f cGdfY2xhc3MgY2YsIEZvcm1fcGdfdGVtcF9jbGFzcyB0ZikKK3sKKwlyZXR1cm4gdGYgIT0gTlVM TCA/IHRmLT5yZWxhbGx2aXNpYmxlIDogY2YtPnJlbGFsbHZpc2libGU7Cit9CisKKy8qCisgKiBH ZXQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiByZWxhbGxmcm96ZW4gZnJvbSBwZ19jbGFzcyBhbmQg cGdfdGVtcF9jbGFzcworICogdHVwbGUgZGF0YS4gIFRoZSB2YWx1ZSBmcm9tIHBnX3RlbXBfY2xh c3MgKGlmIHByZXNlbnQpIHRha2VzIHByZWNlZGVuY2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50 MzIKK0dldEVmZmVjdGl2ZV9yZWxhbGxmcm96ZW4oRm9ybV9wZ19jbGFzcyBjZiwgRm9ybV9wZ190 ZW1wX2NsYXNzIHRmKQoreworCXJldHVybiB0ZiAhPSBOVUxMID8gdGYtPnJlbGFsbGZyb3plbiA6 IGNmLT5yZWxhbGxmcm96ZW47Cit9CisKIC8qCiAgKiBTZXQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBv ZiByZWxmaWxlbm9kZSBpbiB0dXBsZSBmb3JtIGRhdGEgZnJvbSBwZ19jbGFzcyBvcgogICogcGdf dGVtcF9jbGFzcy4gIFRoZSB2YWx1ZSBpcyBzZXQgaW4gcGdfdGVtcF9jbGFzcyBpbnN0ZWFkIG9m IHBnX2NsYXNzLCBpZgpAQCAtMTIxLDYgKzE3NywxMTQgQEAgU2V0RWZmZWN0aXZlX3JlbHRhYmxl c3BhY2UoRm9ybV9wZ19jbGFzcyBjZiwgRm9ybV9wZ190ZW1wX2NsYXNzIHRmLCBPaWQgdmFsKQog CQl0Zi0+cmVsdGFibGVzcGFjZSA9IHZhbDsKIH0KIAorLyoKKyAqIFNldCB0aGUgZWZmZWN0aXZl IHZhbHVlIG9mIHJlbHBhZ2VzIGluIHR1cGxlIGZvcm0gZGF0YSBmcm9tIHBnX2NsYXNzIG9yCisg KiBwZ190ZW1wX2NsYXNzLiAgVGhlIHZhbHVlIGlzIHNldCBpbiBwZ190ZW1wX2NsYXNzIGluc3Rl YWQgb2YgcGdfY2xhc3MsIGlmCisgKiB0aGUgcGdfdGVtcF9jbGFzcyB0dXBsZSBmb3JtIGRhdGEg aXMgbm9uLU5VTEwuICBJZiBub24tTlVMTCwgdGhlIGNkaXJ0eSBvcgorICogdGRpcnR5IGZsYWcg aXMgdXBkYXRlZCwgaWYgdGhlIHZhbHVlIGFjdHVhbGx5IGNoYW5nZXMuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorU2V0RWZmZWN0aXZlX3JlbHBhZ2VzKEZvcm1fcGdfY2xhc3MgY2YsIEZvcm1f cGdfdGVtcF9jbGFzcyB0ZiwgaW50MzIgdmFsLAorCQkJCQkgIGJvb2wgKmNkaXJ0eSwgYm9vbCAq dGRpcnR5KQoreworCWlmICh0ZiAhPSBOVUxMKQorCXsKKwkJaWYgKHZhbCAhPSB0Zi0+cmVscGFn ZXMpCisJCXsKKwkJCXRmLT5yZWxwYWdlcyA9IHZhbDsKKwkJCWlmICh0ZGlydHkgIT0gTlVMTCkK KwkJCQkqdGRpcnR5ID0gdHJ1ZTsKKwkJfQorCX0KKwllbHNlIGlmICh2YWwgIT0gY2YtPnJlbHBh Z2VzKQorCXsKKwkJY2YtPnJlbHBhZ2VzID0gdmFsOworCQlpZiAoY2RpcnR5ICE9IE5VTEwpCisJ CQkqY2RpcnR5ID0gdHJ1ZTsKKwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGVmZmVjdGl2ZSB2YWx1 ZSBvZiByZWx0dXBsZXMgaW4gdHVwbGUgZm9ybSBkYXRhIGZyb20gcGdfY2xhc3Mgb3IKKyAqIHBn X3RlbXBfY2xhc3MuICBUaGUgdmFsdWUgaXMgc2V0IGluIHBnX3RlbXBfY2xhc3MgaW5zdGVhZCBv ZiBwZ19jbGFzcywgaWYKKyAqIHRoZSBwZ190ZW1wX2NsYXNzIHR1cGxlIGZvcm0gZGF0YSBpcyBu b24tTlVMTC4gIElmIG5vbi1OVUxMLCB0aGUgY2RpcnR5IG9yCisgKiB0ZGlydHkgZmxhZyBpcyB1 cGRhdGVkLCBpZiB0aGUgdmFsdWUgYWN0dWFsbHkgY2hhbmdlcy4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCitTZXRFZmZlY3RpdmVfcmVsdHVwbGVzKEZvcm1fcGdfY2xhc3MgY2YsIEZvcm1fcGdf dGVtcF9jbGFzcyB0ZiwgZmxvYXQ0IHZhbCwKKwkJCQkJICAgYm9vbCAqY2RpcnR5LCBib29sICp0 ZGlydHkpCit7CisJaWYgKHRmICE9IE5VTEwpCisJeworCQlpZiAodmFsICE9IHRmLT5yZWx0dXBs ZXMpCisJCXsKKwkJCXRmLT5yZWx0dXBsZXMgPSB2YWw7CisJCQlpZiAodGRpcnR5ICE9IE5VTEwp CisJCQkJKnRkaXJ0eSA9IHRydWU7CisJCX0KKwl9CisJZWxzZSBpZiAodmFsICE9IGNmLT5yZWx0 dXBsZXMpCisJeworCQljZi0+cmVsdHVwbGVzID0gdmFsOworCQlpZiAoY2RpcnR5ICE9IE5VTEwp CisJCQkqY2RpcnR5ID0gdHJ1ZTsKKwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGVmZmVjdGl2ZSB2 YWx1ZSBvZiByZWxhbGx2aXNpYmxlIGluIHR1cGxlIGZvcm0gZGF0YSBmcm9tIHBnX2NsYXNzCisg KiBvciBwZ190ZW1wX2NsYXNzLiAgVGhlIHZhbHVlIGlzIHNldCBpbiBwZ190ZW1wX2NsYXNzIGlu c3RlYWQgb2YgcGdfY2xhc3MsCisgKiBpZiB0aGUgcGdfdGVtcF9jbGFzcyB0dXBsZSBmb3JtIGRh dGEgaXMgbm9uLU5VTEwuICBJZiBub24tTlVMTCwgdGhlIGNkaXJ0eQorICogb3IgdGRpcnR5IGZs YWcgaXMgdXBkYXRlZCwgaWYgdGhlIHZhbHVlIGFjdHVhbGx5IGNoYW5nZXMuCisgKi8KK3N0YXRp YyBpbmxpbmUgdm9pZAorU2V0RWZmZWN0aXZlX3JlbGFsbHZpc2libGUoRm9ybV9wZ19jbGFzcyBj ZiwgRm9ybV9wZ190ZW1wX2NsYXNzIHRmLCBpbnQzMiB2YWwsCisJCQkJCQkgICBib29sICpjZGly dHksIGJvb2wgKnRkaXJ0eSkKK3sKKwlpZiAodGYgIT0gTlVMTCkKKwl7CisJCWlmICh2YWwgIT0g dGYtPnJlbGFsbHZpc2libGUpCisJCXsKKwkJCXRmLT5yZWxhbGx2aXNpYmxlID0gdmFsOworCQkJ aWYgKHRkaXJ0eSAhPSBOVUxMKQorCQkJCSp0ZGlydHkgPSB0cnVlOworCQl9CisJfQorCWVsc2Ug aWYgKHZhbCAhPSBjZi0+cmVsYWxsdmlzaWJsZSkKKwl7CisJCWNmLT5yZWxhbGx2aXNpYmxlID0g dmFsOworCQlpZiAoY2RpcnR5ICE9IE5VTEwpCisJCQkqY2RpcnR5ID0gdHJ1ZTsKKwl9Cit9CisK Ky8qCisgKiBTZXQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiByZWxhbGxmcm96ZW4gaW4gdHVwbGUg Zm9ybSBkYXRhIGZyb20gcGdfY2xhc3Mgb3IKKyAqIHBnX3RlbXBfY2xhc3MuICBUaGUgdmFsdWUg aXMgc2V0IGluIHBnX3RlbXBfY2xhc3MgaW5zdGVhZCBvZiBwZ19jbGFzcywgaWYKKyAqIHRoZSBw Z190ZW1wX2NsYXNzIHR1cGxlIGZvcm0gZGF0YSBpcyBub24tTlVMTC4gIElmIG5vbi1OVUxMLCB0 aGUgY2RpcnR5IG9yCisgKiB0ZGlydHkgZmxhZyBpcyB1cGRhdGVkLCBpZiB0aGUgdmFsdWUgYWN0 dWFsbHkgY2hhbmdlcy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitTZXRFZmZlY3RpdmVfcmVs YWxsZnJvemVuKEZvcm1fcGdfY2xhc3MgY2YsIEZvcm1fcGdfdGVtcF9jbGFzcyB0ZiwgaW50MzIg dmFsLAorCQkJCQkJICBib29sICpjZGlydHksIGJvb2wgKnRkaXJ0eSkKK3sKKwlpZiAodGYgIT0g TlVMTCkKKwl7CisJCWlmICh2YWwgIT0gdGYtPnJlbGFsbGZyb3plbikKKwkJeworCQkJdGYtPnJl bGFsbGZyb3plbiA9IHZhbDsKKwkJCWlmICh0ZGlydHkgIT0gTlVMTCkKKwkJCQkqdGRpcnR5ID0g dHJ1ZTsKKwkJfQorCX0KKwllbHNlIGlmICh2YWwgIT0gY2YtPnJlbGFsbGZyb3plbikKKwl7CisJ CWNmLT5yZWxhbGxmcm96ZW4gPSB2YWw7CisJCWlmIChjZGlydHkgIT0gTlVMTCkKKwkJCSpjZGly dHkgPSB0cnVlOworCX0KK30KKwogCiBleHRlcm4gSGVhcFR1cGxlIEdldFBnVGVtcENsYXNzVHVw bGUoT2lkIHJlbGlkKTsKIApAQCAtMTI4LDYgKzI5Miw4IEBAIGV4dGVybiB2b2lkIEluc2VydFBn VGVtcENsYXNzVHVwbGUoUmVsYXRpb24gcmVsKTsKIAogZXh0ZXJuIHZvaWQgVXBkYXRlUGdUZW1w Q2xhc3NUdXBsZShPaWQgcmVsaWQsIEhlYXBUdXBsZSBuZXd0dXBsZSk7CiAKK2V4dGVybiB2b2lk IFVwZGF0ZVBnVGVtcENsYXNzVHVwbGVJblBsYWNlKE9pZCByZWxpZCwgSGVhcFR1cGxlIG5ld3R1 cGxlKTsKKwogZXh0ZXJuIHZvaWQgRGVsZXRlUGdUZW1wQ2xhc3NUdXBsZShPaWQgcmVsaWQpOwog CiBleHRlcm4gSGVhcFR1cGxlIEdldFBnQ2xhc3NBbmRQZ1RlbXBDbGFzc1R1cGxlcyhPaWQgcmVs aWQsIGJvb2wgbG9ja190dXBsZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNj YWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggODY1OTgwY2IwZjEu LmM1NTZiNjY3YzVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAor KysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTUwLDYgKzE1MCw3IEBAIGV4 dGVybiBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3Jl bF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxlc3Bh Y2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlk KTsKK2V4dGVybiBib29sIHJlbF9pc19nbG9iYWxfdGVtcChPaWQgcmVsaWQpOwogZXh0ZXJuIE9p ZAlnZXRfcmVsX3JlbGFtKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJv bXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJ Z2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVz KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9nbG9iYWwtdGVtcC5v dXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0CmluZGV4IDY1 MDI1NzIxZGIxLi5iYmFhNzY4ZjQ3OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4 cGVjdGVkL2dsb2JhbC10ZW1wLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv Z2xvYmFsLXRlbXAub3V0CkBAIC0yNTIsNiArMjUyLDM4IEBAIGtleXxwZ190eXBlb2Z8dmFsCiAK IHN0ZXAgZHJvcDE6IERST1AgVEFCTEUgdG1wMjsKIAorc3RhcnRpbmcgcGVybXV0YXRpb246IGNy ZWF0ZTFkciBiMSBiMiBpbnMxXzIgaW5zMl8yIHNlbDFfMiBzZWwyXzIgYzEgYzIgc2VsMV8yIHNl bDJfMiBkcm9wMQorc3RlcCBjcmVhdGUxZHI6IENSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAy IChrZXkgaW50LCB2YWwgdGV4dCkgT04gQ09NTUlUIERFTEVURSBST1dTOworc3RlcCBiMTogQkVH SU47CitzdGVwIGIyOiBCRUdJTjsKK3N0ZXAgaW5zMV8yOiBJTlNFUlQgSU5UTyB0bXAyIFZBTFVF UyAoMSwgJ3MxJyk7CitzdGVwIGluczJfMjogSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEsICdz MicpOworc3RlcCBzZWwxXzI6IFNFTEVDVCAqIEZST00gdG1wMjsKK2tleXx2YWwKKy0tLSstLS0K KyAgMXxzMSAKKygxIHJvdykKKworc3RlcCBzZWwyXzI6IFNFTEVDVCAqIEZST00gdG1wMjsKK2tl eXx2YWwKKy0tLSstLS0KKyAgMXxzMiAKKygxIHJvdykKKworc3RlcCBjMTogQ09NTUlUOworc3Rl cCBjMjogQ09NTUlUOworc3RlcCBzZWwxXzI6IFNFTEVDVCAqIEZST00gdG1wMjsKK2tleXx2YWwK Ky0tLSstLS0KKygwIHJvd3MpCisKK3N0ZXAgc2VsMl8yOiBTRUxFQ1QgKiBGUk9NIHRtcDI7Citr ZXl8dmFsCistLS0rLS0tCisoMCByb3dzKQorCitzdGVwIGRyb3AxOiBEUk9QIFRBQkxFIHRtcDI7 CisKIHN0YXJ0aW5nIHBlcm11dGF0aW9uOiBjcmVhdGUxZHIgaW5zMV8yIGluczJfMiBkcm9wMSBj cmVhdGUxZHIgaW5zMV8yIGluczJfMiBkcm9wMQogc3RlcCBjcmVhdGUxZHI6IENSRUFURSBHTE9C QUwgVEVNUCBUQUJMRSB0bXAyIChrZXkgaW50LCB2YWwgdGV4dCkgT04gQ09NTUlUIERFTEVURSBS T1dTOwogc3RlcCBpbnMxXzI6IElOU0VSVCBJTlRPIHRtcDIgVkFMVUVTICgxLCAnczEnKTsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjIGIvc3Jj L3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10ZW1wLnNwZWMKaW5kZXggZWNiMDdhZDBiNmUu LmE1N2ZjZmQzZTUzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFs LXRlbXAuc3BlYworKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFsLXRlbXAuc3Bl YwpAQCAtMTQsNiArMTQsNyBAQCB0ZWFyZG93biB7CiAKIHNlc3Npb24gczEKIHNldHVwIHsgU0VU IGFsbG93X2luX3BsYWNlX3RhYmxlc3BhY2VzID0gdHJ1ZTsgfQorc3RlcCBiMSB7IEJFR0lOOyB9 CiBzdGVwIGNyZWF0ZV90YmxzcGFjZSB7IENSRUFURSBUQUJMRVNQQUNFIHJlZ3Jlc3NfaXNvbGF0 aW9uX3RhYmxlc3BhY2UgTE9DQVRJT04gJyc7IH0KIHN0ZXAgbGlzdF90YmxzcGFjZXMgeyBTRUxF Q1Qgc3BjbmFtZSBGUk9NIHBnX3RhYmxlc3BhY2UgT1JERVIgQlkgMTsgfQogc3RlcCBkcm9wX3Ri bHNwYWNlIHsgRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfaXNvbGF0aW9uX3RhYmxlc3BhY2U7IH0K QEAgLTI1LDEwICsyNiwxMiBAQCBzdGVwIHNlbDFwIHsgU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFz cywgKiBGUk9NIHRtcF9wYXJ0ZWQ7IH0KIHN0ZXAgY3JlYXRlMSB7IENSRUFURSBHTE9CQUwgVEVN UCBUQUJMRSB0bXAyIChrZXkgaW50LCB2YWwgdGV4dCk7IH0KIHN0ZXAgY3JlYXRlMWRyIHsgQ1JF QVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGtleSBpbnQsIHZhbCB0ZXh0KSBPTiBDT01NSVQg REVMRVRFIFJPV1M7IH0KIHN0ZXAgaW5zMV8yIHsgSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMgKDEs ICdzMScpOyB9CitzdGVwIHNlbDFfMiB7IFNFTEVDVCAqIEZST00gdG1wMjsgfQogc3RlcCBhbHRl cjFhIHsgQUxURVIgVEFCTEUgdG1wMiBBTFRFUiBDT0xVTU4ga2V5IFNFVCBEQVRBIFRZUEUgbnVt ZXJpYzsgfQogc3RlcCBhbHRlcjFiIHsgQUxURVIgVEFCTEUgdG1wMiBBTFRFUiBDT0xVTU4gdmFs IFNFVCBOT1QgTlVMTDsgfQogc3RlcCBzZWx0eXBlMSB7IFNFTEVDVCBrZXksIHBnX3R5cGVvZihr ZXkpLCB2YWwgRlJPTSB0bXAyOyB9CiBzdGVwIGRyb3AxIHsgRFJPUCBUQUJMRSB0bXAyOyB9Citz dGVwIGMxIHsgQ09NTUlUOyB9CiBzdGVwIGlkeDEgeyBDUkVBVEUgSU5ERVggdG1wX3ZhbF9pZHgg T04gdG1wKHZhbCk7IH0KIHN0ZXAgc2VsMV9pZHggewogICBTRVQgZW5hYmxlX3NlcXNjYW4gPSBv ZmY7CkBAIC02Myw2ICs2Niw3IEBAIHN0ZXAgcjIgeyBST0xMQkFDSzsgfQogc3RlcCBzcDIgeyBT QVZFUE9JTlQgc3A7IH0KIHN0ZXAgcnNwMiB7IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcDsgfQog c3RlcCBpbnMyXzIgeyBJTlNFUlQgSU5UTyB0bXAyIFZBTFVFUyAoMSwgJ3MyJyk7IH0KK3N0ZXAg c2VsMl8yIHsgU0VMRUNUICogRlJPTSB0bXAyOyB9CiBzdGVwIHNlbHR5cGUyIHsgU0VMRUNUIGtl eSwgcGdfdHlwZW9mKGtleSksIHZhbCBGUk9NIHRtcDI7IH0KIHN0ZXAgc2VsMl9pZHggewogICBT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CkBAIC0xMDAsNiArMTA0LDkgQEAgcGVybXV0YXRpb24g aW5zMSBiMiBpbnMyIHNwMiB0MiByc3AyIHNlbDEgc2VsMiByMiBzZWwxIHNlbDIKIHBlcm11dGF0 aW9uIGNyZWF0ZTEgaW5zMV8yIGFsdGVyMWEgYWx0ZXIxYiBpbnMyXzIgc2VsdHlwZTEgc2VsdHlw ZTIgZHJvcDEKIHBlcm11dGF0aW9uIGNyZWF0ZTEgaW5zMV8yIGluczJfMiBhbHRlcjFhIGFsdGVy MWIgc2VsdHlwZTEgc2VsdHlwZTIgZHJvcDEKIAorIyBUZXN0IGNvbmN1cnJlbnQgT04gQ09NTUlU IERFTEVURSBST1dTCitwZXJtdXRhdGlvbiBjcmVhdGUxZHIgYjEgYjIgaW5zMV8yIGluczJfMiBz ZWwxXzIgc2VsMl8yIGMxIGMyIHNlbDFfMiBzZWwyXzIgZHJvcDEKKwogIyBUZXN0IERST1Agd2l0 aCBPTiBDT01NSVQgREVMRVRFIFJPV1MKIHBlcm11dGF0aW9uIGNyZWF0ZTFkciBpbnMxXzIgaW5z Ml8yIGRyb3AxIGNyZWF0ZTFkciBpbnMxXzIgaW5zMl8yIGRyb3AxCiAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQKaW5kZXggY2M5NDAwMjg0ZmYuLjhjZWMxYjBjZmNh IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dApAQCAtNDk0LDYg KzQ5NCwxNDIgQEAgU0VMRUNUICogRlJPTSB0bXAxOwogIDEgfCB4eHggfCAxCiAoMSByb3cpCiAK Ky0tIFRlc3Qgc3RhdHMgdXBkYXRlcyBhcHBsaWVkIGJ5IENSRUFURSBJTkRFWCwgQU5BTFlaRSwg VkFDVVVNLCBhbmQgUkVQQUNLCitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQp OworSU5TRVJUIElOVE8gdG1wMiBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAp OworU0VMRUNUIGMub2lkOjpyZWdjbGFzcywKKyAgICAgICBjLnJlbHBhZ2VzIEFTIGdsb2JhbF9y ZWxwYWdlcywgYy5yZWx0dXBsZXMgQVMgZ2xvYmFsX3JlbHR1cGxlcywKKyAgICAgICBDQVNFIFdI RU4gdC5yZWxwYWdlcyA9IDAgVEhFTiAnemVybycgRUxTRSAnbm9uLXplcm8nIEVORCBBUyBsb2Nh bF9yZWxwYWdlcywKKyAgICAgICB0LnJlbHR1cGxlcyBBUyBsb2NhbF9yZWx0dXBsZXMKKyAgRlJP TSBwZ19jbGFzcyBjIEpPSU4gcGdfdGVtcF9jbGFzcyB0IE9OIHQub2lkID0gYy5vaWQKKyBXSEVS RSBjLm9pZCA9ICd0bXAyJzo6cmVnY2xhc3M7Cisgb2lkICB8IGdsb2JhbF9yZWxwYWdlcyB8IGds b2JhbF9yZWx0dXBsZXMgfCBsb2NhbF9yZWxwYWdlcyB8IGxvY2FsX3JlbHR1cGxlcyAKKy0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLQorIHRtcDIgfCAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAg IC0xIHwgemVybyAgICAgICAgICAgfCAgICAgICAgICAgICAgLTEKKygxIHJvdykKKworQ1JFQVRF IElOREVYIHRtcDJfYV9pZHggT04gdG1wMihhKTsKK1NFTEVDVCBjLm9pZDo6cmVnY2xhc3MsCisg ICAgICAgYy5yZWxwYWdlcyBBUyBnbG9iYWxfcmVscGFnZXMsIGMucmVsdHVwbGVzIEFTIGdsb2Jh bF9yZWx0dXBsZXMsCisgICAgICAgQ0FTRSBXSEVOIHQucmVscGFnZXMgPSAwIFRIRU4gJ3plcm8n IEVMU0UgJ25vbi16ZXJvJyBFTkQgQVMgbG9jYWxfcmVscGFnZXMsCisgICAgICAgdC5yZWx0dXBs ZXMgQVMgbG9jYWxfcmVsdHVwbGVzCisgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3RlbXBfY2xh c3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5vaWQgPSAndG1wMic6OnJlZ2NsYXNzIE9S IGMub2lkID0gJ3RtcDJfYV9pZHgnOjpyZWdjbGFzcyBPUkRFUiBCWSAxOworICAgIG9pZCAgICAg fCBnbG9iYWxfcmVscGFnZXMgfCBnbG9iYWxfcmVsdHVwbGVzIHwgbG9jYWxfcmVscGFnZXMgfCBs b2NhbF9yZWx0dXBsZXMgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyB0bXAyICAgICAg IHwgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAtMSB8IG5vbi16ZXJvICAgICAgIHwg ICAgICAgICAgICAgMTAwCisgdG1wMl9hX2lkeCB8ICAgICAgICAgICAgICAgMCB8ICAgICAgICAg ICAgICAgIDAgfCBub24temVybyAgICAgICB8ICAgICAgICAgICAgIDEwMAorKDIgcm93cykKKwor SU5TRVJUIElOVE8gdG1wMiBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDEsIDMwMCk7 CitBTkFMWVpFIHRtcDI7CitTRUxFQ1QgYy5vaWQ6OnJlZ2NsYXNzLAorICAgICAgIGMucmVscGFn ZXMgQVMgZ2xvYmFsX3JlbHBhZ2VzLCBjLnJlbHR1cGxlcyBBUyBnbG9iYWxfcmVsdHVwbGVzLAor ICAgICAgIENBU0UgV0hFTiB0LnJlbHBhZ2VzID0gMCBUSEVOICd6ZXJvJyBFTFNFICdub24temVy bycgRU5EIEFTIGxvY2FsX3JlbHBhZ2VzLAorICAgICAgIHQucmVsdHVwbGVzIEFTIGxvY2FsX3Jl bHR1cGxlcworICBGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ190ZW1wX2NsYXNzIHQgT04gdC5vaWQg PSBjLm9pZAorIFdIRVJFIGMub2lkID0gJ3RtcDInOjpyZWdjbGFzcyBPUiBjLm9pZCA9ICd0bXAy X2FfaWR4Jzo6cmVnY2xhc3MgT1JERVIgQlkgMTsKKyAgICBvaWQgICAgIHwgZ2xvYmFsX3JlbHBh Z2VzIHwgZ2xvYmFsX3JlbHR1cGxlcyB8IGxvY2FsX3JlbHBhZ2VzIHwgbG9jYWxfcmVsdHVwbGVz IAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgdG1wMiAgICAgICB8ICAgICAgICAgICAg ICAgMCB8ICAgICAgICAgICAgICAgLTEgfCBub24temVybyAgICAgICB8ICAgICAgICAgICAgIDMw MAorIHRtcDJfYV9pZHggfCAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAwIHwgbm9u LXplcm8gICAgICAgfCAgICAgICAgICAgICAzMDAKKygyIHJvd3MpCisKK0RFTEVURSBGUk9NIHRt cDIgV0hFUkUgYSAlIDIgPSAwOworVkFDVVVNIEFOQUxZWkUgdG1wMjsKK1NFTEVDVCBjLm9pZDo6 cmVnY2xhc3MsCisgICAgICAgYy5yZWxwYWdlcyBBUyBnbG9iYWxfcmVscGFnZXMsIGMucmVsdHVw bGVzIEFTIGdsb2JhbF9yZWx0dXBsZXMsCisgICAgICAgQ0FTRSBXSEVOIHQucmVscGFnZXMgPSAw IFRIRU4gJ3plcm8nIEVMU0UgJ25vbi16ZXJvJyBFTkQgQVMgbG9jYWxfcmVscGFnZXMsCisgICAg ICAgdC5yZWx0dXBsZXMgQVMgbG9jYWxfcmVsdHVwbGVzCisgIEZST00gcGdfY2xhc3MgYyBKT0lO IHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5vaWQgPSAndG1wMic6 OnJlZ2NsYXNzIE9SIGMub2lkID0gJ3RtcDJfYV9pZHgnOjpyZWdjbGFzcyBPUkRFUiBCWSAxOwor ICAgIG9pZCAgICAgfCBnbG9iYWxfcmVscGFnZXMgfCBnbG9iYWxfcmVsdHVwbGVzIHwgbG9jYWxf cmVscGFnZXMgfCBsb2NhbF9yZWx0dXBsZXMgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0K KyB0bXAyICAgICAgIHwgICAgICAgICAgICAgICAwIHwgICAgICAgICAgICAgICAtMSB8IG5vbi16 ZXJvICAgICAgIHwgICAgICAgICAgICAgMTUwCisgdG1wMl9hX2lkeCB8ICAgICAgICAgICAgICAg MCB8ICAgICAgICAgICAgICAgIDAgfCBub24temVybyAgICAgICB8ICAgICAgICAgICAgIDE1MAor KDIgcm93cykKKworREVMRVRFIEZST00gdG1wMiBXSEVSRSBhICUgMyA9IDA7CitSRVBBQ0sgKEFO QUxZWkUpIHRtcDI7CitTRUxFQ1QgYy5vaWQ6OnJlZ2NsYXNzLAorICAgICAgIGMucmVscGFnZXMg QVMgZ2xvYmFsX3JlbHBhZ2VzLCBjLnJlbHR1cGxlcyBBUyBnbG9iYWxfcmVsdHVwbGVzLAorICAg ICAgIENBU0UgV0hFTiB0LnJlbHBhZ2VzID0gMCBUSEVOICd6ZXJvJyBFTFNFICdub24temVybycg RU5EIEFTIGxvY2FsX3JlbHBhZ2VzLAorICAgICAgIHQucmVsdHVwbGVzIEFTIGxvY2FsX3JlbHR1 cGxlcworICBGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ190ZW1wX2NsYXNzIHQgT04gdC5vaWQgPSBj Lm9pZAorIFdIRVJFIGMub2lkID0gJ3RtcDInOjpyZWdjbGFzcyBPUiBjLm9pZCA9ICd0bXAyX2Ff aWR4Jzo6cmVnY2xhc3MgT1JERVIgQlkgMTsKKyAgICBvaWQgICAgIHwgZ2xvYmFsX3JlbHBhZ2Vz IHwgZ2xvYmFsX3JlbHR1cGxlcyB8IGxvY2FsX3JlbHBhZ2VzIHwgbG9jYWxfcmVsdHVwbGVzIAor LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgdG1wMiAgICAgICB8ICAgICAgICAgICAgICAg MCB8ICAgICAgICAgICAgICAgLTEgfCBub24temVybyAgICAgICB8ICAgICAgICAgICAgIDEwMAor IHRtcDJfYV9pZHggfCAgICAgICAgICAgICAgIDAgfCAgICAgICAgICAgICAgICAwIHwgbm9uLXpl cm8gICAgICAgfCAgICAgICAgICAgICAxMDAKKygyIHJvd3MpCisKKy0tIFRlc3Qgc3RhdHMgdXNh Z2UKK0NSRUFURSBGVU5DVElPTiByb3dfZXN0aW1hdGUocXVlcnkgdGV4dCkgUkVUVVJOUyBpbnQK K0xBTkdVQUdFIHBscGdzcWwgQVMKKyQkCitERUNMQVJFCisgIGxpbmUgdGV4dDsKK0JFR0lOCisg IEZPUiBsaW5lIElOIEVYRUNVVEUgRk9STUFUKCdFWFBMQUlOICVzJywgcXVlcnkpCisgIExPT1AK KyAgICBSRVRVUk4gKHJlZ2V4cF9tYXRjaChsaW5lLCAncm93cz0oXGQqKScpKVsxXTo6aW50Owor ICBFTkQgTE9PUDsKK0VORDsKKyQkOworU0VMRUNUIHJvd19lc3RpbWF0ZSgnU0VMRUNUICogRlJP TSB0bXAyJyk7Cisgcm93X2VzdGltYXRlIAorLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMDAK KygxIHJvdykKKworLS0gVGVzdCBtYW51YWxseSB1cGRhdGluZyBzdGF0cworU0VMRUNUIHBnX2Ns ZWFyX3JlbGF0aW9uX3N0YXRzKCdnbG9iYWxfdGVtcF90ZXN0cycsICd0bXAyJyk7CisgcGdfY2xl YXJfcmVsYXRpb25fc3RhdHMgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cp CisKK1NFTEVDVCBvaWQ6OnJlZ2NsYXNzLCByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNp YmxlLCByZWxhbGxmcm96ZW4KKyAgRlJPTSBwZ19jbGFzcyBXSEVSRSBvaWQgPSAndG1wMic6OnJl Z2NsYXNzOworIG9pZCAgfCByZWxwYWdlcyB8IHJlbHR1cGxlcyB8IHJlbGFsbHZpc2libGUgfCBy ZWxhbGxmcm96ZW4gCistLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0KKyB0bXAyIHwgICAgICAgIDAgfCAgICAgICAgLTEgfCAgICAgICAg ICAgICAwIHwgICAgICAgICAgICAwCisoMSByb3cpCisKK1NFTEVDVCBvaWQ6OnJlZ2NsYXNzLCBy ZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlLCByZWxhbGxmcm96ZW4KKyAgRlJPTSBw Z190ZW1wX2NsYXNzIFdIRVJFIG9pZCA9ICd0bXAyJzo6cmVnY2xhc3M7Cisgb2lkICB8IHJlbHBh Z2VzIHwgcmVsdHVwbGVzIHwgcmVsYWxsdmlzaWJsZSB8IHJlbGFsbGZyb3plbiAKKy0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHRt cDIgfCAgICAgICAgMCB8ICAgICAgICAtMSB8ICAgICAgICAgICAgIDAgfCAgICAgICAgICAgIDAK KygxIHJvdykKKworU0VMRUNUIHBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCisgICdzY2hlbWFu YW1lJywgJ2dsb2JhbF90ZW1wX3Rlc3RzJywKKyAgJ3JlbG5hbWUnLCAndG1wMicsCisgICdyZWxw YWdlcycsIDUsCisgICdyZWx0dXBsZXMnLCAxNTA6OnJlYWwsCisgICdyZWxhbGx2aXNpYmxlJywg MTAsCisgICdyZWxhbGxmcm96ZW4nLCAyMCk7CisgcGdfcmVzdG9yZV9yZWxhdGlvbl9zdGF0cyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIG9pZDo6 cmVnY2xhc3MsIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUsIHJlbGFsbGZyb3pl bgorICBGUk9NIHBnX2NsYXNzIFdIRVJFIG9pZCA9ICd0bXAyJzo6cmVnY2xhc3M7Cisgb2lkICB8 IHJlbHBhZ2VzIHwgcmVsdHVwbGVzIHwgcmVsYWxsdmlzaWJsZSB8IHJlbGFsbGZyb3plbiAKKy0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LQorIHRtcDIgfCAgICAgICAgMCB8ICAgICAgICAtMSB8ICAgICAgICAgICAgIDAgfCAgICAgICAg ICAgIDAKKygxIHJvdykKKworU0VMRUNUIG9pZDo6cmVnY2xhc3MsIHJlbHBhZ2VzLCByZWx0dXBs ZXMsIHJlbGFsbHZpc2libGUsIHJlbGFsbGZyb3plbgorICBGUk9NIHBnX3RlbXBfY2xhc3MgV0hF UkUgb2lkID0gJ3RtcDInOjpyZWdjbGFzczsKKyBvaWQgIHwgcmVscGFnZXMgfCByZWx0dXBsZXMg fCByZWxhbGx2aXNpYmxlIHwgcmVsYWxsZnJvemVuIAorLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgdG1wMiB8ICAgICAgICA1IHwg ICAgICAgMTUwIHwgICAgICAgICAgICAxMCB8ICAgICAgICAgICAyMAorKDEgcm93KQorCitEUk9Q IFRBQkxFIHRtcDI7CiAtLSBUZXN0IHZpZXcgY3JlYXRpb24KIENSRUFURSBWSUVXIHYgQVMgU0VM RUNUICogRlJPTSB0bXAxOwogU0VMRUNUICogRlJPTSB2OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFs X3RlbXAuc3FsCmluZGV4IGExOWIyNWI1YmM2Li45MjE1OTU4NjJmMiAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2dsb2JhbF90ZW1wLnNxbApAQCAtMjg1LDYgKzI4NSw4OCBAQCBDT01NSVQ7CiBTRUxFQ1Qg b2lkOjpyZWdjbGFzcyBGUk9NIHBnX3RlbXBfY2xhc3MgT1JERVIgQlkgMTsKIFNFTEVDVCAqIEZS T00gdG1wMTsKIAorLS0gVGVzdCBzdGF0cyB1cGRhdGVzIGFwcGxpZWQgYnkgQ1JFQVRFIElOREVY LCBBTkFMWVpFLCBWQUNVVU0sIGFuZCBSRVBBQ0sKK0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0 bXAyIChhIGludCk7CitJTlNFUlQgSU5UTyB0bXAyIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMCk7CitTRUxFQ1QgYy5vaWQ6OnJlZ2NsYXNzLAorICAgICAgIGMucmVscGFnZXMg QVMgZ2xvYmFsX3JlbHBhZ2VzLCBjLnJlbHR1cGxlcyBBUyBnbG9iYWxfcmVsdHVwbGVzLAorICAg ICAgIENBU0UgV0hFTiB0LnJlbHBhZ2VzID0gMCBUSEVOICd6ZXJvJyBFTFNFICdub24temVybycg RU5EIEFTIGxvY2FsX3JlbHBhZ2VzLAorICAgICAgIHQucmVsdHVwbGVzIEFTIGxvY2FsX3JlbHR1 cGxlcworICBGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ190ZW1wX2NsYXNzIHQgT04gdC5vaWQgPSBj Lm9pZAorIFdIRVJFIGMub2lkID0gJ3RtcDInOjpyZWdjbGFzczsKKworQ1JFQVRFIElOREVYIHRt cDJfYV9pZHggT04gdG1wMihhKTsKK1NFTEVDVCBjLm9pZDo6cmVnY2xhc3MsCisgICAgICAgYy5y ZWxwYWdlcyBBUyBnbG9iYWxfcmVscGFnZXMsIGMucmVsdHVwbGVzIEFTIGdsb2JhbF9yZWx0dXBs ZXMsCisgICAgICAgQ0FTRSBXSEVOIHQucmVscGFnZXMgPSAwIFRIRU4gJ3plcm8nIEVMU0UgJ25v bi16ZXJvJyBFTkQgQVMgbG9jYWxfcmVscGFnZXMsCisgICAgICAgdC5yZWx0dXBsZXMgQVMgbG9j YWxfcmVsdHVwbGVzCisgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0 Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5vaWQgPSAndG1wMic6OnJlZ2NsYXNzIE9SIGMub2lkID0g J3RtcDJfYV9pZHgnOjpyZWdjbGFzcyBPUkRFUiBCWSAxOworCitJTlNFUlQgSU5UTyB0bXAyIFNF TEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMSwgMzAwKTsKK0FOQUxZWkUgdG1wMjsKK1NF TEVDVCBjLm9pZDo6cmVnY2xhc3MsCisgICAgICAgYy5yZWxwYWdlcyBBUyBnbG9iYWxfcmVscGFn ZXMsIGMucmVsdHVwbGVzIEFTIGdsb2JhbF9yZWx0dXBsZXMsCisgICAgICAgQ0FTRSBXSEVOIHQu cmVscGFnZXMgPSAwIFRIRU4gJ3plcm8nIEVMU0UgJ25vbi16ZXJvJyBFTkQgQVMgbG9jYWxfcmVs cGFnZXMsCisgICAgICAgdC5yZWx0dXBsZXMgQVMgbG9jYWxfcmVsdHVwbGVzCisgIEZST00gcGdf Y2xhc3MgYyBKT0lOIHBnX3RlbXBfY2xhc3MgdCBPTiB0Lm9pZCA9IGMub2lkCisgV0hFUkUgYy5v aWQgPSAndG1wMic6OnJlZ2NsYXNzIE9SIGMub2lkID0gJ3RtcDJfYV9pZHgnOjpyZWdjbGFzcyBP UkRFUiBCWSAxOworCitERUxFVEUgRlJPTSB0bXAyIFdIRVJFIGEgJSAyID0gMDsKK1ZBQ1VVTSBB TkFMWVpFIHRtcDI7CitTRUxFQ1QgYy5vaWQ6OnJlZ2NsYXNzLAorICAgICAgIGMucmVscGFnZXMg QVMgZ2xvYmFsX3JlbHBhZ2VzLCBjLnJlbHR1cGxlcyBBUyBnbG9iYWxfcmVsdHVwbGVzLAorICAg ICAgIENBU0UgV0hFTiB0LnJlbHBhZ2VzID0gMCBUSEVOICd6ZXJvJyBFTFNFICdub24temVybycg RU5EIEFTIGxvY2FsX3JlbHBhZ2VzLAorICAgICAgIHQucmVsdHVwbGVzIEFTIGxvY2FsX3JlbHR1 cGxlcworICBGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ190ZW1wX2NsYXNzIHQgT04gdC5vaWQgPSBj Lm9pZAorIFdIRVJFIGMub2lkID0gJ3RtcDInOjpyZWdjbGFzcyBPUiBjLm9pZCA9ICd0bXAyX2Ff aWR4Jzo6cmVnY2xhc3MgT1JERVIgQlkgMTsKKworREVMRVRFIEZST00gdG1wMiBXSEVSRSBhICUg MyA9IDA7CitSRVBBQ0sgKEFOQUxZWkUpIHRtcDI7CitTRUxFQ1QgYy5vaWQ6OnJlZ2NsYXNzLAor ICAgICAgIGMucmVscGFnZXMgQVMgZ2xvYmFsX3JlbHBhZ2VzLCBjLnJlbHR1cGxlcyBBUyBnbG9i YWxfcmVsdHVwbGVzLAorICAgICAgIENBU0UgV0hFTiB0LnJlbHBhZ2VzID0gMCBUSEVOICd6ZXJv JyBFTFNFICdub24temVybycgRU5EIEFTIGxvY2FsX3JlbHBhZ2VzLAorICAgICAgIHQucmVsdHVw bGVzIEFTIGxvY2FsX3JlbHR1cGxlcworICBGUk9NIHBnX2NsYXNzIGMgSk9JTiBwZ190ZW1wX2Ns YXNzIHQgT04gdC5vaWQgPSBjLm9pZAorIFdIRVJFIGMub2lkID0gJ3RtcDInOjpyZWdjbGFzcyBP UiBjLm9pZCA9ICd0bXAyX2FfaWR4Jzo6cmVnY2xhc3MgT1JERVIgQlkgMTsKKworLS0gVGVzdCBz dGF0cyB1c2FnZQorQ1JFQVRFIEZVTkNUSU9OIHJvd19lc3RpbWF0ZShxdWVyeSB0ZXh0KSBSRVRV Uk5TIGludAorTEFOR1VBR0UgcGxwZ3NxbCBBUworJCQKK0RFQ0xBUkUKKyAgbGluZSB0ZXh0Owor QkVHSU4KKyAgRk9SIGxpbmUgSU4gRVhFQ1VURSBGT1JNQVQoJ0VYUExBSU4gJXMnLCBxdWVyeSkK KyAgTE9PUAorICAgIFJFVFVSTiAocmVnZXhwX21hdGNoKGxpbmUsICdyb3dzPShcZCopJykpWzFd OjppbnQ7CisgIEVORCBMT09QOworRU5EOworJCQ7CisKK1NFTEVDVCByb3dfZXN0aW1hdGUoJ1NF TEVDVCAqIEZST00gdG1wMicpOworCistLSBUZXN0IG1hbnVhbGx5IHVwZGF0aW5nIHN0YXRzCitT RUxFQ1QgcGdfY2xlYXJfcmVsYXRpb25fc3RhdHMoJ2dsb2JhbF90ZW1wX3Rlc3RzJywgJ3RtcDIn KTsKK1NFTEVDVCBvaWQ6OnJlZ2NsYXNzLCByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNp YmxlLCByZWxhbGxmcm96ZW4KKyAgRlJPTSBwZ19jbGFzcyBXSEVSRSBvaWQgPSAndG1wMic6OnJl Z2NsYXNzOworU0VMRUNUIG9pZDo6cmVnY2xhc3MsIHJlbHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFs bHZpc2libGUsIHJlbGFsbGZyb3plbgorICBGUk9NIHBnX3RlbXBfY2xhc3MgV0hFUkUgb2lkID0g J3RtcDInOjpyZWdjbGFzczsKKworU0VMRUNUIHBnX3Jlc3RvcmVfcmVsYXRpb25fc3RhdHMoCisg ICdzY2hlbWFuYW1lJywgJ2dsb2JhbF90ZW1wX3Rlc3RzJywKKyAgJ3JlbG5hbWUnLCAndG1wMics CisgICdyZWxwYWdlcycsIDUsCisgICdyZWx0dXBsZXMnLCAxNTA6OnJlYWwsCisgICdyZWxhbGx2 aXNpYmxlJywgMTAsCisgICdyZWxhbGxmcm96ZW4nLCAyMCk7CitTRUxFQ1Qgb2lkOjpyZWdjbGFz cywgcmVscGFnZXMsIHJlbHR1cGxlcywgcmVsYWxsdmlzaWJsZSwgcmVsYWxsZnJvemVuCisgIEZS T00gcGdfY2xhc3MgV0hFUkUgb2lkID0gJ3RtcDInOjpyZWdjbGFzczsKK1NFTEVDVCBvaWQ6OnJl Z2NsYXNzLCByZWxwYWdlcywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlLCByZWxhbGxmcm96ZW4K KyAgRlJPTSBwZ190ZW1wX2NsYXNzIFdIRVJFIG9pZCA9ICd0bXAyJzo6cmVnY2xhc3M7CisKK0RS T1AgVEFCTEUgdG1wMjsKKwogLS0gVGVzdCB2aWV3IGNyZWF0aW9uCiBDUkVBVEUgVklFVyB2IEFT IFNFTEVDVCAqIEZST00gdG1wMTsKIFNFTEVDVCAqIEZST00gdjsKLS0gCjIuNTEuMAoK --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0007-Add-relfrozenxid-and-relminmxid-columns-to-pg_tem.patch" Content-Disposition: attachment; filename="v7-0007-Add-relfrozenxid-and-relminmxid-columns-to-pg_tem.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr9161vg6 RnJvbSBiZDlmYjg4NmI2ZGFmOTc0NjJlZTFiZGNiYzBkMjUxZTE0MDhhZmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAxNyBKdW4gMjAyNiAxMDowNDo0MSArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMDcvMTBdIEFkZCByZWxmcm96ZW54aWQgYW5kIHJlbG1pbm14aWQgY29sdW1ucyB0bwogcGdf dGVtcF9jbGFzcy4KClRoaXMgYWxsb3dzIFZBQ1VVTSByZXN1bHRzIHRvIGJlIHN0b3JlZCBsb2Nh bGx5IGluIHBnX3RlbXBfY2xhc3MgZm9yCmVhY2ggZ2xvYmFsIHRlbXBvcmFyeSB0YWJsZSwgd2hp bGUgdGhlIGNvcnJlc3BvbmRpbmcgcGdfY2xhc3MgZmllbGRzCmFyZSBrZXB0IGludmFsaWQgKHpl cm8pLiBBZGRpdGlvbmFsbHksIGVhY2ggc2Vzc2lvbiBzdG9yZXMgaXRzIG1pbmltdW0KcGdfdGVt cF9jbGFzcy5yZWxmcm96ZW54aWQgYW5kIHBnX3RlbXBfY2xhc3MucmVsbWlubXhpZCB2YWx1ZXMg YXMKdGVtcGZyb3plbnhpZCBhbmQgdGVtcG1pbm14aWQgaW4gaXRzIFBHUFJPQyBzdHJ1Y3QsIGFs bG93aW5nIG90aGVyCnNlc3Npb25zIHRvIGFkdmFuY2UgZGF0ZnJvemVueGlkIGFuZCBkYXRtaW5t eGlkLCB0YWtpbmcgaW50byBhY2NvdW50CnRoZSBnbG9iYWwgdGVtcG9yYXJ5IGZyb3plbiBYSURz IGZyb20gb3RoZXIgc2Vzc2lvbnMuIFRodXMgaXQgaXMKcG9zc2libGUgdG8ga2VlcCBhZHZhbmNp bmcgZGF0ZnJvemVueGlkIGFuZCBkYXRtaW5teGlkIGFzIGxvbmcgYXMgZWFjaApzZXNzaW9uIHRo YXQgdXNlcyBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcyBydW5zIFZBQ1VVTSBmcm9tIHRpbWUgdG8K dGltZS4gVG8gaGVscCBEQkFzIG1vbml0b3IgdGhpcyBhbmQgZGlhZ25vc2UgcHJvYmxlbXMsIGVh Y2ggYmFja2VuZCdzCnRlbXBmcm96ZW54aWQgYW5kIHRlbXBtaW5teGlkIHZhbHVlcyBhcmUgYWNj ZXNzaWJsZSB2aWEgdGhlCnBnX3N0YXRfYWN0aXZpdHkgdmlldy4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgICAgICAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9jYXRh bG9nL2dsb2JhbF90ZW1wLmMgICAgICAgICAgICAgfCAgMTcgKysrCiBzcmMvYmFja2VuZC9jYXRh bG9nL2hlYXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMTMgKy0KIHNyYy9iYWNrZW5kL2NhdGFs b2cvcGdfdGVtcF9jbGFzcy5jICAgICAgICAgICB8IDEzNCArKysrKysrKysrKysrKysrKwogc3Jj L2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAgICAgICAgICAgICAgICB8ICAyOCArKystCiBzcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAgICAgICAgICAgICAgfCAxMzggKysrKysrKysr KysrKysrKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgICAgICAgICAg fCAgIDcgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwg IDQxICsrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAg IHwgIDc4ICsrKysrKystLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAg ICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmggICAg ICAgICAgIHwgIDg0ICsrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAg ICAgICAgICAgICAgICB8ICAgOSArKwogLi4uL2lzb2xhdGlvbi9leHBlY3RlZC92YWN1dW0tZ2xv YmFsLXRlbXAub3V0IHwgMTIzICsrKysrKysrKysrKysrKysKIHNyYy90ZXN0L2lzb2xhdGlvbi9p c29sYXRpb25fc2NoZWR1bGUgICAgICAgICB8ICAgMSArCiAuLi4vaXNvbGF0aW9uL3NwZWNzL3Zh Y3V1bS1nbG9iYWwtdGVtcC5zcGVjICAgfCAgNzEgKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dCAgICAgfCAgMjUgKysrKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDEwICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9nbG9iYWxfdGVtcC5zcWwgICAgICAgICAgfCAgMTggKysrCiAyMSBmaWxlcyBjaGFuZ2Vk LCA3NjAgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3ZhY3V1bS1nbG9iYWwtdGVtcC5vdXQKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvdmFjdXVtLWdsb2JhbC10ZW1w LnNwZWMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMzkzOTVhZWQwZDUu LmNjNzc1MTVmZjU4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC05MTks NyArOTE5LDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zICpwYXJhbXMsCiAJCQkJCQkJCSBQUk9HUkVTU19WQUNVVU1fUEhBU0VfRklOQUxfQ0xFQU5V UCk7CiAKIAkvKgotCSAqIFByZXBhcmUgdG8gdXBkYXRlIHJlbCdzIHBnX2NsYXNzIGVudHJ5Lgor CSAqIFByZXBhcmUgdG8gdXBkYXRlIHJlbCdzIHBnX2NsYXNzIGFuZC9vciBwZ190ZW1wX2NsYXNz IGVudHJpZXMuCiAJICoKIAkgKiBBZ2dyZXNzaXZlIFZBQ1VVTXMgbXVzdCBhbHdheXMgYmUgYWJs ZSB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCB0byBhCiAJICogdmFsdWUgPj0gRnJlZXplTGltaXQs IGFuZCByZWxtaW5teGlkIHRvIGEgdmFsdWUgPj0gTXVsdGlYYWN0Q3V0b2ZmLgpAQCAtOTYzLDcg Kzk2Myw3IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFt cyAqcGFyYW1zLAogCQluZXdfcmVsX2FsbGZyb3plbiA9IG5ld19yZWxfYWxsdmlzaWJsZTsKIAog CS8qCi0JICogTm93IGFjdHVhbGx5IHVwZGF0ZSByZWwncyBwZ19jbGFzcyBlbnRyeS4KKwkgKiBO b3cgYWN0dWFsbHkgdXBkYXRlIHJlbCdzIHBnX2NsYXNzIGFuZC9vciBwZ190ZW1wX2NsYXNzIGVu dHJpZXMuCiAJICoKIAkgKiBJbiBwcmluY2lwbGUgbmV3X2xpdmVfdHVwbGVzIGNvdWxkIGJlIC0x IGluZGljYXRpbmcgdGhhdCB3ZSAoc3RpbGwpCiAJICogZG9uJ3Qga25vdyB0aGUgdHVwbGUgY291 bnQuICBJbiBwcmFjdGljZSB0aGF0IGNhbid0IGhhcHBlbiwgc2luY2Ugd2UKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jCmluZGV4IDEwMzVlOGIzZmM3Li4wOTRmZjdlZDU4ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCkBAIC03OCw2ICs3OCw3IEBACiAKICNp bmNsdWRlICJhY2Nlc3MvY29tbWl0X3RzLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWls cy5oIgorI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3Vi dHJhbnMuaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy90 d29waGFzZS5oIgpAQCAtNDg1LDYgKzQ4Niw4IEBAIE1hcmtBc1ByZXBhcmluZ0d1dHMoR2xvYmFs VHJhbnNhY3Rpb24gZ3hhY3QsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQsCiAJLyogc3VieGlkIGRh dGEgbXVzdCBiZSBmaWxsZWQgbGF0ZXIgYnkgR1hhY3RMb2FkU3VieGFjdERhdGEgKi8KIAlwcm9j LT5zdWJ4aWRTdGF0dXMub3ZlcmZsb3dlZCA9IGZhbHNlOwogCXByb2MtPnN1YnhpZFN0YXR1cy5j b3VudCA9IDA7CisJcHJvYy0+dGVtcGZyb3plbnhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwor CXByb2MtPnRlbXBtaW5teGlkID0gSW52YWxpZE11bHRpWGFjdElkOwogCiAJZ3hhY3QtPnByZXBh cmVkX2F0ID0gcHJlcGFyZWRfYXQ7CiAJZ3hhY3QtPmZ4aWQgPSBmeGlkOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9n bG9iYWxfdGVtcC5jCmluZGV4IGI3MGZkYzcwZjE5Li43YTdlNzdhMGQ4ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvZ2xvYmFsX3RlbXAuYwpAQCAtNTUsNiArNTUsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2Ft YXBpLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiYWNjZXNzL211bHRp eGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImFjY2Vzcy90 YWJsZS5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCkBAIC02OSw2ICs3MCw3IEBACiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2x3bG9jay5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUg InN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtODM2LDExICs4MzgsMjMgQEAgSW5pdEdsb2JhbFRl bXBSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbikKIAl7CiAJCS8qIENyZWF0ZSAoYW5kIHRyYWNr KSBzdG9yYWdlIGZvciB0aGUgcmVsYXRpb24gKi8KIAkJaWYgKFJFTEtJTkRfSEFTX1RBQkxFX0FN KHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQpKQorCQl7CiAJCQl0YWJsZV9yZWxhdGlvbl9zZXRf bmV3X2ZpbGVsb2NhdG9yKHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgICAmcmVsYXRpb24tPnJkX2xv Y2F0b3IsCiAJCQkJCQkJCQkJCSAgIHJlbGF0aW9uLT5yZF9yZWwtPnJlbHBlcnNpc3RlbmNlLAog CQkJCQkJCQkJCQkgICAmcmVsYXRpb24tPnJkX3JlbC0+cmVsZnJvemVueGlkLAogCQkJCQkJCQkJ CQkgICAmcmVsYXRpb24tPnJkX3JlbC0+cmVsbWlubXhpZCk7CisKKwkJCS8qCisJCQkgKiBJZiB0 ZW1wZnJvemVueGlkIGFuZCB0ZW1wbWlubXhpZCBoYXZlbid0IGJlZW4gc2V0IGZvciB0aGlzCisJ CQkgKiBiYWNrZW5kLCB0aGVuIHNldCB0aGVtIG5vdyAoZmlyc3QgZ2xvYmFsIHRlbXBvcmFyeSB0 YWJsZQorCQkJICogYWNjZXNzZWQgaW4gdGhpcyBzZXNzaW9uKS4KKwkJCSAqLworCQkJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZChNeVByb2MtPnRlbXBmcm96ZW54aWQpKQorCQkJCU15UHJvYy0+ dGVtcGZyb3plbnhpZCA9IHJlbGF0aW9uLT5yZF9yZWwtPnJlbGZyb3plbnhpZDsKKwkJCWlmICgh TXVsdGlYYWN0SWRJc1ZhbGlkKE15UHJvYy0+dGVtcG1pbm14aWQpKQorCQkJCU15UHJvYy0+dGVt cG1pbm14aWQgPSAoTXVsdGlYYWN0SWQpIHJlbGF0aW9uLT5yZF9yZWwtPnJlbG1pbm14aWQ7CisJ CX0KIAkJZWxzZQogCQkJUmVsYXRpb25DcmVhdGVTdG9yYWdlKHJlbGF0aW9uLT5yZF9pZCwKIAkJ CQkJCQkJICByZWxhdGlvbi0+cmRfbG9jYXRvciwKQEAgLTEwMDIsNiArMTAxNiw5IEBAIEdsb2Jh bFRlbXBSZWxhdGlvbkRyb3BwZWQoT2lkIHJlbGlkKQogCiAJLyogRm9yZ2V0IGFueSBPTiBDT01N SVQgYWN0aW9uIGZvciB0aGUgcmVsYXRpb24gKi8KIAlyZW1vdmVfb25fY29tbWl0X2FjdGlvbihy ZWxpZCk7CisKKwkvKiBVcGRhdGUgdGhpcyBiYWNrZW5kJ3MgdGVtcGZyb3plbnhpZCBhbmQgdGVt cG1pbm14aWQgKi8KKwlVcGRhdGVUZW1wRnJvemVuWGlkcygpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YwppbmRleCBmZGQwNmVjYzg3Ny4uNjg0ZTk0ODJmMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC05Nzks OCArOTc5LDE3IEBAIEluc2VydFBnQ2xhc3NUdXBsZShSZWxhdGlvbiBwZ19jbGFzc19kZXNjLAog CXZhbHVlc1tBbnVtX3BnX2NsYXNzX3JlbHJlcGxpZGVudCAtIDFdID0gQ2hhckdldERhdHVtKHJk X3JlbC0+cmVscmVwbGlkZW50KTsKIAl2YWx1ZXNbQW51bV9wZ19jbGFzc19yZWxpc3BhcnRpdGlv biAtIDFdID0gQm9vbEdldERhdHVtKHJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pOwogCXZhbHVlc1tB bnVtX3BnX2NsYXNzX3JlbHJld3JpdGUgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ocmRfcmVsLT5y ZWxyZXdyaXRlKTsKLQl2YWx1ZXNbQW51bV9wZ19jbGFzc19yZWxmcm96ZW54aWQgLSAxXSA9IFRy YW5zYWN0aW9uSWRHZXREYXR1bShyZF9yZWwtPnJlbGZyb3plbnhpZCk7Ci0JdmFsdWVzW0FudW1f cGdfY2xhc3NfcmVsbWlubXhpZCAtIDFdID0gTXVsdGlYYWN0SWRHZXREYXR1bShyZF9yZWwtPnJl bG1pbm14aWQpOworCisJLyoKKwkgKiBGb3IgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMsIHJl bGZyb3plbnhpZCBhbmQgcmVsbWlubXhpZCBhcmUgc3RvcmVkCisJICogaW4gcGdfdGVtcF9jbGFz cy4gIFNldCB0aGVtIHRvIEludmFsaWQgaW4gdGhlIHBnX2NsYXNzIHR1cGxlLgorCSAqLworCXZh bHVlc1tBbnVtX3BnX2NsYXNzX3JlbGZyb3plbnhpZCAtIDFdID0KKwkJVHJhbnNhY3Rpb25JZEdl dERhdHVtKHJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RF TVAgPworCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQgOiByZF9yZWwtPnJlbGZyb3plbnhp ZCk7CisJdmFsdWVzW0FudW1fcGdfY2xhc3NfcmVsbWlubXhpZCAtIDFdID0KKwkJTXVsdGlYYWN0 SWRHZXREYXR1bShyZF9yZWwtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JB TF9URU1QID8KKwkJCQkJCQlJbnZhbGlkTXVsdGlYYWN0SWQgOiByZF9yZWwtPnJlbG1pbm14aWQp OwogCWlmIChyZWxhY2wgIT0gKERhdHVtKSAwKQogCQl2YWx1ZXNbQW51bV9wZ19jbGFzc19yZWxh Y2wgLSAxXSA9IHJlbGFjbDsKIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3RlbXBfY2xhc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5jCmlu ZGV4IDUzYjA1OGZjZjNkLi5mMzA5ZjgyZDk5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ190ZW1wX2NsYXNzLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ190ZW1wX2Ns YXNzLmMKQEAgLTQ5LDExICs0OSwxMyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCiAj aW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhh Y3QuaCIKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5o IgogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Rl bXBfY2xhc3MuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFy Y2guaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtOTcsNiArOTksMTQgQEAgc3Rh dGljIGJvb2wgaGF2ZV9pbnNlcnRzX3RvX2ZsdXNoID0gZmFsc2U7CiAvKiBNZW1vcnkgY29udGV4 dCBmb3IgYWxsIHR1cGxlcyBwZW5kaW5nIGluc2VydCAqLwogc3RhdGljIE1lbW9yeUNvbnRleHQg cGVuZGluZ19pbnNlcnRzX3R1cGN0eCA9IE5VTEw7CiAKKy8qCisgKiBMYXRlc3QgbWluaW11bSB2 YWx1ZXMgb2YgcmVsZnJvemVueGlkIGFuZCByZWxtaW5teGlkIG92ZXIgYWxsIGdsb2JhbAorICog dGVtcG9yYXJ5IHRhYmxlcywgaWYgY2hhbmdlZCBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4K KyAqLworc3RhdGljIFRyYW5zYWN0aW9uSWQgbWluX3JlbGZyb3plbnhpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOworc3RhdGljIE11bHRpWGFjdElkIG1pbl9yZWxtaW5teGlkID0gSW52YWxpZE11 bHRpWGFjdElkOworc3RhdGljIGJvb2wgbWluX2Zyb3plbnhpZHNfdXBkYXRlZCA9IGZhbHNlOwor CiAvKgogICogb3Blbl9wZ190ZW1wX2NsYXNzCiAgKgpAQCAtMTgxLDYgKzE5MSwxMiBAQCBnZXRf cGdfdGVtcF9jbGFzc190dXBkZXNjKHZvaWQpCiAJCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNj LAogCQkJCQkJICAgKEF0dHJOdW1iZXIpIEFudW1fcGdfdGVtcF9jbGFzc19yZWxhbGxmcm96ZW4s CiAJCQkJCQkgICAicmVsYWxsZnJvemVuIiwgSU5UNE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywKKwkJCQkJCSAgIChBdHRyTnVtYmVyKSBBbnVtX3BnX3RlbXBfY2xh c3NfcmVsZnJvemVueGlkLAorCQkJCQkJICAgInJlbGZyb3plbnhpZCIsIFhJRE9JRCwgLTEsIDAp OworCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywKKwkJCQkJCSAgIChBdHRyTnVtYmVyKSBB bnVtX3BnX3RlbXBfY2xhc3NfcmVsbWlubXhpZCwKKwkJCQkJCSAgICJyZWxtaW5teGlkIiwgWElE T0lELCAtMSwgMCk7CiAJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOwogCiAJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKQEAgLTIxMSw2ICsyMjcsOCBAQCBoZWFwX2Zvcm1f cGdfdGVtcF9jbGFzc190dXBsZShSZWxhdGlvbiByZWwpCiAJdmFsdWVzW0FudW1fcGdfdGVtcF9j bGFzc19yZWx0dXBsZXMgLSAxXSA9IEZsb2F0NEdldERhdHVtKGZvcm0tPnJlbHR1cGxlcyk7CiAJ dmFsdWVzW0FudW1fcGdfdGVtcF9jbGFzc19yZWxhbGx2aXNpYmxlIC0gMV0gPSBJbnQzMkdldERh dHVtKGZvcm0tPnJlbGFsbHZpc2libGUpOwogCXZhbHVlc1tBbnVtX3BnX3RlbXBfY2xhc3NfcmVs YWxsZnJvemVuIC0gMV0gPSBJbnQzMkdldERhdHVtKGZvcm0tPnJlbGFsbGZyb3plbik7CisJdmFs dWVzW0FudW1fcGdfdGVtcF9jbGFzc19yZWxmcm96ZW54aWQgLSAxXSA9IFRyYW5zYWN0aW9uSWRH ZXREYXR1bShmb3JtLT5yZWxmcm96ZW54aWQpOworCXZhbHVlc1tBbnVtX3BnX3RlbXBfY2xhc3Nf cmVsbWlubXhpZCAtIDFdID0gTXVsdGlYYWN0SWRHZXREYXR1bShmb3JtLT5yZWxtaW5teGlkKTsK IAogCXJldHVybiBoZWFwX2Zvcm1fdHVwbGUoZ2V0X3BnX3RlbXBfY2xhc3NfdHVwZGVzYygpLCB2 YWx1ZXMsIG51bGxzKTsKIH0KQEAgLTYwOCw2ICs2MjYsMTExIEBAIEdldEVmZmVjdGl2ZVBnQ2xh c3NUdXBsZShPaWQgcmVsaWQpCiAJcmV0dXJuIHR1cGxlOwogfQogCisvKgorICogVXBkYXRlVGVt cEZyb3plblhpZHMKKyAqCisgKglVcGRhdGUgdGhlIHRlbXBmcm96ZW54aWQgYW5kIHRlbXBtaW5t eGlkIHZhbHVlcyBmb3IgdGhpcyBiYWNrZW5kIGJ5CisgKglmaW5kaW5nIHRoZSBtaW5pbXVtIHJl bGZyb3plbnhpZCBhbmQgcmVsbWlubXhpZCB2YWx1ZXMgaW4gcGdfdGVtcF9jbGFzcyAtLQorICoJ aS5lLiwgdGhlIG1pbmltdW0gZnJvemVuIFhJRHMgb3ZlciBhbGwgZ2xvYmFsIHRlbXBvcmFyeSBy ZWxhdGlvbnMgaW4gdXNlCisgKglpbiB0aGlzIGJhY2tlbmQuCisgKgorICoJVGhlIG5ldyB2YWx1 ZXMgYXJlIHNldCBpbiB0aGlzIHByb2Nlc3MncyBQR1BST0Mgc3RydWN0IHdoZW4gdGhlIGN1cnJl bnQKKyAqCXRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCwgb3IgZGlzY2FyZGVkIGlmIHRoZSB0cmFu c2FjdGlvbiBpcyByb2xsZWQgYmFjay4KKyAqCisgKglJZiBubyBnbG9iYWwgdGVtcG9yYXJ5IHJl bGF0aW9ucyBhcmUgaW4gdXNlLCBJbnZhbGlkKklkcyB3aWxsIGJlIHNldC4KKyAqLwordm9pZAor VXBkYXRlVGVtcEZyb3plblhpZHModm9pZCkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOwor CVBlbmRpbmdJbnNlcnQgKmVudHJ5OworCUZvcm1fcGdfdGVtcF9jbGFzcyB0ZW1wX2Zvcm07CisJ VHJhbnNhY3Rpb25JZCByZWxmcm96ZW54aWQ7CisJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKKwlS ZWxhdGlvbglwZ190ZW1wX2NsYXNzOworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1cGxlCXR1 cGxlOworCisJLyogRGVmYXVsdHMsIGlmIG5vIGdsb2JhbCB0ZW1wb3JhcnkgcmVsYXRpb25zIGFy ZSBiZWluZyB1c2VkICovCisJbWluX3JlbGZyb3plbnhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OworCW1pbl9yZWxtaW5teGlkID0gSW52YWxpZE11bHRpWGFjdElkOworCisJLyogUHJvY2Vzc2lu ZyBhbnkgcGVuZGluZyBpbnNlcnRzICovCisJaWYgKHBlbmRpbmdfaW5zZXJ0cyAhPSBOVUxMKQor CXsKKwkJaGFzaF9zZXFfaW5pdCgmc3RhdHVzLCBwZW5kaW5nX2luc2VydHMpOworCQl3aGlsZSAo KGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQorCQl7CisJCQl0ZW1w X2Zvcm0gPSAoRm9ybV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QoZW50cnktPnR1cGxlKTsKKwkJ CXJlbGZyb3plbnhpZCA9IHRlbXBfZm9ybS0+cmVsZnJvemVueGlkOworCQkJcmVsbWlubXhpZCA9 IChNdWx0aVhhY3RJZCkgdGVtcF9mb3JtLT5yZWxtaW5teGlkOworCisJCQkvKiBTa2lwIGVudHJp ZXMgdGhhdCBoYXZlIGJlZW4gaW5zZXJ0ZWQgb3IgZGVsZXRlZCAqLworCQkJaWYgKGVudHJ5LT5p bnNlcnRlZF9zdWJpZCAhPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCB8fAorCQkJCWVudHJ5LT5k ZWxldGVkX3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCQkJCWNvbnRpbnVlOwor CisJCQkvKiBJZ25vcmUgcmVsYXRpb25zIHRoYXQgZG9uJ3QgaG9sZCB1bmZyb3plbiBYSURzICov CisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJlbGZyb3plbnhpZCkgfHwKKwkJCQkhTXVs dGlYYWN0SWRJc1ZhbGlkKHJlbG1pbm14aWQpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBVcGRh dGUgdGhlIG1pbmltdW0gdmFsdWVzICovCisJCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzTm9ybWFs KHJlbGZyb3plbnhpZCkpOworCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKG1pbl9yZWxm cm96ZW54aWQpIHx8CisJCQkJVHJhbnNhY3Rpb25JZFByZWNlZGVzKHJlbGZyb3plbnhpZCwgbWlu X3JlbGZyb3plbnhpZCkpCisJCQkJbWluX3JlbGZyb3plbnhpZCA9IHJlbGZyb3plbnhpZDsKKwor CQkJaWYgKCFNdWx0aVhhY3RJZElzVmFsaWQobWluX3JlbG1pbm14aWQpIHx8CisJCQkJTXVsdGlY YWN0SWRQcmVjZWRlcyhyZWxtaW5teGlkLCBtaW5fcmVsbWlubXhpZCkpCisJCQkJbWluX3JlbG1p bm14aWQgPSByZWxtaW5teGlkOworCQl9CisJfQorCisJLyoKKwkgKiBQcm9jZXNzIGFsbCBwZ190 ZW1wX2NsYXNzIGVudHJpZXMuICBJZiB3ZSBoYXZlbid0IG9wZW5lZCBwZ190ZW1wX2NsYXNzCisJ ICogaW4gdGhpcyBzZXNzaW9uIHlldCwgaXQgbXVzdCBiZSBlbXB0eSwgYW5kIHdlIGNhbiBza2lw IGl0LgorCSAqLworCWlmIChwZ190ZW1wX2NsYXNzX29wZW5lZCkKKwl7CisJCXBnX3RlbXBfY2xh c3MgPSB0YWJsZV9vcGVuKFRlbXBSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ190ZW1wX2NsYXNzLCBJbnZhbGlkT2lk LCBmYWxzZSwKKwkJCQkJCQkJICBOVUxMLCAwLCBOVUxMKTsKKworCQl3aGlsZSAoKHR1cGxlID0g c3lzdGFibGVfZ2V0bmV4dChzY2FuKSkgIT0gTlVMTCkKKwkJeworCQkJdGVtcF9mb3JtID0gKEZv cm1fcGdfdGVtcF9jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJCXJlbGZyb3plbnhpZCA9IHRl bXBfZm9ybS0+cmVsZnJvemVueGlkOworCQkJcmVsbWlubXhpZCA9IChNdWx0aVhhY3RJZCkgdGVt cF9mb3JtLT5yZWxtaW5teGlkOworCisJCQkvKiBJZ25vcmUgcmVsYXRpb25zIHRoYXQgZG9uJ3Qg aG9sZCB1bmZyb3plbiBYSURzICovCisJCQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHJlbGZy b3plbnhpZCkgfHwKKwkJCQkhTXVsdGlYYWN0SWRJc1ZhbGlkKHJlbG1pbm14aWQpKQorCQkJCWNv bnRpbnVlOworCisJCQkvKiBVcGRhdGUgdGhlIG1pbmltdW0gdmFsdWVzICovCisJCQlBc3NlcnQo VHJhbnNhY3Rpb25JZElzTm9ybWFsKHJlbGZyb3plbnhpZCkpOworCisJCQlpZiAoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKG1pbl9yZWxmcm96ZW54aWQpIHx8CisJCQkJVHJhbnNhY3Rpb25JZFByZWNl ZGVzKHJlbGZyb3plbnhpZCwgbWluX3JlbGZyb3plbnhpZCkpCisJCQkJbWluX3JlbGZyb3plbnhp ZCA9IHJlbGZyb3plbnhpZDsKKworCQkJaWYgKCFNdWx0aVhhY3RJZElzVmFsaWQobWluX3JlbG1p bm14aWQpIHx8CisJCQkJTXVsdGlYYWN0SWRQcmVjZWRlcyhyZWxtaW5teGlkLCBtaW5fcmVsbWlu bXhpZCkpCisJCQkJbWluX3JlbG1pbm14aWQgPSByZWxtaW5teGlkOworCQl9CisKKwkJLyogVGlk eSB1cCAqLworCQlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ190ZW1w X2NsYXNzLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworCS8qIEZsYWcgdGhlIG5ldyB2YWx1ZXMg YXMgdG8gYmUgYXBwbGllZCBvbiBjb21taXQgKi8KKwltaW5fZnJvemVueGlkc191cGRhdGVkID0g dHJ1ZTsKK30KKwogLyoKICAqIFByZUNDSV9QZ1RlbXBDbGFzcwogICoKQEAgLTY2Nyw2ICs3OTAs MTcgQEAgQXRFT1hhY3RfUGdUZW1wQ2xhc3MoYm9vbCBpc0NvbW1pdCkKIAlBc3NlcnQoIShpc0Nv bW1pdCAmJiBoYXZlX2luc2VydHNfdG9fZmx1c2gpKTsKIAlpZiAocGVuZGluZ19pbnNlcnRzICE9 IE5VTEwpCiAJCWRpc2NhcmRfcGVuZGluZ19wZ190ZW1wX2NsYXNzX2luc2VydHMoKTsKKworCS8q CisJICogT24gY29tbWl0LCBzYXZlIGFueSBuZXcgdGVtcGZyb3plbnhpZCBhbmQgdGVtcG1pbm14 aWQgdmFsdWVzIHRvIG91cgorCSAqIFBHUFJPQyBzdHJ1Y3QuICBPbiByb2xsYmFjaywgYW55IG5l dyB2YWx1ZXMgYXJlIHNpbXBseSBkaXNjYXJkZWQuCisJICovCisJaWYgKG1pbl9mcm96ZW54aWRz X3VwZGF0ZWQgJiYgaXNDb21taXQpCisJeworCQlNeVByb2MtPnRlbXBmcm96ZW54aWQgPSBtaW5f cmVsZnJvemVueGlkOworCQlNeVByb2MtPnRlbXBtaW5teGlkID0gbWluX3JlbG1pbm14aWQ7CisJ fQorCW1pbl9mcm96ZW54aWRzX3VwZGF0ZWQgPSBmYWxzZTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2YzFjNTU0NWNiNS4uOTI3NWE4OTU0MTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk1Nyw2ICs5NTcsOCBAQCBDUkVBVEUg VklFVyBwZ19zdGF0X2FjdGl2aXR5IEFTCiAgICAgICAgICAgICBTLnN0YXRlLAogICAgICAgICAg ICAgUy5iYWNrZW5kX3hpZCwKICAgICAgICAgICAgIFMuYmFja2VuZF94bWluLAorICAgICAgICAg ICAgUy50ZW1wZnJvemVueGlkLAorICAgICAgICAgICAgUy50ZW1wbWlubXhpZCwKICAgICAgICAg ICAgIFMucXVlcnlfaWQsCiAgICAgICAgICAgICBTLnF1ZXJ5LAogICAgICAgICAgICAgUy5iYWNr ZW5kX3R5cGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKaW5kZXggNWYxMWU2OTlkYzQuLjBjNzA0YTUzMWIy IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9yZXBhY2suYwpAQCAtMjU5LDYgKzI1OSw3IEBAIEV4ZWNSZXBhY2soUGFy c2VTdGF0ZSAqcHN0YXRlLCBSZXBhY2tTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJYm9v bAkJdmVyYm9zZSA9IGZhbHNlOwogCWJvb2wJCWFuYWx5emUgPSBmYWxzZTsKIAlib29sCQljb25j dXJyZW50bHkgPSBmYWxzZTsKKwlib29sCQloYXZlX2d0cnMgPSBmYWxzZTsKIAogCS8qIFBhcnNl IG9wdGlvbiBsaXN0ICovCiAJZm9yZWFjaF9ub2RlKERlZkVsZW0sIG9wdCwgc3RtdC0+cGFyYW1z KQpAQCAtNDYzLDYgKzQ2NCw4IEBAIEV4ZWNSZXBhY2soUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZXBh Y2tTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAkJCWNvbnRpbnVlOwogCQl9CisJCWlmIChSRUxBVElPTl9JU19HTE9CQUxfVEVNUChy ZWwpKQorCQkJaGF2ZV9ndHJzID0gdHJ1ZTsKIAogCQkvKiBmdW5jdGlvbnMgaW4gaW5kZXhlcyBt YXkgd2FudCBhIHNuYXBzaG90IHNldCAqLwogCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNh Y3Rpb25TbmFwc2hvdCgpKTsKQEAgLTQ3OCw2ICs0ODEsMTMgQEAgRXhlY1JlcGFjayhQYXJzZVN0 YXRlICpwc3RhdGUsIFJlcGFja1N0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkvKiBTdGFy dCBhIG5ldyB0cmFuc2FjdGlvbiBmb3IgdGhlIGNsZWFudXAgd29yay4gKi8KIAlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCisJLyoKKwkgKiBVcGRhdGUgdGhpcyBiYWNrZW5kJ3MgdGVtcGZy b3plbnhpZCBhbmQgdGVtcG1pbm14aWQsIGlmIHdlIHByb2Nlc3NlZAorCSAqIGFueSBnbG9iYWwg dGVtcG9yYXJ5IHJlbGF0aW9ucy4KKwkgKi8KKwlpZiAoaGF2ZV9ndHJzKQorCQlVcGRhdGVUZW1w RnJvemVuWGlkcygpOworCiAJLyogQ2xlYW4gdXAgd29ya2luZyBzdG9yYWdlICovCiAJTWVtb3J5 Q29udGV4dERlbGV0ZShyZXBhY2tfY29udGV4dCk7CiB9CkBAIC0xNzI4LDEzICsxNzM4LDE3IEBA IHN3YXBfcmVsYXRpb25fZmlsZXMoT2lkIHIxLCBPaWQgcjIsIGJvb2wgdGFyZ2V0X2lzX3BnX2Ns YXNzLAogCSAqIGFuZCB0aGVuIGZhaWwgdG8gY29tbWl0IHRoZSBwZ19jbGFzcyB1cGRhdGUuCiAJ ICovCiAKLQkvKiBzZXQgcmVsMSdzIGZyb3plbiBYaWQgYW5kIG1pbmltdW0gTXVsdGlYaWQgKi8K KwkvKgorCSAqIFNldCByZWwxJ3MgZnJvemVuIFhpZCBhbmQgbWluaW11bSBNdWx0aVhpZC4gIEZv ciBhIGdsb2JhbCB0ZW1wb3JhcnkKKwkgKiByZWxhdGlvbiwgdGhlIHN1cHBsaWVkIHZhbHVlcyBh cmUgc2V0IGluIHBnX3RlbXBfY2xhc3MsIGluc3RlYWQgb2YKKwkgKiBwZ19jbGFzcy4KKwkgKi8K IAlpZiAocmVsZm9ybTEtPnJlbGtpbmQgIT0gUkVMS0lORF9JTkRFWCkKIAl7CiAJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQoZnJvemVuWGlkKSB8fAogCQkJICAgVHJhbnNhY3Rpb25JZElz Tm9ybWFsKGZyb3plblhpZCkpOwotCQlyZWxmb3JtMS0+cmVsZnJvemVueGlkID0gZnJvemVuWGlk OwotCQlyZWxmb3JtMS0+cmVsbWlubXhpZCA9IGN1dG9mZk11bHRpOworCQlTZXRFZmZlY3RpdmVf cmVsZnJvemVueGlkKHJlbGZvcm0xLCB0ZW1wX3JlbGZvcm0xLCBmcm96ZW5YaWQsIE5VTEwsIE5V TEwpOworCQlTZXRFZmZlY3RpdmVfcmVsbWlubXhpZChyZWxmb3JtMSwgdGVtcF9yZWxmb3JtMSwg Y3V0b2ZmTXVsdGksIE5VTEwsIE5VTEwpOwogCX0KIAogCS8qIHN3YXAgc2l6ZSBzdGF0aXN0aWNz IHRvbywgc2luY2UgbmV3IHJlbCBoYXMgZnJlc2hseS11cGRhdGVkIHN0YXRzICovCkBAIC0yNTIy LDYgKzI1MzYsNyBAQCBwcm9jZXNzX3NpbmdsZV9yZWxhdGlvbihSZXBhY2tTdG10ICpzdG10LCBM T0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBpc1RvcExldmVsLAogCWVsc2UKIAl7CiAJCU9pZAkJCWlu ZGV4T2lkID0gSW52YWxpZE9pZDsKKwkJYm9vbAkJaXNfZ3RyID0gUkVMQVRJT05fSVNfR0xPQkFM X1RFTVAocmVsKTsKIAogCQlpbmRleE9pZCA9IGRldGVybWluZV9jbHVzdGVyZWRfaW5kZXgocmVs LCBzdG10LT51c2luZ2luZGV4LAogCQkJCQkJCQkJCQkgc3RtdC0+aW5kZXhuYW1lKTsKQEAgLTI1 NTQsNiArMjU2OSwxMyBAQCBwcm9jZXNzX3NpbmdsZV9yZWxhdGlvbihSZXBhY2tTdG10ICpzdG10 LCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBpc1RvcExldmVsLAogCQkJQ29tbWFuZENvdW50ZXJJ bmNyZW1lbnQoKTsKIAkJfQogCisJCS8qCisJCSAqIFVwZGF0ZSB0aGlzIGJhY2tlbmQncyB0ZW1w ZnJvemVueGlkIGFuZCB0ZW1wbWlubXhpZCwgaWYgaXQgd2FzIGEKKwkJICogZ2xvYmFsIHRlbXBv cmFyeSByZWxhdGlvbi4KKwkJICovCisJCWlmIChpc19ndHIpCisJCQlVcGRhdGVUZW1wRnJvemVu WGlkcygpOworCiAJCXJldHVybiBOVUxMOwogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5kZXgg OWM3NzZkNWE5NzguLjZhZTNmYTBkNmE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMTI4LDcg KzEyOCw4IEBAIHN0YXRpYyB2b2lkIHZhY190cnVuY2F0ZV9jbG9nKFRyYW5zYWN0aW9uSWQgZnJv emVuWElELAogCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXN0U2FuZUZyb3plblhpZCwKIAkJCQkJ CQkgIE11bHRpWGFjdElkIGxhc3RTYW5lTWluTXVsdGkpOwogc3RhdGljIGJvb2wgdmFjdXVtX3Jl bChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zIHBhcmFtcywKLQkJ CQkJICAgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LCBib29sIGlzVG9wTGV2ZWwpOwor CQkJCQkgICBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksIGJvb2wgaXNUb3BMZXZlbCwK KwkJCQkJICAgYm9vbCAqaXNHdHIpOwogc3RhdGljIGRvdWJsZSBjb21wdXRlX3BhcmFsbGVsX2Rl bGF5KHZvaWQpOwogc3RhdGljIFZhY09wdFZhbHVlIGdldF92YWNvcHR2YWxfZnJvbV9ib29sZWFu KERlZkVsZW0gKmRlZik7CiBzdGF0aWMgYm9vbCB2YWNfdGlkX3JlYXBlZChJdGVtUG9pbnRlciBp dGVtcHRyLCB2b2lkICpzdGF0ZSk7CkBAIC01MDAsNiArNTAxLDcgQEAgdmFjdXVtKExpc3QgKnJl bGF0aW9ucywgY29uc3QgVmFjdXVtUGFyYW1zICpwYXJhbXMsIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IGJzdHJhdGUKIAljb25zdCBjaGFyICpzdG10dHlwZTsKIAl2b2xhdGlsZSBib29sIGluX291dGVy X3hhY3QsCiAJCQkJdXNlX293bl94YWN0czsKKwlib29sCQloYXZlX2d0cnMgPSBmYWxzZTsKIAog CXN0bXR0eXBlID0gKHBhcmFtcy0+b3B0aW9ucyAmIFZBQ09QVF9WQUNVVU0pID8gIlZBQ1VVTSIg OiAiQU5BTFlaRSI7CiAKQEAgLTYyOCwxMSArNjMwLDE2IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlv bnMsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3Ry YXRlCiAJCWZvcmVhY2goY3VyLCByZWxhdGlvbnMpCiAJCXsKIAkJCVZhY3V1bVJlbGF0aW9uICp2 cmVsID0gbGZpcnN0X25vZGUoVmFjdXVtUmVsYXRpb24sIGN1cik7CisJCQlib29sCQlpc0d0ciA9 IGZhbHNlOworCQkJYm9vbAkJZG9BbmFseXNlOwogCiAJCQlpZiAocGFyYW1zLT5vcHRpb25zICYg VkFDT1BUX1ZBQ1VVTSkKIAkJCXsKLQkJCQlpZiAoIXZhY3V1bV9yZWwodnJlbC0+b2lkLCB2cmVs LT5yZWxhdGlvbiwgKnBhcmFtcywgYnN0cmF0ZWd5LAotCQkJCQkJCQlpc1RvcExldmVsKSkKKwkJ CQlkb0FuYWx5c2UgPSB2YWN1dW1fcmVsKHZyZWwtPm9pZCwgdnJlbC0+cmVsYXRpb24sICpwYXJh bXMsCisJCQkJCQkJCQkgICBic3RyYXRlZ3ksIGlzVG9wTGV2ZWwsICZpc0d0cik7CisJCQkJaWYg KGlzR3RyKQorCQkJCQloYXZlX2d0cnMgPSB0cnVlOworCQkJCWlmICghZG9BbmFseXNlKQogCQkJ CQljb250aW51ZTsKIAkJCX0KIApAQCAtNzAwLDYgKzcwNywxNyBAQCB2YWN1dW0oTGlzdCAqcmVs YXRpb25zLCBjb25zdCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kg YnN0cmF0ZQogCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KIAorCWlmIChwYXJhbXMt Pm9wdGlvbnMgJiBWQUNPUFRfVkFDVVVNICYmICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkp CisJeworCQkvKgorCQkgKiBVcGRhdGUgdGhpcyBiYWNrZW5kJ3MgdGVtcGZyb3plbnhpZCBhbmQg dGVtcG1pbm14aWQsIGlmIHdlIHZhY3V1bWVkCisJCSAqIGFueSBnbG9iYWwgdGVtcG9yYXJ5IHJl bGF0aW9ucy4gIFdlIHNraXAgdGhpcyBmb3IgYXV0b3ZhY3V1bSwgd2hpY2gKKwkJICogc2hvdWxk bid0IHZhY3V1bSBhbnkgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMuCisJCSAqLworCQlpZiAo aGF2ZV9ndHJzKQorCQkJVXBkYXRlVGVtcEZyb3plblhpZHMoKTsKKwl9CisKIAlpZiAoKHBhcmFt cy0+b3B0aW9ucyAmIFZBQ09QVF9WQUNVVU0pICYmCiAJCSEocGFyYW1zLT5vcHRpb25zICYgVkFD T1BUX1NLSVBfREFUQUJBU0VfU1RBVFMpKQogCXsKQEAgLTExMjUsNyArMTE0Myw3IEBAIHZhY3V1 bV9nZXRfY3V0b2ZmcyhSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyAqcGFyYW1zLAog CWZyZWV6ZV90YWJsZV9hZ2UgPSBwYXJhbXMtPmZyZWV6ZV90YWJsZV9hZ2U7CiAJbXVsdGl4YWN0 X2ZyZWV6ZV90YWJsZV9hZ2UgPSBwYXJhbXMtPm11bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlOwog Ci0JLyogU2V0IHBnX2NsYXNzIGZpZWxkcyBpbiBjdXRvZmZzICovCisJLyogU2V0IHBnX2NsYXNz IC8gcGdfdGVtcF9jbGFzcyBmaWVsZHMgaW4gY3V0b2ZmcyAqLwogCWN1dG9mZnMtPnJlbGZyb3pl bnhpZCA9IHJlbC0+cmRfcmVsLT5yZWxmcm96ZW54aWQ7CiAJY3V0b2Zmcy0+cmVsbWlubXhpZCA9 IHJlbC0+cmRfcmVsLT5yZWxtaW5teGlkOwogCkBAIC0xNTQzLDggKzE1NjEsMTQgQEAgdmFjX3Vw ZGF0ZV9yZWxzdGF0cyhSZWxhdGlvbiByZWxhdGlvbiwKIAkgKiBpdCdzIGNvcnJ1cHQsIGFuZCBv dmVyd3JpdGUgd2l0aCB0aGUgb2xkZXN0IHJlbWFpbmluZyBYSUQgaW4gdGhlIHRhYmxlLgogCSAq IFRoaXMgc2hvdWxkIG1hdGNoIHZhY191cGRhdGVfZGF0ZnJvemVueGlkKCkgY29uY2VybmluZyB3 aGF0IHdlIGNvbnNpZGVyCiAJICogdG8gYmUgImluIHRoZSBmdXR1cmUiLgorCSAqCisJICogRm9y IGEgZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiwgZnJvemVueGlkIGlzIG9ubHkgdmFsaWQgZm9y IHRoZSBkYXRhCisJICogaW4gb3VyIGxvY2FsIGluc3RhbmNlIG9mIHRoZSByZWxhdGlvbiwgYW5k IGlzIHN0b3JlZCBpbiBwZ190ZW1wX2NsYXNzLAorCSAqIGluc3RlYWQgb2YgcGdfY2xhc3MuICBU aGlzIGNvbnRyaWJ1dGVzIHRvd2FyZHMgdGVtcGZyb3plbnhpZCBmb3IgdGhpcworCSAqIGJhY2tl bmQgYW5kIGFsbG93cyB2YWNfdXBkYXRlX2RhdGZyb3plbnhpZCgpIHRvIGFkdmFuY2UgZGF0ZnJv emVueGlkCisJICogb25jZSBldmVyeSBiYWNrZW5kIGFjY2Vzc2luZyB0aGUgcmVsYXRpb24gaGFz IHZhY3V1bWVkIGl0LgogCSAqLwotCW9sZGZyb3plbnhpZCA9IHBnY2Zvcm0tPnJlbGZyb3plbnhp ZDsKKwlvbGRmcm96ZW54aWQgPSBHZXRFZmZlY3RpdmVfcmVsZnJvemVueGlkKHBnY2Zvcm0sIHRl bXBfcGdjZm9ybSk7CiAJZnV0dXJleGlkID0gZmFsc2U7CiAJaWYgKGZyb3plbnhpZF91cGRhdGVk KQogCQkqZnJvemVueGlkX3VwZGF0ZWQgPSBmYWxzZTsKQEAgLTE1NTksMTUgKzE1ODMsMTUgQEAg dmFjX3VwZGF0ZV9yZWxzdGF0cyhSZWxhdGlvbiByZWxhdGlvbiwKIAogCQlpZiAodXBkYXRlKQog CQl7Ci0JCQlwZ2Nmb3JtLT5yZWxmcm96ZW54aWQgPSBmcm96ZW54aWQ7Ci0JCQlkaXJ0eSA9IHRy dWU7CisJCQlTZXRFZmZlY3RpdmVfcmVsZnJvemVueGlkKHBnY2Zvcm0sIHRlbXBfcGdjZm9ybSwg ZnJvemVueGlkLAorCQkJCQkJCQkJICAmZGlydHksICZ0ZW1wX2RpcnR5KTsKIAkJCWlmIChmcm96 ZW54aWRfdXBkYXRlZCkKIAkJCQkqZnJvemVueGlkX3VwZGF0ZWQgPSB0cnVlOwogCQl9CiAJfQog CiAJLyogU2ltaWxhcmx5IGZvciByZWxtaW5teGlkICovCi0Jb2xkbWlubXVsdGkgPSBwZ2Nmb3Jt LT5yZWxtaW5teGlkOworCW9sZG1pbm11bHRpID0gR2V0RWZmZWN0aXZlX3JlbG1pbm14aWQocGdj Zm9ybSwgdGVtcF9wZ2Nmb3JtKTsKIAlmdXR1cmVteGlkID0gZmFsc2U7CiAJaWYgKG1pbm11bHRp X3VwZGF0ZWQpCiAJCSptaW5tdWx0aV91cGRhdGVkID0gZmFsc2U7CkBAIC0xNTgyLDggKzE2MDYs OCBAQCB2YWNfdXBkYXRlX3JlbHN0YXRzKFJlbGF0aW9uIHJlbGF0aW9uLAogCiAJCWlmICh1cGRh dGUpCiAJCXsKLQkJCXBnY2Zvcm0tPnJlbG1pbm14aWQgPSBtaW5tdWx0aTsKLQkJCWRpcnR5ID0g dHJ1ZTsKKwkJCVNldEVmZmVjdGl2ZV9yZWxtaW5teGlkKHBnY2Zvcm0sIHRlbXBfcGdjZm9ybSwg bWlubXVsdGksCisJCQkJCQkJCQkmZGlydHksICZ0ZW1wX2RpcnR5KTsKIAkJCWlmIChtaW5tdWx0 aV91cGRhdGVkKQogCQkJCSptaW5tdWx0aV91cGRhdGVkID0gdHJ1ZTsKIAkJfQpAQCAtMTYyMiw2 ICsxNjQ2LDUyIEBAIHZhY191cGRhdGVfcmVsc3RhdHMoUmVsYXRpb24gcmVsYXRpb24sCiB9CiAK IAorLyoKKyAqCXZhY19nZXRfbWluX3RlbXBmcm96ZW54aWRzKCkgLS0gZ2V0IG1pbiB0ZW1wIFhJ RHMgb3ZlciBhbGwgYmFja2VuZHMKKyAqCisgKgkJbWluX3RlbXBmcm96ZW54aWQgaXMgc2V0IHRv IHRoZSBtaW5pbXVtIHRlbXBmcm96ZW54aWQgZnJvbSBhbGwKKyAqCQliYWNrZW5kcyAoaW5jbHVk aW5nIHVzKSBjb25uZWN0ZWQgdG8gb3VyIGRhdGFiYXNlLgorICoKKyAqCQltaW5fdGVtcG1pbm14 aWQgaXMgc2V0IHRvIHRoZSBtaW5pbXVtIHRlbXBtaW5teGlkIGZyb20gYWxsIGJhY2tlbmRzCisg KgkJKGluY2x1ZGluZyB1cykgY29ubmVjdGVkIHRvIG91ciBkYXRhYmFzZS4KKyAqCisgKgkJVGhl IHZhbHVlcyByZXR1cm5lZCB3aWxsIGJlIEludmFsaWQqSWRzLCBpZiBubyBiYWNrZW5kIGlzIGFj Y2Vzc2luZworICoJCWdsb2JhbCB0ZW1wb3JhcnkgdGFibGVzIGluIG91ciBkYXRhYmFzZS4KKyAq Lworc3RhdGljIHZvaWQKK3ZhY19nZXRfbWluX3RlbXBmcm96ZW54aWRzKFRyYW5zYWN0aW9uSWQg Km1pbl90ZW1wZnJvemVueGlkLAorCQkJCQkJICAgTXVsdGlYYWN0SWQgKm1pbl90ZW1wbWlubXhp ZCkKK3sKKwkvKiBEZWZhdWx0cywgaWYgbm8gb3RoZXIgYmFja2VuZHMgZm91bmQgKi8KKwkqbWlu X3RlbXBmcm96ZW54aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwkqbWluX3RlbXBtaW5teGlk ID0gSW52YWxpZE11bHRpWGFjdElkOworCisJTFdMb2NrQWNxdWlyZShQcm9jQXJyYXlMb2NrLCBM V19TSEFSRUQpOworCWZvciAoaW50IGkgPSAwOyBpIDwgUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50 OyBpKyspCisJeworCQlQR1BST0MJICAgKnByb2MgPSBHZXRQR1Byb2NCeU51bWJlcihpKTsKKwor CQkvKiBJZ25vcmUgYmFja2VuZHMgbm90IGNvbm5lY3RlZCB0byBvdXIgZGF0YWJhc2UgKi8KKwkJ aWYgKHByb2MtPnBpZCA9PSAwKQorCQkJY29udGludWU7CisJCWlmIChwcm9jLT5kYXRhYmFzZUlk ICE9IE15RGF0YWJhc2VJZCkKKwkJCWNvbnRpbnVlOworCisJCS8qIFVwZGF0ZSB0aGUgbWluaW11 bSByZXR1cm4gdmFsdWVzICovCisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChwcm9jLT50ZW1w ZnJvemVueGlkKSAmJgorCQkJKCFUcmFuc2FjdGlvbklkSXNWYWxpZCgqbWluX3RlbXBmcm96ZW54 aWQpIHx8CisJCQkgVHJhbnNhY3Rpb25JZFByZWNlZGVzKHByb2MtPnRlbXBmcm96ZW54aWQsICpt aW5fdGVtcGZyb3plbnhpZCkpKQorCQkJKm1pbl90ZW1wZnJvemVueGlkID0gcHJvYy0+dGVtcGZy b3plbnhpZDsKKworCQlpZiAoTXVsdGlYYWN0SWRJc1ZhbGlkKHByb2MtPnRlbXBtaW5teGlkKSAm JgorCQkJKCFNdWx0aVhhY3RJZElzVmFsaWQoKm1pbl90ZW1wbWlubXhpZCkgfHwKKwkJCSBNdWx0 aVhhY3RJZFByZWNlZGVzKHByb2MtPnRlbXBtaW5teGlkLCAqbWluX3RlbXBtaW5teGlkKSkpCisJ CQkqbWluX3RlbXBtaW5teGlkID0gcHJvYy0+dGVtcG1pbm14aWQ7CisJfQorCUxXTG9ja1JlbGVh c2UoUHJvY0FycmF5TG9jayk7Cit9CisKKwogLyoKICAqCXZhY191cGRhdGVfZGF0ZnJvemVueGlk KCkgLS0gdXBkYXRlIHBnX2RhdGFiYXNlLmRhdGZyb3plbnhpZCBmb3Igb3VyIERCCiAgKgpAQCAt MTY1Niw2ICsxNzI2LDggQEAgdmFjX3VwZGF0ZV9kYXRmcm96ZW54aWQodm9pZCkKIAlib29sCQlk aXJ0eSA9IGZhbHNlOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKIAl2b2lkCSAgICppbnBsYWNlX3N0 YXRlOworCVRyYW5zYWN0aW9uSWQgbWluX3RlbXBmcm96ZW54aWQ7CisJTXVsdGlYYWN0SWQgbWlu X3RlbXBtaW5teGlkOwogCiAJLyoKIAkgKiBSZXN0cmljdCB0aGlzIHRhc2sgdG8gb25lIGJhY2tl bmQgcGVyIGRhdGFiYXNlLiAgVGhpcyBhdm9pZHMgcmFjZQpAQCAtMTcxMCwxMCArMTc4MiwxNyBA QCB2YWNfdXBkYXRlX2RhdGZyb3plbnhpZCh2b2lkKQogCQkvKgogCQkgKiBPbmx5IGNvbnNpZGVy IHJlbGF0aW9ucyBhYmxlIHRvIGhvbGQgdW5mcm96ZW4gWElEcyAoYW55dGhpbmcgZWxzZQogCQkg KiBzaG91bGQgaGF2ZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBpbiByZWxmcm96ZW54aWQgYW55d2F5 KS4KKwkJICoKKwkJICogV2UgZXhjbHVkZSBnbG9iYWwgdGVtcG9yYXJ5IHJlbGF0aW9ucyBoZXJl IHRvbyBiZWNhdXNlLCBhbHRob3VnaAorCQkgKiB0aGV5IGNhbiBob2xkIHVuZnJvemVuIFhJRHMs IHRoZWlyIHJlbGZyb3plbnhpZCBhbmQgcmVsbWlubXhpZAorCQkgKiB2YWx1ZXMgYXJlIHNldCBp biBwZ190ZW1wX2NsYXNzLCBpbnN0ZWFkIG9mIHBnX2NsYXNzLCBhbmQgdGhvc2UKKwkJICogdmFs dWVzIGNvbnRyaWJ1dGUgdG8gdGVtcGZyb3plbnhpZCBhbmQgdGVtcG1pbm14aWQsIHdoaWNoIHdl CisJCSAqIGFjY291bnQgZm9yIGJlbG93LgogCQkgKi8KLQkJaWYgKGNsYXNzRm9ybS0+cmVsa2lu ZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCi0JCQljbGFzc0Zvcm0tPnJlbGtpbmQgIT0gUkVMS0lO RF9NQVRWSUVXICYmCi0JCQljbGFzc0Zvcm0tPnJlbGtpbmQgIT0gUkVMS0lORF9UT0FTVFZBTFVF KQorCQlpZiAoKGNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCQkg Y2xhc3NGb3JtLT5yZWxraW5kICE9IFJFTEtJTkRfTUFUVklFVyAmJgorCQkJIGNsYXNzRm9ybS0+ cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUpIHx8CisJCQljbGFzc0Zvcm0tPnJlbHBlcnNp c3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX0dMT0JBTF9URU1QKQogCQl7CiAJCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHJlbGZyb3plbnhpZCkpOwogCQkJQXNzZXJ0KCFNdWx0aVhhY3RJ ZElzVmFsaWQocmVsbWlubXhpZCkpOwpAQCAtMTc3MCw2ICsxODQ5LDMxIEBAIHZhY191cGRhdGVf ZGF0ZnJvemVueGlkKHZvaWQpCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKIAl0YWJsZV9jbG9z ZShyZWxhdGlvbiwgQWNjZXNzU2hhcmVMb2NrKTsKIAorCS8qCisJICogQWNjb3VudCBmb3IgdGVt cGZyb3plbnhpZCBhbmQgdGVtcG1pbm14aWQgZnJvbSBhbGwgYmFja2VuZHMgY29ubmVjdGVkCisJ ICogdG8gb3VyIGRhdGFiYXNlLiAgVGhpcyBhbW91bnRzIHRvIG1pbihwZ190ZW1wX2NsYXNzLnJl bGZyb3plbnhpZCkgYW5kCisJICogbWluKHBnX3RlbXBfY2xhc3MucmVsbWlubXhpZCkgb3ZlciBh bGwgdGhvc2UgYmFja2VuZHMuCisJICovCisJdmFjX2dldF9taW5fdGVtcGZyb3plbnhpZHMoJm1p bl90ZW1wZnJvemVueGlkLCAmbWluX3RlbXBtaW5teGlkKTsKKworCWlmIChUcmFuc2FjdGlvbklk SXNWYWxpZChtaW5fdGVtcGZyb3plbnhpZCkpCisJeworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElz Tm9ybWFsKG1pbl90ZW1wZnJvemVueGlkKSk7CisKKwkJaWYgKFRyYW5zYWN0aW9uSWRQcmVjZWRl cyhsYXN0U2FuZUZyb3plblhpZCwgbWluX3RlbXBmcm96ZW54aWQpKQorCQkJYm9ndXMgPSB0cnVl OworCQllbHNlIGlmIChUcmFuc2FjdGlvbklkUHJlY2VkZXMobWluX3RlbXBmcm96ZW54aWQsIG5l d0Zyb3plblhpZCkpCisJCQluZXdGcm96ZW5YaWQgPSBtaW5fdGVtcGZyb3plbnhpZDsKKwl9CisK KwlpZiAoTXVsdGlYYWN0SWRJc1ZhbGlkKG1pbl90ZW1wbWlubXhpZCkpCisJeworCQlpZiAoTXVs dGlYYWN0SWRQcmVjZWRlcyhsYXN0U2FuZU1pbk11bHRpLCBtaW5fdGVtcG1pbm14aWQpKQorCQkJ Ym9ndXMgPSB0cnVlOworCQllbHNlIGlmIChNdWx0aVhhY3RJZFByZWNlZGVzKG1pbl90ZW1wbWlu bXhpZCwgbmV3TWluTXVsdGkpKQorCQkJbmV3TWluTXVsdGkgPSBtaW5fdGVtcG1pbm14aWQ7CisJ fQorCiAJLyogY2hpY2tlbiBvdXQgaWYgYm9ndXMgZGF0YSBmb3VuZCAqLwogCWlmIChib2d1cykK IAkJcmV0dXJuOwpAQCAtMjA0MCw3ICsyMTQ0LDcgQEAgdmFjX3RydW5jYXRlX2Nsb2coVHJhbnNh Y3Rpb25JZCBmcm96ZW5YSUQsCiAgKi8KIHN0YXRpYyBib29sCiB2YWN1dW1fcmVsKE9pZCByZWxp ZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgcGFyYW1zLAotCQkgICBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksIGJvb2wgaXNUb3BMZXZlbCkKKwkJICAgQnVmZmVyQWNj ZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LCBib29sIGlzVG9wTGV2ZWwsIGJvb2wgKmlzR3RyKQogewog CUxPQ0tNT0RFCWxtb2RlOwogCVJlbGF0aW9uCXJlbDsKQEAgLTIxMjYsNiArMjIzMCwxMCBAQCB2 YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgcGFy YW1zLAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCisJLyogdGVsbCBjYWxsZXIgaWYgaXQgd2FzIGEg Z2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbiAqLworCWlmIChSRUxBVElPTl9JU19HTE9CQUxfVEVN UChyZWwpKQorCQkqaXNHdHIgPSB0cnVlOworCiAJLyoKIAkgKiBXaGVuIHJlY3Vyc2luZyB0byBh IFRPQVNUIHRhYmxlLCBjaGVjayBwcml2aWxlZ2VzIG9uIHRoZSBwYXJlbnQuICBOQjoKIAkgKiBU aGlzIGlzIG9ubHkgc2FmZSB0byBkbyBiZWNhdXNlIHdlIGhvbGQgYSBzZXNzaW9uIGxvY2sgb24g dGhlIG1haW4KQEAgLTIzOTIsNyArMjUwMCw3IEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5n ZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCXRvYXN0X3ZhY3V1bV9wYXJh bXMudG9hc3RfcGFyZW50ID0gcmVsaWQ7CiAKIAkJdmFjdXVtX3JlbCh0b2FzdF9yZWxpZCwgTlVM TCwgdG9hc3RfdmFjdXVtX3BhcmFtcywgYnN0cmF0ZWd5LAotCQkJCSAgIGlzVG9wTGV2ZWwpOwor CQkJCSAgIGlzVG9wTGV2ZWwsIGlzR3RyKTsKIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKaW5kZXggN2QwMWM5ODFhMWYuLmE5MjA1ZTQ0OWQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogCiAjaW5jbHVkZSAi YWNjZXNzL2Nsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAi YWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ3V0aWxzLmgiCkBAIC01MjMsNiArNTI0LDEwIEBAIEluaXRQcm9jZXNzKHZv aWQpCiAJLyogSW5pdGlhbGl6ZSB3YWl0IGV2ZW50IGluZm9ybWF0aW9uLiAqLwogCU15UHJvYy0+ d2FpdF9ldmVudF9pbmZvID0gMDsKIAorCS8qIEluaXRpYWxpemUgZ2xvYmFsIHRlbXBvcmFyeSB0 YWJsZSBpbmZvcm1hdGlvbiAqLworCU15UHJvYy0+dGVtcGZyb3plbnhpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOworCU15UHJvYy0+dGVtcG1pbm14aWQgPSBJbnZhbGlkTXVsdGlYYWN0SWQ7CisK IAkvKiBJbml0aWFsaXplIGZpZWxkcyBmb3IgZ3JvdXAgdHJhbnNhY3Rpb24gc3RhdHVzIHVwZGF0 ZS4gKi8KIAlNeVByb2MtPmNsb2dHcm91cE1lbWJlciA9IGZhbHNlOwogCU15UHJvYy0+Y2xvZ0dy b3VwTWVtYmVyWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CkBAIC02ODYsNiArNjkxLDggQEAg SW5pdEF1eGlsaWFyeVByb2Nlc3Modm9pZCkKIAlNeVByb2MtPmJhY2tlbmRUeXBlID0gTXlCYWNr ZW5kVHlwZTsKIAlNeVByb2MtPmRlbGF5Q2hrcHRGbGFncyA9IDA7CiAJTXlQcm9jLT5zdGF0dXNG bGFncyA9IDA7CisJTXlQcm9jLT50ZW1wZnJvemVueGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7 CisJTXlQcm9jLT50ZW1wbWlubXhpZCA9IEludmFsaWRNdWx0aVhhY3RJZDsKIAlNeVByb2MtPmx3 V2FpdGluZyA9IExXX1dTX05PVF9XQUlUSU5HOwogCU15UHJvYy0+bHdXYWl0TW9kZSA9IDA7CiAJ TXlQcm9jLT53YWl0TG9jayA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmlu ZGV4IDU2NWQwZTcwNzY4Li5jYmQxOTQ2MWQzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1 bmNzLmMKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVk ZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ncHJlZmV0Y2hl ci5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgpAQCAtMzU1LDcgKzM1Niw3IEBAIHBn X3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8oUEdfRlVOQ1RJT05fQVJHUykKIERhdHVtCiBwZ19zdGF0 X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9B Q1RJVklUWV9DT0xTCTMxCisjZGVmaW5lIFBHX1NUQVRfR0VUX0FDVElWSVRZX0NPTFMJMzMKIAlp bnQJCQludW1fYmFja2VuZHMgPSBwZ3N0YXRfZmV0Y2hfc3RhdF9udW1iYWNrZW5kcygpOwogCWlu dAkJCWN1cnJfYmFja2VuZDsKIAlpbnQJCQlwaWQgPSBQR19BUkdJU05VTEwoMCkgPyAtMSA6IFBH X0dFVEFSR19JTlQzMigwKTsKQEAgLTQ1MSw2ICs0NTIsMTIgQEAgcGdfc3RhdF9nZXRfYWN0aXZp dHkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCS8qIGxlYWRlcl9waWQgKi8KIAkJCW51bGxzWzI5XSA9 IHRydWU7CiAKKwkJCS8qIHRlbXBmcm96ZW54aWQgKi8KKwkJCW51bGxzWzMxXSA9IHRydWU7CisK KwkJCS8qIHRlbXBtaW5teGlkICovCisJCQludWxsc1szMl0gPSB0cnVlOworCiAJCQlwcm9jID0g QmFja2VuZFBpZEdldFByb2MoYmVlbnRyeS0+c3RfcHJvY3BpZCk7CiAKIAkJCWlmIChwcm9jID09 IE5VTEwgJiYgKGJlZW50cnktPnN0X2JhY2tlbmRUeXBlICE9IEJfQkFDS0VORCkpCkBAIC00NjMs MTkgKzQ3MCwyNCBAQCBwZ19zdGF0X2dldF9hY3Rpdml0eShQR19GVU5DVElPTl9BUkdTKQogCQkJ fQogCiAJCQkvKgotCQkJICogSWYgYSBQR1BST0MgZW50cnkgd2FzIHJldHJpZXZlZCwgZGlzcGxh eSB3YWl0IGV2ZW50cyBhbmQgbG9jawotCQkJICogZ3JvdXAgbGVhZGVyIG9yIGFwcGx5IGxlYWRl ciBpbmZvcm1hdGlvbiBpZiBhbnkuICBUbyBhdm9pZAotCQkJICogZXh0cmEgb3ZlcmhlYWQsIG5v IGV4dHJhIGxvY2sgaXMgYmVpbmcgaGVsZCwgc28gdGhlcmUgaXMgbm8KLQkJCSAqIGd1YXJhbnRl ZSBvZiBjb25zaXN0ZW5jeSBhY3Jvc3MgbXVsdGlwbGUgcm93cy4KKwkJCSAqIElmIGEgUEdQUk9D IGVudHJ5IHdhcyByZXRyaWV2ZWQsIGRpc3BsYXkgd2FpdCBldmVudHMsIGxvY2sKKwkJCSAqIGdy b3VwIGxlYWRlciBvciBhcHBseSBsZWFkZXIgaW5mb3JtYXRpb24gaWYgYW55LCB0ZW1wZnJvemVu eGlkCisJCQkgKiBhbmQgdGVtcG1pbm14aWQuICBUbyBhdm9pZCBleHRyYSBvdmVyaGVhZCwgbm8g ZXh0cmEgbG9jayBpcworCQkJICogYmVpbmcgaGVsZCwgc28gdGhlcmUgaXMgbm8gZ3VhcmFudGVl IG9mIGNvbnNpc3RlbmN5IGFjcm9zcworCQkJICogbXVsdGlwbGUgcm93cy4KIAkJCSAqLwogCQkJ aWYgKHByb2MgIT0gTlVMTCkKIAkJCXsKIAkJCQl1aW50MzIJCXJhd193YWl0X2V2ZW50OwogCQkJ CVBHUFJPQwkgICAqbGVhZGVyOworCQkJCVRyYW5zYWN0aW9uSWQgdGVtcGZyb3plbnhpZDsKKwkJ CQlNdWx0aVhhY3RJZCB0ZW1wbWlubXhpZDsKIAogCQkJCXJhd193YWl0X2V2ZW50ID0gVUlOVDMy X0FDQ0VTU19PTkNFKHByb2MtPndhaXRfZXZlbnRfaW5mbyk7CiAJCQkJd2FpdF9ldmVudF90eXBl ID0gcGdzdGF0X2dldF93YWl0X2V2ZW50X3R5cGUocmF3X3dhaXRfZXZlbnQpOwogCQkJCXdhaXRf ZXZlbnQgPSBwZ3N0YXRfZ2V0X3dhaXRfZXZlbnQocmF3X3dhaXRfZXZlbnQpOworCQkJCXRlbXBm cm96ZW54aWQgPSAoVHJhbnNhY3Rpb25JZCkgVUlOVDMyX0FDQ0VTU19PTkNFKHByb2MtPnRlbXBm cm96ZW54aWQpOworCQkJCXRlbXBtaW5teGlkID0gKE11bHRpWGFjdElkKSBVSU5UMzJfQUNDRVNT X09OQ0UocHJvYy0+dGVtcG1pbm14aWQpOwogCiAJCQkJbGVhZGVyID0gcHJvYy0+bG9ja0dyb3Vw TGVhZGVyOwogCkBAIC00OTksNiArNTExLDIzIEBAIHBnX3N0YXRfZ2V0X2FjdGl2aXR5KFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQkJCQludWxsc1syOV0gPSBmYWxzZTsKIAkJCQkJfQogCQkJCX0KKwor CQkJCS8qCisJCQkJICogU2hvdyB0ZW1wZnJvemVueGlkIGFuZCB0ZW1wbWlubXhpZCwgaWYgdmFs aWQuICBUaGlzIGxlYXZlcworCQkJCSAqIHRoZXNlIGZpZWxkcyBhcyBOVUxMIGlmIHRoZXNlIFhJ RHMgYXJlIGludmFsaWQgKDApLCB3aGljaAorCQkJCSAqIGluZGljYXRlcyB0aGUgYmFja2VuZCBp cyBub3QgdXNpbmcgYW55IGdsb2JhbCB0ZW1wb3JhcnkKKwkJCQkgKiByZWxhdGlvbnMuCisJCQkJ ICovCisJCQkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHRlbXBmcm96ZW54aWQpKQorCQkJCXsK KwkJCQkJdmFsdWVzWzMxXSA9IFRyYW5zYWN0aW9uSWRHZXREYXR1bSh0ZW1wZnJvemVueGlkKTsK KwkJCQkJbnVsbHNbMzFdID0gZmFsc2U7CisJCQkJfQorCQkJCWlmIChNdWx0aVhhY3RJZElzVmFs aWQodGVtcG1pbm14aWQpKQorCQkJCXsKKwkJCQkJdmFsdWVzWzMyXSA9IE11bHRpWGFjdElkR2V0 RGF0dW0odGVtcG1pbm14aWQpOworCQkJCQludWxsc1szMl0gPSBmYWxzZTsKKwkJCQl9CiAJCQl9 CiAKIAkJCWlmICh3YWl0X2V2ZW50X3R5cGUpCkBAIC02OTgsNiArNzI3LDggQEAgcGdfc3RhdF9n ZXRfYWN0aXZpdHkoUEdfRlVOQ1RJT05fQVJHUykKIAkJCW51bGxzWzI4XSA9IHRydWU7CiAJCQlu dWxsc1syOV0gPSB0cnVlOwogCQkJbnVsbHNbMzBdID0gdHJ1ZTsKKwkJCW51bGxzWzMxXSA9IHRy dWU7CisJCQludWxsc1szMl0gPSB0cnVlOwogCQl9CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMo cnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCAyNzQxMzJjZWQ4Ny4uZTg1N2UzNmViNGEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNzAsNiArNzAsNyBAQAogI2luY2x1ZGUg ImNvbW1hbmRzL3BvbGljeS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5o IgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKKyNpbmNsdWRlICJjb21tYW5kcy92YWN1 dW0uaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0zMDMsNiArMzA0LDcgQEAgc3RhdGljIHZv aWQgZm9ybXJkZXNjKGNvbnN0IGNoYXIgKnJlbGF0aW9uTmFtZSwgT2lkIHJlbGF0aW9uUmVsdHlw ZSwKIAkJCQkJICBib29sIGlzc2hhcmVkLCBpbnQgbmF0dHMsIGNvbnN0IEZvcm1EYXRhX3BnX2F0 dHJpYnV0ZSAqYXR0cnMpOwogCiBzdGF0aWMgSGVhcFR1cGxlIFNjYW5QZ1JlbGF0aW9uKE9pZCB0 YXJnZXRSZWxJZCwgYm9vbCBpbmRleE9LLCBib29sIGZvcmNlX25vbl9oaXN0b3JpYyk7CitzdGF0 aWMgdm9pZCBTY2FuUGdUZW1wUmVsYXRpb24oT2lkIHJlbGlkLCBGb3JtX3BnX2NsYXNzIHBnX2Ns YXNzX2Zvcm0pOwogc3RhdGljIFJlbGF0aW9uIEFsbG9jYXRlUmVsYXRpb25EZXNjKEZvcm1fcGdf Y2xhc3MgcmVscCk7CiBzdGF0aWMgdm9pZCBSZWxhdGlvblBhcnNlUmVsT3B0aW9ucyhSZWxhdGlv biByZWxhdGlvbiwgSGVhcFR1cGxlIHR1cGxlKTsKIHN0YXRpYyB2b2lkIFJlbGF0aW9uQnVpbGRU dXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24pOwpAQCAtNDE1LDcgKzQxNyw4IEBAIFNjYW5QZ1Jl bGF0aW9uKE9pZCB0YXJnZXRSZWxJZCwgYm9vbCBpbmRleE9LLCBib29sIGZvcmNlX25vbl9oaXN0 b3JpYykKIAkgKiB0aGlzIGZvciBwZ190ZW1wX2NsYXNzIGl0c2VsZiwgb3IgaXRzIGluZGV4LCBi ZWNhdXNlIHRoZXkgbWF5IG5vdCBoYXZlCiAJICogYmVlbiBsb2FkZWQgeWV0LiAgVGhhdCdzIE9L IGJlY2F1c2Ugd2Ugb25seSByZWFsbHkgbmVlZCByZWxmaWxlbnVtYmVyCiAJICogYW5kIHJlbHRh Ymxlc3BhY2UgdG8gYmUgY29ycmVjdCBhdCB0aGlzIHN0YWdlLCBhbmQgd2UgZGlzYWxsb3cgY2hh bmdlcwotCSAqIHRvIHRob3NlIGF0dHJpYnV0ZXMgZm9yIHRoZXNlIHJlbGF0aW9ucy4KKwkgKiB0 byB0aG9zZSBhdHRyaWJ1dGVzIGZvciB0aGVzZSByZWxhdGlvbnMuICBGaW5hbCBpbml0aWFsaXph dGlvbiBvZgorCSAqIHBnX3RlbXBfY2xhc3MgYW5kIGl0cyBpbmRleCBpcyBwZXJmb3JtZWQgYnkg UmVsYXRpb25JZEdldFJlbGF0aW9uKCkuCiAJICovCiAJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGdf Y2xhc3NfdHVwbGUpICYmCiAJCXRhcmdldFJlbElkICE9IFRlbXBSZWxhdGlvblJlbGF0aW9uSWQg JiYKQEAgLTQyNiwyMyArNDI5LDQwIEBAIFNjYW5QZ1JlbGF0aW9uKE9pZCB0YXJnZXRSZWxJZCwg Ym9vbCBpbmRleE9LLCBib29sIGZvcmNlX25vbl9oaXN0b3JpYykKIAkJcGdfY2xhc3NfZm9ybSA9 IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QocGdfY2xhc3NfdHVwbGUpOwogCiAJCWlmIChwZ19j bGFzc19mb3JtLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9HTE9CQUxfVEVNUCkK LQkJewotCQkJSGVhcFR1cGxlCXBnX3RlbXBfY2xhc3NfdHVwbGU7Ci0JCQlGb3JtX3BnX3RlbXBf Y2xhc3MgcGdfdGVtcF9jbGFzc19mb3JtOwotCi0JCQlwZ190ZW1wX2NsYXNzX3R1cGxlID0gR2V0 UGdUZW1wQ2xhc3NUdXBsZSh0YXJnZXRSZWxJZCk7Ci0JCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChw Z190ZW1wX2NsYXNzX3R1cGxlKSkKLQkJCXsKLQkJCQlwZ190ZW1wX2NsYXNzX2Zvcm0gPSAoRm9y bV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QocGdfdGVtcF9jbGFzc190dXBsZSk7Ci0JCQkJQ09Q WV9QR19URU1QX0NMQVNTX0FUVFJTKHBnX3RlbXBfY2xhc3NfZm9ybSwgcGdfY2xhc3NfZm9ybSk7 Ci0JCQkJaGVhcF9mcmVldHVwbGUocGdfdGVtcF9jbGFzc190dXBsZSk7Ci0JCQl9Ci0JCX0KKwkJ CVNjYW5QZ1RlbXBSZWxhdGlvbih0YXJnZXRSZWxJZCwgcGdfY2xhc3NfZm9ybSk7CiAJfQogCiAJ cmV0dXJuIHBnX2NsYXNzX3R1cGxlOwogfQogCisvKgorICoJCVNjYW5QZ1RlbXBSZWxhdGlvbgor ICoKKyAqCQlUaGlzIGlzIHVzZWQgYnkgU2NhblBnUmVsYXRpb24gdG8gdXBkYXRlIGEgZ2xvYmFs IHRlbXBvcmFyeSByZWxhdGlvbidzCisgKgkJcmVsY2FjaGUgZW50cnkgZnJvbSBpdHMgcGdfdGVt cF9jbGFzcyB0dXBsZS4KKyAqCisgKgkJSW4gYWRkaXRpb24sIGl0IGlzIHVzZWQgYnkgUmVsYXRp b25JZEdldFJlbGF0aW9uKCkgdG8gcGVyZm9ybSBmaW5hbAorICoJCWludGlhbGl6YXRpb24gZm9y IHBnX3RlbXBfY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGluZGV4IC0tLSBhcyBub3RlZAorICoJCWFi b3ZlLCBTY2FuUGdSZWxhdGlvbigpIGNhbm5vdCBzY2FuIHBnX3RlbXBfY2xhc3Mgd2hlbiBpbml0 aWFsaXppbmcKKyAqCQlwZ190ZW1wX2NsYXNzIGl0c2VsZiwgb3IgaXRzIGluZGV4LCBhbmQgc28g dGhpcyBpcyB1c2VkIGFmdGVyIGJ1aWxkaW5nCisgKgkJaW5pdGlhbCByZWxjYWNoZSBlbnRyaWVz LCBjcmVhdGluZyBzdG9yYWdlLCBhbmQgaW5zZXJ0aW5nCisgKgkJcGdfdGVtcF9jbGFzcyB0dXBs ZXMgZm9yIHRoZXNlIHJlbGF0aW9ucy4KKyAqLworc3RhdGljIHZvaWQKK1NjYW5QZ1RlbXBSZWxh dGlvbihPaWQgcmVsaWQsIEZvcm1fcGdfY2xhc3MgcGdfY2xhc3NfZm9ybSkKK3sKKwlIZWFwVHVw bGUJcGdfdGVtcF9jbGFzc190dXBsZTsKKwlGb3JtX3BnX3RlbXBfY2xhc3MgcGdfdGVtcF9jbGFz c19mb3JtOworCisJcGdfdGVtcF9jbGFzc190dXBsZSA9IEdldFBnVGVtcENsYXNzVHVwbGUocmVs aWQpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHBnX3RlbXBfY2xhc3NfdHVwbGUpKQorCXsKKwkJ cGdfdGVtcF9jbGFzc19mb3JtID0gKEZvcm1fcGdfdGVtcF9jbGFzcykgR0VUU1RSVUNUKHBnX3Rl bXBfY2xhc3NfdHVwbGUpOworCQlDT1BZX1BHX1RFTVBfQ0xBU1NfQVRUUlMocGdfdGVtcF9jbGFz c19mb3JtLCBwZ19jbGFzc19mb3JtKTsKKwkJaGVhcF9mcmVldHVwbGUocGdfdGVtcF9jbGFzc190 dXBsZSk7CisJfQorfQorCiAvKgogICoJCUFsbG9jYXRlUmVsYXRpb25EZXNjCiAgKgpAQCAtMjE2 NCw2ICsyMTg0LDE1IEBAIFJlbGF0aW9uSWRHZXRSZWxhdGlvbihPaWQgcmVsYXRpb25JZCkKIAkJ CWlmIChSRUxBVElPTl9JU19HTE9CQUxfVEVNUChyZCkpCiAJCQkJSW5pdEdsb2JhbFRlbXBSZWxh dGlvbihyZCk7CiAKKwkJCS8qCisJCQkgKiBTcGVjaWFsLWNhc2U6IGlmIGl0J3MgcGdfdGVtcF9j bGFzcyBvciBpdHMgaW5kZXgsIHVwZGF0ZSBpdHMKKwkJCSAqIHJlbGNhY2hlIGVudHJ5IGZyb20g dGhlIHBnX3RlbXBfY2xhc3MgdHVwbGUgKFNjYW5QZ1JlbGF0aW9uKCkKKwkJCSAqIGNvdWxkbid0 IGRvIHRoaXMgd2hlbiBmaXJzdCBsb2FkaW5nIHRoZXNlIHJlbGF0aW9ucykuCisJCQkgKi8KKwkJ CWlmIChyZC0+cmRfaWQgPT0gVGVtcFJlbGF0aW9uUmVsYXRpb25JZCB8fAorCQkJCXJkLT5yZF9p ZCA9PSBUZW1wQ2xhc3NPaWRJbmRleElkKQorCQkJCVNjYW5QZ1RlbXBSZWxhdGlvbihyZC0+cmRf aWQsIHJkLT5yZF9yZWwpOworCiAJCQkvKgogCQkJICogTm9ybWFsbHkgZW50cmllcyBuZWVkIHRv IGJlIHZhbGlkIGhlcmUsIGJ1dCBiZWZvcmUgdGhlIHJlbGNhY2hlCiAJCQkgKiBoYXMgYmVlbiBp bml0aWFsaXplZCwgbm90IGVub3VnaCBpbmZyYXN0cnVjdHVyZSBleGlzdHMgdG8KQEAgLTIxODcs NiArMjIxNiw5IEBAIFJlbGF0aW9uSWRHZXRSZWxhdGlvbihPaWQgcmVsYXRpb25JZCkKIAkJUmVs YXRpb25JbmNyZW1lbnRSZWZlcmVuY2VDb3VudChyZCk7CiAJCWlmIChSRUxBVElPTl9JU19HTE9C QUxfVEVNUChyZCkpCiAJCQlJbml0R2xvYmFsVGVtcFJlbGF0aW9uKHJkKTsKKwkJaWYgKHJkLT5y ZF9pZCA9PSBUZW1wUmVsYXRpb25SZWxhdGlvbklkIHx8CisJCQlyZC0+cmRfaWQgPT0gVGVtcENs YXNzT2lkSW5kZXhJZCkKKwkJCVNjYW5QZ1RlbXBSZWxhdGlvbihyZC0+cmRfaWQsIHJkLT5yZF9y ZWwpOwogCX0KIAlyZXR1cm4gcmQ7CiB9CkBAIC00MDM0LDcgKzQwNjYsNyBAQCBSZWxhdGlvblNl dE5ld1JlbGZpbGVudW1iZXIoUmVsYXRpb24gcmVsYXRpb24sIGNoYXIgcGVyc2lzdGVuY2UpCiAJ fQogCWVsc2UKIAl7Ci0JCS8qIE5vcm1hbCBjYXNlLCB1cGRhdGUgdGhlIHBnX2NsYXNzIGFuZCBw Z190ZW1wX2NsYXNzIGVudHJpZXMgKi8KKwkJLyogTm9ybWFsIGNhc2UsIHVwZGF0ZSBwZ19jbGFz cyBvciBwZ190ZW1wX2NsYXNzIGVudHJ5IChub3QgYm90aCkgKi8KIAkJU2V0RWZmZWN0aXZlX3Jl bGZpbGVub2RlKGNsYXNzZm9ybSwgdGVtcF9jbGFzc2Zvcm0sIG5ld3JlbGZpbGVudW1iZXIpOwog CiAJCS8qIHJlbHBhZ2VzIGV0Yy4gbmV2ZXIgY2hhbmdlIGZvciBzZXF1ZW5jZXMgKi8KQEAgLTQw NDYsMTUgKzQwNzgsMjMgQEAgUmVsYXRpb25TZXROZXdSZWxmaWxlbnVtYmVyKFJlbGF0aW9uIHJl bGF0aW9uLCBjaGFyIHBlcnNpc3RlbmNlKQogCQkJU2V0RWZmZWN0aXZlX3JlbGFsbHZpc2libGUo Y2xhc3Nmb3JtLCB0ZW1wX2NsYXNzZm9ybSwgMCwgTlVMTCwgTlVMTCk7CiAJCQlTZXRFZmZlY3Rp dmVfcmVsYWxsZnJvemVuKGNsYXNzZm9ybSwgdGVtcF9jbGFzc2Zvcm0sIDAsIE5VTEwsIE5VTEwp OwogCQl9Ci0JCWNsYXNzZm9ybS0+cmVsZnJvemVueGlkID0gZnJlZXplWGlkOwotCQljbGFzc2Zv cm0tPnJlbG1pbm14aWQgPSBtaW5tdWx0aTsKLQkJY2xhc3Nmb3JtLT5yZWxwZXJzaXN0ZW5jZSA9 IHBlcnNpc3RlbmNlOworCQlTZXRFZmZlY3RpdmVfcmVsZnJvemVueGlkKGNsYXNzZm9ybSwgdGVt cF9jbGFzc2Zvcm0sIGZyZWV6ZVhpZCwgTlVMTCwgTlVMTCk7CisJCVNldEVmZmVjdGl2ZV9yZWxt aW5teGlkKGNsYXNzZm9ybSwgdGVtcF9jbGFzc2Zvcm0sIG1pbm11bHRpLCBOVUxMLCBOVUxMKTsK IAotCQlDYXRhbG9nVHVwbGVVcGRhdGUocGdfY2xhc3MsICZvdGlkLCB0dXBsZSk7CisJCS8qIHJl bHBlcnNpc3RlbmNlIGNhbiBvbmx5IGNoYW5nZSBmb3IgcGVybWFuZW50IHJlbGF0aW9ucyAqLwog CQlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0ZW1wX3R1cGxlKSkKIAkJeworCQkJQXNzZXJ0KGNsYXNz Zm9ybS0+cmVscGVyc2lzdGVuY2UgPT0gcGVyc2lzdGVuY2UpOwogCQkJVXBkYXRlUGdUZW1wQ2xh c3NUdXBsZShSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSwgdGVtcF90dXBsZSk7CiAJCQloZWFw X2ZyZWV0dXBsZSh0ZW1wX3R1cGxlKTsKKworCQkJLyogVXBkYXRlIHRoaXMgYmFja2VuZCdzIHRl bXBmcm96ZW54aWQgYW5kIHRlbXBtaW5teGlkICovCisJCQlVcGRhdGVUZW1wRnJvemVuWGlkcygp OworCQl9CisJCWVsc2UKKwkJeworCQkJY2xhc3Nmb3JtLT5yZWxwZXJzaXN0ZW5jZSA9IHBlcnNp c3RlbmNlOworCQkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmb3RpZCwgdHVwbGUpOwog CQl9CiAJfQogCkBAIC00MDY0LDcgKzQxMDQsNyBAQCBSZWxhdGlvblNldE5ld1JlbGZpbGVudW1i ZXIoUmVsYXRpb24gcmVsYXRpb24sIGNoYXIgcGVyc2lzdGVuY2UpCiAJdGFibGVfY2xvc2UocGdf Y2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyoKLQkgKiBNYWtlIHRoZSBwZ19jbGFzcyBh bmQgcGdfdGVtcF9jbGFzcyByb3cgY2hhbmdlcyBvciByZWxhdGlvbiBtYXAgY2hhbmdlCisJICog TWFrZSB0aGUgcGdfY2xhc3MvcGdfdGVtcF9jbGFzcyByb3cgY2hhbmdlIG9yIHJlbGF0aW9uIG1h cCBjaGFuZ2UKIAkgKiB2aXNpYmxlLiAgVGhpcyB3aWxsIGNhdXNlIHRoZSByZWxjYWNoZSBlbnRy eSB0byBnZXQgdXBkYXRlZCwgdG9vLgogCSAqLwogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzY2I4NDM1OWFkZi4uOTMzZWQ5YWNiOGIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTY5MCw5ICs1NjkwLDkgQEAKICAgcHJvbmFtZSA9 PiAncGdfc3RhdF9nZXRfYWN0aXZpdHknLCBwcm9yb3dzID0+ICcxMDAnLCBwcm9pc3N0cmljdCA9 PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxs ZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnaW50 NCcsCi0gIHByb2FsbGFyZ3R5cGVzID0+ICd7aW50NCxvaWQsaW50NCxvaWQsdGV4dCx0ZXh0LHRl eHQsdGV4dCx0ZXh0LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHRpbWVzdGFt cHR6LGluZXQsdGV4dCxpbnQ0LHhpZCx4aWQsdGV4dCxib29sLHRleHQsdGV4dCxpbnQ0LHRleHQs bnVtZXJpYyx0ZXh0LGJvb2wsdGV4dCxib29sLGJvb2wsaW50NCxpbnQ4fScsCi0gIHByb2FyZ21v ZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvLG8sbyxvLG8sbyxvfScsCi0gIHByb2FyZ25hbWVzID0+ICd7cGlkLGRhdGlkLHBpZCx1c2Vz eXNpZCxhcHBsaWNhdGlvbl9uYW1lLHN0YXRlLHF1ZXJ5LHdhaXRfZXZlbnRfdHlwZSx3YWl0X2V2 ZW50LHhhY3Rfc3RhcnQscXVlcnlfc3RhcnQsYmFja2VuZF9zdGFydCxzdGF0ZV9jaGFuZ2UsY2xp ZW50X2FkZHIsY2xpZW50X2hvc3RuYW1lLGNsaWVudF9wb3J0LGJhY2tlbmRfeGlkLGJhY2tlbmRf eG1pbixiYWNrZW5kX3R5cGUsc3NsLHNzbHZlcnNpb24sc3NsY2lwaGVyLHNzbGJpdHMsc3NsX2Ns aWVudF9kbixzc2xfY2xpZW50X3NlcmlhbCxzc2xfaXNzdWVyX2RuLGdzc19hdXRoLGdzc19wcmlu Yyxnc3NfZW5jLGdzc19kZWxlZ2F0aW9uLGxlYWRlcl9waWQscXVlcnlfaWR9JywKKyAgcHJvYWxs YXJndHlwZXMgPT4gJ3tpbnQ0LG9pZCxpbnQ0LG9pZCx0ZXh0LHRleHQsdGV4dCx0ZXh0LHRleHQs dGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosdGltZXN0YW1wdHosaW5ldCx0ZXh0 LGludDQseGlkLHhpZCx0ZXh0LGJvb2wsdGV4dCx0ZXh0LGludDQsdGV4dCxudW1lcmljLHRleHQs Ym9vbCx0ZXh0LGJvb2wsYm9vbCxpbnQ0LGludDgseGlkLHhpZH0nLAorICBwcm9hcmdtb2RlcyA9 PiAne2ksbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxv LG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3twaWQsZGF0aWQscGlkLHVzZXN5 c2lkLGFwcGxpY2F0aW9uX25hbWUsc3RhdGUscXVlcnksd2FpdF9ldmVudF90eXBlLHdhaXRfZXZl bnQseGFjdF9zdGFydCxxdWVyeV9zdGFydCxiYWNrZW5kX3N0YXJ0LHN0YXRlX2NoYW5nZSxjbGll bnRfYWRkcixjbGllbnRfaG9zdG5hbWUsY2xpZW50X3BvcnQsYmFja2VuZF94aWQsYmFja2VuZF94 bWluLGJhY2tlbmRfdHlwZSxzc2wsc3NsdmVyc2lvbixzc2xjaXBoZXIsc3NsYml0cyxzc2xfY2xp ZW50X2RuLHNzbF9jbGllbnRfc2VyaWFsLHNzbF9pc3N1ZXJfZG4sZ3NzX2F1dGgsZ3NzX3ByaW5j LGdzc19lbmMsZ3NzX2RlbGVnYXRpb24sbGVhZGVyX3BpZCxxdWVyeV9pZCx0ZW1wZnJvemVueGlk LHRlbXBtaW5teGlkfScsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfYWN0aXZpdHknIH0sCiB7 IG9pZCA9PiAnNjMxOCcsIGRlc2NyID0+ICdkZXNjcmliZSB3YWl0IGV2ZW50cycsCiAgIHByb25h bWUgPT4gJ3BnX2dldF93YWl0X2V2ZW50cycsIHByb2Nvc3QgPT4gJzEwJywgcHJvcm93cyA9PiAn MjUwJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgKaW5kZXggZTZiNzdiNTBkMjMuLmE0 NjI5YjEyYzlkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfY2xhc3Mu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfY2xhc3MuaApAQCAtNTcsNiArNTcs MTIgQEAgQ0FUQUxPRyhwZ190ZW1wX2NsYXNzLDgwODIsVGVtcFJlbGF0aW9uUmVsYXRpb25JZCkg QktJX1RFTVBfUkVMQVRJT04KIAogCS8qICMgb2YgYWxsLWZyb3plbiBibG9ja3MgKG5vdCBhbHdh eXMgdXAtdG8tZGF0ZSkgKi8KIAlpbnQzMgkJcmVsYWxsZnJvemVuIEJLSV9ERUZBVUxUKDApOwor CisJLyogYWxsIFhpZHMgPCB0aGlzIGFyZSBmcm96ZW4gaW4gdGhpcyByZWwgKi8KKwlUcmFuc2Fj dGlvbklkIHJlbGZyb3plbnhpZCBCS0lfREVGQVVMVCgzKTsJLyogRmlyc3ROb3JtYWxUcmFuc2Fj dGlvbklkICovCisKKwkvKiBhbGwgbXVsdGl4YWN0cyBpbiB0aGlzIHJlbCBhcmUgPj0gdGhpczsg aXQgaXMgcmVhbGx5IGEgTXVsdGlYYWN0SWQgKi8KKwlUcmFuc2FjdGlvbklkIHJlbG1pbm14aWQg QktJX0RFRkFVTFQoMSk7CS8qIEZpcnN0TXVsdGlYYWN0SWQgKi8KIH0gRm9ybURhdGFfcGdfdGVt cF9jbGFzczsKIAogRU5EX0NBVEFMT0dfU1RSVUNUCkBAIC04Nyw2ICs5Myw4IEBAIE1BS0VfU1lT Q0FDSEUoVEVNUFJFTE9JRCwgcGdfdGVtcF9jbGFzc19vaWRfaW5kZXgsIDEyOCk7CiAJCSh0YXJn ZXQpLT5yZWx0dXBsZXMgPSAoc291cmNlKS0+cmVsdHVwbGVzOyBcCiAJCSh0YXJnZXQpLT5yZWxh bGx2aXNpYmxlID0gKHNvdXJjZSktPnJlbGFsbHZpc2libGU7IFwKIAkJKHRhcmdldCktPnJlbGFs bGZyb3plbiA9IChzb3VyY2UpLT5yZWxhbGxmcm96ZW47IFwKKwkJKHRhcmdldCktPnJlbGZyb3pl bnhpZCA9IChzb3VyY2UpLT5yZWxmcm96ZW54aWQ7IFwKKwkJKHRhcmdldCktPnJlbG1pbm14aWQg PSAoc291cmNlKS0+cmVsbWlubXhpZDsgXAogCX0gd2hpbGUgKDApCiAKIC8qCkBAIC0xNDksNiAr MTU3LDI2IEBAIEdldEVmZmVjdGl2ZV9yZWxhbGxmcm96ZW4oRm9ybV9wZ19jbGFzcyBjZiwgRm9y bV9wZ190ZW1wX2NsYXNzIHRmKQogCXJldHVybiB0ZiAhPSBOVUxMID8gdGYtPnJlbGFsbGZyb3pl biA6IGNmLT5yZWxhbGxmcm96ZW47CiB9CiAKKy8qCisgKiBHZXQgdGhlIGVmZmVjdGl2ZSB2YWx1 ZSBvZiByZWxmcm96ZW54aWQgZnJvbSBwZ19jbGFzcyBhbmQgcGdfdGVtcF9jbGFzcworICogdHVw bGUgZGF0YS4gIFRoZSB2YWx1ZSBmcm9tIHBnX3RlbXBfY2xhc3MgKGlmIHByZXNlbnQpIHRha2Vz IHByZWNlZGVuY2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorR2V0RWZmZWN0 aXZlX3JlbGZyb3plbnhpZChGb3JtX3BnX2NsYXNzIGNmLCBGb3JtX3BnX3RlbXBfY2xhc3MgdGYp Cit7CisJcmV0dXJuIHRmICE9IE5VTEwgPyB0Zi0+cmVsZnJvemVueGlkIDogY2YtPnJlbGZyb3pl bnhpZDsKK30KKworLyoKKyAqIEdldCB0aGUgZWZmZWN0aXZlIHZhbHVlIG9mIHJlbG1pbm14aWQg ZnJvbSBwZ19jbGFzcyBhbmQgcGdfdGVtcF9jbGFzcyB0dXBsZQorICogZGF0YS4gIFRoZSB2YWx1 ZSBmcm9tIHBnX3RlbXBfY2xhc3MgKGlmIHByZXNlbnQpIHRha2VzIHByZWNlZGVuY2UuCisgKi8K K3N0YXRpYyBpbmxpbmUgTXVsdGlYYWN0SWQKK0dldEVmZmVjdGl2ZV9yZWxtaW5teGlkKEZvcm1f cGdfY2xhc3MgY2YsIEZvcm1fcGdfdGVtcF9jbGFzcyB0ZikKK3sKKwlyZXR1cm4gdGYgIT0gTlVM TCA/IHRmLT5yZWxtaW5teGlkIDogY2YtPnJlbG1pbm14aWQ7Cit9CisKIC8qCiAgKiBTZXQgdGhl IGVmZmVjdGl2ZSB2YWx1ZSBvZiByZWxmaWxlbm9kZSBpbiB0dXBsZSBmb3JtIGRhdGEgZnJvbSBw Z19jbGFzcyBvcgogICogcGdfdGVtcF9jbGFzcy4gIFRoZSB2YWx1ZSBpcyBzZXQgaW4gcGdfdGVt cF9jbGFzcyBpbnN0ZWFkIG9mIHBnX2NsYXNzLCBpZgpAQCAtMjg1LDYgKzMxMyw2MCBAQCBTZXRF ZmZlY3RpdmVfcmVsYWxsZnJvemVuKEZvcm1fcGdfY2xhc3MgY2YsIEZvcm1fcGdfdGVtcF9jbGFz cyB0ZiwgaW50MzIgdmFsLAogCX0KIH0KIAorLyoKKyAqIFNldCB0aGUgZWZmZWN0aXZlIHZhbHVl IG9mIHJlbGZyb3plbnhpZCBpbiB0dXBsZSBmb3JtIGRhdGEgZnJvbSBwZ19jbGFzcyBvcgorICog cGdfdGVtcF9jbGFzcy4gIFRoZSB2YWx1ZSBpcyBzZXQgaW4gcGdfdGVtcF9jbGFzcyBpbnN0ZWFk IG9mIHBnX2NsYXNzLCBpZgorICogdGhlIHBnX3RlbXBfY2xhc3MgdHVwbGUgZm9ybSBkYXRhIGlz IG5vbi1OVUxMLiAgSWYgbm9uLU5VTEwsIHRoZSBjZGlydHkgb3IKKyAqIHRkaXJ0eSBmbGFnIGlz IHVwZGF0ZWQsIGlmIHRoZSB2YWx1ZSBhY3R1YWxseSBjaGFuZ2VzLgorICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK1NldEVmZmVjdGl2ZV9yZWxmcm96ZW54aWQoRm9ybV9wZ19jbGFzcyBjZiwgRm9y bV9wZ190ZW1wX2NsYXNzIHRmLAorCQkJCQkJICBUcmFuc2FjdGlvbklkIHZhbCwgYm9vbCAqY2Rp cnR5LCBib29sICp0ZGlydHkpCit7CisJaWYgKHRmICE9IE5VTEwpCisJeworCQlpZiAodmFsICE9 IHRmLT5yZWxmcm96ZW54aWQpCisJCXsKKwkJCXRmLT5yZWxmcm96ZW54aWQgPSB2YWw7CisJCQlp ZiAodGRpcnR5ICE9IE5VTEwpCisJCQkJKnRkaXJ0eSA9IHRydWU7CisJCX0KKwl9CisJZWxzZSBp ZiAodmFsICE9IGNmLT5yZWxmcm96ZW54aWQpCisJeworCQljZi0+cmVsZnJvemVueGlkID0gdmFs OworCQlpZiAoY2RpcnR5ICE9IE5VTEwpCisJCQkqY2RpcnR5ID0gdHJ1ZTsKKwl9Cit9CisKKy8q CisgKiBTZXQgdGhlIGVmZmVjdGl2ZSB2YWx1ZSBvZiByZWxtaW5teGlkIGluIHR1cGxlIGZvcm0g ZGF0YSBmcm9tIHBnX2NsYXNzIG9yCisgKiBwZ190ZW1wX2NsYXNzLiAgVGhlIHZhbHVlIGlzIHNl dCBpbiBwZ190ZW1wX2NsYXNzIGluc3RlYWQgb2YgcGdfY2xhc3MsIGlmCisgKiB0aGUgcGdfdGVt cF9jbGFzcyB0dXBsZSBmb3JtIGRhdGEgaXMgbm9uLU5VTEwuICBJZiBub24tTlVMTCwgdGhlIGNk aXJ0eSBvcgorICogdGRpcnR5IGZsYWcgaXMgdXBkYXRlZCwgaWYgdGhlIHZhbHVlIGFjdHVhbGx5 IGNoYW5nZXMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorU2V0RWZmZWN0aXZlX3JlbG1pbm14 aWQoRm9ybV9wZ19jbGFzcyBjZiwgRm9ybV9wZ190ZW1wX2NsYXNzIHRmLAorCQkJCQkJTXVsdGlY YWN0SWQgdmFsLCBib29sICpjZGlydHksIGJvb2wgKnRkaXJ0eSkKK3sKKwlpZiAodGYgIT0gTlVM TCkKKwl7CisJCWlmICh2YWwgIT0gdGYtPnJlbG1pbm14aWQpCisJCXsKKwkJCXRmLT5yZWxtaW5t eGlkID0gdmFsOworCQkJaWYgKHRkaXJ0eSAhPSBOVUxMKQorCQkJCSp0ZGlydHkgPSB0cnVlOwor CQl9CisJfQorCWVsc2UgaWYgKHZhbCAhPSBjZi0+cmVsbWlubXhpZCkKKwl7CisJCWNmLT5yZWxt aW5teGlkID0gdmFsOworCQlpZiAoY2RpcnR5ICE9IE5VTEwpCisJCQkqY2RpcnR5ID0gdHJ1ZTsK Kwl9Cit9CisKIAogZXh0ZXJuIEhlYXBUdXBsZSBHZXRQZ1RlbXBDbGFzc1R1cGxlKE9pZCByZWxp ZCk7CiAKQEAgLTMwMiw2ICszODQsOCBAQCBleHRlcm4gSGVhcFR1cGxlIEdldFBnQ2xhc3NBbmRQ Z1RlbXBDbGFzc1R1cGxlcyhPaWQgcmVsaWQsIGJvb2wgbG9ja190dXBsZSwKIAogZXh0ZXJuIEhl YXBUdXBsZSBHZXRFZmZlY3RpdmVQZ0NsYXNzVHVwbGUoT2lkIHJlbGlkKTsKIAorZXh0ZXJuIHZv aWQgVXBkYXRlVGVtcEZyb3plblhpZHModm9pZCk7CisKIGV4dGVybiB2b2lkIFByZUNDSV9QZ1Rl bXBDbGFzcyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgUHJlQ29tbWl0X1BnVGVtcENsYXNzKHZvaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy92YWN1dW0uaAppbmRleCA5NTZkOWNlYTM2ZC4uOWJkNWUxZWY3MTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCkBAIC0yNTcsNyArMjU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjdXVt UGFyYW1zCiBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcwogewogCS8qCi0JICogRXhpc3RpbmcgcGdfY2xh c3MgZmllbGRzIGF0IHN0YXJ0IG9mIFZBQ1VVTQorCSAqIEV4aXN0aW5nIHBnX2NsYXNzIC8gcGdf dGVtcF9jbGFzcyBmaWVsZHMgYXQgc3RhcnQgb2YgVkFDVVVNCiAJICovCiAJVHJhbnNhY3Rpb25J ZCByZWxmcm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5k ZXggM2UxZDFmYWQ1ZjkuLjcxMGI0NjZmMTczIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtMzgyLDYgKzM4 MiwxNSBAQCB0eXBlZGVmIHN0cnVjdCBQR1BST0MKIAkgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAJdWlu dDMyCQl3YWl0X2V2ZW50X2luZm87CS8qIHByb2MncyB3YWl0IGluZm9ybWF0aW9uICovCisKKwkv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCisJICogR2xvYmFsIHRlbXBvcmFyeSB0YWJsZXMKKwkgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLworCisJVHJhbnNhY3Rpb25JZCB0ZW1wZnJvemVueGlkOwkvKiBtaW5pbXVtIHJlbGZy b3plbnhpZCBvdmVyIGFsbCBnbG9iYWwKKwkJCQkJCQkJCSAqIHRlbXBvcmFyeSB0YWJsZXMgaW4g dXNlICovCisJTXVsdGlYYWN0SWQgdGVtcG1pbm14aWQ7CS8qIG1pbmltdW0gcmVsbWlubXhpZCBv dmVyIGFsbCBnbG9iYWwKKwkJCQkJCQkJICogdGVtcG9yYXJ5IHRhYmxlcyBpbiB1c2UgKi8KIH0K IFBHUFJPQzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL3ZhY3V1 bS1nbG9iYWwtdGVtcC5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvdmFjdXVtLWds b2JhbC10ZW1wLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDAy OGZjOWJmY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv dmFjdXVtLWdsb2JhbC10ZW1wLm91dApAQCAtMCwwICsxLDEyMyBAQAorUGFyc2VkIHRlc3Qgc3Bl YyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IGNyZWF0ZSB2YWNkbWwx IHZhYzEgdmFjZG1sMiB2YWMyIHZhY2RtbDEgdmFjMXByZXAgdmFjMSB2YWMxY21wIHZhY2RtbDIg dmFjMnByZXAgdmFjMiB2YWMyY21wIHZhY2RtbDEgdmFjMXByZXAgdmFjMSB2YWMxY21wIHZhY2Rt bDIgdmFjMnByZXAgdmFjMiB2YWMyY21wCitzdGVwIGNyZWF0ZTogCisgIENSRUFURSBHTE9CQUwg VEVNUCBUQUJMRSB2YWN0ZXN0IChhIGludCk7CisgIENSRUFURSBUQUJMRSBzYXZlZF94aWRzKGxv Y2FsX3hpZCBiaWdpbnQsIGdsb2JhbF94aWQgYmlnaW50LCBkYl94aWQgYmlnaW50KTsKKworICBD UkVBVEUgRlVOQ1RJT04gc2F2ZV94aWRzKCkgUkVUVVJOUyB2b2lkCisgIEJFR0lOIEFUT01JQwor ICAgIERFTEVURSBGUk9NIHNhdmVkX3hpZHM7CisgICAgSU5TRVJUIElOVE8gc2F2ZWRfeGlkcyBW QUxVRVMgKAorICAgICAgKFNFTEVDVCBtaW4ocmVsZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpIEZS T00gcGdfdGVtcF9jbGFzcyBXSEVSRSByZWxmcm96ZW54aWQgIT0gMCksCisgICAgICAoU0VMRUNU IG1pbihyZWxmcm96ZW54aWQ6OnRleHQ6OmJpZ2ludCkgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxm cm96ZW54aWQgIT0gMCksCisgICAgICAoU0VMRUNUIGRhdGZyb3plbnhpZDo6dGV4dDo6YmlnaW50 IEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSkKKyAg ICApOworICBFTkQ7CisKKyAgQ1JFQVRFIEZVTkNUSU9OIGNtcF94aWRzKHhpZDEgYmlnaW50LCB4 aWQyIGJpZ2ludCkgUkVUVVJOUyB0ZXh0CisgIEJFR0lOIEFUT01JQworICAgIFNFTEVDVCBDQVNF CisgICAgICAgICAgICAgV0hFTiB4aWQxIDwgeGlkMiBUSEVOICdvbGRlcicKKyAgICAgICAgICAg ICBXSEVOIHhpZDEgPiB4aWQyIFRIRU4gJ3lvdW5nZXInCisgICAgICAgICAgICAgRUxTRSAnc2Ft ZScKKyAgICAgICAgICAgRU5EOworICBFTkQ7CisKKyAgQ1JFQVRFIEZVTkNUSU9OIGNoZWNrX25l d194aWRzKE9VVCBsb2NhbF94aWQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE9VVCBnbG9iYWxfeGlkIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPVVQgZGJfeGlkIHRleHQpCisgIEJFR0lOIEFUT01JQworICAgIFdJVEggbmV3X3hpZHMobmV3 X2xvY2FsX3hpZCwgbmV3X2dsb2JhbF94aWQsIG5ld19kYl94aWQpIEFTICgKKyAgICAgIFNFTEVD VAorICAgICAgICAoU0VMRUNUIG1pbihyZWxmcm96ZW54aWQ6OnRleHQ6OmJpZ2ludCkgRlJPTSBw Z190ZW1wX2NsYXNzIFdIRVJFIHJlbGZyb3plbnhpZCAhPSAwKSwKKyAgICAgICAgKFNFTEVDVCBt aW4ocmVsZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsZnJv emVueGlkICE9IDApLAorICAgICAgICAoU0VMRUNUIGRhdGZyb3plbnhpZDo6dGV4dDo6YmlnaW50 IEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSkKKyAg ICApCisgICAgU0VMRUNUIGNtcF94aWRzKG5ld19sb2NhbF94aWQsIGxvY2FsX3hpZCksCisgICAg ICAgICAgIGNtcF94aWRzKG5ld19nbG9iYWxfeGlkLCBnbG9iYWxfeGlkKSwKKyAgICAgICAgICAg Y21wX3hpZHMobmV3X2RiX3hpZCwgZGJfeGlkKQorICAgIEZST00gc2F2ZWRfeGlkcywgbmV3X3hp ZHM7CisgIEVORDsKKworc3RlcCB2YWNkbWwxOiAKKyAgSU5TRVJUIElOVE8gdmFjdGVzdCBTRUxF Q1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCk7CisgIERFTEVURSBGUk9NIHZhY3Rlc3Qg V0hFUkUgYSAlIDIgPSAwOworICBJTlNFUlQgSU5UTyB2YWN0ZXN0IFNFTEVDVCBhICogMiBGUk9N IHZhY3Rlc3Q7CisKK3N0ZXAgdmFjMTogVkFDVVVNIChGUkVFWkUpOworc3RlcCB2YWNkbWwyOiAK KyAgSU5TRVJUIElOVE8gdmFjdGVzdCBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MCk7CisgIFVQREFURSB2YWN0ZXN0IFNFVCBhID0gYSAqIDIgV0hFUkUgYSAlIDIgPSAxOworCitz dGVwIHZhYzI6IFZBQ1VVTSAoRlJFRVpFKTsKK3N0ZXAgdmFjZG1sMTogCisgIElOU0VSVCBJTlRP IHZhY3Rlc3QgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApOworICBERUxFVEUg RlJPTSB2YWN0ZXN0IFdIRVJFIGEgJSAyID0gMDsKKyAgSU5TRVJUIElOVE8gdmFjdGVzdCBTRUxF Q1QgYSAqIDIgRlJPTSB2YWN0ZXN0OworCitzdGVwIHZhYzFwcmVwOiBTRUxFQ1Qgc2F2ZV94aWRz KCk7CitzYXZlX3hpZHMKKy0tLS0tLS0tLQorICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgdmFj MTogVkFDVVVNIChGUkVFWkUpOworc3RlcCB2YWMxY21wOiBTRUxFQ1QgKiBGUk9NIGNoZWNrX25l d194aWRzKCk7Citsb2NhbF94aWR8Z2xvYmFsX3hpZHxkYl94aWQKKy0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLQoreW91bmdlciAgfHlvdW5nZXIgICB8c2FtZSAgCisoMSByb3cpCisKK3N0ZXAg dmFjZG1sMjogCisgIElOU0VSVCBJTlRPIHZhY3Rlc3QgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTApOworICBVUERBVEUgdmFjdGVzdCBTRVQgYSA9IGEgKiAyIFdIRVJFIGEgJSAy ID0gMTsKKworc3RlcCB2YWMycHJlcDogU0VMRUNUIHNhdmVfeGlkcygpOworc2F2ZV94aWRzCist LS0tLS0tLS0KKyAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHZhYzI6IFZBQ1VVTSAoRlJFRVpF KTsKK3N0ZXAgdmFjMmNtcDogU0VMRUNUICogRlJPTSBjaGVja19uZXdfeGlkcygpOworbG9jYWxf eGlkfGdsb2JhbF94aWR8ZGJfeGlkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLQoreW91 bmdlciAgfHlvdW5nZXIgICB8eW91bmdlcgorKDEgcm93KQorCitzdGVwIHZhY2RtbDE6IAorICBJ TlNFUlQgSU5UTyB2YWN0ZXN0IFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKTsK KyAgREVMRVRFIEZST00gdmFjdGVzdCBXSEVSRSBhICUgMiA9IDA7CisgIElOU0VSVCBJTlRPIHZh Y3Rlc3QgU0VMRUNUIGEgKiAyIEZST00gdmFjdGVzdDsKKworc3RlcCB2YWMxcHJlcDogU0VMRUNU IHNhdmVfeGlkcygpOworc2F2ZV94aWRzCistLS0tLS0tLS0KKyAgICAgICAgIAorKDEgcm93KQor CitzdGVwIHZhYzE6IFZBQ1VVTSAoRlJFRVpFKTsKK3N0ZXAgdmFjMWNtcDogU0VMRUNUICogRlJP TSBjaGVja19uZXdfeGlkcygpOworbG9jYWxfeGlkfGdsb2JhbF94aWR8ZGJfeGlkIAorLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLQoreW91bmdlciAgfHlvdW5nZXIgICB8eW91bmdlcgorKDEg cm93KQorCitzdGVwIHZhY2RtbDI6IAorICBJTlNFUlQgSU5UTyB2YWN0ZXN0IFNFTEVDVCAqIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKTsKKyAgVVBEQVRFIHZhY3Rlc3QgU0VUIGEgPSBhICog MiBXSEVSRSBhICUgMiA9IDE7CisKK3N0ZXAgdmFjMnByZXA6IFNFTEVDVCBzYXZlX3hpZHMoKTsK K3NhdmVfeGlkcworLS0tLS0tLS0tCisgICAgICAgICAKKygxIHJvdykKKworc3RlcCB2YWMyOiBW QUNVVU0gKEZSRUVaRSk7CitzdGVwIHZhYzJjbXA6IFNFTEVDVCAqIEZST00gY2hlY2tfbmV3X3hp ZHMoKTsKK2xvY2FsX3hpZHxnbG9iYWxfeGlkfGRiX3hpZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0KK3lvdW5nZXIgIHx5b3VuZ2VyICAgfHlvdW5nZXIKKygxIHJvdykKKwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZSBiL3NyYy90ZXN0L2lz b2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKaW5kZXggN2QxYWFjZWMyNjcuLjQyNTNkNjBkMTM0 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisrKyBi L3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTEyOSwzICsxMjksNCBA QCB0ZXN0OiBsb2NrLW5vd2FpdAogdGVzdDogZm9yLXBvcnRpb24tb2YKIHRlc3Q6IGRkbC1kZXBl bmRlbmN5LWxvY2tpbmcKIHRlc3Q6IGdsb2JhbC10ZW1wCit0ZXN0OiB2YWN1dW0tZ2xvYmFsLXRl bXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy92YWN1dW0tZ2xvYmFsLXRl bXAuc3BlYyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy92YWN1dW0tZ2xvYmFsLXRlbXAuc3Bl YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGQ3NjU3MDNhYWQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvdmFjdXVtLWdsb2JhbC10 ZW1wLnNwZWMKQEAgLTAsMCArMSw3MSBAQAorIyBUZXN0IHZhY3V1bWluZyBnbG9iYWwgdGVtcG9y YXJ5IHJlbGF0aW9ucworCit0ZWFyZG93biB7CisgIERST1AgRlVOQ1RJT04gc2F2ZV94aWRzLCBj bXBfeGlkcywgY2hlY2tfbmV3X3hpZHM7CisgIERST1AgVEFCTEUgdmFjdGVzdCwgc2F2ZWRfeGlk czsKK30KKworc2Vzc2lvbiBzMQorc3RlcCBjcmVhdGUgeworICBDUkVBVEUgR0xPQkFMIFRFTVAg VEFCTEUgdmFjdGVzdCAoYSBpbnQpOworICBDUkVBVEUgVEFCTEUgc2F2ZWRfeGlkcyhsb2NhbF94 aWQgYmlnaW50LCBnbG9iYWxfeGlkIGJpZ2ludCwgZGJfeGlkIGJpZ2ludCk7CisKKyAgQ1JFQVRF IEZVTkNUSU9OIHNhdmVfeGlkcygpIFJFVFVSTlMgdm9pZAorICBCRUdJTiBBVE9NSUMKKyAgICBE RUxFVEUgRlJPTSBzYXZlZF94aWRzOworICAgIElOU0VSVCBJTlRPIHNhdmVkX3hpZHMgVkFMVUVT ICgKKyAgICAgIChTRUxFQ1QgbWluKHJlbGZyb3plbnhpZDo6dGV4dDo6YmlnaW50KSBGUk9NIHBn X3RlbXBfY2xhc3MgV0hFUkUgcmVsZnJvemVueGlkICE9IDApLAorICAgICAgKFNFTEVDVCBtaW4o cmVsZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsZnJvemVu eGlkICE9IDApLAorICAgICAgKFNFTEVDVCBkYXRmcm96ZW54aWQ6OnRleHQ6OmJpZ2ludCBGUk9N IHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpCisgICAgKTsK KyAgRU5EOworCisgIENSRUFURSBGVU5DVElPTiBjbXBfeGlkcyh4aWQxIGJpZ2ludCwgeGlkMiBi aWdpbnQpIFJFVFVSTlMgdGV4dAorICBCRUdJTiBBVE9NSUMKKyAgICBTRUxFQ1QgQ0FTRQorICAg ICAgICAgICAgIFdIRU4geGlkMSA8IHhpZDIgVEhFTiAnb2xkZXInCisgICAgICAgICAgICAgV0hF TiB4aWQxID4geGlkMiBUSEVOICd5b3VuZ2VyJworICAgICAgICAgICAgIEVMU0UgJ3NhbWUnCisg ICAgICAgICAgIEVORDsKKyAgRU5EOworCisgIENSRUFURSBGVU5DVElPTiBjaGVja19uZXdfeGlk cyhPVVQgbG9jYWxfeGlkIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP VVQgZ2xvYmFsX3hpZCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1VU IGRiX3hpZCB0ZXh0KQorICBCRUdJTiBBVE9NSUMKKyAgICBXSVRIIG5ld194aWRzKG5ld19sb2Nh bF94aWQsIG5ld19nbG9iYWxfeGlkLCBuZXdfZGJfeGlkKSBBUyAoCisgICAgICBTRUxFQ1QKKyAg ICAgICAgKFNFTEVDVCBtaW4ocmVsZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpIEZST00gcGdfdGVt cF9jbGFzcyBXSEVSRSByZWxmcm96ZW54aWQgIT0gMCksCisgICAgICAgIChTRUxFQ1QgbWluKHJl bGZyb3plbnhpZDo6dGV4dDo6YmlnaW50KSBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbGZyb3plbnhp ZCAhPSAwKSwKKyAgICAgICAgKFNFTEVDVCBkYXRmcm96ZW54aWQ6OnRleHQ6OmJpZ2ludCBGUk9N IHBnX2RhdGFiYXNlIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpCisgICAgKQor ICAgIFNFTEVDVCBjbXBfeGlkcyhuZXdfbG9jYWxfeGlkLCBsb2NhbF94aWQpLAorICAgICAgICAg ICBjbXBfeGlkcyhuZXdfZ2xvYmFsX3hpZCwgZ2xvYmFsX3hpZCksCisgICAgICAgICAgIGNtcF94 aWRzKG5ld19kYl94aWQsIGRiX3hpZCkKKyAgICBGUk9NIHNhdmVkX3hpZHMsIG5ld194aWRzOwor ICBFTkQ7Cit9CitzdGVwIHZhY2RtbDEgeworICBJTlNFUlQgSU5UTyB2YWN0ZXN0IFNFTEVDVCAq IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKTsKKyAgREVMRVRFIEZST00gdmFjdGVzdCBXSEVS RSBhICUgMiA9IDA7CisgIElOU0VSVCBJTlRPIHZhY3Rlc3QgU0VMRUNUIGEgKiAyIEZST00gdmFj dGVzdDsKK30KK3N0ZXAgdmFjMXByZXAgeyBTRUxFQ1Qgc2F2ZV94aWRzKCk7IH0KK3N0ZXAgdmFj MSB7IFZBQ1VVTSAoRlJFRVpFKTsgfQorc3RlcCB2YWMxY21wIHsgU0VMRUNUICogRlJPTSBjaGVj a19uZXdfeGlkcygpOyB9CisKK3Nlc3Npb24gczIKK3N0ZXAgdmFjZG1sMiB7CisgIElOU0VSVCBJ TlRPIHZhY3Rlc3QgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApOworICBVUERB VEUgdmFjdGVzdCBTRVQgYSA9IGEgKiAyIFdIRVJFIGEgJSAyID0gMTsKK30KK3N0ZXAgdmFjMnBy ZXAgeyBTRUxFQ1Qgc2F2ZV94aWRzKCk7IH0KK3N0ZXAgdmFjMiB7IFZBQ1VVTSAoRlJFRVpFKTsg fQorc3RlcCB2YWMyY21wIHsgU0VMRUNUICogRlJPTSBjaGVja19uZXdfeGlkcygpOyB9CisKK3Bl cm11dGF0aW9uCisgIGNyZWF0ZSB2YWNkbWwxIHZhYzEgdmFjZG1sMiB2YWMyCisgIHZhY2RtbDEg dmFjMXByZXAgdmFjMSB2YWMxY21wCisgIHZhY2RtbDIgdmFjMnByZXAgdmFjMiB2YWMyY21wCisg IHZhY2RtbDEgdmFjMXByZXAgdmFjMSB2YWMxY21wCisgIHZhY2RtbDIgdmFjMnByZXAgdmFjMiB2 YWMyY21wCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1w Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CmluZGV4IDhj ZWMxYjBjZmNhLi42MzBhNzYxZDMxYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9nbG9iYWxfdGVtcC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9i YWxfdGVtcC5vdXQKQEAgLTQ4LDYgKzQ4LDMxIEBAIE9SREVSIEJZIHRhYmxlX25hbWU7CiAgcmVn cmVzc2lvbiAgICB8IGdsb2JhbF90ZW1wX3l5eSAgIHwgdG1wMyAgICAgICB8IEdMT0JBTCBURU1Q T1JBUlkKICgzIHJvd3MpCiAKKy0tIENoZWNrIHBnX3N0YXRfYWN0aXZpdHkKK1NFTEVDVCB0ZW1w ZnJvemVueGlkLCB0ZW1wbWlubXhpZCAtLSBub3QgdmlzaWJsZSB3aXRob3V0IHByaXZpbGVnZQor RlJPTSBwZ19zdGF0X2FjdGl2aXR5CitXSEVSRSBwaWQgPSBwZ19iYWNrZW5kX3BpZCgpOworIHRl bXBmcm96ZW54aWQgfCB0ZW1wbWlubXhpZCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICB8ICAgICAgICAgICAgCisoMSByb3cpCisKK1JFU0VUIFJPTEU7CitH UkFOVCBwZ19yZWFkX2FsbF9zdGF0cyBUTyByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXI7CitTRVQg Uk9MRSByZWdyZXNzX2dsb2JhbF90ZW1wX3VzZXI7CitTRUxFQ1QgdGVtcGZyb3plbnhpZDo6dGV4 dDo6YmlnaW50ID0gKFNFTEVDVCBtaW4ocmVsZnJvemVueGlkOjp0ZXh0OjpiaWdpbnQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdfdGVtcF9jbGFzcworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSByZWxmcm96ZW54aWQ6OnRl eHQgIT0gJzAnKSwKKyAgICAgICB0ZW1wbWlubXhpZDo6dGV4dDo6YmlnaW50ID0gKFNFTEVDVCBt aW4ocmVsbWlubXhpZDo6dGV4dDo6YmlnaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRlJPTSBwZ190ZW1wX2NsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBXSEVSRSByZWxtaW5teGlkOjp0ZXh0ICE9ICcwJykKK0ZST00gcGdfc3RhdF9hY3Rp dml0eQorV0hFUkUgcGlkID0gcGdfYmFja2VuZF9waWQoKTsKKyA/Y29sdW1uPyB8ID9jb2x1bW4/ IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdCAgICAgICAgfCB0CisoMSByb3cpCisKIERST1Ag U0NIRU1BIGdsb2JhbF90ZW1wX3h4eCBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byB0YWJsZSBnbG9iYWxfdGVtcF94eHgudG1wMgogRFJPUCBTQ0hFTUEgZ2xvYmFsX3RlbXBfeXl5 IENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IGUyNjZmNTAxZDg3 Li41NjFjZjYwNTY3ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE3OTUs MTAgKzE3OTUsMTIgQEAgcGdfc3RhdF9hY3Rpdml0eXwgU0VMRUNUIHMuZGF0aWQsCiAgICAgcy5z dGF0ZSwKICAgICBzLmJhY2tlbmRfeGlkLAogICAgIHMuYmFja2VuZF94bWluLAorICAgIHMudGVt cGZyb3plbnhpZCwKKyAgICBzLnRlbXBtaW5teGlkLAogICAgIHMucXVlcnlfaWQsCiAgICAgcy5x dWVyeSwKICAgICBzLmJhY2tlbmRfdHlwZQotICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5 KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUs IHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBx dWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xp ZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFj a2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVu dF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJp bmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZS T00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVz ZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRl X2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tl bmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xj aXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNz dWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVh ZGVyX3BpZCwgcXVlcnlfaWQsIHRlbXBmcm96ZW54aWQsIHRlbXBtaW5teGlkKQogICAgICBMRUZU IEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKHMuZGF0aWQgPSBkLm9pZCkpKQogICAgICBMRUZUIEpP SU4gcGdfYXV0aGlkIHUgT04gKChzLnVzZXN5c2lkID0gdS5vaWQpKSk7CiBwZ19zdGF0X2FsbF9p bmRleGVzfCBTRUxFQ1QgYy5vaWQgQVMgcmVsaWQsCkBAIC0xOTQ0LDcgKzE5NDYsNyBAQCBwZ19z dGF0X2dzc2FwaXwgU0VMRUNUIHBpZCwKICAgICBnc3NfcHJpbmMgQVMgcHJpbmNpcGFsLAogICAg IGdzc19lbmMgQVMgZW5jcnlwdGVkLAogICAgIGdzc19kZWxlZ2F0aW9uIEFTIGNyZWRlbnRpYWxz X2RlbGVnYXRlZAotICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBz KGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdh aXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tl bmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xp ZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBz c2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRf c2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3Nf ZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NIHBnX3N0YXRfZ2V0X2Fj dGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9u X25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0 YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRk ciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1p biwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3Ns X2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBn c3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwg dGVtcGZyb3plbnhpZCwgdGVtcG1pbm14aWQpCiAgIFdIRVJFIChjbGllbnRfcG9ydCBJUyBOT1Qg TlVMTCk7CiBwZ19zdGF0X2lvfCBTRUxFQ1QgYmFja2VuZF90eXBlLAogICAgIG9iamVjdCwKQEAg LTIyNTUsNyArMjI1Nyw3IEBAIHBnX3N0YXRfcmVwbGljYXRpb258IFNFTEVDVCBzLnBpZCwKICAg ICB3LnN5bmNfcHJpb3JpdHksCiAgICAgdy5zeW5jX3N0YXRlLAogICAgIHcucmVwbHlfdGltZQot ICAgRlJPTSAoKHBnX3N0YXRfZ2V0X2FjdGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBp ZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9uX25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90 eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwg c3RhdGVfY2hhbmdlLCBjbGllbnRfYWRkciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwg YmFja2VuZF94aWQsIGJhY2tlbmRfeG1pbiwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24s IHNzbGNpcGhlciwgc3NsYml0cywgc3NsX2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNz bF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBnc3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9u LCBsZWFkZXJfcGlkLCBxdWVyeV9pZCkKKyAgIEZST00gKChwZ19zdGF0X2dldF9hY3Rpdml0eShO VUxMOjppbnRlZ2VyKSBzKGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBz dGF0ZSwgcXVlcnksIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVl cnlfc3RhcnQsIGJhY2tlbmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVu dF9ob3N0bmFtZSwgY2xpZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tl bmRfdHlwZSwgc3NsLCBzc2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRf ZG4sIHNzbF9jbGllbnRfc2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5j LCBnc3NfZW5jLCBnc3NfZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlfaWQsIHRlbXBmcm96 ZW54aWQsIHRlbXBtaW5teGlkKQogICAgICBKT0lOIHBnX3N0YXRfZ2V0X3dhbF9zZW5kZXJzKCkg dyhwaWQsIHN0YXRlLCBzZW50X2xzbiwgd3JpdGVfbHNuLCBmbHVzaF9sc24sIHJlcGxheV9sc24s IHdyaXRlX2xhZywgZmx1c2hfbGFnLCByZXBsYXlfbGFnLCBzeW5jX3ByaW9yaXR5LCBzeW5jX3N0 YXRlLCByZXBseV90aW1lKSBPTiAoKHMucGlkID0gdy5waWQpKSkKICAgICAgTEVGVCBKT0lOIHBn X2F1dGhpZCB1IE9OICgocy51c2VzeXNpZCA9IHUub2lkKSkpOwogcGdfc3RhdF9yZXBsaWNhdGlv bl9zbG90c3wgU0VMRUNUIHMuc2xvdF9uYW1lLApAQCAtMjI5Miw3ICsyMjk0LDcgQEAgcGdfc3Rh dF9zc2x8IFNFTEVDVCBwaWQsCiAgICAgc3NsX2NsaWVudF9kbiBBUyBjbGllbnRfZG4sCiAgICAg c3NsX2NsaWVudF9zZXJpYWwgQVMgY2xpZW50X3NlcmlhbCwKICAgICBzc2xfaXNzdWVyX2RuIEFT IGlzc3Vlcl9kbgotICAgRlJPTSBwZ19zdGF0X2dldF9hY3Rpdml0eShOVUxMOjppbnRlZ2VyKSBz KGRhdGlkLCBwaWQsIHVzZXN5c2lkLCBhcHBsaWNhdGlvbl9uYW1lLCBzdGF0ZSwgcXVlcnksIHdh aXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCwgeGFjdF9zdGFydCwgcXVlcnlfc3RhcnQsIGJhY2tl bmRfc3RhcnQsIHN0YXRlX2NoYW5nZSwgY2xpZW50X2FkZHIsIGNsaWVudF9ob3N0bmFtZSwgY2xp ZW50X3BvcnQsIGJhY2tlbmRfeGlkLCBiYWNrZW5kX3htaW4sIGJhY2tlbmRfdHlwZSwgc3NsLCBz c2x2ZXJzaW9uLCBzc2xjaXBoZXIsIHNzbGJpdHMsIHNzbF9jbGllbnRfZG4sIHNzbF9jbGllbnRf c2VyaWFsLCBzc2xfaXNzdWVyX2RuLCBnc3NfYXV0aCwgZ3NzX3ByaW5jLCBnc3NfZW5jLCBnc3Nf ZGVsZWdhdGlvbiwgbGVhZGVyX3BpZCwgcXVlcnlfaWQpCisgICBGUk9NIHBnX3N0YXRfZ2V0X2Fj dGl2aXR5KE5VTEw6OmludGVnZXIpIHMoZGF0aWQsIHBpZCwgdXNlc3lzaWQsIGFwcGxpY2F0aW9u X25hbWUsIHN0YXRlLCBxdWVyeSwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50LCB4YWN0X3N0 YXJ0LCBxdWVyeV9zdGFydCwgYmFja2VuZF9zdGFydCwgc3RhdGVfY2hhbmdlLCBjbGllbnRfYWRk ciwgY2xpZW50X2hvc3RuYW1lLCBjbGllbnRfcG9ydCwgYmFja2VuZF94aWQsIGJhY2tlbmRfeG1p biwgYmFja2VuZF90eXBlLCBzc2wsIHNzbHZlcnNpb24sIHNzbGNpcGhlciwgc3NsYml0cywgc3Ns X2NsaWVudF9kbiwgc3NsX2NsaWVudF9zZXJpYWwsIHNzbF9pc3N1ZXJfZG4sIGdzc19hdXRoLCBn c3NfcHJpbmMsIGdzc19lbmMsIGdzc19kZWxlZ2F0aW9uLCBsZWFkZXJfcGlkLCBxdWVyeV9pZCwg dGVtcGZyb3plbnhpZCwgdGVtcG1pbm14aWQpCiAgIFdIRVJFIChjbGllbnRfcG9ydCBJUyBOT1Qg TlVMTCk7CiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAg ICBzdS5zdWJuYW1lLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3Rl bXAuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsCmluZGV4IDkyMTU5 NTg2MmYyLi5mODg5NjBlYzViMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xv YmFsX3RlbXAuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbApA QCAtMjUsNiArMjUsMjQgQEAgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzCiBXSEVSRSB0 YWJsZV9uYW1lIH4gJ3RtcCcgQU5EIHRhYmxlX3NjaGVtYSB+ICdnbG9iYWxfdGVtcCcKIE9SREVS IEJZIHRhYmxlX25hbWU7CiAKKy0tIENoZWNrIHBnX3N0YXRfYWN0aXZpdHkKK1NFTEVDVCB0ZW1w ZnJvemVueGlkLCB0ZW1wbWlubXhpZCAtLSBub3QgdmlzaWJsZSB3aXRob3V0IHByaXZpbGVnZQor RlJPTSBwZ19zdGF0X2FjdGl2aXR5CitXSEVSRSBwaWQgPSBwZ19iYWNrZW5kX3BpZCgpOworCitS RVNFVCBST0xFOworR1JBTlQgcGdfcmVhZF9hbGxfc3RhdHMgVE8gcmVncmVzc19nbG9iYWxfdGVt cF91c2VyOworU0VUIFJPTEUgcmVncmVzc19nbG9iYWxfdGVtcF91c2VyOworCitTRUxFQ1QgdGVt cGZyb3plbnhpZDo6dGV4dDo6YmlnaW50ID0gKFNFTEVDVCBtaW4ocmVsZnJvemVueGlkOjp0ZXh0 OjpiaWdpbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGdf dGVtcF9jbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBy ZWxmcm96ZW54aWQ6OnRleHQgIT0gJzAnKSwKKyAgICAgICB0ZW1wbWlubXhpZDo6dGV4dDo6Ymln aW50ID0gKFNFTEVDVCBtaW4ocmVsbWlubXhpZDo6dGV4dDo6YmlnaW50KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZ190ZW1wX2NsYXNzCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSByZWxtaW5teGlkOjp0ZXh0ICE9ICcwJykKK0ZS T00gcGdfc3RhdF9hY3Rpdml0eQorV0hFUkUgcGlkID0gcGdfYmFja2VuZF9waWQoKTsKKwogRFJP UCBTQ0hFTUEgZ2xvYmFsX3RlbXBfeHh4IENBU0NBREU7CiBEUk9QIFNDSEVNQSBnbG9iYWxfdGVt cF95eXkgQ0FTQ0FERTsKIAotLSAKMi41MS4wCgo= --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0008-Add-pg_temp_statistic-global-temporary-catalog-ta.patch" Content-Disposition: attachment; filename="v7-0008-Add-pg_temp_statistic-global-temporary-catalog-ta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr91671t7 RnJvbSBhZjY4YjhmNDRjYjcyYTdhYjNjNzkyNzE0ZTBhNmZiODkyMWY2NjYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCAxOCBKdW4gMjAyNiAyMDo0OTo0NSArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMDgvMTBdIEFkZCBwZ190ZW1wX3N0YXRpc3RpYyBnbG9iYWwgdGVtcG9yYXJ5IGNhdGFsb2cK IHRhYmxlLgoKVGhpcyBoYXMgdGhlIGV4YWN0IHNhbWUgY29sdW1ucyBhcyBwZ19zdGF0aXN0aWMs IGJ1dCBpdCBpcyBhIGdsb2JhbAp0ZW1wb3JhcnkgdGFibGUsIGFuZCBpcyB1c2VkIHRvIGhvbGQg c3RhdGlzdGljcyBhYm91dCBvdGhlciBnbG9iYWwKdGVtcG9yYXJ5IHJlbGF0aW9ucywgYWxsb3dp bmcgdGhlbSB0byBiZSBzZXNzaW9uLXNwZWNpZmljLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cv aGVhcC5jICAgICAgICAgICAgICAgICB8ICAyMiArKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbCAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6 ZS5jICAgICAgICAgICAgIHwgIDQ0ICsrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2guYyAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9zdGF0aXN0aWNzL2F0dHJpYnV0 ZV9zdGF0cy5jICAgfCAgMzEgKysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j ICAgICAgICAgICB8ICAxOCArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5j ICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAg ICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUgICAgICAgICAgICAgICB8 ICAgMyArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljLmggICAgICAgICB8ICAgMyArCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGljLmggICAgfCAxNDcgKysrKysrKysr KysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dCAg fCAgNDUgKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgICAg IHwgIDExICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAg NjcgKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0 IHwgIDIzICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbCAgICAgICB8 ICAxOSArKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nhbml0eV9jaGVjay5zcWwgICAgICB8ICAy MCArKysKIDE4IGZpbGVzIGNoYW5nZWQsIDQ0MyBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfc3RhdGlz dGljLmgKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDY4NGU5NDgyZjE1Li42ZDYxNjUwNjIxYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3Rp Yy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9zdGF0 aXN0aWMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjYXRhbG9n L3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKQEAgLTM0OTcsNiAr MzQ5OCwxMyBAQCBDb3B5U3RhdGlzdGljcyhPaWQgZnJvbXJlbGlkLCBPaWQgdG9yZWxpZCkKIAlS ZWxhdGlvbglzdGF0cmVsOwogCUNhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlID0gTlVMTDsKIAor CS8qCisJICogTm90ZTogVGhpcyBpcyBjdXJyZW50bHkgb25seSB1c2VkIGZvciBjb25jdXJyZW50 IGluZGV4IGJ1aWxkaW5nLCB3aGljaAorCSAqIGlzbid0IHN1cHBvcnRlZCBvbiBnbG9iYWwgdGVt cG9yYXJ5IHJlbGF0aW9ucywgc28gd2UgbmV2ZXIgd2FudAorCSAqIHBnX3RlbXBfc3RhdGlzdGlj IGhlcmUuCisJICovCisJQXNzZXJ0KCFyZWxfaXNfZ2xvYmFsX3RlbXAoZnJvbXJlbGlkKSAmJiAh cmVsX2lzX2dsb2JhbF90ZW1wKHRvcmVsaWQpKTsKKwogCXN0YXRyZWwgPSB0YWJsZV9vcGVuKFN0 YXRpc3RpY1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJLyogTm93IHNlYXJjaCBm b3Igc3RhdCByZWNvcmRzICovCkBAIC0zNTQ1LDEyICszNTUzLDIyIEBAIHZvaWQKIFJlbW92ZVN0 YXRpc3RpY3MoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSkKIHsKIAlSZWxhdGlvbglwZ3N0 YXRpc3RpYzsKKwlPaWQJCQlyZWxpZEF0dG51bUluaEluZGV4SWQ7CiAJU3lzU2NhbkRlc2Mgc2Nh bjsKIAlTY2FuS2V5RGF0YSBrZXlbMl07CiAJaW50CQkJbmtleXM7CiAJSGVhcFR1cGxlCXR1cGxl OwogCi0JcGdzdGF0aXN0aWMgPSB0YWJsZV9vcGVuKFN0YXRpc3RpY1JlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCWlmIChyZWxfaXNfZ2xvYmFsX3RlbXAocmVsaWQpKQorCXsKKwkJcGdz dGF0aXN0aWMgPSB0YWJsZV9vcGVuKFRlbXBTdGF0aXN0aWNSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwkJcmVsaWRBdHRudW1JbmhJbmRleElkID0gVGVtcFN0YXRpc3RpY1JlbGlkQXR0 bnVtSW5oSW5kZXhJZDsKKwl9CisJZWxzZQorCXsKKwkJcGdzdGF0aXN0aWMgPSB0YWJsZV9vcGVu KFN0YXRpc3RpY1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQlyZWxpZEF0dG51bUlu aEluZGV4SWQgPSBTdGF0aXN0aWNSZWxpZEF0dG51bUluaEluZGV4SWQ7CisJfQogCiAJU2Nhbktl eUluaXQoJmtleVswXSwKIAkJCQlBbnVtX3BnX3N0YXRpc3RpY19zdGFyZWxpZCwKQEAgLTM1Njgs NyArMzU4Niw3IEBAIFJlbW92ZVN0YXRpc3RpY3MoT2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51 bSkKIAkJbmtleXMgPSAyOwogCX0KIAotCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdzdGF0 aXN0aWMsIFN0YXRpc3RpY1JlbGlkQXR0bnVtSW5oSW5kZXhJZCwgdHJ1ZSwKKwlzY2FuID0gc3lz dGFibGVfYmVnaW5zY2FuKHBnc3RhdGlzdGljLCByZWxpZEF0dG51bUluaEluZGV4SWQsIHRydWUs CiAJCQkJCQkJICBOVUxMLCBua2V5cywga2V5KTsKIAogCS8qIHdlIG11c3QgbG9vcCBldmVuIHdo ZW4gYXR0bnVtICE9IDAsIGluIGNhc2Ugb2YgaW5oZXJpdGVkIHN0YXRzICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggOTI3NWE4OTU0MTIuLmVhYzEzYjYwN2U5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xODcsNiArMTg3LDExIEBAIENSRUFU RSBWSUVXIHBnX3NlcXVlbmNlcyBBUwogICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3Nj aGVtYShOLm9pZCkKICAgICAgICAgICBBTkQgcmVsa2luZCA9ICdTJzsKIAorQ1JFQVRFIFZJRVcg cGdfYWxsX3N0YXRpc3RpYyBBUworICAgIFNFTEVDVCAqIEZST00gcGdfc3RhdGlzdGljCisgICAg VU5JT04gQUxMCisgICAgU0VMRUNUICogRlJPTSBwZ190ZW1wX3N0YXRpc3RpYzsKKwogQ1JFQVRF IFZJRVcgcGdfc3RhdHMgV0lUSCAoc2VjdXJpdHlfYmFycmllcikgQVMKICAgICBTRUxFQ1QKICAg ICAgICAgbnNwbmFtZSBBUyBzY2hlbWFuYW1lLApAQCAtMjY4LDcgKzI3Myw3IEBAIENSRUFURSBW SUVXIHBnX3N0YXRzIFdJVEggKHNlY3VyaXR5X2JhcnJpZXIpIEFTCiAgICAgICAgICAgICBXSEVO IHN0YWtpbmQ0ID0gNyBUSEVOIHN0YXZhbHVlczQKICAgICAgICAgICAgIFdIRU4gc3Rha2luZDUg PSA3IFRIRU4gc3RhdmFsdWVzNQogICAgICAgICAgICAgRU5EIEFTIHJhbmdlX2JvdW5kc19oaXN0 b2dyYW0KLSAgICBGUk9NIHBnX3N0YXRpc3RpYyBzIEpPSU4gcGdfY2xhc3MgYyBPTiAoYy5vaWQg PSBzLnN0YXJlbGlkKQorICAgIEZST00gcGdfYWxsX3N0YXRpc3RpYyBzIEpPSU4gcGdfY2xhc3Mg YyBPTiAoYy5vaWQgPSBzLnN0YXJlbGlkKQogICAgICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBP TiAoYy5vaWQgPSBhdHRyZWxpZCBBTkQgYXR0bnVtID0gcy5zdGFhdHRudW0pCiAgICAgICAgICBM RUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04gKG4ub2lkID0gYy5yZWxuYW1lc3BhY2UpCiAgICAg V0hFUkUgTk9UIGF0dGlzZHJvcHBlZApAQCAtMjc2LDYgKzI4MSw4IEBAIENSRUFURSBWSUVXIHBn X3N0YXRzIFdJVEggKHNlY3VyaXR5X2JhcnJpZXIpIEFTCiAgICAgQU5EIChjLnJlbHJvd3NlY3Vy aXR5ID0gZmFsc2UgT1IgTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKTsKIAogUkVWT0tF IEFMTCBPTiBwZ19zdGF0aXN0aWMgRlJPTSBwdWJsaWM7CitSRVZPS0UgQUxMIE9OIHBnX3RlbXBf c3RhdGlzdGljIEZST00gcHVibGljOworUkVWT0tFIEFMTCBPTiBwZ19hbGxfc3RhdGlzdGljIEZS T00gcHVibGljOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0c19leHQgV0lUSCAoc2VjdXJpdHlfYmFy cmllcikgQVMKICAgICBTRUxFQ1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv YW5hbHl6ZS5jCmluZGV4IGY2NmU4MGI3NTdjLi4wZGI5ODEwZWJhMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Fu YWx5emUuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXguaCIKICNp bmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0 cy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9zdGF0aXN0aWMuaCIKICNpbmNsdWRlICJj b21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgpAQCAtMTc2LDkgKzE3NywxMSBAQCBhbmFseXplX3Jl bChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwKIAl9CiAKIAkvKgotCSAqIFdlIGNhbiBB TkFMWVpFIGFueSB0YWJsZSBleGNlcHQgcGdfc3RhdGlzdGljLiBTZWUgdXBkYXRlX2F0dHN0YXRz CisJICogV2UgY2FuIEFOQUxZWkUgYW55IHRhYmxlIGV4Y2VwdCBwZ19zdGF0aXN0aWMgYW5kIHBn X3RlbXBfc3RhdGlzdGljLiBTZWUKKwkgKiB1cGRhdGVfYXR0c3RhdHMKIAkgKi8KLQlpZiAoUmVs YXRpb25HZXRSZWxpZChvbmVyZWwpID09IFN0YXRpc3RpY1JlbGF0aW9uSWQpCisJaWYgKFJlbGF0 aW9uR2V0UmVsaWQob25lcmVsKSA9PSBTdGF0aXN0aWNSZWxhdGlvbklkIHx8CisJCVJlbGF0aW9u R2V0UmVsaWQob25lcmVsKSA9PSBUZW1wU3RhdGlzdGljUmVsYXRpb25JZCkKIAl7CiAJCXJlbGF0 aW9uX2Nsb3NlKG9uZXJlbCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJcmV0dXJuOwpA QCAtMTY5MSwyMCArMTY5NCwyMyBAQCBhY3F1aXJlX2luaGVyaXRlZF9zYW1wbGVfcm93cyhSZWxh dGlvbiBvbmVyZWwsIGludCBlbGV2ZWwsCiAvKgogICoJdXBkYXRlX2F0dHN0YXRzKCkgLS0gdXBk YXRlIGF0dHJpYnV0ZSBzdGF0aXN0aWNzIGZvciBvbmUgcmVsYXRpb24KICAqCi0gKgkJU3RhdGlz dGljcyBhcmUgc3RvcmVkIGluIHNldmVyYWwgcGxhY2VzOiB0aGUgcGdfY2xhc3Mgcm93IGZvciB0 aGUKLSAqCQlyZWxhdGlvbiBoYXMgc3RhdHMgYWJvdXQgdGhlIHdob2xlIHJlbGF0aW9uLCBhbmQg dGhlcmUgaXMgYQotICoJCXBnX3N0YXRpc3RpYyByb3cgZm9yIGVhY2ggKG5vbi1zeXN0ZW0pIGF0 dHJpYnV0ZSB0aGF0IGhhcyBldmVyCi0gKgkJYmVlbiBhbmFseXplZC4gIFRoZSBwZ19jbGFzcyB2 YWx1ZXMgYXJlIHVwZGF0ZWQgYnkgVkFDVVVNLCBub3QgaGVyZS4KKyAqCQlTdGF0aXN0aWNzIGFy ZSBzdG9yZWQgaW4gc2V2ZXJhbCBwbGFjZXM6IHRoZSBwZ19jbGFzcy9wZ190ZW1wX2NsYXNzCisg KgkJcm93IGZvciB0aGUgcmVsYXRpb24gaGFzIHN0YXRzIGFib3V0IHRoZSB3aG9sZSByZWxhdGlv biwgYW5kIHRoZXJlIGlzCisgKgkJYSBwZ19zdGF0aXN0aWMvcGdfdGVtcF9zdGF0aXN0aWMgcm93 IGZvciBlYWNoIChub24tc3lzdGVtKSBhdHRyaWJ1dGUKKyAqCQl0aGF0IGhhcyBldmVyIGJlZW4g YW5hbHl6ZWQuICBUaGUgcGdfY2xhc3MvcGdfdGVtcF9jbGFzcyB2YWx1ZXMgYXJlCisgKgkJdXBk YXRlZCBieSBWQUNVVU0sIG5vdCBoZXJlLgogICoKLSAqCQlwZ19zdGF0aXN0aWMgcm93cyBhcmUg anVzdCBhZGRlZCBvciB1cGRhdGVkIG5vcm1hbGx5LiAgVGhpcyBtZWFucwotICoJCXRoYXQgcGdf c3RhdGlzdGljIHdpbGwgcHJvYmFibHkgY29udGFpbiBzb21lIGRlbGV0ZWQgcm93cyBhdCB0aGUK LSAqCQljb21wbGV0aW9uIG9mIGEgdmFjdXVtIGN5Y2xlLCB1bmxlc3MgaXQgaGFwcGVucyB0byBn ZXQgdmFjdXVtZWQgbGFzdC4KKyAqCQlwZ19zdGF0aXN0aWMvcGdfdGVtcF9zdGF0aXN0aWMgcm93 cyBhcmUganVzdCBhZGRlZCBvciB1cGRhdGVkCisgKgkJbm9ybWFsbHkuICBUaGlzIG1lYW5zIHRo YXQgcGdfc3RhdGlzdGljL3BnX3RlbXBfc3RhdGlzdGljIHdpbGwKKyAqCQlwcm9iYWJseSBjb250 YWluIHNvbWUgZGVsZXRlZCByb3dzIGF0IHRoZSBjb21wbGV0aW9uIG9mIGEgdmFjdXVtCisgKgkJ Y3ljbGUsIHVubGVzcyBpdCBoYXBwZW5zIHRvIGdldCB2YWN1dW1lZCBsYXN0LgogICoKLSAqCQlU byBrZWVwIHRoaW5ncyBzaW1wbGUsIHdlIHB1bnQgZm9yIHBnX3N0YXRpc3RpYywgYW5kIGRvbid0 IHRyeQotICoJCXRvIGNvbXB1dGUgb3Igc3RvcmUgcm93cyBmb3IgcGdfc3RhdGlzdGljIGl0c2Vs ZiBpbiBwZ19zdGF0aXN0aWMuCisgKgkJVG8ga2VlcCB0aGluZ3Mgc2ltcGxlLCB3ZSBwdW50IGZv ciBwZ19zdGF0aXN0aWMgYW5kIHBnX3RlbXBfc3RhdGlzdGljLAorICoJCWFuZCBkb24ndCB0cnkg dG8gY29tcHV0ZSBvciBzdG9yZSByb3dzIGZvciBwZ19zdGF0aXN0aWMgb3IKKyAqCQlwZ190ZW1w X3N0YXRpc3RpYyB0aGVtc2VsdmVzIGluIHBnX3N0YXRpc3RpYyBvciBwZ190ZW1wX3N0YXRpc3Rp Yy4KICAqCQlUaGlzIGNvdWxkIHBvc3NpYmx5IGJlIG1hZGUgdG8gd29yaywgYnV0IGl0J3Mgbm90 IHdvcnRoIHRoZSB0cm91YmxlLgogICoJCU5vdGUgYW5hbHl6ZV9yZWwoKSBoYXMgc2VlbiB0byBp dCB0aGF0IHdlIHdvbid0IGNvbWUgaGVyZSB3aGVuCi0gKgkJdmFjdXVtaW5nIHBnX3N0YXRpc3Rp YyBpdHNlbGYuCisgKgkJdmFjdXVtaW5nIHBnX3N0YXRpc3RpYyBvciBwZ190ZW1wX3N0YXRpc3Rp YyB0aGVtc2VsdmVzLgogICoKICAqCQlOb3RlOiB0aGVyZSB3b3VsZCBiZSBhIHJhY2UgY29uZGl0 aW9uIGhlcmUgaWYgdHdvIGJhY2tlbmRzIGNvdWxkCiAgKgkJQU5BTFlaRSB0aGUgc2FtZSB0YWJs ZSBjb25jdXJyZW50bHkuICBQcmVzZW50bHksIHdlIGxvY2sgdGhhdCBvdXQKQEAgLTE3MTYsMTEg KzE3MjIsMjEgQEAgdXBkYXRlX2F0dHN0YXRzKE9pZCByZWxpZCwgYm9vbCBpbmgsIGludCBuYXR0 cywgVmFjQXR0clN0YXRzICoqdmFjYXR0cnN0YXRzKQogCVJlbGF0aW9uCXNkOwogCWludAkJCWF0 dG5vOwogCUNhdGFsb2dJbmRleFN0YXRlIGluZHN0YXRlID0gTlVMTDsKKwlTeXNDYWNoZUlkZW50 aWZpZXIgY2FjaGVJZDsKIAogCWlmIChuYXR0cyA8PSAwKQogCQlyZXR1cm47CQkJCQkvKiBub3Ro aW5nIHRvIGRvICovCiAKLQlzZCA9IHRhYmxlX29wZW4oU3RhdGlzdGljUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisJaWYgKHJlbF9pc19nbG9iYWxfdGVtcChyZWxpZCkpCisJeworCQlz ZCA9IHRhYmxlX29wZW4oVGVtcFN0YXRpc3RpY1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCQljYWNoZUlkID0gVEVNUFNUQVRSRUxBVFRJTkg7CisJfQorCWVsc2UKKwl7CisJCXNkID0g dGFibGVfb3BlbihTdGF0aXN0aWNSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJY2Fj aGVJZCA9IFNUQVRSRUxBVFRJTkg7CisJfQogCiAJZm9yIChhdHRubyA9IDA7IGF0dG5vIDwgbmF0 dHM7IGF0dG5vKyspCiAJewpAQCAtMTgxMSw3ICsxODI3LDcgQEAgdXBkYXRlX2F0dHN0YXRzKE9p ZCByZWxpZCwgYm9vbCBpbmgsIGludCBuYXR0cywgVmFjQXR0clN0YXRzICoqdmFjYXR0cnN0YXRz KQogCQl9CiAKIAkJLyogSXMgdGhlcmUgYWxyZWFkeSBhIHBnX3N0YXRpc3RpYyB0dXBsZSBmb3Ig dGhpcyBhdHRyaWJ1dGU/ICovCi0JCW9sZHR1cCA9IFNlYXJjaFN5c0NhY2hlMyhTVEFUUkVMQVRU SU5ILAorCQlvbGR0dXAgPSBTZWFyY2hTeXNDYWNoZTMoY2FjaGVJZCwKIAkJCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ocmVsaWQpLAogCQkJCQkJCQkgSW50MTZHZXREYXR1bShzdGF0cy0+dHVwYXR0 bnVtKSwKIAkJCQkJCQkJIEJvb2xHZXREYXR1bShpbmgpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5j CmluZGV4IDg4MjViYjZmYTIzLi42YWNlNjkwNDgxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUhhc2guYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5j CkBAIC0yNDQyLDcgKzI0NDIsOCBAQCBFeGVjSGFzaEJ1aWxkU2tld0hhc2goSGFzaFN0YXRlICpo YXNoc3RhdGUsIEhhc2hKb2luVGFibGUgaGFzaHRhYmxlLAogCS8qCiAJICogVHJ5IHRvIGZpbmQg dGhlIE1DViBzdGF0aXN0aWNzIGZvciB0aGUgb3V0ZXIgcmVsYXRpb24ncyBqb2luIGtleS4KIAkg Ki8KLQlzdGF0c1R1cGxlID0gU2VhcmNoU3lzQ2FjaGUzKFNUQVRSRUxBVFRJTkgsCisJc3RhdHNU dXBsZSA9IFNlYXJjaFN5c0NhY2hlMyhyZWxfaXNfZ2xvYmFsX3RlbXAobm9kZS0+c2tld1RhYmxl KSA/CisJCQkJCQkJCSBURU1QU1RBVFJFTEFUVElOSCA6IFNUQVRSRUxBVFRJTkgsCiAJCQkJCQkJ CSBPYmplY3RJZEdldERhdHVtKG5vZGUtPnNrZXdUYWJsZSksCiAJCQkJCQkJCSBJbnQxNkdldERh dHVtKG5vZGUtPnNrZXdDb2x1bW4pLAogCQkJCQkJCQkgQm9vbEdldERhdHVtKG5vZGUtPnNrZXdJ bmhlcml0KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2F0dHJpYnV0ZV9z dGF0cy5jIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9hdHRyaWJ1dGVfc3RhdHMuYwppbmRleCAx Y2M0ZDY1NzIzMS4uNjBmZmM3ZGIwNGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3Rp Y3MvYXR0cmlidXRlX3N0YXRzLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9hdHRyaWJ1 dGVfc3RhdHMuYwpAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcu aCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf b3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGljLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0aXN0aWNz LmgiCiAjaW5jbHVkZSAic3RhdGlzdGljcy9zdGF0X3V0aWxzLmgiCkBAIC0xMzcsNiArMTM4LDcg QEAgYXR0cmlidXRlX3N0YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQog CU9pZAkJCWxvY2tlZF90YWJsZSA9IEludmFsaWRPaWQ7CiAKIAlSZWxhdGlvbglzdGFyZWw7CisJ U3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlSWQ7CiAJSGVhcFR1cGxlCXN0YXR1cDsKIAogCU9pZAkJ CWF0dHR5cGlkID0gSW52YWxpZE9pZDsKQEAgLTMzMiw5ICszMzQsMTggQEAgYXR0cmlidXRlX3N0 YXRpc3RpY3NfdXBkYXRlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogCiAJZm1ncl9pbmZvKEZf QVJSQVlfSU4sICZhcnJheV9pbl9mbik7CiAKLQlzdGFyZWwgPSB0YWJsZV9vcGVuKFN0YXRpc3Rp Y1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCWlmIChyZWxfaXNfZ2xvYmFsX3RlbXAo cmVsb2lkKSkKKwl7CisJCXN0YXJlbCA9IHRhYmxlX29wZW4oVGVtcFN0YXRpc3RpY1JlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQljYWNoZUlkID0gVEVNUFNUQVRSRUxBVFRJTkg7CisJ fQorCWVsc2UKKwl7CisJCXN0YXJlbCA9IHRhYmxlX29wZW4oU3RhdGlzdGljUmVsYXRpb25JZCwg Um93RXhjbHVzaXZlTG9jayk7CisJCWNhY2hlSWQgPSBTVEFUUkVMQVRUSU5IOworCX0KIAotCXN0 YXR1cCA9IFNlYXJjaFN5c0NhY2hlMyhTVEFUUkVMQVRUSU5ILCBPYmplY3RJZEdldERhdHVtKHJl bG9pZCksIEludDE2R2V0RGF0dW0oYXR0bnVtKSwgQm9vbEdldERhdHVtKGluaGVyaXRlZCkpOwor CXN0YXR1cCA9IFNlYXJjaFN5c0NhY2hlMyhjYWNoZUlkLCBPYmplY3RJZEdldERhdHVtKHJlbG9p ZCksIEludDE2R2V0RGF0dW0oYXR0bnVtKSwgQm9vbEdldERhdHVtKGluaGVyaXRlZCkpOwogCiAJ LyogaW5pdGlhbGl6ZSBmcm9tIGV4aXN0aW5nIHR1cGxlIGlmIGV4aXN0cyAqLwogCWlmIChIZWFw VHVwbGVJc1ZhbGlkKHN0YXR1cCkpCkBAIC01NjcsMTIgKzU3OCwyNCBAQCB1cHNlcnRfcGdfc3Rh dGlzdGljKFJlbGF0aW9uIHN0YXJlbCwgSGVhcFR1cGxlIG9sZHR1cCwKIHN0YXRpYyBib29sCiBk ZWxldGVfcGdfc3RhdGlzdGljKE9pZCByZWxvaWQsIEF0dHJOdW1iZXIgYXR0bnVtLCBib29sIHN0 YWluaGVyaXQpCiB7Ci0JUmVsYXRpb24Jc2QgPSB0YWJsZV9vcGVuKFN0YXRpc3RpY1JlbGF0aW9u SWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVJlbGF0aW9uCXNkOwogCUhlYXBUdXBsZQlvbGR0dXA7 CiAJYm9vbAkJcmVzdWx0ID0gZmFsc2U7CisJU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlSWQ7CisK KwlpZiAocmVsX2lzX2dsb2JhbF90ZW1wKHJlbG9pZCkpCisJeworCQlzZCA9IHRhYmxlX29wZW4o VGVtcFN0YXRpc3RpY1JlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQljYWNoZUlkID0g VEVNUFNUQVRSRUxBVFRJTkg7CisJfQorCWVsc2UKKwl7CisJCXNkID0gdGFibGVfb3BlbihTdGF0 aXN0aWNSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJY2FjaGVJZCA9IFNUQVRSRUxB VFRJTkg7CisJfQogCiAJLyogSXMgdGhlcmUgYWxyZWFkeSBhIHBnX3N0YXRpc3RpYyB0dXBsZSBm b3IgdGhpcyBhdHRyaWJ1dGU/ICovCi0Jb2xkdHVwID0gU2VhcmNoU3lzQ2FjaGUzKFNUQVRSRUxB VFRJTkgsCisJb2xkdHVwID0gU2VhcmNoU3lzQ2FjaGUzKGNhY2hlSWQsCiAJCQkJCQkJIE9iamVj dElkR2V0RGF0dW0ocmVsb2lkKSwKIAkJCQkJCQkgSW50MTZHZXREYXR1bShhdHRudW0pLAogCQkJ CQkJCSBCb29sR2V0RGF0dW0oc3RhaW5oZXJpdCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYwpp bmRleCBjYmM3MGZkZTcxNi4uODJiZTZhNGQyYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5j CkBAIC01ODM4LDcgKzU4MzgsOCBAQCBleGFtaW5lX3ZhcmlhYmxlKFBsYW5uZXJJbmZvICpyb290 LCBOb2RlICpub2RlLCBpbnQgdmFyUmVsaWQsCiAJCQkJCQllbHNlIGlmIChpbmRleC0+aW5kcHJl ZCA9PSBOSUwpCiAJCQkJCQl7CiAJCQkJCQkJdmFyZGF0YS0+c3RhdHNUdXBsZSA9Ci0JCQkJCQkJ CVNlYXJjaFN5c0NhY2hlMyhTVEFUUkVMQVRUSU5ILAorCQkJCQkJCQlTZWFyY2hTeXNDYWNoZTMo cmVsX2lzX2dsb2JhbF90ZW1wKGluZGV4LT5pbmRleG9pZCkgPworCQkJCQkJCQkJCQkJVEVNUFNU QVRSRUxBVFRJTkggOiBTVEFUUkVMQVRUSU5ILAogCQkJCQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1 bShpbmRleC0+aW5kZXhvaWQpLAogCQkJCQkJCQkJCQkJSW50MTZHZXREYXR1bShwb3MgKyAxKSwK IAkJCQkJCQkJCQkJCUJvb2xHZXREYXR1bShmYWxzZSkpOwpAQCAtNjA2OCw3ICs2MDY5LDggQEAg ZXhhbWluZV9zaW1wbGVfdmFyaWFibGUoUGxhbm5lckluZm8gKnJvb3QsIFZhciAqdmFyLAogCQkg KiBQbGFpbiB0YWJsZSBvciBwYXJlbnQgb2YgYW4gaW5oZXJpdGFuY2UgYXBwZW5kcmVsLCBzbyBs b29rIHVwIHRoZQogCQkgKiBjb2x1bW4gaW4gcGdfc3RhdGlzdGljCiAJCSAqLwotCQl2YXJkYXRh LT5zdGF0c1R1cGxlID0gU2VhcmNoU3lzQ2FjaGUzKFNUQVRSRUxBVFRJTkgsCisJCXZhcmRhdGEt PnN0YXRzVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTMocmVsX2lzX2dsb2JhbF90ZW1wKHJ0ZS0+cmVs aWQpID8KKwkJCQkJCQkJCQkJICBURU1QU1RBVFJFTEFUVElOSCA6IFNUQVRSRUxBVFRJTkgsCiAJ CQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShydGUtPnJlbGlkKSwKIAkJCQkJCQkJCQkJICBJ bnQxNkdldERhdHVtKHZhci0+dmFyYXR0bm8pLAogCQkJCQkJCQkJCQkgIEJvb2xHZXREYXR1bShy dGUtPmluaCkpOwpAQCAtNjU0NSw3ICs2NTQ3LDggQEAgZXhhbWluZV9pbmRleGNvbF92YXJpYWJs ZShQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhPcHRJbmZvICppbmRleCwKIAkJfQogCQllbHNlCiAJ CXsKLQkJCXZhcmRhdGEtPnN0YXRzVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTMoU1RBVFJFTEFUVElO SCwKKwkJCXZhcmRhdGEtPnN0YXRzVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTMocmVsX2lzX2dsb2Jh bF90ZW1wKHJlbGlkKSA/CisJCQkJCQkJCQkJCQkgIFRFTVBTVEFUUkVMQVRUSU5IIDogU1RBVFJF TEFUVElOSCwKIAkJCQkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCiAJCQkJCQkJ CQkJCQkgIEludDE2R2V0RGF0dW0oY29sbnVtKSwKIAkJCQkJCQkJCQkJCSAgQm9vbEdldERhdHVt KHJ0ZS0+aW5oKSk7CkBAIC02NTcxLDcgKzY1NzQsOCBAQCBleGFtaW5lX2luZGV4Y29sX3Zhcmlh YmxlKFBsYW5uZXJJbmZvICpyb290LCBJbmRleE9wdEluZm8gKmluZGV4LAogCQl9CiAJCWVsc2UK IAkJewotCQkJdmFyZGF0YS0+c3RhdHNUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMyhTVEFUUkVMQVRU SU5ILAorCQkJdmFyZGF0YS0+c3RhdHNUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMyhyZWxfaXNfZ2xv YmFsX3RlbXAocmVsaWQpID8KKwkJCQkJCQkJCQkJCSAgVEVNUFNUQVRSRUxBVFRJTkggOiBTVEFU UkVMQVRUSU5ILAogCQkJCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHJlbGlkKSwKIAkJCQkJ CQkJCQkJCSAgSW50MTZHZXREYXR1bShjb2xudW0pLAogCQkJCQkJCQkJCQkJICBCb29sR2V0RGF0 dW0oZmFsc2UpKTsKQEAgLTkxMjUsNyArOTEyOSw4IEBAIGJyaW5jb3N0ZXN0aW1hdGUoUGxhbm5l ckluZm8gKnJvb3QsIEluZGV4UGF0aCAqcGF0aCwgZG91YmxlIGxvb3BfY291bnQsCiAJCQllbHNl CiAJCQl7CiAJCQkJdmFyZGF0YS5zdGF0c1R1cGxlID0KLQkJCQkJU2VhcmNoU3lzQ2FjaGUzKFNU QVRSRUxBVFRJTkgsCisJCQkJCVNlYXJjaFN5c0NhY2hlMyhyZWxfaXNfZ2xvYmFsX3RlbXAocnRl LT5yZWxpZCkgPworCQkJCQkJCQkJVEVNUFNUQVRSRUxBVFRJTkggOiBTVEFUUkVMQVRUSU5ILAog CQkJCQkJCQkJT2JqZWN0SWRHZXREYXR1bShydGUtPnJlbGlkKSwKIAkJCQkJCQkJCUludDE2R2V0 RGF0dW0oYXR0bnVtKSwKIAkJCQkJCQkJCUJvb2xHZXREYXR1bShmYWxzZSkpOwpAQCAtOTE1NSw3 ICs5MTYwLDggQEAgYnJpbmNvc3Rlc3RpbWF0ZShQbGFubmVySW5mbyAqcm9vdCwgSW5kZXhQYXRo ICpwYXRoLCBkb3VibGUgbG9vcF9jb3VudCwKIAkJCX0KIAkJCWVsc2UKIAkJCXsKLQkJCQl2YXJk YXRhLnN0YXRzVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTMoU1RBVFJFTEFUVElOSCwKKwkJCQl2YXJk YXRhLnN0YXRzVHVwbGUgPSBTZWFyY2hTeXNDYWNoZTMocmVsX2lzX2dsb2JhbF90ZW1wKGluZGV4 LT5pbmRleG9pZCkgPworCQkJCQkJCQkJCQkJCSBURU1QU1RBVFJFTEFUVElOSCA6IFNUQVRSRUxB VFRJTkgsCiAJCQkJCQkJCQkJCQkJIE9iamVjdElkR2V0RGF0dW0oaW5kZXgtPmluZGV4b2lkKSwK IAkJCQkJCQkJCQkJCQkgSW50MTZHZXREYXR1bShhdHRudW0pLAogCQkJCQkJCQkJCQkJCSBCb29s R2V0RGF0dW0oZmFsc2UpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggZTgw NjhhNDVjYzguLmVjYzM0ZjA3ZTM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwpA QCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Rl bXBfY2xhc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGljLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190cmFuc2Zvcm0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTM0OTksNyArMzUwMCw4IEBAIGdldF9hdHRh dmd3aWR0aChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKQogCQlpZiAoc3Rhd2lkdGggPiAw KQogCQkJcmV0dXJuIHN0YXdpZHRoOwogCX0KLQl0cCA9IFNlYXJjaFN5c0NhY2hlMyhTVEFUUkVM QVRUSU5ILAorCXRwID0gU2VhcmNoU3lzQ2FjaGUzKHJlbF9pc19nbG9iYWxfdGVtcChyZWxpZCkg PworCQkJCQkJIFRFTVBTVEFUUkVMQVRUSU5IIDogU1RBVFJFTEFUVElOSCwKIAkJCQkJCSBPYmpl Y3RJZEdldERhdHVtKHJlbGlkKSwKIAkJCQkJCSBJbnQxNkdldERhdHVtKGF0dG51bSksCiAJCQkJ CQkgQm9vbEdldERhdHVtKGZhbHNlKSk7CkBAIC0zNTkzLDcgKzM1OTUsOSBAQCBnZXRfYXR0c3Rh dHNzbG90KEF0dFN0YXRzU2xvdCAqc3Nsb3QsIEhlYXBUdXBsZSBzdGF0c3R1cGxlLAogCiAJaWYg KGZsYWdzICYgQVRUU1RBVFNTTE9UX1ZBTFVFUykKIAl7Ci0JCXZhbCA9IFN5c0NhY2hlR2V0QXR0 ck5vdE51bGwoU1RBVFJFTEFUVElOSCwgc3RhdHN0dXBsZSwKKwkJdmFsID0gU3lzQ2FjaGVHZXRB dHRyTm90TnVsbChJc1RlbXBTdGF0aXN0aWNUdXBsZShzdGF0c3R1cGxlKSA/CisJCQkJCQkJCQkg VEVNUFNUQVRSRUxBVFRJTkggOiBTVEFUUkVMQVRUSU5ILAorCQkJCQkJCQkJIHN0YXRzdHVwbGUs CiAJCQkJCQkJCQkgQW51bV9wZ19zdGF0aXN0aWNfc3RhdmFsdWVzMSArIGkpOwogCiAJCS8qCkBA IC0zNjM4LDcgKzM2NDIsOSBAQCBnZXRfYXR0c3RhdHNzbG90KEF0dFN0YXRzU2xvdCAqc3Nsb3Qs IEhlYXBUdXBsZSBzdGF0c3R1cGxlLAogCiAJaWYgKGZsYWdzICYgQVRUU1RBVFNTTE9UX05VTUJF UlMpCiAJewotCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNUQVRSRUxBVFRJTkgsIHN0 YXRzdHVwbGUsCisJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSXNUZW1wU3RhdGlzdGlj VHVwbGUoc3RhdHN0dXBsZSkgPworCQkJCQkJCQkJIFRFTVBTVEFUUkVMQVRUSU5IIDogU1RBVFJF TEFUVElOSCwKKwkJCQkJCQkJCSBzdGF0c3R1cGxlLAogCQkJCQkJCQkJIEFudW1fcGdfc3RhdGlz dGljX3N0YW51bWJlcnMxICsgaSk7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CmluZGV4IGU4NTdlMzZlYjRhLi5iMTQ0ZDA2MzliOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3RlbXBfY2xhc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGlj LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zY2hlbWFwZy5oIgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUK aW5kZXggNjI5YTEzZWRjMjQuLjZhZWMwM2FkZDIyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvTWFrZWZpbGUKQEAgLTg3 LDcgKzg3LDggQEAgQ0FUQUxPR19IRUFERVJTIDo9IFwKIAlwZ19wcm9wZ3JhcGhfbGFiZWwuaCBc CiAJcGdfcHJvcGdyYXBoX2xhYmVsX3Byb3BlcnR5LmggXAogCXBnX3Byb3BncmFwaF9wcm9wZXJ0 eS5oIFwKLQlwZ190ZW1wX2NsYXNzLmgKKwlwZ190ZW1wX2NsYXNzLmggXAorCXBnX3RlbXBfc3Rh dGlzdGljLmgKIAogR0VORVJBVEVEX0hFQURFUlMgOj0gJChDQVRBTE9HX0hFQURFUlM6JS5oPSVf ZC5oKQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCA0MDRmODUwMzI3Ni4uZGI4MDljNGIz YzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZApAQCAtNzUsNiArNzUsNyBAQCBjYXRhbG9nX2hl YWRlcnMgPSBbCiAgICdwZ19wcm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkuaCcsCiAgICdwZ19wcm9w Z3JhcGhfcHJvcGVydHkuaCcsCiAgICdwZ190ZW1wX2NsYXNzLmgnLAorICAncGdfdGVtcF9zdGF0 aXN0aWMuaCcsCiBdCiAKICMgVGhlIC5kYXQgZmlsZXMgd2UgbmVlZCBjYW4ganVzdCBiZSBsaXN0 ZWQgYWxwaGFiZXRpY2FsbHkuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0 YXRpc3RpYy5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWMuaAppbmRleCAwMzJi ZjE3N2I5NS4uZmY1NWY3ZjViYjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3RhdGlzdGljLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWMuaApAQCAt MjgsNiArMjgsOSBAQAogICovCiBCRUdJTl9DQVRBTE9HX1NUUlVDVAogCisvKgorICogTkI6IEFu eSBjaGFuZ2VzIG1hZGUgaGVyZSBtdXN0IGJlIHJlZmxlY3RlZCBpbiBwZ190ZW1wX3N0YXRpc3Rp Yy4KKyAqLwogQ0FUQUxPRyhwZ19zdGF0aXN0aWMsMjYxOSxTdGF0aXN0aWNSZWxhdGlvbklkKQog ewogCS8qIFRoZXNlIGZpZWxkcyBmb3JtIHRoZSB1bmlxdWUga2V5IGZvciB0aGUgZW50cnk6ICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGljLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFmYWQ5ZGQ2NjBjCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpYy5oCkBAIC0wLDAgKzEsMTQ3IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ190ZW1wX3N0YXRpc3RpYy5oCisgKgkgIGRlZmlu aXRpb24gb2YgdGhlICJ0ZW1wb3Jhcnkgc3RhdGlzdGljcyIgc3lzdGVtIGNhdGFsb2cKKyAqCSAg KHBnX3RlbXBfc3RhdGlzdGljKQorICoKKyAqIFRoaXMgaXMgYSBnbG9iYWwgdGVtcG9yYXJ5IHN5 c3RlbSBjYXRhbG9nIHRhYmxlIHN0b3Jpbmcgc2Vzc2lvbi1zcGVjaWZpYworICogc3RhdGlzdGlj cyBmb3IgdGVtcG9yYXJ5IHJlbGF0aW9ucy4gIEN1cnJlbnRseSwgaXQgaXMgb25seSB1c2VkIGZv cgorICogZ2xvYmFsIHRlbXBvcmFyeSByZWxhdGlvbnMuCisgKgorICogUG9ydGlvbnMgQ29weXJp Z2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdGVtcF9zdGF0aXN0aWMuaAorICoKKyAqIE5PVEVTCisg KgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2No ZW1hCisgKgkgIGluZm9ybWF0aW9uLgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZu ZGVmIFBHX1RFTVBfU1RBVElTVElDX0gKKyNkZWZpbmUgUEdfVEVNUF9TVEFUSVNUSUNfSAorCisj aW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfc3Rh dGlzdGljX2QuaCIJLyogSVdZVSBwcmFnbWE6IGV4cG9ydCAqLworCisvKiAtLS0tLS0tLS0tLS0t LS0tCisgKgkJcGdfdGVtcF9zdGF0aXN0aWMgZGVmaW5pdGlvbi4gIGNwcCB0dXJucyB0aGlzIGlu dG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ190ZW1wX3N0YXRpc3RpYworICogLS0t LS0tLS0tLS0tLS0tLQorICovCitCRUdJTl9DQVRBTE9HX1NUUlVDVAorCisvKgorICogTkI6IFRo ZSBmaWVsZHMgaGVyZSBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhvc2UgaW4gcGdfc3RhdGlzdGljLgor ICovCitDQVRBTE9HKHBnX3RlbXBfc3RhdGlzdGljLDgwODQsVGVtcFN0YXRpc3RpY1JlbGF0aW9u SWQpIEJLSV9URU1QX1JFTEFUSU9OCit7CisJLyogVGhlc2UgZmllbGRzIGZvcm0gdGhlIHVuaXF1 ZSBrZXkgZm9yIHRoZSBlbnRyeTogKi8KKwlPaWQJCQlzdGFyZWxpZCBCS0lfTE9PS1VQKHBnX2Ns YXNzKTsJLyogcmVsYXRpb24gY29udGFpbmluZworCQkJCQkJCQkJCQkJICogYXR0cmlidXRlICov CisJaW50MTYJCXN0YWF0dG51bTsJCS8qIGF0dHJpYnV0ZSAoY29sdW1uKSBzdGF0cyBhcmUgZm9y ICovCisJYm9vbAkJc3RhaW5oZXJpdDsJCS8qIHRydWUgaWYgaW5oZXJpdGFuY2UgY2hpbGRyZW4g YXJlIGluY2x1ZGVkICovCisKKwkvKiB0aGUgZnJhY3Rpb24gb2YgdGhlIGNvbHVtbidzIGVudHJp ZXMgdGhhdCBhcmUgTlVMTDogKi8KKwlmbG9hdDQJCXN0YW51bGxmcmFjOworCisJLyoKKwkgKiBz dGF3aWR0aCBpcyB0aGUgYXZlcmFnZSB3aWR0aCBpbiBieXRlcyBvZiBub24tbnVsbCBlbnRyaWVz LiAgRm9yCisJICogZml4ZWQtd2lkdGggZGF0YXR5cGVzIHRoaXMgaXMgb2YgY291cnNlIHRoZSBz YW1lIGFzIHRoZSB0eXBsZW4sIGJ1dCBmb3IKKwkgKiB2YXItd2lkdGggdHlwZXMgaXQgaXMgbW9y ZSB1c2VmdWwuICBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgYXZlcmFnZSB3aWR0aAorCSAqIG9mIHRo ZSBkYXRhIGFzIGFjdHVhbGx5IHN0b3JlZCwgcG9zdC1UT0FTVGluZyAoZWcsIGZvciBhCisJICog bW92ZWQtb3V0LW9mLWxpbmUgdmFsdWUsIG9ubHkgdGhlIHNpemUgb2YgdGhlIHBvaW50ZXIgb2Jq ZWN0IGlzCisJICogY291bnRlZCkuICBUaGlzIGlzIHRoZSBhcHByb3ByaWF0ZSBkZWZpbml0aW9u IGZvciB0aGUgcHJpbWFyeSB1c2Ugb2YKKwkgKiB0aGUgc3RhdGlzdGljLCB3aGljaCBpcyB0byBl c3RpbWF0ZSBzaXplcyBvZiBpbi1tZW1vcnkgaGFzaCB0YWJsZXMgb2YKKwkgKiB0dXBsZXMuCisJ ICovCisJaW50MzIJCXN0YXdpZHRoOworCisJLyogLS0tLS0tLS0tLS0tLS0tLQorCSAqIHN0YWRp c3RpbmN0IGluZGljYXRlcyB0aGUgKGFwcHJveGltYXRlKSBudW1iZXIgb2YgZGlzdGluY3Qgbm9u LW51bGwKKwkgKiBkYXRhIHZhbHVlcyBpbiB0aGUgY29sdW1uLiAgVGhlIGludGVycHJldGF0aW9u IGlzOgorCSAqCQkwCQl1bmtub3duIG9yIG5vdCBjb21wdXRlZAorCSAqCQk+IDAJCWFjdHVhbCBu dW1iZXIgb2YgZGlzdGluY3QgdmFsdWVzCisJICoJCTwgMAkJbmVnYXRpdmUgb2YgbXVsdGlwbGll ciBmb3IgbnVtYmVyIG9mIHJvd3MKKwkgKiBUaGUgc3BlY2lhbCBuZWdhdGl2ZSBjYXNlIGFsbG93 cyB1cyB0byBjb3BlIHdpdGggY29sdW1ucyB0aGF0IGFyZQorCSAqIHVuaXF1ZSAoc3RhZGlzdGlu Y3QgPSAtMSkgb3IgbmVhcmx5IHNvIChmb3IgZXhhbXBsZSwgYSBjb2x1bW4gaW4gd2hpY2gKKwkg KiBub24tbnVsbCB2YWx1ZXMgYXBwZWFyIGFib3V0IHR3aWNlIG9uIHRoZSBhdmVyYWdlIGNvdWxk IGJlIHJlcHJlc2VudGVkCisJICogYnkgc3RhZGlzdGluY3QgPSAtMC41IGlmIHRoZXJlIGFyZSBu byBudWxscywgb3IgLTAuNCBpZiAyMCUgb2YgdGhlCisJICogY29sdW1uIGlzIG51bGxzKS4gIEJl Y2F1c2UgdGhlIG51bWJlci1vZi1yb3dzIHN0YXRpc3RpYyBpbiBwZ19jbGFzcyBtYXkKKwkgKiBi ZSB1cGRhdGVkIG1vcmUgZnJlcXVlbnRseSB0aGFuIHBnX3N0YXRpc3RpYyBpcywgaXQncyBpbXBv cnRhbnQgdG8gYmUKKwkgKiBhYmxlIHRvIGRlc2NyaWJlIHN1Y2ggc2l0dWF0aW9ucyBhcyBhIG11 bHRpcGxlIG9mIHRoZSBudW1iZXIgb2Ygcm93cywKKwkgKiByYXRoZXIgdGhhbiBhIGZpeGVkIG51 bWJlciBvZiBkaXN0aW5jdCB2YWx1ZXMuICBCdXQgaW4gb3RoZXIgY2FzZXMgYQorCSAqIGZpeGVk IG51bWJlciBpcyBjb3JyZWN0IChlZywgYSBib29sZWFuIGNvbHVtbikuCisJICogLS0tLS0tLS0t LS0tLS0tLQorCSAqLworCWZsb2F0NAkJc3RhZGlzdGluY3Q7CisKKwkvKiAtLS0tLS0tLS0tLS0t LS0tCisJICogVG8gYWxsb3cga2VlcGluZyBzdGF0aXN0aWNzIG9uIGRpZmZlcmVudCBraW5kcyBv ZiBkYXRhdHlwZXMsCisJICogd2UgZG8gbm90IGhhcmQtd2lyZSBhbnkgcGFydGljdWxhciBtZWFu aW5nIGZvciB0aGUgcmVtYWluaW5nCisJICogc3RhdGlzdGljYWwgZmllbGRzLiAgSW5zdGVhZCwg d2UgcHJvdmlkZSBzZXZlcmFsICJzbG90cyIgaW4gd2hpY2gKKwkgKiBzdGF0aXN0aWNhbCBkYXRh IGNhbiBiZSBwbGFjZWQuICBFYWNoIHNsb3QgaW5jbHVkZXM6CisJICoJCWtpbmQJCQlpbnRlZ2Vy IGNvZGUgaWRlbnRpZnlpbmcga2luZCBvZiBkYXRhIChzZWUgYmVsb3cpCisJICoJCW9wCQkJCU9J RCBvZiBhc3NvY2lhdGVkIG9wZXJhdG9yLCBpZiBuZWVkZWQKKwkgKgkJY29sbAkJCU9JRCBvZiBy ZWxldmFudCBjb2xsYXRpb24sIG9yIDAgaWYgbm9uZQorCSAqCQludW1iZXJzCQkJZmxvYXQ0IGFy cmF5IChmb3Igc3RhdGlzdGljYWwgdmFsdWVzKQorCSAqCQl2YWx1ZXMJCQlhbnlhcnJheSAoZm9y IHJlcHJlc2VudGF0aW9ucyBvZiBkYXRhIHZhbHVlcykKKwkgKiBUaGUgSUQsIG9wZXJhdG9yLCBh bmQgY29sbGF0aW9uIGZpZWxkcyBhcmUgbmV2ZXIgTlVMTDsgdGhleSBhcmUgemVyb2VzCisJICog aW4gYW4gdW51c2VkIHNsb3QuICBUaGUgbnVtYmVycyBhbmQgdmFsdWVzIGZpZWxkcyBhcmUgTlVM TCBpbiBhbgorCSAqIHVudXNlZCBzbG90LCBhbmQgbWlnaHQgYWxzbyBiZSBOVUxMIGluIGEgdXNl ZCBzbG90IGlmIHRoZSBzbG90IGtpbmQKKwkgKiBoYXMgbm8gbmVlZCBmb3Igb25lIG9yIHRoZSBv dGhlci4KKwkgKiAtLS0tLS0tLS0tLS0tLS0tCisJICovCisKKwlpbnQxNgkJc3Rha2luZDE7CisJ aW50MTYJCXN0YWtpbmQyOworCWludDE2CQlzdGFraW5kMzsKKwlpbnQxNgkJc3Rha2luZDQ7CisJ aW50MTYJCXN0YWtpbmQ1OworCisJT2lkCQkJc3Rhb3AxIEJLSV9MT09LVVBfT1BUKHBnX29wZXJh dG9yKTsKKwlPaWQJCQlzdGFvcDIgQktJX0xPT0tVUF9PUFQocGdfb3BlcmF0b3IpOworCU9pZAkJ CXN0YW9wMyBCS0lfTE9PS1VQX09QVChwZ19vcGVyYXRvcik7CisJT2lkCQkJc3Rhb3A0IEJLSV9M T09LVVBfT1BUKHBnX29wZXJhdG9yKTsKKwlPaWQJCQlzdGFvcDUgQktJX0xPT0tVUF9PUFQocGdf b3BlcmF0b3IpOworCisJT2lkCQkJc3RhY29sbDEgQktJX0xPT0tVUF9PUFQocGdfY29sbGF0aW9u KTsKKwlPaWQJCQlzdGFjb2xsMiBCS0lfTE9PS1VQX09QVChwZ19jb2xsYXRpb24pOworCU9pZAkJ CXN0YWNvbGwzIEJLSV9MT09LVVBfT1BUKHBnX2NvbGxhdGlvbik7CisJT2lkCQkJc3RhY29sbDQg QktJX0xPT0tVUF9PUFQocGdfY29sbGF0aW9uKTsKKwlPaWQJCQlzdGFjb2xsNSBCS0lfTE9PS1VQ X09QVChwZ19jb2xsYXRpb24pOworCisjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJs ZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KKwlmbG9hdDQJCXN0YW51bWJlcnMxWzFdOwor CWZsb2F0NAkJc3RhbnVtYmVyczJbMV07CisJZmxvYXQ0CQlzdGFudW1iZXJzM1sxXTsKKwlmbG9h dDQJCXN0YW51bWJlcnM0WzFdOworCWZsb2F0NAkJc3RhbnVtYmVyczVbMV07CisKKwkvKgorCSAq IFZhbHVlcyBpbiB0aGVzZSBhcnJheXMgYXJlIHZhbHVlcyBvZiB0aGUgY29sdW1uJ3MgZGF0YSB0 eXBlLCBvciBvZiBzb21lCisJICogcmVsYXRlZCB0eXBlIHN1Y2ggYXMgYW4gYXJyYXkgZWxlbWVu dCB0eXBlLiAgV2UgcHJlc2VudGx5IGhhdmUgdG8gY2hlYXQKKwkgKiBxdWl0ZSBhIGJpdCB0byBh bGxvdyBwb2x5bW9ycGhpYyBhcnJheXMgb2YgdGhpcyBraW5kLCBidXQgcGVyaGFwcworCSAqIHNv bWVkYXkgaXQnbGwgYmUgYSBsZXNzIGJvZ3VzIGZhY2lsaXR5LgorCSAqLworCWFueWFycmF5CXN0 YXZhbHVlczE7CisJYW55YXJyYXkJc3RhdmFsdWVzMjsKKwlhbnlhcnJheQlzdGF2YWx1ZXMzOwor CWFueWFycmF5CXN0YXZhbHVlczQ7CisJYW55YXJyYXkJc3RhdmFsdWVzNTsKKyNlbmRpZgorfSBG b3JtRGF0YV9wZ190ZW1wX3N0YXRpc3RpYzsKKworRU5EX0NBVEFMT0dfU1RSVUNUCisKK0RFQ0xB UkVfVE9BU1QocGdfdGVtcF9zdGF0aXN0aWMsIDgwODUsIDgwODYpOworCitERUNMQVJFX1VOSVFV RV9JTkRFWF9QS0VZKHBnX3RlbXBfc3RhdGlzdGljX3JlbGlkX2F0dF9pbmhfaW5kZXgsIDgwODcs IFRlbXBTdGF0aXN0aWNSZWxpZEF0dG51bUluaEluZGV4SWQsIHBnX3RlbXBfc3RhdGlzdGljLCBi dHJlZShzdGFyZWxpZCBvaWRfb3BzLCBzdGFhdHRudW0gaW50Ml9vcHMsIHN0YWluaGVyaXQgYm9v bF9vcHMpKTsKKworTUFLRV9TWVNDQUNIRShURU1QU1RBVFJFTEFUVElOSCwgcGdfdGVtcF9zdGF0 aXN0aWNfcmVsaWRfYXR0X2luaF9pbmRleCwgMTI4KTsKKworLyogSXMgdGhlIHNwZWNpZmllZCB0 dXBsZSBmcm9tIHBnX3RlbXBfc3RhdGlzdGljPyAqLworI2RlZmluZSBJc1RlbXBTdGF0aXN0aWNU dXBsZSh0dXBsZSkgXAorCSgodHVwbGUpLT50X3RhYmxlT2lkID09IFRlbXBTdGF0aXN0aWNSZWxh dGlvbklkKQorCisjZW5kaWYJCQkJCQkJLyogUEdfVEVNUF9TVEFUSVNUSUNfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dAppbmRleCA2MzBhNzYxZDMxYy4uYTI3 MjM4NzUwMTMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3Rl bXAub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CkBA IC01MDQsMTQgKzUwNCwxNiBAQCBST0xMQkFDSyBUTyBzcDsKIElOU0VSVCBJTlRPIHRtcDEgVkFM VUVTICgxLCAneHh4Jyk7CiBDT01NSVQ7CiBTRUxFQ1Qgb2lkOjpyZWdjbGFzcyBGUk9NIHBnX3Rl bXBfY2xhc3MgT1JERVIgQlkgMTsKLSAgICAgICAgICAgb2lkICAgICAgICAgICAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgIG9pZCAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgcGdfdGVtcF9jbGFz cwogIHBnX3RlbXBfY2xhc3Nfb2lkX2luZGV4CisgcGdfdGVtcF9zdGF0aXN0aWMKKyBwZ190ZW1w X3N0YXRpc3RpY19yZWxpZF9hdHRfaW5oX2luZGV4CiAgdG1wMV9jX3NlcQogIHRtcDEKICB0bXAx X3BrZXkKLSg1IHJvd3MpCisoNyByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIHRtcDE7CiAgYSB8ICBi ICB8IGMgCkBAIC02NTQsNiArNjU2LDQzIEBAIFNFTEVDVCBvaWQ6OnJlZ2NsYXNzLCByZWxwYWdl cywgcmVsdHVwbGVzLCByZWxhbGx2aXNpYmxlLCByZWxhbGxmcm96ZW4KICB0bXAyIHwgICAgICAg IDUgfCAgICAgICAxNTAgfCAgICAgICAgICAgIDEwIHwgICAgICAgICAgIDIwCiAoMSByb3cpCiAK K0RST1AgVEFCTEUgdG1wMjsKKy0tIFRlc3QgY29sdW1uIHN0YXRzCitDUkVBVEUgR0xPQkFMIFRF TVAgVEFCTEUgdG1wMiAoYSBpbnQsIGIgaW50KTsKK0lOU0VSVCBJTlRPIHRtcDIgU0VMRUNUIHgs IGZsb29yKHNxcnQoeCkpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM2LCA5OSkgeDsKK0FOQUxZWkUg dG1wMjsKK1NFTEVDVCBzdGF2YWx1ZXMxIEZST00gcGdfc3RhdGlzdGljCisgV0hFUkUgc3RhcmVs aWQgPSAndG1wMic6OnJlZ2NsYXNzIEFORCBzdGFhdHRudW0gPSAyOworIHN0YXZhbHVlczEgCist LS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCBzdGF2YWx1ZXMxIEZST00gcGdfdGVtcF9z dGF0aXN0aWMKKyBXSEVSRSBzdGFyZWxpZCA9ICd0bXAyJzo6cmVnY2xhc3MgQU5EIHN0YWF0dG51 bSA9IDI7Cisgc3RhdmFsdWVzMSAKKy0tLS0tLS0tLS0tLQorIHs5LDgsNyw2fQorKDEgcm93KQor CitTRUxFQ1QgbW9zdF9jb21tb25fdmFscyBGUk9NIHBnX3N0YXRzCisgV0hFUkUgdGFibGVuYW1l ID0gJ3RtcDInIEFORCBhdHRuYW1lID0gJ2InOworIG1vc3RfY29tbW9uX3ZhbHMgCistLS0tLS0t LS0tLS0tLS0tLS0KKyB7OSw4LDcsNn0KKygxIHJvdykKKworU0VMRUNUIENPVU5UKCopIEZST00g dG1wMiBXSEVSRSBiID0gODsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxNworKDEgcm93KQorCitT RUxFQ1Qgcm93X2VzdGltYXRlKCdTRUxFQ1QgKiBGUk9NIHRtcDIgV0hFUkUgYiA9IDgnKTsKKyBy b3dfZXN0aW1hdGUgCistLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxNworKDEgcm93KQorCiBE Uk9QIFRBQkxFIHRtcDI7CiAtLSBUZXN0IHZpZXcgY3JlYXRpb24KIENSRUFURSBWSUVXIHYgQVMg U0VMRUNUICogRlJPTSB0bXAxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApp bmRleCAzYzM0MDRlNTFiOC4uYmUyZWZhNzgyNTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b2lkam9pbnMub3V0CkBAIC0yODcsMyArMjg3LDE0IEBAIE5PVElDRTogIGNoZWNraW5nIHBnX3By b3BncmFwaF9wcm9wZXJ0eSB7cGdwdHlwaWR9ID0+IHBnX3R5cGUge29pZH0KIE5PVElDRTogIGNo ZWNraW5nIHBnX3Byb3BncmFwaF9wcm9wZXJ0eSB7cGdwY29sbGF0aW9ufSA9PiBwZ19jb2xsYXRp b24ge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfY2xhc3Mge29pZH0gPT4gcGdfY2xh c3Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfY2xhc3Mge3JlbHRhYmxlc3BhY2V9 ID0+IHBnX3RhYmxlc3BhY2Uge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfc3RhdGlz dGljIHtzdGFyZWxpZH0gPT4gcGdfY2xhc3Mge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3Rl bXBfc3RhdGlzdGljIHtzdGFvcDF9ID0+IHBnX29wZXJhdG9yIHtvaWR9CitOT1RJQ0U6ICBjaGVj a2luZyBwZ190ZW1wX3N0YXRpc3RpYyB7c3Rhb3AyfSA9PiBwZ19vcGVyYXRvciB7b2lkfQorTk9U SUNFOiAgY2hlY2tpbmcgcGdfdGVtcF9zdGF0aXN0aWMge3N0YW9wM30gPT4gcGdfb3BlcmF0b3Ig e29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfc3RhdGlzdGljIHtzdGFvcDR9ID0+IHBn X29wZXJhdG9yIHtvaWR9CitOT1RJQ0U6ICBjaGVja2luZyBwZ190ZW1wX3N0YXRpc3RpYyB7c3Rh b3A1fSA9PiBwZ19vcGVyYXRvciB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdGVtcF9zdGF0 aXN0aWMge3N0YWNvbGwxfSA9PiBwZ19jb2xsYXRpb24ge29pZH0KK05PVElDRTogIGNoZWNraW5n IHBnX3RlbXBfc3RhdGlzdGljIHtzdGFjb2xsMn0gPT4gcGdfY29sbGF0aW9uIHtvaWR9CitOT1RJ Q0U6ICBjaGVja2luZyBwZ190ZW1wX3N0YXRpc3RpYyB7c3RhY29sbDN9ID0+IHBnX2NvbGxhdGlv biB7b2lkfQorTk9USUNFOiAgY2hlY2tpbmcgcGdfdGVtcF9zdGF0aXN0aWMge3N0YWNvbGw0fSA9 PiBwZ19jb2xsYXRpb24ge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfc3RhdGlzdGlj IHtzdGFjb2xsNX0gPT4gcGdfY29sbGF0aW9uIHtvaWR9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CmluZGV4IDU2MWNmNjA1NjdlLi5jM2NhZmViNmU0MyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKQEAgLTEzMDIsNiArMTMwMiw3MSBAQCBwZ19haW9zfCBTRUxFQ1QgcGlk LAogICAgIGZfbG9jYWxtZW0sCiAgICAgZl9idWZmZXJlZAogICAgRlJPTSBwZ19nZXRfYWlvcygp IHBnX2dldF9haW9zKHBpZCwgaW9faWQsIGlvX2dlbmVyYXRpb24sIHN0YXRlLCBvcGVyYXRpb24s IG9mZiwgbGVuZ3RoLCB0YXJnZXQsIGhhbmRsZV9kYXRhX2xlbiwgcmF3X3Jlc3VsdCwgcmVzdWx0 LCB0YXJnZXRfZGVzYywgZl9zeW5jLCBmX2xvY2FsbWVtLCBmX2J1ZmZlcmVkKTsKK3BnX2FsbF9z dGF0aXN0aWN8IFNFTEVDVCBwZ19zdGF0aXN0aWMuc3RhcmVsaWQsCisgICAgcGdfc3RhdGlzdGlj LnN0YWF0dG51bSwKKyAgICBwZ19zdGF0aXN0aWMuc3RhaW5oZXJpdCwKKyAgICBwZ19zdGF0aXN0 aWMuc3RhbnVsbGZyYWMsCisgICAgcGdfc3RhdGlzdGljLnN0YXdpZHRoLAorICAgIHBnX3N0YXRp c3RpYy5zdGFkaXN0aW5jdCwKKyAgICBwZ19zdGF0aXN0aWMuc3Rha2luZDEsCisgICAgcGdfc3Rh dGlzdGljLnN0YWtpbmQyLAorICAgIHBnX3N0YXRpc3RpYy5zdGFraW5kMywKKyAgICBwZ19zdGF0 aXN0aWMuc3Rha2luZDQsCisgICAgcGdfc3RhdGlzdGljLnN0YWtpbmQ1LAorICAgIHBnX3N0YXRp c3RpYy5zdGFvcDEsCisgICAgcGdfc3RhdGlzdGljLnN0YW9wMiwKKyAgICBwZ19zdGF0aXN0aWMu c3Rhb3AzLAorICAgIHBnX3N0YXRpc3RpYy5zdGFvcDQsCisgICAgcGdfc3RhdGlzdGljLnN0YW9w NSwKKyAgICBwZ19zdGF0aXN0aWMuc3RhY29sbDEsCisgICAgcGdfc3RhdGlzdGljLnN0YWNvbGwy LAorICAgIHBnX3N0YXRpc3RpYy5zdGFjb2xsMywKKyAgICBwZ19zdGF0aXN0aWMuc3RhY29sbDQs CisgICAgcGdfc3RhdGlzdGljLnN0YWNvbGw1LAorICAgIHBnX3N0YXRpc3RpYy5zdGFudW1iZXJz MSwKKyAgICBwZ19zdGF0aXN0aWMuc3RhbnVtYmVyczIsCisgICAgcGdfc3RhdGlzdGljLnN0YW51 bWJlcnMzLAorICAgIHBnX3N0YXRpc3RpYy5zdGFudW1iZXJzNCwKKyAgICBwZ19zdGF0aXN0aWMu c3RhbnVtYmVyczUsCisgICAgcGdfc3RhdGlzdGljLnN0YXZhbHVlczEsCisgICAgcGdfc3RhdGlz dGljLnN0YXZhbHVlczIsCisgICAgcGdfc3RhdGlzdGljLnN0YXZhbHVlczMsCisgICAgcGdfc3Rh dGlzdGljLnN0YXZhbHVlczQsCisgICAgcGdfc3RhdGlzdGljLnN0YXZhbHVlczUKKyAgIEZST00g cGdfc3RhdGlzdGljCitVTklPTiBBTEwKKyBTRUxFQ1QgcGdfdGVtcF9zdGF0aXN0aWMuc3RhcmVs aWQsCisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3RhYXR0bnVtLAorICAgIHBnX3RlbXBfc3RhdGlz dGljLnN0YWluaGVyaXQsCisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3RhbnVsbGZyYWMsCisgICAg cGdfdGVtcF9zdGF0aXN0aWMuc3Rhd2lkdGgsCisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3RhZGlz dGluY3QsCisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3Rha2luZDEsCisgICAgcGdfdGVtcF9zdGF0 aXN0aWMuc3Rha2luZDIsCisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3Rha2luZDMsCisgICAgcGdf dGVtcF9zdGF0aXN0aWMuc3Rha2luZDQsCisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3Rha2luZDUs CisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3Rhb3AxLAorICAgIHBnX3RlbXBfc3RhdGlzdGljLnN0 YW9wMiwKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFvcDMsCisgICAgcGdfdGVtcF9zdGF0aXN0 aWMuc3Rhb3A0LAorICAgIHBnX3RlbXBfc3RhdGlzdGljLnN0YW9wNSwKKyAgICBwZ190ZW1wX3N0 YXRpc3RpYy5zdGFjb2xsMSwKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFjb2xsMiwKKyAgICBw Z190ZW1wX3N0YXRpc3RpYy5zdGFjb2xsMywKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFjb2xs NCwKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFjb2xsNSwKKyAgICBwZ190ZW1wX3N0YXRpc3Rp Yy5zdGFudW1iZXJzMSwKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFudW1iZXJzMiwKKyAgICBw Z190ZW1wX3N0YXRpc3RpYy5zdGFudW1iZXJzMywKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFu dW1iZXJzNCwKKyAgICBwZ190ZW1wX3N0YXRpc3RpYy5zdGFudW1iZXJzNSwKKyAgICBwZ190ZW1w X3N0YXRpc3RpYy5zdGF2YWx1ZXMxLAorICAgIHBnX3RlbXBfc3RhdGlzdGljLnN0YXZhbHVlczIs CisgICAgcGdfdGVtcF9zdGF0aXN0aWMuc3RhdmFsdWVzMywKKyAgICBwZ190ZW1wX3N0YXRpc3Rp Yy5zdGF2YWx1ZXM0LAorICAgIHBnX3RlbXBfc3RhdGlzdGljLnN0YXZhbHVlczUKKyAgIEZST00g cGdfdGVtcF9zdGF0aXN0aWM7CiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zfCBTRUxF Q1QgZS5uYW1lLAogICAgIGUudmVyc2lvbiwKICAgICAoeC5leHRuYW1lIElTIE5PVCBOVUxMKSBB UyBpbnN0YWxsZWQsCkBAIC0yNzAyLDcgKzI3NjcsNyBAQCBwZ19zdGF0c3wgU0VMRUNUIG4ubnNw bmFtZSBBUyBzY2hlbWFuYW1lLAogICAgICAgICAgICAgV0hFTiAocy5zdGFraW5kNSA9IDcpIFRI RU4gcy5zdGF2YWx1ZXM1CiAgICAgICAgICAgICBFTFNFIE5VTEw6OmFueWFycmF5CiAgICAgICAg IEVORCBBUyByYW5nZV9ib3VuZHNfaGlzdG9ncmFtCi0gICBGUk9NICgoKHBnX3N0YXRpc3RpYyBz CisgICBGUk9NICgoKHBnX2FsbF9zdGF0aXN0aWMgcwogICAgICBKT0lOIHBnX2NsYXNzIGMgT04g KChjLm9pZCA9IHMuc3RhcmVsaWQpKSkKICAgICAgSk9JTiBwZ19hdHRyaWJ1dGUgYSBPTiAoKChj Lm9pZCA9IGEuYXR0cmVsaWQpIEFORCAoYS5hdHRudW0gPSBzLnN0YWF0dG51bSkpKSkKICAgICAg TEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OICgobi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CmluZGV4IDgzNzBjMTU2 MWNjLi41ZjU3NTZkNTU5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z YW5pdHlfY2hlY2sub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc2FuaXR5X2No ZWNrLm91dApAQCAtMjUsMyArMjUsMjYgQEAgU0VMRUNUIHJlbG5hbWUsIHJlbGtpbmQKIC0tLS0t LS0tLSstLS0tLS0tLS0KICgwIHJvd3MpCiAKKy0tIGNoZWNrIHRoYXQgcGdfc3RhdGlzdGljIGFu ZCBwZ190ZW1wX3N0YXRpc3RpYyBoYXZlIHRoZSBleGFjdCBzYW1lIGNvbHVtbnMKK1dJVEggdDEg QVMgKAorICBTRUxFQ1QgYXR0bmFtZSwgYXR0dHlwaWQsIGF0dGxlbiwgYXR0bnVtLCBhdHR0eXBt b2QsIGF0dG5kaW1zLCBhdHRieXZhbCwKKyAgICAgICAgIGF0dGFsaWduLCBhdHRzdG9yYWdlLCBh dHRjb21wcmVzc2lvbiwgYXR0bm90bnVsbCwgYXR0aGFzZGVmLAorICAgICAgICAgYXR0aGFzbWlz c2luZywgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCwgYXR0aXNkcm9wcGVkLCBhdHRpc2xvY2Fs LAorICAgICAgICAgYXR0aW5oY291bnQsIGF0dGNvbGxhdGlvbgorICAgIEZST00gcGdfYXR0cmli dXRlCisgICBXSEVSRSBhdHRyZWxpZCA9ICdwZ19zdGF0aXN0aWMnOjpyZWdjbGFzcworKSwgdDIg QVMgKAorICBTRUxFQ1QgYXR0bmFtZSwgYXR0dHlwaWQsIGF0dGxlbiwgYXR0bnVtLCBhdHR0eXBt b2QsIGF0dG5kaW1zLCBhdHRieXZhbCwKKyAgICAgICAgIGF0dGFsaWduLCBhdHRzdG9yYWdlLCBh dHRjb21wcmVzc2lvbiwgYXR0bm90bnVsbCwgYXR0aGFzZGVmLAorICAgICAgICAgYXR0aGFzbWlz c2luZywgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCwgYXR0aXNkcm9wcGVkLCBhdHRpc2xvY2Fs LAorICAgICAgICAgYXR0aW5oY291bnQsIGF0dGNvbGxhdGlvbgorICAgIEZST00gcGdfYXR0cmli dXRlCisgICBXSEVSRSBhdHRyZWxpZCA9ICdwZ190ZW1wX3N0YXRpc3RpYyc6OnJlZ2NsYXNzCisp CisoU0VMRUNUICogRlJPTSB0MSBFWENFUFQgU0VMRUNUICogRlJPTSB0MikKK1VOSU9OIEFMTAor KFNFTEVDVCAqIEZST00gdDIgRVhDRVBUIFNFTEVDVCAqIEZST00gdDEpOworIGF0dG5hbWUgfCBh dHR0eXBpZCB8IGF0dGxlbiB8IGF0dG51bSB8IGF0dHR5cG1vZCB8IGF0dG5kaW1zIHwgYXR0Ynl2 YWwgfCBhdHRhbGlnbiB8IGF0dHN0b3JhZ2UgfCBhdHRjb21wcmVzc2lvbiB8IGF0dG5vdG51bGwg fCBhdHRoYXNkZWYgfCBhdHRoYXNtaXNzaW5nIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQg fCBhdHRpc2Ryb3BwZWQgfCBhdHRpc2xvY2FsIHwgYXR0aW5oY291bnQgfCBhdHRjb2xsYXRpb24g CistLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKygwIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2dsb2JhbF90ZW1wLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNx bAppbmRleCBmODg5NjBlYzViMi4uM2VjYzc2NmMzZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9i YWxfdGVtcC5zcWwKQEAgLTM4NSw2ICszODUsMjUgQEAgU0VMRUNUIG9pZDo6cmVnY2xhc3MsIHJl bHBhZ2VzLCByZWx0dXBsZXMsIHJlbGFsbHZpc2libGUsIHJlbGFsbGZyb3plbgogCiBEUk9QIFRB QkxFIHRtcDI7CiAKKy0tIFRlc3QgY29sdW1uIHN0YXRzCitDUkVBVEUgR0xPQkFMIFRFTVAgVEFC TEUgdG1wMiAoYSBpbnQsIGIgaW50KTsKK0lOU0VSVCBJTlRPIHRtcDIgU0VMRUNUIHgsIGZsb29y KHNxcnQoeCkpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM2LCA5OSkgeDsKK0FOQUxZWkUgdG1wMjsK KworU0VMRUNUIHN0YXZhbHVlczEgRlJPTSBwZ19zdGF0aXN0aWMKKyBXSEVSRSBzdGFyZWxpZCA9 ICd0bXAyJzo6cmVnY2xhc3MgQU5EIHN0YWF0dG51bSA9IDI7CisKK1NFTEVDVCBzdGF2YWx1ZXMx IEZST00gcGdfdGVtcF9zdGF0aXN0aWMKKyBXSEVSRSBzdGFyZWxpZCA9ICd0bXAyJzo6cmVnY2xh c3MgQU5EIHN0YWF0dG51bSA9IDI7CisKK1NFTEVDVCBtb3N0X2NvbW1vbl92YWxzIEZST00gcGdf c3RhdHMKKyBXSEVSRSB0YWJsZW5hbWUgPSAndG1wMicgQU5EIGF0dG5hbWUgPSAnYic7CisKK1NF TEVDVCBDT1VOVCgqKSBGUk9NIHRtcDIgV0hFUkUgYiA9IDg7CitTRUxFQ1Qgcm93X2VzdGltYXRl KCdTRUxFQ1QgKiBGUk9NIHRtcDIgV0hFUkUgYiA9IDgnKTsKKworRFJPUCBUQUJMRSB0bXAyOwor CiAtLSBUZXN0IHZpZXcgY3JlYXRpb24KIENSRUFURSBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSB0 bXAxOwogU0VMRUNUICogRlJPTSB2OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c2FuaXR5X2NoZWNrLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nhbml0eV9jaGVjay5zcWwK aW5kZXggMTYyZTUzMjRiNWQuLmVkMDA5NmQ3ODIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zYW5pdHlfY2hlY2suc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nhbml0 eV9jaGVjay5zcWwKQEAgLTE5LDMgKzE5LDIzIEBAIFNFTEVDVCByZWxuYW1lLCByZWxraW5kCiAg IEZST00gcGdfY2xhc3MKICBXSEVSRSByZWxraW5kIElOICgndicsICdjJywgJ2YnLCAncCcsICdJ JykKICAgICAgICBBTkQgcmVsZmlsZW5vZGUgPD4gMDsKKworLS0gY2hlY2sgdGhhdCBwZ19zdGF0 aXN0aWMgYW5kIHBnX3RlbXBfc3RhdGlzdGljIGhhdmUgdGhlIGV4YWN0IHNhbWUgY29sdW1ucwor V0lUSCB0MSBBUyAoCisgIFNFTEVDVCBhdHRuYW1lLCBhdHR0eXBpZCwgYXR0bGVuLCBhdHRudW0s IGF0dHR5cG1vZCwgYXR0bmRpbXMsIGF0dGJ5dmFsLAorICAgICAgICAgYXR0YWxpZ24sIGF0dHN0 b3JhZ2UsIGF0dGNvbXByZXNzaW9uLCBhdHRub3RudWxsLCBhdHRoYXNkZWYsCisgICAgICAgICBh dHRoYXNtaXNzaW5nLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkLCBhdHRpc2Ryb3BwZWQsIGF0 dGlzbG9jYWwsCisgICAgICAgICBhdHRpbmhjb3VudCwgYXR0Y29sbGF0aW9uCisgICAgRlJPTSBw Z19hdHRyaWJ1dGUKKyAgIFdIRVJFIGF0dHJlbGlkID0gJ3BnX3N0YXRpc3RpYyc6OnJlZ2NsYXNz CispLCB0MiBBUyAoCisgIFNFTEVDVCBhdHRuYW1lLCBhdHR0eXBpZCwgYXR0bGVuLCBhdHRudW0s IGF0dHR5cG1vZCwgYXR0bmRpbXMsIGF0dGJ5dmFsLAorICAgICAgICAgYXR0YWxpZ24sIGF0dHN0 b3JhZ2UsIGF0dGNvbXByZXNzaW9uLCBhdHRub3RudWxsLCBhdHRoYXNkZWYsCisgICAgICAgICBh dHRoYXNtaXNzaW5nLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkLCBhdHRpc2Ryb3BwZWQsIGF0 dGlzbG9jYWwsCisgICAgICAgICBhdHRpbmhjb3VudCwgYXR0Y29sbGF0aW9uCisgICAgRlJPTSBw Z19hdHRyaWJ1dGUKKyAgIFdIRVJFIGF0dHJlbGlkID0gJ3BnX3RlbXBfc3RhdGlzdGljJzo6cmVn Y2xhc3MKKykKKyhTRUxFQ1QgKiBGUk9NIHQxIEVYQ0VQVCBTRUxFQ1QgKiBGUk9NIHQyKQorVU5J T04gQUxMCisoU0VMRUNUICogRlJPTSB0MiBFWENFUFQgU0VMRUNUICogRlJPTSB0MSk7Ci0tIAoy LjUxLjAKCg== --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0009-Add-pg_temp_statistic_ext_data-global-temporary-c.patch" Content-Disposition: attachment; filename="v7-0009-Add-pg_temp_statistic_ext_data-global-temporary-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr916c3m8 RnJvbSA5ZTBkZmI2ZTgzYWRhYWVmN2MyNjQ0ODdkNzhmZGI0ZWMzN2MzOGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogVGh1LCAxOCBKdW4gMjAyNiAyMzozODoxMiArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMDkvMTBdIEFkZCBwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YSBnbG9iYWwgdGVtcG9yYXJ5 CiBjYXRhbG9nIHRhYmxlLgoKVGhpcyBoYXMgdGhlIHNhbWUgY29sdW1ucyBhcyBwZ19zdGF0aXN0 aWNfZXh0X2RhdGEsIGJ1dCBpdCBpcyBhIGdsb2JhbAp0ZW1wb3JhcnkgdGFibGUsIGFuZCBpcyB1 c2VkIHRvIGhvbGQgZXh0ZW5kZWQgc3RhdGlzdGljcyBkYXRhIGZvcgpnbG9iYWwgdGVtcG9yYXJ5 IHRhYmxlcywgYWxsb3dpbmcgdGhlIGRhdGEgdG8gYmUgc2Vzc2lvbi1zcGVjaWZpYwp3aGlsZSB0 aGUgZXh0ZW5kZWQgc3RhdGlzdGljcyBvYmplY3QgZGVmaW5pdGlvbnMgcmVtYWluIGdsb2JhbC4K LS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAxNCAr KystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdGF0c2NtZHMuYyAgICAgICAgICAgICAgfCAyMSAr KysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgICAgICB8IDEz ICsrLS0KIHNyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMgICAgICAgICB8IDEx ICstLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jICAgICAgIHwgMjcg KysrKy0tLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0c19mdW5jcy5jIHwg NDggKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tY3YuYyAgICAgICAgICAg ICAgICAgIHwgMTMgKystLQogc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0LmMgICAg ICAgICAgIHwgMTAgKystCiBzcmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYyAgICAgICAg ICAgICAgfCAgNSArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAg ICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAg IHwgIDMgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAgICAgICB8 ICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmggICB8ICAz ICsKIC4uLi9jYXRhbG9nL3BnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLmggICAgICB8IDYyICsr KysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAg ICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3MuaCAgICAgICAg ICAgfCAgOCArLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0ICAg ICB8IDcxICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lk am9pbnMub3V0ICAgICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0ICAgICAgICAgICB8IDE5ICsrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0 eV9jaGVjay5vdXQgICAgfCAyNCArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9iYWxf dGVtcC5zcWwgICAgICAgICAgfCA0MSArKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv c2FuaXR5X2NoZWNrLnNxbCAgICAgICAgIHwgMjEgKysrKysrCiAyMiBmaWxlcyBjaGFuZ2VkLCAz NjUgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YS5oCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGVhYzEzYjYwN2U5Li4wN2IyZDdhMDAyNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMjg0LDYgKzI4NCwxMSBAQCBSRVZP S0UgQUxMIE9OIHBnX3N0YXRpc3RpYyBGUk9NIHB1YmxpYzsKIFJFVk9LRSBBTEwgT04gcGdfdGVt cF9zdGF0aXN0aWMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX2FsbF9zdGF0aXN0aWMg RlJPTSBwdWJsaWM7CiAKK0NSRUFURSBWSUVXIHBnX2FsbF9zdGF0aXN0aWNfZXh0X2RhdGEgQVMK KyAgICBTRUxFQ1QgKiBGUk9NIHBnX3N0YXRpc3RpY19leHRfZGF0YQorICAgIFVOSU9OIEFMTAor ICAgIFNFTEVDVCAqIEZST00gcGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGE7CisKIENSRUFURSBW SUVXIHBnX3N0YXRzX2V4dCBXSVRIIChzZWN1cml0eV9iYXJyaWVyKSBBUwogICAgIFNFTEVDVCBj bi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgICAgICAgIGMucmVsbmFtZSBBUyB0YWJsZW5h bWUsCkBAIC0zMDcsNyArMzEyLDcgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdHNfZXh0IFdJVEggKHNl Y3VyaXR5X2JhcnJpZXIpIEFTCiAgICAgICAgICAgIG0ubW9zdF9jb21tb25fZnJlcXMsCiAgICAg ICAgICAgIG0ubW9zdF9jb21tb25fYmFzZV9mcmVxcwogICAgIEZST00gcGdfc3RhdGlzdGljX2V4 dCBzIEpPSU4gcGdfY2xhc3MgYyBPTiAoYy5vaWQgPSBzLnN0eHJlbGlkKQotICAgICAgICAgSk9J TiBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgc2QgT04gKHMub2lkID0gc2Quc3R4b2lkKQorICAgICAg ICAgSk9JTiBwZ19hbGxfc3RhdGlzdGljX2V4dF9kYXRhIHNkIE9OIChzLm9pZCA9IHNkLnN0eG9p ZCkKICAgICAgICAgIExFRlQgSk9JTiBwZ19uYW1lc3BhY2UgY24gT04gKGNuLm9pZCA9IGMucmVs bmFtZXNwYWNlKQogICAgICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBzbiBPTiAoc24ub2lk ID0gcy5zdHhuYW1lc3BhY2UpCiAgICAgICAgICBMRUZUIEpPSU4gTEFURVJBTApAQCAtNDA0LDcg KzQwOSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRzX2V4dF9leHBycyBXSVRIIChzZWN1cml0eV9i YXJyaWVyKSBBUwogICAgICAgICAgICAgICAgV0hFTiAoc3RhdC5hKS5zdGFraW5kNSA9IDcgVEhF TiAoc3RhdC5hKS5zdGF2YWx1ZXM1CiAgICAgICAgICAgICAgICBFTkQpIEFTIHJhbmdlX2JvdW5k c19oaXN0b2dyYW0KICAgICBGUk9NIHBnX3N0YXRpc3RpY19leHQgcyBKT0lOIHBnX2NsYXNzIGMg T04gKGMub2lkID0gcy5zdHhyZWxpZCkKLSAgICAgICAgIExFRlQgSk9JTiBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEgc2QgT04gKHMub2lkID0gc2Quc3R4b2lkKQorICAgICAgICAgTEVGVCBKT0lOIHBn X2FsbF9zdGF0aXN0aWNfZXh0X2RhdGEgc2QgT04gKHMub2lkID0gc2Quc3R4b2lkKQogICAgICAg ICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBjbiBPTiAoY24ub2lkID0gYy5yZWxuYW1lc3BhY2Up CiAgICAgICAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIHNuIE9OIChzbi5vaWQgPSBzLnN0eG5h bWVzcGFjZSkKICAgICAgICAgIEpPSU4gTEFURVJBTCAoCkBAIC00MTQsOCArNDE5LDExIEBAIENS RUFURSBWSUVXIHBnX3N0YXRzX2V4dF9leHBycyBXSVRIIChzZWN1cml0eV9iYXJyaWVyKSBBUwog ICAgIFdIRVJFIHBnX2hhc19yb2xlKGMucmVsb3duZXIsICdVU0FHRScpCiAgICAgQU5EIChjLnJl bHJvd3NlY3VyaXR5ID0gZmFsc2UgT1IgTk9UIHJvd19zZWN1cml0eV9hY3RpdmUoYy5vaWQpKTsK IAotLS0gdW5wcml2aWxlZ2VkIHVzZXJzIG1heSByZWFkIHBnX3N0YXRpc3RpY19leHQgYnV0IG5v dCBwZ19zdGF0aXN0aWNfZXh0X2RhdGEKKy0tIHVucHJpdmlsZWdlZCB1c2VycyBtYXkgcmVhZCBw Z19zdGF0aXN0aWNfZXh0IGJ1dCBub3QgcGdfc3RhdGlzdGljX2V4dF9kYXRhLAorLS0gcGdfdGVt cF9zdGF0aXN0aWNfZXh0X2RhdGEsIG9yIHBnX2FsbF9zdGF0aXN0aWNfZXh0X2RhdGEKIFJFVk9L RSBBTEwgT04gcGdfc3RhdGlzdGljX2V4dF9kYXRhIEZST00gcHVibGljOworUkVWT0tFIEFMTCBP TiBwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YSBGUk9NIHB1YmxpYzsKK1JFVk9LRSBBTEwgT04g cGdfYWxsX3N0YXRpc3RpY19leHRfZGF0YSBGUk9NIHB1YmxpYzsKIAogQ1JFQVRFIFZJRVcgcGdf cHVibGljYXRpb25fdGFibGVzIEFTCiAgICAgU0VMRUNUCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdGF0c2NtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N0YXRzY21kcy5j CmluZGV4IGNlOThlYmIzNWVhLi4yYjdjNTYwOTVhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3RhdHNjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3RhdHNjbWRz LmMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfc3RhdGlzdGljX2V4dF9kYXRhLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX3N0YXRp c3RpY19leHRfZGF0YS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQuaCIKICNpbmNsdWRl ICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTc4OSwxNCAr NzkwLDI0IEBAIEFsdGVyU3RhdGlzdGljcyhBbHRlclN0YXRzU3RtdCAqc3RtdCkKICAqIGV4aXN0 cywgc28gZG9uJ3QgZXJyb3Igb3V0LgogICovCiB2b2lkCi1SZW1vdmVTdGF0aXN0aWNzRGF0YUJ5 SWQoT2lkIHN0YXRzT2lkLCBib29sIGluaCkKK1JlbW92ZVN0YXRpc3RpY3NEYXRhQnlJZChPaWQg cmVsaWQsIE9pZCBzdGF0c09pZCwgYm9vbCBpbmgpCiB7CiAJUmVsYXRpb24JcmVsYXRpb247CisJ U3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlSWQ7CiAJSGVhcFR1cGxlCXR1cDsKIAotCXJlbGF0aW9u ID0gdGFibGVfb3BlbihTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CisJaWYgKHJlbF9pc19nbG9iYWxfdGVtcChyZWxpZCkpCisJeworCQlyZWxhdGlvbiA9IHRh YmxlX29wZW4oVGVtcFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKKwkJY2FjaGVJZCA9IFRFTVBTVEFURVhUREFUQVNUWE9JRDsKKwl9CisJZWxzZQorCXsKKwkJ cmVsYXRpb24gPSB0YWJsZV9vcGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKwkJY2FjaGVJZCA9IFNUQVRFWFREQVRBU1RYT0lEOworCX0KIAotCXR1cCA9 IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNUWE9JRCwgT2JqZWN0SWRHZXREYXR1bShzdGF0 c09pZCksCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUyKGNhY2hlSWQsIE9iamVjdElkR2V0RGF0dW0o c3RhdHNPaWQpLAogCQkJCQkJICBCb29sR2V0RGF0dW0oaW5oKSk7CiAKIAkvKiBXZSBkb24ndCBr bm93IGlmIHRoZSBkYXRhIHJvdyBmb3IgaW5oIHZhbHVlIGV4aXN0cy4gKi8KQEAgLTg0NCw4ICs4 NTUsOCBAQCBSZW1vdmVTdGF0aXN0aWNzQnlJZChPaWQgc3RhdHNPaWQpCiAJICovCiAJcmVsID0g dGFibGVfb3BlbihyZWxpZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAotCVJlbW92ZVN0 YXRpc3RpY3NEYXRhQnlJZChzdGF0c09pZCwgdHJ1ZSk7Ci0JUmVtb3ZlU3RhdGlzdGljc0RhdGFC eUlkKHN0YXRzT2lkLCBmYWxzZSk7CisJUmVtb3ZlU3RhdGlzdGljc0RhdGFCeUlkKHJlbGlkLCBz dGF0c09pZCwgdHJ1ZSk7CisJUmVtb3ZlU3RhdGlzdGljc0RhdGFCeUlkKHJlbGlkLCBzdGF0c09p ZCwgZmFsc2UpOwogCiAJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVCeVJlbGlkKHJlbGlkKTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCmluZGV4IDdjNGJlMTc0ODY5Li4xYzcxYjFm Zjk2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYwpAQCAtMTY1MiwxNCArMTY1 MiwxNyBAQCBnZXRfcmVsYXRpb25fY29uc3RyYWludHMoUGxhbm5lckluZm8gKnJvb3QsCiAgKiBU aGUgcmVzdWx0IGlzIHN0b3JlZCBpbiBzdGFpbmZvcyBsaXN0LgogICovCiBzdGF0aWMgdm9pZAot Z2V0X3JlbGF0aW9uX3N0YXRpc3RpY3Nfd29ya2VyKExpc3QgKipzdGFpbmZvcywgUmVsT3B0SW5m byAqcmVsLAorZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3Nfd29ya2VyKE9pZCByZWxpZCwgTGlzdCAq KnN0YWluZm9zLCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJICAgT2lkIHN0YXRPaWQsIGJvb2wg aW5oLAogCQkJCQkJCSAgIEJpdG1hcHNldCAqa2V5cywgTGlzdCAqZXhwcnMpCiB7CisJU3lzQ2Fj aGVJZGVudGlmaWVyIGNhY2hlSWQ7CiAJRm9ybV9wZ19zdGF0aXN0aWNfZXh0X2RhdGEgZGF0YUZv cm07CiAJSGVhcFR1cGxlCWR0dXA7CiAKLQlkdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFRE QVRBU1RYT0lELAorCWNhY2hlSWQgPSByZWxfaXNfZ2xvYmFsX3RlbXAocmVsaWQpID8gVEVNUFNU QVRFWFREQVRBU1RYT0lEIDogU1RBVEVYVERBVEFTVFhPSUQ7CisKKwlkdHVwID0gU2VhcmNoU3lz Q2FjaGUyKGNhY2hlSWQsCiAJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHN0YXRPaWQpLCBCb29s R2V0RGF0dW0oaW5oKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGR0dXApKQogCQlyZXR1cm47 CkBAIC0xODI0LDkgKzE4MjcsMTEgQEAgZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3MoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAogCQkvKiBleHRyYWN0IHN0YXRpc3RpY3MgZm9y IHBvc3NpYmxlIHZhbHVlcyBvZiBzdHhkaW5oZXJpdCBmbGFnICovCiAKLQkJZ2V0X3JlbGF0aW9u X3N0YXRpc3RpY3Nfd29ya2VyKCZzdGFpbmZvcywgcmVsLCBzdGF0T2lkLCB0cnVlLCBrZXlzLCBl eHBycyk7CisJCWdldF9yZWxhdGlvbl9zdGF0aXN0aWNzX3dvcmtlcihSZWxhdGlvbkdldFJlbGlk KHJlbGF0aW9uKSwgJnN0YWluZm9zLAorCQkJCQkJCQkJICAgcmVsLCBzdGF0T2lkLCB0cnVlLCBr ZXlzLCBleHBycyk7CiAKLQkJZ2V0X3JlbGF0aW9uX3N0YXRpc3RpY3Nfd29ya2VyKCZzdGFpbmZv cywgcmVsLCBzdGF0T2lkLCBmYWxzZSwga2V5cywgZXhwcnMpOworCQlnZXRfcmVsYXRpb25fc3Rh dGlzdGljc193b3JrZXIoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbiksICZzdGFpbmZvcywKKwkJ CQkJCQkJCSAgIHJlbCwgc3RhdE9pZCwgZmFsc2UsIGtleXMsIGV4cHJzKTsKIAogCQlSZWxlYXNl U3lzQ2FjaGUoaHR1cCk7CiAJCWJtc19mcmVlKGtleXMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RhdGlzdGljcy9kZXBlbmRlbmNpZXMuYyBiL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZGVw ZW5kZW5jaWVzLmMKaW5kZXggOTVkY2MyMTg5NzguLjBkNzViOGQ3ODQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9zdGF0aXN0aWNzL2RlcGVuZGVuY2llcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0 YXRpc3RpY3MvZGVwZW5kZW5jaWVzLmMKQEAgLTY4NSwyMCArNjg1LDIzIEBAIGRlcGVuZGVuY3lf aXNfZnVsbHlfbWF0Y2hlZChNVkRlcGVuZGVuY3kgKmRlcGVuZGVuY3ksIEJpdG1hcHNldCAqYXR0 bnVtcykKICAqCQlMb2FkIHRoZSBmdW5jdGlvbmFsIGRlcGVuZGVuY2llcyBmb3IgdGhlIGluZGlj YXRlZCBwZ19zdGF0aXN0aWNfZXh0IHR1cGxlCiAgKi8KIE1WRGVwZW5kZW5jaWVzICoKLXN0YXRl eHRfZGVwZW5kZW5jaWVzX2xvYWQoT2lkIG12b2lkLCBib29sIGluaCkKK3N0YXRleHRfZGVwZW5k ZW5jaWVzX2xvYWQoT2lkIHJlbGlkLCBPaWQgbXZvaWQsIGJvb2wgaW5oKQogeworCVN5c0NhY2hl SWRlbnRpZmllciBjYWNoZUlkOwogCU1WRGVwZW5kZW5jaWVzICpyZXN1bHQ7CiAJYm9vbAkJaXNu dWxsOwogCURhdHVtCQlkZXBzOwogCUhlYXBUdXBsZQlodHVwOwogCi0JaHR1cCA9IFNlYXJjaFN5 c0NhY2hlMihTVEFURVhUREFUQVNUWE9JRCwKKwljYWNoZUlkID0gcmVsX2lzX2dsb2JhbF90ZW1w KHJlbGlkKSA/IFRFTVBTVEFURVhUREFUQVNUWE9JRCA6IFNUQVRFWFREQVRBU1RYT0lEOworCisJ aHR1cCA9IFNlYXJjaFN5c0NhY2hlMihjYWNoZUlkLAogCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShtdm9pZCksCiAJCQkJCQkgICBCb29sR2V0RGF0dW0oaW5oKSk7CiAJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igc3Rh dGlzdGljcyBvYmplY3QgJXUiLCBtdm9pZCk7CiAKLQlkZXBzID0gU3lzQ2FjaGVHZXRBdHRyKFNU QVRFWFREQVRBU1RYT0lELCBodHVwLAorCWRlcHMgPSBTeXNDYWNoZUdldEF0dHIoY2FjaGVJZCwg aHR1cCwKIAkJCQkJCSAgIEFudW1fcGdfc3RhdGlzdGljX2V4dF9kYXRhX3N0eGRkZXBlbmRlbmNp ZXMsICZpc251bGwpOwogCWlmIChpc251bGwpCiAJCWVsb2coRVJST1IsCkBAIC0xNjA4LDcgKzE2 MTEsNyBAQCBkZXBlbmRlbmNpZXNfY2xhdXNlbGlzdF9zZWxlY3Rpdml0eShQbGFubmVySW5mbyAq cm9vdCwKIAkJaWYgKG5tYXRjaGVkICsgbmV4cHJzIDwgMikKIAkJCWNvbnRpbnVlOwogCi0JCWRl cHMgPSBzdGF0ZXh0X2RlcGVuZGVuY2llc19sb2FkKHN0YXQtPnN0YXRPaWQsIHJ0ZS0+aW5oKTsK KwkJZGVwcyA9IHN0YXRleHRfZGVwZW5kZW5jaWVzX2xvYWQocnRlLT5yZWxpZCwgc3RhdC0+c3Rh dE9pZCwgcnRlLT5pbmgpOwogCiAJCS8qCiAJCSAqIFRoZSBleHByZXNzaW9ucyBtYXkgYmUgcmVw cmVzZW50ZWQgYnkgZGlmZmVyZW50IGF0dG51bXMgaW4gdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNz L2V4dGVuZGVkX3N0YXRzLmMKaW5kZXggMmI4MzM1NWQyNmUuLjBjNTJiYzA4M2Y2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVuZGVkX3N0YXRzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RhdGlzdGljcy9leHRlbmRlZF9zdGF0cy5jCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGlj X2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmgiCisjaW5j bHVkZSAiY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTc3LDcgKzc4LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg U3RhdEV4dEVudHJ5CiBzdGF0aWMgTGlzdCAqZmV0Y2hfc3RhdGVudHJpZXNfZm9yX3JlbGF0aW9u KFJlbGF0aW9uIHBnX3N0YXRleHQsIFJlbGF0aW9uIHJlbCk7CiBzdGF0aWMgVmFjQXR0clN0YXRz ICoqbG9va3VwX3Zhcl9hdHRyX3N0YXRzKEJpdG1hcHNldCAqYXR0cnMsIExpc3QgKmV4cHJzLAog CQkJCQkJCQkJCQlpbnQgbnZhY2F0dHMsIFZhY0F0dHJTdGF0cyAqKnZhY2F0dHMpOwotc3RhdGlj IHZvaWQgc3RhdGV4dF9zdG9yZShPaWQgc3RhdE9pZCwgYm9vbCBpbmgsCitzdGF0aWMgdm9pZCBz dGF0ZXh0X3N0b3JlKE9pZCByZWxpZCwgT2lkIHN0YXRPaWQsIGJvb2wgaW5oLAogCQkJCQkJICBN Vk5EaXN0aW5jdCAqbmRpc3RpbmN0LCBNVkRlcGVuZGVuY2llcyAqZGVwZW5kZW5jaWVzLAogCQkJ CQkJICBNQ1ZMaXN0ICptY3YsIERhdHVtIGV4cHJzLCBWYWNBdHRyU3RhdHMgKipzdGF0cyk7CiBz dGF0aWMgaW50CXN0YXRleHRfY29tcHV0ZV9zdGF0dGFyZ2V0KGludCBzdGF0dGFyZ2V0LApAQCAt MjI3LDcgKzIyOCw3IEBAIEJ1aWxkUmVsYXRpb25FeHRTdGF0aXN0aWNzKFJlbGF0aW9uIG9uZXJl bCwgYm9vbCBpbmgsIGRvdWJsZSB0b3RhbHJvd3MsCiAJCX0KIAogCQkvKiBzdG9yZSB0aGUgc3Rh dGlzdGljcyBpbiB0aGUgY2F0YWxvZyAqLwotCQlzdGF0ZXh0X3N0b3JlKHN0YXQtPnN0YXRPaWQs IGluaCwKKwkJc3RhdGV4dF9zdG9yZShSZWxhdGlvbkdldFJlbGlkKG9uZXJlbCksIHN0YXQtPnN0 YXRPaWQsIGluaCwKIAkJCQkJICBuZGlzdGluY3QsIGRlcGVuZGVuY2llcywgbWN2LCBleHByc3Rh dHMsIHN0YXRzKTsKIAogCQkvKiBmb3IgcmVwb3J0aW5nIHByb2dyZXNzICovCkBAIC04MDUsNyAr ODA2LDcgQEAgbG9va3VwX3Zhcl9hdHRyX3N0YXRzKEJpdG1hcHNldCAqYXR0cnMsIExpc3QgKmV4 cHJzLAogICoJdHVwbGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1zdGF0ZXh0X3N0b3JlKE9pZCBzdGF0 T2lkLCBib29sIGluaCwKK3N0YXRleHRfc3RvcmUoT2lkIHJlbGlkLCBPaWQgc3RhdE9pZCwgYm9v bCBpbmgsCiAJCQkgIE1WTkRpc3RpbmN0ICpuZGlzdGluY3QsIE1WRGVwZW5kZW5jaWVzICpkZXBl bmRlbmNpZXMsCiAJCQkgIE1DVkxpc3QgKm1jdiwgRGF0dW0gZXhwcnMsIFZhY0F0dHJTdGF0cyAq KnN0YXRzKQogewpAQCAtODE0LDcgKzgxNSwxMiBAQCBzdGF0ZXh0X3N0b3JlKE9pZCBzdGF0T2lk LCBib29sIGluaCwKIAlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N0YXRpc3RpY19leHRfZGF0YV07 CiAJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3RhdGlzdGljX2V4dF9kYXRhXTsKIAotCXBnX3N0ZXh0 ZGF0YSA9IHRhYmxlX29wZW4oU3RhdGlzdGljRXh0RGF0YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCWlmIChyZWxfaXNfZ2xvYmFsX3RlbXAocmVsaWQpKQorCQlwZ19zdGV4dGRhdGEg PSB0YWJsZV9vcGVuKFRlbXBTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25JZCwKKwkJCQkJCQkJICBS b3dFeGNsdXNpdmVMb2NrKTsKKwllbHNlCisJCXBnX3N0ZXh0ZGF0YSA9IHRhYmxlX29wZW4oU3Rh dGlzdGljRXh0RGF0YVJlbGF0aW9uSWQsCisJCQkJCQkJCSAgUm93RXhjbHVzaXZlTG9jayk7CiAK IAltZW1zZXQobnVsbHMsIHRydWUsIHNpemVvZihudWxscykpOwogCW1lbXNldCh2YWx1ZXMsIDAs IHNpemVvZih2YWx1ZXMpKTsKQEAgLTg2Miw3ICs4NjgsNyBAQCBzdGF0ZXh0X3N0b3JlKE9pZCBz dGF0T2lkLCBib29sIGluaCwKIAkgKiBEZWxldGUgdGhlIG9sZCB0dXBsZSBpZiBpdCBleGlzdHMs IGFuZCBpbnNlcnQgYSBuZXcgb25lLiBJdCdzIGVhc2llcgogCSAqIHRoYW4gdHJ5aW5nIHRvIHVw ZGF0ZSBvciBpbnNlcnQsIGJhc2VkIG9uIHZhcmlvdXMgY29uZGl0aW9ucy4KIAkgKi8KLQlSZW1v dmVTdGF0aXN0aWNzRGF0YUJ5SWQoc3RhdE9pZCwgaW5oKTsKKwlSZW1vdmVTdGF0aXN0aWNzRGF0 YUJ5SWQocmVsaWQsIHN0YXRPaWQsIGluaCk7CiAKIAkvKiBmb3JtIGFuZCBpbnNlcnQgYSBuZXcg dHVwbGUgKi8KIAlzdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocGdfc3Rl eHRkYXRhKSwgdmFsdWVzLCBudWxscyk7CkBAIC0xODkxLDcgKzE4OTcsNyBAQCBzdGF0ZXh0X21j dl9jbGF1c2VsaXN0X3NlbGVjdGl2aXR5KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbGF1c2Vz LCBpbnQgdmFyUmVsaQogCQkJTUNWTGlzdCAgICAqbWN2X2xpc3Q7CiAKIAkJCS8qIExvYWQgdGhl IE1DViBsaXN0IHN0b3JlZCBpbiB0aGUgc3RhdGlzdGljcyBvYmplY3QgKi8KLQkJCW1jdl9saXN0 ID0gc3RhdGV4dF9tY3ZfbG9hZChzdGF0LT5zdGF0T2lkLCBydGUtPmluaCk7CisJCQltY3ZfbGlz dCA9IHN0YXRleHRfbWN2X2xvYWQocnRlLT5yZWxpZCwgc3RhdC0+c3RhdE9pZCwgcnRlLT5pbmgp OwogCiAJCQkvKgogCQkJICogQ29tcHV0ZSB0aGUgc2VsZWN0aXZpdHkgb2YgdGhlIE9SZWQgbGlz dCBvZiBjbGF1c2VzIGNvdmVyZWQgYnkKQEAgLTI0NTAsOCArMjQ1Niw5IEBAIHNlcmlhbGl6ZV9l eHByX3N0YXRzKEFubEV4cHJEYXRhICpleHByZGF0YSwgaW50IG5leHBycykKICAqIGRhdGEgdG8g dXNlLgogICovCiBIZWFwVHVwbGUKLXN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgc3R4b2lk LCBib29sIGluaCwgaW50IGlkeCkKK3N0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgcmVsaWQs IE9pZCBzdHhvaWQsIGJvb2wgaW5oLCBpbnQgaWR4KQogeworCVN5c0NhY2hlSWRlbnRpZmllciBj YWNoZUlkOwogCWJvb2wJCWlzbnVsbDsKIAlEYXR1bQkJdmFsdWU7CiAJSGVhcFR1cGxlCWh0dXA7 CkBAIC0yNDYwLDEyICsyNDY3LDE0IEBAIHN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgc3R4 b2lkLCBib29sIGluaCwgaW50IGlkeCkKIAlIZWFwVHVwbGVEYXRhIHRtcHR1cDsKIAlIZWFwVHVw bGUJdHVwOwogCi0JaHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNUWE9JRCwKKwlj YWNoZUlkID0gcmVsX2lzX2dsb2JhbF90ZW1wKHJlbGlkKSA/IFRFTVBTVEFURVhUREFUQVNUWE9J RCA6IFNUQVRFWFREQVRBU1RYT0lEOworCisJaHR1cCA9IFNlYXJjaFN5c0NhY2hlMihjYWNoZUlk LAogCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShzdHhvaWQpLCBCb29sR2V0RGF0dW0oaW5oKSk7 CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGh0dXApKQogCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3Igc3RhdGlzdGljcyBvYmplY3QgJXUiLCBzdHhvaWQpOwogCi0JdmFsdWUg PSBTeXNDYWNoZUdldEF0dHIoU1RBVEVYVERBVEFTVFhPSUQsIGh0dXAsCisJdmFsdWUgPSBTeXND YWNoZUdldEF0dHIoY2FjaGVJZCwgaHR1cCwKIAkJCQkJCQlBbnVtX3BnX3N0YXRpc3RpY19leHRf ZGF0YV9zdHhkZXhwciwgJmlzbnVsbCk7CiAJaWYgKGlzbnVsbCkKIAkJZWxvZyhFUlJPUiwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfZnVuY3MuYyBi L3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvZXh0ZW5kZWRfc3RhdHNfZnVuY3MuYwppbmRleCBhNWRj ZThhMjIwNi4uYjBhMzgwMWEyMzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0YXRpc3RpY3Mv ZXh0ZW5kZWRfc3RhdHNfZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL2V4dGVu ZGVkX3N0YXRzX2Z1bmNzLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3Bn X29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0X2RhdGEuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgi CkBAIC0xMjUsNyArMTI2LDcgQEAgc3RhdGljIGJvb2wgZXh0ZW5kZWRfc3RhdGlzdGljc191cGRh dGUoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8pOwogCiBzdGF0aWMgSGVhcFR1cGxlIGdldF9wZ19z dGF0aXN0aWNfZXh0KFJlbGF0aW9uIHBnX3N0ZXh0LCBPaWQgbnNwb2lkLAogCQkJCQkJCQkJICBj b25zdCBjaGFyICpzdHhuYW1lKTsKLXN0YXRpYyBib29sIGRlbGV0ZV9wZ19zdGF0aXN0aWNfZXh0 X2RhdGEoT2lkIHN0eG9pZCwgYm9vbCBpbmhlcml0ZWQpOworc3RhdGljIGJvb2wgZGVsZXRlX3Bn X3N0YXRpc3RpY19leHRfZGF0YShPaWQgcmVsaWQsIE9pZCBzdHhvaWQsIGJvb2wgaW5oZXJpdGVk KTsKIAogLyoKICAqIFRyYWNrIHRoZSBleHRlbmRlZCBzdGF0aXN0aWNzIGtpbmRzIGV4cGVjdGVk IGZvciBhIHBnX3N0YXRpc3RpY19leHQKQEAgLTE0MCw3ICsxNDEsOCBAQCB0eXBlZGVmIHN0cnVj dAogfSBTdGFraW5kRmxhZ3M7CiAKIHN0YXRpYyB2b2lkIGV4cGFuZF9zdHhraW5kKEhlYXBUdXBs ZSB0dXAsIFN0YWtpbmRGbGFncyAqZW5hYmxlZCk7Ci1zdGF0aWMgdm9pZCB1cHNlcnRfcGdfc3Rh dGlzdGljX2V4dF9kYXRhKGNvbnN0IERhdHVtICp2YWx1ZXMsCitzdGF0aWMgdm9pZCB1cHNlcnRf cGdfc3RhdGlzdGljX2V4dF9kYXRhKE9pZCByZWxpZCwKKwkJCQkJCQkJCQkgY29uc3QgRGF0dW0g KnZhbHVlcywKIAkJCQkJCQkJCQkgY29uc3QgYm9vbCAqbnVsbHMsCiAJCQkJCQkJCQkJIGNvbnN0 IGJvb2wgKnJlcGxhY2VzKTsKIApAQCAtMjY1LDE2ICsyNjcsMjggQEAgZXhwYW5kX3N0eGtpbmQo SGVhcFR1cGxlIHR1cCwgU3Rha2luZEZsYWdzICplbmFibGVkKQogICogUGVyZm9ybSB0aGUgYWN0 dWFsIHN0b3JhZ2Ugb2YgYSBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgdHVwbGUuCiAgKi8KIHN0YXRp YyB2b2lkCi11cHNlcnRfcGdfc3RhdGlzdGljX2V4dF9kYXRhKGNvbnN0IERhdHVtICp2YWx1ZXMs IGNvbnN0IGJvb2wgKm51bGxzLAotCQkJCQkJCSBjb25zdCBib29sICpyZXBsYWNlcykKK3Vwc2Vy dF9wZ19zdGF0aXN0aWNfZXh0X2RhdGEoT2lkIHJlbGlkLCBjb25zdCBEYXR1bSAqdmFsdWVzLAor CQkJCQkJCSBjb25zdCBib29sICpudWxscywgY29uc3QgYm9vbCAqcmVwbGFjZXMpCiB7CiAJUmVs YXRpb24JcGdfc3RleHRkYXRhOworCVN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkOwogCUhlYXBU dXBsZQlzdHhkdHVwOwogCUhlYXBUdXBsZQluZXd0dXA7CiAKLQlwZ19zdGV4dGRhdGEgPSB0YWJs ZV9vcGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwlp ZiAocmVsX2lzX2dsb2JhbF90ZW1wKHJlbGlkKSkKKwl7CisJCXBnX3N0ZXh0ZGF0YSA9IHRhYmxl X29wZW4oVGVtcFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkLAorCQkJCQkJCQkgIFJvd0V4Y2x1 c2l2ZUxvY2spOworCQljYWNoZUlkID0gVEVNUFNUQVRFWFREQVRBU1RYT0lEOworCX0KKwllbHNl CisJeworCQlwZ19zdGV4dGRhdGEgPSB0YWJsZV9vcGVuKFN0YXRpc3RpY0V4dERhdGFSZWxhdGlv bklkLAorCQkJCQkJCQkgIFJvd0V4Y2x1c2l2ZUxvY2spOworCQljYWNoZUlkID0gU1RBVEVYVERB VEFTVFhPSUQ7CisJfQogCi0Jc3R4ZHR1cCA9IFNlYXJjaFN5c0NhY2hlMihTVEFURVhUREFUQVNU WE9JRCwKKwlzdHhkdHVwID0gU2VhcmNoU3lzQ2FjaGUyKGNhY2hlSWQsCiAJCQkJCQkJICB2YWx1 ZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4b2lkIC0gMV0sCiAJCQkJCQkJICB2YWx1 ZXNbQW51bV9wZ19zdGF0aXN0aWNfZXh0X2RhdGFfc3R4ZGluaGVyaXQgLSAxXSk7CiAKQEAgLTc0 OSw3ICs3NjMsNyBAQCBleHRlbmRlZF9zdGF0aXN0aWNzX3VwZGF0ZShGdW5jdGlvbkNhbGxJbmZv IGZjaW5mbykKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAl9CiAKLQl1cHNlcnRfcGdfc3RhdGlzdGlj X2V4dF9kYXRhKHZhbHVlcywgbnVsbHMsIHJlcGxhY2VzKTsKKwl1cHNlcnRfcGdfc3RhdGlzdGlj X2V4dF9kYXRhKHJlbGlkLCB2YWx1ZXMsIG51bGxzLCByZXBsYWNlcyk7CiAKIGNsZWFudXA6CiAJ aWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwKSkKQEAgLTE2ODksMTQgKzE3MDMsMjYgQEAgZXhwcnNf ZXJyb3I6CiAgKiByb3cgYW5kICJpbmhlcml0ZWQiIHBhaXIuCiAgKi8KIHN0YXRpYyBib29sCi1k ZWxldGVfcGdfc3RhdGlzdGljX2V4dF9kYXRhKE9pZCBzdHhvaWQsIGJvb2wgaW5oZXJpdGVkKQor ZGVsZXRlX3BnX3N0YXRpc3RpY19leHRfZGF0YShPaWQgcmVsaWQsIE9pZCBzdHhvaWQsIGJvb2wg aW5oZXJpdGVkKQogewotCVJlbGF0aW9uCXNlZCA9IHRhYmxlX29wZW4oU3RhdGlzdGljRXh0RGF0 YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVJlbGF0aW9uCXNlZDsKKwlTeXNDYWNo ZUlkZW50aWZpZXIgY2FjaGVJZDsKIAlIZWFwVHVwbGUJb2xkdHVwOwogCWJvb2wJCXJlc3VsdCA9 IGZhbHNlOwogCisJaWYgKHJlbF9pc19nbG9iYWxfdGVtcChyZWxpZCkpCisJeworCQlzZWQgPSB0 YWJsZV9vcGVuKFRlbXBTdGF0aXN0aWNFeHREYXRhUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9j ayk7CisJCWNhY2hlSWQgPSBURU1QU1RBVEVYVERBVEFTVFhPSUQ7CisJfQorCWVsc2UKKwl7CisJ CXNlZCA9IHRhYmxlX29wZW4oU3RhdGlzdGljRXh0RGF0YVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCQljYWNoZUlkID0gU1RBVEVYVERBVEFTVFhPSUQ7CisJfQorCiAJLyogSXMgdGhl cmUgYWxyZWFkeSBhIHBnX3N0YXRpc3RpY19leHRfZGF0YSB0dXBsZSBmb3IgdGhpcyBhdHRyaWJ1 dGU/ICovCi0Jb2xkdHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELAorCW9s ZHR1cCA9IFNlYXJjaFN5c0NhY2hlMihjYWNoZUlkLAogCQkJCQkJCSBPYmplY3RJZEdldERhdHVt KHN0eG9pZCksCiAJCQkJCQkJIEJvb2xHZXREYXR1bShpbmhlcml0ZWQpKTsKIApAQCAtMTgzMSw3 ICsxODU3LDcgQEAgcGdfY2xlYXJfZXh0ZW5kZWRfc3RhdHMoUEdfRlVOQ1RJT05fQVJHUykKIAkJ UEdfUkVUVVJOX1ZPSUQoKTsKIAl9CiAKLQlkZWxldGVfcGdfc3RhdGlzdGljX2V4dF9kYXRhKHN0 eGZvcm0tPm9pZCwgaW5oZXJpdGVkKTsKKwlkZWxldGVfcGdfc3RhdGlzdGljX2V4dF9kYXRhKHJl bGlkLCBzdHhmb3JtLT5vaWQsIGluaGVyaXRlZCk7CiAJaGVhcF9mcmVldHVwbGUodHVwKTsKIAog CXRhYmxlX2Nsb3NlKHBnX3N0ZXh0LCBSb3dFeGNsdXNpdmVMb2NrKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0YXRpc3RpY3MvbWN2LmMgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5j CmluZGV4IDBiN2RhNjA1YTRjLi5mNzdiMDZjYTlkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RhdGlzdGljcy9tY3YuYworKysgYi9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL21jdi5jCkBAIC01 NTMsMTggKzU1MywyMSBAQCBidWlsZF9jb2x1bW5fZnJlcXVlbmNpZXMoU29ydEl0ZW0gKmdyb3Vw cywgaW50IG5ncm91cHMsCiAgKgkJTG9hZCB0aGUgTUNWIGxpc3QgZm9yIHRoZSBpbmRpY2F0ZWQg cGdfc3RhdGlzdGljX2V4dF9kYXRhIHR1cGxlLgogICovCiBNQ1ZMaXN0ICoKLXN0YXRleHRfbWN2 X2xvYWQoT2lkIG12b2lkLCBib29sIGluaCkKK3N0YXRleHRfbWN2X2xvYWQoT2lkIHJlbGlkLCBP aWQgbXZvaWQsIGJvb2wgaW5oKQogeworCVN5c0NhY2hlSWRlbnRpZmllciBjYWNoZUlkOwogCU1D Vkxpc3QgICAgKnJlc3VsdDsKIAlib29sCQlpc251bGw7CiAJRGF0dW0JCW1jdmxpc3Q7Ci0JSGVh cFR1cGxlCWh0dXAgPSBTZWFyY2hTeXNDYWNoZTIoU1RBVEVYVERBVEFTVFhPSUQsCi0JCQkJCQkJ CQkgICBPYmplY3RJZEdldERhdHVtKG12b2lkKSwgQm9vbEdldERhdHVtKGluaCkpOworCUhlYXBU dXBsZQlodHVwOwogCisJY2FjaGVJZCA9IHJlbF9pc19nbG9iYWxfdGVtcChyZWxpZCkgPyBURU1Q U1RBVEVYVERBVEFTVFhPSUQgOiBTVEFURVhUREFUQVNUWE9JRDsKKworCWh0dXAgPSBTZWFyY2hT eXNDYWNoZTIoY2FjaGVJZCwgT2JqZWN0SWRHZXREYXR1bShtdm9pZCksIEJvb2xHZXREYXR1bShp bmgpKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaHR1cCkpCiAJCWVsb2coRVJST1IsICJjYWNo ZSBsb29rdXAgZmFpbGVkIGZvciBzdGF0aXN0aWNzIG9iamVjdCAldSIsIG12b2lkKTsKIAotCW1j dmxpc3QgPSBTeXNDYWNoZUdldEF0dHIoU1RBVEVYVERBVEFTVFhPSUQsIGh0dXAsCisJbWN2bGlz dCA9IFN5c0NhY2hlR2V0QXR0cihjYWNoZUlkLCBodHVwLAogCQkJCQkJCSAgQW51bV9wZ19zdGF0 aXN0aWNfZXh0X2RhdGFfc3R4ZG1jdiwgJmlzbnVsbCk7CiAKIAlpZiAoaXNudWxsKQpAQCAtMjA1 OCw3ICsyMDYxLDcgQEAgbWN2X2NsYXVzZWxpc3Rfc2VsZWN0aXZpdHkoUGxhbm5lckluZm8gKnJv b3QsIFN0YXRpc3RpY0V4dEluZm8gKnN0YXQsCiAJYm9vbAkgICAqbWF0Y2hlcyA9IE5VTEw7CiAK IAkvKiBsb2FkIHRoZSBNQ1YgbGlzdCBzdG9yZWQgaW4gdGhlIHN0YXRpc3RpY3Mgb2JqZWN0ICov Ci0JbWN2ID0gc3RhdGV4dF9tY3ZfbG9hZChzdGF0LT5zdGF0T2lkLCBydGUtPmluaCk7CisJbWN2 ID0gc3RhdGV4dF9tY3ZfbG9hZChydGUtPnJlbGlkLCBzdGF0LT5zdGF0T2lkLCBydGUtPmluaCk7 CiAKIAkvKiBidWlsZCBhIG1hdGNoIGJpdG1hcCBmb3IgdGhlIGNsYXVzZXMgKi8KIAltYXRjaGVz ID0gbWN2X2dldF9tYXRjaF9iaXRtYXAocm9vdCwgY2xhdXNlcywgc3RhdC0+a2V5cywgc3RhdC0+ ZXhwcnMsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdGF0aXN0aWNzL212ZGlzdGluY3QuYyBi L3NyYy9iYWNrZW5kL3N0YXRpc3RpY3MvbXZkaXN0aW5jdC5jCmluZGV4IDRmOGY1NzhhMjJmLi5k MzIxZWYxMGJhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0 LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RhdGlzdGljcy9tdmRpc3RpbmN0LmMKQEAgLTI4LDYgKzI4 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3MvZXh0 ZW5kZWRfc3RhdHNfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNp bmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAj aW5jbHVkZSAidmFyYXR0LmgiCkBAIC0xNDIsMTkgKzE0MywyMiBAQCBzdGF0ZXh0X25kaXN0aW5j dF9idWlsZChkb3VibGUgdG90YWxyb3dzLCBTdGF0c0J1aWxkRGF0YSAqZGF0YSkKICAqCQlMb2Fk IHRoZSBuZGlzdGluY3QgdmFsdWUgZm9yIHRoZSBpbmRpY2F0ZWQgcGdfc3RhdGlzdGljX2V4dCB0 dXBsZQogICovCiBNVk5EaXN0aW5jdCAqCi1zdGF0ZXh0X25kaXN0aW5jdF9sb2FkKE9pZCBtdm9p ZCwgYm9vbCBpbmgpCitzdGF0ZXh0X25kaXN0aW5jdF9sb2FkKE9pZCByZWxpZCwgT2lkIG12b2lk LCBib29sIGluaCkKIHsKKwlTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVJZDsKIAlNVk5EaXN0aW5j dCAqcmVzdWx0OwogCWJvb2wJCWlzbnVsbDsKIAlEYXR1bQkJbmRpc3Q7CiAJSGVhcFR1cGxlCWh0 dXA7CiAKLQlodHVwID0gU2VhcmNoU3lzQ2FjaGUyKFNUQVRFWFREQVRBU1RYT0lELAorCWNhY2hl SWQgPSByZWxfaXNfZ2xvYmFsX3RlbXAocmVsaWQpID8gVEVNUFNUQVRFWFREQVRBU1RYT0lEIDog U1RBVEVYVERBVEFTVFhPSUQ7CisKKwlodHVwID0gU2VhcmNoU3lzQ2FjaGUyKGNhY2hlSWQsCiAJ CQkJCQkgICBPYmplY3RJZEdldERhdHVtKG12b2lkKSwgQm9vbEdldERhdHVtKGluaCkpOwogCWlm ICghSGVhcFR1cGxlSXNWYWxpZChodHVwKSkKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBm YWlsZWQgZm9yIHN0YXRpc3RpY3Mgb2JqZWN0ICV1IiwgbXZvaWQpOwogCi0JbmRpc3QgPSBTeXND YWNoZUdldEF0dHIoU1RBVEVYVERBVEFTVFhPSUQsIGh0dXAsCisJbmRpc3QgPSBTeXNDYWNoZUdl dEF0dHIoY2FjaGVJZCwgaHR1cCwKIAkJCQkJCQlBbnVtX3BnX3N0YXRpc3RpY19leHRfZGF0YV9z dHhkbmRpc3RpbmN0LCAmaXNudWxsKTsKIAlpZiAoaXNudWxsKQogCQllbG9nKEVSUk9SLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvc2VsZnVuY3MuYwppbmRleCA4MmJlNmE0ZDJhZi4uNjkyYzZmYWRiZTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC00Njc3LDcgKzQ2NzcsNyBAQCBlc3RpbWF0ZV9tdWx0 aXZhcmlhdGVfbmRpc3RpbmN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAK IAlBc3NlcnQobm1hdGNoZXNfdmFycyArIG5tYXRjaGVzX2V4cHJzID4gMSk7CiAKLQlzdGF0cyA9 IHN0YXRleHRfbmRpc3RpbmN0X2xvYWQoc3RhdE9pZCwgcnRlLT5pbmgpOworCXN0YXRzID0gc3Rh dGV4dF9uZGlzdGluY3RfbG9hZChydGUtPnJlbGlkLCBzdGF0T2lkLCBydGUtPmluaCk7CiAKIAkv KgogCSAqIElmIHdlIGhhdmUgYSBtYXRjaCwgc2VhcmNoIGl0IGZvciB0aGUgc3BlY2lmaWMgaXRl bSB0aGF0IG1hdGNoZXMgKHRoZXJlCkBAIC01OTM3LDcgKzU5MzcsOCBAQCBleGFtaW5lX3Zhcmlh YmxlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpub2RlLCBpbnQgdmFyUmVsaWQsCiAJCQkJCSAq IE5vdyB3ZSBqdXN0IGNyZWF0ZSBhIG5ldyBjb3B5IGV2ZXJ5IHRpbWUuCiAJCQkJCSAqLwogCQkJ CQl2YXJkYXRhLT5zdGF0c1R1cGxlID0KLQkJCQkJCXN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChp bmZvLT5zdGF0T2lkLCBydGUtPmluaCwgcG9zKTsKKwkJCQkJCXN0YXRleHRfZXhwcmVzc2lvbnNf bG9hZChydGUtPnJlbGlkLCBpbmZvLT5zdGF0T2lkLAorCQkJCQkJCQkJCQkJIHJ0ZS0+aW5oLCBw b3MpOwogCiAJCQkJCS8qIE5vdGhpbmcgdG8gcmVsZWFzZSBpZiBubyBkYXRhIGZvdW5kICovCiAJ CQkJCWlmICh2YXJkYXRhLT5zdGF0c1R1cGxlICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwppbmRleCBiMTQ0ZDA2MzliOC4uN2VhMDhjMjQyOGYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYwpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFi bGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfdGVtcF9zdGF0aXN0aWMuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3RlbXBf c3RhdGlzdGljX2V4dF9kYXRhLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zY2hlbWFwZy5o IgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZSBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggNmFlYzAzYWRkMjIuLmY2MGE2NDU0ZGYyIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvTWFrZWZpbGUKQEAgLTg4LDcgKzg4LDggQEAgQ0FUQUxPR19IRUFERVJTIDo9IFwKIAlwZ19w cm9wZ3JhcGhfbGFiZWxfcHJvcGVydHkuaCBcCiAJcGdfcHJvcGdyYXBoX3Byb3BlcnR5LmggXAog CXBnX3RlbXBfY2xhc3MuaCBcCi0JcGdfdGVtcF9zdGF0aXN0aWMuaAorCXBnX3RlbXBfc3RhdGlz dGljLmggXAorCXBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLmgKIAogR0VORVJBVEVEX0hFQURF UlMgOj0gJChDQVRBTE9HX0hFQURFUlM6JS5oPSVfZC5oKQogCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWls ZAppbmRleCBkYjgwOWM0YjNjMC4uNzU5OTczMWRlN2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvbWVzb24uYnVpbGQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWls ZApAQCAtNzYsNiArNzYsNyBAQCBjYXRhbG9nX2hlYWRlcnMgPSBbCiAgICdwZ19wcm9wZ3JhcGhf cHJvcGVydHkuaCcsCiAgICdwZ190ZW1wX2NsYXNzLmgnLAogICAncGdfdGVtcF9zdGF0aXN0aWMu aCcsCisgICdwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YS5oJywKIF0KIAogIyBUaGUgLmRhdCBm aWxlcyB3ZSBuZWVkIGNhbiBqdXN0IGJlIGxpc3RlZCBhbHBoYWJldGljYWxseS4KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3RhdGlzdGljX2V4dF9kYXRhLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0YS5oCmluZGV4IGRiYzRhY2M3ZDFhLi5l M2E2ZmRhMDAzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdGF0aXN0aWNf ZXh0X2RhdGEuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N0YXRpc3RpY19leHRfZGF0 YS5oCkBAIC0zMCw2ICszMCw5IEBACiAgKi8KIEJFR0lOX0NBVEFMT0dfU1RSVUNUCiAKKy8qCisg KiBOQjogQW55IGNoYW5nZXMgbWFkZSBoZXJlIG11c3QgYmUgcmVmbGVjdGVkIGluIHBnX3RlbXBf c3RhdGlzdGljX2V4dF9kYXRhLgorICovCiBDQVRBTE9HKHBnX3N0YXRpc3RpY19leHRfZGF0YSwz NDI5LFN0YXRpc3RpY0V4dERhdGFSZWxhdGlvbklkKQogewogCU9pZAkJCXN0eG9pZCBCS0lfTE9P S1VQKHBnX3N0YXRpc3RpY19leHQpOwkvKiBzdGF0aXN0aWNzIG9iamVjdApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YS5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YS5oCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYjNiNGIyZWQwNAotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGEuaApAQCAtMCww ICsxLDYyIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ190ZW1wX3N0YXRpc3RpY19l eHRfZGF0YS5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJ0ZW1wb3JhcnkgZXh0ZW5kZWQgc3Rh dGlzdGljcyBkYXRhIiBzeXN0ZW0gY2F0YWxvZworICoJICAocGdfdGVtcF9zdGF0aXN0aWNfZXh0 X2RhdGEpCisgKgorICogVGhpcyBpcyBhIGdsb2JhbCB0ZW1wb3Jhcnkgc3lzdGVtIGNhdGFsb2cg dGFibGUgc3RvcmluZyB0aGUgc3RhdGlzdGljYWwKKyAqIGRhdGEgZm9yIGV4dGVuZGVkIHN0YXRp c3RpY3Mgb2JqZWN0cyBvbiB0ZW1wb3JhcnkgdGFibGVzLiAgQ3VycmVudGx5LCBpdAorICogaXMg b25seSB1c2VkIGZvciBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlcy4KKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisg KgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YS5oCisg KgorICogTk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBh bmQgZGVyaXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKi8KKyNpZm5kZWYgUEdfVEVNUF9TVEFUSVNUSUNfRVhUX0RBVEFfSAorI2RlZmluZSBQ R19URU1QX1NUQVRJU1RJQ19FWFRfREFUQV9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGFfZC5oIgkvKiBJ V1lVIHByYWdtYTogZXhwb3J0ICovCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ190ZW1w X3N0YXRpc3RpY19leHRfZGF0YSBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJ CXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhCisgKiAt LS0tLS0tLS0tLS0tLS0tCisgKi8KK0JFR0lOX0NBVEFMT0dfU1RSVUNUCisKKy8qCisgKiBOQjog VGhlIGZpZWxkcyBoZXJlIG11c3QgZXhhY3RseSBtYXRjaCB0aG9zZSBpbiBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEuCisgKi8KK0NBVEFMT0cocGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGEsODA4OCxU ZW1wU3RhdGlzdGljRXh0RGF0YVJlbGF0aW9uSWQpIEJLSV9URU1QX1JFTEFUSU9OCit7CisJT2lk CQkJc3R4b2lkIEJLSV9MT09LVVAocGdfc3RhdGlzdGljX2V4dCk7CS8qIHN0YXRpc3RpY3Mgb2Jq ZWN0CisJCQkJCQkJCQkJCQkJCSAqIHRoaXMgZGF0YSBpcyBmb3IgKi8KKwlib29sCQlzdHhkaW5o ZXJpdDsJLyogdHJ1ZSBpZiBpbmhlcml0YW5jZSBjaGlsZHJlbiBhcmUgaW5jbHVkZWQgKi8KKwor I2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBo ZXJlICovCisKKwlwZ19uZGlzdGluY3Qgc3R4ZG5kaXN0aW5jdDsgLyogbmRpc3RpbmN0IGNvZWZm aWNpZW50cyAoc2VyaWFsaXplZCkgKi8KKwlwZ19kZXBlbmRlbmNpZXMgc3R4ZGRlcGVuZGVuY2ll czsJLyogZGVwZW5kZW5jaWVzIChzZXJpYWxpemVkKSAqLworCXBnX21jdl9saXN0IHN0eGRtY3Y7 CQkvKiBNQ1YgKHNlcmlhbGl6ZWQpICovCisJcGdfc3RhdGlzdGljIHN0eGRleHByWzFdOwkvKiBz dGF0cyBmb3IgZXhwcmVzc2lvbnMgKi8KKworI2VuZGlmCisKK30gRm9ybURhdGFfcGdfdGVtcF9z dGF0aXN0aWNfZXh0X2RhdGE7CisKK0VORF9DQVRBTE9HX1NUUlVDVAorCitERUNMQVJFX1RPQVNU KHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLCA4MDg5LCA4MDkwKTsKKworREVDTEFSRV9VTklR VUVfSU5ERVhfUEtFWShwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YV9zdHhvaWRfaW5oX2luZGV4 LCA4MDkxLCBUZW1wU3RhdGlzdGljRXh0RGF0YVN0eG9pZEluaEluZGV4SWQsIHBnX3RlbXBfc3Rh dGlzdGljX2V4dF9kYXRhLCBidHJlZShzdHhvaWQgb2lkX29wcywgc3R4ZGluaGVyaXQgYm9vbF9v cHMpKTsKKworTUFLRV9TWVNDQUNIRShURU1QU1RBVEVYVERBVEFTVFhPSUQsIHBnX3RlbXBfc3Rh dGlzdGljX2V4dF9kYXRhX3N0eG9pZF9pbmhfaW5kZXgsIDQpOworCisjZW5kaWYJCQkJCQkJLyog UEdfVEVNUF9TVEFUSVNUSUNfRVhUX0RBVEFfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCBk MDgwYWQ1OWI3MS4uOWVkYzBhNzZhNzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC04OSw3ICs4 OSw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyT3BlcmF0b3IoQWx0ZXJPcGVyYXRvclN0 bXQgKnN0bXQpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQ3JlYXRlU3RhdGlzdGljcyhDcmVhdGVT dGF0c1N0bXQgKnN0bXQsIGJvb2wgY2hlY2tfcmlnaHRzKTsKIGV4dGVybiBPYmplY3RBZGRyZXNz IEFsdGVyU3RhdGlzdGljcyhBbHRlclN0YXRzU3RtdCAqc3RtdCk7CiBleHRlcm4gdm9pZCBSZW1v dmVTdGF0aXN0aWNzQnlJZChPaWQgc3RhdHNPaWQpOwotZXh0ZXJuIHZvaWQgUmVtb3ZlU3RhdGlz dGljc0RhdGFCeUlkKE9pZCBzdGF0c09pZCwgYm9vbCBpbmgpOworZXh0ZXJuIHZvaWQgUmVtb3Zl U3RhdGlzdGljc0RhdGFCeUlkKE9pZCByZWxpZCwgT2lkIHN0YXRzT2lkLCBib29sIGluaCk7CiBl eHRlcm4gT2lkCVN0YXRpc3RpY3NHZXRSZWxhdGlvbihPaWQgc3RhdElkLCBib29sIG1pc3Npbmdf b2spOwogCiAvKiBjb21tYW5kcy9hZ2dyZWdhdGVjbWRzLmMgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0YXRpc3RpY3Mvc3RhdGlzdGljcy5oIGIvc3JjL2luY2x1ZGUvc3RhdGlzdGljcy9z dGF0aXN0aWNzLmgKaW5kZXggOGY5YjlkMjM3ZmQuLjJhYjkzYWRhZjgyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9zdGF0aXN0aWNzL3N0YXRpc3RpY3MuaAorKysgYi9zcmMvaW5jbHVkZS9zdGF0 aXN0aWNzL3N0YXRpc3RpY3MuaApAQCAtOTQsOSArOTQsOSBAQCB0eXBlZGVmIHN0cnVjdCBNQ1ZM aXN0CiAJTUNWSXRlbQkJaXRlbXNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsJLyogYXJyYXkgb2Yg TUNWIGl0ZW1zICovCiB9IE1DVkxpc3Q7CiAKLWV4dGVybiBNVk5EaXN0aW5jdCAqc3RhdGV4dF9u ZGlzdGluY3RfbG9hZChPaWQgbXZvaWQsIGJvb2wgaW5oKTsKLWV4dGVybiBNVkRlcGVuZGVuY2ll cyAqc3RhdGV4dF9kZXBlbmRlbmNpZXNfbG9hZChPaWQgbXZvaWQsIGJvb2wgaW5oKTsKLWV4dGVy biBNQ1ZMaXN0ICpzdGF0ZXh0X21jdl9sb2FkKE9pZCBtdm9pZCwgYm9vbCBpbmgpOworZXh0ZXJu IE1WTkRpc3RpbmN0ICpzdGF0ZXh0X25kaXN0aW5jdF9sb2FkKE9pZCByZWxpZCwgT2lkIG12b2lk LCBib29sIGluaCk7CitleHRlcm4gTVZEZXBlbmRlbmNpZXMgKnN0YXRleHRfZGVwZW5kZW5jaWVz X2xvYWQoT2lkIHJlbGlkLCBPaWQgbXZvaWQsIGJvb2wgaW5oKTsKK2V4dGVybiBNQ1ZMaXN0ICpz dGF0ZXh0X21jdl9sb2FkKE9pZCByZWxpZCwgT2lkIG12b2lkLCBib29sIGluaCk7CiAKIGV4dGVy biB2b2lkIEJ1aWxkUmVsYXRpb25FeHRTdGF0aXN0aWNzKFJlbGF0aW9uIG9uZXJlbCwgYm9vbCBp bmgsIGRvdWJsZSB0b3RhbHJvd3MsCiAJCQkJCQkJCQkgICBpbnQgbnVtcm93cywgSGVhcFR1cGxl ICpyb3dzLApAQCAtMTI2LDYgKzEyNiw2IEBAIGV4dGVybiBTdGF0aXN0aWNFeHRJbmZvICpjaG9v c2VfYmVzdF9zdGF0aXN0aWNzKExpc3QgKnN0YXRzLCBjaGFyIHJlcXVpcmVka2luZCwKIAkJCQkJ CQkJCQkJCUJpdG1hcHNldCAqKmNsYXVzZV9hdHRudW1zLAogCQkJCQkJCQkJCQkJTGlzdCAqKmNs YXVzZV9leHBycywKIAkJCQkJCQkJCQkJCWludCBuY2xhdXNlcyk7Ci1leHRlcm4gSGVhcFR1cGxl IHN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgc3R4b2lkLCBib29sIGluaCwgaW50IGlkeCk7 CitleHRlcm4gSGVhcFR1cGxlIHN0YXRleHRfZXhwcmVzc2lvbnNfbG9hZChPaWQgcmVsaWQsIE9p ZCBzdHhvaWQsIGJvb2wgaW5oLCBpbnQgaWR4KTsKIAogI2VuZGlmCQkJCQkJCS8qIFNUQVRJU1RJ Q1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9nbG9iYWxfdGVt cC5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90ZW1wLm91dAppbmRleCBh MjcyMzg3NTAxMy4uMTA1MTljZWVlMjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xv YmFsX3RlbXAub3V0CkBAIC02OTMsNiArNjkzLDc3IEBAIFNFTEVDVCByb3dfZXN0aW1hdGUoJ1NF TEVDVCAqIEZST00gdG1wMiBXSEVSRSBiID0gOCcpOwogICAgICAgICAgICAxNwogKDEgcm93KQog CitEUk9QIFRBQkxFIHRtcDI7CistLSBUZXN0IGV4dGVuZGVkIHN0YXRzCitDUkVBVEUgR0xPQkFM IFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQsIGIgaW50LCBjIGludCk7CitJTlNFUlQgSU5UTyB0bXAy CisgIFNFTEVDVCB4LCBmbG9vcihzcXJ0KHgpKSwgZmxvb3Ioc3FydCh4KSkgKyAxMDAgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMzYsIDk5KSB4OworQ1JFQVRFIFNUQVRJU1RJQ1MgdG1wMl9zdGF0cyBP TiBiLCBjIEZST00gdG1wMjsKK0FOQUxZWkUgdG1wMjsKK1NFTEVDVCBzdHhuYW1lLAorICAgICAg IHJlcGxhY2UoZC5zdHhkbmRpc3RpbmN0LCAnfSwgJywgRSd9LFxuJykgQVMgc3R4ZG5kaXN0aW5j dCwKKyAgICAgICByZXBsYWNlKGQuc3R4ZGRlcGVuZGVuY2llcywgJ30sICcsIEUnfSxcbicpIEFT IHN0eGRkZXBlbmRlbmNpZXMKKyAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMKKyAgTEVGVCBKT0lO IHBnX3N0YXRpc3RpY19leHRfZGF0YSBkIE9OIGQuc3R4b2lkID0gcy5vaWQKKyBXSEVSRSBzLnN0 eG5hbWUgPSAndG1wMl9zdGF0cyc7CisgIHN0eG5hbWUgICB8IHN0eGRuZGlzdGluY3QgfCBzdHhk ZGVwZW5kZW5jaWVzIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0KKyB0bXAyX3N0YXRzIHwgICAgICAgICAgICAgICB8IAorKDEgcm93KQorCitTRUxFQ1Qg c3R4bmFtZSwKKyAgICAgICByZXBsYWNlKGQuc3R4ZG5kaXN0aW5jdCwgJ30sICcsIEUnfSxcbicp IEFTIHN0eGRuZGlzdGluY3QsCisgICAgICAgcmVwbGFjZShkLnN0eGRkZXBlbmRlbmNpZXMsICd9 LCAnLCBFJ30sXG4nKSBBUyBzdHhkZGVwZW5kZW5jaWVzCisgIEZST00gcGdfc3RhdGlzdGljX2V4 dCBzCisgIExFRlQgSk9JTiBwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YSBkIE9OIGQuc3R4b2lk ID0gcy5vaWQKKyBXSEVSRSBzLnN0eG5hbWUgPSAndG1wMl9zdGF0cyc7CisgIHN0eG5hbWUgICB8 ICAgICAgICAgICAgICBzdHhkbmRpc3RpbmN0ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICBzdHhkZGVwZW5kZW5jaWVzICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0bXAy X3N0YXRzIHwgW3siYXR0cmlidXRlcyI6IFsyLCAzXSwgIm5kaXN0aW5jdCI6IDR9XSB8IFt7ImF0 dHJpYnV0ZXMiOiBbMl0sICJkZXBlbmRlbmN5IjogMywgImRlZ3JlZSI6IDEuMDAwMDAwfSwrCisg ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB7 ImF0dHJpYnV0ZXMiOiBbM10sICJkZXBlbmRlbmN5IjogMiwgImRlZ3JlZSI6IDEuMDAwMDAwfV0K KygxIHJvdykKKworU0VMRUNUIG0uKgorICBGUk9NIHBnX3N0YXRpc3RpY19leHQgcywgcGdfc3Rh dGlzdGljX2V4dF9kYXRhIGQsCisgICAgICAgcGdfbWN2X2xpc3RfaXRlbXMoZC5zdHhkbWN2KSBt CisgV0hFUkUgcy5zdHhuYW1lID0gJ3RtcDJfc3RhdHMnCisgICBBTkQgZC5zdHhvaWQgPSBzLm9p ZDsKKyBpbmRleCB8IHZhbHVlcyB8IG51bGxzIHwgZnJlcXVlbmN5IHwgYmFzZV9mcmVxdWVuY3kg CistLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLQor KDAgcm93cykKKworU0VMRUNUIG0uKgorICBGUk9NIHBnX3N0YXRpc3RpY19leHQgcywgcGdfdGVt cF9zdGF0aXN0aWNfZXh0X2RhdGEgZCwKKyAgICAgICBwZ19tY3ZfbGlzdF9pdGVtcyhkLnN0eGRt Y3YpIG0KKyBXSEVSRSBzLnN0eG5hbWUgPSAndG1wMl9zdGF0cycKKyAgIEFORCBkLnN0eG9pZCA9 IHMub2lkOworIGluZGV4IHwgdmFsdWVzICB8IG51bGxzIHwgZnJlcXVlbmN5IHwgYmFzZV9mcmVx dWVuY3kgCistLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0KKyAgICAgMCB8IHs5LDEwOX0gfCB7ZixmfSB8ICAwLjI5Njg3NSB8IDAuMDg4MTM0NzY1 NjI1CisgICAgIDEgfCB7OCwxMDh9IHwge2YsZn0gfCAgMC4yNjU2MjUgfCAwLjA3MDU1NjY0MDYy NQorICAgICAyIHwgezcsMTA3fSB8IHtmLGZ9IHwgIDAuMjM0Mzc1IHwgMC4wNTQ5MzE2NDA2MjUK KyAgICAgMyB8IHs2LDEwNn0gfCB7ZixmfSB8ICAwLjIwMzEyNSB8IDAuMDQxMjU5NzY1NjI1Ciso NCByb3dzKQorCitTRUxFQ1QgbW9zdF9jb21tb25fdmFscyBGUk9NIHBnX3N0YXRzX2V4dAorIFdI RVJFIHNjaGVtYW5hbWUgPSAnZ2xvYmFsX3RlbXBfdGVzdHMnIEFORCB0YWJsZW5hbWUgPSAndG1w Mic7CisgICAgICAgICBtb3N0X2NvbW1vbl92YWxzICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7ezksMTA5fSx7OCwxMDh9LHs3LDEwN30sezYsMTA2fX0K KygxIHJvdykKKworU0VMRUNUIENPVU5UKCopIEZST00gdG1wMiBXSEVSRSBiID0gOCBBTkQgYyA9 IDEwODsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAxNworKDEgcm93KQorCitTRUxFQ1Qgcm93X2Vz dGltYXRlKCdTRUxFQ1QgKiBGUk9NIHRtcDIgV0hFUkUgYiA9IDggQU5EIGMgPSAxMDgnKTsKKyBy b3dfZXN0aW1hdGUgCistLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxNworKDEgcm93KQorCiBE Uk9QIFRBQkxFIHRtcDI7CiAtLSBUZXN0IHZpZXcgY3JlYXRpb24KIENSRUFURSBWSUVXIHYgQVMg U0VMRUNUICogRlJPTSB0bXAxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dApp bmRleCBiZTJlZmE3ODI1Ny4uYmNjYWUwNTJhMTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b2lkam9pbnMub3V0CkBAIC0yOTgsMyArMjk4LDQgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdfdGVt cF9zdGF0aXN0aWMge3N0YWNvbGwyfSA9PiBwZ19jb2xsYXRpb24ge29pZH0KIE5PVElDRTogIGNo ZWNraW5nIHBnX3RlbXBfc3RhdGlzdGljIHtzdGFjb2xsM30gPT4gcGdfY29sbGF0aW9uIHtvaWR9 CiBOT1RJQ0U6ICBjaGVja2luZyBwZ190ZW1wX3N0YXRpc3RpYyB7c3RhY29sbDR9ID0+IHBnX2Nv bGxhdGlvbiB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfdGVtcF9zdGF0aXN0aWMge3N0YWNv bGw1fSA9PiBwZ19jb2xsYXRpb24ge29pZH0KK05PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfc3Rh dGlzdGljX2V4dF9kYXRhIHtzdHhvaWR9ID0+IHBnX3N0YXRpc3RpY19leHQge29pZH0KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggYzNjYWZlYjZlNDMuLmVkMzFjMGUyOTk4IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTM2Nyw2ICsxMzY3LDIxIEBAIFVO SU9OIEFMTAogICAgIHBnX3RlbXBfc3RhdGlzdGljLnN0YXZhbHVlczQsCiAgICAgcGdfdGVtcF9z dGF0aXN0aWMuc3RhdmFsdWVzNQogICAgRlJPTSBwZ190ZW1wX3N0YXRpc3RpYzsKK3BnX2FsbF9z dGF0aXN0aWNfZXh0X2RhdGF8IFNFTEVDVCBwZ19zdGF0aXN0aWNfZXh0X2RhdGEuc3R4b2lkLAor ICAgIHBnX3N0YXRpc3RpY19leHRfZGF0YS5zdHhkaW5oZXJpdCwKKyAgICBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEuc3R4ZG5kaXN0aW5jdCwKKyAgICBwZ19zdGF0aXN0aWNfZXh0X2RhdGEuc3R4ZGRl cGVuZGVuY2llcywKKyAgICBwZ19zdGF0aXN0aWNfZXh0X2RhdGEuc3R4ZG1jdiwKKyAgICBwZ19z dGF0aXN0aWNfZXh0X2RhdGEuc3R4ZGV4cHIKKyAgIEZST00gcGdfc3RhdGlzdGljX2V4dF9kYXRh CitVTklPTiBBTEwKKyBTRUxFQ1QgcGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGEuc3R4b2lkLAor ICAgIHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLnN0eGRpbmhlcml0LAorICAgIHBnX3RlbXBf c3RhdGlzdGljX2V4dF9kYXRhLnN0eGRuZGlzdGluY3QsCisgICAgcGdfdGVtcF9zdGF0aXN0aWNf ZXh0X2RhdGEuc3R4ZGRlcGVuZGVuY2llcywKKyAgICBwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0 YS5zdHhkbWN2LAorICAgIHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLnN0eGRleHByCisgICBG Uk9NIHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhOwogcGdfYXZhaWxhYmxlX2V4dGVuc2lvbl92 ZXJzaW9uc3wgU0VMRUNUIGUubmFtZSwKICAgICBlLnZlcnNpb24sCiAgICAgKHguZXh0bmFtZSBJ UyBOT1QgTlVMTCkgQVMgaW5zdGFsbGVkLApAQCAtMjc5Myw3ICsyODA4LDcgQEAgcGdfc3RhdHNf ZXh0fCBTRUxFQ1QgY24ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIG0ubW9zdF9jb21tb25f YmFzZV9mcmVxcwogICAgRlJPTSAoKCgoKHBnX3N0YXRpc3RpY19leHQgcwogICAgICBKT0lOIHBn X2NsYXNzIGMgT04gKChjLm9pZCA9IHMuc3R4cmVsaWQpKSkKLSAgICAgSk9JTiBwZ19zdGF0aXN0 aWNfZXh0X2RhdGEgc2QgT04gKChzLm9pZCA9IHNkLnN0eG9pZCkpKQorICAgICBKT0lOIHBnX2Fs bF9zdGF0aXN0aWNfZXh0X2RhdGEgc2QgT04gKChzLm9pZCA9IHNkLnN0eG9pZCkpKQogICAgICBM RUZUIEpPSU4gcGdfbmFtZXNwYWNlIGNuIE9OICgoY24ub2lkID0gYy5yZWxuYW1lc3BhY2UpKSkK ICAgICAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBzbiBPTiAoKHNuLm9pZCA9IHMuc3R4bmFtZXNw YWNlKSkpCiAgICAgIExFRlQgSk9JTiBMQVRFUkFMICggU0VMRUNUIGFycmF5X2FnZyhwZ19tY3Zf bGlzdF9pdGVtcy4idmFsdWVzIikgQVMgbW9zdF9jb21tb25fdmFscywKQEAgLTI4OTYsNyArMjkx MSw3IEBAIHBnX3N0YXRzX2V4dF9leHByc3wgU0VMRUNUIGNuLm5zcG5hbWUgQVMgc2NoZW1hbmFt ZSwKICAgICAgICAgRU5EIEFTIHJhbmdlX2JvdW5kc19oaXN0b2dyYW0KICAgIEZST00gKCgoKChw Z19zdGF0aXN0aWNfZXh0IHMKICAgICAgSk9JTiBwZ19jbGFzcyBjIE9OICgoYy5vaWQgPSBzLnN0 eHJlbGlkKSkpCi0gICAgIExFRlQgSk9JTiBwZ19zdGF0aXN0aWNfZXh0X2RhdGEgc2QgT04gKChz Lm9pZCA9IHNkLnN0eG9pZCkpKQorICAgICBMRUZUIEpPSU4gcGdfYWxsX3N0YXRpc3RpY19leHRf ZGF0YSBzZCBPTiAoKHMub2lkID0gc2Quc3R4b2lkKSkpCiAgICAgIExFRlQgSk9JTiBwZ19uYW1l c3BhY2UgY24gT04gKChjbi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQogICAgICBMRUZUIEpPSU4g cGdfbmFtZXNwYWNlIHNuIE9OICgoc24ub2lkID0gcy5zdHhuYW1lc3BhY2UpKSkKICAgICAgSk9J TiBMQVRFUkFMICggU0VMRUNUIHVubmVzdChwZ19nZXRfc3RhdGlzdGljc29iamRlZl9leHByZXNz aW9ucyhzLm9pZCkpIEFTIGV4cHIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Nhbml0eV9jaGVjay5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9j aGVjay5vdXQKaW5kZXggNWY1NzU2ZDU1OTYuLjNmMTRkOGY5ZThhIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Nhbml0eV9jaGVjay5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zYW5pdHlfY2hlY2sub3V0CkBAIC00OCwzICs0OCwyNyBAQCBVTklPTiBB TEwKIC0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLQogKDAgcm93cykKIAorLS0gY2hlY2sgdGhhdCBwZ19zdGF0aXN0aWNf ZXh0X2RhdGEgYW5kIHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhIGhhdmUgdGhlCistLSBleGFj dCBzYW1lIGNvbHVtbnMKK1dJVEggdDEgQVMgKAorICBTRUxFQ1QgYXR0bmFtZSwgYXR0dHlwaWQs IGF0dGxlbiwgYXR0bnVtLCBhdHR0eXBtb2QsIGF0dG5kaW1zLCBhdHRieXZhbCwKKyAgICAgICAg IGF0dGFsaWduLCBhdHRzdG9yYWdlLCBhdHRjb21wcmVzc2lvbiwgYXR0bm90bnVsbCwgYXR0aGFz ZGVmLAorICAgICAgICAgYXR0aGFzbWlzc2luZywgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCwg YXR0aXNkcm9wcGVkLCBhdHRpc2xvY2FsLAorICAgICAgICAgYXR0aW5oY291bnQsIGF0dGNvbGxh dGlvbgorICAgIEZST00gcGdfYXR0cmlidXRlCisgICBXSEVSRSBhdHRyZWxpZCA9ICdwZ19zdGF0 aXN0aWNfZXh0X2RhdGEnOjpyZWdjbGFzcworKSwgdDIgQVMgKAorICBTRUxFQ1QgYXR0bmFtZSwg YXR0dHlwaWQsIGF0dGxlbiwgYXR0bnVtLCBhdHR0eXBtb2QsIGF0dG5kaW1zLCBhdHRieXZhbCwK KyAgICAgICAgIGF0dGFsaWduLCBhdHRzdG9yYWdlLCBhdHRjb21wcmVzc2lvbiwgYXR0bm90bnVs bCwgYXR0aGFzZGVmLAorICAgICAgICAgYXR0aGFzbWlzc2luZywgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCwgYXR0aXNkcm9wcGVkLCBhdHRpc2xvY2FsLAorICAgICAgICAgYXR0aW5oY291bnQs IGF0dGNvbGxhdGlvbgorICAgIEZST00gcGdfYXR0cmlidXRlCisgICBXSEVSRSBhdHRyZWxpZCA9 ICdwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YSc6OnJlZ2NsYXNzCispCisoU0VMRUNUICogRlJP TSB0MSBFWENFUFQgU0VMRUNUICogRlJPTSB0MikKK1VOSU9OIEFMTAorKFNFTEVDVCAqIEZST00g dDIgRVhDRVBUIFNFTEVDVCAqIEZST00gdDEpOworIGF0dG5hbWUgfCBhdHR0eXBpZCB8IGF0dGxl biB8IGF0dG51bSB8IGF0dHR5cG1vZCB8IGF0dG5kaW1zIHwgYXR0Ynl2YWwgfCBhdHRhbGlnbiB8 IGF0dHN0b3JhZ2UgfCBhdHRjb21wcmVzc2lvbiB8IGF0dG5vdG51bGwgfCBhdHRoYXNkZWYgfCBh dHRoYXNtaXNzaW5nIHwgYXR0aWRlbnRpdHkgfCBhdHRnZW5lcmF0ZWQgfCBhdHRpc2Ryb3BwZWQg fCBhdHRpc2xvY2FsIHwgYXR0aW5oY291bnQgfCBhdHRjb2xsYXRpb24gCistLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1w LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2JhbF90ZW1wLnNxbAppbmRleCAzZWNjNzY2 YzNkZi4uNDI3MjgyNGU4OTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dsb2Jh bF90ZW1wLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9nbG9iYWxfdGVtcC5zcWwKQEAg LTQwNCw2ICs0MDQsNDcgQEAgU0VMRUNUIHJvd19lc3RpbWF0ZSgnU0VMRUNUICogRlJPTSB0bXAy IFdIRVJFIGIgPSA4Jyk7CiAKIERST1AgVEFCTEUgdG1wMjsKIAorLS0gVGVzdCBleHRlbmRlZCBz dGF0cworQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50LCBiIGludCwgYyBpbnQp OworSU5TRVJUIElOVE8gdG1wMgorICBTRUxFQ1QgeCwgZmxvb3Ioc3FydCh4KSksIGZsb29yKHNx cnQoeCkpICsgMTAwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM2LCA5OSkgeDsKK0NSRUFURSBTVEFU SVNUSUNTIHRtcDJfc3RhdHMgT04gYiwgYyBGUk9NIHRtcDI7CitBTkFMWVpFIHRtcDI7CisKK1NF TEVDVCBzdHhuYW1lLAorICAgICAgIHJlcGxhY2UoZC5zdHhkbmRpc3RpbmN0LCAnfSwgJywgRSd9 LFxuJykgQVMgc3R4ZG5kaXN0aW5jdCwKKyAgICAgICByZXBsYWNlKGQuc3R4ZGRlcGVuZGVuY2ll cywgJ30sICcsIEUnfSxcbicpIEFTIHN0eGRkZXBlbmRlbmNpZXMKKyAgRlJPTSBwZ19zdGF0aXN0 aWNfZXh0IHMKKyAgTEVGVCBKT0lOIHBnX3N0YXRpc3RpY19leHRfZGF0YSBkIE9OIGQuc3R4b2lk ID0gcy5vaWQKKyBXSEVSRSBzLnN0eG5hbWUgPSAndG1wMl9zdGF0cyc7CisKK1NFTEVDVCBzdHhu YW1lLAorICAgICAgIHJlcGxhY2UoZC5zdHhkbmRpc3RpbmN0LCAnfSwgJywgRSd9LFxuJykgQVMg c3R4ZG5kaXN0aW5jdCwKKyAgICAgICByZXBsYWNlKGQuc3R4ZGRlcGVuZGVuY2llcywgJ30sICcs IEUnfSxcbicpIEFTIHN0eGRkZXBlbmRlbmNpZXMKKyAgRlJPTSBwZ19zdGF0aXN0aWNfZXh0IHMK KyAgTEVGVCBKT0lOIHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhIGQgT04gZC5zdHhvaWQgPSBz Lm9pZAorIFdIRVJFIHMuc3R4bmFtZSA9ICd0bXAyX3N0YXRzJzsKKworU0VMRUNUIG0uKgorICBG Uk9NIHBnX3N0YXRpc3RpY19leHQgcywgcGdfc3RhdGlzdGljX2V4dF9kYXRhIGQsCisgICAgICAg cGdfbWN2X2xpc3RfaXRlbXMoZC5zdHhkbWN2KSBtCisgV0hFUkUgcy5zdHhuYW1lID0gJ3RtcDJf c3RhdHMnCisgICBBTkQgZC5zdHhvaWQgPSBzLm9pZDsKKworU0VMRUNUIG0uKgorICBGUk9NIHBn X3N0YXRpc3RpY19leHQgcywgcGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGEgZCwKKyAgICAgICBw Z19tY3ZfbGlzdF9pdGVtcyhkLnN0eGRtY3YpIG0KKyBXSEVSRSBzLnN0eG5hbWUgPSAndG1wMl9z dGF0cycKKyAgIEFORCBkLnN0eG9pZCA9IHMub2lkOworCitTRUxFQ1QgbW9zdF9jb21tb25fdmFs cyBGUk9NIHBnX3N0YXRzX2V4dAorIFdIRVJFIHNjaGVtYW5hbWUgPSAnZ2xvYmFsX3RlbXBfdGVz dHMnIEFORCB0YWJsZW5hbWUgPSAndG1wMic7CisKK1NFTEVDVCBDT1VOVCgqKSBGUk9NIHRtcDIg V0hFUkUgYiA9IDggQU5EIGMgPSAxMDg7CitTRUxFQ1Qgcm93X2VzdGltYXRlKCdTRUxFQ1QgKiBG Uk9NIHRtcDIgV0hFUkUgYiA9IDggQU5EIGMgPSAxMDgnKTsKKworRFJPUCBUQUJMRSB0bXAyOwor CiAtLSBUZXN0IHZpZXcgY3JlYXRpb24KIENSRUFURSBWSUVXIHYgQVMgU0VMRUNUICogRlJPTSB0 bXAxOwogU0VMRUNUICogRlJPTSB2OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c2FuaXR5X2NoZWNrLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nhbml0eV9jaGVjay5zcWwK aW5kZXggZWQwMDk2ZDc4MjMuLjRiZjAwZmViYTJjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9zYW5pdHlfY2hlY2suc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Nhbml0 eV9jaGVjay5zcWwKQEAgLTM5LDMgKzM5LDI0IEBAIFdJVEggdDEgQVMgKAogKFNFTEVDVCAqIEZS T00gdDEgRVhDRVBUIFNFTEVDVCAqIEZST00gdDIpCiBVTklPTiBBTEwKIChTRUxFQ1QgKiBGUk9N IHQyIEVYQ0VQVCBTRUxFQ1QgKiBGUk9NIHQxKTsKKworLS0gY2hlY2sgdGhhdCBwZ19zdGF0aXN0 aWNfZXh0X2RhdGEgYW5kIHBnX3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhIGhhdmUgdGhlCistLSBl eGFjdCBzYW1lIGNvbHVtbnMKK1dJVEggdDEgQVMgKAorICBTRUxFQ1QgYXR0bmFtZSwgYXR0dHlw aWQsIGF0dGxlbiwgYXR0bnVtLCBhdHR0eXBtb2QsIGF0dG5kaW1zLCBhdHRieXZhbCwKKyAgICAg ICAgIGF0dGFsaWduLCBhdHRzdG9yYWdlLCBhdHRjb21wcmVzc2lvbiwgYXR0bm90bnVsbCwgYXR0 aGFzZGVmLAorICAgICAgICAgYXR0aGFzbWlzc2luZywgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRl ZCwgYXR0aXNkcm9wcGVkLCBhdHRpc2xvY2FsLAorICAgICAgICAgYXR0aW5oY291bnQsIGF0dGNv bGxhdGlvbgorICAgIEZST00gcGdfYXR0cmlidXRlCisgICBXSEVSRSBhdHRyZWxpZCA9ICdwZ19z dGF0aXN0aWNfZXh0X2RhdGEnOjpyZWdjbGFzcworKSwgdDIgQVMgKAorICBTRUxFQ1QgYXR0bmFt ZSwgYXR0dHlwaWQsIGF0dGxlbiwgYXR0bnVtLCBhdHR0eXBtb2QsIGF0dG5kaW1zLCBhdHRieXZh bCwKKyAgICAgICAgIGF0dGFsaWduLCBhdHRzdG9yYWdlLCBhdHRjb21wcmVzc2lvbiwgYXR0bm90 bnVsbCwgYXR0aGFzZGVmLAorICAgICAgICAgYXR0aGFzbWlzc2luZywgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCwgYXR0aXNkcm9wcGVkLCBhdHRpc2xvY2FsLAorICAgICAgICAgYXR0aW5oY291 bnQsIGF0dGNvbGxhdGlvbgorICAgIEZST00gcGdfYXR0cmlidXRlCisgICBXSEVSRSBhdHRyZWxp ZCA9ICdwZ190ZW1wX3N0YXRpc3RpY19leHRfZGF0YSc6OnJlZ2NsYXNzCispCisoU0VMRUNUICog RlJPTSB0MSBFWENFUFQgU0VMRUNUICogRlJPTSB0MikKK1VOSU9OIEFMTAorKFNFTEVDVCAqIEZS T00gdDIgRVhDRVBUIFNFTEVDVCAqIEZST00gdDEpOwotLSAKMi41MS4wCgo= --000000000000c9947c0655ee1c0a Content-Type: text/x-patch; charset="US-ASCII"; name="v7-0010-Add-pg_temp_index-global-temporary-catalog-table.patch" Content-Disposition: attachment; filename="v7-0010-Add-pg_temp_index-global-temporary-catalog-table.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mr916gzp9 RnJvbSBkNzVlMGY1MTYzOWY1ZDVhMjc1ZjIwNjZmZjFhYzliMDEzOTY4MzVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEZWFuIFJhc2hlZWQgPGRlYW4uYS5yYXNoZWVkQGdtYWlsLmNv bT4KRGF0ZTogU2F0LCAyMCBKdW4gMjAyNiAwOTozNzo1OCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djcgMTAvMTBdIEFkZCBwZ190ZW1wX2luZGV4IGdsb2JhbCB0ZW1wb3JhcnkgY2F0YWxvZyB0YWJs ZS4KClRoaXMganVzdCBoYXMgaW5kZXhyZWxpZCBhbmQgaW5kaXN2YWxpZCBjb2x1bW5zLCBhbGxv d2luZyB0aGUgdmFsaWQKc3RhdGUgb2YgYW4gaW5kZXggdG8gc2Vzc2lvbi1zcGVjaWZpYy4gVGhp cyBpcyBuZWVkZWQgd2hlbiBvbmUgc2Vzc2lvbgpkZWZpbmVzIGFuIGluZGV4IG9uIGEgZ2xvYmFs IHRlbXBvcmFyeSB0YWJsZSwgd2hpbGUgYW5vdGhlciBzZXNzaW9uIGlzCnVzaW5nIHRoZSB0YWJs ZSwgYW5kIGhhcyBhbHJlYWR5IHBvcHVsYXRlZCBpdC4gSW4gYWxsIG90aGVyIGNhc2VzLApwZ19p bmRleC5pbmRleHJlbGlkIGFuZCBwZ190ZW1wX2luZGV4LmluZGV4cmVsaWQgYXJlIGV4cGVjdGVk IHRvIGJlCnRoZSBzYW1lLgotLS0KIGNvbnRyaWIvdGNuL3Rjbi5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAg ICAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvZ2xvYmFsX3RlbXAuYyAgICAgICAg ICAgfCAgMzkgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5jICAgICAgICAgfCA2 MzcgKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j ICAgICAgICAgICAgfCAgNDEgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3JlcGFjay5jICAgICAg ICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAg ICAgICAgfCAgMzkgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jICAgICAg ICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAg fCAgNDQgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgfCAg ODAgKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmggICAgICAgICB8ICAgOSArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2luZGV4LmggICAgICAgICB8ICA2NiArKwogc3JjL3Rl c3QvaXNvbGF0aW9uL2V4cGVjdGVkL2dsb2JhbC10ZW1wLm91dCB8ICA4MSArKysKIHNyYy90ZXN0 L2lzb2xhdGlvbi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjICAgfCAgIDIgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQgICB8IDEwNyArKystCiBzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dCAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2dsb2JhbF90ZW1wLnNxbCAgICAgICAgfCAgMzQgKysKIHNyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0ICAgICAgICAgICAgfCAgIDIgKwogMjEgZmlsZXMgY2hhbmdlZCwgMTA4NCBp bnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgKCmRpZmYgLS1naXQgYS9jb250cmliL3Rjbi90 Y24uYyBiL2NvbnRyaWIvdGNuL3Rjbi5jCmluZGV4IDZiNGJjNzk2MGQ5Li4zMjAxZjQzOGM0YiAx MDA2NDQKLS0tIGEvY29udHJpYi90Y24vdGNuLmMKKysrIGIvY29udHJpYi90Y24vdGNuLmMKQEAg LTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNz L2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9jbGFzcy5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgog I2luY2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgpAQCAtMTM1LDcgKzEzNiw3IEBAIHRyaWdnZXJlZF9j aGFuZ2Vfbm90aWZpY2F0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCUhlYXBUdXBsZQlpbmRleFR1 cGxlOwogCQlGb3JtX3BnX2luZGV4IGluZGV4OwogCi0JCWluZGV4VHVwbGUgPSBTZWFyY2hTeXND YWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleG9pZCkpOworCQlpbmRleFR1 cGxlID0gR2V0RWZmZWN0aXZlUGdJbmRleFR1cGxlKGluZGV4b2lkKTsKIAkJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKGluZGV4VHVwbGUpKQkvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogCQkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5kZXhvaWQpOwogCQlp bmRleCA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QoaW5kZXhUdXBsZSk7CkBAIC0xNjcsMTAg KzE2OCwxMCBAQCB0cmlnZ2VyZWRfY2hhbmdlX25vdGlmaWNhdGlvbihQR19GVU5DVElPTl9BUkdT KQogCiAJCQkJQXN5bmNfTm90aWZ5KGNoYW5uZWwsIHBheWxvYWQuZGF0YSk7CiAJCQl9Ci0JCQlS ZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CisJCQloZWFwX2ZyZWV0dXBsZShpbmRleFR1cGxl KTsKIAkJCWJyZWFrOwogCQl9Ci0JCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsKKwkJaGVh cF9mcmVldHVwbGUoaW5kZXhUdXBsZSk7CiAJfQogCiAJbGlzdF9mcmVlKGluZGV4b2lkbGlzdCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggN2M2MzFkZTkzOTMuLjhmYmJiNDI1ZTJj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk ZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2VudW0uaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3RlbXBfY2xhc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Rl bXBfaW5kZXguaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjb21t YW5kcy9hc3luYy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgpAQCAtMTE0OSw3 ICsxMTUwLDcgQEAgQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQodm9pZCkKIAkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1RSQU5TQUNUSU9OX1NUQVRFKSwKIAkJCQkJIGVycm1zZygiY2Fubm90 IHN0YXJ0IGNvbW1hbmRzIGR1cmluZyBhIHBhcmFsbGVsIG9wZXJhdGlvbiIpKSk7CiAKLQkJLyog Rmx1c2ggb3V0IGFueSBwZW5kaW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcyAqLworCQkvKiBG bHVzaCBvdXQgYW55IHBlbmRpbmcgcGdfdGVtcF9jbGFzcyBhbmQgcGdfdGVtcF9pbmRleCBpbnNl cnRzICovCiAJCVByZUNDSV9QZ1RlbXBDbGFzcygpOwogCiAJCWN1cnJlbnRDb21tYW5kSWQgKz0g MTsKQEAgLTIzNjQsNyArMjM2NSw3IEBAIENvbW1pdFRyYW5zYWN0aW9uKHZvaWQpCiAJICovCiAJ UHJlQ29tbWl0X29uX2NvbW1pdF9hY3Rpb25zKCk7CiAKLQkvKiBGbHVzaCBvdXQgYW55IHBlbmRp bmcgaW5zZXJ0cyB0byBwZ190ZW1wX2NsYXNzICovCisJLyogRmx1c2ggb3V0IGFueSBwZW5kaW5n IHBnX3RlbXBfY2xhc3MgYW5kIHBnX3RlbXBfaW5kZXggaW5zZXJ0cyAqLwogCVByZUNvbW1pdF9Q Z1RlbXBDbGFzcygpOwogCiAJLyoKQEAgLTI2NDAsNyArMjY0MSw3IEBAIFByZXBhcmVUcmFuc2Fj dGlvbih2b2lkKQogCSAqLwogCVByZUNvbW1pdF9vbl9jb21taXRfYWN0aW9ucygpOwogCi0JLyog Rmx1c2ggb3V0IGFueSBwZW5kaW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcyAqLworCS8qIEZs dXNoIG91dCBhbnkgcGVuZGluZyBwZ190ZW1wX2NsYXNzIGFuZCBwZ190ZW1wX2luZGV4IGluc2Vy dHMgKi8KIAlQcmVDb21taXRfUGdUZW1wQ2xhc3MoKTsKIAogCS8qCkBAIC01MjAyLDcgKzUyMDMs NyBAQCBDb21taXRTdWJUcmFuc2FjdGlvbih2b2lkKQogCUNhbGxTdWJYYWN0Q2FsbGJhY2tzKFNV QlhBQ1RfRVZFTlRfUFJFX0NPTU1JVF9TVUIsIHMtPnN1YlRyYW5zYWN0aW9uSWQsCiAJCQkJCQkg cy0+cGFyZW50LT5zdWJUcmFuc2FjdGlvbklkKTsKIAotCS8qIEZsdXNoIG91dCBhbnkgcGVuZGlu ZyBpbnNlcnRzIHRvIHBnX3RlbXBfY2xhc3MgKi8KKwkvKiBGbHVzaCBvdXQgYW55IHBlbmRpbmcg cGdfdGVtcF9jbGFzcyBhbmQgcGdfdGVtcF9pbmRleCBpbnNlcnRzICovCiAJUHJlU3ViQ29tbWl0 X1BnVGVtcENsYXNzKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9n bG9iYWxfdGVtcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9nbG9iYWxfdGVtcC5jCmluZGV4IDdh N2U3N2EwZDhlLi4xZmJkM2JmYWQ5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9n bG9iYWxfdGVtcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvZ2xvYmFsX3RlbXAuYwpAQCAt MTIyLDYgKzEyMiw3IEBAIHN0YXRpYyBib29sIGVveGFjdF9zdG9yYWdlX2xpc3Rfb3ZlcmZsb3dl ZCA9IGZhbHNlOwogdHlwZWRlZiBzdHJ1Y3QgR3RyVXNhZ2VFbnRyeQogewogCU9pZAkJCXJlbGlk OwkJCS8qIGxvb2t1cCBrZXk6IE9JRCBvZiByZWxhdGlvbiBpbiB1c2UgKi8KKwljaGFyCQlyZWxr aW5kOwkJLyogcmVsa2luZCBvZiB0aGUgcmVsYXRpb24gKi8KIAlTdWJUcmFuc2FjdGlvbklkIHN0 YXJ0ZWRfc3ViaWQ7IC8qIHVzYWdlIHN0YXJ0ZWQgaW4gY3VycmVudCB4YWN0ICovCiAJU3ViVHJh bnNhY3Rpb25JZCBzdG9wcGVkX3N1YmlkOyAvKiB1c2FnZSBlbmRlZCB3aXRoIGFub3RoZXIgc3Vi aWQgc2V0ICovCiB9IEd0clVzYWdlRW50cnk7CkBAIC01MTksNyArNTIwLDcgQEAgZ3RyX2luaXRf dXNhZ2VfdGFibGVzKHZvaWQpCiAgKglOb3RlOiBUaGlzIGlzIGludGVudGlvbmFsbHkgaWRlbXBv dGVudC4KICAqLwogc3RhdGljIHZvaWQKLWd0cl9yZWNvcmRfdXNhZ2UoT2lkIHJlbGlkKQorZ3Ry X3JlY29yZF91c2FnZShPaWQgcmVsaWQsIGNoYXIgcmVsa2luZCkKIHsKIAlHdHJVc2FnZUVudHJ5 ICpsb2NhbF9lbnRyeTsKIAlHdHJTaGFyZWRVc2FnZUtleSBrZXk7CkBAIC01MzQsNiArNTM1LDkg QEAgZ3RyX3JlY29yZF91c2FnZShPaWQgcmVsaWQpCiAJaWYgKGZvdW5kKQogCQlyZXR1cm47CQkJ CQkvKiBhbHJlYWR5IHJlY29yZGVkLCBub3RoaW5nIHRvIGRvICovCiAKKwkvKiBSZW1lbWJlciB0 aGUgcmVsYXRpb24ncyByZWxraW5kICovCisJbG9jYWxfZW50cnktPnJlbGtpbmQgPSByZWxraW5k OworCiAJLyogUmVjb3JkIHRoZSB1c2FnZSBhcyBzdGFydGluZyBpbiB0aGUgY3VycmVudCBzdWJ0 cmFuc2FjdGlvbiAqLwogCWxvY2FsX2VudHJ5LT5zdGFydGVkX3N1YmlkID0gR2V0Q3VycmVudFN1 YlRyYW5zYWN0aW9uSWQoKTsKIAlsb2NhbF9lbnRyeS0+c3RvcHBlZF9zdWJpZCA9IEludmFsaWRT dWJUcmFuc2FjdGlvbklkOwpAQCAtOTcyLDE0ICs5NzYsMzMgQEAgR2xvYmFsVGVtcFJlbGF0aW9u Q3JlYXRlZChSZWxhdGlvbiByZWxhdGlvbikKIHsKIAkvKgogCSAqIElmIHRoaXMgaXMgdGhlIGZp cnN0IHRpbWUgd2UndmUgdXNlZCB0aGlzIHJlbGF0aW9uIGluIHRoaXMgc2Vzc2lvbiwKLQkgKiBp bnNlcnQgYSBwZ190ZW1wX2NsYXNzIHR1cGxlIGZvciBpdCwgYW5kIHVwZGF0ZSB0aGUgdXNhZ2Ug aGFzaCB0YWJsZXMuCisJICogaW5zZXJ0IHBnX3RlbXBfY2xhc3MgYW5kIHBnX3RlbXBfaW5kZXgg dHVwbGVzIGZvciBpdCwgYW5kIHVwZGF0ZSB0aGUKKwkgKiB1c2FnZSBoYXNoIHRhYmxlcy4KIAkg Ki8KIAlpZiAoZ3RyX2xvY2FsX3VzYWdlID09IE5VTEwgfHwKIAkJaGFzaF9zZWFyY2goZ3RyX2xv Y2FsX3VzYWdlLAogCQkJCQkmcmVsYXRpb24tPnJkX2lkLCBIQVNIX0ZJTkQsIE5VTEwpID09IE5V TEwpCiAJewogCQlJbnNlcnRQZ1RlbXBDbGFzc1R1cGxlKHJlbGF0aW9uKTsKLQkJZ3RyX3JlY29y ZF91c2FnZShyZWxhdGlvbi0+cmRfaWQpOworCisJCWlmIChyZWxhdGlvbi0+cmRfcmVsLT5yZWxr aW5kID09IFJFTEtJTkRfSU5ERVggfHwKKwkJCXJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkKKwkJeworCQkJLyoKKwkJCSAqIFdoZW4gY3JlYXRp bmcgYSBuZXcgaW5kZXggbG9jYWxseSwgcmVsYXRpb24tPnJkX2luZGV4IHdpbGwgYmUKKwkJCSAq IE5VTEwgaGVyZS4gIE1hcmsgaXQgYXMgdmFsaWQgZm9yIG5vdyAtLS0gVXBkYXRlSW5kZXhSZWxh dGlvbigpCisJCQkgKiB3aWxsIHVwZGF0ZSBpdCBsYXRlciwgaWYgaXQncyBub3QgYWN0dWFsbHkg dmFsaWQgKGUuZy4sIENSRUFURQorCQkJICogSU5ERVggLi4uIE9OIE9OTFkgLi4uKS4gIE90aGVy d2lzZSwgZm9yIGFuIGluZGV4IGNyZWF0ZWQgaW4KKwkJCSAqIGFub3RoZXIgc2Vzc2lvbiwgcmVs YXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkIHdpbGwgYWNjdXJhdGVseQorCQkJICogcmVmbGVj dCB3aGV0aGVyIG9yIG5vdCB0aGUgaW5kZXggbmVlZHMgdG8gYmUgbWFya2VkIGludmFsaWQKKwkJ CSAqIGxvY2FsbHkgKGlmIG91ciBpbnN0YW5jZSBvZiB0aGUgaW5kZXgncyB0YWJsZSBpcyBub3Qg ZW1wdHkpLgorCQkJICovCisJCQlJbnNlcnRQZ1RlbXBJbmRleFR1cGxlKHJlbGF0aW9uLT5yZF9p ZCwKKwkJCQkJCQkJICAgcmVsYXRpb24tPnJkX2luZGV4ID09IE5VTEwgfHwKKwkJCQkJCQkJICAg cmVsYXRpb24tPnJkX2luZGV4LT5pbmRpc3ZhbGlkKTsKKwkJfQorCisJCWd0cl9yZWNvcmRfdXNh Z2UocmVsYXRpb24tPnJkX2lkLCByZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kKTsKIAl9CiB9CiAK QEAgLTEwMTAsOCArMTAzMywxMiBAQCBHbG9iYWxUZW1wUmVsYXRpb25Ecm9wcGVkKE9pZCByZWxp ZCkKIAkJLyogRmxhZyB0aGUgdXNhZ2UgZW50cnkgZm9yIGVveGFjdCBjbGVhbnVwICovCiAJCUVP WGFjdFVzYWdlTGlzdEFkZChyZWxpZCk7CiAKLQkJLyogRGVsZXRlIGl0J3MgcGdfdGVtcF9jbGFz cyB0dXBsZSAqLworCQkvKiBEZWxldGUgaXQncyBwZ190ZW1wX2NsYXNzIGFuZCBwZ190ZW1wX2lu ZGV4IHR1cGxlcyAqLwogCQlEZWxldGVQZ1RlbXBDbGFzc1R1cGxlKHJlbGlkKTsKKworCQlpZiAo ZW50cnktPnJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCB8fAorCQkJZW50cnktPnJlbGtpbmQgPT0g UkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkKKwkJCURlbGV0ZVBnVGVtcEluZGV4VHVwbGUocmVs aWQpOwogCX0KIAogCS8qIEZvcmdldCBhbnkgT04gQ09NTUlUIGFjdGlvbiBmb3IgdGhlIHJlbGF0 aW9uICovCkBAIC0xMTQxLDcgKzExNjgsNyBAQCBBdEVPWGFjdF9HbG9iYWxUZW1wUmVsYXRpb24o Ym9vbCBpc0NvbW1pdCkKIAkJfQogCX0KIAotCS8qIFBlcmZvcm0gYW55IHBnX3RlbXBfY2xhc3Mg cHJvY2Vzc2luZyAqLworCS8qIFBlcmZvcm0gYW55IHBnX3RlbXBfY2xhc3MgYW5kIHBnX3RlbXBf aW5kZXggcHJvY2Vzc2luZyAqLwogCUF0RU9YYWN0X1BnVGVtcENsYXNzKGlzQ29tbWl0KTsKIAog CS8qIE5vdyB3ZSdyZSBvdXQgb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCBjYW4gY2xlYXIgdGhlIGxp c3RzICovCkBAIC0xMjE1LDcgKzEyNDIsNyBAQCBBdEVPU3ViWGFjdF9HbG9iYWxUZW1wUmVsYXRp b24oYm9vbCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQl9CiAJfQogCi0J LyogUGVyZm9ybSBhbnkgcGdfdGVtcF9jbGFzcyBwcm9jZXNzaW5nICovCisJLyogUGVyZm9ybSBh bnkgcGdfdGVtcF9jbGFzcyBhbmQgcGdfdGVtcF9pbmRleCBwcm9jZXNzaW5nICovCiAJQXRFT1N1 YlhhY3RfUGdUZW1wQ2xhc3MoaXNDb21taXQsIG15U3ViaWQsIHBhcmVudFN1YmlkKTsKIAogCS8q IERvbid0IHJlc2V0IHRoZSBsaXN0czsgd2Ugc3RpbGwgbmVlZCBtb3JlIGNsZWFudXAgbGF0ZXIg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCA5NDNkZThhNGZkYS4uOTkxMjNiZGU3MzYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190ZW1wX2NsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCkBAIC0xMjEsNyArMTIyLDggQEAgc3Rh dGljIHZvaWQgVXBkYXRlSW5kZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsIE9pZCBoZWFwb2lkLAog CQkJCQkJCQlib29sIGlzZXhjbHVzaW9uLAogCQkJCQkJCQlib29sIGltbWVkaWF0ZSwKIAkJCQkJ CQkJYm9vbCBpc3ZhbGlkLAotCQkJCQkJCQlib29sIGlzcmVhZHkpOworCQkJCQkJCQlib29sIGlz cmVhZHksCisJCQkJCQkJCWNoYXIgcmVscGVyc2lzdGVuY2UpOwogc3RhdGljIHZvaWQgaW5kZXhf dXBkYXRlX3N0YXRzKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgICBib29sIGlzcmVpbmRleCwKIAkJ CQkJCQkgICBib29sIGhhc2luZGV4LApAQCAtNTc0LDcgKzU3Niw4IEBAIFVwZGF0ZUluZGV4UmVs YXRpb24oT2lkIGluZGV4b2lkLAogCQkJCQlib29sIGlzZXhjbHVzaW9uLAogCQkJCQlib29sIGlt bWVkaWF0ZSwKIAkJCQkJYm9vbCBpc3ZhbGlkLAotCQkJCQlib29sIGlzcmVhZHkpCisJCQkJCWJv b2wgaXNyZWFkeSwKKwkJCQkJY2hhciByZWxwZXJzaXN0ZW5jZSkKIHsKIAlpbnQydmVjdG9yICpp bmRrZXk7CiAJb2lkdmVjdG9yICAqaW5kY29sbGF0aW9uOwpAQCAtNjc1LDYgKzY3OCwyMyBAQCBV cGRhdGVJbmRleFJlbGF0aW9uKE9pZCBpbmRleG9pZCwKIAkgKi8KIAl0YWJsZV9jbG9zZShwZ19p bmRleCwgUm93RXhjbHVzaXZlTG9jayk7CiAJaGVhcF9mcmVldHVwbGUodHVwbGUpOworCisJLyoK KwkgKiBGb3IgYW4gaW5kZXggb24gYSBnbG9iYWwgdGVtcG9yYXJ5IHRhYmxlLCBHbG9iYWxUZW1w UmVsYXRpb25DcmVhdGVkKCkKKwkgKiB3aWxsIGhhdmUgaW5zZXJ0ZWQgYSBwZ190ZW1wX2luZGV4 IHR1cGxlIHdpdGggaW5kaXN2YWxpZCA9IHRydWUuICBJZgorCSAqIHRoZSBpbmRleCBpcyBhY3R1 YWxseSBub3QgdmFsaWQsIGZpeCB0aGF0IG5vdy4KKwkgKi8KKwlpZiAocmVscGVyc2lzdGVuY2Ug PT0gUkVMUEVSU0lTVEVOQ0VfR0xPQkFMX1RFTVAgJiYgIWlzdmFsaWQpCisJeworCQl0dXBsZSA9 IEdldFBnVGVtcEluZGV4VHVwbGUoaW5kZXhvaWQpOworCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo dHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGdsb2JhbCB0 ZW1wIGluZGV4ICV1IiwgaW5kZXhvaWQpOworCisJCSgoRm9ybV9wZ190ZW1wX2luZGV4KSBHRVRT VFJVQ1QodHVwbGUpKS0+aW5kaXN2YWxpZCA9IGlzdmFsaWQ7CisKKwkJVXBkYXRlUGdUZW1wSW5k ZXhUdXBsZShpbmRleG9pZCwgdHVwbGUpOworCQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisJfQog fQogCiAKQEAgLTEwNTYsNyArMTA3Niw4IEBAIGluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQlpc3ByaW1hcnksIGlzX2V4Y2x1c2lvbiwKIAkJCQkJCShjb25zdHJfZmxh Z3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX0RFRkVSUkFCTEUpID09IDAsCiAJCQkJCQkhY29uY3Vy cmVudCAmJiAhaW52YWxpZCwKLQkJCQkJCSFjb25jdXJyZW50KTsKKwkJCQkJCSFjb25jdXJyZW50 LAorCQkJCQkJcmVscGVyc2lzdGVuY2UpOwogCiAJLyoKIAkgKiBSZWdpc3RlciByZWxjYWNoZSBp bnZhbGlkYXRpb24gb24gdGhlIGluZGV4ZXMnIGhlYXAgcmVsYXRpb24sIHRvCkBAIC0zNTgzLDYg KzM2MDQsOSBAQCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4U3RhdGVG bGFnc0FjdGlvbiBhY3Rpb24pCiAJSGVhcFR1cGxlCWluZGV4VHVwbGU7CiAJRm9ybV9wZ19pbmRl eCBpbmRleEZvcm07CiAKKwkvKiBUaGlzIGlzIG5vdCBleHBlY3RlZCB0byBiZSBhIGdsb2JhbCB0 ZW1wb3JhcnkgaW5kZXggKi8KKwlBc3NlcnQoIXJlbF9pc19nbG9iYWxfdGVtcChpbmRleElkKSk7 CisKIAkvKiBPcGVuIHBnX2luZGV4IGFuZCBmZXRjaCBhIHdyaXRhYmxlIGNvcHkgb2YgdGhlIGlu ZGV4J3MgdHVwbGUgKi8KIAlwZ19pbmRleCA9IHRhYmxlX29wZW4oSW5kZXhSZWxhdGlvbklkLCBS b3dFeGNsdXNpdmVMb2NrKTsKIApAQCAtMzk0MiwxOCArMzk2NiwyNiBAQCByZWluZGV4X2luZGV4 KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAl7CiAJCVJlbGF0aW9uCXBn X2luZGV4OwogCQlIZWFwVHVwbGUJaW5kZXhUdXBsZTsKKwkJSGVhcFR1cGxlCXRlbXBfaW5kZXhU dXBsZTsKIAkJRm9ybV9wZ19pbmRleCBpbmRleEZvcm07CisJCUZvcm1fcGdfdGVtcF9pbmRleCB0 ZW1wX2luZGV4Rm9ybTsKIAkJYm9vbAkJaW5kZXhfYmFkOwogCisJCS8qCisJCSAqIEZvciBhIGds b2JhbCB0ZW1wb3JhcnkgaW5kZXgsIHdlIHVwZGF0ZSBpbmRpc3ZhbGlkIGluIGJvdGggcGdfaW5k ZXgKKwkJICogYW5kIHBnX3RlbXBfaW5kZXgsIHNvIHRoYXQgdGhlIGNoYW5nZSBhcHBsaWVzIHRv IHRoaXMgc2Vzc2lvbiBhbmQKKwkJICogYWxsIGZ1dHVyZSBzZXNzaW9ucy4KKwkJICovCiAJCXBn X2luZGV4ID0gdGFibGVfb3BlbihJbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwog Ci0JCWluZGV4VHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKElOREVYUkVMSUQsCi0JCQkJCQkJ CQkJIE9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCQlpbmRleFR1cGxlID0gR2V0UGdJbmRl eEFuZFBnVGVtcEluZGV4VHVwbGVzKGluZGV4SWQsICZ0ZW1wX2luZGV4VHVwbGUsCisJCQkJCQkJ CQkJCQkJdHJ1ZSk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRleFR1cGxlKSkKIAkJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAldSIsIGluZGV4SWQpOwog CQlpbmRleEZvcm0gPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOworCQl0 ZW1wX2luZGV4Rm9ybSA9IChGb3JtX3BnX3RlbXBfaW5kZXgpIEdFVFNUUlVDVF9TQUZFKHRlbXBf aW5kZXhUdXBsZSk7CiAKLQkJaW5kZXhfYmFkID0gKCFpbmRleEZvcm0tPmluZGlzdmFsaWQgfHwK KwkJaW5kZXhfYmFkID0gKCFHZXRFZmZlY3RpdmVfaW5kaXN2YWxpZChpbmRleEZvcm0sIHRlbXBf aW5kZXhGb3JtKSB8fAogCQkJCQkgIWluZGV4Rm9ybS0+aW5kaXNyZWFkeSB8fAogCQkJCQkgIWlu ZGV4Rm9ybS0+aW5kaXNsaXZlKTsKIAkJaWYgKGluZGV4X2JhZCB8fApAQCAtMzk2NCw5ICszOTk2 LDEzIEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElk LAogCQkJZWxzZSBpZiAoaW5kZXhfYmFkKQogCQkJCWluZGV4Rm9ybS0+aW5kY2hlY2t4bWluID0g dHJ1ZTsKIAkJCWluZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRydWU7CisJCQlpZiAodGVtcF9pbmRl eEZvcm0gIT0gTlVMTCkKKwkJCQl0ZW1wX2luZGV4Rm9ybS0+aW5kaXN2YWxpZCA9IHRydWU7CiAJ CQlpbmRleEZvcm0tPmluZGlzcmVhZHkgPSB0cnVlOwogCQkJaW5kZXhGb3JtLT5pbmRpc2xpdmUg PSB0cnVlOwogCQkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2luZGV4LCAmaW5kZXhUdXBsZS0+dF9z ZWxmLCBpbmRleFR1cGxlKTsKKwkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRlbXBfaW5kZXhUdXBs ZSkpCisJCQkJVXBkYXRlUGdUZW1wSW5kZXhUdXBsZShpbmRleElkLCB0ZW1wX2luZGV4VHVwbGUp OwogCiAJCQkvKgogCQkJICogSW52YWxpZGF0ZSB0aGUgcmVsY2FjaGUgZm9yIHRoZSB0YWJsZSwg c28gdGhhdCBhZnRlciB3ZSBjb21taXQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfdGVtcF9jbGFzcy5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmMKaW5k ZXggZjMwOWY4MmQ5OTUuLmZiYTI0MGExMTY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3RlbXBfY2xhc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3RlbXBfY2xh c3MuYwpAQCAtMSw3ICsxLDggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIHBnX3RlbXBf Y2xhc3MuYwotICoJICByb3V0aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdf dGVtcF9jbGFzcyByZWxhdGlvbgorICoJICByb3V0aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlv biBvZiB0aGUgcGdfdGVtcF9jbGFzcyBhbmQKKyAqCSAgcGdfdGVtcF9pbmRleCByZWxhdGlvbnMK ICAqCiAgKiBUaGUgcGdfdGVtcF9jbGFzcyBzeXN0ZW0gY2F0YWxvZyB0YWJsZSBpcyBhIGdsb2Jh bCB0ZW1wb3JhcnkgdGFibGUgdGhhdAogICogc3RvcmVzIGxvY2FsIG92ZXJyaWRlcyB0byB2YXJp b3VzIGZpZWxkcyBmcm9tIHRoZSBwZ19jbGFzcyB0YWJsZSBmb3IgdGhlCkBAIC0zNCw5ICszNSwx NCBAQAogICogb2YgYW55IG5vbi1yZWFkLW9ubHkgY29tbWFuZCBhbmQgd2hlbiBjb21taXR0aW5n IGEgdHJhbnNhY3Rpb24gb3IKICAqIHN1YnRyYW5zYWN0aW9uLgogICoKLSAqIE5COiBBbGwgcmVh ZHMgYW5kIHdyaXRlcyB0byBwZ190ZW1wX2NsYXNzIGJ5IGJhY2tlbmQgY29kZSBtdXN0IGdvCi0g KiB0aHJvdWdoIHRoZSBmdW5jdGlvbnMgZGVmaW5lZCBoZXJlICh0aG91Z2ggdXNlciBTUUwgcXVl cmllcyBtYXkgcmVhZCBpdAotICogbm9ybWFsbHkpLgorICogTGlrZXdpc2UgcGdfdGVtcF9pbmRl eCBpcyB0aGUgZ2xvYmFsIHRlbXBvcmFyeSBzeXN0ZW0gY2F0YWxvZyB0YWJsZSB0aGF0CisgKiBz dG9yZXMgbG9jYWwgb3ZlcnJpZGVzIHRvIGZpZWxkcyAoYWN0dWFsbHkganVzdCBpbmRpc3ZhbGlk KSBpbiB0aGUKKyAqIHBnX2luZGV4IHRhYmxlIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJl bnQgc2Vzc2lvbi4gSXQgcmVxdWlyZXMKKyAqIHNpbWlsYXIgdHJlYXRtZW50LCBzbyBmb3IgY29u dmVuaWVuY2Ugd2UgbWFuYWdlIHRoYXQgaGVyZSB0b28uCisgKgorICogTkI6IEFsbCByZWFkcyBh bmQgd3JpdGVzIHRvIHBnX3RlbXBfY2xhc3MgYW5kIHBnX3RlbXBfaW5kZXggYnkgYmFja2VuZAor ICogY29kZSBtdXN0IGdvIHRocm91Z2ggdGhlIGZ1bmN0aW9ucyBkZWZpbmVkIGhlcmUgKHRob3Vn aCB1c2VyIFNRTCBxdWVyaWVzCisgKiBtYXkgcmVhZCB0aGVtIG5vcm1hbGx5KS4KICAqCiAgKiBD b3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAg KgpAQCAtNTQsMjkgKzYwLDM1IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRl ICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX2NsYXNzLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMu aCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hl LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgogCiAvKgotICogSGF2ZSB3ZSBvcGVuZWQgYW5kIGluaXRpYWxpemVkIHBnX3RlbXBfY2xh c3MgaW4gdGhpcyBzZXNzaW9uPworICogSGF2ZSB3ZSBvcGVuZWQgYW5kIGluaXRpYWxpemVkIHBn X3RlbXBfY2xhc3MgYW5kIHBnX3RlbXBfaW5kZXggaW4gdGhpcworICogc2Vzc2lvbj8KICAqLwog c3RhdGljIGJvb2wgcGdfdGVtcF9jbGFzc19vcGVuZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIHBn X3RlbXBfaW5kZXhfb3BlbmVkID0gZmFsc2U7CiAKIC8qCi0gKiBTdWJ0cmFuc2FjdGlvbiBJRCBp biB3aGljaCBwZ190ZW1wX2NsYXNzIHdhcyBvcGVuZWQsIGlmIGl0IHdhcyBvcGVuZWQgaW4KLSAq IHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBlbHNlIHplcm8uCisgKiBTdWJ0cmFuc2FjdGlvbiBJ RHMgaW4gd2hpY2ggcGdfdGVtcF9jbGFzcyBhbmQgcGdfdGVtcF9pbmRleCB3ZXJlIG9wZW5lZCwg aWYKKyAqIHRoZXkgd2VyZSBvcGVuZWQgaW4gdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24sIGVsc2Ug emVyby4KICAqLwogc3RhdGljIFN1YlRyYW5zYWN0aW9uSWQgcGdfdGVtcF9jbGFzc19zdWJpZCA9 IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOworc3RhdGljIFN1YlRyYW5zYWN0aW9uSWQgcGdfdGVt cF9pbmRleF9zdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOwogCi0vKiBDYWNoZWQgY29w eSBvZiB0aGUgcGdfdGVtcF9jbGFzcyB0dXBsZSBkZXNjcmlwdG9yICovCisvKiBDYWNoZWQgY29w aWVzIG9mIHRoZSBwZ190ZW1wX2NsYXNzIGFuZCBwZ190ZW1wX2luZGV4IHR1cGxlIGRlc2NyaXB0 b3JzICovCiBzdGF0aWMgVHVwbGVEZXNjIHBnX3RlbXBfY2xhc3NfdHVwZGVzYyA9IE5VTEw7Citz dGF0aWMgVHVwbGVEZXNjIHBnX3RlbXBfaW5kZXhfdHVwZGVzYyA9IE5VTEw7CiAKIC8qCi0gKiBQ ZW5kaW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcy4KKyAqIFBlbmRpbmcgaW5zZXJ0cyB0byBw Z190ZW1wX2NsYXNzIGFuZCBwZ190ZW1wX2luZGV4LgogICoKICAqIEhlcmUsIGNyZWF0ZWRfc3Vi aWQgaXMgdGhlIElEIG9mIHRoZSBzdWJ0cmFuc2FjdGlvbiB0aGF0IGZpcnN0IGFkZGVkIHRoZQog ICogcGVuZGluZyBpbnNlcnQsIGluc2VydGVkX3N1YmlkIGlzIHRoZSBJRCBvZiB0aGUgc3VidHJh bnNhY3Rpb24gdGhhdCBmbHVzaGVkCkBAIC05Myw3ICsxMDUsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGVuZGluZ0luc2VydAogCVN1YlRyYW5zYWN0aW9uSWQgZGVsZXRlZF9zdWJpZDsgLyogZGVsZXRl ZCB3aXRoIGFub3RoZXIgc3ViaWQgc2V0ICovCiB9IFBlbmRpbmdJbnNlcnQ7CiAKLXN0YXRpYyBI VEFCICpwZW5kaW5nX2luc2VydHMgPSBOVUxMOworc3RhdGljIEhUQUIgKnBlbmRpbmdfY2xhc3Nf aW5zZXJ0cyA9IE5VTEw7CitzdGF0aWMgSFRBQiAqcGVuZGluZ19pbmRleF9pbnNlcnRzID0gTlVM TDsKKworLyogRG8gd2UgaGF2ZSBhbnkgcGVuZGluZyBpbnNlcnRzIG9mIGVpdGhlciBraW5kIHRo YXQgbmVlZCBmbHVzaGluZz8gKi8KIHN0YXRpYyBib29sIGhhdmVfaW5zZXJ0c190b19mbHVzaCA9 IGZhbHNlOwogCiAvKiBNZW1vcnkgY29udGV4dCBmb3IgYWxsIHR1cGxlcyBwZW5kaW5nIGluc2Vy dCAqLwpAQCAtMTI4LDI3ICsxNDMsNjIgQEAgb3Blbl9wZ190ZW1wX2NsYXNzKExPQ0tNT0RFIGxv Y2ttb2RlKQogfQogCiAvKgotICogaW5pdF9wZW5kaW5nX2luc2VydHNfaGFzaHRhYmxlCisgKiBv cGVuX3BnX3RlbXBfaW5kZXgKKyAqCisgKglPcGVuIHBnX3RlbXBfaW5kZXggYW5kIG1ha2UgYSBu b3RlIG9mIHRoZSBzdWJ0cmFuc2NhdGlvbiBJRCwgaWYgdGhpcyBpcworICoJdGhlIGZpcnN0IHRp bWUgb3BlbmluZyBpdC4KKyAqLworc3RhdGljIFJlbGF0aW9uCitvcGVuX3BnX3RlbXBfaW5kZXgo TE9DS01PREUgbG9ja21vZGUpCit7CisJUmVsYXRpb24JcGdfdGVtcF9pbmRleDsKKworCXBnX3Rl bXBfaW5kZXggPSB0YWJsZV9vcGVuKFRlbXBJbmRleFJlbGF0aW9uSWQsIGxvY2ttb2RlKTsKKwlp ZiAoIXBnX3RlbXBfaW5kZXhfb3BlbmVkKQorCXsKKwkJcGdfdGVtcF9pbmRleF9vcGVuZWQgPSB0 cnVlOworCQlwZ190ZW1wX2luZGV4X3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQo KTsKKwl9CisJcmV0dXJuIHBnX3RlbXBfaW5kZXg7Cit9CisKKy8qCisgKiBpbml0X3BlbmRpbmdf aW5zZXJ0c19oYXNodGFibGVzCiAgKgotICoJSW5pdGlhbGl6ZSB0aGUgcGVuZGluZyBpbnNlcnRz IGhhc2h0YWJsZSwgaWYgbm90IGFscmVhZHkgZG9uZS4KKyAqCUluaXRpYWxpemUgdGhlIHBlbmRp bmcgaW5zZXJ0cyBoYXNodGFibGVzLCBpZiBub3QgYWxyZWFkeSBkb25lLgogICovCiBzdGF0aWMg dm9pZAotaW5pdF9wZW5kaW5nX2luc2VydHNfaGFzaHRhYmxlKHZvaWQpCitpbml0X3BlbmRpbmdf aW5zZXJ0c19oYXNodGFibGVzKHZvaWQpCiB7Ci0JaWYgKHBlbmRpbmdfaW5zZXJ0cyA9PSBOVUxM KQorCWlmIChwZW5kaW5nX2NsYXNzX2luc2VydHMgPT0gTlVMTCkKIAl7CiAJCUhBU0hDVEwJCWN0 bDsKIAotCQkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgKi8KKwkJLyogQ3JlYXRlIHRoZSBoYXNo IHRhYmxlIGZvciBwZW5kaW5nIHBnX3RlbXBfY2xhc3MgaW5zZXJ0cyAqLwogCQljdGwua2V5c2l6 ZSA9IHNpemVvZihPaWQpOwogCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBlbmRpbmdJbnNlcnQp OwogCi0JCXBlbmRpbmdfaW5zZXJ0cyA9IGhhc2hfY3JlYXRlKCJQZW5kaW5nIHBnX3RlbXBfY2xh c3MgaW5zZXJ0cyIsCi0JCQkJCQkJCQkgIDEyOCwgJmN0bCwgSEFTSF9FTEVNIHwgSEFTSF9CTE9C Uyk7CisJCXBlbmRpbmdfY2xhc3NfaW5zZXJ0cyA9IGhhc2hfY3JlYXRlKCJQZW5kaW5nIHBnX3Rl bXBfY2xhc3MgaW5zZXJ0cyIsCisJCQkJCQkJCQkJCTEyOCwgJmN0bCwgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyk7CisJfQorCisJaWYgKHBlbmRpbmdfaW5kZXhfaW5zZXJ0cyA9PSBOVUxMKQorCXsK KwkJSEFTSENUTAkJY3RsOworCisJCS8qIENyZWF0ZSB0aGUgaGFzaCB0YWJsZSBmb3IgcGVuZGlu ZyBwZ190ZW1wX2luZGV4IGluc2VydHMgKi8KKwkJY3RsLmtleXNpemUgPSBzaXplb2YoT2lkKTsK KwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZW5kaW5nSW5zZXJ0KTsKIAotCQkvKiBDcmVhdGUg YSBzZXBhcmF0ZSBtZW1vcnkgY29udGV4dCBmb3IgYWxsIHR1cGxlcyBpbiBpdCAqLworCQlwZW5k aW5nX2luZGV4X2luc2VydHMgPSBoYXNoX2NyZWF0ZSgiUGVuZGluZyBwZ190ZW1wX2luZGV4IGlu c2VydHMiLAorCQkJCQkJCQkJCQkxMjgsICZjdGwsIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMpOwor CX0KKworCWlmIChwZW5kaW5nX2luc2VydHNfdHVwY3R4ID09IE5VTEwpCisJeworCQkvKiBDcmVh dGUgYSBzZXBhcmF0ZSBtZW1vcnkgY29udGV4dCBmb3IgYWxsIHBlbmRpbmcgdHVwbGVzICovCiAJ CXBlbmRpbmdfaW5zZXJ0c190dXBjdHggPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVtb3J5 Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkgICAiUGVuZGluZyBwZ190ZW1wX2NsYXNzIHR1cGxlcyIs CisJCQkJCQkJCQkJCQkJICAgIlBlbmRpbmcgcGdfdGVtcF9jbGFzcy9pbmRleCB0dXBsZXMiLAog CQkJCQkJCQkJCQkJCSAgIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwogCX0KIH0KQEAgLTIwNyw2 ICsyNTcsMzkgQEAgZ2V0X3BnX3RlbXBfY2xhc3NfdHVwZGVzYyh2b2lkKQogCXJldHVybiBwZ190 ZW1wX2NsYXNzX3R1cGRlc2M7CiB9CiAKKy8qCisgKiBnZXRfcGdfdGVtcF9pbmRleF90dXBkZXNj CisgKgorICoJUmV0dXJucyB0aGUgdHVwbGUgZGVzY3JpcHRvciBmb3IgcGdfdGVtcF9pbmRleC4K KyAqLworc3RhdGljIFR1cGxlRGVzYworZ2V0X3BnX3RlbXBfaW5kZXhfdHVwZGVzYyh2b2lkKQor eworCS8qIEJ1aWxkIHRoZSB0dXBsZSBkZXNjcmlwdG9yIHRoZSBmaXJzdCB0aW1lIHRocm91Z2gg Ki8KKwlpZiAocGdfdGVtcF9pbmRleF90dXBkZXNjID09IE5VTEwpCisJeworCQlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CisJCVR1cGxlRGVzYwl0dXBkZXNjOworCisJCW9sZGNvbnRleHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisKKwkJdHVwZGVzYyA9IENy ZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKE5hdHRzX3BnX3RlbXBfaW5kZXgpOworCQlUdXBsZURlc2NJ bml0RW50cnkodHVwZGVzYywKKwkJCQkJCSAgIChBdHRyTnVtYmVyKSBBbnVtX3BnX3RlbXBfaW5k ZXhfaW5kZXhyZWxpZCwKKwkJCQkJCSAgICJpbmRleHJlbGlkIiwgT0lET0lELCAtMSwgMCk7CisJ CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLAorCQkJCQkJICAgKEF0dHJOdW1iZXIpIEFudW1f cGdfdGVtcF9pbmRleF9pbmRpc3ZhbGlkLAorCQkJCQkJICAgImluZGlzdmFsaWQiLCBCT09MT0lE LCAtMSwgMCk7CisJCVR1cGxlRGVzY0ZpbmFsaXplKHR1cGRlc2MpOworCisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCQkvKiBDYWNoZSBpdCBmb3IgYWxsIGZ1dHVyZSB1 c2UgKi8KKwkJcGdfdGVtcF9pbmRleF90dXBkZXNjID0gdHVwZGVzYzsKKwl9CisJcmV0dXJuIHBn X3RlbXBfaW5kZXhfdHVwZGVzYzsKK30KKwogLyoKICAqIGhlYXBfZm9ybV9wZ190ZW1wX2NsYXNz X3R1cGxlCiAgKgpAQCAtMjM0LDU3ICszMTcsMTEwIEBAIGhlYXBfZm9ybV9wZ190ZW1wX2NsYXNz X3R1cGxlKFJlbGF0aW9uIHJlbCkKIH0KIAogLyoKLSAqIGZsdXNoX3BlbmRpbmdfcGdfdGVtcF9j bGFzc19pbnNlcnRzCisgKiBoZWFwX2Zvcm1fcGdfdGVtcF9pbmRleF90dXBsZQorICoKKyAqCUNy ZWF0ZSBhIHBnX3RlbXBfaW5kZXggdHVwbGUgZm9yIHRoZSBzcGVjaWZpZWQgaW5kZXggcmVsYXRp b24uCisgKi8KK3N0YXRpYyBIZWFwVHVwbGUKK2hlYXBfZm9ybV9wZ190ZW1wX2luZGV4X3R1cGxl KE9pZCBpbmRleHJlbGlkLCBib29sIGluZGlzdmFsaWQpCit7CisJRGF0dW0JCXZhbHVlc1tOYXR0 c19wZ190ZW1wX2luZGV4XTsKKwlib29sCQludWxsc1tOYXR0c19wZ190ZW1wX2luZGV4XSA9IHsw fTsKKworCXZhbHVlc1tBbnVtX3BnX3RlbXBfaW5kZXhfaW5kZXhyZWxpZCAtIDFdID0gT2JqZWN0 SWRHZXREYXR1bShpbmRleHJlbGlkKTsKKwl2YWx1ZXNbQW51bV9wZ190ZW1wX2luZGV4X2luZGlz dmFsaWQgLSAxXSA9IEJvb2xHZXREYXR1bShpbmRpc3ZhbGlkKTsKKworCXJldHVybiBoZWFwX2Zv cm1fdHVwbGUoZ2V0X3BnX3RlbXBfaW5kZXhfdHVwZGVzYygpLCB2YWx1ZXMsIG51bGxzKTsKK30K KworLyoKKyAqIGZsdXNoX3BlbmRpbmdfaW5zZXJ0cwogICoKLSAqCUZsdXNoIGFueSBwZW5kaW5n IGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcy4KKyAqCUZsdXNoIGFueSBwZW5kaW5nIGluc2VydHMg dG8gcGdfdGVtcF9jbGFzcyBhbmQgcGdfdGVtcF9pbmRleC4KICAqLwogc3RhdGljIHZvaWQKLWZs dXNoX3BlbmRpbmdfcGdfdGVtcF9jbGFzc19pbnNlcnRzKHZvaWQpCitmbHVzaF9wZW5kaW5nX2lu c2VydHModm9pZCkKIHsKIAlTdWJUcmFuc2FjdGlvbklkIGN1cnJlbnRTdWJpZCA9IEdldEN1cnJl bnRTdWJUcmFuc2FjdGlvbklkKCk7CiAJUmVsYXRpb24JcGdfdGVtcF9jbGFzczsKLQlDYXRhbG9n SW5kZXhTdGF0ZSBpbmRzdGF0ZTsKKwlSZWxhdGlvbglwZ190ZW1wX2luZGV4OworCUNhdGFsb2dJ bmRleFN0YXRlIGNsYXNzX2luZHN0YXRlOworCUNhdGFsb2dJbmRleFN0YXRlIGluZGV4X2luZHN0 YXRlOwogCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7CiAJUGVuZGluZ0luc2VydCAqZW50cnk7CiAK KwkvKgorCSAqIE9wZW4gcGdfdGVtcF9jbGFzcywgcGdfdGVtcF9pbmRleCwgYW5kIHRoZWlyIGlu ZGV4ZXMuICBOb3RlIHRoYXQgdGhpcworCSAqIG1pZ2h0IGJlIHRoZSBmaXJzdCB0aW1lIHRoZXNl IGhhdmUgYmVlbiBvcGVuZWQgaW4gdGhlIGN1cnJlbnQgc2Vzc2lvbiwKKwkgKiBzbyB3ZSBvcGVu IHRoZW0gYWxsIGZpcnN0LCBpbiBjYXNlIHRoZXkgbGVhZCB0byBtb3JlIHBlbmRpbmcgaW5zZXJ0 cy4KKwkgKi8KIAlwZ190ZW1wX2NsYXNzID0gb3Blbl9wZ190ZW1wX2NsYXNzKFJvd0V4Y2x1c2l2 ZUxvY2spOworCXBnX3RlbXBfaW5kZXggPSBvcGVuX3BnX3RlbXBfaW5kZXgoUm93RXhjbHVzaXZl TG9jayk7CisKKwljbGFzc19pbmRzdGF0ZSA9IENhdGFsb2dPcGVuSW5kZXhlcyhwZ190ZW1wX2Ns YXNzKTsKKwlpbmRleF9pbmRzdGF0ZSA9IENhdGFsb2dPcGVuSW5kZXhlcyhwZ190ZW1wX2luZGV4 KTsKIAogCS8qCi0JICogRmx1c2ggYWxsIHBlbmRpbmcgaW5zZXJ0cyBub3QgYWxyZWFkeSBpbnNl cnRlZCwgb3IgZGVsZXRlZCBpbiB0aGUgc2FtZQotCSAqIHN1YnRyYW5zYWN0aW9uLgorCSAqIEZs dXNoIGFsbCBwZW5kaW5nIHBnX3RlbXBfY2xhc3MgaW5zZXJ0cyBub3QgYWxyZWFkeSBpbnNlcnRl ZCwgb3IKKwkgKiBkZWxldGVkIGluIHRoZSBzYW1lIHN1YnRyYW5zYWN0aW9uLgogCSAqLwotCWlu ZHN0YXRlID0gQ2F0YWxvZ09wZW5JbmRleGVzKHBnX3RlbXBfY2xhc3MpOwotCWhhc2hfc2VxX2lu aXQoJnN0YXR1cywgcGVuZGluZ19pbnNlcnRzKTsKKwloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHBl bmRpbmdfY2xhc3NfaW5zZXJ0cyk7CiAJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgm c3RhdHVzKSkgIT0gTlVMTCkKIAl7CiAJCWlmIChlbnRyeS0+aW5zZXJ0ZWRfc3ViaWQgPT0gSW52 YWxpZFN1YlRyYW5zYWN0aW9uSWQgJiYKIAkJCWVudHJ5LT5kZWxldGVkX3N1YmlkID09IEludmFs aWRTdWJUcmFuc2FjdGlvbklkKQogCQl7Ci0JCQlDYXRhbG9nVHVwbGVJbnNlcnRXaXRoSW5mbyhw Z190ZW1wX2NsYXNzLCBlbnRyeS0+dHVwbGUsIGluZHN0YXRlKTsKKwkJCUNhdGFsb2dUdXBsZUlu c2VydFdpdGhJbmZvKHBnX3RlbXBfY2xhc3MsIGVudHJ5LT50dXBsZSwgY2xhc3NfaW5kc3RhdGUp OwogCQkJZW50cnktPmluc2VydGVkX3N1YmlkID0gY3VycmVudFN1YmlkOwogCQl9CiAJfQotCUNh dGFsb2dDbG9zZUluZGV4ZXMoaW5kc3RhdGUpOworCisJLyogQW5kIGxpa2V3aXNlIGZvciBwZW5k aW5nIHBnX3RlbXBfaW5kZXggaW5zZXJ0cyAqLworCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgcGVu ZGluZ19pbmRleF9pbnNlcnRzKTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZz dGF0dXMpKSAhPSBOVUxMKQorCXsKKwkJaWYgKGVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9PSBJbnZh bGlkU3ViVHJhbnNhY3Rpb25JZCAmJgorCQkJZW50cnktPmRlbGV0ZWRfc3ViaWQgPT0gSW52YWxp ZFN1YlRyYW5zYWN0aW9uSWQpCisJCXsKKwkJCUNhdGFsb2dUdXBsZUluc2VydFdpdGhJbmZvKHBn X3RlbXBfaW5kZXgsIGVudHJ5LT50dXBsZSwgaW5kZXhfaW5kc3RhdGUpOworCQkJZW50cnktPmlu c2VydGVkX3N1YmlkID0gY3VycmVudFN1YmlkOworCQl9CisJfQorCisJLyogVGlkeSB1cCAqLwor CUNhdGFsb2dDbG9zZUluZGV4ZXMoY2xhc3NfaW5kc3RhdGUpOworCUNhdGFsb2dDbG9zZUluZGV4 ZXMoaW5kZXhfaW5kc3RhdGUpOwogCiAJdGFibGVfY2xvc2UocGdfdGVtcF9jbGFzcywgUm93RXhj bHVzaXZlTG9jayk7CisJdGFibGVfY2xvc2UocGdfdGVtcF9pbmRleCwgUm93RXhjbHVzaXZlTG9j ayk7CiAKIAloYXZlX2luc2VydHNfdG9fZmx1c2ggPSBmYWxzZTsKIH0KIAogLyoKLSAqIGRpc2Nh cmRfcGVuZGluZ19wZ190ZW1wX2NsYXNzX2luc2VydHMKKyAqIGRpc2NhcmRfcGVuZGluZ19pbnNl cnRzCiAgKgotICoJRGlzY2FyZCBhbnkgcGVuZGluZyBpbnNlcnRzIHRvIHBnX3RlbXBfY2xhc3Mu CisgKglEaXNjYXJkIGFueSBwZW5kaW5nIGluc2VydHMgdG8gcGdfdGVtcF9jbGFzcyBhbmQgcGdf dGVtcF9pbmRleC4KICAqLwogc3RhdGljIHZvaWQKLWRpc2NhcmRfcGVuZGluZ19wZ190ZW1wX2Ns YXNzX2luc2VydHModm9pZCkKK2Rpc2NhcmRfcGVuZGluZ19pbnNlcnRzKHZvaWQpCiB7Ci0JLyog SnVzdCBibG93IGF3YXkgdGhlIGhhc2ggdGFibGUgYW5kIHR1cGxlIG1lbW9yeSBjb250ZXh0ICov Ci0JaGFzaF9kZXN0cm95KHBlbmRpbmdfaW5zZXJ0cyk7Ci0JTWVtb3J5Q29udGV4dERlbGV0ZShw ZW5kaW5nX2luc2VydHNfdHVwY3R4KTsKLQotCXBlbmRpbmdfaW5zZXJ0cyA9IE5VTEw7Ci0JcGVu ZGluZ19pbnNlcnRzX3R1cGN0eCA9IE5VTEw7CisJLyogSnVzdCBibG93IGF3YXkgdGhlIGhhc2gg dGFibGVzIGFuZCB0dXBsZSBtZW1vcnkgY29udGV4dCAqLworCWlmIChwZW5kaW5nX2NsYXNzX2lu c2VydHMgIT0gTlVMTCkKKwl7CisJCWhhc2hfZGVzdHJveShwZW5kaW5nX2NsYXNzX2luc2VydHMp OworCQlwZW5kaW5nX2NsYXNzX2luc2VydHMgPSBOVUxMOworCX0KKwlpZiAocGVuZGluZ19pbmRl eF9pbnNlcnRzICE9IE5VTEwpCisJeworCQloYXNoX2Rlc3Ryb3kocGVuZGluZ19pbmRleF9pbnNl cnRzKTsKKwkJcGVuZGluZ19pbmRleF9pbnNlcnRzID0gTlVMTDsKKwl9CisJaWYgKHBlbmRpbmdf aW5zZXJ0c190dXBjdHggIT0gTlVMTCkKKwl7CisJCU1lbW9yeUNvbnRleHREZWxldGUocGVuZGlu Z19pbnNlcnRzX3R1cGN0eCk7CisJCXBlbmRpbmdfaW5zZXJ0c190dXBjdHggPSBOVUxMOworCX0K IAloYXZlX2luc2VydHNfdG9fZmx1c2ggPSBmYWxzZTsKIH0KIApAQCAtMzAyLDkgKzQzOCw5IEBA IEdldFBnVGVtcENsYXNzVHVwbGUoT2lkIHJlbGlkKQogCVBlbmRpbmdJbnNlcnQgKmVudHJ5Owog CiAJLyogSWYgdGhlcmUgaXMgYSBwZW5kaW5nIGluc2VydCBmb3IgdGhpcyByZWxhdGlvbiwganVz dCByZXR1cm4gdGhhdCAqLwotCWlmIChwZW5kaW5nX2luc2VydHMgIT0gTlVMTCkKKwlpZiAocGVu ZGluZ19jbGFzc19pbnNlcnRzICE9IE5VTEwpCiAJewotCQllbnRyeSA9IGhhc2hfc2VhcmNoKHBl bmRpbmdfaW5zZXJ0cywgJnJlbGlkLCBIQVNIX0ZJTkQsIE5VTEwpOworCQllbnRyeSA9IGhhc2hf c2VhcmNoKHBlbmRpbmdfY2xhc3NfaW5zZXJ0cywgJnJlbGlkLCBIQVNIX0ZJTkQsIE5VTEwpOwog CQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJewogCQkJLyogUmV0dXJuIE5VTEwgaWYgcGVuZGluZyBp bnNlcnQgd2FzIGRlbGV0ZWQgKi8KQEAgLTMzMCw2ICs0NjYsNDggQEAgR2V0UGdUZW1wQ2xhc3NU dXBsZShPaWQgcmVsaWQpCiAJcmV0dXJuIFNlYXJjaFN5c0NhY2hlQ29weTEoVEVNUFJFTE9JRCwg T2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOwogfQogCisvKgorICogR2V0UGdUZW1wSW5kZXhUdXBs ZQorICoKKyAqCUdldCB0aGUgcGdfdGVtcF9pbmRleCB0dXBsZSBmb3IgYSBnbG9iYWwgdGVtcG9y YXJ5IGluZGV4IHJlbGF0aW9uLgorICoKKyAqCVJldHVybnMgTlVMTCBpZiB0aGUgdHVwbGUgY291 bGQgbm90IGJlIGZvdW5kLiAgT3RoZXJ3aXNlLCB0aGUgdHVwbGUKKyAqCXJldHVybmVkIHNob3Vs ZCBiZSBmcmVlZCB3aXRoIGhlYXBfZnJlZXR1cGxlKCkuCisgKi8KK0hlYXBUdXBsZQorR2V0UGdU ZW1wSW5kZXhUdXBsZShPaWQgaW5kZXhyZWxpZCkKK3sKKwlQZW5kaW5nSW5zZXJ0ICplbnRyeTsK KworCS8qIElmIHRoZXJlIGlzIGEgcGVuZGluZyBpbnNlcnQgZm9yIHRoaXMgcmVsYXRpb24sIGp1 c3QgcmV0dXJuIHRoYXQgKi8KKwlpZiAocGVuZGluZ19pbmRleF9pbnNlcnRzICE9IE5VTEwpCisJ eworCQllbnRyeSA9IGhhc2hfc2VhcmNoKHBlbmRpbmdfaW5kZXhfaW5zZXJ0cywgJmluZGV4cmVs aWQsIEhBU0hfRklORCwgTlVMTCk7CisJCWlmIChlbnRyeSAhPSBOVUxMKQorCQl7CisJCQkvKiBS ZXR1cm4gTlVMTCBpZiBwZW5kaW5nIGluc2VydCB3YXMgZGVsZXRlZCAqLworCQkJaWYgKGVudHJ5 LT5kZWxldGVkX3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCQkJCXJldHVybiBO VUxMOworCisJCQkvKiBJZiB0aGUgaW5zZXJ0IGlzIHN0aWxsIHBlbmRpbmcsIHJldHVybiBpdCAq LworCQkJaWYgKGVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25J ZCkKKwkJCQlyZXR1cm4gaGVhcF9jb3B5dHVwbGUoZW50cnktPnR1cGxlKTsKKworCQkJLyoKKwkJ CSAqIE90aGVyd2lzZSwgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gd2hhdGV2ZXIgaXMgaW4gdGhl IGRhdGFiYXNlLAorCQkJICogaW4gY2FzZSBpdCB3YXMgc3Vic2VxdWVudGx5IHVwZGF0ZWQuCisJ CQkgKi8KKwkJfQorCX0KKworCS8qIElmIHdlIGhhdmVuJ3Qgb3BlbmVkIHBnX3RlbXBfaW5kZXgg eWV0LCBpdCBtdXN0IGJlIGVtcHR5ICovCisJaWYgKCFwZ190ZW1wX2luZGV4X29wZW5lZCkKKwkJ cmV0dXJuIE5VTEw7CisKKwkvKiBPdGhlcndpc2UgZmV0Y2ggYSBjb3B5IG9mIHRoZSB0dXBsZSBm cm9tIHRoZSBzeXN0ZW0gY2FjaGVzICovCisJcmV0dXJuIFNlYXJjaFN5c0NhY2hlQ29weTEoVEVN UElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0oaW5kZXhyZWxpZCkpOworfQorCiAvKgogICog SW5zZXJ0UGdUZW1wQ2xhc3NUdXBsZQogICoKQEAgLTM1Niw5ICs1MzQsOSBAQCBJbnNlcnRQZ1Rl bXBDbGFzc1R1cGxlKFJlbGF0aW9uIHJlbCkKIAkgKiB0YWtpbmcgY2FyZSB0byBhbGxvY2F0ZSB0 aGUgdHVwbGUgaW4gdGhlIGxvbmctdGVybSBtZW1vcnkgY29udGV4dCBmb3IKIAkgKiBwZW5kaW5n IGluc2VydCB0dXBsZXMuCiAJICovCi0JaW5pdF9wZW5kaW5nX2luc2VydHNfaGFzaHRhYmxlKCk7 CisJaW5pdF9wZW5kaW5nX2luc2VydHNfaGFzaHRhYmxlcygpOwogCi0JZW50cnkgPSBoYXNoX3Nl YXJjaChwZW5kaW5nX2luc2VydHMsICZyZWxpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwllbnRy eSA9IGhhc2hfc2VhcmNoKHBlbmRpbmdfY2xhc3NfaW5zZXJ0cywgJnJlbGlkLCBIQVNIX0VOVEVS LCAmZm91bmQpOwogCWlmIChmb3VuZCkKIAkJLyogU2hvdWxkIG5ldmVyIHRyeSB0byByZS1pbnNl cnQgdGhlIHNhbWUgcmVsaWQgKi8KIAkJZWxvZyhFUlJPUiwgInBnX3RlbXBfY2xhc3MgdHVwbGUg Zm9yIHJlbGF0aW9uICV1IGFscmVhZHkgZXhpc3RzIiwgcmVsaWQpOwpAQCAtMzczLDYgKzU1MSw0 OCBAQCBJbnNlcnRQZ1RlbXBDbGFzc1R1cGxlKFJlbGF0aW9uIHJlbCkKIAloYXZlX2luc2VydHNf dG9fZmx1c2ggPSB0cnVlOwogfQogCisvKgorICogSW5zZXJ0UGdUZW1wSW5kZXhUdXBsZQorICoK KyAqCUluc2VydCBhIG5ldyBwZ190ZW1wX2luZGV4IHR1cGxlIGZvciBhIGdsb2JhbCB0ZW1wb3Jh cnkgaW5kZXggcmVsYXRpb24uCisgKgorICoJVGhpcyBpcyBjYWxsZWQgd2hlbiBhIGdsb2JhbCB0 ZW1wb3JhcnkgaW5kZXggcmVsYXRpb24gaXMgY3JlYXRlZCBvcgorICoJYWNjZXNzZWQgZm9yIHRo ZSBmaXJzdCB0aW1lIGluIGEgc2Vzc2lvbi4KKyAqCisgKglOb3RlOiBUaGUgbmV3IHR1cGxlIGlz IG5vdCB3cml0dGVuIHRvIHRoZSBkYXRhYmFzZSB1bmxlc3MgYW5kIHVudGlsCisgKglDb21tYW5k Q291bnRlckluY3JlbWVudCgpIGlzIGNhbGxlZCBmb3IgYSBub24tcmVhZC1vbmx5IGNvbW1hbmQs IG9yIHRoZQorICoJKHN1Yil0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuICBIb3dldmVyLCB0aGUg bmV3IHR1cGxlICppcyogdmlzaWJsZSB0byBhbGwKKyAqCXRoZSBmdW5jdGlvbnMgZGVmaW5lZCBo ZXJlLgorICovCit2b2lkCitJbnNlcnRQZ1RlbXBJbmRleFR1cGxlKE9pZCBpbmRleHJlbGlkLCBi b29sIGluZGlzdmFsaWQpCit7CisJUGVuZGluZ0luc2VydCAqZW50cnk7CisJYm9vbAkJZm91bmQ7 CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJLyoKKwkgKiBBZGQgYSBuZXcgdHVwbGUg Zm9yIHRoZSByZWxhdGlvbiB0byB0aGUgcGVuZGluZyBpbnNlcnRzIGhhc2ggdGFibGUsCisJICog dGFraW5nIGNhcmUgdG8gYWxsb2NhdGUgdGhlIHR1cGxlIGluIHRoZSBsb25nLXRlcm0gbWVtb3J5 IGNvbnRleHQgZm9yCisJICogcGVuZGluZyBpbnNlcnQgdHVwbGVzLgorCSAqLworCWluaXRfcGVu ZGluZ19pbnNlcnRzX2hhc2h0YWJsZXMoKTsKKworCWVudHJ5ID0gaGFzaF9zZWFyY2gocGVuZGlu Z19pbmRleF9pbnNlcnRzLCAmaW5kZXhyZWxpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAo Zm91bmQpCisJCS8qIFNob3VsZCBuZXZlciB0cnkgdG8gcmUtaW5zZXJ0IHRoZSBzYW1lIGluZGV4 cmVsaWQgKi8KKwkJZWxvZyhFUlJPUiwgInBnX3RlbXBfaW5kZXggdHVwbGUgZm9yIGluZGV4ICV1 IGFscmVhZHkgZXhpc3RzIiwgaW5kZXhyZWxpZCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKHBlbmRpbmdfaW5zZXJ0c190dXBjdHgpOworCWVudHJ5LT50dXBsZSA9IGhl YXBfZm9ybV9wZ190ZW1wX2luZGV4X3R1cGxlKGluZGV4cmVsaWQsIGluZGlzdmFsaWQpOworCWVu dHJ5LT5jcmVhdGVkX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKTsKKwllbnRy eS0+aW5zZXJ0ZWRfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKKwllbnRyeS0+ZGVs ZXRlZF9zdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkOworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKKworCWhhdmVfaW5zZXJ0c190b19mbHVzaCA9IHRydWU7Cit9CisK IC8qCiAgKiBVcGRhdGVQZ1RlbXBDbGFzc1R1cGxlCiAgKgpAQCAtMzkyLDExICs2MTIsMTEgQEAg VXBkYXRlUGdUZW1wQ2xhc3NUdXBsZShPaWQgcmVsaWQsIEhlYXBUdXBsZSBuZXd0dXBsZSkKIAkg KiBpbnNlcnRlZCBpbnN0ZWFkLiAgV2UgaW50ZW50aW9uYWxseSBmbHVzaCB0byB0aGUgZGF0YWJh c2UgaGVyZSBpbiBvcmRlcgogCSAqIHRvIHRyaWdnZXIgY2FjaGUgaW52YWxpZGF0aW9uIGZvciB0 aGlzIHJlbGF0aW9uLgogCSAqLwotCWlmIChwZW5kaW5nX2luc2VydHMgIT0gTlVMTCkKKwlpZiAo cGVuZGluZ19jbGFzc19pbnNlcnRzICE9IE5VTEwpCiAJewogCQlQZW5kaW5nSW5zZXJ0ICplbnRy eTsKIAotCQllbnRyeSA9IGhhc2hfc2VhcmNoKHBlbmRpbmdfaW5zZXJ0cywgJnJlbGlkLCBIQVNI X0ZJTkQsIE5VTEwpOworCQllbnRyeSA9IGhhc2hfc2VhcmNoKHBlbmRpbmdfY2xhc3NfaW5zZXJ0 cywgJnJlbGlkLCBIQVNIX0ZJTkQsIE5VTEwpOwogCQlpZiAoZW50cnkgIT0gTlVMTCkKIAkJewog CQkJLyogRW50cnkgbXVzdCBub3QgaGF2ZSBiZWVuIGRlbGV0ZWQgaW4gdGhlIHNhbWUgc3VidHJh bnNhY3Rpb24gKi8KQEAgLTQ1MiwxMSArNjcyLDExIEBAIFVwZGF0ZVBnVGVtcENsYXNzVHVwbGVJ blBsYWNlKE9pZCByZWxpZCwgSGVhcFR1cGxlIG5ld3R1cGxlKQogCSAqIGluc2VydGVkIGluc3Rl YWQuICBXZSBpbnRlbnRpb25hbGx5IGZsdXNoIHRvIHRoZSBkYXRhYmFzZSBoZXJlIGluIG9yZGVy CiAJICogdG8gdHJpZ2dlciBjYWNoZSBpbnZhbGlkYXRpb24gZm9yIHRoaXMgcmVsYXRpb24uCiAJ ICovCi0JaWYgKHBlbmRpbmdfaW5zZXJ0cyAhPSBOVUxMKQorCWlmIChwZW5kaW5nX2NsYXNzX2lu c2VydHMgIT0gTlVMTCkKIAl7CiAJCVBlbmRpbmdJbnNlcnQgKmVudHJ5OwogCi0JCWVudHJ5ID0g aGFzaF9zZWFyY2gocGVuZGluZ19pbnNlcnRzLCAmcmVsaWQsIEhBU0hfRklORCwgTlVMTCk7CisJ CWVudHJ5ID0gaGFzaF9zZWFyY2gocGVuZGluZ19jbGFzc19pbnNlcnRzLCAmcmVsaWQsIEhBU0hf RklORCwgTlVMTCk7CiAJCWlmIChlbnRyeSAhPSBOVUxMKQogCQl7CiAJCQkvKiBFbnRyeSBtdXN0 IG5vdCBoYXZlIGJlZW4gZGVsZXRlZCBpbiB0aGUgc2FtZSBzdWJ0cmFuc2FjdGlvbiAqLwpAQCAt NDk3LDYgKzcxNyw2MyBAQCBVcGRhdGVQZ1RlbXBDbGFzc1R1cGxlSW5QbGFjZShPaWQgcmVsaWQs IEhlYXBUdXBsZSBuZXd0dXBsZSkKIAl0YWJsZV9jbG9zZShwZ190ZW1wX2NsYXNzLCBSb3dFeGNs dXNpdmVMb2NrKTsKIH0KIAorLyoKKyAqIFVwZGF0ZVBnVGVtcEluZGV4VHVwbGUKKyAqCisgKglV cGRhdGUgdGhlIHBnX3RlbXBfaW5kZXggdHVwbGUgZm9yIGEgZ2xvYmFsIHRlbXBvcmFyeSBpbmRl eCByZWxhdGlvbi4KKyAqLwordm9pZAorVXBkYXRlUGdUZW1wSW5kZXhUdXBsZShPaWQgaW5kZXhy ZWxpZCwgSGVhcFR1cGxlIG5ld3R1cGxlKQoreworCVJlbGF0aW9uCXBnX3RlbXBfaW5kZXg7CisJ SGVhcFR1cGxlCW9sZHR1cGxlOworCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIHBlbmRpbmcgaW5z ZXJ0IGZvciB0aGlzIHJlbGF0aW9uIHRoYXQgaGFzbid0IGJlZW4KKwkgKiBmbHVzaGVkLCB0aGVu IGluc2VydCB0aGUgbmV3IHR1cGxlIGluc3RlYWQsIGFuZCBtYXJrIHRoZSBwZW5kaW5nIGVudHJ5 CisJICogYXMgaW5zZXJ0ZWQsIHNvIHN1YnNlcXVlbnQgZmV0Y2hlcyByZXRyaWV2ZSBpdCBmcm9t IHRoZSBkYXRhYmFzZS4gIE9uCisJICogc3VidHJhbnNhY3Rpb24gcm9sbGJhY2ssIHRoZSBwZW5k aW5nIGVudHJ5IHdpbGwgYmUgdW5tYXJrZWQsIGFuZCBtYXkgYmUKKwkgKiBpbnNlcnRlZCBpbnN0 ZWFkLiAgV2UgaW50ZW50aW9uYWxseSBmbHVzaCB0byB0aGUgZGF0YWJhc2UgaGVyZSBpbiBvcmRl cgorCSAqIHRvIHRyaWdnZXIgY2FjaGUgaW52YWxpZGF0aW9uIGZvciB0aGlzIHJlbGF0aW9uLgor CSAqLworCWlmIChwZW5kaW5nX2luZGV4X2luc2VydHMgIT0gTlVMTCkKKwl7CisJCVBlbmRpbmdJ bnNlcnQgKmVudHJ5OworCisJCWVudHJ5ID0gaGFzaF9zZWFyY2gocGVuZGluZ19pbmRleF9pbnNl cnRzLCAmaW5kZXhyZWxpZCwgSEFTSF9GSU5ELCBOVUxMKTsKKwkJaWYgKGVudHJ5ICE9IE5VTEwp CisJCXsKKwkJCS8qIEVudHJ5IG11c3Qgbm90IGhhdmUgYmVlbiBkZWxldGVkIGluIHRoZSBzYW1l IHN1YnRyYW5zYWN0aW9uICovCisJCQlpZiAoZW50cnktPmRlbGV0ZWRfc3ViaWQgIT0gSW52YWxp ZFN1YlRyYW5zYWN0aW9uSWQpCisJCQkJZWxvZyhFUlJPUiwKKwkJCQkJICJwZW5kaW5nIGluc2Vy dCBmb3IgZ2xvYmFsIHRlbXAgaW5kZXggJXUgd2FzIGRlbGV0ZWQiLAorCQkJCQkgaW5kZXhyZWxp ZCk7CisKKwkJCWlmIChlbnRyeS0+aW5zZXJ0ZWRfc3ViaWQgPT0gSW52YWxpZFN1YlRyYW5zYWN0 aW9uSWQpCisJCQl7CisJCQkJLyogSW5zZXJ0IHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgdHVwbGUg Ki8KKwkJCQlwZ190ZW1wX2luZGV4ID0gb3Blbl9wZ190ZW1wX2luZGV4KFJvd0V4Y2x1c2l2ZUxv Y2spOworCQkJCUNhdGFsb2dUdXBsZUluc2VydChwZ190ZW1wX2luZGV4LCBuZXd0dXBsZSk7CisJ CQkJdGFibGVfY2xvc2UocGdfdGVtcF9pbmRleCwgUm93RXhjbHVzaXZlTG9jayk7CisJCQkJZW50 cnktPmluc2VydGVkX3N1YmlkID0gR2V0Q3VycmVudFN1YlRyYW5zYWN0aW9uSWQoKTsKKwkJCQly ZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBPdGhlcndpc2UsIHVwZGF0ZSB0aGUgcGdfdGVt cF9pbmRleCB0dXBsZSBkaXJlY3RseSAqLworCXBnX3RlbXBfaW5kZXggPSBvcGVuX3BnX3RlbXBf aW5kZXgoUm93RXhjbHVzaXZlTG9jayk7CisKKwlvbGR0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShU RU1QSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleHJlbGlkKSk7CisJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKG9sZHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIGdsb2JhbCB0ZW1wIGluZGV4ICV1IiwgaW5kZXhyZWxpZCk7CisKKwlDYXRhbG9nVHVw bGVVcGRhdGUocGdfdGVtcF9pbmRleCwgJm9sZHR1cGxlLT50X3NlbGYsIG5ld3R1cGxlKTsKKwlS ZWxlYXNlU3lzQ2FjaGUob2xkdHVwbGUpOworCisJdGFibGVfY2xvc2UocGdfdGVtcF9pbmRleCwg Um93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBEZWxldGVQZ1RlbXBDbGFzc1R1cGxlCiAg KgpAQCAtNTA5LDExICs3ODYsMTEgQEAgRGVsZXRlUGdUZW1wQ2xhc3NUdXBsZShPaWQgcmVsaWQp CiAJSGVhcFR1cGxlCW9sZHR1cGxlOwogCiAJLyogSWYgdGhlcmUgaXMgYSBwZW5kaW5nIGluc2Vy dCBmb3IgdGhpcyByZWxhdGlvbiwgbWFyayBpdCBkZWxldGVkICovCi0JaWYgKHBlbmRpbmdfaW5z ZXJ0cyAhPSBOVUxMKQorCWlmIChwZW5kaW5nX2NsYXNzX2luc2VydHMgIT0gTlVMTCkKIAl7CiAJ CVBlbmRpbmdJbnNlcnQgKmVudHJ5OwogCi0JCWVudHJ5ID0gaGFzaF9zZWFyY2gocGVuZGluZ19p bnNlcnRzLCAmcmVsaWQsIEhBU0hfRklORCwgTlVMTCk7CisJCWVudHJ5ID0gaGFzaF9zZWFyY2go cGVuZGluZ19jbGFzc19pbnNlcnRzLCAmcmVsaWQsIEhBU0hfRklORCwgTlVMTCk7CiAJCWlmIChl bnRyeSAhPSBOVUxMKQogCQl7CiAJCQkvKiBFbnRyeSBtdXN0IG5vdCBhbHJlYWR5IGJlIG1hcmtl ZCBkZWxldGVkIGluIHRoaXMgc3VieGFjdCAqLwpAQCAtNTQzLDYgKzgyMCw1MiBAQCBEZWxldGVQ Z1RlbXBDbGFzc1R1cGxlKE9pZCByZWxpZCkKIAl0YWJsZV9jbG9zZShwZ190ZW1wX2NsYXNzLCBS b3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorLyoKKyAqIERlbGV0ZVBnVGVtcEluZGV4VHVwbGUKKyAq CisgKglEZWxldGUgdGhlIHBnX3RlbXBfaW5kZXggdHVwbGUgZm9yIGEgZ2xvYmFsIHRlbXBvcmFy eSBpbmRleCByZWxhdGlvbi4KKyAqLwordm9pZAorRGVsZXRlUGdUZW1wSW5kZXhUdXBsZShPaWQg aW5kZXhyZWxpZCkKK3sKKwlSZWxhdGlvbglwZ190ZW1wX2luZGV4OworCUhlYXBUdXBsZQlvbGR0 dXBsZTsKKworCS8qIElmIHRoZXJlIGlzIGEgcGVuZGluZyBpbnNlcnQgZm9yIHRoaXMgcmVsYXRp b24sIG1hcmsgaXQgZGVsZXRlZCAqLworCWlmIChwZW5kaW5nX2luZGV4X2luc2VydHMgIT0gTlVM TCkKKwl7CisJCVBlbmRpbmdJbnNlcnQgKmVudHJ5OworCisJCWVudHJ5ID0gaGFzaF9zZWFyY2go cGVuZGluZ19pbmRleF9pbnNlcnRzLCAmaW5kZXhyZWxpZCwgSEFTSF9GSU5ELCBOVUxMKTsKKwkJ aWYgKGVudHJ5ICE9IE5VTEwpCisJCXsKKwkJCS8qIEVudHJ5IG11c3Qgbm90IGFscmVhZHkgYmUg bWFya2VkIGRlbGV0ZWQgaW4gdGhpcyBzdWJ4YWN0ICovCisJCQlpZiAoZW50cnktPmRlbGV0ZWRf c3ViaWQgIT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJCQkJZWxvZyhFUlJPUiwKKwkJCQkJ ICJwZW5kaW5nIGluc2VydCBmb3IgZ2xvYmFsIHRlbXAgcmVsYXRpb24gJXUgYWxyZWFkeSBkZWxl dGVkIiwKKwkJCQkJIGluZGV4cmVsaWQpOworCisJCQllbnRyeS0+ZGVsZXRlZF9zdWJpZCA9IEdl dEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCk7CisKKwkJCS8qIElmIG5vdCBpbnNlcnRlZCwgbm90 aGluZyB0byBkbywgZWxzZSBuZWVkIHRvIGRlbGV0ZSBpdCAqLworCQkJaWYgKGVudHJ5LT5pbnNl cnRlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkKKwkJCQlyZXR1cm47CisJCX0K Kwl9CisKKwkvKiBPdGhlcndpc2UsIGRlbGV0ZSB0aGUgdHVwbGUgZnJvbSBwZ190ZW1wX2luZGV4 IGRpcmVjdGx5ICovCisJcGdfdGVtcF9pbmRleCA9IG9wZW5fcGdfdGVtcF9pbmRleChSb3dFeGNs dXNpdmVMb2NrKTsKKworCW9sZHR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKFRFTVBJTkRFWFJFTElE LCBPYmplY3RJZEdldERhdHVtKGluZGV4cmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQo b2xkdHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgZ2xvYmFs IHRlbXAgaW5kZXggJXUiLCBpbmRleHJlbGlkKTsKKworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ190 ZW1wX2luZGV4LCAmb2xkdHVwbGUtPnRfc2VsZik7CisJUmVsZWFzZVN5c0NhY2hlKG9sZHR1cGxl KTsKKworCXRhYmxlX2Nsb3NlKHBnX3RlbXBfaW5kZXgsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQor CiAvKgogICogR2V0UGdDbGFzc0FuZFBnVGVtcENsYXNzVHVwbGVzCiAgKgpAQCAtNTg1LDYgKzkw OCwzOSBAQCBHZXRQZ0NsYXNzQW5kUGdUZW1wQ2xhc3NUdXBsZXMoT2lkIHJlbGlkLCBib29sIGxv Y2tfdHVwbGUsCiAJcmV0dXJuIHR1cGxlOwogfQogCisvKgorICogR2V0UGdJbmRleEFuZFBnVGVt cEluZGV4VHVwbGVzCisgKgorICoJR2V0IHRoZSBwZ19pbmRleCB0dXBsZSBmb3IgYW4gaW5kZXgg cmVsYXRpb24sIGFuZCBpZiBpdCdzIGEgZ2xvYmFsCisgKgl0ZW1wb3JhcnkgaW5kZXggcmVsYXRp b24sIGFsc28gZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHBnX3RlbXBfaW5kZXggdHVwbGUsCisgKglp ZiBwcmVzZW50LgorICoKKyAqCVJldHVybnMgTlVMTCBpZiB0aGUgcGdfaW5kZXggdHVwbGUgY291 bGQgbm90IGJlIGZvdW5kLiAgT3RoZXJ3aXNlLCB0aGUKKyAqCXR1cGxlKHMpIHJldHVybmVkIHNo b3VsZCBiZSBmcmVlZCB3aXRoIGhlYXBfZnJlZXR1cGxlKCkuCisgKi8KK0hlYXBUdXBsZQorR2V0 UGdJbmRleEFuZFBnVGVtcEluZGV4VHVwbGVzKE9pZCBpbmRleHJlbGlkLCBIZWFwVHVwbGUgKnRl bXBfdHVwbGUsCisJCQkJCQkJICAgYm9vbCBjaGVja190ZW1wKQoreworCUhlYXBUdXBsZQl0dXBs ZTsKKworCS8qIEdldCBhIGNvcHkgb2YgdGhlIHBnX2luZGV4IHR1cGxlICovCisJdHVwbGUgPSBT ZWFyY2hTeXNDYWNoZUNvcHkxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0oaW5kZXhyZWxp ZCkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUpICYmCisJCXJlbF9pc19nbG9iYWxf dGVtcCgoKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVCh0dXBsZSkpLT5pbmRleHJlbGlkKSkKKwl7 CisJCS8qIEdldCB0aGUgcGdfdGVtcF9pbmRleCB0dXBsZSwgYW5kIGNoZWNrIGl0IGV4aXN0cywg aWYgcmVxdWVzdGVkICovCisJCSp0ZW1wX3R1cGxlID0gR2V0UGdUZW1wSW5kZXhUdXBsZShpbmRl eHJlbGlkKTsKKwkJaWYgKGNoZWNrX3RlbXAgJiYgIUhlYXBUdXBsZUlzVmFsaWQoKnRlbXBfdHVw bGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGdsb2JhbCB0ZW1w IGluZGV4ICV1IiwgaW5kZXhyZWxpZCk7CisJfQorCWVsc2UKKwkJKnRlbXBfdHVwbGUgPSBOVUxM OworCisJcmV0dXJuIHR1cGxlOworfQorCiAvKgogICogR2V0RWZmZWN0aXZlUGdDbGFzc1R1cGxl CiAgKgpAQCAtNjI2LDYgKzk4Miw0NyBAQCBHZXRFZmZlY3RpdmVQZ0NsYXNzVHVwbGUoT2lkIHJl bGlkKQogCXJldHVybiB0dXBsZTsKIH0KIAorLyoKKyAqIEdldEVmZmVjdGl2ZVBnSW5kZXhUdXBs ZQorICoKKyAqCUdldCB0aGUgZWZmZWN0aXZlIHBnX2luZGV4IHR1cGxlIGZvciBhbiBpbmRleCBy ZWxhdGlvbi4KKyAqCisgKglUaGlzIHdpbGwgZmV0Y2ggdGhlIHBnX2luZGV4IHR1cGxlIGZvciB0 aGUgcmVsYXRpb24gYW5kIHRoZW4sIGlmIGl0J3MgYQorICoJZ2xvYmFsIHRlbXBvcmFyeSByZWxh dGlvbiwgZmV0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgcGdfdGVtcF9pbmRleCB0dXBsZSBhbmQKKyAq CXVzZSB0aGUgdmFsdWVzIGluIGl0IHRvIG92ZXJyaWRlIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVl cyBpbiB0aGUgcGdfaW5kZXgKKyAqCXR1cGxlIChjdXJyZW50bHkganVzdCBpbmRpc3ZhbGlkKS4g IFRodXMsIHRoZSByZXN1bHQgcmVwcmVzZW50cyB0aGUKKyAqCWVmZmVjdGl2ZSBzdGF0ZSBvZiB0 aGUgaW5kZXggcmVsYXRpb24gaW4gdGhpcyBzZXNzaW9uLgorICoKKyAqCUZvciBhIGdsb2JhbCB0 ZW1wb3JhcnkgaW5kZXggcmVsYXRpb24gdGhhdCBoYXMgbm90IHlldCBiZWVuIG9wZW5lZCBpbiB0 aGlzCisgKglzZXNzaW9uLCB0aGVyZSB3aWxsIGJlIG5vIHBnX3RlbXBfaW5kZXggdHVwbGUsIGFu ZCB0aGUgcGdfaW5kZXggdHVwbGUgd2lsbAorICoJYmUgcmV0dXJuZWQgdW5jaGFuZ2VkLgorICoK KyAqCVJldHVybnMgTlVMTCBpZiB0aGUgcGdfaW5kZXggdHVwbGUgY291bGQgbm90IGJlIGZvdW5k LiAgT3RoZXJ3aXNlLCB0aGUKKyAqCXR1cGxlIHJldHVybmVkIHNob3VsZCBiZSBmcmVlZCB3aXRo IGhlYXBfZnJlZXR1cGxlKCkuCisgKi8KK0hlYXBUdXBsZQorR2V0RWZmZWN0aXZlUGdJbmRleFR1 cGxlKE9pZCBpbmRleHJlbGlkKQoreworCUhlYXBUdXBsZQl0dXBsZTsKKwlIZWFwVHVwbGUJdGVt cF90dXBsZTsKKwlGb3JtX3BnX2luZGV4IGluZGV4Zm9ybTsKKwlGb3JtX3BnX3RlbXBfaW5kZXgg dGVtcF9pbmRleGZvcm07CisKKwkvKgorCSAqIEdldCB0aGUgcGdfaW5kZXggYW5kIHBnX3RlbXBf aW5kZXggdHVwbGVzLiAgSWYgd2UgaGF2ZSB0aGUgbGF0dGVyLCB1c2UKKwkgKiBpdCB0byB1cGRh dGUgdGhlIGZvcm1lci4KKwkgKi8KKwl0dXBsZSA9IEdldFBnSW5kZXhBbmRQZ1RlbXBJbmRleFR1 cGxlcyhpbmRleHJlbGlkLCAmdGVtcF90dXBsZSwgZmFsc2UpOworCisJaWYgKEhlYXBUdXBsZUlz VmFsaWQodHVwbGUpICYmIEhlYXBUdXBsZUlzVmFsaWQodGVtcF90dXBsZSkpCisJeworCQlpbmRl eGZvcm0gPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKHR1cGxlKTsKKwkJdGVtcF9pbmRleGZv cm0gPSAoRm9ybV9wZ190ZW1wX2luZGV4KSBHRVRTVFJVQ1QodGVtcF90dXBsZSk7CisJCWluZGV4 Zm9ybS0+aW5kaXN2YWxpZCA9IHRlbXBfaW5kZXhmb3JtLT5pbmRpc3ZhbGlkOworCX0KKwlyZXR1 cm4gdHVwbGU7Cit9CisKIC8qCiAgKiBVcGRhdGVUZW1wRnJvemVuWGlkcwogICoKQEAgLTY1NSwx MCArMTA1MiwxMCBAQCBVcGRhdGVUZW1wRnJvemVuWGlkcyh2b2lkKQogCW1pbl9yZWxmcm96ZW54 aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAltaW5fcmVsbWlubXhpZCA9IEludmFsaWRNdWx0 aVhhY3RJZDsKIAotCS8qIFByb2Nlc3NpbmcgYW55IHBlbmRpbmcgaW5zZXJ0cyAqLwotCWlmIChw ZW5kaW5nX2luc2VydHMgIT0gTlVMTCkKKwkvKiBQcm9jZXNzaW5nIGFueSBwZW5kaW5nIHBnX3Rl bXBfY2xhc3MgaW5zZXJ0cyAqLworCWlmIChwZW5kaW5nX2NsYXNzX2luc2VydHMgIT0gTlVMTCkK IAl7Ci0JCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgcGVuZGluZ19pbnNlcnRzKTsKKwkJaGFzaF9z ZXFfaW5pdCgmc3RhdHVzLCBwZW5kaW5nX2NsYXNzX2luc2VydHMpOwogCQl3aGlsZSAoKGVudHJ5 ID0gaGFzaF9zZXFfc2VhcmNoKCZzdGF0dXMpKSAhPSBOVUxMKQogCQl7CiAJCQl0ZW1wX2Zvcm0g PSAoRm9ybV9wZ190ZW1wX2NsYXNzKSBHRVRTVFJVQ1QoZW50cnktPnR1cGxlKTsKQEAgLTc0MCw3 ICsxMTM3LDcgQEAgdm9pZAogUHJlQ0NJX1BnVGVtcENsYXNzKHZvaWQpCiB7CiAJaWYgKGhhdmVf aW5zZXJ0c190b19mbHVzaCkKLQkJZmx1c2hfcGVuZGluZ19wZ190ZW1wX2NsYXNzX2luc2VydHMo KTsKKwkJZmx1c2hfcGVuZGluZ19pbnNlcnRzKCk7CiB9CiAKIC8qCkBAIC03NTIsNyArMTE0OSw3 IEBAIHZvaWQKIFByZUNvbW1pdF9QZ1RlbXBDbGFzcyh2b2lkKQogewogCWlmIChoYXZlX2luc2Vy dHNfdG9fZmx1c2gpCi0JCWZsdXNoX3BlbmRpbmdfcGdfdGVtcF9jbGFzc19pbnNlcnRzKCk7CisJ CWZsdXNoX3BlbmRpbmdfaW5zZXJ0cygpOwogfQogCiAvKgpAQCAtNzY0LDcgKzExNjEsNyBAQCB2 b2lkCiBQcmVTdWJDb21taXRfUGdUZW1wQ2xhc3Modm9pZCkKIHsKIAlpZiAoaGF2ZV9pbnNlcnRz X3RvX2ZsdXNoKQotCQlmbHVzaF9wZW5kaW5nX3BnX3RlbXBfY2xhc3NfaW5zZXJ0cygpOworCQlm bHVzaF9wZW5kaW5nX2luc2VydHMoKTsKIH0KIAogLyoKQEAgLTc4MywxMyArMTE4MCwxNyBAQCBB dEVPWGFjdF9QZ1RlbXBDbGFzcyhib29sIGlzQ29tbWl0KQogCQlwZ190ZW1wX2NsYXNzX29wZW5l ZCA9IGZhbHNlOwogCXBnX3RlbXBfY2xhc3Nfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25J ZDsKIAorCS8qIExpa2V3aXNlIGZvciBwZ190ZW1wX2luZGV4ICovCisJaWYgKCFpc0NvbW1pdCAm JiBwZ190ZW1wX2luZGV4X3N1YmlkICE9IEludmFsaWRTdWJUcmFuc2FjdGlvbklkKQorCQlwZ190 ZW1wX2luZGV4X29wZW5lZCA9IGZhbHNlOworCXBnX3RlbXBfaW5kZXhfc3ViaWQgPSBJbnZhbGlk U3ViVHJhbnNhY3Rpb25JZDsKKwogCS8qCi0JICogQmxvdyBhd2F5IHRoZSBwZW5kaW5nIGluc2Vy dHMgaGFzaCB0YWJsZS4gIE9uIGNvbW1pdCwgdGhlcmUgc2hvdWxkIGJlCisJICogQmxvdyBhd2F5 IHRoZSBwZW5kaW5nIGluc2VydHMgaGFzaCB0YWJsZXMuICBPbiBjb21taXQsIHRoZXJlIHNob3Vs ZCBiZQogCSAqIG5vIHJlbWFpbmluZyBpbnNlcnRzIHRvIGZsdXNoLCBidXQgb24gcm9sbGJhY2ss IHRoZXJlIG1heSBiZS4KIAkgKi8KIAlBc3NlcnQoIShpc0NvbW1pdCAmJiBoYXZlX2luc2VydHNf dG9fZmx1c2gpKTsKLQlpZiAocGVuZGluZ19pbnNlcnRzICE9IE5VTEwpCi0JCWRpc2NhcmRfcGVu ZGluZ19wZ190ZW1wX2NsYXNzX2luc2VydHMoKTsKKwlkaXNjYXJkX3BlbmRpbmdfaW5zZXJ0cygp OwogCiAJLyoKIAkgKiBPbiBjb21taXQsIHNhdmUgYW55IG5ldyB0ZW1wZnJvemVueGlkIGFuZCB0 ZW1wbWlubXhpZCB2YWx1ZXMgdG8gb3VyCkBAIC04MDMsNiArMTIwNCw1NiBAQCBBdEVPWGFjdF9Q Z1RlbXBDbGFzcyhib29sIGlzQ29tbWl0KQogCW1pbl9mcm96ZW54aWRzX3VwZGF0ZWQgPSBmYWxz ZTsKIH0KIAorLyoKKyAqIEF0RU9TdWJYYWN0X1BlbmRpbmdJbnNlcnRDbGVhbnVwCisgKgorICoJ U3ViLXRyYW5zYWN0aW9uIGNvbW1pdCBvciBhYm9ydCBjbGVhbnVwIGZvciBhIHNpbmdsZSBwZ190 ZW1wX2NsYXNzIG9yCisgKglwZ190ZW1wX2luZGV4IHBlbmRpbmcgaW5zZXJ0IGVudHJ5LgorICov CitzdGF0aWMgdm9pZAorQXRFT1N1YlhhY3RfUGVuZGluZ0luc2VydENsZWFudXAoSFRBQiAqcGVu ZGluZ19pbnNlcnRzLCBQZW5kaW5nSW5zZXJ0ICplbnRyeSwKKwkJCQkJCQkJIGJvb2wgaXNDb21t aXQsIFN1YlRyYW5zYWN0aW9uSWQgbXlTdWJpZCwKKwkJCQkJCQkJIFN1YlRyYW5zYWN0aW9uSWQg cGFyZW50U3ViaWQpCit7CisJLyoKKwkgKiBXYXMgdGhlIHBlbmRpbmcgaW5zZXJ0IGVudHJ5IGNy ZWF0ZWQgaW4gdGhlIGN1cnJlbnQgc3VidHJhbnNhY3Rpb24/CisJICoKKwkgKiBEdXJpbmcgc3Vi Y29tbWl0LCBtYXJrIGlzIGFzIGNyZWF0ZWQgaW4gdGhlIHBhcmVudCwgaW5zdGVhZCwgYXMgbG9u ZyBhcworCSAqIGl0IGhhcyBub3QgYmVlbiBkZWxldGVkLiAgT3RoZXJ3aXNlLCBkaXNjYXJkIHRo ZSBlbnRyeS4KKwkgKi8KKwlpZiAoZW50cnktPmNyZWF0ZWRfc3ViaWQgPT0gbXlTdWJpZCkKKwl7 CisJCUFzc2VydChlbnRyeS0+ZGVsZXRlZF9zdWJpZCA9PSBteVN1YmlkIHx8CisJCQkgICBlbnRy eS0+ZGVsZXRlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCk7CisKKwkJaWYgKGlz Q29tbWl0ICYmIGVudHJ5LT5kZWxldGVkX3N1YmlkID09IEludmFsaWRTdWJUcmFuc2FjdGlvbklk KQorCQkJZW50cnktPmNyZWF0ZWRfc3ViaWQgPSBwYXJlbnRTdWJpZDsKKwkJZWxzZQorCQkJaGFz aF9zZWFyY2gocGVuZGluZ19pbnNlcnRzLCAmZW50cnktPnJlbGlkLCBIQVNIX1JFTU9WRSwgTlVM TCk7CisJfQorCisJLyogVXBkYXRlIHRoZSBpbnNlcnRlZCBzdWJpZCAobWF5IHJvbGxiYWNrIGZs dXNoKSAqLworCWlmIChlbnRyeS0+aW5zZXJ0ZWRfc3ViaWQgPT0gbXlTdWJpZCkKKwl7CisJCWlm IChpc0NvbW1pdCkKKwkJCWVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9IHBhcmVudFN1YmlkOworCQll bHNlCisJCXsKKwkJCWVudHJ5LT5pbnNlcnRlZF9zdWJpZCA9IEludmFsaWRTdWJUcmFuc2FjdGlv bklkOworCQkJaGF2ZV9pbnNlcnRzX3RvX2ZsdXNoID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qIFVw ZGF0ZSB0aGUgZGVsZXRlZCBzdWJpZCAqLworCWlmIChlbnRyeS0+ZGVsZXRlZF9zdWJpZCA9PSBt eVN1YmlkKQorCXsKKwkJaWYgKGlzQ29tbWl0KQorCQkJZW50cnktPmRlbGV0ZWRfc3ViaWQgPSBw YXJlbnRTdWJpZDsKKwkJZWxzZQorCQkJZW50cnktPmRlbGV0ZWRfc3ViaWQgPSBJbnZhbGlkU3Vi VHJhbnNhY3Rpb25JZDsKKwl9Cit9CisKIC8qCiAgKiBBdEVPU3ViWGFjdF9QZ1RlbXBDbGFzcwog ICoKQEAgLTgxMiw2ICsxMjYzLDkgQEAgdm9pZAogQXRFT1N1YlhhY3RfUGdUZW1wQ2xhc3MoYm9v bCBpc0NvbW1pdCwgU3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQkJCQkJU3ViVHJhbnNhY3Rp b25JZCBwYXJlbnRTdWJpZCkKIHsKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCVBlbmRpbmdJ bnNlcnQgKmVudHJ5OworCiAJLyoKIAkgKiBXYXMgcGdfdGVtcF9jbGFzcyBmaXJzdCBvcGVuZWQg YW5kIGluaXRpYWxpemVkIGluIHRoZSBjdXJyZW50CiAJICogc3VidHJhbnNhY3Rpb24/CkBAIC04 MzAsNTQgKzEyODQsMzcgQEAgQXRFT1N1YlhhY3RfUGdUZW1wQ2xhc3MoYm9vbCBpc0NvbW1pdCwg U3ViVHJhbnNhY3Rpb25JZCBteVN1YmlkLAogCQl9CiAJfQogCi0JLyoKLQkgKiBUaWR5IHVwIGFu eSBwZW5kaW5nIGluc2VydHMuCi0JICovCi0JaWYgKHBlbmRpbmdfaW5zZXJ0cyAhPSBOVUxMKQor CS8qIExpa2V3aXNlIGZvciBwZ190ZW1wX2luZGV4ICovCisJaWYgKHBnX3RlbXBfaW5kZXhfc3Vi aWQgPT0gbXlTdWJpZCkKIAl7Ci0JCUhBU0hfU0VRX1NUQVRVUyBzdGF0dXM7Ci0JCVBlbmRpbmdJ bnNlcnQgKmVudHJ5OworCQlpZiAoaXNDb21taXQpCisJCQlwZ190ZW1wX2luZGV4X3N1YmlkID0g cGFyZW50U3ViaWQ7CisJCWVsc2UKKwkJeworCQkJcGdfdGVtcF9pbmRleF9vcGVuZWQgPSBmYWxz ZTsKKwkJCXBnX3RlbXBfaW5kZXhfc3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKKwkJ fQorCX0KIAotCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHBlbmRpbmdfaW5zZXJ0cyk7CisJLyog VGlkeSB1cCBhbnkgcGVuZGluZyBwZ190ZW1wX2NsYXNzIGluc2VydHMgKi8KKwlpZiAocGVuZGlu Z19jbGFzc19pbnNlcnRzICE9IE5VTEwpCisJeworCQloYXNoX3NlcV9pbml0KCZzdGF0dXMsIHBl bmRpbmdfY2xhc3NfaW5zZXJ0cyk7CiAJCXdoaWxlICgoZW50cnkgPSBoYXNoX3NlcV9zZWFyY2go JnN0YXR1cykpICE9IE5VTEwpCiAJCXsKLQkJCS8qCi0JCQkgKiBXYXMgdGhlIHBlbmRpbmcgZW50 cnkgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBzdWJ0cmFuc2FjdGlvbj8KLQkJCSAqCi0JCQkgKiBE dXJpbmcgc3ViY29tbWl0LCBtYXJrIGlzIGFzIGNyZWF0ZWQgaW4gdGhlIHBhcmVudCwgaW5zdGVh ZCwgYXMKLQkJCSAqIGxvbmcgYXMgaXQgaGFzIG5vdCBiZWVuIGRlbGV0ZWQuICBPdGhlcndpc2Us IGRpc2NhcmQgdGhlIGVudHJ5LgotCQkJICovCi0JCQlpZiAoZW50cnktPmNyZWF0ZWRfc3ViaWQg PT0gbXlTdWJpZCkKLQkJCXsKLQkJCQlBc3NlcnQoZW50cnktPmRlbGV0ZWRfc3ViaWQgPT0gbXlT dWJpZCB8fAotCQkJCQkgICBlbnRyeS0+ZGVsZXRlZF9zdWJpZCA9PSBJbnZhbGlkU3ViVHJhbnNh Y3Rpb25JZCk7Ci0KLQkJCQlpZiAoaXNDb21taXQgJiYgZW50cnktPmRlbGV0ZWRfc3ViaWQgPT0g SW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCi0JCQkJCWVudHJ5LT5jcmVhdGVkX3N1YmlkID0gcGFy ZW50U3ViaWQ7Ci0JCQkJZWxzZQotCQkJCQloYXNoX3NlYXJjaChwZW5kaW5nX2luc2VydHMsICZl bnRyeS0+cmVsaWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKLQkJCX0KLQotCQkJLyogVXBkYXRlIHRo ZSBpbnNlcnRlZCBzdWJpZCAobWF5IHJvbGxiYWNrIGZsdXNoKSAqLwotCQkJaWYgKGVudHJ5LT5p bnNlcnRlZF9zdWJpZCA9PSBteVN1YmlkKQotCQkJewotCQkJCWlmIChpc0NvbW1pdCkKLQkJCQkJ ZW50cnktPmluc2VydGVkX3N1YmlkID0gcGFyZW50U3ViaWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJ CQkJZW50cnktPmluc2VydGVkX3N1YmlkID0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQ7Ci0JCQkJ CWhhdmVfaW5zZXJ0c190b19mbHVzaCA9IHRydWU7Ci0JCQkJfQotCQkJfQorCQkJQXRFT1N1Ylhh Y3RfUGVuZGluZ0luc2VydENsZWFudXAocGVuZGluZ19jbGFzc19pbnNlcnRzLCBlbnRyeSwKKwkJ CQkJCQkJCQkJIGlzQ29tbWl0LCBteVN1YmlkLCBwYXJlbnRTdWJpZCk7CisJCX0KKwl9CiAKLQkJ CS8qIFVwZGF0ZSB0aGUgZGVsZXRlZCBzdWJpZCAqLwotCQkJaWYgKGVudHJ5LT5kZWxldGVkX3N1 YmlkID09IG15U3ViaWQpCi0JCQl7Ci0JCQkJaWYgKGlzQ29tbWl0KQotCQkJCQllbnRyeS0+ZGVs ZXRlZF9zdWJpZCA9IHBhcmVudFN1YmlkOwotCQkJCWVsc2UKLQkJCQkJZW50cnktPmRlbGV0ZWRf c3ViaWQgPSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZDsKLQkJCX0KKwkvKiBMaWtld2lzZSBmb3Ig cGdfdGVtcF9pbmRleCAqLworCWlmIChwZW5kaW5nX2luZGV4X2luc2VydHMgIT0gTlVMTCkKKwl7 CisJCWhhc2hfc2VxX2luaXQoJnN0YXR1cywgcGVuZGluZ19pbmRleF9pbnNlcnRzKTsKKwkJd2hp bGUgKChlbnRyeSA9IGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkKKwkJeworCQkJ QXRFT1N1YlhhY3RfUGVuZGluZ0luc2VydENsZWFudXAocGVuZGluZ19pbmRleF9pbnNlcnRzLCBl bnRyeSwKKwkJCQkJCQkJCQkJIGlzQ29tbWl0LCBteVN1YmlkLCBwYXJlbnRTdWJpZCk7CiAJCX0K IAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IDhiYWFjNThlZjgxLi5iZWI5MGJh MDlhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFz cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfdGVtcF9jbGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGVtcF9pbmRleC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1lbnQu aCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKQEAgLTI2OSw3ICsyNzEsNyBAQCBDaGVj a0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgMCwgTlVMTCk7CiAKIAkvKiBHZXQg dGhlIHNvb24tb2Jzb2xldGUgcGdfaW5kZXggdHVwbGUuICovCi0JdHVwbGUgPSBTZWFyY2hTeXND YWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShvbGRJZCkpOworCXR1cGxlID0gR2V0 RWZmZWN0aXZlUGdJbmRleFR1cGxlKG9sZElkKTsKIAlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVw bGUpKQogCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBv bGRJZCk7CiAJaW5kZXhGb3JtID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVCh0dXBsZSk7CkBA IC0yODIsNyArMjg0LDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkgIGhl YXBfYXR0aXNudWxsKHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSAmJgogCQkg IGluZGV4Rm9ybS0+aW5kaXN2YWxpZCkpCiAJewotCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwor CQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTI5OSw3 ICszMDEsNyBAQCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJcmV0ID0gKG1lbWNt cChvbGRfaW5kY2xhc3MtPnZhbHVlcywgb3BjbGFzc0lkcywgb2xkX25hdHRzICogc2l6ZW9mKE9p ZCkpID09IDAgJiYKIAkJICAgbWVtY21wKG9sZF9pbmRjb2xsYXRpb24tPnZhbHVlcywgY29sbGF0 aW9uSWRzLCBvbGRfbmF0dHMgKiBzaXplb2YoT2lkKSkgPT0gMCk7CiAKLQlSZWxlYXNlU3lzQ2Fj aGUodHVwbGUpOworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKIAogCWlmICghcmV0KQogCQlyZXR1 cm4gZmFsc2U7CkBAIC0xNTgxLDE5ICsxNTgzLDM2IEBAIERlZmluZUluZGV4KFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJCXsKIAkJCQlSZWxhdGlvbglwZ19pbmRleCA9IHRhYmxlX29wZW4oSW5kZXhS ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAkJCQlIZWFwVHVwbGUJdHVwLAotCQkJCQkJ CW5ld3R1cDsKKwkJCQkJCQl0ZW1wX3R1cDsKKwkJCQlGb3JtX3BnX2luZGV4IGZvcm07CisJCQkJ Rm9ybV9wZ190ZW1wX2luZGV4IHRlbXBfZm9ybTsKIAotCQkJCXR1cCA9IFNlYXJjaFN5c0NhY2hl MShJTkRFWFJFTElELAotCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKGluZGV4UmVsYXRpb25J ZCkpOworCQkJCS8qCisJCQkJICogRm9yIGEgZ2xvYmFsIHRlbXBvcmFyeSBpbmRleCwgd2UgdXBk YXRlIGluZGlzdmFsaWQgaW4gYm90aAorCQkJCSAqIHBnX2luZGV4IGFuZCBwZ190ZW1wX2luZGV4 LCBzbyB0aGF0IHRoZSBjaGFuZ2UgYXBwbGllcyB0bworCQkJCSAqIHRoaXMgc2Vzc2lvbiBhbmQg YWxsIGZ1dHVyZSBzZXNzaW9ucy4KKwkJCQkgKi8KKwkJCQl0dXAgPSBHZXRQZ0luZGV4QW5kUGdU ZW1wSW5kZXhUdXBsZXMoaW5kZXhSZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCSAmdGVtcF90dXAs IHRydWUpOwogCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQogCQkJCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLAogCQkJCQkJIGluZGV4UmVsYXRp b25JZCk7Ci0JCQkJbmV3dHVwID0gaGVhcF9jb3B5dHVwbGUodHVwKTsKLQkJCQkoKEZvcm1fcGdf aW5kZXgpIEdFVFNUUlVDVChuZXd0dXApKS0+aW5kaXN2YWxpZCA9IGZhbHNlOwotCQkJCUNhdGFs b2dUdXBsZVVwZGF0ZShwZ19pbmRleCwgJnR1cC0+dF9zZWxmLCBuZXd0dXApOwotCQkJCVJlbGVh c2VTeXNDYWNoZSh0dXApOworCQkJCWZvcm0gPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKHR1 cCk7CisJCQkJdGVtcF9mb3JtID0gKEZvcm1fcGdfdGVtcF9pbmRleCkgR0VUU1RSVUNUX1NBRkUo dGVtcF90dXApOworCisJCQkJZm9ybS0+aW5kaXN2YWxpZCA9IGZhbHNlOworCQkJCWlmICh0ZW1w X2Zvcm0gIT0gTlVMTCkKKwkJCQkJdGVtcF9mb3JtLT5pbmRpc3ZhbGlkID0gZmFsc2U7CisKKwkJ CQlDYXRhbG9nVHVwbGVVcGRhdGUocGdfaW5kZXgsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKwkJCQlp ZiAoSGVhcFR1cGxlSXNWYWxpZCh0ZW1wX3R1cCkpCisJCQkJeworCQkJCQlVcGRhdGVQZ1RlbXBJ bmRleFR1cGxlKGluZGV4UmVsYXRpb25JZCwgdGVtcF90dXApOworCQkJCQloZWFwX2ZyZWV0dXBs ZSh0ZW1wX3R1cCk7CisJCQkJfQorCisJCQkJaGVhcF9mcmVldHVwbGUodHVwKTsKIAkJCQl0YWJs ZV9jbG9zZShwZ19pbmRleCwgUm93RXhjbHVzaXZlTG9jayk7Ci0JCQkJaGVhcF9mcmVldHVwbGUo bmV3dHVwKTsKIAogCQkJCS8qCiAJCQkJICogQ0NJIGhlcmUgdG8gbWFrZSB0aGlzIHVwZGF0ZSB2 aXNpYmxlLCBpbiBjYXNlIHRoaXMgcmVjdXJzZXMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3JlcGFjay5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcmVwYWNrLmMKaW5kZXggMGM3 MDRhNTMxYjIuLjJlYzBiY2FjYTI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9y ZXBhY2suYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9yZXBhY2suYwpAQCAtODY4LDggKzg2 OCw3IEBAIG1hcmtfaW5kZXhfY2x1c3RlcmVkKFJlbGF0aW9uIHJlbCwgT2lkIGluZGV4T2lkLCBi b29sIGlzX2ludGVybmFsKQogCXsKIAkJT2lkCQkJdGhpc0luZGV4T2lkID0gbGZpcnN0X29pZChp bmRleCk7CiAKLQkJaW5kZXhUdXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoSU5ERVhSRUxJRCwK LQkJCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bSh0aGlzSW5kZXhPaWQpKTsKKwkJaW5kZXhUdXBs ZSA9IEdldEVmZmVjdGl2ZVBnSW5kZXhUdXBsZSh0aGlzSW5kZXhPaWQpOwogCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCiAJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgaW5kZXggJXUiLCB0aGlzSW5kZXhPaWQpOwogCQlpbmRleEZvcm0gPSAoRm9ybV9w Z19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpp bmRleCBkMzM5NGZmZmQ2MS4uNGRmZjM5NjkwOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190ZW1wX2NsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCkBAIC0xODU5LDcgKzE4NjAsNyBAQCBSYW5n ZVZhckNhbGxiYWNrRm9yRHJvcFJlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWwsIE9pZCByZWxP aWQsIE9pZCBvbGRSZWxPaWQsCiAJCUZvcm1fcGdfaW5kZXggaW5kZXhmb3JtOwogCQlib29sCQlp bmRpc3ZhbGlkOwogCi0JCWxvY1R1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9i amVjdElkR2V0RGF0dW0ocmVsT2lkKSk7CisJCWxvY1R1cGxlID0gR2V0RWZmZWN0aXZlUGdJbmRl eFR1cGxlKHJlbE9pZCk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZChsb2NUdXBsZSkpCiAJCXsK IAkJCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CkBAIC0xODY4LDcgKzE4NjksNyBAQCBSYW5nZVZh ckNhbGxiYWNrRm9yRHJvcFJlbGF0aW9uKGNvbnN0IFJhbmdlVmFyICpyZWwsIE9pZCByZWxPaWQs IE9pZCBvbGRSZWxPaWQsCiAKIAkJaW5kZXhmb3JtID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVD VChsb2NUdXBsZSk7CiAJCWluZGlzdmFsaWQgPSBpbmRleGZvcm0tPmluZGlzdmFsaWQ7Ci0JCVJl bGVhc2VTeXNDYWNoZShsb2NUdXBsZSk7CisJCWhlYXBfZnJlZXR1cGxlKGxvY1R1cGxlKTsKIAog CQkvKiBNYXJrIG9iamVjdCBhcyBiZWluZyBhbiBpbnZhbGlkIGluZGV4IG9mIHN5c3RlbSBjYXRh bG9ncyAqLwogCQlpZiAoIWluZGlzdmFsaWQpCkBAIC0xNDAwNCw3ICsxNDAwNSw3IEBAIHRyYW5z Zm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCXsK IAkJT2lkCQkJaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CiAKLQkJaW5kZXhU dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVtKGluZGV4 b2lkKSk7CisJCWluZGV4VHVwbGUgPSBHZXRFZmZlY3RpdmVQZ0luZGV4VHVwbGUoaW5kZXhvaWQp OwogCQlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCiAJCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleG9pZCk7CiAJCWluZGV4U3Ry dWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKQEAgLTE0MDI0LDcg KzE0MDI1LDcgQEAgdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9p ZCAqaW5kZXhPaWQsCiAJCQkqaW5kZXhPaWQgPSBpbmRleG9pZDsKIAkJCWJyZWFrOwogCQl9Ci0J CVJlbGVhc2VTeXNDYWNoZShpbmRleFR1cGxlKTsKKwkJaGVhcF9mcmVldHVwbGUoaW5kZXhUdXBs ZSk7CiAJfQogCiAJbGlzdF9mcmVlKGluZGV4b2lkbGlzdCk7CkBAIC0xNDA2Miw3ICsxNDA2Myw3 IEBAIHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4 T2lkLAogCiAJKnBrX2hhc193aXRob3V0X292ZXJsYXBzID0gaW5kZXhTdHJ1Y3QtPmluZGlzZXhj bHVzaW9uOwogCi0JUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOworCWhlYXBfZnJlZXR1cGxl KGluZGV4VHVwbGUpOwogCiAJcmV0dXJuIGk7CiB9CkBAIC0xNDEyNSw3ICsxNDEyNiw3IEBAIHRy YW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQlGb3JtX3BnX2luZGV4IGlu ZGV4U3RydWN0OwogCiAJCWluZGV4b2lkID0gbGZpcnN0X29pZChpbmRleG9pZHNjYW4pOwotCQlp bmRleFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0o aW5kZXhvaWQpKTsKKwkJaW5kZXhUdXBsZSA9IEdldEVmZmVjdGl2ZVBnSW5kZXhUdXBsZShpbmRl eG9pZCk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRleFR1cGxlKSkKIAkJCWVsb2coRVJS T1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBpbmRleCAldSIsIGluZGV4b2lkKTsKIAkJaW5k ZXhTdHJ1Y3QgPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwpAQCAtMTQy MDEsNyArMTQyMDIsNyBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwK IAkJCWlmIChmb3VuZCkKIAkJCQkqcGtfaGFzX3dpdGhvdXRfb3ZlcmxhcHMgPSBpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb247CiAJCX0KLQkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOwor CQloZWFwX2ZyZWV0dXBsZShpbmRleFR1cGxlKTsKIAkJaWYgKGZvdW5kKQogCQkJYnJlYWs7CiAJ fQpAQCAtMjI0ODksMTQgKzIyNDkwLDEzIEBAIHZhbGlkYXRlUGFydGl0aW9uZWRJbmRleChSZWxh dGlvbiBwYXJ0ZWRJZHgsIFJlbGF0aW9uIHBhcnRlZFRibCkKIAkJSGVhcFR1cGxlCWluZFR1cDsK IAkJRm9ybV9wZ19pbmRleCBpbmRleEZvcm07CiAKLQkJaW5kVHVwID0gU2VhcmNoU3lzQ2FjaGUx KElOREVYUkVMSUQsCi0JCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKGluaEZvcm0tPmluaHJlbGlk KSk7CisJCWluZFR1cCA9IEdldEVmZmVjdGl2ZVBnSW5kZXhUdXBsZShpbmhGb3JtLT5pbmhyZWxp ZCk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRUdXApKQogCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5oRm9ybS0+aW5ocmVsaWQpOwogCQlp bmRleEZvcm0gPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGluZFR1cCk7CiAJCWlmIChpbmRl eEZvcm0tPmluZGlzdmFsaWQpCiAJCQl0dXBsZXMgKz0gMTsKLQkJUmVsZWFzZVN5c0NhY2hlKGlu ZFR1cCk7CisJCWhlYXBfZnJlZXR1cGxlKGluZFR1cCk7CiAJfQogCiAJLyogRG9uZSB3aXRoIHBn X2luaGVyaXRzICovCkBAIC0yMjUxMSwyMCArMjI1MTEsMzUgQEAgdmFsaWRhdGVQYXJ0aXRpb25l ZEluZGV4KFJlbGF0aW9uIHBhcnRlZElkeCwgUmVsYXRpb24gcGFydGVkVGJsKQogCXsKIAkJUmVs YXRpb24JaWR4UmVsOwogCQlIZWFwVHVwbGUJaW5kVHVwOworCQlIZWFwVHVwbGUJdGVtcF9pbmRU dXA7CiAJCUZvcm1fcGdfaW5kZXggaW5kZXhGb3JtOworCQlGb3JtX3BnX3RlbXBfaW5kZXggdGVt cF9pbmRleEZvcm07CiAKKwkJLyoKKwkJICogRm9yIGEgZ2xvYmFsIHRlbXBvcmFyeSBpbmRleCwg d2UgdXBkYXRlIGluZGlzdmFsaWQgaW4gYm90aCBwZ19pbmRleAorCQkgKiBhbmQgcGdfdGVtcF9p bmRleCwgc28gdGhhdCB0aGUgY2hhbmdlIGFwcGxpZXMgdG8gdGhpcyBzZXNzaW9uIGFuZAorCQkg KiBhbGwgZnV0dXJlIHNlc3Npb25zLgorCQkgKi8KIAkJaWR4UmVsID0gdGFibGVfb3BlbihJbmRl eFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwotCQlpbmRUdXAgPSBTZWFyY2hTeXNDYWNo ZUNvcHkxKElOREVYUkVMSUQsCi0JCQkJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdl dFJlbGlkKHBhcnRlZElkeCkpKTsKKwkJaW5kVHVwID0gR2V0UGdJbmRleEFuZFBnVGVtcEluZGV4 VHVwbGVzKFJlbGF0aW9uR2V0UmVsaWQocGFydGVkSWR4KSwKKwkJCQkJCQkJCQkJCSZ0ZW1wX2lu ZFR1cCwgdHJ1ZSk7CiAJCWlmICghSGVhcFR1cGxlSXNWYWxpZChpbmRUdXApKQogCQkJZWxvZyhF UlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwKIAkJCQkgUmVsYXRpb25H ZXRSZWxpZChwYXJ0ZWRJZHgpKTsKIAkJaW5kZXhGb3JtID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNU UlVDVChpbmRUdXApOworCQl0ZW1wX2luZGV4Rm9ybSA9IChGb3JtX3BnX3RlbXBfaW5kZXgpIEdF VFNUUlVDVF9TQUZFKHRlbXBfaW5kVHVwKTsKIAogCQlpbmRleEZvcm0tPmluZGlzdmFsaWQgPSB0 cnVlOworCQlpZiAodGVtcF9pbmRleEZvcm0gIT0gTlVMTCkKKwkJCXRlbXBfaW5kZXhGb3JtLT5p bmRpc3ZhbGlkID0gdHJ1ZTsKIAkJdXBkYXRlZCA9IHRydWU7CiAKIAkJQ2F0YWxvZ1R1cGxlVXBk YXRlKGlkeFJlbCwgJmluZFR1cC0+dF9zZWxmLCBpbmRUdXApOworCQlpZiAoSGVhcFR1cGxlSXNW YWxpZCh0ZW1wX2luZFR1cCkpCisJCXsKKwkJCVVwZGF0ZVBnVGVtcEluZGV4VHVwbGUoUmVsYXRp b25HZXRSZWxpZChwYXJ0ZWRJZHgpLCB0ZW1wX2luZFR1cCk7CisJCQloZWFwX2ZyZWV0dXBsZSh0 ZW1wX2luZFR1cCk7CisJCX0KIAogCQl0YWJsZV9jbG9zZShpZHhSZWwsIFJvd0V4Y2x1c2l2ZUxv Y2spOwogCQloZWFwX2ZyZWV0dXBsZShpbmRUdXApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYwppbmRleCBlY2MzNGYwN2UzNi4uZDM1YjZjNmNlMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2xzeXNjYWNoZS5jCkBAIC0zOTY1LDEzICszOTY1LDEzIEBAIGdldF9pbmRleF9pc3ZhbGlkKE9p ZCBpbmRleF9vaWQpCiAJSGVhcFR1cGxlCXR1cGxlOwogCUZvcm1fcGdfaW5kZXggcmRfaW5kZXg7 CiAKLQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJZEdldERhdHVt KGluZGV4X29pZCkpOworCXR1cGxlID0gR2V0RWZmZWN0aXZlUGdJbmRleFR1cGxlKGluZGV4X29p ZCk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKIAkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwgaW5kZXhfb2lkKTsKIAogCXJkX2luZGV4ID0g KEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVCh0dXBsZSk7CiAJaXN2YWxpZCA9IHJkX2luZGV4LT5p bmRpc3ZhbGlkOwotCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CisJaGVhcF9mcmVldHVwbGUodHVw bGUpOwogCiAJcmV0dXJuIGlzdmFsaWQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpp bmRleCA3ZWEwOGMyNDI4Zi4uZmQ0NjYwNjkyOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYwpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190ZW1wX2NsYXNzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX3N0YXRpc3RpYy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfdGVtcF9zdGF0aXN0aWNfZXh0X2RhdGEuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdn ZXIuaCIKQEAgLTE1MzEsNiArMTUzMiwyMyBAQCBSZWxhdGlvbkluaXRJbmRleEFjY2Vzc0luZm8o UmVsYXRpb24gcmVsYXRpb24pCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwog CVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7CiAKKwkvKgorCSAqIEZvciBnbG9iYWwgdGVtcG9yYXJ5 IGluZGV4ZXMsIHVwZGF0ZSBpbmRpc3ZhbGlkIGZyb20gcGdfdGVtcF9pbmRleC4KKwkgKiBUaGlz IHdvbid0IHdvcmsgZm9yIHN5c3RlbSBjYXRhbG9nIGluZGV4ZXMsIGJlY2F1c2UgcGdfdGVtcF9p bmRleCBtYXkKKwkgKiBub3QgYmUgbG9hZGVkIGF0IHRoaXMgcG9pbnQsIGJ1dCB0aGV5IHNob3Vs ZG4ndCBiZSBpbnZhbGlkIGFueXdheS4KKwkgKi8KKwlpZiAoUkVMQVRJT05fSVNfR0xPQkFMX1RF TVAocmVsYXRpb24pICYmICFJc0NhdGFsb2dSZWxhdGlvbihyZWxhdGlvbikpCisJeworCQl0dXBs ZSA9IEdldFBnVGVtcEluZGV4VHVwbGUoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpOworCQlp ZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCXsKKwkJCUZvcm1fcGdfdGVtcF9pbmRleCB0 ZW1wX2Zvcm0gPSAoRm9ybV9wZ190ZW1wX2luZGV4KSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQly ZWxhdGlvbi0+cmRfaW5kZXgtPmluZGlzdmFsaWQgPSB0ZW1wX2Zvcm0tPmluZGlzdmFsaWQ7CisJ CQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisJCX0KKwl9CisKIAkvKgogCSAqIExvb2sgdXAgdGhl IGluZGV4J3MgYWNjZXNzIG1ldGhvZCwgc2F2ZSB0aGUgT0lEIG9mIGl0cyBoYW5kbGVyIGZ1bmN0 aW9uCiAJICovCkBAIC0yNDQxLDggKzI0NTksNyBAQCBSZWxhdGlvblJlbG9hZEluZGV4SW5mbyhS ZWxhdGlvbiByZWxhdGlvbikKIAkJSGVhcFR1cGxlCXR1cGxlOwogCQlGb3JtX3BnX2luZGV4IGlu ZGV4OwogCi0JCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsCi0JCQkJCQkJCU9i amVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpKTsKKwkJdHVwbGUgPSBH ZXRFZmZlY3RpdmVQZ0luZGV4VHVwbGUoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpOwogCQlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQogCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIGluZGV4ICV1IiwKIAkJCQkgUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikp OwpAQCAtMjQ3MCw3ICsyNDg3LDcgQEAgUmVsYXRpb25SZWxvYWRJbmRleEluZm8oUmVsYXRpb24g cmVsYXRpb24pCiAJCUhlYXBUdXBsZUhlYWRlclNldFhtaW4ocmVsYXRpb24tPnJkX2luZGV4dHVw bGUtPnRfZGF0YSwKIAkJCQkJCQkgICBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLT50X2Rh dGEpKTsKIAotCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOworCQloZWFwX2ZyZWV0dXBsZSh0dXBs ZSk7CiAJfQogCiAJLyogT2theSwgbm93IGl0J3MgdmFsaWQgYWdhaW4gKi8KQEAgLTUwMzIsNiAr NTA0OSw4IEBAIFJlbGF0aW9uR2V0SW5kZXhMaXN0KFJlbGF0aW9uIHJlbGF0aW9uKQogCXdoaWxl IChIZWFwVHVwbGVJc1ZhbGlkKGh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KGluZHNjYW4pKSkKIAl7 CiAJCUZvcm1fcGdfaW5kZXggaW5kZXggPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGh0dXAp OworCQlIZWFwVHVwbGUJdGVtcF9odHVwOworCQlib29sCQlpbmRpc3ZhbGlkOwogCiAJCS8qCiAJ CSAqIElnbm9yZSBhbnkgaW5kZXhlcyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgZHJvcHBlZC4g IFRoaXMgd2lsbApAQCAtNTA1NSw2ICs1MDc0LDIxIEBAIFJlbGF0aW9uR2V0SW5kZXhMaXN0KFJl bGF0aW9uIHJlbGF0aW9uKQogCQkJIWhlYXBfYXR0aXNudWxsKGh0dXAsIEFudW1fcGdfaW5kZXhf aW5kcHJlZCwgTlVMTCkpCiAJCQljb250aW51ZTsKIAorCQkvKgorCQkgKiBHbG9iYWwgdGVtcG9y YXJ5IGluZGV4ZXMgbWF5IG92ZXJyaWRlIGluZGV4aXN2YWxpZCBsb2NhbGx5LgorCQkgKi8KKwkJ aW5kaXN2YWxpZCA9IGluZGV4LT5pbmRpc3ZhbGlkOworCQlpZiAoUkVMQVRJT05fSVNfR0xPQkFM X1RFTVAocmVsYXRpb24pKQorCQl7CisJCQl0ZW1wX2h0dXAgPSBHZXRQZ1RlbXBJbmRleFR1cGxl KGluZGV4LT5pbmRleHJlbGlkKTsKKworCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodGVtcF9odHVw KSkKKwkJCXsKKwkJCQlpbmRpc3ZhbGlkID0gKChGb3JtX3BnX3RlbXBfaW5kZXgpIEdFVFNUUlVD VCh0ZW1wX2h0dXApKS0+aW5kaXN2YWxpZDsKKwkJCQloZWFwX2ZyZWV0dXBsZSh0ZW1wX2h0dXAp OworCQkJfQorCQl9CisKIAkJLyoKIAkJICogUmVtZW1iZXIgcHJpbWFyeSBrZXkgaW5kZXgsIGlm IGFueS4gIEZvciByZWd1bGFyIHRhYmxlcyB3ZSBkbyB0aGlzCiAJCSAqIG9ubHkgaWYgdGhlIGlu ZGV4IGlzIHZhbGlkOyBidXQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgdGhlbiB3ZSBkbwpAQCAt NTA2Niw3ICs1MTAwLDcgQEAgUmVsYXRpb25HZXRJbmRleExpc3QoUmVsYXRpb24gcmVsYXRpb24p CiAJCSAqIHBhcnRpdGlvbmVkIHRhYmxlcy4KIAkJICovCiAJCWlmIChpbmRleC0+aW5kaXNwcmlt YXJ5ICYmCi0JCQkoaW5kZXgtPmluZGlzdmFsaWQgfHwKKwkJCShpbmRpc3ZhbGlkIHx8CiAJCQkg cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKSkK IAkJewogCQkJcGtleUluZGV4ID0gaW5kZXgtPmluZGV4cmVsaWQ7CkBAIC01MDc2LDcgKzUxMTAs NyBAQCBSZWxhdGlvbkdldEluZGV4TGlzdChSZWxhdGlvbiByZWxhdGlvbikKIAkJaWYgKCFpbmRl eC0+aW5kaW1tZWRpYXRlKQogCQkJY29udGludWU7CiAKLQkJaWYgKCFpbmRleC0+aW5kaXN2YWxp ZCkKKwkJaWYgKCFpbmRpc3ZhbGlkKQogCQkJY29udGludWU7CiAKIAkJLyogcmVtZW1iZXIgZXhw bGljaXRseSBjaG9zZW4gcmVwbGljYSBpbmRleCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA4Y2U0ZGVjYjkxZS4u M2U5YzJiODU1MTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC0yNDA2LDYgKzI0MDYsMjAgQEAgZGVzY3JpYmVPbmVU YWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCWNoYXIJICAgKmluZGFtbmFt ZSA9IFBRZ2V0dmFsdWUocmVzdWx0LCAwLCA4KTsKIAkJCWNoYXIJICAgKmluZHRhYmxlID0gUFFn ZXR2YWx1ZShyZXN1bHQsIDAsIDkpOwogCQkJY2hhcgkgICAqaW5kcHJlZCA9IFBRZ2V0dmFsdWUo cmVzdWx0LCAwLCAxMCk7CisJCQlQR3Jlc3VsdCAgICp0ZW1wX3Jlc3VsdCA9IE5VTEw7CisKKwkJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDIwMDAwMCkKKwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZl cigmYnVmLCAiLyogJXMgKi9cbiIsIF8oIkdldCB0ZW1wIGluZGV4IGRldGFpbHMiKSk7CisJCQkJ YXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiU0VMRUNUIGkuaW5kaXN2YWxpZFxu IgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfdGVtcF9pbmRleCBpXG4iCisJCQkJCQkJ CSAgIldIRVJFIGkuaW5kZXhyZWxpZCA9ICclcyciLCBvaWQpOworCisJCQkJdGVtcF9yZXN1bHQg PSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQkJaWYgKHRlbXBfcmVzdWx0ICYmIFBRbnR1cGxlcyh0 ZW1wX3Jlc3VsdCkgPT0gMSkKKwkJCQkJaW5kaXN2YWxpZCA9IFBRZ2V0dmFsdWUodGVtcF9yZXN1 bHQsIDAsIDApOworCQkJfQogCiAJCQlpZiAoc3RyY21wKGluZGlzcHJpbWFyeSwgInQiKSA9PSAw KQogCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0bXBidWYsIF8oInByaW1hcnkga2V5LCAiKSk7CkBA IC0yNDUwLDYgKzI0NjQsOCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCQkJaWYgKHRhYmxlaW5mby5yZWxraW5kID09IFJFTEtJTkRfSU5ERVgpCiAJ CQkJYWRkX3RhYmxlc3BhY2VfZm9vdGVyKCZjb250LCB0YWJsZWluZm8ucmVsa2luZCwKIAkJCQkJ CQkJCSAgdGFibGVpbmZvLnRhYmxlc3BhY2UsIHRydWUpOworCisJCQlQUWNsZWFyKHRlbXBfcmVz dWx0KTsKIAkJfQogCiAJCVBRY2xlYXIocmVzdWx0KTsKQEAgLTI0ODIsNiArMjQ5OCw3IEBAIGRl c2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgY29uLmNvbnBlcmlvZCIpOwogCQkJZWxzZQogCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGZhbHNlIEFTIGNvbnBlcmlvZCIpOworCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgaS5pbmRleHJlbGlkIik7CiAJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBn X2NhdGFsb2cucGdfY2xhc3MgYzIsIHBnX2NhdGFsb2cucGdfaW5kZXggaVxuIgogCQkJCQkJCSAg IiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjb24gT04gKGNvbnJlbGlkID0g aS5pbmRyZWxpZCBBTkQgY29uaW5kaWQgPSBpLmluZGV4cmVsaWQgQU5EIGNvbnR5cGUgSU4gKCIK QEAgLTI1MDIsNjcgKzI1MTksOTQgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hh ciAqc2NoZW1hbmFtZSwKIAkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBfKCJJbmRleGVz OiIpKTsKIAkJCQlmb3IgKGkgPSAwOyBpIDwgdHVwbGVzOyBpKyspCiAJCQkJeworCQkJCQljaGFy CSAgICppbmRuYW1lID0gUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApOworCQkJCQljaGFyCSAgICpp bmRpc3ByaW1hcnkgPSBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMSk7CisJCQkJCWNoYXIJICAgKmlu ZGlzdW5pcXVlID0gUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpOworCQkJCQljaGFyCSAgICppbmRp c2NsdXN0ZXJlZCA9IFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAzKTsKKwkJCQkJY2hhcgkgICAqaW5k aXN2YWxpZCA9IFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA0KTsKKwkJCQkJY2hhcgkgICAqaW5kZXhk ZWYgPSBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNSk7CisJCQkJCWNoYXIJICAgKmNvbnN0cmFpbnRk ZWYgPSBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNik7CisJCQkJCWNoYXIJICAgKmNvbnR5cGUgPSBQ UWdldHZhbHVlKHJlc3VsdCwgaSwgNyk7CisJCQkJCWNoYXIJICAgKmNvbmRlZmVycmFibGUgPSBQ UWdldHZhbHVlKHJlc3VsdCwgaSwgOCk7CisJCQkJCWNoYXIJICAgKmNvbmRlZmVycmVkID0gUFFn ZXR2YWx1ZShyZXN1bHQsIGksIDkpOworCQkJCQljaGFyCSAgICppbmRpc3JlcGxpZGVudCA9IFBR Z2V0dmFsdWUocmVzdWx0LCBpLCAxMCk7CisJCQkJCWNoYXIJICAgKnJlbHRhYmxlc3BhY2UgPSBQ UWdldHZhbHVlKHJlc3VsdCwgaSwgMTEpOworCQkJCQljaGFyCSAgICpjb25wZXJpb2QgPSBQUWdl dHZhbHVlKHJlc3VsdCwgaSwgMTIpOworCQkJCQljaGFyCSAgICppbmRleHJlbGlkID0gUFFnZXR2 YWx1ZShyZXN1bHQsIGksIDEzKTsKKwkJCQkJUEdyZXN1bHQgICAqdGVtcF9yZXN1bHQgPSBOVUxM OworCisJCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDIwMDAwMCkKKwkJCQkJeworCQkJCQkJcHJp bnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLCBfKCJHZXQgdGVtcCBpbmRleCBkZXRh aWxzIikpOworCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJCQkgICJTRUxF Q1QgaS5pbmRpc3ZhbGlkXG4iCisJCQkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3RlbXBf aW5kZXggaVxuIgorCQkJCQkJCQkJCSAgIldIRVJFIGkuaW5kZXhyZWxpZCA9ICclcyciLCBpbmRl eHJlbGlkKTsKKworCQkJCQkJdGVtcF9yZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQkJ CQlpZiAodGVtcF9yZXN1bHQgJiYgUFFudHVwbGVzKHRlbXBfcmVzdWx0KSA9PSAxKQorCQkJCQkJ CWluZGlzdmFsaWQgPSBQUWdldHZhbHVlKHRlbXBfcmVzdWx0LCAwLCAwKTsKKwkJCQkJfQorCiAJ CQkJCS8qIHVudHJhbnNsYXRlZCBpbmRleCBuYW1lICovCi0JCQkJCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsICIgICAgXCIlc1wiIiwKLQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDAp KTsKKwkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIiLCBpbmRuYW1lKTsK IAogCQkJCQkvKgogCQkJCQkgKiBJZiBleGNsdXNpb24gY29uc3RyYWludCBvciBQSy9VTklRVUUg Y29uc3RyYWludCBXSVRIT1VUCiAJCQkJCSAqIE9WRVJMQVBTLCBwcmludCB0aGUgY29uc3RyYWlu dGRlZgogCQkJCQkgKi8KLQkJCQkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlc3VsdCwgaSwgNyks ICJ4IikgPT0gMCB8fAotCQkJCQkJc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxMiksICJ0 IikgPT0gMCkKKwkJCQkJaWYgKHN0cmNtcChjb250eXBlLCAieCIpID09IDAgfHwKKwkJCQkJCXN0 cmNtcChjb25wZXJpb2QsICJ0IikgPT0gMCkKIAkJCQkJewotCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwgIiAlcyIsCi0JCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNikpOwor CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAlcyIsIGNvbnN0cmFpbnRkZWYpOwogCQkJ CQl9CiAJCQkJCWVsc2UKIAkJCQkJewotCQkJCQkJY29uc3QgY2hhciAqaW5kZXhkZWY7Ci0JCQkJ CQljb25zdCBjaGFyICp1c2luZ3BvczsKKwkJCQkJCWNoYXIJICAgKnVzaW5ncG9zOwogCiAJCQkJ CQkvKiBMYWJlbCBhcyBwcmltYXJ5IGtleSBvciB1bmlxdWUgKGJ1dCBub3QgYm90aCkgKi8KLQkJ CQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEpLCAidCIpID09IDApCisJCQkJ CQlpZiAoc3RyY21wKGluZGlzcHJpbWFyeSwgInQiKSA9PSAwKQogCQkJCQkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKCZidWYsICIgUFJJTUFSWSBLRVksIik7Ci0JCQkJCQllbHNlIGlmIChzdHJjbXAo UFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpLCAidCIpID09IDApCisJCQkJCQllbHNlIGlmIChzdHJj bXAoaW5kaXN1bmlxdWUsICJ0IikgPT0gMCkKIAkJCQkJCXsKLQkJCQkJCQlpZiAoc3RyY21wKFBR Z2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgInUiKSA9PSAwKQorCQkJCQkJCWlmIChzdHJjbXAoY29u dHlwZSwgInUiKSA9PSAwKQogCQkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiIFVO SVFVRSBDT05TVFJBSU5ULCIpOwogCQkJCQkJCWVsc2UKIAkJCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmJ1ZiwgIiBVTklRVUUsIik7CiAJCQkJCQl9CiAKIAkJCQkJCS8qIEV2ZXJ5dGhpbmcg YWZ0ZXIgIlVTSU5HIiBpcyBlY2hvZWQgdmVyYmF0aW0gKi8KLQkJCQkJCWluZGV4ZGVmID0gUFFn ZXR2YWx1ZShyZXN1bHQsIGksIDUpOwogCQkJCQkJdXNpbmdwb3MgPSBzdHJzdHIoaW5kZXhkZWYs ICIgVVNJTkcgIik7CiAJCQkJCQlpZiAodXNpbmdwb3MpCiAJCQkJCQkJaW5kZXhkZWYgPSB1c2lu Z3BvcyArIDc7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICVzIiwgaW5kZXhkZWYp OwogCiAJCQkJCQkvKiBOZWVkIHRoZXNlIGZvciBkZWZlcnJhYmxlIFBLL1VOSVFVRSBpbmRleGVz ICovCi0JCQkJCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA4KSwgInQiKSA9PSAw KQorCQkJCQkJaWYgKHN0cmNtcChjb25kZWZlcnJhYmxlLCAidCIpID09IDApCiAJCQkJCQkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiBERUZFUlJBQkxFIik7CiAKLQkJCQkJCWlmIChzdHJj bXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDkpLCAidCIpID09IDApCisJCQkJCQlpZiAoc3RyY21w KGNvbmRlZmVycmVkLCAidCIpID09IDApCiAJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1 ZiwgIiBJTklUSUFMTFkgREVGRVJSRUQiKTsKIAkJCQkJfQogCiAJCQkJCS8qIEFkZCB0aGVzZSBm b3IgYWxsIGNhc2VzICovCi0JCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDMp LCAidCIpID09IDApCisJCQkJCWlmIChzdHJjbXAoaW5kaXNjbHVzdGVyZWQsICJ0IikgPT0gMCkK IAkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgQ0xVU1RFUiIpOwogCi0JCQkJCWlm IChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDQpLCAidCIpICE9IDApCisJCQkJCWlmIChz dHJjbXAoaW5kaXN2YWxpZCwgInQiKSAhPSAwKQogCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo JmJ1ZiwgIiBJTlZBTElEIik7CiAKLQkJCQkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlc3VsdCwg aSwgMTApLCAidCIpID09IDApCisJCQkJCWlmIChzdHJjbXAoaW5kaXNyZXBsaWRlbnQsICJ0Iikg PT0gMCkKIAkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIgUkVQTElDQSBJREVOVElU WSIpOwogCiAJCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKIAogCQkJ CQkvKiBQcmludCB0YWJsZXNwYWNlIG9mIHRoZSBpbmRleCBvbiB0aGUgc2FtZSBsaW5lICovCiAJ CQkJCWFkZF90YWJsZXNwYWNlX2Zvb3RlcigmY29udCwgUkVMS0lORF9JTkRFWCwKLQkJCQkJCQkJ CQkgIGF0b29pZChQUWdldHZhbHVlKHJlc3VsdCwgaSwgMTEpKSwKKwkJCQkJCQkJCQkgIGF0b29p ZChyZWx0YWJsZXNwYWNlKSwKIAkJCQkJCQkJCQkgIGZhbHNlKTsKKworCQkJCQlQUWNsZWFyKHRl bXBfcmVzdWx0KTsKIAkJCQl9CiAJCQl9CiAJCQlQUWNsZWFyKHJlc3VsdCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL01ha2VmaWxlIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtl ZmlsZQppbmRleCBmNjBhNjQ1NGRmMi4uNzFlYTYwMjI4ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvTWFrZWZpbGUKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9NYWtlZmlsZQpA QCAtODgsNiArODgsNyBAQCBDQVRBTE9HX0hFQURFUlMgOj0gXAogCXBnX3Byb3BncmFwaF9sYWJl bF9wcm9wZXJ0eS5oIFwKIAlwZ19wcm9wZ3JhcGhfcHJvcGVydHkuaCBcCiAJcGdfdGVtcF9jbGFz cy5oIFwKKwlwZ190ZW1wX2luZGV4LmggXAogCXBnX3RlbXBfc3RhdGlzdGljLmggXAogCXBnX3Rl bXBfc3RhdGlzdGljX2V4dF9kYXRhLmgKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKaW5kZXggNzU5 OTczMWRlN2QuLmQ2ZWE4NGEyZDQ2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21l c29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTc1LDYg Kzc1LDcgQEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfcHJvcGdyYXBoX2xhYmVsX3Byb3Bl cnR5LmgnLAogICAncGdfcHJvcGdyYXBoX3Byb3BlcnR5LmgnLAogICAncGdfdGVtcF9jbGFzcy5o JywKKyAgJ3BnX3RlbXBfaW5kZXguaCcsCiAgICdwZ190ZW1wX3N0YXRpc3RpYy5oJywKICAgJ3Bn X3RlbXBfc3RhdGlzdGljX2V4dF9kYXRhLmgnLAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ190ZW1wX2NsYXNzLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3RlbXBfY2xh c3MuaAppbmRleCBhNDYyOWIxMmM5ZC4uYmE1NzcwMDEyMjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfdGVtcF9jbGFzcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf dGVtcF9jbGFzcy5oCkBAIC0zNjksMjAgKzM2OSwyNyBAQCBTZXRFZmZlY3RpdmVfcmVsbWlubXhp ZChGb3JtX3BnX2NsYXNzIGNmLCBGb3JtX3BnX3RlbXBfY2xhc3MgdGYsCiAKIAogZXh0ZXJuIEhl YXBUdXBsZSBHZXRQZ1RlbXBDbGFzc1R1cGxlKE9pZCByZWxpZCk7CitleHRlcm4gSGVhcFR1cGxl IEdldFBnVGVtcEluZGV4VHVwbGUoT2lkIGluZGV4cmVsaWQpOwogCiBleHRlcm4gdm9pZCBJbnNl cnRQZ1RlbXBDbGFzc1R1cGxlKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gdm9pZCBJbnNlcnRQZ1Rl bXBJbmRleFR1cGxlKE9pZCBpbmRleHJlbGlkLCBib29sIGluZGlzdmFsaWQpOwogCiBleHRlcm4g dm9pZCBVcGRhdGVQZ1RlbXBDbGFzc1R1cGxlKE9pZCByZWxpZCwgSGVhcFR1cGxlIG5ld3R1cGxl KTsKLQogZXh0ZXJuIHZvaWQgVXBkYXRlUGdUZW1wQ2xhc3NUdXBsZUluUGxhY2UoT2lkIHJlbGlk LCBIZWFwVHVwbGUgbmV3dHVwbGUpOworZXh0ZXJuIHZvaWQgVXBkYXRlUGdUZW1wSW5kZXhUdXBs ZShPaWQgaW5kZXhyZWxpZCwgSGVhcFR1cGxlIG5ld3R1cGxlKTsKIAogZXh0ZXJuIHZvaWQgRGVs ZXRlUGdUZW1wQ2xhc3NUdXBsZShPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQgRGVsZXRlUGdUZW1w SW5kZXhUdXBsZShPaWQgaW5kZXhyZWxpZCk7CiAKIGV4dGVybiBIZWFwVHVwbGUgR2V0UGdDbGFz c0FuZFBnVGVtcENsYXNzVHVwbGVzKE9pZCByZWxpZCwgYm9vbCBsb2NrX3R1cGxlLAogCQkJCQkJ CQkJCQkJSGVhcFR1cGxlICp0ZW1wX3R1cGxlLAogCQkJCQkJCQkJCQkJYm9vbCBjaGVja190ZW1w KTsKK2V4dGVybiBIZWFwVHVwbGUgR2V0UGdJbmRleEFuZFBnVGVtcEluZGV4VHVwbGVzKE9pZCBp bmRleHJlbGlkLAorCQkJCQkJCQkJCQkJSGVhcFR1cGxlICp0ZW1wX3R1cGxlLAorCQkJCQkJCQkJ CQkJYm9vbCBjaGVja190ZW1wKTsKIAogZXh0ZXJuIEhlYXBUdXBsZSBHZXRFZmZlY3RpdmVQZ0Ns YXNzVHVwbGUoT2lkIHJlbGlkKTsKK2V4dGVybiBIZWFwVHVwbGUgR2V0RWZmZWN0aXZlUGdJbmRl eFR1cGxlKE9pZCBpbmRleHJlbGlkKTsKIAogZXh0ZXJuIHZvaWQgVXBkYXRlVGVtcEZyb3plblhp ZHModm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfdGVtcF9pbmRl eC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNlNzliZjBlMmM1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ190ZW1wX2luZGV4LmgKQEAgLTAsMCArMSw2NiBAQAorLyot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfdGVtcF9pbmRleC5oCisgKgkgIGRlZmluaXRpb24g b2YgdGhlICJ0ZW1wb3JhcnkgaW5kZXgiIHN5c3RlbSBjYXRhbG9nIChwZ190ZW1wX2luZGV4KQor ICoKKyAqIFRoaXMgaXMgYSBnbG9iYWwgdGVtcG9yYXJ5IHN5c3RlbSBjYXRhbG9nIHRhYmxlIHN0 b3Jpbmcgc2Vzc2lvbi1zcGVjaWZpYworICogaW5mb3JtYXRpb24gYWJvdXQgdGVtcG9yYXJ5IGlu ZGV4ZXMuICBDdXJyZW50bHksIGl0IGlzIG9ubHkgdXNlZCBmb3IgZ2xvYmFsCisgKiB0ZW1wb3Jh cnkgaW5kZXhlcy4gIFRoZSBhdHRyaWJ1dGVzIChjdXJyZW50bHkganVzdCBpbmRpc3ZhbGlkKSBh cmUgYSBzdWJzZXQKKyAqIG9mIHRob3NlIGZyb20gcGdfaW5kZXgsIGFuZCB0aGVpciB2YWx1ZXMg dGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIHZhbHVlcworICogZnJvbSBwZ19pbmRleC4KKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCisgKgorICog Tk9URVMKKyAqCSAgVGhlIENhdGFsb2cucG0gbW9kdWxlIHJlYWRzIHRoaXMgZmlsZSBhbmQgZGVy aXZlcyBzY2hlbWEKKyAqCSAgaW5mb3JtYXRpb24uCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Ki8KKyNpZm5kZWYgUEdfVEVNUF9JTkRFWF9ICisjZGVmaW5lIFBHX1RFTVBfSU5ERVhfSAorCisj aW5jbHVkZSAiYWNjZXNzL2dlbmFtLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9nZW5ia2kuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX2luZGV4LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190ZW1wX2lu ZGV4X2QuaCIJLyogSVdZVSBwcmFnbWE6IGV4cG9ydCAqLworCisvKiAtLS0tLS0tLS0tLS0tLS0t CisgKgkJcGdfdGVtcF9pbmRleCBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJ CXR5cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3RlbXBfaW5kZXguCisgKiAtLS0tLS0tLS0tLS0t LS0tCisgKi8KK0JFR0lOX0NBVEFMT0dfU1RSVUNUCisKK0NBVEFMT0cocGdfdGVtcF9pbmRleCw4 MDkyLFRlbXBJbmRleFJlbGF0aW9uSWQpIEJLSV9URU1QX1JFTEFUSU9OCit7CisJT2lkCQkJaW5k ZXhyZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsJLyogT0lEIG9mIHRoZSBpbmRleCAqLworCWJv b2wJCWluZGlzdmFsaWQ7CQkvKiBpcyB0aGlzIGluZGV4IHZhbGlkIGZvciB1c2UgYnkgcXVlcmll cz8gKi8KK30gRm9ybURhdGFfcGdfdGVtcF9pbmRleDsKKworRU5EX0NBVEFMT0dfU1RSVUNUCisK Ky8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlGb3JtX3BnX3RlbXBfaW5kZXggY29ycmVzcG9uZHMg dG8gYSBwb2ludGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfdGVtcF9p bmRleCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBGb3JtRGF0 YV9wZ190ZW1wX2luZGV4ICpGb3JtX3BnX3RlbXBfaW5kZXg7CisKK0RFQ0xBUkVfVU5JUVVFX0lO REVYX1BLRVkocGdfdGVtcF9pbmRleF9pbmRleHJlbGlkX2luZGV4LCA4MDkzLCBUZW1wSW5kZXhS ZWxpZEluZGV4SWQsIHBnX3RlbXBfaW5kZXgsIGJ0cmVlKGluZGV4cmVsaWQgb2lkX29wcykpOwor CitNQUtFX1NZU0NBQ0hFKFRFTVBJTkRFWFJFTElELCBwZ190ZW1wX2luZGV4X2luZGV4cmVsaWRf aW5kZXgsIDY0KTsKKworLyoKKyAqIEdldCB0aGUgZWZmZWN0aXZlIHZhbHVlIG9mIGluZGlzdmFs aWQgZnJvbSBwZ19pbmRleCBhbmQgcGdfdGVtcF9pbmRleCB0dXBsZQorICogZGF0YS4gIFRoZSB2 YWx1ZSBmcm9tIHBnX3RlbXBfaW5kZXggKGlmIHByZXNlbnQpIHRha2VzIHByZWNlZGVuY2UuCisg Ki8KK3N0YXRpYyBpbmxpbmUgYm9vbAorR2V0RWZmZWN0aXZlX2luZGlzdmFsaWQoRm9ybV9wZ19p bmRleCBmLCBGb3JtX3BnX3RlbXBfaW5kZXggdGYpCit7CisJcmV0dXJuIHRmICE9IE5VTEwgPyB0 Zi0+aW5kaXN2YWxpZCA6IGYtPmluZGlzdmFsaWQ7Cit9CisKKyNlbmRpZgkJCQkJCQkvKiBQR19U RU1QX0lOREVYX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9n bG9iYWwtdGVtcC5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAu b3V0CmluZGV4IGJiYWE3NjhmNDc5Li5iMGY2MzI3NzliNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv aXNvbGF0aW9uL2V4cGVjdGVkL2dsb2JhbC10ZW1wLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRp b24vZXhwZWN0ZWQvZ2xvYmFsLXRlbXAub3V0CkBAIC00MzgsNiArNDM4LDg3IEBAIGtleXx2YWx8 c2VxCiAoMSByb3cpCiAKIAorc3RhcnRpbmcgcGVybXV0YXRpb246IGluczEgaW5zMiBpZHgxIHNl bDFfaWR4IHNlbDJfaWR4IGFuYWx5emUyIHNlbDJfaWR4IHJlaWR4MiBzZWwyX2lkeAorc3RlcCBp bnMxOiBJTlNFUlQgSU5UTyB0bXAgVkFMVUVTICgxLCAnczEnKTsKK3N0ZXAgaW5zMjogSU5TRVJU IElOVE8gdG1wIFZBTFVFUyAoMSwgJ3MyJyk7CitzdGVwIGlkeDE6IENSRUFURSBJTkRFWCB0bXBf dmFsX2lkeCBPTiB0bXAodmFsKTsKK3N0ZXAgc2VsMV9pZHg6IAorICBTRVQgZW5hYmxlX3NlcXNj YW4gPSBvZmY7CisgIFNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsKKyAgRVhQTEFJTiAoQ09T VFMgT0ZGKQorICBTRUxFQ1QgKiBGUk9NIHRtcCBXSEVSRSB2YWwgPSAnczEnOworICBTRUxFQ1Qg KiBGUk9NIHRtcCBXSEVSRSB2YWwgPSAnczEnOworCitRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luZGV4IFNj YW4gdXNpbmcgdG1wX3ZhbF9pZHggb24gdG1wCisgIEluZGV4IENvbmQ6ICh2YWwgPSAnczEnOjp0 ZXh0KSAgIAorKDIgcm93cykKKwora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0tCisgIDF8czEgfCAg MQorKDEgcm93KQorCitzdGVwIHNlbDJfaWR4OiAKKyAgU0VUIGVuYWJsZV9zZXFzY2FuID0gb2Zm OworICBTRVQgZW5hYmxlX2JpdG1hcHNjYW4gPSBvZmY7CisgIEVYUExBSU4gKENPU1RTIE9GRikK KyAgU0VMRUNUICogRlJPTSB0bXAgV0hFUkUgdmFsID0gJ3MyJzsKKyAgU0VMRUNUICogRlJPTSB0 bXAgV0hFUkUgdmFsID0gJ3MyJzsKKworUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VxIFNjYW4gb24gdG1wICAgICAgICAgICAgIAor ICBEaXNhYmxlZDogdHJ1ZSAgICAgICAgICAgIAorICBGaWx0ZXI6ICh2YWwgPSAnczInOjp0ZXh0 KQorKDMgcm93cykKKwora2V5fHZhbHxzZXEKKy0tLSstLS0rLS0tCisgIDF8czIgfCAgMQorKDEg cm93KQorCitzdGVwIGFuYWx5emUyOiBBTkFMWVpFIHRtcDsKK3N0ZXAgc2VsMl9pZHg6IAorICBT RVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisgIFNFVCBlbmFibGVfYml0bWFwc2NhbiA9IG9mZjsK KyAgRVhQTEFJTiAoQ09TVFMgT0ZGKQorICBTRUxFQ1QgKiBGUk9NIHRtcCBXSEVSRSB2YWwgPSAn czInOworICBTRUxFQ1QgKiBGUk9NIHRtcCBXSEVSRSB2YWwgPSAnczInOworCitRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTZXEgU2Nh biBvbiB0bXAgICAgICAgICAgICAgCisgIERpc2FibGVkOiB0cnVlICAgICAgICAgICAgCisgIEZp bHRlcjogKHZhbCA9ICdzMic6OnRleHQpCisoMyByb3dzKQorCitrZXl8dmFsfHNlcQorLS0tKy0t LSstLS0KKyAgMXxzMiB8ICAxCisoMSByb3cpCisKK3N0ZXAgcmVpZHgyOiBSRUlOREVYIElOREVY IHRtcF92YWxfaWR4Oworc3RlcCBzZWwyX2lkeDogCisgIFNFVCBlbmFibGVfc2Vxc2NhbiA9IG9m ZjsKKyAgU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworICBFWFBMQUlOIChDT1NUUyBPRkYp CisgIFNFTEVDVCAqIEZST00gdG1wIFdIRVJFIHZhbCA9ICdzMic7CisgIFNFTEVDVCAqIEZST00g dG1wIFdIRVJFIHZhbCA9ICdzMic7CisKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5kZXggU2NhbiB1c2lu ZyB0bXBfdmFsX2lkeCBvbiB0bXAKKyAgSW5kZXggQ29uZDogKHZhbCA9ICdzMic6OnRleHQpICAg CisoMiByb3dzKQorCitrZXl8dmFsfHNlcQorLS0tKy0tLSstLS0KKyAgMXxzMiB8ICAxCisoMSBy b3cpCisKKwogc3RhcnRpbmcgcGVybXV0YXRpb246IGluczEgaW5zMiB0MiBzZWwxIHNlbDIgaW5z MiB0MSBzZWwxIHNlbDIgaW5zMSB0MiBzZWwxIHNlbDIKIHN0ZXAgaW5zMTogSU5TRVJUIElOVE8g dG1wIFZBTFVFUyAoMSwgJ3MxJyk7CiBzdGVwIGluczI6IElOU0VSVCBJTlRPIHRtcCBWQUxVRVMg KDEsICdzMicpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL3NwZWNzL2dsb2JhbC10 ZW1wLnNwZWMgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvZ2xvYmFsLXRlbXAuc3BlYwppbmRl eCBhNTdmY2ZkM2U1My4uYjNiMjA3YWNiOWQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlv bi9zcGVjcy9nbG9iYWwtdGVtcC5zcGVjCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9n bG9iYWwtdGVtcC5zcGVjCkBAIC04NSw2ICs4NSw3IEBAIHN0ZXAgZ2V0X3RibHNwYWNlMiB7CiAg ICAgTEVGVCBKT0lOIHBnX3RhYmxlc3BhY2UgczIgT04gczIub2lkID0gdC5yZWx0YWJsZXNwYWNl CiAgICBXSEVSRSBjLnJlbG5hbWUgPSAndG1wJzsKIH0KK3N0ZXAgYW5hbHl6ZTIgeyBBTkFMWVpF IHRtcDsgfQogCiAjIENyZWF0ZSB0ZXN0IHRhYmxlc3BhY2UgZm9yIHJlbWFpbmluZyB0ZXN0cwog cGVybXV0YXRpb24gY3JlYXRlX3RibHNwYWNlIGxpc3RfdGJsc3BhY2VzCkBAIC0xMTQsNiArMTE1 LDcgQEAgcGVybXV0YXRpb24gY3JlYXRlMWRyIGluczFfMiBpbnMyXzIgZHJvcDEgY3JlYXRlMWRy IGluczFfMiBpbnMyXzIgZHJvcDEKIHBlcm11dGF0aW9uIGluczEgaWR4MSBzZWwxX2lkeCBpbnMy IHNlbDJfaWR4CiBwZXJtdXRhdGlvbiBpbnMxIGluczIgaWR4MSBzZWwxX2lkeCBzZWwyX2lkeAog cGVybXV0YXRpb24gaW5zMSBpbnMyIGlkeDEgc2VsMV9pZHggc2VsMl9pZHggcmVpZHgyIHNlbDJf aWR4CitwZXJtdXRhdGlvbiBpbnMxIGluczIgaWR4MSBzZWwxX2lkeCBzZWwyX2lkeCBhbmFseXpl MiBzZWwyX2lkeCByZWlkeDIgc2VsMl9pZHgKIAogIyBUZXN0IGxvY2FsIFRSVU5DQVRFCiBwZXJt dXRhdGlvbiBpbnMxIGluczIgdDIgc2VsMSBzZWwyIGluczIgdDEgc2VsMSBzZWwyIGluczEgdDIg c2VsMSBzZWwyCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dsb2JhbF90 ZW1wLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZ2xvYmFsX3RlbXAub3V0CmluZGV4 IDEwNTE5Y2VlZTIxLi42OTNkMTJlYWFkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9nbG9iYWxfdGVtcC5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9n bG9iYWxfdGVtcC5vdXQKQEAgLTIyNyw2ICsyMjcsMTA5IEBAIFNFTEVDVCAqIEZST00gdG1wMiBP UkRFUiBCWSBhOwogIDIKICgxIHJvdykKIAorRFJPUCBUQUJMRSB0bXAyOworLS0gVGVzdCBwYXJ0 aXRpb25lZCBpbmRleCB2YWxpZGl0eQorQ1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEg aW50KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CitDUkVBVEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1w Ml9wMSBQQVJUSVRJT04gT0YgdG1wMiBGT1IgVkFMVUVTIElOICgxKTsKK0NSRUFURSBJTkRFWCB0 bXAyX2FfaWR4IE9OIHRtcDIgKGEpOworU0VMRUNUIGMucmVsbmFtZSwgaS5pbmRpc3ZhbGlkIEFT IGdsb2JhbF92YWxpZCwgdC5pbmRpc3ZhbGlkIEFTIGxvY2FsX3ZhbGlkCisgIEZST00gcGdfY2xh c3MgYyBKT0lOIHBnX2luZGV4IGkgT04gaS5pbmRleHJlbGlkID0gYy5vaWQKKyAgTEVGVCBKT0lO IHBnX3RlbXBfaW5kZXggdCBPTiB0LmluZGV4cmVsaWQgPSBpLmluZGV4cmVsaWQKKyBXSEVSRSBj LnJlbG5hbWUgfiAndG1wMiguKilfYV9pZHgnCisgT1JERVIgQlkgYy5yZWxuYW1lOworICAgIHJl bG5hbWUgICAgfCBnbG9iYWxfdmFsaWQgfCBsb2NhbF92YWxpZCAKKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgdG1wMl9hX2lkeCAgICB8IHQgICAgICAgICAg ICB8IHQKKyB0bXAyX3AxX2FfaWR4IHwgdCAgICAgICAgICAgIHwgdAorKDIgcm93cykKKworXGQg dG1wMgorR2xvYmFsIHRlbXBvcmFyeSBwYXJ0aXRpb25lZCB0YWJsZSAiZ2xvYmFsX3RlbXBfdGVz dHMudG1wMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24g a2V5OiBMSVNUIChhKQorSW5kZXhlczoKKyAgICAidG1wMl9hX2lkeCIgYnRyZWUgKGEpCitOdW1i ZXIgb2YgcGFydGl0aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0bXAyX2Ff aWR4CitQYXJ0aXRpb25lZCBpbmRleCAiZ2xvYmFsX3RlbXBfdGVzdHMudG1wMl9hX2lkeCIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgS2V5PyB8IERlZmluaXRpb24gCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tKy0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCB5ZXMgIHwgYQorYnRyZWUs IGZvciB0YWJsZSAiZ2xvYmFsX3RlbXBfdGVzdHMudG1wMiIKK051bWJlciBvZiBwYXJ0aXRpb25z OiAxIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK0RST1AgSU5ERVggdG1wMl9hX2lkeDsKK0NS RUFURSBJTkRFWCB0bXAyX2FfaWR4IE9OIE9OTFkgdG1wMiAoYSk7CitTRUxFQ1QgYy5yZWxuYW1l LCBpLmluZGlzdmFsaWQgQVMgZ2xvYmFsX3ZhbGlkLCB0LmluZGlzdmFsaWQgQVMgbG9jYWxfdmFs aWQKKyAgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBPTiBpLmluZGV4cmVsaWQgPSBj Lm9pZAorICBMRUZUIEpPSU4gcGdfdGVtcF9pbmRleCB0IE9OIHQuaW5kZXhyZWxpZCA9IGkuaW5k ZXhyZWxpZAorIFdIRVJFIGMucmVsbmFtZSB+ICd0bXAyKC4qKV9hX2lkeCcKKyBPUkRFUiBCWSBj LnJlbG5hbWU7CisgIHJlbG5hbWUgICB8IGdsb2JhbF92YWxpZCB8IGxvY2FsX3ZhbGlkIAorLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyB0bXAyX2FfaWR4IHwgZiAg ICAgICAgICAgIHwgZgorKDEgcm93KQorCitcZCB0bXAyCitHbG9iYWwgdGVtcG9yYXJ5IHBhcnRp dGlvbmVkIHRhYmxlICJnbG9iYWxfdGVtcF90ZXN0cy50bXAyIgorIENvbHVtbiB8ICBUeXBlICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1QgKGEpCitJbmRleGVzOgorICAg ICJ0bXAyX2FfaWR4IiBidHJlZSAoYSkgSU5WQUxJRAorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDEg KFVzZSBcZCsgdG8gbGlzdCB0aGVtLikKKworXGQgdG1wMl9hX2lkeAorUGFydGl0aW9uZWQgaW5k ZXggImdsb2JhbF90ZW1wX3Rlc3RzLnRtcDJfYV9pZHgiCisgQ29sdW1uIHwgIFR5cGUgICB8IEtl eT8gfCBEZWZpbml0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0K KyBhICAgICAgfCBpbnRlZ2VyIHwgeWVzICB8IGEKK2J0cmVlLCBmb3IgdGFibGUgImdsb2JhbF90 ZW1wX3Rlc3RzLnRtcDIiLCBpbnZhbGlkCitOdW1iZXIgb2YgcGFydGl0aW9uczogMAorCitDUkVB VEUgSU5ERVggdG1wMl9wMV9hX2lkeCBPTiB0bXAyX3AxIChhKTsKK0FMVEVSIElOREVYIHRtcDJf YV9pZHggQVRUQUNIIFBBUlRJVElPTiB0bXAyX3AxX2FfaWR4OworU0VMRUNUIGMucmVsbmFtZSwg aS5pbmRpc3ZhbGlkIEFTIGdsb2JhbF92YWxpZCwgdC5pbmRpc3ZhbGlkIEFTIGxvY2FsX3ZhbGlk CisgIEZST00gcGdfY2xhc3MgYyBKT0lOIHBnX2luZGV4IGkgT04gaS5pbmRleHJlbGlkID0gYy5v aWQKKyAgTEVGVCBKT0lOIHBnX3RlbXBfaW5kZXggdCBPTiB0LmluZGV4cmVsaWQgPSBpLmluZGV4 cmVsaWQKKyBXSEVSRSBjLnJlbG5hbWUgfiAndG1wMiguKilfYV9pZHgnCisgT1JERVIgQlkgYy5y ZWxuYW1lOworICAgIHJlbG5hbWUgICAgfCBnbG9iYWxfdmFsaWQgfCBsb2NhbF92YWxpZCAKKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgdG1wMl9hX2lkeCAg ICB8IHQgICAgICAgICAgICB8IHQKKyB0bXAyX3AxX2FfaWR4IHwgdCAgICAgICAgICAgIHwgdAor KDIgcm93cykKKworXGQgdG1wMgorR2xvYmFsIHRlbXBvcmFyeSBwYXJ0aXRpb25lZCB0YWJsZSAi Z2xvYmFsX3RlbXBfdGVzdHMudG1wMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitQYXJ0aXRpb24ga2V5OiBMSVNUIChhKQorSW5kZXhlczoKKyAgICAidG1wMl9hX2lkeCIg YnRyZWUgKGEpCitOdW1iZXIgb2YgcGFydGl0aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRoZW0u KQorCitcZCB0bXAyX2FfaWR4CitQYXJ0aXRpb25lZCBpbmRleCAiZ2xvYmFsX3RlbXBfdGVzdHMu dG1wMl9hX2lkeCIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgS2V5PyB8IERlZmluaXRpb24gCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tKy0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCB5 ZXMgIHwgYQorYnRyZWUsIGZvciB0YWJsZSAiZ2xvYmFsX3RlbXBfdGVzdHMudG1wMiIKK051bWJl ciBvZiBwYXJ0aXRpb25zOiAxIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRtcDJfcDFf YV9pZHgKK0luZGV4ICJnbG9iYWxfdGVtcF90ZXN0cy50bXAyX3AxX2FfaWR4IgorIENvbHVtbiB8 ICBUeXBlICAgfCBLZXk/IHwgRGVmaW5pdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0r LS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8IHllcyAgfCBhCitQYXJ0aXRpb24gb2Y6 IHRtcDJfYV9pZHggCitidHJlZSwgZm9yIHRhYmxlICJnbG9iYWxfdGVtcF90ZXN0cy50bXAyX3Ax IgorCiBEUk9QIFRBQkxFIHRtcDI7CiAtLSBUZXN0IEFMVEVSIFRBQkxFIHdpdGggcmV3cml0ZQog Q1JFQVRFIEdMT0JBTCBURU1QIFRBQkxFIHRtcDIgKGEgaW50KTsKQEAgLTUxMCwxMCArNjEzLDEy IEBAIFNFTEVDVCBvaWQ6OnJlZ2NsYXNzIEZST00gcGdfdGVtcF9jbGFzcyBPUkRFUiBCWSAxOwog IHBnX3RlbXBfY2xhc3Nfb2lkX2luZGV4CiAgcGdfdGVtcF9zdGF0aXN0aWMKICBwZ190ZW1wX3N0 YXRpc3RpY19yZWxpZF9hdHRfaW5oX2luZGV4CisgcGdfdGVtcF9pbmRleAorIHBnX3RlbXBfaW5k ZXhfaW5kZXhyZWxpZF9pbmRleAogIHRtcDFfY19zZXEKICB0bXAxCiAgdG1wMV9wa2V5Ci0oNyBy b3dzKQorKDkgcm93cykKIAogU0VMRUNUICogRlJPTSB0bXAxOwogIGEgfCAgYiAgfCBjIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vaWRqb2lucy5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL29pZGpvaW5zLm91dAppbmRleCBiY2NhZTA1MmExNS4uMmI0YWY4 NDUyZTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb2lkam9pbnMub3V0CkBAIC0yODcsNiAr Mjg3LDcgQEAgTk9USUNFOiAgY2hlY2tpbmcgcGdfcHJvcGdyYXBoX3Byb3BlcnR5IHtwZ3B0eXBp ZH0gPT4gcGdfdHlwZSB7b2lkfQogTk9USUNFOiAgY2hlY2tpbmcgcGdfcHJvcGdyYXBoX3Byb3Bl cnR5IHtwZ3Bjb2xsYXRpb259ID0+IHBnX2NvbGxhdGlvbiB7b2lkfQogTk9USUNFOiAgY2hlY2tp bmcgcGdfdGVtcF9jbGFzcyB7b2lkfSA9PiBwZ19jbGFzcyB7b2lkfQogTk9USUNFOiAgY2hlY2tp bmcgcGdfdGVtcF9jbGFzcyB7cmVsdGFibGVzcGFjZX0gPT4gcGdfdGFibGVzcGFjZSB7b2lkfQor Tk9USUNFOiAgY2hlY2tpbmcgcGdfdGVtcF9pbmRleCB7aW5kZXhyZWxpZH0gPT4gcGdfY2xhc3Mg e29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfc3RhdGlzdGljIHtzdGFyZWxpZH0gPT4g cGdfY2xhc3Mge29pZH0KIE5PVElDRTogIGNoZWNraW5nIHBnX3RlbXBfc3RhdGlzdGljIHtzdGFv cDF9ID0+IHBnX29wZXJhdG9yIHtvaWR9CiBOT1RJQ0U6ICBjaGVja2luZyBwZ190ZW1wX3N0YXRp c3RpYyB7c3Rhb3AyfSA9PiBwZ19vcGVyYXRvciB7b2lkfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFs X3RlbXAuc3FsCmluZGV4IDQyNzI4MjRlODk0Li4zZjg4N2QzZDM2OSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZ2xvYmFsX3RlbXAuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2dsb2JhbF90ZW1wLnNxbApAQCAtMTI5LDYgKzEyOSw0MCBAQCBTRVQgc2VhcmNoX3BhdGgg PSBnbG9iYWxfdGVtcF90ZXN0czsKIFNFTEVDVCAqIEZST00gdG1wMiBPUkRFUiBCWSBhOwogRFJP UCBUQUJMRSB0bXAyOwogCistLSBUZXN0IHBhcnRpdGlvbmVkIGluZGV4IHZhbGlkaXR5CitDUkVB VEUgR0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsK K0NSRUFURSBHTE9CQUwgVEVNUCBUQUJMRSB0bXAyX3AxIFBBUlRJVElPTiBPRiB0bXAyIEZPUiBW QUxVRVMgSU4gKDEpOworQ1JFQVRFIElOREVYIHRtcDJfYV9pZHggT04gdG1wMiAoYSk7CitTRUxF Q1QgYy5yZWxuYW1lLCBpLmluZGlzdmFsaWQgQVMgZ2xvYmFsX3ZhbGlkLCB0LmluZGlzdmFsaWQg QVMgbG9jYWxfdmFsaWQKKyAgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBPTiBpLmlu ZGV4cmVsaWQgPSBjLm9pZAorICBMRUZUIEpPSU4gcGdfdGVtcF9pbmRleCB0IE9OIHQuaW5kZXhy ZWxpZCA9IGkuaW5kZXhyZWxpZAorIFdIRVJFIGMucmVsbmFtZSB+ICd0bXAyKC4qKV9hX2lkeCcK KyBPUkRFUiBCWSBjLnJlbG5hbWU7CitcZCB0bXAyCitcZCB0bXAyX2FfaWR4CisKK0RST1AgSU5E RVggdG1wMl9hX2lkeDsKK0NSRUFURSBJTkRFWCB0bXAyX2FfaWR4IE9OIE9OTFkgdG1wMiAoYSk7 CitTRUxFQ1QgYy5yZWxuYW1lLCBpLmluZGlzdmFsaWQgQVMgZ2xvYmFsX3ZhbGlkLCB0LmluZGlz dmFsaWQgQVMgbG9jYWxfdmFsaWQKKyAgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBP TiBpLmluZGV4cmVsaWQgPSBjLm9pZAorICBMRUZUIEpPSU4gcGdfdGVtcF9pbmRleCB0IE9OIHQu aW5kZXhyZWxpZCA9IGkuaW5kZXhyZWxpZAorIFdIRVJFIGMucmVsbmFtZSB+ICd0bXAyKC4qKV9h X2lkeCcKKyBPUkRFUiBCWSBjLnJlbG5hbWU7CitcZCB0bXAyCitcZCB0bXAyX2FfaWR4CisKK0NS RUFURSBJTkRFWCB0bXAyX3AxX2FfaWR4IE9OIHRtcDJfcDEgKGEpOworQUxURVIgSU5ERVggdG1w Ml9hX2lkeCBBVFRBQ0ggUEFSVElUSU9OIHRtcDJfcDFfYV9pZHg7CitTRUxFQ1QgYy5yZWxuYW1l LCBpLmluZGlzdmFsaWQgQVMgZ2xvYmFsX3ZhbGlkLCB0LmluZGlzdmFsaWQgQVMgbG9jYWxfdmFs aWQKKyAgRlJPTSBwZ19jbGFzcyBjIEpPSU4gcGdfaW5kZXggaSBPTiBpLmluZGV4cmVsaWQgPSBj Lm9pZAorICBMRUZUIEpPSU4gcGdfdGVtcF9pbmRleCB0IE9OIHQuaW5kZXhyZWxpZCA9IGkuaW5k ZXhyZWxpZAorIFdIRVJFIGMucmVsbmFtZSB+ICd0bXAyKC4qKV9hX2lkeCcKKyBPUkRFUiBCWSBj LnJlbG5hbWU7CitcZCB0bXAyCitcZCB0bXAyX2FfaWR4CitcZCB0bXAyX3AxX2FfaWR4CitEUk9Q IFRBQkxFIHRtcDI7CisKIC0tIFRlc3QgQUxURVIgVEFCTEUgd2l0aCByZXdyaXRlCiBDUkVBVEUg R0xPQkFMIFRFTVAgVEFCTEUgdG1wMiAoYSBpbnQpOwogSU5TRVJUIElOVE8gdG1wMiBWQUxVRVMg KDEpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2YjM4MTU1YTQ4YS4uZTJlMDBjMDUz ZGQgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC05NTcsNiArOTU3LDcgQEAgRm9ybURh dGFfcGdfc3Vic2NyaXB0aW9uCiBGb3JtRGF0YV9wZ19zdWJzY3JpcHRpb25fcmVsCiBGb3JtRGF0 YV9wZ190YWJsZXNwYWNlCiBGb3JtRGF0YV9wZ190ZW1wX2NsYXNzCitGb3JtRGF0YV9wZ190ZW1w X2luZGV4CiBGb3JtRGF0YV9wZ190cmFuc2Zvcm0KIEZvcm1EYXRhX3BnX3RyaWdnZXIKIEZvcm1E YXRhX3BnX3RzX2NvbmZpZwpAQCAtMTAyMyw2ICsxMDI0LDcgQEAgRm9ybV9wZ19zdWJzY3JpcHRp b24KIEZvcm1fcGdfc3Vic2NyaXB0aW9uX3JlbAogRm9ybV9wZ190YWJsZXNwYWNlCiBGb3JtX3Bn X3RlbXBfY2xhc3MKK0Zvcm1fcGdfdGVtcF9pbmRleAogRm9ybV9wZ190cmFuc2Zvcm0KIEZvcm1f cGdfdHJpZ2dlcgogRm9ybV9wZ190c19jb25maWcKLS0gCjIuNTEuMAoK --000000000000c9947c0655ee1c0a--