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 1wHgCk-007PWS-1e for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 11:02:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHgCj-00H3As-2Y for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 11:02:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wHgCi-00H3Aj-2f for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2026 11:02:13 +0000 Received: from mail-lj1-x22d.google.com ([2a00:1450:4864:20::22d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHgCb-00000003B1x-2IX0 for pgsql-hackers@postgresql.org; Tue, 28 Apr 2026 11:02:10 +0000 Received: by mail-lj1-x22d.google.com with SMTP id 38308e7fff4ca-38c620f1699so99069681fa.0 for ; Tue, 28 Apr 2026 04:02:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777374124; cv=none; d=google.com; s=arc-20240605; b=amffD3IGfSnZeEU4MvB09nQOXon8pIKGT3pWOn58JuxIwKsSz1AtIZhF7TeZ+hCxi3 5VHC1bUJUVyXHh0d3VyM5hYtaqdAzewMZyIGkQkQxkyde6tJwZUDLoTRB7mHqbR9PYhq vk6GWl3NavuKdQzM8KxynLwfUbkj+6M4q/A11H9MGOYzTtMTN/c4pJ7NdRDKV8MN2APC Ocpe7OELvpHlRcUrEDMblhLNH4oGgYmooRTUdzeyVL3blF2g9QvuXhAO30Mx7urXWCGy svWwfHklPKzaSxZQE2YCbOV2c1/Gb7WPNjHG5vDk1uYEPv8IeAwS6Es1FgNCUuv1oYBx B3Ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=xnwzEpOgGS8j9bQlk7MmS/lTdjOcNo0W0YGpNqeQKuQ=; fh=mQIzW4U8ahiHmYUnKiSgg4oLZgvarDIjMWueh5Je1Sw=; b=CgtwBUefZzd/qb1FD7ZKc652fjkrHuKfi1qHJ4CCvcOejRKzycaXA8Muw1BLcDgLdR UoWWO5crkhAGwk+iEDDojHYwXNz5Wjct1wOk5POO+ggS391sy2gl3fKRryBfQtI1Hm7y aZWq3syCkzd2V6iiOCXMchBOiRcq9TQ9FkAY62f89eEaj1jL+Rg7I46U8+s4qAcErhW4 Sc8Z5hb0PbOhiQqlJohArCW1Sz3nTyON3JlnO6ZsnRcgs0UmvEtsJegmlxMLWknSZfjj EnWOPvqg3VbbBCjhx2deScjt2Az6hAVcxLkeyp5km8n+PSkEqPIkvYoO9pXpK1jGKkKd iHWQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1777374124; x=1777978924; darn=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=xnwzEpOgGS8j9bQlk7MmS/lTdjOcNo0W0YGpNqeQKuQ=; b=gTqpa8uePoOVxhzGIh3sPgLzjBxYD7MxowHZhcfyzNomgo8i3Cyu7BfOyf4/hfCr8A 0PDfsLJmITRk0F8dmk/zt3AangKo/R83+QmV0/JPB1eu53U/GOA4uUk0pC4X4U5cAZBI 4ZxdM9SaAJjoRdZ7PCwiRN7rZ2uGEpzoHxonILIH3i044Uq+aYyb2ApclCURV+9zeTIi D+O4ks58FGlJi5tCuBkMZLD1yeZgSg5jBzj30m0x9oRvvRYc2NpeA8DvyrjMXkWw5yoL hjoNXuBteRg/5xJ84i2lLGIkYitPbLXx/jiNEuZWc1V8PIvHzpFYfbKRLOU0K+VIAFet HbrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777374124; x=1777978924; 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=xnwzEpOgGS8j9bQlk7MmS/lTdjOcNo0W0YGpNqeQKuQ=; b=nIjf9kb7TxHetojlNirV50CdJSm+JlxWH1mP4tceliVPxNcgmuShYpVFUMoOAbVkIm NDPZZkzv1esg8pjKo4Sx7fKvaPorRwoHUMbKSW2OVl8uYualcU8paS2dKvuV43wfreKS WGRHtCPGdviZbAkn2UkNT3+yxqoboc4qWas3tqGbTQwR6JLdJleZly1cHXsitEsqhSPT WYZB9A1epOgDL7TDwIiAUB8Jq+Js+vtXmDWvYLB1aqDC3hQewEd/Pdmjy4rpQhV7WbkW 9IK1KpSfeLpsmrCueCbERekPxy/TmBAf979DNv+bSS4ehnbiHRKqgcnhIyrGwW3impeP QX8w== X-Forwarded-Encrypted: i=1; AFNElJ/nd8j65QAbbnHBbFHWJSoj0rMS93VmMQMjRsyKZMWZvwpMWsf96fFfANj489/LIlNWrBpprLSpXl0Xy8fW@postgresql.org X-Gm-Message-State: AOJu0YyZFHKoTtyMZ/zt+f4JVs6LWqk4vyo5krMCHFxrE5WbzKHT9/Xt 6Rdug+HS0MdLGz62iO1R75OSYdKEACpZMa3sBdX9juBr+LAHaUxaT4wsstzBTmOMvKXofzwzU9D UgQfGxaOk7Xoa2iC/E0iuatZ7TiqNLmkWh9QA+gyH X-Gm-Gg: AeBDiesRxwnjmg1EHmVoTObAqnMO4PhE4UrmLn7zpP05vAaUgpnDwgW34gtui1pAxBt h0nDuTQyc+lDF0r5Qi9FJ9H/JEHHI4Evf7+Qq5yFKeNb0pHWa/HeN+PpyURAt+a9GzOHH5YpmTW u3TlfF3p90sV/BF5azM+cFEnin3dBnNasDtcxrYsw1RSW8yVcf56h+GpQijgcwnZl672NOdOuXL 8r4O0CQBP0aQT7RLaMe4QgZASf2ZqCEH5MuFpZz4IKjComrXrDVd7A3IJV/esXDWpZkAx2/dzef oDBOzAt2vbGXAxQ4uf2LM5HbTCKlNXZJsKe2XdtYgAzGeDswKrGCWZhkG6xsl3aksj0Lx4WBuRW DRcg= X-Received: by 2002:a2e:b887:0:b0:38a:a77a:b15a with SMTP id 38308e7fff4ca-39240cc27a6mr9611511fa.4.1777374123815; Tue, 28 Apr 2026 04:02:03 -0700 (PDT) MIME-Version: 1.0 References: <432626F9-65DF-4F0D-B345-26CFC3E2CFAC@yandex-team.ru> <9A5AEB25-5E58-4657-9064-7D4F8D50A77D@yandex-team.ru> <35809064-01A3-4449-B393-0F71D4C18F7D@yandex-team.ru> In-Reply-To: From: Jakub Wartak Date: Tue, 28 Apr 2026 13:01:51 +0200 X-Gm-Features: AVHnY4KRWkgZ-m9JcfstLHVvBRlptAzOVZtwDt_mRkxmP0UlPX9IGARi0uyW0A8 Message-ID: Subject: Re: amcheck: add index-all-keys-match verification for B-Tree To: Andrey Borodin Cc: Zsolt Parragi , pgsql-hackers , Wenbo Lin Content-Type: multipart/mixed; boundary="00000000000048cacd065083290e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000048cacd065083290e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Andrey, On Wed, Apr 8, 2026 at 3:17=E2=80=AFPM Jakub Wartak wrote: > > On Thu, Mar 5, 2026 at 7:00=E2=80=AFAM Andrey Borodin wrote: > > Thanks for the review! I've addressed all these issues in patch steps 4= and 5. Other steps are intact. PFA. > > Hi Andrey and Wenboo, > > 1. I tried the v4 to see how it would cope with heap missing segments[0] > (with -Dsegsize_blocks=3D6), so given: [..] > postgres=3D# select bt_index_check(index=3D>'ptest_pkey', > heapallindexed=3D>true, checkunique=3D>true, indexallkeysmatch=3D>true); > ERROR: could not open file "base/5/24578.1" (target block 6): No such > file or directory > > this error was not quite expected for me (altough it is much better than = nothing > as on master today), because patch v4-0002 assumes in > bt_verify_index_tuple_points_to_heap() that we should get false and error= in > more human-firendly way ("index tuple points to non-existent heap"). The = error > itself is coming out of the following stacktrace: [..] > So with the attached patch it becomes more human understandable, but it i= s > somehow orthogonal check? Still maybe we can combine this under this $thr= ead > ambrella and make it as an option of indexallkeysmatch too? Attached > behaves likes this: > > postgres=3D# select bt_index_check(index=3D>'ptest_pkey'); > ERROR: index line pointer in index "ptest_pkey" points to missing > page in table "ptest" > DETAIL: Index tid=3D(5,14) points to heap tid=3D(6,1) but heap has only= 6 blocks. > HINT: this can be caused by lost relation segment (missing or removed fi= le). > > (note it does not need to indexallkeysmatch, but it's related) > [..] > 2. For some reason email from Wenbo didn't get to my emailbox, but I can > see his email here: > https://www.postgresql.org/message-id/resend/ba92ac77-24f1-44ad-abf0-11e6= 4e0a7831%40gmail.com > (and resending is is somewhat not effective) > > > I've been reviewing the patch and ran some concurrent tests against it. > > I found an issue with false positive corruption reports under concurren= t > > VACUUM. > > > > + slot =3D table_slot_create(state->heaprel, NULL); > > + found =3D table_tuple_fetch_row_version(state->heaprel, tid, > > + SnapshotAny, slot); > > + if (!found) > > + { > > + ExecDropSingleTupleTableSlot(slot); > > + ereport(ERROR, > > > > > > bt_verify_index_tuple_points_to_heap uses SnapshotAny with > > table_tuple_fetch_row_version to distinguish "tuple doesn't exist" from > > "tuple exists but is dead". However, bt_index_check only holds > > AccessShareLock which compatible with VACUUM's ShareUpdateExclusiveLock= . > > A concurrent VACUUM Phase 1 can prune heap pages(ItemIdSetDead) between > > Bloom filter probe and the heap lookup. Causing > > table_tuple_fetch_row_version to return false for a legal > > dead-but-now-pruned tuple and a false positive corruption report. > > > > The table_tuple_satisfies_snapshot check does not help, it only runs > > when the fetch succeeds(LP_NORMAL). Once VACUUM sets LP_DEAD, > > heapam_fetch sees !ItemIdIsNormal(lp) and returns false before any > > snapshot checks. > > > > The reproduce should be: DELETE all rows form a big table, then launch > > VACUUM and bt_index_check concurrently. A POC test script attached. > > I think this is spot-on. I haven't run repro, but if we take ASL and VACU= UM > is allowed to run (under ShareUpdateExclusiveLock) then amcheck performs = the > heap bloom building (but ignores dead tuples, while btree still can > point to those) (..) [..] > [0] - https://www.postgresql.org/message-id/flat/013D63E2-5D75-492E-85FF-= 1D5CC0148C82%40gmail.com Here's my attempt at the fixing the LP_DEAD tuples being reported as false positives by the v4 patchset as stated earlier. The simplest way for the v4 to hit those was to: 1) get a fresh initdb cluster 2) run it on all pg_catalog tables/indexes, and to me it (v4*) always relia= bly spotted some LP_DEAD ones there, e.g.: ERROR: index tuple in index "pg_proc_proname_args_nsp_index" points to non-existent heap tuple in table "pg_proc" DETAIL: Index tid=3D(5,21) points to heap tid=3D(18,32) that no longer exi= sts. postgres=3D# SELECT lp, lp_off, lp_flags, lp_len, t_xmin, t_xmax, t_ctid, t_infomask, t_infomask2 FROM heap_page_items(get_raw_page('pg_catalog.pg_proc', 18)) WHERE lp =3D 32; lp | lp_off | lp_flags | lp_len | t_xmin | t_xmax | t_ctid | t_infomask | t_infomask2 ----+--------+----------+--------+--------+--------+--------+------------+-= ------------ 32 | 0 | 3 | 0 | | | | | where lp_flags=3D3 =3D=3D> LP_DEAD When we do bt_index_check() still with AccessShareLock we may expect: - concurrent VACUUM producing LP_DEADs - SELECT doing opportunistic heap pruning (micro-vacuuming) and that is allowed to run even with ShareUpdate (bt_index_parent_check) - LP_DEAD being already there before we even start (aborted VACUUM?) I've tried to enhance v4 based on above assumptions, so v5 is attached. Note: AFAIU opportunistic pruning can produce LP_UNUSED only on HOT-chain intermediate tuples, and those should be never referenced by a btree index. I think it's safe to still to stick to AccessShareLock (earlier I've mentioned ShareUpdateExclusiveLock, but it looks it is doable without that) as we are not affected by truncation and we have xmin horizon so stuff shou= ld not be removed from underneath us. Note that the pg_amcheck/003_check (not contrib/amcheck) still blows-up: not ok 46 - pg_amcheck over schema s2 with corrupt tables excluded reports no corruption status (got 2 vs expected 0) not ok 47 - pg_amcheck over schema s2 with corrupt tables excluded reports no corruption stdout /(?^:^$)/ it's due to SELECT "amcheck_schema".bt_index_check(index :=3D c.oid, heapallindexed :=3D false ) ERROR: could not open file "base/16384/16508": No such file or directory being called on index, while the *heap* relation has been intentionally removed by plan_to_remove_relation_file() from that test. So even if the tables are exluded by the pg_amcheck --exclude-table , amcheck with v5-0005 blows up on RelationGetNumberOfBlocks() as the file is gone. IMHO, we should remove that tes there, but I have not done so far this far as I simply do not know if that's acceptable. Moving that check into heapallindexed option is also a possibilty, but that would hide cheap check under big and costly option (reading whole heap). Also, some rough measurements: One can expect indexallkeysmatched to multip= ly bt_index_check runtime by roughly ~5x compared to a bare check (all flags o= ff) run, or - as expected - ~2x when compared to heapallindexed (that makes se= nse, we are building another full bloom filter). Sample performance baseline of corruption checking seems to be like that: - ~5s for COPY pgbench_accounts to /dev/null (wont discover missing stuff) - ~2s for COPY (SELECT aid FROM pgbench_accounts) to /dev/null (IOT, wont discover missing stuff) amcheck: - ~1.5s for bt_index_check('pgbench_accounts_pkey' (with v5b-0005 might dis= cover loss of heap relation segments) - ~2s for bt_index_check() with just checkunique=3Don - ~7.1s for bt_index_check() with just heapallindexed=3Don - ~8.1s for bt_index_check() with just indexallkeysmatched=3Don (this new f= eature, discovers dangling/missing/corrupted entries as Andrey explain in original post) - ~14s for full verification (everything on) -J. --00000000000048cacd065083290e Content-Type: text/x-patch; charset="US-ASCII"; name="v5b-0002-amcheck-report-corruption-when-index-points-to-n.patch" Content-Disposition: attachment; filename="v5b-0002-amcheck-report-corruption-when-index-points-to-n.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moiihimr1 RnJvbSAwMzc2Y2JlOTI1MDQyYmZkOTgyOGQ1YWExMGRkZjE4YjY1NmY2OTZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFRodSwgMjYgRmViIDIwMjYgMDk6MzI6MDYgKzA1MDAKU3ViamVjdDogW1BBVENIIHY1YiAy LzZdIGFtY2hlY2s6IHJlcG9ydCBjb3JydXB0aW9uIHdoZW4gaW5kZXggcG9pbnRzIHRvCiBub24t ZXhpc3RlbnQgaGVhcCB0dXBsZQoKVXNlIFNuYXBzaG90QW55IHRvIGRpc3Rpbmd1aXNoICJ0dXBs ZSBkb2Vzbid0IGV4aXN0IiAoY29ycnVwdGlvbikgZnJvbQoidHVwbGUgZXhpc3RzIGJ1dCBpcyBk ZWFkIiAoc2tpcCkuICBXaGVuIHRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uCndpdGggU25h cHNob3RBbnkgcmV0dXJucyBmYWxzZSwgdGhlIGhlYXAgc2xvdCB3YXMgcmVjbGFpbWVkIG9yIHRo ZSBwYWdlCndhcyByZW9yZ2FuaXplZCAoZS5nLiBieSBWQUNVVU0pLCBzbyB0aGUgaW5kZXggaGFz IGFuIG9ycGhhbmVkIGVudHJ5LgpSZXBvcnQgdGhhdCBhcyBjb3JydXB0aW9uIGluc3RlYWQgb2Yg c2lsZW50bHkgc2tpcHBpbmcuCi0tLQogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyB8 IDI2ICsrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVy aWZ5X25idHJlZS5jIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCBkZmY4 YmQ0NDQ3MS4uYzU2NDBkNzBiMDUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlf bmJ0cmVlLmMKKysrIGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtMjk4Miw4 ICsyOTgyLDEyIEBAIGJ0X3ZlcmlmeV9pbmRleF90dXBsZV9wb2ludHNfdG9faGVhcChCdHJlZUNo ZWNrU3RhdGUgKnN0YXRlLCBJbmRleFR1cGxlIGl0dXAsCiAJLyoKIAkgKiBCbG9vbSBmaWx0ZXIg c2F5cyAoa2V5LCB0aWQpIG5vdCBpbiBoZWFwLiAgRm9sbG93IFRJRCB0byB2ZXJpZnk7IHRoaXMK IAkgKiBhbW9ydGl6ZXMgcmFuZG9tIGhlYXAgbG9va3VwcyB3aGVuIHRoZSBmaWx0ZXIgaGFzIGZh bHNlIG5lZ2F0aXZlcywgb3IKLQkgKiByZXBvcnRzIGNvcnJ1cHRpb24gd2hlbiB0aGUgaW5kZXgg cG9pbnRzIHRvIHdyb25nIGhlYXAgdHVwbGUuICBTa2lwCi0JICogZGVhZCB0dXBsZXMgKHRhYmxl X3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uIHJldHVybnMgZmFsc2UgZm9yIHRoZW0pLgorCSAqIHJl cG9ydHMgY29ycnVwdGlvbiB3aGVuIHRoZSBpbmRleCBwb2ludHMgdG8gd3JvbmcgaGVhcCB0dXBs ZS4KKwkgKgorCSAqIFVzZSBTbmFwc2hvdEFueSBmaXJzdCB0byBkaXN0aW5ndWlzaCAidHVwbGUg ZG9lc24ndCBleGlzdCIgKGNvcnJ1cHRpb24pCisJICogZnJvbSAidHVwbGUgZXhpc3RzIGJ1dCBp cyBkZWFkIiAoc2tpcCkuICBTbmFwc2hvdEFueSByZXR1cm5zIGFueSB0dXBsZQorCSAqIGF0IHRo ZSBUSUQ7IGlmIHRoYXQgZmFpbHMsIHRoZSBzbG90IHdhcyByZWNsYWltZWQgb3IgdGhlIHBhZ2Ug d2FzCisJICogcmVvcmdhbml6ZWQgKGUuZy4gYnkgVkFDVVVNKSwgc28gdGhlIGluZGV4IGhhcyBh biBvcnBoYW5lZCBlbnRyeS4KIAkgKi8KIAl7CiAJCVR1cGxlVGFibGVTbG90ICpzbG90OwpAQCAt Mjk5NywxMSArMzAwMSwyNSBAQCBidF92ZXJpZnlfaW5kZXhfdHVwbGVfcG9pbnRzX3RvX2hlYXAo QnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5kZXhUdXBsZSBpdHVwLAogCiAJCXNsb3QgPSB0YWJs ZV9zbG90X2NyZWF0ZShzdGF0ZS0+aGVhcHJlbCwgTlVMTCk7CiAJCWZvdW5kID0gdGFibGVfdHVw bGVfZmV0Y2hfcm93X3ZlcnNpb24oc3RhdGUtPmhlYXByZWwsIHRpZCwKLQkJCQkJCQkJCQkJICBz dGF0ZS0+c25hcHNob3QsIHNsb3QpOworCQkJCQkJCQkJCQkgIFNuYXBzaG90QW55LCBzbG90KTsK IAkJaWYgKCFmb3VuZCkKIAkJewogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90 KTsKLQkJCXJldHVybjsJCQkvKiBkZWFkIG9yIG5vbi1leGlzdGVudCBoZWFwIHR1cGxlLCBza2lw ICovCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJV UFRFRCksCisJCQkJCSBlcnJtc2coImluZGV4IHR1cGxlIGluIGluZGV4IFwiJXNcIiBwb2ludHMg dG8gbm9uLWV4aXN0ZW50IGhlYXAgdHVwbGUiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHN0YXRlLT5yZWwpKSwKKwkJCQkJIGVycmRldGFpbF9pbnRlcm5hbCgiSW5kZXggdGlkPSgl dSwldSkgcG9pbnRzIHRvIGhlYXAgdGlkPSgldSwldSkgdGhhdCBubyBsb25nZXIgZXhpc3RzLiIs CisJCQkJCQkJCQkgICB0YXJnZXRibG9jaywgb2Zmc2V0LAorCQkJCQkJCQkJICAgSXRlbVBvaW50 ZXJHZXRCbG9ja051bWJlcih0aWQpLAorCQkJCQkJCQkJICAgSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIodGlkKSkpKTsKKwkJfQorCisJCS8qIFNraXAgZGVhZCB0dXBsZXMgKG5vdCB2aXNpYmxl IHRvIG91ciBzbmFwc2hvdCkgKi8KKwkJaWYgKCF0YWJsZV90dXBsZV9zYXRpc2ZpZXNfc25hcHNo b3Qoc3RhdGUtPmhlYXByZWwsIHNsb3QsIHN0YXRlLT5zbmFwc2hvdCkpCisJCXsKKwkJCUV4ZWNE cm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCQlyZXR1cm47CiAJCX0KIAogCQlpbmRl eGluZm8gPSBzdGF0ZS0+aW5kZXhpbmZvOwotLSAKMi40My4wCgo= --00000000000048cacd065083290e Content-Type: text/x-patch; charset="US-ASCII"; name="v5b-0005-amcheck-attempt-to-detect-lost-heap-segments-bas.patch" Content-Disposition: attachment; filename="v5b-0005-amcheck-attempt-to-detect-lost-heap-segments-bas.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moiihin54 RnJvbSAzZTE1NjJlOWQ2OGY1ZTE2Y2RmMDUxNjlmNmVjOTdjMDMxYWM3NDkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBXZWQsIDggQXByIDIwMjYgMTQ6MDE6NTkgKzAyMDAKU3ViamVjdDogW1BB VENIIHY1YiA1LzZdIGFtY2hlY2s6IGF0dGVtcHQgdG8gZGV0ZWN0IGxvc3QgaGVhcCBzZWdtZW50 cyBiYXNlZAogb24gaW5kZXggdHVwbGVzCgpidF9pbmRleF9jaGVjaygpIGZhbWlseSBvZiBmdW5j dGlvbnMgcmVhZHMgdGhlIHdob2xlIGJ0cmVlIGluZGV4CmFuZCBidWlsZHMgYmxvb20gZmlsdGVy IGFsb25nIHRoZSB3YXkuIExhdGVyIGl0IHJlYWRzIHRoZSBoZWFwIHRhYmxlCmFuZCBmb3IgZXZl cnkgdHVwbGUgdGhlcmUgaXQgcHJvYmVzIHVzaW5nIGJsb29tIGZpbHRlciBpZiB0aGUgaW5kZXgK aGFzIGVudHJ5IG9yIG5vdC4gSG93ZXZlciBpbiBjb25kaXRpb25zIHdoZXJlIHNvbWUgc2VnbWVu dHMgb2YgdGhlCm1haW4gZm9yayBoYXZlIGJlZW4gcmVtb3ZlZCBhcyBkaXNjdXNzZWQgaW4gWzBd IChlLmcuIGJ5IHJvZ3VlIGFjdGlvbiwKZmlsZXN5c3RlbSBjb3JydXB0aW9uL2ZzY2ssIG1pc3Np bmcgZnVsbCBiYWNrdXAgcmVzdG9yZSkgdGhpcyBsb2dpYwotIGFmdGVyIHN0YXJ0dXAgLSBjYW5u b3QgcmVsaWFibHkgZGV0ZWN0IHRoYXQgcmVsYXRpb24gaXMgJ3Nob3J0JyBhcyB0aGUKUmVsYXRp b25HZXROdW1iZXJPZkJsb2NrcygpIHdpbGwgc3RvcCBjb3VudGluZyBvbiB0aGUgbGFzdCBhdmFp bGFibGUKaGVhcCBzZWdtZW50LCB0aGVyZWZvcmUgbm90IGZ1bGwgaGVhcCBzZWdtZW50IHdpbGwg YmUgcHJvYmVkIGFnYWluc3QKYnRyZWUgYmxvb20gZmlsdGVyLgoKVGhpcyBwYXRjaCB0ZWFjaGVz IGFtY2hlY2sgdG8gdmVyaWZ5IGR1cmluZyBidHJlZSBzY2FuIGlmIHRoZSBjdXJyZW50bHkKcHJv Y2Vzc2VkIGluZGV4IHR1cGxlIGRvZXMgbm90IHBvaW50IHRvIGhlYXAgYmxvY2sgYWJvdmUgY3Vy cmVudCByZWxhdGlvbgpzaXplLgoKWzBdIC0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVz c2FnZS1pZC9mbGF0LzAxM0Q2M0UyLTVENzUtNDkyRS04NUZGLTFENUNDMDE0OEM4MiU0MGdtYWls LmNvbQoKQXV0aG9yOiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNlZGIuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQv NDMyNjI2RjktNjVERi00RjBELUIzNDUtMjZDRkMzRTJDRkFDQHlhbmRleC10ZWFtLnJ1CgpmaXgg Zm9ybWF0dGluZwotLS0KIGNvbnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZCAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiAuLi4vdC8wMDhfdmVyaWZ5X25idHJlZV9sb3N0X3NlZ21lbnRzLnBsICAg ICAgfCAxMTUgKysrKysrKysrKysrKysrKysrCiBjb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJl ZS5jICAgICAgICAgICAgICAgfCAgNTUgKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDE3MSBp bnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9hbWNoZWNrL3QvMDA4X3Zl cmlmeV9uYnRyZWVfbG9zdF9zZWdtZW50cy5wbAoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVj ay9tZXNvbi5idWlsZCBiL2NvbnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZAppbmRleCAyMjBiMWNl MWQ1OS4uMjhlM2UxN2I0NDcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9tZXNvbi5idWls ZAorKysgYi9jb250cmliL2FtY2hlY2svbWVzb24uYnVpbGQKQEAgLTUyLDYgKzUyLDcgQEAgdGVz dHMgKz0gewogICAgICAgJ3QvMDA1X3BpdHIucGwnLAogICAgICAgJ3QvMDA2X3ZlcmlmeV9naW4u cGwnLAogICAgICAgJ3QvMDA3X3ZlcmlmeV9uYnRyZWVfaW5kZXhhbGxrZXlzbWF0Y2gucGwnLAor ICAgICAgJ3QvMDA4X3ZlcmlmeV9uYnRyZWVfbG9zdF9zZWdtZW50cy5wbCcsCiAgICAgXSwKICAg fSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay90LzAwOF92ZXJpZnlfbmJ0cmVlX2xv c3Rfc2VnbWVudHMucGwgYi9jb250cmliL2FtY2hlY2svdC8wMDhfdmVyaWZ5X25idHJlZV9sb3N0 X3NlZ21lbnRzLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43YTAy ZjEwNjY5MwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1jaGVjay90LzAwOF92ZXJpZnlf bmJ0cmVlX2xvc3Rfc2VnbWVudHMucGwKQEAgLTAsMCArMSwxMTUgQEAKKworIyBDb3B5cmlnaHQg KGMpIDIwMjMtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBU aGlzIHJlZ3Jlc3Npb24gdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBidHJlZSB2YWxp ZGF0aW9uIGluIHRoZQorIyBwcmVzZW5jZSBvZiBtaXNzaW5nIHJlbGF0aW9uIHNlZ21lbnRzLgor IwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRl c3Q6Ok1vcmU7CisKK215ICRub2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd0 ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywgJ2F1dG92YWN1dW0gPSBvZmYnKTsKKyRub2RlLT5zdGFydDsKKworIyBDcmVhdGUgdHdvIHRh Ymxlcywgb25lIHdpdGggdW5pcXVlIGluZGV4IGFuZCBhbm90aGVyIHRvIHRlc3QKKyMgcG9zdGlu ZyBsaXN0IChidHJlZSBkdXBsaWNhdGVzKS4KKyRub2RlLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcSgKKwlDUkVBVEUgRVhURU5TSU9OIGFtY2hlY2s7CisJQ1JFQVRFIFRBQkxFIG1pc3Npbmdz ZWdzX3Rlc3QxIEFTCisJCVNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGlk OworCUNSRUFURSBUQUJMRSBtaXNzaW5nc2Vnc190ZXN0MiBBUworCQlTRUxFQ1QgMTAgQVMgaWQg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCk7CisJQ1JFQVRFIFVOSVFVRSBJTkRFWCBidHRl c3RfdW5pcXVlX2lkeDEgT04gbWlzc2luZ3NlZ3NfdGVzdDEgKGlkKTsKKwlDUkVBVEUgSU5ERVgg YnR0ZXN0X2lkeDIgT04gbWlzc2luZ3NlZ3NfdGVzdDIgKGlkKTsKKykpOworCitteSAoJHJlc3Vs dCwgJHN0ZG91dCwgJHN0ZGVycik7CisKKyMgV2UgaGF2ZSBub3QgeWV0IGJyb2tlbiB0aGUgaW5k ZXgsIHNvIHdlIHNob3VsZCBnZXQgbm8gY29ycnVwdGlvbgorJHJlc3VsdCA9ICRub2RlLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcSgKKwlTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVzdF91 bmlxdWVfaWR4MScsIHRydWUsIHRydWUsIHRydWUpOworKSk7CitpcygkcmVzdWx0LCAnJywgJ3J1 biBhbWNoZWNrIG9uIG5vbi1icm9rZW4gYnR0ZXN0X3VuaXF1ZV9pZHgxJyk7CisKKyRyZXN1bHQg PSAkbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHEoCisJU0VMRUNUIGJ0X2luZGV4X2No ZWNrKCdidHRlc3RfaWR4MicsIHRydWUsIHRydWUsIHRydWUpOworKSk7CitpcygkcmVzdWx0LCAn JywgJ3J1biBhbWNoZWNrIG9uIG5vbi1icm9rZW4gYnR0ZXN0X2lkeDInKTsKKworIyBCcmVhayB0 aGUgcmVsYXRpb25zLCBzaW11bGF0aW5nIHJvZ3VlIGFjdGlvbiBvciBqdXN0IGZzY2sgbW92aW5n IGZpbGVzCisjIGludG8gdGhlIC9sb3N0K2ZvdW5kLgorbXkgJHJlbHBhdGgxID0gcmVsYXRpb25f ZmlsZXBhdGgoJ21pc3NpbmdzZWdzX3Rlc3QxJyk7CitteSAkcmVscGF0aDIgPSByZWxhdGlvbl9m aWxlcGF0aCgnbWlzc2luZ3NlZ3NfdGVzdDInKTsKKyRub2RlLT5zdG9wOworY29ycnVwdF9zZWdt ZW50KCRyZWxwYXRoMS4iLjEiKTsKK2NvcnJ1cHRfc2VnbWVudCgkcmVscGF0aDIuIi4xIik7Cisk bm9kZS0+c3RhcnQ7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHEoCisJCVNFVCBlbmFibGVfaW5kZXhzY2FuIFRPIG9mZjsKKwkJU0VUIGVuYWJsZV9pbmRleG9u bHlzY2FuIFRPIG9mZjsKKwkJU0VMRUNUIGNvdW50KGlkKSBGUk9NIG1pc3NpbmdzZWdzX3Rlc3Qx OworKSk7CitjbXBfb2soCisgICAgICAgICczMDAwJywgJz4nLCAkcmVzdWx0LAorCQkiZW5zdXJl IHRoZXJlIGlzIG1pc3NpbmcgZGF0YSBvbiBtaXNzaW5nc2Vnc190ZXN0MSIpOworCiskcmVzdWx0 ID0gJG5vZGUtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxKAorCQlTRVQgZW5hYmxlX2luZGV4 c2NhbiBUTyBvZmY7CisJCVNFVCBlbmFibGVfaW5kZXhvbmx5c2NhbiBUTyBvZmY7CisJCVNFTEVD VCBjb3VudChpZCkgRlJPTSBtaXNzaW5nc2Vnc190ZXN0MjsKKykpOworY21wX29rKAorICAgICAg ICAnMzAwMCcsICc+JywgJHJlc3VsdCwKKwkJImVuc3VyZSB0aGVyZSBpcyBtaXNzaW5nIGRhdGEg b24gbWlzc2luZ3NlZ3NfdGVzdDIiKTsKKworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0g JG5vZGUtPnBzcWwoCisJJ3Bvc3RncmVzJywgcShTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVz dF91bmlxdWVfaWR4MScsIHRydWUsIHRydWUsIHRydWUpOykKKyk7CitsaWtlKAorCSRzdGRlcnIs CisJcXIvaW5kZXggbGluZSBwb2ludGVyIGluIGluZGV4ICJidHRlc3RfdW5pcXVlX2lkeDEiIHBv aW50cyB0byBtaXNzaW5nIHBhZ2UgaW4gdGFibGUgIm1pc3NpbmdzZWdzX3Rlc3QxIi8sCisJJ2Rl dGVjdGVkIGNvcnJ1cHRlZCBzZWdtZW50cyBmb3IgbWlzc2luZ3NlZ3NfdGVzdDEnKTsKKworKCRy ZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoCisJJ3Bvc3RncmVzJywgcShT RUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVzdF9pZHgyJywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7KQor KTsKK2xpa2UoCisJJHN0ZGVyciwKKwlxci9pbmRleCBsaW5lIHBvaW50ZXIgaW4gaW5kZXggImJ0 dGVzdF9pZHgyIiBwb2ludHMgdG8gbWlzc2luZyBwYWdlIGluIHRhYmxlICJtaXNzaW5nc2Vnc190 ZXN0MiIvLAorCSdkZXRlY3RlZCBjb3JydXB0ZWQgc2VnbWVudHMgZm9yIG1pc3NpbmdzZWdzX3Rl c3QyJyk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CisKKyMgUmV0dXJucyB0aGUg ZmlsZXN5c3RlbSBwYXRoIGZvciB0aGUgbmFtZWQgcmVsYXRpb24uCitzdWIgcmVsYXRpb25fZmls ZXBhdGgKK3sKKwkJbXkgKCRyZWxuYW1lKSA9IEBfOworCisJCW15ICRwZ2RhdGEgPSAkbm9kZS0+ ZGF0YV9kaXI7CisJCW15ICRyZWwgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCQlx cShTRUxFQ1QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJyRyZWxuYW1lJykpKTsKKwkJZGllICJwYXRo IG5vdCBmb3VuZCBmb3IgcmVsYXRpb24gJHJlbG5hbWUiIHVubGVzcyBkZWZpbmVkICRyZWw7CisJ CXJldHVybiAiJHBnZGF0YS8kcmVsIjsKK30KKworIyBSZW5hbWUgc2VnbWVudCBzbyB0aGF0IGl0 IGlzIGluIGFjY2Vzc2libGUKK3N1YiBjb3JydXB0X3NlZ21lbnQKK3sKKwkJbXkgKCRyZWxwYXRo KSA9IEBfOworCQlteSAkZGVzdHJlbHBhdGggPSAkcmVscGF0aCAuICIuQkFLIjsKKworCQlyZW5h bWUoJHJlbHBhdGgsICRkZXN0cmVscGF0aCkKKwkJCW9yIEJBSUxfT1VUKCJyZW5hbWUgZmFpbGVk OiAkISIpOworfQorCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5j IGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCA3MjQzYjgzOTc3ZC4uMzI3 NjNkZTQyNjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysr IGIvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtMTQ5LDYgKzE0OSw4IEBAIHR5 cGVkZWYgc3RydWN0IEJ0cmVlQ2hlY2tTdGF0ZQogCWJsb29tX2ZpbHRlciAqaGVhcGZpbHRlcjsK IAkvKiBEZWJ1ZyBjb3VudGVyIGZvciBpbmRleCB0dXBsZXMgdmVyaWZpZWQgKi8KIAlpbnQ2NAkJ aW5kZXh0dXBsZXN2ZXJpZmllZDsKKwkvKiBTaG9ydCBoZWFwIHNlZ21lbnRzIHZlcmlmaWNhdGlv biAqLworCUJsb2NrTnVtYmVyIGhlYXBuYmxvY2tzOwogfSBCdHJlZUNoZWNrU3RhdGU7CiAKIC8q CkBAIC00NDEsNiArNDQzLDcgQEAgYnRfY2hlY2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBS ZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBrZXlzcGFjZSwKIAlzdGF0ZS0+cmVsID0gcmVsOwog CXN0YXRlLT5oZWFwcmVsID0gaGVhcHJlbDsKIAlzdGF0ZS0+aGVhcGtleXNwYWNlID0gaGVhcGtl eXNwYWNlOworCXN0YXRlLT5oZWFwbmJsb2NrcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZCbG9ja3Mo c3RhdGUtPmhlYXByZWwpOwogCXN0YXRlLT5yZWFkb25seSA9IHJlYWRvbmx5OwogCXN0YXRlLT5o ZWFwYWxsaW5kZXhlZCA9IGhlYXBhbGxpbmRleGVkOwogCXN0YXRlLT5pbmRleGFsbGtleXNtYXRj aCA9IGluZGV4YWxsa2V5c21hdGNoOwpAQCAtMTYwOCw2ICsxNjExLDU3IEBAIGJ0X3RhcmdldF9w YWdlX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJCQl9CiAJCX0KIAorCQkvKiBDaGVj ayBpZiBsZWFmIHBhZ2UgdHVwbGVzIHBvaW50IHRvIHZhbGlkIGhlYXAgdHVwbGVzICovCisJCWlm KFBfSVNMRUFGKHRvcGFxdWUpICYmICFJdGVtSWRJc0RlYWQoaXRlbWlkKSkKKwkJeworCQkJaW50 IG5wb3N0aW5nID0gMTsKKworCQkJaWYoQlRyZWVUdXBsZUlzUG9zdGluZyhpdHVwKSkKKwkJCQlu cG9zdGluZyA9IEJUcmVlVHVwbGVHZXROUG9zdGluZyhpdHVwKTsKKworCQkJZm9yIChpbnQgaSA9 IDA7IGkgPCBucG9zdGluZzsgaSsrKQorCQkJeworCQkJCUl0ZW1Qb2ludGVyIGh0aWQ7CisJCQkJ QmxvY2tOdW1iZXIgaGVhcGJsazsKKwkJCQlPZmZzZXROdW1iZXIgaGVhcG9mZjsKKworCQkJCWlm IChucG9zdGluZyA+IDEpCisJCQkJCWh0aWQgPSBCVHJlZVR1cGxlR2V0UG9zdGluZ04oaXR1cCwg aSk7CisJCQkJZWxzZQorCQkJCQlodGlkID0gQlRyZWVUdXBsZUdldFBvaW50c1RvVElEKGl0dXAp OworCisJCQkJaGVhcGJsayA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tOdW1iZXIoaHRpZCk7CisJCQkJ aGVhcG9mZiA9IEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKGh0aWQpOworCisJCQkJLyoKKwkJ CQkqIERvZXMgaGVhcGJsayBnb2VzIGJleW9uZCBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKCkg LSBwb3RlbnRpYWxseQorCQkJCSogaW5kaWNhdGluZyBtaXNzaW5nIHJlbGF0aW9uIHNlZ21lbnQ/ CisJCQkJKi8KKwkJCQlpZiAoaGVhcGJsayA+PSBzdGF0ZS0+aGVhcG5ibG9ja3MpCisJCQkJewor CQkJCQkvKiBXZSBtYXkgbmVlZCB0byByZWNoZWNrIG91ciBjYWNoZWQgdmFsdWUgYXMgd2Ugb3Bl cmF0ZSB3aXRoIEFTTCAqLworCQkJCQlzdGF0ZS0+aGVhcG5ibG9ja3MgPSBSZWxhdGlvbkdldE51 bWJlck9mQmxvY2tzKHN0YXRlLT5oZWFwcmVsKTsKKwkJCQkJaWYgKGhlYXBibGsgPj0gc3RhdGUt PmhlYXBuYmxvY2tzKQorCQkJCQl7CisJCQkJCQljaGFyICpwb3N0aW5nb2ZmID0gIiI7CisJCQkJ CQlpZihucG9zdGluZyA+IDEpCisJCQkJCQkJcG9zdGluZ29mZiA9IHBzcHJpbnRmKCJwb3N0aW5n IGxpc3Qgb2Zmc2V0PSVkIiwgaSk7CisKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTkRFWF9DT1JSVVBURUQpLAorCQkJCQkJCSBlcnJtc2coImluZGV4IGxp bmUgcG9pbnRlciBpbiBpbmRleCBcIiVzXCIgcG9pbnRzIHRvIG1pc3NpbmcgcGFnZSBpbiB0YWJs ZSBcIiVzXCIiLAorCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+cmVsKSwK KwkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPmhlYXByZWwpKSwKKwkJCQkJ CQkgZXJyZGV0YWlsX2ludGVybmFsKCJJbmRleCB0aWQ9KCV1LCV1KSAlcyBwb2ludHMgdG8gaGVh cCB0aWQ9KCV1LCV1KSBidXQgaGVhcCBoYXMgb25seSAldSBibG9ja3MuIiwKKwkJCQkJCQkJc3Rh dGUtPnRhcmdldGJsb2NrLCBvZmZzZXQsIHBvc3RpbmdvZmYsCisJCQkJCQkJCWhlYXBibGssIGhl YXBvZmYsCisJCQkJCQkJCXN0YXRlLT5oZWFwbmJsb2NrcykpLAorCQkJCQkJCSBlcnJoaW50KCJ0 aGlzIGNhbiBiZSBjYXVzZWQgYnkgbG9zdCByZWxhdGlvbiBzZWdtZW50IChtaXNzaW5nIG9yIHJl bW92ZWQgZmlsZSkuIikpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisKIAkJLyogVmVyaWZ5 IGVhY2ggaW5kZXggdHVwbGUgcG9pbnRzIHRvIGhlYXAgdHVwbGUgd2l0aCBzYW1lIGtleSAqLwog CQlpZiAoc3RhdGUtPmluZGV4YWxsa2V5c21hdGNoICYmIFBfSVNMRUFGKHRvcGFxdWUpICYmICFJ dGVtSWRJc0RlYWQoaXRlbWlkKSkKIAkJewpAQCAtMjk1Miw2ICszMDA2LDcgQEAgYnRfaGVhcF9m aW5nZXJwcmludF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwgSXRlbVBvaW50ZXIgdGlkLCBEYXR1 bSAqdmFsdWVzLAogfQogCiAvKgorICogTGF1bmNoZWQgb25seSB3aXRoIGluZGV4YWxsa2V5c21h dGNoOgogICogVmVyaWZ5IHRoYXQgdGhlIGluZGV4IHR1cGxlIHBvaW50cyB0byBhIGhlYXAgdHVw bGUgd2l0aCB0aGUgc2FtZSBrZXkuCiAgKiBXaGVuIHRoZSBCbG9vbSBmaWx0ZXIgbGFja3MgdGhl IChrZXksIHRpZCksIHBlcmZvcm0gYSBoZWFwIGxvb2t1cCB0byBjb25maXJtLgogICogU2tpcCBp bmRleCB0dXBsZXMgdGhhdCBwb2ludCB0byBkZWFkIGhlYXAgdHVwbGVzIChub3QgdmlzaWJsZSB0 byBzbmFwc2hvdCkuCi0tIAoyLjQzLjAKCg== --00000000000048cacd065083290e Content-Type: text/x-patch; charset="US-ASCII"; name="v5b-0004-amcheck-address-review-fix-Bloom-filter-comment-.patch" Content-Disposition: attachment; filename="v5b-0004-amcheck-address-review-fix-Bloom-filter-comment-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moiihin13 RnJvbSBjY2U0ZmE0YWQwZTYxMjBhOTExNmZiYTY4OGE3ODdjZTY4MTQzZTI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFRodSwgNSBNYXIgMjAyNiAwODo1OTowNyArMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjViIDQv Nl0gYW1jaGVjazogYWRkcmVzcyByZXZpZXcgLSBmaXggQmxvb20gZmlsdGVyIGNvbW1lbnQsCiBh ZGQgdGFibGUgbmFtZSB0byBlcnJvcnMKCi0gUmVwaHJhc2UgQmxvb20gZmlsdGVyIGNvbW1lbnQ6 IGZpbHRlcnMgaGF2ZSBmYWxzZSBwb3NpdGl2ZXMsIG5ldmVyIGZhbHNlCiAgbmVnYXRpdmVzLCBz byAibm90IGluIiBjb3JyZWN0bHkgbWVhbnMgd2UgbXVzdCB2ZXJpZnkKLSBJbmNsdWRlIHRhYmxl IG5hbWUgaW4gaW5kZXhhbGxrZXlzbWF0Y2ggZXJyb3IgbWVzc2FnZXMgZm9yIGVhc2llcgogIGRp YWdub3NpcwotLS0KIGNvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgfCAxNiArKysrKysr KysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jIGIvY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwppbmRleCBjNTY0MGQ3MGIwNS4uNzI0M2I4Mzk3N2Qg MTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMKKysrIGIvY29udHJp Yi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYwpAQCAtMjk4MSw4ICsyOTgxLDEwIEBAIGJ0X3Zlcmlm eV9pbmRleF90dXBsZV9wb2ludHNfdG9faGVhcChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJbmRl eFR1cGxlIGl0dXAsCiAKIAkvKgogCSAqIEJsb29tIGZpbHRlciBzYXlzIChrZXksIHRpZCkgbm90 IGluIGhlYXAuICBGb2xsb3cgVElEIHRvIHZlcmlmeTsgdGhpcwotCSAqIGFtb3J0aXplcyByYW5k b20gaGVhcCBsb29rdXBzIHdoZW4gdGhlIGZpbHRlciBoYXMgZmFsc2UgbmVnYXRpdmVzLCBvcgot CSAqIHJlcG9ydHMgY29ycnVwdGlvbiB3aGVuIHRoZSBpbmRleCBwb2ludHMgdG8gd3JvbmcgaGVh cCB0dXBsZS4KKwkgKiBhbW9ydGl6ZXMgcmFuZG9tIGhlYXAgbG9va3VwcyBieSBvbmx5IGZldGNo aW5nIHdoZW4gdGhlIHByb2JlIGluZGljYXRlcworCSAqIGFic2VuY2UgKEJsb29tIGZpbHRlcnMg aGF2ZSBmYWxzZSBwb3NpdGl2ZXMsIG5ldmVyIGZhbHNlIG5lZ2F0aXZlcywgc28KKwkgKiAibm90 IGluIiBtZWFucyB3ZSBtdXN0IHZlcmlmeSksIG9yIHJlcG9ydHMgY29ycnVwdGlvbiB3aGVuIHRo ZSBpbmRleAorCSAqIHBvaW50cyB0byB3cm9uZyBoZWFwIHR1cGxlLgogCSAqCiAJICogVXNlIFNu YXBzaG90QW55IGZpcnN0IHRvIGRpc3Rpbmd1aXNoICJ0dXBsZSBkb2Vzbid0IGV4aXN0IiAoY29y cnVwdGlvbikKIAkgKiBmcm9tICJ0dXBsZSBleGlzdHMgYnV0IGlzIGRlYWQiIChza2lwKS4gIFNu YXBzaG90QW55IHJldHVybnMgYW55IHR1cGxlCkBAIC0zMDA3LDggKzMwMDksOSBAQCBidF92ZXJp ZnlfaW5kZXhfdHVwbGVfcG9pbnRzX3RvX2hlYXAoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwgSW5k ZXhUdXBsZSBpdHVwLAogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwK LQkJCQkJIGVycm1zZygiaW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wiIHBvaW50cyB0byBub24t ZXhpc3RlbnQgaGVhcCB0dXBsZSIsCi0JCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3Rh dGUtPnJlbCkpLAorCQkJCQkgZXJybXNnKCJpbmRleCB0dXBsZSBpbiBpbmRleCBcIiVzXCIgcG9p bnRzIHRvIG5vbi1leGlzdGVudCBoZWFwIHR1cGxlIGluIHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJ UmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJlbCksCisJCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUoc3RhdGUtPmhlYXByZWwpKSwKIAkJCQkJIGVycmRldGFpbF9pbnRlcm5hbCgi SW5kZXggdGlkPSgldSwldSkgcG9pbnRzIHRvIGhlYXAgdGlkPSgldSwldSkgdGhhdCBubyBsb25n ZXIgZXhpc3RzLiIsCiAJCQkJCQkJCQkgICB0YXJnZXRibG9jaywgb2Zmc2V0LAogCQkJCQkJCQkJ ICAgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpLApAQCAtMzA0OCw4ICszMDUxLDkgQEAg YnRfdmVyaWZ5X2luZGV4X3R1cGxlX3BvaW50c190b19oZWFwKEJ0cmVlQ2hlY2tTdGF0ZSAqc3Rh dGUsIEluZGV4VHVwbGUgaXR1cCwKIAkJCQlwZnJlZShub3JtKTsKIAkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkJIGVycm1zZygi aW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wiIGRvZXMgbm90IG1hdGNoIGhlYXAgdHVwbGUiLAot CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwpKSwKKwkJCQkJIGVycm1z ZygiaW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wiIGRvZXMgbm90IG1hdGNoIGhlYXAgdHVwbGUg aW4gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+ cmVsKSwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+aGVhcHJlbCkpLAog CQkJCQkgZXJyZGV0YWlsX2ludGVybmFsKCJJbmRleCB0aWQ9KCV1LCV1KSBwb2ludHMgdG8gaGVh cCB0aWQ9KCV1LCV1KSB3aXRoIGRpZmZlcmVudCBrZXkuIiwKIAkJCQkJCQkJCSAgIHRhcmdldGJs b2NrLCBvZmZzZXQsCiAJCQkJCQkJCQkgICBJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRpZCks Ci0tIAoyLjQzLjAKCg== --00000000000048cacd065083290e Content-Type: text/x-patch; charset="US-ASCII"; name="v5b-0001-amcheck-add-indexallkeysmatch-verification-for-B.patch" Content-Disposition: attachment; filename="v5b-0001-amcheck-add-indexallkeysmatch-verification-for-B.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moiihimb0 RnJvbSAxM2NkYjI5ODRmMzk4M2YzNTc3YjM1ODA3YjM1ZDljN2E1YTFjNjk5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFR1ZSwgMTcgRmViIDIwMjYgMTI6MDU6NTEgKzA1MDAKU3ViamVjdDogW1BBVENIIHY1YiAx LzZdIGFtY2hlY2s6IGFkZCBpbmRleGFsbGtleXNtYXRjaCB2ZXJpZmljYXRpb24gZm9yCiBCLVRy ZWUgaW5kZXhlcwoKQWRkIGEgbmV3ICJpbmRleGFsbGtleXNtYXRjaCIgb3B0aW9uIHRvIGJ0X2lu ZGV4X2NoZWNrKCkgYW5kCmJ0X2luZGV4X3BhcmVudF9jaGVjaygpIHRoYXQgdmVyaWZpZXMgZWFj aCBpbmRleCB0dXBsZSBwb2ludHMgdG8gYQpoZWFwIHR1cGxlIHdpdGggdGhlIHNhbWUga2V5LiAg VGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiB0aGUgZXhpc3RpbmcKImhlYXBhbGxpbmRleGVkIiBjaGVj aywgd2hpY2ggdmVyaWZpZXMgZXZlcnkgaGVhcCB0dXBsZSBpcyBwcmVzZW50CmluIHRoZSBpbmRl eC4KClRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgQmxvb20gZmlsdGVyIHRvIGFtb3J0aXplIHJh bmRvbSBoZWFwCmxvb2t1cHMuICBBIHNlcXVlbnRpYWwgaGVhcCBzY2FuIGZpcnN0IGZpbmdlcnBy aW50cyBhbGwgdmlzaWJsZQooa2V5LCB0aWQpIHBhaXJzLiAgRHVyaW5nIHRoZSBpbmRleCBzY2Fu LCBlYWNoIGxlYWYgdHVwbGUgKGluY2x1ZGluZwpwb3N0aW5nIGxpc3QgZW50cmllcykgaXMgcHJv YmVkIGFnYWluc3QgdGhpcyBmaWx0ZXIuICBPbmx5IHdoZW4gdGhlCmZpbHRlciBzYXlzICJub3Qg cHJlc2VudCIgZG8gd2UgcGVyZm9ybSBhbiBhY3R1YWwgaGVhcCBmZXRjaCBhbmQKa2V5IGNvbXBh cmlzb24gdmlhIEZvcm1JbmRleERhdHVtLCByZXBvcnRpbmcgY29ycnVwdGlvbiBpZiB0aGUga2V5 cwpkaWZmZXIuCgpUaGlzIGNoZWNrIGRldGVjdHMgY29ycnVwdGlvbiB3aGVyZSBhbiBpbmRleCBl bnRyeSBzdG9yZXMgYQpkaWZmZXJlbnQga2V5IHRoYW4gdGhlIGhlYXAgdHVwbGUgaXQgcG9pbnRz IHRvIC0tIGEgc2NlbmFyaW8gdGhhdAp0aGUgZXhpc3RpbmcgaGVhcGFsbGluZGV4ZWQgYW5kIHN0 cnVjdHVyYWwgY2hlY2tzIGNhbm5vdCBjYXRjaCwKcGFydGljdWxhcmx5IHdoZW4gaXQgbWFuaWZl c3RzIHdpdGhpbiBwb3N0aW5nIGxpc3RzIGJlZm9yZSBpdApkZXZlbG9wcyBpbnRvIGEgZGV0ZWN0 YWJsZSBvcmRlcmluZyB2aW9sYXRpb24uCgpCdW1wIGFtY2hlY2sgZXh0ZW5zaW9uIHZlcnNpb24g dG8gMS42LgotLS0KIGNvbnRyaWIvYW1jaGVjay9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAg ICB8ICAgNCArLQogY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0tMS42LnNxbCAgICAgICAg IHwgIDIxICsrCiBjb250cmliL2FtY2hlY2svYW1jaGVjay5jb250cm9sICAgICAgICAgICAgICAg fCAgIDIgKy0KIGNvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19idHJlZS5vdXQgICAgICB8 ICAyMCArKwogY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgIHwg ICAyICsKIGNvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnRyZWUuc3FsICAgICAgICAgICB8ICAg NyArCiAuLi4vdC8wMDdfdmVyaWZ5X25idHJlZV9pbmRleGFsbGtleXNtYXRjaC5wbCAgfCAxMTEg KysrKysrKwogY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYyAgICAgICAgICAgICAgIHwg MzEwICsrKysrKysrKysrKysrKy0tLQogOCBmaWxlcyBjaGFuZ2VkLCA0MzcgaW5zZXJ0aW9ucygr KSwgNDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9hbWNoZWNrL2Ft Y2hlY2stLTEuNS0tMS42LnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvYW1jaGVjay90 LzAwN192ZXJpZnlfbmJ0cmVlX2luZGV4YWxsa2V5c21hdGNoLnBsCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9hbWNoZWNrL01ha2VmaWxlIGIvY29udHJpYi9hbWNoZWNrL01ha2VmaWxlCmluZGV4IDFi N2E2M2NiYWE0Li4yYzIzMTA5YTIwMCAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL01ha2Vm aWxlCisrKyBiL2NvbnRyaWIvYW1jaGVjay9NYWtlZmlsZQpAQCAtMTAsMTIgKzEwLDEyIEBAIE9C SlMgPSBcCiAKIEVYVEVOU0lPTiA9IGFtY2hlY2sKIERBVEEgPSBhbWNoZWNrLS0xLjItLTEuMy5z cWwgYW1jaGVjay0tMS4xLS0xLjIuc3FsIGFtY2hlY2stLTEuMC0tMS4xLnNxbCBhbWNoZWNrLS0x LjAuc3FsIFwKLQkJYW1jaGVjay0tMS4zLS0xLjQuc3FsIGFtY2hlY2stLTEuNC0tMS41LnNxbAor CQlhbWNoZWNrLS0xLjMtLTEuNC5zcWwgYW1jaGVjay0tMS40LS0xLjUuc3FsIGFtY2hlY2stLTEu NS0tMS42LnNxbAogUEdGSUxFREVTQyA9ICJhbWNoZWNrIC0gZnVuY3Rpb24gZm9yIHZlcmlmeWlu ZyByZWxhdGlvbiBpbnRlZ3JpdHkiCiAKIFJFR1JFU1MgPSBjaGVjayBjaGVja19idHJlZSBjaGVj a19naW4gY2hlY2tfaGVhcAogCi1FWFRSQV9JTlNUQUxMID0gY29udHJpYi9wZ193YWxpbnNwZWN0 CitFWFRSQV9JTlNUQUxMID0gY29udHJpYi9wZ193YWxpbnNwZWN0IGNvbnRyaWIvcGdfc3VyZ2Vy eQogVEFQX1RFU1RTID0gMQogCiBpZmRlZiBVU0VfUEdYUwpkaWZmIC0tZ2l0IGEvY29udHJpYi9h bWNoZWNrL2FtY2hlY2stLTEuNS0tMS42LnNxbCBiL2NvbnRyaWIvYW1jaGVjay9hbWNoZWNrLS0x LjUtLTEuNi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmFjMDFm NDI5ZDdkCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9hbWNoZWNrL2FtY2hlY2stLTEuNS0t MS42LnNxbApAQCAtMCwwICsxLDIxIEBACisvKiBjb250cmliL2FtY2hlY2svYW1jaGVjay0tMS41 LS0xLjYuc3FsICovCisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWws IHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OCitcZWNobyBVc2UgIkFMVEVSIEVYVEVO U0lPTiBhbWNoZWNrIFVQREFURSBUTyAnMS42JyIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisK Ky0tIEFkZCBpbmRleGFsbGtleXNtYXRjaCBwYXJhbWV0ZXIgdG8gYnRfaW5kZXhfY2hlY2sgYW5k IGJ0X2luZGV4X3BhcmVudF9jaGVjaworQ1JFQVRFIEZVTkNUSU9OIGJ0X2luZGV4X2NoZWNrKGlu ZGV4IHJlZ2NsYXNzLAorICAgIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4sIGNoZWNrdW5pcXVlIGJv b2xlYW4sIGluZGV4YWxsa2V5c21hdGNoIGJvb2xlYW4pCitSRVRVUk5TIFZPSUQKK0FTICdNT0RV TEVfUEFUSE5BTUUnLCAnYnRfaW5kZXhfY2hlY2snCitMQU5HVUFHRSBDIFNUUklDVCBQQVJBTExF TCBSRVNUUklDVEVEOworCitDUkVBVEUgRlVOQ1RJT04gYnRfaW5kZXhfcGFyZW50X2NoZWNrKGlu ZGV4IHJlZ2NsYXNzLAorICAgIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4sIHJvb3RkZXNjZW5kIGJv b2xlYW4sIGNoZWNrdW5pcXVlIGJvb2xlYW4sCisgICAgaW5kZXhhbGxrZXlzbWF0Y2ggYm9vbGVh bikKK1JFVFVSTlMgVk9JRAorQVMgJ01PRFVMRV9QQVRITkFNRScsICdidF9pbmRleF9wYXJlbnRf Y2hlY2snCitMQU5HVUFHRSBDIFNUUklDVCBQQVJBTExFTCBSRVNUUklDVEVEOworCitSRVZPS0Ug QUxMIE9OIEZVTkNUSU9OIGJ0X2luZGV4X2NoZWNrKHJlZ2NsYXNzLCBib29sZWFuLCBib29sZWFu LCBib29sZWFuKSBGUk9NIFBVQkxJQzsKK1JFVk9LRSBBTEwgT04gRlVOQ1RJT04gYnRfaW5kZXhf cGFyZW50X2NoZWNrKHJlZ2NsYXNzLCBib29sZWFuLCBib29sZWFuLCBib29sZWFuLCBib29sZWFu KSBGUk9NIFBVQkxJQzsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9hbWNoZWNrLmNvbnRy b2wgYi9jb250cmliL2FtY2hlY2svYW1jaGVjay5jb250cm9sCmluZGV4IGM4YmE2ZDdjOWJjLi4y ZjMyOWVmMmNmNCAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL2FtY2hlY2suY29udHJvbAor KysgYi9jb250cmliL2FtY2hlY2svYW1jaGVjay5jb250cm9sCkBAIC0xLDUgKzEsNSBAQAogIyBh bWNoZWNrIGV4dGVuc2lvbgogY29tbWVudCA9ICdmdW5jdGlvbnMgZm9yIHZlcmlmeWluZyByZWxh dGlvbiBpbnRlZ3JpdHknCi1kZWZhdWx0X3ZlcnNpb24gPSAnMS41JworZGVmYXVsdF92ZXJzaW9u ID0gJzEuNicKIG1vZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL2FtY2hlY2snCiByZWxvY2F0YWJs ZSA9IHRydWUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19idHJl ZS5vdXQgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0CmluZGV4IDY1 NThmMmM1YTRmLi5kNGRhODAzYjM1NSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL2V4cGVj dGVkL2NoZWNrX2J0cmVlLm91dAorKysgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tf YnRyZWUub3V0CkBAIC0yMzIsNiArMjMyLDI2IEBAIFNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hl Y2soJ2J0dGVzdF9iX2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IHRydWUsIHJvb3RkZXNjZW5kCiAg CiAoMSByb3cpCiAKKy0tIGluZGV4YWxsa2V5c21hdGNoOiB2ZXJpZnkgZWFjaCBpbmRleCB0dXBs ZSBwb2ludHMgdG8gaGVhcCB0dXBsZSB3aXRoIHNhbWUga2V5CitTRUxFQ1QgYnRfaW5kZXhfY2hl Y2soJ2J0dGVzdF9hX2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IGZhbHNlLCBjaGVja3VuaXF1ZSA9 PiBmYWxzZSwgaW5kZXhhbGxrZXlzbWF0Y2ggPT4gdHJ1ZSk7CisgYnRfaW5kZXhfY2hlY2sgCist LS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hl Y2soJ2J0dGVzdF9hX2lkeCcsIGhlYXBhbGxpbmRleGVkID0+IGZhbHNlLCByb290ZGVzY2VuZCA9 PiBmYWxzZSwgY2hlY2t1bmlxdWUgPT4gZmFsc2UsIGluZGV4YWxsa2V5c21hdGNoID0+IHRydWUp OworIGJ0X2luZGV4X3BhcmVudF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKKy0tIGluZGV4YWxsa2V5c21hdGNoIG9uIGV4cHJlc3Npb24gaW5kZXggKGV4ZXJj aXNlcyBGb3JtSW5kZXhEYXR1bS9paV9FeHByZXNzaW9uc1N0YXRlIHBhdGgpCitTRUxFQ1QgYnRf aW5kZXhfY2hlY2soJ2J0dGVzdF9hX2V4cHJfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gZmFsc2Us IGNoZWNrdW5pcXVlID0+IGZhbHNlLCBpbmRleGFsbGtleXNtYXRjaCA9PiB0cnVlKTsKKyBidF9p bmRleF9jaGVjayAKKy0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwogLS0gQ2hlY2sgdGhh dCBudWxsIHZhbHVlcyBpbiBhbiB1bmlxdWUgaW5kZXggYXJlIG5vdCB0cmVhdGVkIGFzIGVxdWFs CiBDUkVBVEUgVEFCTEUgYnR0ZXN0X3VuaXF1ZV9udWxscyAoYSBzZXJpYWwsIGIgaW50LCBjIGlu dCBVTklRVUUpOwogSU5TRVJUIElOVE8gYnR0ZXN0X3VuaXF1ZV9udWxscyBWQUxVRVMgKGdlbmVy YXRlX3NlcmllcygxLCAxMDAwMCksIDIsIGRlZmF1bHQpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9h bWNoZWNrL21lc29uLmJ1aWxkIGIvY29udHJpYi9hbWNoZWNrL21lc29uLmJ1aWxkCmluZGV4IGQ1 MTM3ZWY2OTFkLi4yMjBiMWNlMWQ1OSAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL21lc29u LmJ1aWxkCisrKyBiL2NvbnRyaWIvYW1jaGVjay9tZXNvbi5idWlsZApAQCAtMjcsNiArMjcsNyBA QCBpbnN0YWxsX2RhdGEoCiAgICdhbWNoZWNrLS0xLjItLTEuMy5zcWwnLAogICAnYW1jaGVjay0t MS4zLS0xLjQuc3FsJywKICAgJ2FtY2hlY2stLTEuNC0tMS41LnNxbCcsCisgICdhbWNoZWNrLS0x LjUtLTEuNi5zcWwnLAogICBrd2FyZ3M6IGNvbnRyaWJfZGF0YV9hcmdzLAogKQogCkBAIC01MCw2 ICs1MSw3IEBAIHRlc3RzICs9IHsKICAgICAgICd0LzAwNF92ZXJpZnlfbmJ0cmVlX3VuaXF1ZS5w bCcsCiAgICAgICAndC8wMDVfcGl0ci5wbCcsCiAgICAgICAndC8wMDZfdmVyaWZ5X2dpbi5wbCcs CisgICAgICAndC8wMDdfdmVyaWZ5X25idHJlZV9pbmRleGFsbGtleXNtYXRjaC5wbCcsCiAgICAg XSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9zcWwvY2hlY2tfYnRyZWUu c3FsIGIvY29udHJpYi9hbWNoZWNrL3NxbC9jaGVja19idHJlZS5zcWwKaW5kZXggMTcxZjdmNjkx ZWMuLmJjNWE3NmMwYjU5IDEwMDY0NAotLS0gYS9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0 cmVlLnNxbAorKysgYi9jb250cmliL2FtY2hlY2svc3FsL2NoZWNrX2J0cmVlLnNxbApAQCAtMTQ4 LDYgKzE0OCwxMyBAQCBTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVzdF9iX2lkeCcsIGhlYXBh bGxpbmRleGVkID0+IGZhbHNlLCBjaGVja3VuaXF1ZSA9PiB0cgogU0VMRUNUIGJ0X2luZGV4X3Bh cmVudF9jaGVjaygnYnR0ZXN0X2FfaWR4JywgaGVhcGFsbGluZGV4ZWQgPT4gdHJ1ZSwgcm9vdGRl c2NlbmQgPT4gdHJ1ZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CiBTRUxFQ1QgYnRfaW5kZXhfcGFy ZW50X2NoZWNrKCdidHRlc3RfYl9pZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiB0cnVlLCByb290ZGVz Y2VuZCA9PiBmYWxzZSwgY2hlY2t1bmlxdWUgPT4gdHJ1ZSk7CiAKKy0tIGluZGV4YWxsa2V5c21h dGNoOiB2ZXJpZnkgZWFjaCBpbmRleCB0dXBsZSBwb2ludHMgdG8gaGVhcCB0dXBsZSB3aXRoIHNh bWUga2V5CitTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2J0dGVzdF9hX2lkeCcsIGhlYXBhbGxpbmRl eGVkID0+IGZhbHNlLCBjaGVja3VuaXF1ZSA9PiBmYWxzZSwgaW5kZXhhbGxrZXlzbWF0Y2ggPT4g dHJ1ZSk7CitTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCdidHRlc3RfYV9pZHgnLCBoZWFw YWxsaW5kZXhlZCA9PiBmYWxzZSwgcm9vdGRlc2NlbmQgPT4gZmFsc2UsIGNoZWNrdW5pcXVlID0+ IGZhbHNlLCBpbmRleGFsbGtleXNtYXRjaCA9PiB0cnVlKTsKKworLS0gaW5kZXhhbGxrZXlzbWF0 Y2ggb24gZXhwcmVzc2lvbiBpbmRleCAoZXhlcmNpc2VzIEZvcm1JbmRleERhdHVtL2lpX0V4cHJl c3Npb25zU3RhdGUgcGF0aCkKK1NFTEVDVCBidF9pbmRleF9jaGVjaygnYnR0ZXN0X2FfZXhwcl9p ZHgnLCBoZWFwYWxsaW5kZXhlZCA9PiBmYWxzZSwgY2hlY2t1bmlxdWUgPT4gZmFsc2UsIGluZGV4 YWxsa2V5c21hdGNoID0+IHRydWUpOworCiAtLSBDaGVjayB0aGF0IG51bGwgdmFsdWVzIGluIGFu IHVuaXF1ZSBpbmRleCBhcmUgbm90IHRyZWF0ZWQgYXMgZXF1YWwKIENSRUFURSBUQUJMRSBidHRl c3RfdW5pcXVlX251bGxzIChhIHNlcmlhbCwgYiBpbnQsIGMgaW50IFVOSVFVRSk7CiBJTlNFUlQg SU5UTyBidHRlc3RfdW5pcXVlX251bGxzIFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAw KSwgMiwgZGVmYXVsdCk7CmRpZmYgLS1naXQgYS9jb250cmliL2FtY2hlY2svdC8wMDdfdmVyaWZ5 X25idHJlZV9pbmRleGFsbGtleXNtYXRjaC5wbCBiL2NvbnRyaWIvYW1jaGVjay90LzAwN192ZXJp ZnlfbmJ0cmVlX2luZGV4YWxsa2V5c21hdGNoLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5jYWYyY2JkOTNlNwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYW1j aGVjay90LzAwN192ZXJpZnlfbmJ0cmVlX2luZGV4YWxsa2V5c21hdGNoLnBsCkBAIC0wLDAgKzEs MTExIEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorIworIyBUZXN0IGluZGV4YWxsa2V5c21hdGNoIHZlcmlmaWNhdGlvbjogZWFj aCBpbmRleCB0dXBsZSBtdXN0IHBvaW50IHRvIGEgaGVhcAorIyB0dXBsZSB3aXRoIHRoZSBzYW1l IGtleS4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKKwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy LT5uZXcoJ3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAnYXV0b3ZhY3V1bT1vZmYnKTsKKyRub2RlLT5zdGFydDsKKworJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBFWFRFTlNJT04gYW1jaGVjaykpOworCisjCisj IFRlc3QgMTogaW5kZXhhbGxrZXlzbWF0Y2ggb24gdW5jb3JydXB0ZWQgdGFibGUgKHBsYWluIGNv bHVtbikKKyMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgVEFCTEUg aWR4YWxsX3BsYWluIChpZCBpbnQpOworCUlOU0VSVCBJTlRPIGlkeGFsbF9wbGFpbiBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApOworCUNSRUFURSBJTkRFWCBpZHhhbGxfcGxhaW5faWR4 IE9OIGlkeGFsbF9wbGFpbiAoaWQpOworKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcShTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeGFsbF9wbGFpbl9p ZHgnLCBmYWxzZSwgZmFsc2UsIHRydWUpKSk7CitpcygkcmVzdWx0LCAnJywgJ2luZGV4YWxsa2V5 c21hdGNoIHBhc3NlcyBvbiB1bmNvcnJ1cHRlZCBwbGFpbiB0YWJsZScpOworCisjCisjIFRlc3Qg MjogaW5kZXhhbGxrZXlzbWF0Y2ggb24gdW5jb3JydXB0ZWQgdGFibGUgd2l0aCBkZWR1cGxpY2F0 aW9uCisjCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHEoCisJQ1JFQVRFIFRBQkxFIGlk eGFsbF9kZWR1cCAoaWQgaW50KTsKKwlJTlNFUlQgSU5UTyBpZHhhbGxfZGVkdXAgU0VMRUNUIGkg JSAxMCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBpOworCUNSRUFURSBJTkRFWCBpZHhh bGxfZGVkdXBfaWR4IE9OIGlkeGFsbF9kZWR1cCAoaWQpCisJCVdJVEggKGRlZHVwbGljYXRlX2l0 ZW1zID0gb24pOworKSk7CisKKyRyZXN1bHQgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJcShTRUxFQ1QgYnRfaW5kZXhfY2hlY2soJ2lkeGFsbF9kZWR1cF9pZHgnLCBmYWxzZSwgZmFs c2UsIHRydWUpKSk7CitpcygkcmVzdWx0LCAnJywgJ2luZGV4YWxsa2V5c21hdGNoIHBhc3NlcyBv biB1bmNvcnJ1cHRlZCB0YWJsZSB3aXRoIGRlZHVwbGljYXRpb24nKTsKKworIworIyBUZXN0IDM6 IGluZGV4YWxsa2V5c21hdGNoIG9uIHVuY29ycnVwdGVkIGV4cHJlc3Npb24gaW5kZXgKKyMKKyRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcSgKKwlDUkVBVEUgRlVOQ1RJT04gaWR4YWxsX2Z1 bmMoaW50KSBSRVRVUk5TIGludCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIEFTCisJJCQgU0VMRUNU ICQxOyAkJDsKKworCUNSRUFURSBUQUJMRSBpZHhhbGxfZXhwciAoaWQgaW50KTsKKwlJTlNFUlQg SU5UTyBpZHhhbGxfZXhwciBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCk7CisJQ1JFQVRF IElOREVYIGlkeGFsbF9leHByX2lkeCBPTiBpZHhhbGxfZXhwciAoaWR4YWxsX2Z1bmMoaWQpKTsK KykpOworCiskcmVzdWx0ID0gJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXEoU0VMRUNU IGJ0X2luZGV4X2NoZWNrKCdpZHhhbGxfZXhwcl9pZHgnLCBmYWxzZSwgZmFsc2UsIHRydWUpKSk7 CitpcygkcmVzdWx0LCAnJywgJ2luZGV4YWxsa2V5c21hdGNoIHBhc3NlcyBvbiB1bmNvcnJ1cHRl ZCBleHByZXNzaW9uIGluZGV4Jyk7CisKKyMKKyMgVGVzdCA0OiBEZXRlY3QgY29ycnVwdGlvbiAt LSBzd2FwIGV4cHJlc3Npb24gZnVuY3Rpb24gc28gaGVhcCByZS1ldmFsdWF0aW9uCisjIHByb2R1 Y2VzIGRpZmZlcmVudCBrZXlzIHRoYW4gd2hhdCB0aGUgaW5kZXggc3RvcmVzLgorIworIyBUaGUg aW5kZXggd2FzIGJ1aWx0IHdpdGggaWR4YWxsX2Z1bmMoeCkgPSB4LiAgTm93IGNoYW5nZSBpdCB0 byByZXR1cm4geCsxLgorIyBUaGlzIHNpbXVsYXRlcyB0aGUgY29ycnVwdGlvbiBzY2VuYXJpbzog aW5kZXggc2F5cyBrZXk9NDIgZm9yIGEgVElELCBidXQKKyMgcmUtcmVhZGluZyB0aGUgaGVhcCBh bmQgcmUtZXZhbHVhdGluZyBnaXZlcyBrZXk9NDMuCisjCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsIHEoCisJQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaWR4YWxsX2Z1bmMoaW50KSBS RVRVUk5TIGludCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIEFTCisJJCQgU0VMRUNUICQxICsgMTsg JCQ7CispKTsKKworbXkgKCRzdGRvdXQsICRzdGRlcnIpOworKCRyZXN1bHQsICRzdGRvdXQsICRz dGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwlxKFNFTEVDVCBidF9pbmRleF9jaGVj aygnaWR4YWxsX2V4cHJfaWR4JywgZmFsc2UsIGZhbHNlLCB0cnVlKSkpOworbGlrZSgkc3RkZXJy LAorCXFyL2luZGV4IHR1cGxlIGluIGluZGV4ICJpZHhhbGxfZXhwcl9pZHgiIGRvZXMgbm90IG1h dGNoIGhlYXAgdHVwbGUvLAorCSdkZXRlY3RlZCBpbmRleC1oZWFwIGtleSBtaXNtYXRjaCB2aWEg ZXhwcmVzc2lvbiBmdW5jdGlvbiBzd2FwJyk7CisKKyMKKyMgVGVzdCA1OiBSZXN0b3JlIGZ1bmN0 aW9uIGFuZCB2ZXJpZnkgbm8gY29ycnVwdGlvbiByZXBvcnRlZAorIworJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxKAorCUNSRUFURSBPUiBSRVBMQUNFIEZVTkNUSU9OIGlkeGFsbF9mdW5j KGludCkgUkVUVVJOUyBpbnQgTEFOR1VBR0Ugc3FsIElNTVVUQUJMRSBBUworCSQkIFNFTEVDVCAk MTsgJCQ7CispKTsKKworJHJlc3VsdCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlx KFNFTEVDVCBidF9pbmRleF9jaGVjaygnaWR4YWxsX2V4cHJfaWR4JywgZmFsc2UsIGZhbHNlLCB0 cnVlKSkpOworaXMoJHJlc3VsdCwgJycsICdpbmRleGFsbGtleXNtYXRjaCBwYXNzZXMgYWZ0ZXIg cmVzdG9yaW5nIGNvcnJlY3QgZnVuY3Rpb24nKTsKKworIworIyBUZXN0IDY6IGluZGV4YWxsa2V5 c21hdGNoIHdpdGggYnRfaW5kZXhfcGFyZW50X2NoZWNrCisjCiskbm9kZS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsIHEoCisJQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gaWR4YWxsX2Z1bmMoaW50 KSBSRVRVUk5TIGludCBMQU5HVUFHRSBzcWwgSU1NVVRBQkxFIEFTCisJJCQgU0VMRUNUICQxICsg MTsgJCQ7CispKTsKKworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwo J3Bvc3RncmVzJywKKwlxKFNFTEVDVCBidF9pbmRleF9wYXJlbnRfY2hlY2soJ2lkeGFsbF9leHBy X2lkeCcsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpKSk7CitsaWtlKCRzdGRlcnIsCisJcXIv aW5kZXggdHVwbGUgaW4gaW5kZXggImlkeGFsbF9leHByX2lkeCIgZG9lcyBub3QgbWF0Y2ggaGVh cCB0dXBsZS8sCisJJ2J0X2luZGV4X3BhcmVudF9jaGVjayBhbHNvIGRldGVjdHMgaW5kZXgtaGVh cCBrZXkgbWlzbWF0Y2gnKTsKKworJG5vZGUtPnN0b3A7Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAt LWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250cmliL2FtY2hlY2sv dmVyaWZ5X25idHJlZS5jCmluZGV4IGI3NGFiNWY3YTA1Li5kZmY4YmQ0NDQ3MSAxMDA2NDQKLS0t IGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250cmliL2FtY2hlY2sv dmVyaWZ5X25idHJlZS5jCkBAIC0xMyw2ICsxMywxMSBAQAogICogdmVyaWZ5IGl0cyBzdHJ1Y3R1 cmUuICBBIGhlYXAgc2NhbiBsYXRlciB1c2VzIEJsb29tIGZpbHRlciBwcm9iZXMgdG8gdmVyaWZ5 CiAgKiB0aGF0IGV2ZXJ5IHZpc2libGUgaGVhcCB0dXBsZSBoYXMgYSBtYXRjaGluZyBpbmRleCB0 dXBsZS4KICAqCisgKiBXaGVuIGhlYXAtdG8taW5kZXggdmVyaWZpY2F0aW9uIChpbmRleGFsbGtl eXNtYXRjaCkgaXMgcmVxdWVzdGVkLCBhIEJsb29tCisgKiBmaWx0ZXIgZmluZ2VycHJpbnRzIChr ZXksdGlkKSBmcm9tIGEgaGVhcCBzY2FuIGZpcnN0LiAgVGhlIGluZGV4IHNjYW4gdGhlbgorICog cHJvYmVzIHRoaXMgZmlsdGVyOyB3aGVuIHRoZSBwcm9iZSBmYWlscywgYSBoZWFwIGxvb2t1cCB2 ZXJpZmllcyB0aGF0IHRoZQorICogaW5kZXggdHVwbGUgcG9pbnRzIHRvIGEgaGVhcCB0dXBsZSB3 aXRoIHRoZSBzYW1lIGtleS4KKyAqCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMjYsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMzAsOCArMzUsOSBAQAog I2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK ICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgotI2luY2x1ZGUgInZlcmlmeV9jb21tb24uaCIKICNp bmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIK KyNpbmNsdWRlICJ2ZXJpZnlfY29tbW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHlfZC5oIgogI2luY2x1ZGUgImNvbW1vbi9wZ19w cm5nLmgiCkBAIC04Miw2ICs4OCw4IEBAIHR5cGVkZWYgc3RydWN0IEJ0cmVlQ2hlY2tTdGF0ZQog CWJvb2wJCXJlYWRvbmx5OwogCS8qIEFsc28gdmVyaWZ5aW5nIGhlYXAgaGFzIG5vIHVuaW5kZXhl ZCB0dXBsZXM/ICovCiAJYm9vbAkJaGVhcGFsbGluZGV4ZWQ7CisJLyogQWxzbyB2ZXJpZnlpbmcg ZWFjaCBpbmRleCB0dXBsZSBwb2ludHMgdG8gaGVhcCB0dXBsZSB3aXRoIHNhbWUga2V5PyAqLwor CWJvb2wJCWluZGV4YWxsa2V5c21hdGNoOwogCS8qIEFsc28gbWFraW5nIHN1cmUgbm9uLXBpdm90 IHR1cGxlcyBjYW4gYmUgZm91bmQgYnkgbmV3IHNlYXJjaD8gKi8KIAlib29sCQlyb290ZGVzY2Vu ZDsKIAkvKiBBbHNvIGNoZWNrIHVuaXF1ZW5lc3MgY29uc3RyYWludCBpZiBpbmRleCBpcyB1bmlx dWUgKi8KQEAgLTEzMiw2ICsxNDAsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgQnRyZWVDaGVja1N0YXRl CiAJYmxvb21fZmlsdGVyICpmaWx0ZXI7CiAJLyogRGVidWcgY291bnRlciAqLwogCWludDY0CQlo ZWFwdHVwbGVzcHJlc2VudDsKKworCS8qCisJICogTXV0YWJsZSBzdGF0ZSwgZm9yIG9wdGlvbmFs IGluZGV4YWxsa2V5c21hdGNoIHZlcmlmaWNhdGlvbjoKKwkgKi8KKworCS8qIEJsb29tIGZpbHRl ciBmaW5nZXJwcmludHMgaGVhcCAoa2V5LHRpZCkgcGFpcnMgKi8KKwlibG9vbV9maWx0ZXIgKmhl YXBmaWx0ZXI7CisJLyogRGVidWcgY291bnRlciBmb3IgaW5kZXggdHVwbGVzIHZlcmlmaWVkICov CisJaW50NjQJCWluZGV4dHVwbGVzdmVyaWZpZWQ7CiB9IEJ0cmVlQ2hlY2tTdGF0ZTsKIAogLyoK QEAgLTE2OSw2ICsxODYsNyBAQCB0eXBlZGVmIHN0cnVjdCBCVENhbGxiYWNrU3RhdGUKIHsKIAli b29sCQlwYXJlbnRjaGVjazsKIAlib29sCQloZWFwYWxsaW5kZXhlZDsKKwlib29sCQlpbmRleGFs bGtleXNtYXRjaDsKIAlib29sCQlyb290ZGVzY2VuZDsKIAlib29sCQljaGVja3VuaXF1ZTsKIH0g QlRDYWxsYmFja1N0YXRlOwpAQCAtMTgwLDcgKzE5OCw3IEBAIHN0YXRpYyB2b2lkIGJ0X2luZGV4 X2NoZWNrX2NhbGxiYWNrKFJlbGF0aW9uIGluZHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJ CQkJCXZvaWQgKnN0YXRlLCBib29sIHJlYWRvbmx5KTsKIHN0YXRpYyB2b2lkIGJ0X2NoZWNrX2V2 ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJIGJvb2wg aGVhcGtleXNwYWNlLCBib29sIHJlYWRvbmx5LCBib29sIGhlYXBhbGxpbmRleGVkLAotCQkJCQkJ CQkgYm9vbCByb290ZGVzY2VuZCwgYm9vbCBjaGVja3VuaXF1ZSk7CisJCQkJCQkJCSBib29sIGlu ZGV4YWxsa2V5c21hdGNoLCBib29sIHJvb3RkZXNjZW5kLCBib29sIGNoZWNrdW5pcXVlKTsKIHN0 YXRpYyBCdHJlZUxldmVsIGJ0X2NoZWNrX2xldmVsX2Zyb21fbGVmdG1vc3QoQnRyZWVDaGVja1N0 YXRlICpzdGF0ZSwKIAkJCQkJCQkJCQkJICAgQnRyZWVMZXZlbCBsZXZlbCk7CiBzdGF0aWMgYm9v bCBidF9sZWZ0bW9zdF9pZ25vcmluZ19oYWxmX2RlYWQoQnRyZWVDaGVja1N0YXRlICpzdGF0ZSwK QEAgLTIxMiw2ICsyMzAsMTMgQEAgc3RhdGljIHZvaWQgYnRfZG93bmxpbmtfbWlzc2luZ19jaGVj ayhCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBib29sIHJpZ2h0c3BsaXQsCiBzdGF0aWMgdm9pZCBi dF90dXBsZV9wcmVzZW50X2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVtUG9pbnRlciB0aWQs CiAJCQkJCQkJCQkgIERhdHVtICp2YWx1ZXMsIGJvb2wgKmlzbnVsbCwKIAkJCQkJCQkJCSAgYm9v bCB0dXBsZUlzQWxpdmUsIHZvaWQgKmNoZWNrc3RhdGUpOworc3RhdGljIHZvaWQgYnRfaGVhcF9m aW5nZXJwcmludF9jYWxsYmFjayhSZWxhdGlvbiBpbmRleCwgSXRlbVBvaW50ZXIgdGlkLAorCQkJ CQkJCQkJCSAgRGF0dW0gKnZhbHVlcywgYm9vbCAqaXNudWxsLAorCQkJCQkJCQkJCSAgYm9vbCB0 dXBsZUlzQWxpdmUsIHZvaWQgKmNoZWNrc3RhdGUpOworc3RhdGljIHZvaWQgYnRfdmVyaWZ5X2lu ZGV4X3R1cGxlX3BvaW50c190b19oZWFwKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsCisJCQkJCQkJ CQkJCQkgIEluZGV4VHVwbGUgaXR1cCwKKwkJCQkJCQkJCQkJCSAgQmxvY2tOdW1iZXIgdGFyZ2V0 YmxvY2ssCisJCQkJCQkJCQkJCQkgIE9mZnNldE51bWJlciBvZmZzZXQpOwogc3RhdGljIEluZGV4 VHVwbGUgYnRfbm9ybWFsaXplX3R1cGxlKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsCiAJCQkJCQkJ CQkgSW5kZXhUdXBsZSBpdHVwKTsKIHN0YXRpYyBpbmxpbmUgSW5kZXhUdXBsZSBidF9wb3N0aW5n X3BsYWluX3R1cGxlKEluZGV4VHVwbGUgaXR1cCwgaW50IG4pOwpAQCAtMjQwLDEzICsyNjUsMTUg QEAgc3RhdGljIGlubGluZSBJdGVtUG9pbnRlciBCVHJlZVR1cGxlR2V0SGVhcFRJRENhcmVmdWwo QnRyZWVDaGVja1N0YXRlICpzdGF0ZSwKIHN0YXRpYyBpbmxpbmUgSXRlbVBvaW50ZXIgQlRyZWVU dXBsZUdldFBvaW50c1RvVElEKEluZGV4VHVwbGUgaXR1cCk7CiAKIC8qCi0gKiBidF9pbmRleF9j aGVjayhpbmRleCByZWdjbGFzcywgaGVhcGFsbGluZGV4ZWQgYm9vbGVhbiwgY2hlY2t1bmlxdWUg Ym9vbGVhbikKKyAqIGJ0X2luZGV4X2NoZWNrKGluZGV4IHJlZ2NsYXNzLCBoZWFwYWxsaW5kZXhl ZCBib29sZWFuLCBjaGVja3VuaXF1ZSBib29sZWFuLCBpbmRleGFsbGtleXNtYXRjaCBib29sZWFu KQogICoKICAqIFZlcmlmeSBpbnRlZ3JpdHkgb2YgQi1UcmVlIGluZGV4LgogICoKICAqIEFjcXVp cmVzIEFjY2Vzc1NoYXJlTG9jayBvbiBoZWFwICYgaW5kZXggcmVsYXRpb25zLiAgRG9lcyBub3Qg Y29uc2lkZXIKICAqIGludmFyaWFudHMgdGhhdCBleGlzdCBiZXR3ZWVuIHBhcmVudC9jaGlsZCBw YWdlcy4gIE9wdGlvbmFsbHkgdmVyaWZpZXMKLSAqIHRoYXQgaGVhcCBkb2VzIG5vdCBjb250YWlu IGFueSB1bmluZGV4ZWQgb3IgaW5jb3JyZWN0bHkgaW5kZXhlZCB0dXBsZXMuCisgKiB0aGF0IGhl YXAgZG9lcyBub3QgY29udGFpbiBhbnkgdW5pbmRleGVkIG9yIGluY29ycmVjdGx5IGluZGV4ZWQg dHVwbGVzCisgKiAoaGVhcGFsbGluZGV4ZWQpLCBvciB0aGF0IGVhY2ggaW5kZXggdHVwbGUgcG9p bnRzIHRvIGEgaGVhcCB0dXBsZSB3aXRoCisgKiB0aGUgc2FtZSBrZXkgKGluZGV4YWxsa2V5c21h dGNoKS4KICAqLwogRGF0dW0KIGJ0X2luZGV4X2NoZWNrKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0y NTUsNiArMjgyLDcgQEAgYnRfaW5kZXhfY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAlCVENhbGxi YWNrU3RhdGUgYXJnczsKIAogCWFyZ3MuaGVhcGFsbGluZGV4ZWQgPSBmYWxzZTsKKwlhcmdzLmlu ZGV4YWxsa2V5c21hdGNoID0gZmFsc2U7CiAJYXJncy5yb290ZGVzY2VuZCA9IGZhbHNlOwogCWFy Z3MucGFyZW50Y2hlY2sgPSBmYWxzZTsKIAlhcmdzLmNoZWNrdW5pcXVlID0gZmFsc2U7CkBAIC0y NjMsNiArMjkxLDggQEAgYnRfaW5kZXhfY2hlY2soUEdfRlVOQ1RJT05fQVJHUykKIAkJYXJncy5o ZWFwYWxsaW5kZXhlZCA9IFBHX0dFVEFSR19CT09MKDEpOwogCWlmIChQR19OQVJHUygpID49IDMp CiAJCWFyZ3MuY2hlY2t1bmlxdWUgPSBQR19HRVRBUkdfQk9PTCgyKTsKKwlpZiAoUEdfTkFSR1Mo KSA+PSA0KQorCQlhcmdzLmluZGV4YWxsa2V5c21hdGNoID0gUEdfR0VUQVJHX0JPT0woMyk7CiAK IAlhbWNoZWNrX2xvY2tfcmVsYXRpb25fYW5kX2NoZWNrKGluZHJlbGlkLCBCVFJFRV9BTV9PSUQs CiAJCQkJCQkJCQlidF9pbmRleF9jaGVja19jYWxsYmFjaywKQEAgLTI3MiwxMyArMzAyLDE1IEBA IGJ0X2luZGV4X2NoZWNrKFBHX0ZVTkNUSU9OX0FSR1MpCiB9CiAKIC8qCi0gKiBidF9pbmRleF9w YXJlbnRfY2hlY2soaW5kZXggcmVnY2xhc3MsIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4sIHJvb3Rk ZXNjZW5kIGJvb2xlYW4sIGNoZWNrdW5pcXVlIGJvb2xlYW4pCisgKiBidF9pbmRleF9wYXJlbnRf Y2hlY2soaW5kZXggcmVnY2xhc3MsIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4sIHJvb3RkZXNjZW5k IGJvb2xlYW4sIGNoZWNrdW5pcXVlIGJvb2xlYW4sIGluZGV4YWxsa2V5c21hdGNoIGJvb2xlYW4p CiAgKgogICogVmVyaWZ5IGludGVncml0eSBvZiBCLVRyZWUgaW5kZXguCiAgKgogICogQWNxdWly ZXMgU2hhcmVMb2NrIG9uIGhlYXAgJiBpbmRleCByZWxhdGlvbnMuICBWZXJpZmllcyB0aGF0IGRv d25saW5rcyBpbgogICogcGFyZW50IHBhZ2VzIGFyZSB2YWxpZCBsb3dlciBib3VuZHMgb24gY2hp bGQgcGFnZXMuICBPcHRpb25hbGx5IHZlcmlmaWVzCi0gKiB0aGF0IGhlYXAgZG9lcyBub3QgY29u dGFpbiBhbnkgdW5pbmRleGVkIG9yIGluY29ycmVjdGx5IGluZGV4ZWQgdHVwbGVzLgorICogdGhh dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gYW55IHVuaW5kZXhlZCBvciBpbmNvcnJlY3RseSBpbmRl eGVkIHR1cGxlcworICogKGhlYXBhbGxpbmRleGVkKSwgb3IgdGhhdCBlYWNoIGluZGV4IHR1cGxl IHBvaW50cyB0byBhIGhlYXAgdHVwbGUgd2l0aAorICogdGhlIHNhbWUga2V5IChpbmRleGFsbGtl eXNtYXRjaCkuCiAgKi8KIERhdHVtCiBidF9pbmRleF9wYXJlbnRfY2hlY2soUEdfRlVOQ1RJT05f QVJHUykKQEAgLTI4Nyw2ICszMTksNyBAQCBidF9pbmRleF9wYXJlbnRfY2hlY2soUEdfRlVOQ1RJ T05fQVJHUykKIAlCVENhbGxiYWNrU3RhdGUgYXJnczsKIAogCWFyZ3MuaGVhcGFsbGluZGV4ZWQg PSBmYWxzZTsKKwlhcmdzLmluZGV4YWxsa2V5c21hdGNoID0gZmFsc2U7CiAJYXJncy5yb290ZGVz Y2VuZCA9IGZhbHNlOwogCWFyZ3MucGFyZW50Y2hlY2sgPSB0cnVlOwogCWFyZ3MuY2hlY2t1bmlx dWUgPSBmYWxzZTsKQEAgLTI5Nyw2ICszMzAsOCBAQCBidF9pbmRleF9wYXJlbnRfY2hlY2soUEdf RlVOQ1RJT05fQVJHUykKIAkJYXJncy5yb290ZGVzY2VuZCA9IFBHX0dFVEFSR19CT09MKDIpOwog CWlmIChQR19OQVJHUygpID49IDQpCiAJCWFyZ3MuY2hlY2t1bmlxdWUgPSBQR19HRVRBUkdfQk9P TCgzKTsKKwlpZiAoUEdfTkFSR1MoKSA+PSA1KQorCQlhcmdzLmluZGV4YWxsa2V5c21hdGNoID0g UEdfR0VUQVJHX0JPT0woNCk7CiAKIAlhbWNoZWNrX2xvY2tfcmVsYXRpb25fYW5kX2NoZWNrKGlu ZHJlbGlkLCBCVFJFRV9BTV9PSUQsCiAJCQkJCQkJCQlidF9pbmRleF9jaGVja19jYWxsYmFjaywK QEAgLTM0OCw3ICszODMsOCBAQCBidF9pbmRleF9jaGVja19jYWxsYmFjayhSZWxhdGlvbiBpbmRy ZWwsIFJlbGF0aW9uIGhlYXByZWwsIHZvaWQgKnN0YXRlLCBib29sIHJlYQogCiAJLyogQ2hlY2sg aW5kZXgsIHBvc3NpYmx5IGFnYWluc3QgdGFibGUgaXQgaXMgYW4gaW5kZXggb24gKi8KIAlidF9j aGVja19ldmVyeV9sZXZlbChpbmRyZWwsIGhlYXByZWwsIGhlYXBrZXlzcGFjZSwgcmVhZG9ubHks Ci0JCQkJCQkgYXJncy0+aGVhcGFsbGluZGV4ZWQsIGFyZ3MtPnJvb3RkZXNjZW5kLCBhcmdzLT5j aGVja3VuaXF1ZSk7CisJCQkJCQkgYXJncy0+aGVhcGFsbGluZGV4ZWQsIGFyZ3MtPmluZGV4YWxs a2V5c21hdGNoLAorCQkJCQkJIGFyZ3MtPnJvb3RkZXNjZW5kLCBhcmdzLT5jaGVja3VuaXF1ZSk7 CiB9CiAKIC8qCkBAIC0zNzYsOCArNDEyLDggQEAgYnRfaW5kZXhfY2hlY2tfY2FsbGJhY2soUmVs YXRpb24gaW5kcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCB2b2lkICpzdGF0ZSwgYm9vbCByZWEKICAq Lwogc3RhdGljIHZvaWQKIGJ0X2NoZWNrX2V2ZXJ5X2xldmVsKFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gaGVhcHJlbCwgYm9vbCBoZWFwa2V5c3BhY2UsCi0JCQkJCSBib29sIHJlYWRvbmx5LCBib29s IGhlYXBhbGxpbmRleGVkLCBib29sIHJvb3RkZXNjZW5kLAotCQkJCQkgYm9vbCBjaGVja3VuaXF1 ZSkKKwkJCQkJIGJvb2wgcmVhZG9ubHksIGJvb2wgaGVhcGFsbGluZGV4ZWQsIGJvb2wgaW5kZXhh bGxrZXlzbWF0Y2gsCisJCQkJCSBib29sIHJvb3RkZXNjZW5kLCBib29sIGNoZWNrdW5pcXVlKQog ewogCUJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGU7CiAJUGFnZQkJbWV0YXBhZ2U7CkBAIC00MDcsMzgg KzQ0MywxNyBAQCBidF9jaGVja19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhl YXByZWwsIGJvb2wgaGVhcGtleXNwYWNlLAogCXN0YXRlLT5oZWFwa2V5c3BhY2UgPSBoZWFwa2V5 c3BhY2U7CiAJc3RhdGUtPnJlYWRvbmx5ID0gcmVhZG9ubHk7CiAJc3RhdGUtPmhlYXBhbGxpbmRl eGVkID0gaGVhcGFsbGluZGV4ZWQ7CisJc3RhdGUtPmluZGV4YWxsa2V5c21hdGNoID0gaW5kZXhh bGxrZXlzbWF0Y2g7CiAJc3RhdGUtPnJvb3RkZXNjZW5kID0gcm9vdGRlc2NlbmQ7CiAJc3RhdGUt PmNoZWNrdW5pcXVlID0gY2hlY2t1bmlxdWU7CiAJc3RhdGUtPnNuYXBzaG90ID0gSW52YWxpZFNu YXBzaG90OwogCi0JaWYgKHN0YXRlLT5oZWFwYWxsaW5kZXhlZCkKKwlpZiAoc3RhdGUtPmhlYXBh bGxpbmRleGVkIHx8IHN0YXRlLT5pbmRleGFsbGtleXNtYXRjaCkKIAl7Ci0JCWludDY0CQl0b3Rh bF9wYWdlczsKLQkJaW50NjQJCXRvdGFsX2VsZW1zOwotCQl1aW50NjQJCXNlZWQ7Ci0KIAkJLyoK LQkJICogU2l6ZSBCbG9vbSBmaWx0ZXIgYmFzZWQgb24gZXN0aW1hdGVkIG51bWJlciBvZiB0dXBs ZXMgaW4gaW5kZXgsCi0JCSAqIHdoaWxlIGNvbnNlcnZhdGl2ZWx5IGFzc3VtaW5nIHRoYXQgZWFj aCBibG9jayBtdXN0IGNvbnRhaW4gYXQgbGVhc3QKLQkJICogTWF4VElEc1BlckJUcmVlUGFnZSAv IDMgInBsYWluIiB0dXBsZXMgLS0gc2VlCi0JCSAqIGJ0X3Bvc3RpbmdfcGxhaW5fdHVwbGUoKSBm b3IgZGVmaW5pdGlvbiwgYW5kIGRldGFpbHMgb2YgaG93IHBvc3RpbmcKLQkJICogbGlzdCB0dXBs ZXMgYXJlIGhhbmRsZWQuCi0JCSAqLwotCQl0b3RhbF9wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVy T2ZCbG9ja3MocmVsKTsKLQkJdG90YWxfZWxlbXMgPSBNYXgodG90YWxfcGFnZXMgKiAoTWF4VElE c1BlckJUcmVlUGFnZSAvIDMpLAotCQkJCQkJICAoaW50NjQpIHN0YXRlLT5yZWwtPnJkX3JlbC0+ cmVsdHVwbGVzKTsKLQkJLyogR2VuZXJhdGUgYSByYW5kb20gc2VlZCB0byBhdm9pZCByZXBldGl0 aW9uICovCi0JCXNlZWQgPSBwZ19wcm5nX3VpbnQ2NCgmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpOwot CQkvKiBDcmVhdGUgQmxvb20gZmlsdGVyIHRvIGZpbmdlcnByaW50IGluZGV4ICovCi0JCXN0YXRl LT5maWx0ZXIgPSBibG9vbV9jcmVhdGUodG90YWxfZWxlbXMsIG1haW50ZW5hbmNlX3dvcmtfbWVt LCBzZWVkKTsKLQkJc3RhdGUtPmhlYXB0dXBsZXNwcmVzZW50ID0gMDsKLQotCQkvKgotCQkgKiBS ZWdpc3RlciBvdXIgb3duIHNuYXBzaG90IGZvciBoZWFwYWxsaW5kZXhlZCwgcmF0aGVyIHRoYW4g YXNraW5nCi0JCSAqIHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oKSB0byBkbyB0aGlzIGZvciB1cyBs YXRlci4gIFRoaXMgbmVlZHMgdG8KLQkJICogaGFwcGVuIGJlZm9yZSBpbmRleCBmaW5nZXJwcmlu dGluZyBiZWdpbnMsIHNvIHdlIGNhbiBsYXRlciBiZQotCQkgKiBjZXJ0YWluIHRoYXQgaW5kZXgg ZmluZ2VycHJpbnRpbmcgc2hvdWxkIGhhdmUgcmVhY2hlZCBhbGwgdHVwbGVzCi0JCSAqIHJldHVy bmVkIGJ5IHRhYmxlX2luZGV4X2J1aWxkX3NjYW4oKS4KKwkJICogUmVnaXN0ZXIgb3VyIG93biBz bmFwc2hvdCBmb3IgaGVhcGFsbGluZGV4ZWQvaW5kZXhhbGxrZXlzbWF0Y2gsIHJhdGhlcgorCQkg KiB0aGFuIGFza2luZyB0YWJsZV9pbmRleF9idWlsZF9zY2FuKCkgdG8gZG8gdGhpcyBmb3IgdXMg bGF0ZXIuICBUaGlzCisJCSAqIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgZmluZ2VycHJpbnRpbmcg YmVnaW5zLgogCQkgKi8KIAkJc3RhdGUtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRU cmFuc2FjdGlvblNuYXBzaG90KCkpOwogCkBAIC00NjMsMTYgKzQ3OCw1NSBAQCBidF9jaGVja19l dmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtleXNw YWNlLAogCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOwogCX0KIAorCWlm IChzdGF0ZS0+aGVhcGFsbGluZGV4ZWQpCisJeworCQlpbnQ2NAkJdG90YWxfcGFnZXM7CisJCWlu dDY0CQl0b3RhbF9lbGVtczsKKwkJdWludDY0CQlzZWVkOworCisJCS8qCisJCSAqIFNpemUgQmxv b20gZmlsdGVyIGJhc2VkIG9uIGVzdGltYXRlZCBudW1iZXIgb2YgdHVwbGVzIGluIGluZGV4LAor CQkgKiB3aGlsZSBjb25zZXJ2YXRpdmVseSBhc3N1bWluZyB0aGF0IGVhY2ggYmxvY2sgbXVzdCBj b250YWluIGF0IGxlYXN0CisJCSAqIE1heFRJRHNQZXJCVHJlZVBhZ2UgLyAzICJwbGFpbiIgdHVw bGVzIC0tIHNlZQorCQkgKiBidF9wb3N0aW5nX3BsYWluX3R1cGxlKCkgZm9yIGRlZmluaXRpb24s IGFuZCBkZXRhaWxzIG9mIGhvdyBwb3N0aW5nCisJCSAqIGxpc3QgdHVwbGVzIGFyZSBoYW5kbGVk LgorCQkgKi8KKwkJdG90YWxfcGFnZXMgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7 CisJCXRvdGFsX2VsZW1zID0gTWF4KHRvdGFsX3BhZ2VzICogKE1heFRJRHNQZXJCVHJlZVBhZ2Ug LyAzKSwKKwkJCQkJCSAgKGludDY0KSBzdGF0ZS0+cmVsLT5yZF9yZWwtPnJlbHR1cGxlcyk7CisJ CXNlZWQgPSBwZ19wcm5nX3VpbnQ2NCgmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpOworCQlzdGF0ZS0+ ZmlsdGVyID0gYmxvb21fY3JlYXRlKHRvdGFsX2VsZW1zLCBtYWludGVuYW5jZV93b3JrX21lbSwg c2VlZCk7CisJCXN0YXRlLT5oZWFwdHVwbGVzcHJlc2VudCA9IDA7CisJfQorCisJaWYgKHN0YXRl LT5pbmRleGFsbGtleXNtYXRjaCkKKwl7CisJCWludDY0CQl0b3RhbF9wYWdlczsKKwkJaW50NjQJ CXRvdGFsX2VsZW1zOworCQl1aW50NjQJCXNlZWQ7CisKKwkJLyoKKwkJICogU2l6ZSBCbG9vbSBm aWx0ZXIgYmFzZWQgb24gZXN0aW1hdGVkIG51bWJlciBvZiBoZWFwIHR1cGxlcy4KKwkJICovCisJ CXRvdGFsX3BhZ2VzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhoZWFwcmVsKTsKKwkJdG90 YWxfZWxlbXMgPSBNYXgodG90YWxfcGFnZXMgKiBNYXhIZWFwVHVwbGVzUGVyUGFnZSwKKwkJCQkJ CSAgKGludDY0KSBoZWFwcmVsLT5yZF9yZWwtPnJlbHR1cGxlcyk7CisJCXNlZWQgPSBwZ19wcm5n X3VpbnQ2NCgmcGdfZ2xvYmFsX3Bybmdfc3RhdGUpOworCQlzdGF0ZS0+aGVhcGZpbHRlciA9IGJs b29tX2NyZWF0ZSh0b3RhbF9lbGVtcywgbWFpbnRlbmFuY2Vfd29ya19tZW0sIHNlZWQpOworCQlz dGF0ZS0+aW5kZXh0dXBsZXN2ZXJpZmllZCA9IDA7CisJfQorCiAJLyoKIAkgKiBXZSBuZWVkIGEg c25hcHNob3QgdG8gY2hlY2sgdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIGluZGV4LiAgRm9yIGJldHRl cgogCSAqIHBlcmZvcm1hbmNlLCB0YWtlIGl0IG9uY2UgcGVyIGluZGV4IGNoZWNrLiAgSWYgb25l IHdhcyBhbHJlYWR5IHRha2VuCiAJICogYWJvdmUsIHVzZSB0aGF0LgogCSAqLwotCWlmIChzdGF0 ZS0+Y2hlY2t1bmlxdWUpCisJaWYgKHN0YXRlLT5jaGVja3VuaXF1ZSB8fCBzdGF0ZS0+aW5kZXhh bGxrZXlzbWF0Y2gpCiAJewogCQlzdGF0ZS0+aW5kZXhpbmZvID0gQnVpbGRJbmRleEluZm8oc3Rh dGUtPnJlbCk7CiAKLQkJaWYgKHN0YXRlLT5pbmRleGluZm8tPmlpX1VuaXF1ZSAmJiBzdGF0ZS0+ c25hcHNob3QgPT0gSW52YWxpZFNuYXBzaG90KQorCQlpZiAoc3RhdGUtPmNoZWNrdW5pcXVlICYm IHN0YXRlLT5pbmRleGluZm8tPmlpX1VuaXF1ZSAmJgorCQkJc3RhdGUtPnNuYXBzaG90ID09IElu dmFsaWRTbmFwc2hvdCkKIAkJCXN0YXRlLT5zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKIAl9CiAKQEAgLTQ5MCw2ICs1NDQsMzYgQEAgYnRfY2hl Y2tfZXZlcnlfbGV2ZWwoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBoZWFwcmVsLCBib29sIGhlYXBr ZXlzcGFjZSwKIAkJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKIAlzdGF0ZS0+ Y2hlY2tzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAKKwkvKgor CSAqIFdoZW4gaW5kZXhhbGxrZXlzbWF0Y2gsIGZpbmdlcnByaW50IGhlYXAgZmlyc3Qgc28gd2Ug Y2FuIHZlcmlmeSBlYWNoIGluZGV4CisJICogdHVwbGUgcG9pbnRzIHRvIGEgaGVhcCB0dXBsZSB3 aXRoIHRoZSBzYW1lIGtleSBkdXJpbmcgdGhlIGluZGV4IHNjYW4uCisJICovCisJaWYgKHN0YXRl LT5pbmRleGFsbGtleXNtYXRjaCkKKwl7CisJCUluZGV4SW5mbyAgKmluZGV4aW5mbyA9IEJ1aWxk SW5kZXhJbmZvKHN0YXRlLT5yZWwpOworCQlUYWJsZVNjYW5EZXNjIHNjYW47CisKKwkJc2NhbiA9 IHRhYmxlX2JlZ2luc2Nhbl9zdHJhdChzdGF0ZS0+aGVhcHJlbCwKKwkJCQkJCQkJCSBzdGF0ZS0+ c25hcHNob3QsCisJCQkJCQkJCQkgMCwgTlVMTCwgdHJ1ZSwgdHJ1ZSk7CisJCWluZGV4aW5mby0+ aWlfQ29uY3VycmVudCA9IHRydWU7CisJCWluZGV4aW5mby0+aWlfVW5pcXVlID0gZmFsc2U7CisJ CWluZGV4aW5mby0+aWlfRXhjbHVzaW9uT3BzID0gTlVMTDsKKwkJaW5kZXhpbmZvLT5paV9FeGNs dXNpb25Qcm9jcyA9IE5VTEw7CisJCWluZGV4aW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzID0gTlVM TDsKKworCQllbG9nKERFQlVHMSwgImZpbmdlcnByaW50aW5nIGhlYXAgXCIlc1wiIGZvciBpbmRl eCBcIiVzXCIgdmVyaWZpY2F0aW9uIiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzdGF0 ZS0+aGVhcHJlbCksCisJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPnJlbCkpOwor CisJCXRhYmxlX2luZGV4X2J1aWxkX3NjYW4oc3RhdGUtPmhlYXByZWwsIHN0YXRlLT5yZWwsIGlu ZGV4aW5mbywgdHJ1ZSwgZmFsc2UsCisJCQkJCQkJICAgYnRfaGVhcF9maW5nZXJwcmludF9jYWxs YmFjaywgc3RhdGUsIHNjYW4pOworCisJCWVyZXBvcnQoREVCVUcxLAorCQkJCShlcnJtc2dfaW50 ZXJuYWwoImZpbmlzaGVkIGhlYXAgZmluZ2VycHJpbnQgd2l0aCBiaXRzZXQgJS4yZiUlIHNldCIs CisJCQkJCQkJCTEwMC4wICogYmxvb21fcHJvcF9iaXRzX3NldChzdGF0ZS0+aGVhcGZpbHRlcikp KSk7CisJfQorCiAJLyogR2V0IHRydWUgcm9vdCBibG9jayBmcm9tIG1ldGEtcGFnZSAqLwogCW1l dGFwYWdlID0gcGFsbG9jX2J0cmVlX3BhZ2Uoc3RhdGUsIEJUUkVFX01FVEFQQUdFKTsKIAltZXRh ZCA9IEJUUGFnZUdldE1ldGEobWV0YXBhZ2UpOwpAQCAtNTk2LDYgKzY4MCwxNCBAQCBidF9jaGVj a19ldmVyeV9sZXZlbChSZWxhdGlvbiByZWwsIFJlbGF0aW9uIGhlYXByZWwsIGJvb2wgaGVhcGtl eXNwYWNlLAogCQlibG9vbV9mcmVlKHN0YXRlLT5maWx0ZXIpOwogCX0KIAorCWlmIChzdGF0ZS0+ aW5kZXhhbGxrZXlzbWF0Y2gpCisJeworCQllcmVwb3J0KERFQlVHMSwKKwkJCQkoZXJybXNnX2lu dGVybmFsKCJmaW5pc2hlZCB2ZXJpZnlpbmcgIiBJTlQ2NF9GT1JNQVQgIiBpbmRleCB0dXBsZXMg cG9pbnQgdG8gbWF0Y2hpbmcgaGVhcCB0dXBsZXMiLAorCQkJCQkJCQkgc3RhdGUtPmluZGV4dHVw bGVzdmVyaWZpZWQpKSk7CisJCWJsb29tX2ZyZWUoc3RhdGUtPmhlYXBmaWx0ZXIpOworCX0KKwog CS8qIEJlIHRpZHk6ICovCiAJaWYgKHN0YXRlLT5zbmFwc2hvdCAhPSBJbnZhbGlkU25hcHNob3Qp CiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzdGF0ZS0+c25hcHNob3QpOwpAQCAtMTUxNiw2ICsxNjA4 LDI4IEBAIGJ0X3RhcmdldF9wYWdlX2NoZWNrKEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUpCiAJCQl9 CiAJCX0KIAorCQkvKiBWZXJpZnkgZWFjaCBpbmRleCB0dXBsZSBwb2ludHMgdG8gaGVhcCB0dXBs ZSB3aXRoIHNhbWUga2V5ICovCisJCWlmIChzdGF0ZS0+aW5kZXhhbGxrZXlzbWF0Y2ggJiYgUF9J U0xFQUYodG9wYXF1ZSkgJiYgIUl0ZW1JZElzRGVhZChpdGVtaWQpKQorCQl7CisJCQlpZiAoQlRy ZWVUdXBsZUlzUG9zdGluZyhpdHVwKSkKKwkJCXsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IEJU cmVlVHVwbGVHZXROUG9zdGluZyhpdHVwKTsgaSsrKQorCQkJCXsKKwkJCQkJSW5kZXhUdXBsZQls b2d0dXBsZTsKKworCQkJCQlsb2d0dXBsZSA9IGJ0X3Bvc3RpbmdfcGxhaW5fdHVwbGUoaXR1cCwg aSk7CisJCQkJCWJ0X3ZlcmlmeV9pbmRleF90dXBsZV9wb2ludHNfdG9faGVhcChzdGF0ZSwgbG9n dHVwbGUsCisJCQkJCQkJCQkJCQkJCSAgc3RhdGUtPnRhcmdldGJsb2NrLCBvZmZzZXQpOworCQkJ CQlwZnJlZShsb2d0dXBsZSk7CisJCQkJfQorCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWJ0X3Zl cmlmeV9pbmRleF90dXBsZV9wb2ludHNfdG9faGVhcChzdGF0ZSwgaXR1cCwKKwkJCQkJCQkJCQkJ CQkgc3RhdGUtPnRhcmdldGJsb2NrLCBvZmZzZXQpOworCQkJfQorCQl9CisKIAkJLyoKIAkJICog KiBIaWdoIGtleSBjaGVjayAqCiAJCSAqCkBAIC0yODEyLDYgKzI5MjYsMTI4IEBAIGJ0X3R1cGxl X3ByZXNlbnRfY2FsbGJhY2soUmVsYXRpb24gaW5kZXgsIEl0ZW1Qb2ludGVyIHRpZCwgRGF0dW0g KnZhbHVlcywKIAkJcGZyZWUobm9ybSk7CiB9CiAKKy8qCisgKiBQZXItdHVwbGUgY2FsbGJhY2sg ZnJvbSB0YWJsZV9pbmRleF9idWlsZF9zY2FuIGZvciBpbmRleGFsbGtleXNtYXRjaC4gIEFkZAor ICogZWFjaCB2aXNpYmxlIGhlYXAgdHVwbGUncyAoa2V5LCB0aWQpIHRvIHRoZSBCbG9vbSBmaWx0 ZXIgZm9yIGxhdGVyIHByb2JlCisgKiBkdXJpbmcgdGhlIGluZGV4IHNjYW4uCisgKi8KK3N0YXRp YyB2b2lkCitidF9oZWFwX2ZpbmdlcnByaW50X2NhbGxiYWNrKFJlbGF0aW9uIGluZGV4LCBJdGVt UG9pbnRlciB0aWQsIERhdHVtICp2YWx1ZXMsCisJCQkJCQkJICBib29sICppc251bGwsIGJvb2wg dHVwbGVJc0FsaXZlLCB2b2lkICpjaGVja3N0YXRlKQoreworCUJ0cmVlQ2hlY2tTdGF0ZSAqc3Rh dGUgPSAoQnRyZWVDaGVja1N0YXRlICopIGNoZWNrc3RhdGU7CisJSW5kZXhUdXBsZQlpdHVwLAor CQkJCW5vcm07CisKKwlBc3NlcnQoc3RhdGUtPmluZGV4YWxsa2V5c21hdGNoKTsKKworCWl0dXAg PSBpbmRleF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IoaW5kZXgpLCB2YWx1ZXMsIGlzbnVs bCk7CisJaXR1cC0+dF90aWQgPSAqdGlkOworCW5vcm0gPSBidF9ub3JtYWxpemVfdHVwbGUoc3Rh dGUsIGl0dXApOworCWJsb29tX2FkZF9lbGVtZW50KHN0YXRlLT5oZWFwZmlsdGVyLCAodW5zaWdu ZWQgY2hhciAqKSBub3JtLAorCQkJCQkgIEluZGV4VHVwbGVTaXplKG5vcm0pKTsKKwlwZnJlZShp dHVwKTsKKwlpZiAobm9ybSAhPSBpdHVwKQorCQlwZnJlZShub3JtKTsKK30KKworLyoKKyAqIFZl cmlmeSB0aGF0IHRoZSBpbmRleCB0dXBsZSBwb2ludHMgdG8gYSBoZWFwIHR1cGxlIHdpdGggdGhl IHNhbWUga2V5LgorICogV2hlbiB0aGUgQmxvb20gZmlsdGVyIGxhY2tzIHRoZSAoa2V5LCB0aWQp LCBwZXJmb3JtIGEgaGVhcCBsb29rdXAgdG8gY29uZmlybS4KKyAqIFNraXAgaW5kZXggdHVwbGVz IHRoYXQgcG9pbnQgdG8gZGVhZCBoZWFwIHR1cGxlcyAobm90IHZpc2libGUgdG8gc25hcHNob3Qp LgorICovCitzdGF0aWMgdm9pZAorYnRfdmVyaWZ5X2luZGV4X3R1cGxlX3BvaW50c190b19oZWFw KEJ0cmVlQ2hlY2tTdGF0ZSAqc3RhdGUsIEluZGV4VHVwbGUgaXR1cCwKKwkJCQkJCQkJCUJsb2Nr TnVtYmVyIHRhcmdldGJsb2NrLCBPZmZzZXROdW1iZXIgb2Zmc2V0KQoreworCUl0ZW1Qb2ludGVy IHRpZCA9IEJUcmVlVHVwbGVHZXRIZWFwVElEKGl0dXApOworCUluZGV4VHVwbGUJbm9ybTsKKwli b29sCQlpbl9maWx0ZXI7CisKKwlBc3NlcnQoc3RhdGUtPmluZGV4YWxsa2V5c21hdGNoKTsKKwor CW5vcm0gPSBidF9ub3JtYWxpemVfdHVwbGUoc3RhdGUsIGl0dXApOworCWluX2ZpbHRlciA9ICFi bG9vbV9sYWNrc19lbGVtZW50KHN0YXRlLT5oZWFwZmlsdGVyLCAodW5zaWduZWQgY2hhciAqKSBu b3JtLAorCQkJCQkJCQkJIEluZGV4VHVwbGVTaXplKG5vcm0pKTsKKwlpZiAobm9ybSAhPSBpdHVw KQorCQlwZnJlZShub3JtKTsKKworCWlmIChpbl9maWx0ZXIpCisJeworCQkvKiBGaW5nZXJwcmlu dCBjb250YWlucyBvbmx5IHZpc2libGUgdHVwbGVzLCBzbyB0aGlzIG9uZSBpcyB2ZXJpZmllZCAq LworCQlzdGF0ZS0+aW5kZXh0dXBsZXN2ZXJpZmllZCsrOworCQlyZXR1cm47CisJfQorCisJLyoK KwkgKiBCbG9vbSBmaWx0ZXIgc2F5cyAoa2V5LCB0aWQpIG5vdCBpbiBoZWFwLiAgRm9sbG93IFRJ RCB0byB2ZXJpZnk7IHRoaXMKKwkgKiBhbW9ydGl6ZXMgcmFuZG9tIGhlYXAgbG9va3VwcyB3aGVu IHRoZSBmaWx0ZXIgaGFzIGZhbHNlIG5lZ2F0aXZlcywgb3IKKwkgKiByZXBvcnRzIGNvcnJ1cHRp b24gd2hlbiB0aGUgaW5kZXggcG9pbnRzIHRvIHdyb25nIGhlYXAgdHVwbGUuICBTa2lwCisJICog ZGVhZCB0dXBsZXMgKHRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uIHJldHVybnMgZmFsc2Ug Zm9yIHRoZW0pLgorCSAqLworCXsKKwkJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJCUluZGV4VHVw bGUJaGVhcF9pdHVwOworCQlJbmRleFR1cGxlCWhlYXBfbm9ybTsKKwkJRGF0dW0JCXZhbHVlc1tJ TkRFWF9NQVhfS0VZU107CisJCWJvb2wJCWlzbnVsbFtJTkRFWF9NQVhfS0VZU107CisJCUluZGV4 SW5mbyAgKmluZGV4aW5mbzsKKwkJRVN0YXRlCSAgICplc3RhdGU7CisJCWJvb2wJCWZvdW5kOwor CisJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShzdGF0ZS0+aGVhcHJlbCwgTlVMTCk7CisJCWZv dW5kID0gdGFibGVfdHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24oc3RhdGUtPmhlYXByZWwsIHRpZCwK KwkJCQkJCQkJCQkJICBzdGF0ZS0+c25hcHNob3QsIHNsb3QpOworCQlpZiAoIWZvdW5kKQorCQl7 CisJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCQkJcmV0dXJuOwkJCS8q IGRlYWQgb3Igbm9uLWV4aXN0ZW50IGhlYXAgdHVwbGUsIHNraXAgKi8KKwkJfQorCisJCWluZGV4 aW5mbyA9IHN0YXRlLT5pbmRleGluZm87CisJCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUo KTsKKwkJR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUpLT5lY3h0X3NjYW50dXBsZSA9IHNs b3Q7CisJCUZvcm1JbmRleERhdHVtKGluZGV4aW5mbywgc2xvdCwgZXN0YXRlLCB2YWx1ZXMsIGlz bnVsbCk7CisJCUZyZWVFeGVjdXRvclN0YXRlKGVzdGF0ZSk7CisKKwkJLyogVGhlc2UgbWF5IGhh dmUgYmVlbiBwb2ludGluZyB0byB0aGUgbm93LWdvbmUgZXN0YXRlICovCisJCWluZGV4aW5mby0+ aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKKwkJaW5kZXhpbmZvLT5paV9QcmVkaWNhdGVTdGF0 ZSA9IE5VTEw7CisKKwkJaGVhcF9pdHVwID0gaW5kZXhfZm9ybV90dXBsZShSZWxhdGlvbkdldERl c2NyKHN0YXRlLT5yZWwpLCB2YWx1ZXMsIGlzbnVsbCk7CisJCWhlYXBfaXR1cC0+dF90aWQgPSAq dGlkOworCQloZWFwX25vcm0gPSBidF9ub3JtYWxpemVfdHVwbGUoc3RhdGUsIGhlYXBfaXR1cCk7 CisKKwkJbm9ybSA9IGJ0X25vcm1hbGl6ZV90dXBsZShzdGF0ZSwgaXR1cCk7CisJCWlmIChJbmRl eFR1cGxlU2l6ZShoZWFwX25vcm0pICE9IEluZGV4VHVwbGVTaXplKG5vcm0pIHx8CisJCQltZW1j bXAoaGVhcF9ub3JtLCBub3JtLCBJbmRleFR1cGxlU2l6ZShub3JtKSkgIT0gMCkKKwkJeworCQkJ RXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKwkJCXBmcmVlKGhlYXBfaXR1cCk7 CisJCQlpZiAoaGVhcF9ub3JtICE9IGhlYXBfaXR1cCkKKwkJCQlwZnJlZShoZWFwX25vcm0pOwor CQkJaWYgKG5vcm0gIT0gaXR1cCkKKwkJCQlwZnJlZShub3JtKTsKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKKwkJCQkJIGVycm1zZygi aW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wiIGRvZXMgbm90IG1hdGNoIGhlYXAgdHVwbGUiLAor CQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwpKSwKKwkJCQkJIGVycmRl dGFpbF9pbnRlcm5hbCgiSW5kZXggdGlkPSgldSwldSkgcG9pbnRzIHRvIGhlYXAgdGlkPSgldSwl dSkgd2l0aCBkaWZmZXJlbnQga2V5LiIsCisJCQkJCQkJCQkgICB0YXJnZXRibG9jaywgb2Zmc2V0 LAorCQkJCQkJCQkJICAgSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpLAorCQkJCQkJCQkJ ICAgSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIodGlkKSkpKTsKKwkJfQorCisJCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2xvdCk7CisJCXBmcmVlKGhlYXBfaXR1cCk7CisJCWlmICho ZWFwX25vcm0gIT0gaGVhcF9pdHVwKQorCQkJcGZyZWUoaGVhcF9ub3JtKTsKKwkJaWYgKG5vcm0g IT0gaXR1cCkKKwkJCXBmcmVlKG5vcm0pOworCQlzdGF0ZS0+aW5kZXh0dXBsZXN2ZXJpZmllZCsr OworCX0KK30KKwogLyoKICAqIE5vcm1hbGl6ZSBhbiBpbmRleCB0dXBsZSBmb3IgZmluZ2VycHJp bnRpbmcuCiAgKgotLSAKMi40My4wCgo= --00000000000048cacd065083290e Content-Type: text/x-patch; charset="US-ASCII"; name="v5b-0003-Document-indexallkeysmatch-parameter-for-amcheck.patch" Content-Disposition: attachment; filename="v5b-0003-Document-indexallkeysmatch-parameter-for-amcheck.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moiihimw2 RnJvbSBkODYwNDdhOTJjYmRmNGQwNGU5ZDNmNTE3MzU0NjNkZjVhMjgwZjczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgQm9yb2RpbiA8YW1ib3JvZGluQGFjbS5vcmc+CkRh dGU6IFRodSwgMjYgRmViIDIwMjYgMjI6MDE6MTYgKzA1MDAKU3ViamVjdDogW1BBVENIIHY1YiAz LzZdIERvY3VtZW50IGluZGV4YWxsa2V5c21hdGNoIHBhcmFtZXRlciBmb3IgYW1jaGVjawogQi1U cmVlIHZlcmlmaWNhdGlvbgoKQWRkIGluZGV4YWxsa2V5c21hdGNoIHRvIGJ0X2luZGV4X2NoZWNr IGFuZCBidF9pbmRleF9wYXJlbnRfY2hlY2sKc2lnbmF0dXJlcywgZGVzY3JpYmUgdGhlIHBhcmFt ZXRlciwgYWRkIGEgZGVkaWNhdGVkIHNlY3Rpb24gZXhwbGFpbmluZwp0aGUgdmVyaWZpY2F0aW9u LCBhbmQgbWVudGlvbiBpdCBpbiB0aGUgY29ycnVwdGlvbiBkZXRlY3Rpb24gbGlzdC4KLS0tCiBk b2Mvc3JjL3NnbWwvYW1jaGVjay5zZ21sIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvYW1jaGVjay5zZ21sIGIvZG9jL3NyYy9z Z21sL2FtY2hlY2suc2dtbAppbmRleCAwODAwNjg1NjU3OS4uNzkzZmQxNjYxZmYgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9hbWNoZWNrLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2FtY2hlY2su c2dtbApAQCAtNjEsNyArNjEsNyBAQAogICA8dmFyaWFibGVsaXN0PgogICAgPHZhcmxpc3RlbnRy eT4KICAgICA8dGVybT4KLSAgICAgPGZ1bmN0aW9uPmJ0X2luZGV4X2NoZWNrKGluZGV4IHJlZ2Ns YXNzLCBoZWFwYWxsaW5kZXhlZCBib29sZWFuLCBjaGVja3VuaXF1ZSBib29sZWFuKSByZXR1cm5z IHZvaWQ8L2Z1bmN0aW9uPgorICAgICA8ZnVuY3Rpb24+YnRfaW5kZXhfY2hlY2soaW5kZXggcmVn Y2xhc3MsIGhlYXBhbGxpbmRleGVkIGJvb2xlYW4sIGNoZWNrdW5pcXVlIGJvb2xlYW4sIGluZGV4 YWxsa2V5c21hdGNoIGJvb2xlYW4pIHJldHVybnMgdm9pZDwvZnVuY3Rpb24+CiAgICAgIDxpbmRl eHRlcm0+CiAgICAgICA8cHJpbWFyeT5idF9pbmRleF9jaGVjazwvcHJpbWFyeT4KICAgICAgPC9p bmRleHRlcm0+CkBAIC0xMTgsNyArMTE4LDEwIEBAIE9SREVSIEJZIGMucmVscGFnZXMgREVTQyBM SU1JVCAxMDsKICAgICAgIHRoYXQgc3BhbiBjaGlsZC9wYXJlbnQgcmVsYXRpb25zaGlwcywgYnV0 IHdpbGwgdmVyaWZ5IHRoZQogICAgICAgcHJlc2VuY2Ugb2YgYWxsIGhlYXAgdHVwbGVzIGFzIGlu ZGV4IHR1cGxlcyB3aXRoaW4gdGhlIGluZGV4CiAgICAgICB3aGVuIDxwYXJhbWV0ZXI+aGVhcGFs bGluZGV4ZWQ8L3BhcmFtZXRlcj4gaXMKLSAgICAgIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LiAg V2hlbiA8cGFyYW1ldGVyPmNoZWNrdW5pcXVlPC9wYXJhbWV0ZXI+CisgICAgICA8bGl0ZXJhbD50 cnVlPC9saXRlcmFsPi4gIFdoZW4gPHBhcmFtZXRlcj5pbmRleGFsbGtleXNtYXRjaDwvcGFyYW1l dGVyPgorICAgICAgaXMgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIGl0IHZlcmlmaWVzIHRoYXQg ZWFjaCBpbmRleCB0dXBsZQorICAgICAgcG9pbnRzIHRvIGEgaGVhcCB0dXBsZSB3aXRoIHRoZSBz YW1lIGtleSAodGhlIHJldmVyc2Ugb2YKKyAgICAgIDxwYXJhbWV0ZXI+aGVhcGFsbGluZGV4ZWQ8 L3BhcmFtZXRlcj4pLiAgV2hlbiA8cGFyYW1ldGVyPmNoZWNrdW5pcXVlPC9wYXJhbWV0ZXI+CiAg ICAgICBpcyA8bGl0ZXJhbD50cnVlPC9saXRlcmFsPiA8ZnVuY3Rpb24+YnRfaW5kZXhfY2hlY2s8 L2Z1bmN0aW9uPiB3aWxsCiAgICAgICBjaGVjayB0aGF0IG5vIG1vcmUgdGhhbiBvbmUgYW1vbmcg ZHVwbGljYXRlIGVudHJpZXMgaW4gdW5pcXVlCiAgICAgICBpbmRleCBpcyB2aXNpYmxlLiAgV2hl biBhIHJvdXRpbmUsIGxpZ2h0d2VpZ2h0IHRlc3QgZm9yCkBAIC0xMzIsNyArMTM1LDcgQEAgT1JE RVIgQlkgYy5yZWxwYWdlcyBERVNDIExJTUlUIDEwOwogCiAgICA8dmFybGlzdGVudHJ5PgogICAg IDx0ZXJtPgotICAgICA8ZnVuY3Rpb24+YnRfaW5kZXhfcGFyZW50X2NoZWNrKGluZGV4IHJlZ2Ns YXNzLCBoZWFwYWxsaW5kZXhlZCBib29sZWFuLCByb290ZGVzY2VuZCBib29sZWFuLCBjaGVja3Vu aXF1ZSBib29sZWFuKSByZXR1cm5zIHZvaWQ8L2Z1bmN0aW9uPgorICAgICA8ZnVuY3Rpb24+YnRf aW5kZXhfcGFyZW50X2NoZWNrKGluZGV4IHJlZ2NsYXNzLCBoZWFwYWxsaW5kZXhlZCBib29sZWFu LCByb290ZGVzY2VuZCBib29sZWFuLCBjaGVja3VuaXF1ZSBib29sZWFuLCBpbmRleGFsbGtleXNt YXRjaCBib29sZWFuKSByZXR1cm5zIHZvaWQ8L2Z1bmN0aW9uPgogICAgICA8aW5kZXh0ZXJtPgog ICAgICAgPHByaW1hcnk+YnRfaW5kZXhfcGFyZW50X2NoZWNrPC9wcmltYXJ5PgogICAgICA8L2lu ZGV4dGVybT4KQEAgLTE0NSw3ICsxNDgsOSBAQCBPUkRFUiBCWSBjLnJlbHBhZ2VzIERFU0MgTElN SVQgMTA7CiAgICAgICBPcHRpb25hbGx5LCB3aGVuIHRoZSA8cGFyYW1ldGVyPmhlYXBhbGxpbmRl eGVkPC9wYXJhbWV0ZXI+CiAgICAgICBhcmd1bWVudCBpcyA8bGl0ZXJhbD50cnVlPC9saXRlcmFs PiwgdGhlIGZ1bmN0aW9uIHZlcmlmaWVzIHRoZQogICAgICAgcHJlc2VuY2Ugb2YgYWxsIGhlYXAg dHVwbGVzIHRoYXQgc2hvdWxkIGJlIGZvdW5kIHdpdGhpbiB0aGUKLSAgICAgIGluZGV4LiAgV2hl biA8cGFyYW1ldGVyPmNoZWNrdW5pcXVlPC9wYXJhbWV0ZXI+CisgICAgICBpbmRleC4gIFdoZW4g PHBhcmFtZXRlcj5pbmRleGFsbGtleXNtYXRjaDwvcGFyYW1ldGVyPiBpcworICAgICAgPGxpdGVy YWw+dHJ1ZTwvbGl0ZXJhbD4sIGl0IHZlcmlmaWVzIHRoYXQgZWFjaCBpbmRleCB0dXBsZQorICAg ICAgcG9pbnRzIHRvIGEgaGVhcCB0dXBsZSB3aXRoIHRoZSBzYW1lIGtleS4gIFdoZW4gPHBhcmFt ZXRlcj5jaGVja3VuaXF1ZTwvcGFyYW1ldGVyPgogICAgICAgaXMgPGxpdGVyYWw+dHJ1ZTwvbGl0 ZXJhbD4gPGZ1bmN0aW9uPmJ0X2luZGV4X3BhcmVudF9jaGVjazwvZnVuY3Rpb24+IHdpbGwKICAg ICAgIGNoZWNrIHRoYXQgbm8gbW9yZSB0aGFuIG9uZSBhbW9uZyBkdXBsaWNhdGUgZW50cmllcyBp biB1bmlxdWUKICAgICAgIGluZGV4IGlzIHZpc2libGUuICBXaGVuIHRoZSBvcHRpb25hbCA8cGFy YW1ldGVyPnJvb3RkZXNjZW5kPC9wYXJhbWV0ZXI+CkBAIC00MTYsNiArNDIxLDQxIEBAIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gREVCVUcxOwogCiAgPC9zZWN0Mj4KIAorIDxzZWN0MiBpZD0i YW1jaGVjay1vcHRpb25hbC1pbmRleGFsbGtleXNtYXRjaC12ZXJpZmljYXRpb24iPgorICA8dGl0 bGU+T3B0aW9uYWwgPHBhcmFtZXRlcj5pbmRleGFsbGtleXNtYXRjaDwvcGFyYW1ldGVyPiBWZXJp ZmljYXRpb248L3RpdGxlPgorIDxwYXJhPgorICBXaGVuIHRoZSA8cGFyYW1ldGVyPmluZGV4YWxs a2V5c21hdGNoPC9wYXJhbWV0ZXI+IGFyZ3VtZW50IHRvIEItVHJlZQorICB2ZXJpZmljYXRpb24g ZnVuY3Rpb25zIGlzIDxsaXRlcmFsPnRydWU8L2xpdGVyYWw+LCBhbiBhZGRpdGlvbmFsCisgIHBo YXNlIHZlcmlmaWVzIHRoYXQgZWFjaCBpbmRleCB0dXBsZSBwb2ludHMgdG8gYSBoZWFwIHR1cGxl IHdpdGggdGhlCisgIHNhbWUga2V5LiAgVGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiA8cGFyYW1ldGVy PmhlYXBhbGxpbmRleGVkPC9wYXJhbWV0ZXI+OgorICA8cGFyYW1ldGVyPmhlYXBhbGxpbmRleGVk PC9wYXJhbWV0ZXI+IGNoZWNrcyB0aGF0IGV2ZXJ5IGhlYXAgdHVwbGUgaXMKKyAgaW4gdGhlIGlu ZGV4LCB3aGlsZSA8cGFyYW1ldGVyPmluZGV4YWxsa2V5c21hdGNoPC9wYXJhbWV0ZXI+IGNoZWNr cworICB0aGF0IGV2ZXJ5IGluZGV4IHR1cGxlIHBvaW50cyB0byBhIG1hdGNoaW5nIGhlYXAgdHVw bGUuCisgPC9wYXJhPgorIDxwYXJhPgorICBUaGUgaW1wbGVtZW50YXRpb24gdXNlcyBhIEJsb29t IGZpbHRlciB0byBhbW9ydGl6ZSByYW5kb20gaGVhcAorICBsb29rdXBzLiAgQSBzZXF1ZW50aWFs IGhlYXAgc2NhbiBmaXJzdCBmaW5nZXJwcmludHMgYWxsIHZpc2libGUKKyAgKGtleSwgdGlkKSBw YWlycy4gIER1cmluZyB0aGUgaW5kZXggc2NhbiwgZWFjaCBsZWFmIHR1cGxlIGlzIHByb2JlZAor ICBhZ2FpbnN0IHRoaXMgZmlsdGVyLiAgT25seSB3aGVuIHRoZSBmaWx0ZXIgc2F5cyAmcXVvdDtu b3QgcHJlc2VudCZxdW90OyBkb2VzCisgIGFuIGFjdHVhbCBoZWFwIGZldGNoIGFuZCBrZXkgY29t cGFyaXNvbiBvY2N1ci4gIENvcnJ1cHRpb24gaXMKKyAgcmVwb3J0ZWQgd2hlbiBhbiBpbmRleCB0 dXBsZSBwb2ludHMgdG8gYSBub24tZXhpc3RlbnQgaGVhcCBzbG90LCBvcgorICB3aGVuIHRoZSBo ZWFwIHR1cGxlJ3Mga2V5IChhcyBjb21wdXRlZCBieSA8ZnVuY3Rpb24+Rm9ybUluZGV4RGF0dW08 L2Z1bmN0aW9uPikKKyAgZGlmZmVycyBmcm9tIHRoZSBpbmRleCB0dXBsZSdzIGtleS4KKyA8L3Bh cmE+CisgPHBhcmE+CisgIExpa2UgPHBhcmFtZXRlcj5oZWFwYWxsaW5kZXhlZDwvcGFyYW1ldGVy PiwgdGhpcyBjaGVjayByZXF1aXJlcyBhbgorICBNVkNDIHNuYXBzaG90IHRvIG9idGFpbiBhIGNv bnNpc3RlbnQgdmlldyBvZiB0aGUgaGVhcCBhbmQgaW5kZXguCisgIEluZGV4IHR1cGxlcyB0aGF0 IHBvaW50IHRvIGRlYWQgaGVhcCB0dXBsZXMgKG5vdCB2aXNpYmxlIHRvIHRoZQorICBzbmFwc2hv dCkgYXJlIHNraXBwZWQuCisgPC9wYXJhPgorIDxwYXJhPgorICBUaGUgc3VtbWFyaXppbmcgc3Ry dWN0dXJlIGlzIGJvdW5kIGluIHNpemUgYnkKKyAgPHZhcm5hbWU+bWFpbnRlbmFuY2Vfd29ya19t ZW08L3Zhcm5hbWU+LCB1c2luZyB0aGUgc2FtZSBzaXppbmcKKyAgYXBwcm9hY2ggYXMgPHBhcmFt ZXRlcj5oZWFwYWxsaW5kZXhlZDwvcGFyYW1ldGVyPi4KKyA8L3BhcmE+CisKKyA8L3NlY3QyPgor CiAgPHNlY3QyIGlkPSJhbWNoZWNrLXVzaW5nLWFtY2hlY2stZWZmZWN0aXZlbHkiPgogICA8dGl0 bGU+VXNpbmcgPGZpbGVuYW1lPmFtY2hlY2s8L2ZpbGVuYW1lPiBFZmZlY3RpdmVseTwvdGl0bGU+ CiAKQEAgLTQ1OCwxMiArNDk4LDE1IEBAIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gREVCVUcx OwogICAgPGxpc3RpdGVtPgogICAgIDxwYXJhPgogICAgICBTdHJ1Y3R1cmFsIGluY29uc2lzdGVu Y2llcyBiZXR3ZWVuIGluZGV4ZXMgYW5kIHRoZSBoZWFwIHJlbGF0aW9ucwotICAgICB0aGF0IGFy ZSBpbmRleGVkICh3aGVuIDxwYXJhbWV0ZXI+aGVhcGFsbGluZGV4ZWQ8L3BhcmFtZXRlcj4KLSAg ICAgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCkuCisgICAgIHRoYXQgYXJlIGluZGV4ZWQgKHdo ZW4gPHBhcmFtZXRlcj5oZWFwYWxsaW5kZXhlZDwvcGFyYW1ldGVyPiBvcgorICAgICA8cGFyYW1l dGVyPmluZGV4YWxsa2V5c21hdGNoPC9wYXJhbWV0ZXI+IHZlcmlmaWNhdGlvbiBpcyBwZXJmb3Jt ZWQpLgogICAgIDwvcGFyYT4KICAgICA8cGFyYT4KICAgICAgVGhlcmUgaXMgbm8gY3Jvc3MtY2hl Y2tpbmcgb2YgaW5kZXhlcyBhZ2FpbnN0IHRoZWlyIGhlYXAgcmVsYXRpb24KICAgICAgZHVyaW5n IG5vcm1hbCBvcGVyYXRpb24uICBTeW1wdG9tcyBvZiBoZWFwIGNvcnJ1cHRpb24gY2FuIGJlIHN1 YnRsZS4KKyAgICAgPHBhcmFtZXRlcj5pbmRleGFsbGtleXNtYXRjaDwvcGFyYW1ldGVyPiBkZXRl Y3RzIGNhc2VzIHdoZXJlIGFuIGluZGV4CisgICAgIHR1cGxlIHN0b3JlcyBhIGRpZmZlcmVudCBr ZXkgdGhhbiB0aGUgaGVhcCB0dXBsZSBpdCBwb2ludHMgdG8sIG9yCisgICAgIHBvaW50cyB0byBh IG5vbi1leGlzdGVudCBoZWFwIHNsb3QuCiAgICAgPC9wYXJhPgogICAgPC9saXN0aXRlbT4KICAg IDxsaXN0aXRlbT4KLS0gCjIuNDMuMAoK --00000000000048cacd065083290e Content-Type: text/x-patch; charset="US-ASCII"; name="v5b-0006-amcheck-report-corruption-when-index-points-to-n.patch" Content-Disposition: attachment; filename="v5b-0006-amcheck-report-corruption-when-index-points-to-n.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_moiihin95 RnJvbSAwNzA5YmRmODI4Njg5ZWJhODQyMzNhNDZhMzVhODI5YTI0YTEzZjMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNl ZGIuY29tPgpEYXRlOiBUaHUsIDIzIEFwciAyMDI2IDE0OjM5OjEwICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2NWIgNi82XSBhbWNoZWNrOiByZXBvcnQgY29ycnVwdGlvbiB3aGVuIGluZGV4IHBvaW50 cyB0bwogbm9uLWV4aXN0ZW50IGhlYXAgdHVwbGUgKHRha2UgMikKCjEuIEtpbGwgdGhlIGZhbHNl IHBvc2l0aXZlICJpbmRleCBwb2ludHMgdG8gbm9uLWV4aXN0ZW50IGhlYXAgdHVwbGUiIHJlbGF0 ZWQgdG8gdmFsaWQgTFBfREVBRCB0dXBsZXMuCjIuIEFkZCBkZXRlY3Rpb24gZm9yIGJleW9uZCBF T0YgYmxvY2tzIGFuZCBvdXQtb2YtcmFuZ2Ugb2Zmc2V0cy4KMy4gTWFrZSBpdCBwb3NzaWJsZSBm b3IgaW5kZXhlZCBUSUQgcG9pbnRpbmcgYXQgYSB0cnVlIExQX1VOVVNFRCBzbG90IHRvIGJlIGRl dGVjdGVkIChtYWtlcyBpdCBwb3NzaWJsZSB0byBkZXRlY3QgZGFuZ2xpbmcgaW5kZXggdHVwbGVz KS4KCkF1dGhvcjogSmFrdWIgV2FydGFrIDxqYWt1Yi53YXJ0YWtAZW50ZXJwcmlzZWRiLmNvbT4K RGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzQz MjYyNkY5LTY1REYtNEYwRC1CMzQ1LTI2Q0ZDM0UyQ0ZBQ0B5YW5kZXgtdGVhbS5ydQotLS0KIGNv bnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgfCA4MiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay92ZXJpZnlfbmJ0cmVlLmMgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCmluZGV4IDMyNzYzZGU0MjYyLi5mNmYyZjk5ODNi NyAxMDA2NDQKLS0tIGEvY29udHJpYi9hbWNoZWNrL3ZlcmlmeV9uYnRyZWUuYworKysgYi9jb250 cmliL2FtY2hlY2svdmVyaWZ5X25idHJlZS5jCkBAIC0zMDYxLDE2ICszMDYxLDg0IEBAIGJ0X3Zl cmlmeV9pbmRleF90dXBsZV9wb2ludHNfdG9faGVhcChCdHJlZUNoZWNrU3RhdGUgKnN0YXRlLCBJ bmRleFR1cGxlIGl0dXAsCiAJCQkJCQkJCQkJCSAgU25hcHNob3RBbnksIHNsb3QpOwogCQlpZiAo IWZvdW5kKQogCQl7CisJCQlCbG9ja051bWJlciBibGtubyA9IEl0ZW1Qb2ludGVyR2V0QmxvY2tO dW1iZXIodGlkKTsKKwkJCU9mZnNldE51bWJlciBvZmZudW0gPSBJdGVtUG9pbnRlckdldE9mZnNl dE51bWJlcih0aWQpOworCQkJQnVmZmVyICAgICAgYnVmZmVyOworCQkJUGFnZSAgICAgICAgcGFn ZTsKKwogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKLQkJCWVyZXBvcnQo RVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfSU5ERVhfQ09SUlVQVEVEKSwKLQkJCQkJIGVy cm1zZygiaW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wiIHBvaW50cyB0byBub24tZXhpc3RlbnQg aGVhcCB0dXBsZSBpbiB0YWJsZSBcIiVzXCIiLAorCisJCQkvKgorCQkJICogVGVjaG5pY2FsbHkg ZHVwbGljYXRlIGVycm9yIGFzIHRoZSBzYW1lIGNoZWNrIGZvciBFT0YgaW4gYnRfdGFyZ2V0X3Bh Z2VfY2hlY2soKQorCQkJICogYW5kIHdlIGNvdWxkIGF2b2lkIHRoaXMsIGJ1dCBhZGQgdGhpcyBh cyBhbm90aGVyIHNhbml0eSBjaGVjayBiZWZvcmUgcmVhZGluZworCQkJICogdGhlIGJ1ZmZlciBp dHNlbGYuIEFsc28gQWNjZXNzU2hhcmVMb2NrIHByZXZlbnRzIHRydW5jYXRlLgorCQkJICovCisJ CQlpZiAoYmxrbm8gPj0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhzdGF0ZS0+aGVhcHJlbCkp IHsKKwkJCQllcmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCks CisJCQkJCWVycm1zZygiaW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wiIHBvaW50cyB0byBoZWFw IHR1cGxlIGluIHRhYmxlIFwiJXNcIiB0aGF0IGlzIGJleW9uZCBFT0YiLAorCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShzdGF0ZS0+cmVsKSwKKwkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoc3RhdGUtPmhlYXByZWwpKSwKKwkJCQkJZXJyZGV0YWlsX2ludGVybmFsKCJJbmRleCB0aWQ9 KCV1LCV1KSBwb2ludHMgdG8gaGVhcCB0aWQ9KCV1LCV1KSB0aGF0IGlzIGJleW9uZCBFT0Ygb2Yg aGVhcC4iLAorCQkJCQl0YXJnZXRibG9jaywgb2Zmc2V0LAorCQkJCQlJdGVtUG9pbnRlckdldEJs b2NrTnVtYmVyKHRpZCksCisJCQkJCUl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVyKHRpZCkpKSk7 CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkqIGhlYXBfZmV0Y2goKSBtaWdodCBo YXZlIHJldHVybmVkIGZhbHNlIGZvcgorCQkJCSogLSBvZmZzZXRzIHBhc3QgdGhlIGVuZCBvZiB0 aGUgcGFnZQorCQkJCSogLSBmb3IgYW55IGl0ZW0gd2hvc2UgbGluZSBwb2ludGVyIGlzIG5vdCBM UF9OT1JNQUwgKExQX0RFQUQsIExQX1VOVVNFRCwKKwkJCQkqICAgTFBfUkVESVJFQ1QpLgorCQkJ CSoKKwkJCQkqIFRoZXJlJ3MgYWxzbyBTRUxFQ1QgcGVyZm9ybWluZyBpdCdzIG9wcG9ydHVuaXN0 aWMgcHJ1bmluZyB0aGF0IGNvdWxkCisJCQkJKiBwcm9kdWNlIExQX1VOVVNFRCwgYnV0IG9ubHkg b24gSE9ULWNoYWluIGludGVybWVkaWF0ZSB0dXBsZXMgYW5kIHRob3NlCisJCQkJKiBzaG91bGQg bm90IGJlIHJlZmVyZW5jZWQgYnkgYnRyZWUgaW5kZXggZGlyZWN0bHkuCisJCQkJKgorCQkJCSog VG8gYXZvaWQgZmFsc2UtcG9zaXRpdmUgY29ycnVwdGlvbiByZXBvcnRzLCBwaW4gYW5kIHNoYXJl LWxvY2sgdGhlCisJCQkJKiBoZWFwIGJ1ZmZlciBhbmQgaW5zcGVjdCB0aGUgbGluZSBwb2ludGVy IGRpcmVjdGx5LgorCQkJCSovCisKKwkJCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc3Rh dGUtPmhlYXByZWwsIE1BSU5fRk9SS05VTSwgYmxrbm8sCisJCQkJCQkJCVJCTV9OT1JNQUwsIHN0 YXRlLT5jaGVja3N0cmF0ZWd5KTsKKwkJCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tf U0hBUkUpOworCQkJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisKKwkJCQlpZiAob2Zm bnVtIDwgRmlyc3RPZmZzZXROdW1iZXIgfHwgb2ZmbnVtID4gUGFnZUdldE1heE9mZnNldE51bWJl cihwYWdlKSkKKwkJCQl7CisJCQkJCWVyZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfSU5E RVhfQ09SUlVQVEVEKSwKKwkJCQkJCWVycm1zZygiaW5kZXggdHVwbGUgaW4gaW5kZXggXCIlc1wi IHBvaW50cyB0byBoZWFwIHR1cGxlIGluIHRhYmxlIFwiJXNcIiB3aXRoIGlsbGVnYWwgb2Zmc2V0 IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRlLT5yZWwpLAorCQkJCQkJUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUoc3RhdGUtPmhlYXByZWwpKSwKKwkJCQkJCWVycmRldGFpbF9p bnRlcm5hbCgiSW5kZXggdGlkPSgldSwldSkgcG9pbnRzIHRvIGhlYXAgdGlkPSgldSwldSkgd2l0 aCBpbGxlZ2FsIG9mZnNldCIsCisJCQkJCQl0YXJnZXRibG9jaywgb2Zmc2V0LAorCQkJCQkJSXRl bVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpLAorCQkJCQkJSXRlbVBvaW50ZXJHZXRPZmZzZXRO dW1iZXIodGlkKSkpKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICog SWYgd2UgZGV0ZWN0IGluZGV4IHR1cGxlIHBvaW50aW5nIHRvIExQX1VOVVNFRCBmbGFnIGluIHRo ZSBoZWFwIGVudHJ5LAorCQkJCQkgKiB3ZSBjYW4gYXNzdW1lIGl0J3MgY29ycnVwdGlvbiAoZGFu Z2xpbmcgaW5kZXggcG9pbnRlcikuIFRoZSBvdGhlciBmbGFncworCQkJCQkgKiBzdWNoIGFzIExQ X0RFQUQgb3IgTFBfUkVESVJFQ1QgYXJlIGZpbmUgYW5kIGNhbiBiZSBoaXQgYXMgd2UgcHJvZ3Jl c3MuCisJCQkJCSAqLworCQkJCQlJdGVtSWQgbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIG9mZm51 bSk7CisJCQkJCWlmIChscC0+bHBfZmxhZ3MgPT0gTFBfVU5VU0VEKQorCQkJCQl7CisJCQkJCQll cmVwb3J0KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX0lOREVYX0NPUlJVUFRFRCksCisJCQkJCQkJ ZXJybXNnKCJpbmRleCB0dXBsZSBpbiBpbmRleCBcIiVzXCIgcG9pbnRzIHRvIGhlYXAgdHVwbGUg bWFya2VkIHVudXNlZCBpbiB0YWJsZSBcIiVzXCIiLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHN0YXRlLT5yZWwpLAogCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHN0YXRl LT5oZWFwcmVsKSksCi0JCQkJCSBlcnJkZXRhaWxfaW50ZXJuYWwoIkluZGV4IHRpZD0oJXUsJXUp IHBvaW50cyB0byBoZWFwIHRpZD0oJXUsJXUpIHRoYXQgbm8gbG9uZ2VyIGV4aXN0cy4iLAotCQkJ CQkJCQkJICAgdGFyZ2V0YmxvY2ssIG9mZnNldCwKLQkJCQkJCQkJCSAgIEl0ZW1Qb2ludGVyR2V0 QmxvY2tOdW1iZXIodGlkKSwKLQkJCQkJCQkJCSAgIEl0ZW1Qb2ludGVyR2V0T2Zmc2V0TnVtYmVy KHRpZCkpKSk7CisJCQkJCQkJZXJyZGV0YWlsX2ludGVybmFsKCJJbmRleCB0aWQ9KCV1LCV1KSBw b2ludHMgdG8gaGVhcCB0aWQ9KCV1LCV1KSB3aXRoIExQX1VOVVNFRCBmbGFnLiIsCisJCQkJCQkJ dGFyZ2V0YmxvY2ssIG9mZnNldCwKKwkJCQkJCQlJdGVtUG9pbnRlckdldEJsb2NrTnVtYmVyKHRp ZCksCisJCQkJCQkJSXRlbVBvaW50ZXJHZXRPZmZzZXROdW1iZXIodGlkKSkpKTsKKwkJCQkJfQor CQkJCX0KKwkJCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CisJCQl9CisKKwkJCXJldHVy bjsKIAkJfQogCiAJCS8qIFNraXAgZGVhZCB0dXBsZXMgKG5vdCB2aXNpYmxlIHRvIG91ciBzbmFw c2hvdCkgKi8KLS0gCjIuNDMuMAoK --00000000000048cacd065083290e--