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.94.2) (envelope-from ) id 1tfrkR-005kfe-DP for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Feb 2025 02:36:12 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tfrkQ-003dE5-70 for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Feb 2025 02:36:10 +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.94.2) (envelope-from ) id 1tfrkP-003dDx-K3 for pgsql-hackers@lists.postgresql.org; Thu, 06 Feb 2025 02:36:09 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tfrkL-003iAH-2z for pgsql-hackers@postgresql.org; Thu, 06 Feb 2025 02:36:09 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-21f11b0e580so9328435ad.1 for ; Wed, 05 Feb 2025 18:36:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738809364; x=1739414164; 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=VNSA5rfj3rG0C1lZ48Ou94A/0QRneXimFHLF1TXQKSw=; b=FcmsAcG5KpqRrhaGmjlEsSiWSv/TKkU8kZoE8thayiWNRpe3tc8a5ImGn+uzhuKx7V YahfAemUtqXSchQLtxRWoPntzKGxi23Yv3PTkcHVHRP+aWIe9x7bMskjkVgs2e/SAsHF mn5Xgr9EmWDgM1uvbnOyDTeiyun4MV/NhjEll7EH3QfMjb4TYyS7w8Geq55/pc7iAeLp uInnJ/flEK2PfqZ5ov6CynArmVJd1XCW4eKtJLN4/TrBba//bXUVBVcEy6nKT9yiN/O6 YsTqjzOxM+qNP9O8KQcsEEteMYYifSZ1Su95+DJmm9vxeFqEQewvP6SJzMFMTlIBdjvx +dJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738809364; x=1739414164; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VNSA5rfj3rG0C1lZ48Ou94A/0QRneXimFHLF1TXQKSw=; b=K/DGkyq9jwvN4iJye5RSUyPzqcrLW4RtUVsgaoVY3qNes7/ReMKurXGg1OIIPMSdbF FZdI3Rfhf+opZQeL7VqTodDG/CH+Isf4myu/EGkOiSdu85WlA26pLKTS+guo8rkyiHyZ lYXeBdO8zdtsAc87rCvCzKfRUuD6QFTU878VjilseDaqjS8XsZIjeTGhUUayEzcnm/oS I+YYr+pqzOTTnA3YU0EFp1yxLiucbY4WVmVG/4JarqW+kT4NbJC23V4FGFxh6hWctRde atNamwRRNounXnvpyl/THYuVODc30yZ90VACd8glmBHT4dIbtZFCkoPgYfeczDFgkjow 6BzQ== X-Forwarded-Encrypted: i=1; AJvYcCVTALiia2HJtrMCR1QfAEvwwIdS22xjItpq0VtLeLWT1K0XDuLqfG/ZrikX4Ao/1B/wkrpJ3SguZrXBTJok@postgresql.org X-Gm-Message-State: AOJu0Yz0dMiNawXsKW/fNJ3inrHg7w/MRsAmhN+NJZjr8PQ3iSdTrAFx vvznYCrkBnWWXvPgm08CNz6U+ofX8ULW8YKSs8bUGg4i3tgq9fB76B5fMSUg7R/k6bQaSuGOTb3 2PsTz0ICSW+pPl9EheU3KBAdQVYQ= X-Gm-Gg: ASbGncsByZDqXhz+9Eo9bkc52juq/Yiq1dI/g5+dpi4ls6plgcvNqgnQUQPCDoy0Ahw UwWsrYteShhL++7j7khXUcfthA3IDfXB/lGL3b27CQNaZUSEOnTN+BsxzvKH+L4pK89mOjso1ZA == X-Google-Smtp-Source: AGHT+IGjxYeL1/r2+jXVzTzPFCwU9Q+8c9OF3M4xTvd7e7+lGblTxYJOJBDCZlHRBS89Wwi5BgUdbFEX2zuvpod9LJQ= X-Received: by 2002:a05:6a20:6f91:b0:1e1:a0b6:9872 with SMTP id adf61e73a8af0-1ede8837295mr8791779637.11.1738809364240; Wed, 05 Feb 2025 18:36:04 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Amit Langote Date: Thu, 6 Feb 2025 11:35:47 +0900 X-Gm-Features: AWEUYZnJWObvLVvehuJZ4o6rY853_ro8UnKbpJM6cd9ydRIYao2jvAZMvx75814 Message-ID: Subject: Re: generic plans and "initial" pruning To: Tomas Vondra Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="0000000000007cffbf062d701a83" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007cffbf062d701a83 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Jan 31, 2025 at 5:31=E2=80=AFPM Amit Langote wrote: > On Thu, Jan 23, 2025 at 4:15=E2=80=AFPM Amit Langote wrote: > > I=E2=80=99ve rebased over recent changes to setrefs.c (commit bf826ea06= 29). > > During the rebase, I realized that the patch > > 0002-Initialize-PartitionPruneContexts-lazily wasn=E2=80=99t a good ide= a after > > all. > > > > The test case added by bf826ea0629 highlighted an issue: initializing > > pruning expressions lazily during execution could leave the > > Append/MergeAppend node=E2=80=99s PlanState.subPlan uninitialized at > > ExecInitNode() time. Initially, I thought this would have only > > cosmetic consequences -- such as changes in test case output where > > SubPlans referenced in "exec" pruning expressions wouldn=E2=80=99t appe= ar -- > > but I may have underestimated the problem. As a result, I=E2=80=99ve ab= andoned > > that approach and the patch in favor of initializing all pruning > > expressions during plan initialization. > > > > Additionally, I revisited the impact of the main patch on > > ExecutorStart_hooks. It seems better to change the return type from > > void to bool, returning the result of > > ExecPlanStillValid(queryDesc->estate). This change has the added > > benefit of breaking extensions that use ExecutorStart_hook at compile > > time, encouraging authors to update their code. The updated commit > > message includes details on additional checks extensions must > > implement, particularly for cases where they might access pruned and > > thus unlocked relations. > > > > I've stared at the refactoring patches 0001 and 0002 for long enough > > at this point that I'd like to commit them early next week, barring > > further comments or objections. I'll keep staring at 0003. > > I have now pushed 0001 and 0002. > > I broke 0003 into two patches: > > Patch to track unpruned relations in the executor, allowing the > overhead of processing pruned partitions to be skipped during plan > initialization. This is particularly relevant for top-level nodes such > as ModifyTable and LockRows, which -- unlike Append / MergeAppend -- > do not ignore initially pruned partitions. Since initial pruning is > now performed separately from plan initialization and earlier in > InitPlan(), we can fix this by checking whether a given child result > relation or RowMark belongs to a pruned partition and skipping it. > > Patch to defer locking of prunable relations from GetCachedPlan() to > InitPlan(), preventing partitions pruned by initial pruning from being > locked unnecessarily. > > With the attached 0001, I can see that saving the overhead of > initializing ResultRelInfos for pruned partitions in > ExecInitModifyTable() results in a noticeable speedup for pgbench > -Mprepared with partitions, especially at higher partition counts > where the overhead is more significant. The numbers I have here are a > bit noisy, but they provide a general idea of the performance benefit > of skipping initially pruned partitions during plan initialization. > > Setup: > > plan_cache_mode =3D force_generic_plan > max_locks_per_transaction =3D 1000 > > for i in 100 200 500 1000 2000; do > echo -ne "$i\t" > pgbench -i --partitions=3D$i > /dev/null 2>&1; > pgbench -n -Mprepared -T 10 | grep tps; > done > > With master: > 100 tps =3D 2837.095192 (without initial connection time) > 200 tps =3D 2614.143255 (without initial connection time) > 500 tps =3D 1960.666074 (without initial connection time) > 1000 tps =3D 1390.691229 (without initial connection time) > 2000 tps =3D 884.882656 (without initial connection time) > > > With 0001: > 100 tps =3D 2889.600827 (without initial connection time) > 200 tps =3D 2720.895632 (without initial connection time) > 500 tps =3D 2096.177756 (without initial connection time) > 1000 tps =3D 1659.265873 (without initial connection time) > 2000 tps =3D 1148.976177 (without initial connection time) > > With 0002: > 100 tps =3D 3070.137629 (without initial connection time) > 200 tps =3D 4589.336857 (without initial connection time) > 500 tps =3D 2977.339119 (without initial connection time) > 1000 tps =3D 2885.417560 (without initial connection time) > 2000 tps =3D 3832.111167 (without initial connection time) Per cfbot-ci, the new test case output in 0002 needed to be updated. I plan to push 0001 tomorrow, barring any objections. --=20 Thanks, Amit Langote --0000000000007cffbf062d701a83 Content-Type: application/octet-stream; name="v62-0001-Track-unpruned-relids-to-avoid-processing-pruned.patch" Content-Disposition: attachment; filename="v62-0001-Track-unpruned-relids-to-avoid-processing-pruned.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6sq3o211 RnJvbSBlMTZhYTMxMDhhNDQ3Y2Q3ZDlmZThlYTdhNmU4ODhiMzIzNDg0OTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNSBGZWIgMjAyNSAxNzoyNzozNiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjYy IDEvMl0gVHJhY2sgdW5wcnVuZWQgcmVsaWRzIHRvIGF2b2lkIHByb2Nlc3NpbmcgcHJ1bmVkCiBy ZWxhdGlvbnMKClRoaXMgY29tbWl0IGludHJvZHVjZXMgY2hhbmdlcyB0byB0cmFjayB1bnBydW5l ZCByZWxhdGlvbnMgZXhwbGljaXRseSwKbWFraW5nIGl0IHBvc3NpYmxlIGZvciB0b3AtbGV2ZWwg cGxhbiBub2Rlcywgc3VjaCBhcyBNb2RpZnlUYWJsZSBhbmQKTG9ja1Jvd3MsIHRvIGF2b2lkIHBy b2Nlc3NpbmcgcGFydGl0aW9ucyBwcnVuZWQgZHVyaW5nIGluaXRpYWwKcHJ1bmluZy4gIFNjYW4t bGV2ZWwgbm9kZXMsIHN1Y2ggYXMgQXBwZW5kIGFuZCBNZXJnZUFwcGVuZCwgYWxyZWFkeQphdm9p ZCB0aGUgdW5uZWNlc3NhcnkgcHJvY2Vzc2luZyBieSBhY2Nlc3NpbmcgcGFydGl0aW9uIHBydW5p bmcKcmVzdWx0cyBkaXJlY3RseSB2aWEgcGFydF9wcnVuZV9pbmRleC4gSW4gY29udHJhc3QsIHRv cC1sZXZlbCBub2RlcwpjYW5ub3QgYWNjZXNzIHBydW5pbmcgcmVzdWx0cyBkaXJlY3RseSBhbmQg bmVlZCB0byBkZXRlcm1pbmUgd2hpY2gKcGFydGl0aW9ucyByZW1haW4gdW5wcnVuZWQuCgpUbyBh ZGRyZXNzIHRoaXMsIHRoZSBleGVjdXRvciBpbnRyb2R1Y2VzIGEgbmV3IGJpdG1hcHNldCBmaWVs ZCwKZXNfdW5wcnVuZWRfcmVsaWRzLCBpbiBFU3RhdGUsIHdoaWNoIHRyYWNrcyB0aGUgc2V0IG9m IHVucHJ1bmVkCnJlbGF0aW9ucyBhdCBwbGFuIGluaXRpYWxpemF0aW9uLiBUaGlzIGZpZWxkIGlz IHJlZmVyZW5jZWQgZHVyaW5nIHBsYW4KaW5pdGlhbGl6YXRpb24gdG8gc2tpcCBpbml0aWFsaXpp bmcgY2VydGFpbiBub2RlcyBmb3IgcHJ1bmVkCnBhcnRpdGlvbnMuIEl0IGlzIGluaXRpYWxpemVk IHdpdGggUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcywgYQpuZXcgZmllbGQgdGhhdCB0aGUg cGxhbm5lciBwb3B1bGF0ZXMgd2l0aCBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyB0aGF0CmNhbm5v dCBiZSBwcnVuZWQgZHVyaW5nIHJ1bnRpbWUgcHJ1bmluZy4gVGhlc2UgaW5jbHVkZSByZWxhdGlv bnMgbm90CnN1YmplY3QgdG8gcGFydGl0aW9uIHBydW5pbmcgYW5kIHRob3NlIHJlcXVpcmVkIGZv ciBleGVjdXRpb24KcmVnYXJkbGVzcyBvZiBwcnVuaW5nLgoKUGxhbm5lZFN0bXQudW5wcnVuYWJs ZVJlbGlkcyBpcyBjb21wdXRlZCBkdXJpbmcgc2V0X3BsYW5fcmVmcygpIGJ5CnJlbW92aW5nIHRo ZSBSVCBpbmRleGVzIG9mIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLCBpZGVudGlmaWVkCmZy b20gUGFydGl0aW9uUHJ1bmVJbmZvcywgZnJvbSB0aGUgZnVsbCBzZXQgb2YgcmVsYXRpb24gUlQg aW5kZXhlcy4KRXhlY0RvSW5pdGlhbFBydW5pbmcoKSB0aGVuIHVwZGF0ZXMgZXNfdW5wcnVuZWRf cmVsaWRzIGJ5IGFkZGluZwpwYXJ0aXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFsIHBydW5pbmcu CgpUbyBzdXBwb3J0IHRoaXMsIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIGFuZCBQYXJ0aXRpb25l ZFJlbFBydW5pbmdEYXRhCm5vdyBpbmNsdWRlIGEgbGVhZnBhcnRfcnRpX21hcFtdIGFycmF5IHRo YXQgbWFwcyBwYXJ0aXRpb24gaW5kZXhlcyB0bwp0aGVpciBjb3JyZXNwb25kaW5nIFJUIGluZGV4 ZXMuIFRoZSBmb3JtZXIgaXMgdXNlZCBpbiBzZXRfcGxhbl9yZWZzKCkKd2hlbiBjb25zdHJ1Y3Rp bmcgdW5wcnVuYWJsZVJlbGlkcywgd2hpbGUgdGhlIGxhdHRlciBpcyB1c2VkIGluCkV4ZWNEb0lu aXRpYWxQcnVuaW5nKCkgdG8gY29udmVydCBwYXJ0aXRpb24gaW5kZXhlcyByZXR1cm5lZCBieQpn ZXRfbWF0Y2hpbmdfcGFydGl0aW9ucygpIGludG8gUlQgaW5kZXhlcywgd2hpY2ggYXJlIHRoZW4g YWRkZWQgdG8KZXNfdW5wcnVuZWRfcmVsaWRzLgoKVGhlc2UgY2hhbmdlcyBtYWtlIGl0IHBvc3Np YmxlIGZvciBNb2RpZnlUYWJsZSBhbmQgTG9ja1Jvd3Mgbm9kZXMgdG8KcHJvY2VzcyBvbmx5IHJl bGF0aW9ucyB0aGF0IHJlbWFpbiB1bnBydW5lZCBhZnRlciBpbml0aWFsIHBydW5pbmcuCkV4ZWNJ bml0TW9kaWZ5VGFibGUoKSB0cmltcyBsaXN0cywgc3VjaCBhcyByZXN1bHRSZWxhdGlvbnMsCndp dGhDaGVja09wdGlvbkxpc3RzLCByZXR1cm5pbmdMaXN0cywgYW5kIHVwZGF0ZUNvbG5vc0xpc3Rz LCB0bwpjb25zaWRlciBvbmx5IHVucHJ1bmVkIHBhcnRpdGlvbnMuIEl0IGFsc28gY3JlYXRlcyBS ZXN1bHRSZWxJbmZvCnN0cnVjdHMgb25seSBmb3IgdGhlc2UgcGFydGl0aW9ucy4gU2ltaWxhcmx5 LCBjaGlsZCBSb3dNYXJrcyBmb3IKcHJ1bmVkIHJlbGF0aW9ucyBhcmUgc2tpcHBlZC4KCkJ5IGF2 b2lkaW5nIHVubmVjZXNzYXJ5IGluaXRpYWxpemF0aW9uIG9mIHN0cnVjdHVyZXMgZm9yIHBydW5l ZApwYXJ0aXRpb25zLCB0aGVzZSBjaGFuZ2VzIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHVw ZGF0ZXMgYW5kCmRlbGV0ZXMgb24gcGFydGl0aW9uZWQgdGFibGVzIGR1cmluZyBpbml0aWFsIHJ1 bnRpbWUgcHJ1bmluZy4KCkR1ZSB0byBFeGVjSW5pdE1vZGlmeVRhYmxlKCkgY2hhbmdlcyBhcyBk ZXNjcmliZWQgYWJvdmUsIEVYUExBSU4gb24gYQpwbGFuIGZvciBVUERBVEUgYW5kIERFTEVURSB0 aGF0IHVzZXMgcnVudGltZSBpbml0aWFsIHBydW5pbmcgbm8gbG9uZ2VyCmxpc3RzIHBhcnRpdGlv bnMgcHJ1bmVkIGR1cmluZyBpbml0aWFsIHBydW5pbmcuCgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhh YXMgPHJvYmVydG1oYWFzQGdtYWlsLmNvbT4gKGVhcmxpZXIgdmVyc2lvbnMpClJldmlld2VkLWJ5 OiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0 Z3IuZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9f bWdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAg ICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAg ICAgICAgICAgIHwgMTkgKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j ICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAg ICAgICAgICB8IDgzICsrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jICAgICAgICAgICAgICB8IDEyICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVM b2NrUm93cy5jICAgICAgICAgICB8ICA5ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMgICAgICAgIHwgNzAgKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jICAgICAgICAgIHwgMjkgKysrKysrLQogc3JjL2JhY2tlbmQvcGFydGl0 aW9uaW5nL3BhcnRwcnVuZS5jICAgICAgICAgIHwgMTUgKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAzICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmggICAgICAgICAgfCAgNiArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaCAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oICAgICAgICAgICAgICAgICB8IDEwICsrKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVz LmggICAgICAgICAgICAgICAgIHwgIDggKysKIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICA3ICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRp dGlvbl9wcnVuZS5vdXQgfCA0NiArKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0 aXRpb25fcHJ1bmUuc3FsICAgICAgfCAyMCArKysrKwogMjEgZmlsZXMgY2hhbmdlZCwgMzIwIGlu c2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4 IDBjYmQwNWY1NjAyLi5kYTFlOGRkYzVhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC03 NjgsNyArNzY4LDggQEAgQ29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJICogaW5kZXgt ZW50cnktbWFraW5nIG1hY2hpbmVyeS4gIChUaGVyZSB1c2VkIHRvIGJlIGEgaHVnZSBhbW91bnQg b2YgY29kZQogCSAqIGhlcmUgdGhhdCBiYXNpY2FsbHkgZHVwbGljYXRlZCBleGVjVXRpbHMuYyAu Li4pCiAJICovCi0JRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgY3N0YXRlLT5yYW5nZV90YWJs ZSwgY3N0YXRlLT5ydGVwZXJtaW5mb3MpOworCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGNz dGF0ZS0+cmFuZ2VfdGFibGUsIGNzdGF0ZS0+cnRlcGVybWluZm9zLAorCQkJCQkgICBibXNfbWFr ZV9zaW5nbGV0b24oMSkpOwogCXJlc3VsdFJlbEluZm8gPSB0YXJnZXRfcmVzdWx0UmVsSW5mbyA9 IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRl LCByZXN1bHRSZWxJbmZvLCAxKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNjA0Y2Iw NjI1YjguLjViOTg5MDc0MjAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTg1MSw3ICs4 NTEsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkvKgog CSAqIGluaXRpYWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3RhdGUKIAkgKi8KLQlFeGVjSW5p dFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsK KwlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVy bUluZm9zLAorCQkJCQkgICBibXNfY29weShwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcykp OwogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKQEAgLTg4MSw4 ICs4ODIsMTMgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ CQlSZWxhdGlvbglyZWxhdGlvbjsKIAkJCUV4ZWNSb3dNYXJrICplcm07CiAKLQkJCS8qIGlnbm9y ZSAicGFyZW50IiByb3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCi0J CQlpZiAocmMtPmlzUGFyZW50KQorCQkJLyoKKwkJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJr cywgYmVjYXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50IGF0CisJCQkgKiBydW50aW1lLiAgQWxzbyBp Z25vcmUgdGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJsZXMKKwkJCSAqIHRoYXQg aGF2ZSBiZWVuIHBydW5lZCBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkJICovCisJCQlp ZiAocmMtPmlzUGFyZW50IHx8CisJCQkJIWJtc19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5l c191bnBydW5lZF9yZWxpZHMpKQogCQkJCWNvbnRpbnVlOwogCiAJCQkvKiBnZXQgcmVsYXRpb24n cyBPSUQgKHdpbGwgcHJvZHVjZSBJbnZhbGlkT2lkIGlmIHN1YnF1ZXJ5KSAqLwpAQCAtMjkzMyw2 ICsyOTM5LDEzIEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAq cGxhblRyZWUpCiAJCX0KIAl9CiAKKwkvKgorCSAqIENvcHkgZXNfdW5wcnVuZWRfcmVsaWRzIHNv IHRoYXQgUm93TWFya3Mgb2YgcHJ1bmVkIHJlbGF0aW9ucyBhcmUKKwkgKiBpZ25vcmVkIGluIEV4 ZWNJbml0TG9ja1Jvd3MoKSBhbmQgRXhlY0luaXRNb2RpZnlUYWJsZSgpIHdoZW4KKwkgKiBpbml0 aWFsaXppbmcgdGhlIHBsYW4gdHJlZXMgYmVsb3cuCisJICovCisJcmNlc3RhdGUtPmVzX3VucHJ1 bmVkX3JlbGlkcyA9IHBhcmVudGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzOworCiAJLyoKIAkg KiBJbml0aWFsaXplIHByaXZhdGUgc3RhdGUgaW5mb3JtYXRpb24gZm9yIGVhY2ggU3ViUGxhbi4g IFdlIG11c3QgZG8gdGhpcwogCSAqIGJlZm9yZSBydW5uaW5nIEV4ZWNJbml0Tm9kZSBvbiB0aGUg bWFpbiBxdWVyeSB0cmVlLCBzaW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRl eCA5YzMxM2Q4MTMxNS4uMTM0ZmY2MmY1Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jCkBAIC0xODMsNiArMTgzLDcgQEAgRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0 YXRlICplc3RhdGUpCiAJcHN0bXQtPnBsYW5UcmVlID0gcGxhbjsKIAlwc3RtdC0+cGFydFBydW5l SW5mb3MgPSBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVz dGF0ZS0+ZXNfcmFuZ2VfdGFibGU7CisJcHN0bXQtPnVucHJ1bmFibGVSZWxpZHMgPSBlc3RhdGUt PmVzX3VucHJ1bmVkX3JlbGlkczsKIAlwc3RtdC0+cGVybUluZm9zID0gZXN0YXRlLT5lc19ydGVw ZXJtaW5mb3M7CiAJcHN0bXQtPnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKIAlwc3RtdC0+YXBwZW5k UmVsYXRpb25zID0gTklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDU3 MjQ1MzQ5Y2VjLi5iNmU4OWQwNjIwZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YwpAQCAtMTgyLDcgKzE4Miw4IEBAIHN0YXRpYyBjaGFyICpFeGVjQnVpbGRTbG90UGFydGl0aW9u S2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRp b25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSk7CiBz dGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5v cywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCQkJCQkJCQkgIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsKKwkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkJCSAgQml0bWFwc2V0ICoqYWxsX2xlYWZwYXJ0 X3J0aXMpOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25Q cnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMsCiAJ CQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCkBAIC0xOTYsNyArMTk3LDggQEAgc3Rh dGljIHZvaWQgSW5pdEV4ZWNQYXJ0aXRpb25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3Rh dGUgKnBydW5zdGF0ZSwKIHN0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJCSAgIFBhcnRpdGlv bmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1 bmUsCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJ ICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2 YWxpZHN1YnBsYW5fcnRpcyk7CiAKIAogLyoKQEAgLTE4MjAsOSArMTgyMiwxMiBAQCBFeGVjRG9J bml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKIAkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5V TEw7CisJCUJpdG1hcHNldCAgKmFsbF9sZWFmcGFydF9ydGlzID0gTlVMTDsKKwkJQml0bWFwc2V0 ICAqdmFsaWRzdWJwbGFuX3J0aXMgPSBOVUxMOwogCiAJCS8qIENyZWF0ZSBhbmQgc2F2ZSB0aGUg UGFydGl0aW9uUHJ1bmVTdGF0ZS4gKi8KLQkJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBy dW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8pOworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbywKKwkJCQkJCQkJCQkJICAgJmFsbF9sZWFm cGFydF9ydGlzKTsKIAkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcyA9IGxhcHBlbmQoZXN0 YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywKIAkJCQkJCQkJCQkJICAgcHJ1bmVzdGF0ZSk7CiAK QEAgLTE4MzEsNyArMTgzNiwxMyBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0 ZSkKIAkJICogYml0bWFwc2V0IG9yIE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29t bWVudC4KIAkJICovCiAJCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQotCQkJdmFs aWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsK KwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwg dHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJnZhbGlkc3VicGxhbl9ydGlzKTsKKwkJZWxzZQorCQkJdmFs aWRzdWJwbGFuX3J0aXMgPSBhbGxfbGVhZnBhcnRfcnRpczsKKworCQllc3RhdGUtPmVzX3VucHJ1 bmVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywK KwkJCQkJCQkJCQkJCQkgdmFsaWRzdWJwbGFuX3J0aXMpOwogCQllc3RhdGUtPmVzX3BhcnRfcHJ1 bmVfcmVzdWx0cyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJ CQkJCQkJCQl2YWxpZHN1YnBsYW5zKTsKIAl9CkBAIC0xOTQ0LDkgKzE5NTUsMTYgQEAgRXhlY0lu aXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKICAqIGluaXRpYWxp emVkIGhlcmUuIFRob3NlIHJlcXVpcmVkIGZvciBleGVjIHBydW5pbmcgYXJlIGluaXRpYWxpemVk IGxhdGVyIGluCiAgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCksIGFzIHRoZXkgZGVw ZW5kIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlCiAgKiBwYXJlbnQgcGxhbiBub2RlJ3MgUGxh blN0YXRlLgorICoKKyAqIElmIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBhcmUgdG8gYmUgc2tpcHBl ZCAoZS5nLiwgZHVyaW5nIEVYUExBSU4KKyAqIChHRU5FUklDX1BMQU4pKSwgKmFsbF9sZWFmcGFy dF9ydGlzIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggdGhlIFJUIGluZGV4ZXMgb2YKKyAqIGFsbCBs ZWFmIHBhcnRpdGlvbnMgd2hvc2Ugc2Nhbm5pbmcgc3Vibm9kZSBpcyBpbmNsdWRlZCBpbiB0aGUg cGFyZW50IHBsYW4KKyAqIG5vZGUncyBsaXN0IG9mIGNoaWxkIHBsYW5zLiBUaGUgY2FsbGVyIG11 c3QgYWRkIHRoZXNlIFJUIGluZGV4ZXMgdG8KKyAqIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRz LgogICovCiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCi1DcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKK0Ny ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvLAorCQkJCQkJICBCaXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcykKIHsK IAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJCW5fcGFydF9oaWVyYXJj aGllczsKQEAgLTIwMzksOCArMjA1Nyw4IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0 YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJICogVGhlIHNl dCBvZiBwYXJ0aXRpb25zIHRoYXQgZXhpc3Qgbm93IG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSB0aGF0 CiAJCQkgKiBleGlzdGVkIHdoZW4gdGhlIHBsYW4gd2FzIG1hZGUuICBUaGUgbm9ybWFsIGNhc2Ug aXMgdGhhdCBpdCBpczsKIAkJCSAqIG9wdGltaXplIGZvciB0aGF0IGNhc2Ugd2l0aCBhIHF1aWNr IGNvbXBhcmlzb24sIGFuZCBqdXN0IGNvcHkKLQkJCSAqIHRoZSBzdWJwbGFuX21hcCBhbmQgbWFr ZSBzdWJwYXJ0X21hcCBwb2ludCB0byB0aGUgb25lIGluCi0JCQkgKiBQcnVuZUluZm8uCisJCQkg KiB0aGUgc3VicGxhbl9tYXAgYW5kIG1ha2Ugc3VicGFydF9tYXAsIGxlYWZwYXJ0X3J0aV9tYXAg cG9pbnQgdG8KKwkJCSAqIHRoZSBvbmVzIGluIFBydW5lSW5mby4KIAkJCSAqCiAJCQkgKiBGb3Ig dGhlIGNhc2Ugd2hlcmUgdGhleSBhcmVuJ3QgaWRlbnRpY2FsLCB3ZSBjb3VsZCBoYXZlIG1vcmUK IAkJCSAqIHBhcnRpdGlvbnMgb24gZWl0aGVyIHNpZGU7IG9yIGV2ZW4gZXhhY3RseSB0aGUgc2Ft ZSBudW1iZXIgb2YKQEAgLTIwNTksNiArMjA3Nyw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCQkg ICBzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpID09IDApCiAJCQl7CiAJCQkJcHBydW5l LT5zdWJwYXJ0X21hcCA9IHBpbmZvLT5zdWJwYXJ0X21hcDsKKwkJCQlwcHJ1bmUtPmxlYWZwYXJ0 X3J0aV9tYXAgPSBwaW5mby0+bGVhZnBhcnRfcnRpX21hcDsKIAkJCQltZW1jcHkocHBydW5lLT5z dWJwbGFuX21hcCwgcGluZm8tPnN1YnBsYW5fbWFwLAogCQkJCQkgICBzaXplb2YoaW50KSAqIHBp bmZvLT5ucGFydHMpOwogCQkJfQpAQCAtMjA3OSw2ICsyMDk4LDcgQEAgQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8p CiAJCQkJICogbWlzbWF0Y2hlcy4KIAkJCQkgKi8KIAkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwID0g cGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJCQkJcHBydW5lLT5sZWFm cGFydF9ydGlfbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CiAK IAkJCQlmb3IgKHBwX2lkeCA9IDA7IHBwX2lkeCA8IHBhcnRkZXNjLT5ucGFydHM7IHBwX2lkeCsr KQogCQkJCXsKQEAgLTIwOTYsNiArMjExNiw4IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJCQkJCXBp bmZvLT5zdWJwbGFuX21hcFtwZF9pZHhdOwogCQkJCQkJcHBydW5lLT5zdWJwYXJ0X21hcFtwcF9p ZHhdID0KIAkJCQkJCQlwaW5mby0+c3VicGFydF9tYXBbcGRfaWR4XTsKKwkJCQkJCXBwcnVuZS0+ bGVhZnBhcnRfcnRpX21hcFtwcF9pZHhdID0KKwkJCQkJCQlwaW5mby0+bGVhZnBhcnRfcnRpX21h cFtwZF9pZHhdOwogCQkJCQkJcGRfaWR4Kys7CiAJCQkJCQljb250aW51ZTsKIAkJCQkJfQpAQCAt MjEzMyw2ICsyMTU1LDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0 ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAKIAkJCQkJcHBydW5lLT5zdWJwYXJ0 X21hcFtwcF9pZHhdID0gLTE7CiAJCQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbcHBfaWR4XSA9IC0x OworCQkJCQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcHBfaWR4XSA9IDA7CiAJCQkJfQogCQkJ fQogCkBAIC0yMTc0LDYgKzIxOTcsMjUgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3Rh dGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQlwcnVuZXN0YXRl LT5leGVjcGFyYW1pZHMgPSBibXNfYWRkX21lbWJlcnMocHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRz LAogCQkJCQkJCQkJCQkJCSAgIHBpbmZvLT5leGVjcGFyYW1pZHMpOwogCisJCQkvKgorCQkJICog UmV0dXJuIGFsbCBsZWFmIHBhcnRpdGlvbiBpbmRleGVzIGlmIHdlJ3JlIHNraXBwaW5nIHBydW5p bmcgaW4KKwkJCSAqIHRoZSBFWFBMQUlOIChHRU5FUklDX1BMQU4pIGNhc2UuCisJCQkgKi8KKwkJ CWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzICYmICFwcnVuZXN0YXRlLT5kb19pbml0 aWFsX3BydW5lKQorCQkJeworCQkJCWludAkJCXBhcnRfaW5kZXggPSAtMTsKKworCQkJCXdoaWxl ICgocGFydF9pbmRleCA9IGJtc19uZXh0X21lbWJlcihwcHJ1bmUtPnByZXNlbnRfcGFydHMsCisJ CQkJCQkJCQkJCQkJIHBhcnRfaW5kZXgpKSA+PSAwKQorCQkJCXsKKwkJCQkJSW5kZXgJCXJ0aW5k ZXggPSBwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcGFydF9pbmRleF07CisKKwkJCQkJaWYgKHJ0 aW5kZXgpCisJCQkJCQkqYWxsX2xlYWZwYXJ0X3J0aXMgPSBibXNfYWRkX21lbWJlcigqYWxsX2xl YWZwYXJ0X3J0aXMsCisJCQkJCQkJCQkJCQkJCQlydGluZGV4KTsKKwkJCQl9CisJCQl9CisKIAkJ CWorKzsKIAkJfQogCQlpKys7CkBAIC0yNDM5LDEwICsyNDgxLDE1IEBAIEluaXRFeGVjUGFydGl0 aW9uUHJ1bmVDb250ZXh0cyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogUGFz cyBpbml0aWFsX3BydW5lIGlmIFBBUkFNX0VYRUMgUGFyYW1zIGNhbm5vdCB5ZXQgYmUgZXZhbHVh dGVkLiAgVGhpcwogICogZGlmZmVyZW50aWF0ZXMgdGhlIGluaXRpYWwgZXhlY3V0b3ItdGltZSBw cnVuaW5nIHN0ZXAgZnJvbSBsYXRlcgogICogcnVudGltZSBwcnVuaW5nLgorICoKKyAqIFRoZSBj YWxsZXIgbXVzdCBwYXNzIGEgbm9uLU5VTEwgdmFsaWRzdWJwbGFuX3J0aXMgZHVyaW5nIGluaXRp YWwgcHJ1bmluZworICogdG8gY29sbGVjdCB0aGUgUlQgaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlv bnMgd2hvc2Ugc3Vibm9kZXMgd2lsbCBiZQorICogZXhlY3V0ZWQuICBUaGVzZSBSVCBpbmRleGVz IGFyZSBsYXRlciBhZGRlZCB0byBFU3RhdGUuZXNfdW5wcnVuZWRfcmVsaWRzLgogICovCiBCaXRt YXBzZXQgKgogRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGUsCi0JCQkJCQkgYm9vbCBpbml0aWFsX3BydW5lKQorCQkJCQkJIGJvb2wgaW5pdGlh bF9wcnVuZSwKKwkJCQkJCSBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcykKIHsKIAlCaXRt YXBzZXQgICpyZXN1bHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTI0 NTQsNiArMjUwMSw3IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0 YXRlICpwcnVuZXN0YXRlLAogCSAqIGV2YWx1YXRlZCAqYW5kKiB0aGVyZSBhcmUgc3RlcHMgaW4g d2hpY2ggdG8gZG8gc28uCiAJICovCiAJQXNzZXJ0KGluaXRpYWxfcHJ1bmUgfHwgcHJ1bmVzdGF0 ZS0+ZG9fZXhlY19wcnVuZSk7CisJQXNzZXJ0KHZhbGlkc3VicGxhbl9ydGlzICE9IE5VTEwgfHwg IWluaXRpYWxfcHJ1bmUpOwogCiAJLyoKIAkgKiBTd2l0Y2ggdG8gYSB0ZW1wIGNvbnRleHQgdG8g YXZvaWQgbGVha2luZyBtZW1vcnkgaW4gdGhlIGV4ZWN1dG9yJ3MKQEAgLTI0NzcsNyArMjUyNSw3 IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0 YXRlLAogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVswXTsK IAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwgcHBydW5lLCBpbml0 aWFsX3BydW5lLAotCQkJCQkJCQkJICAgJnJlc3VsdCk7CisJCQkJCQkJCQkgICAmcmVzdWx0LCB2 YWxpZHN1YnBsYW5fcnRpcyk7CiAKIAkJLyoKIAkJICogRXhwcmVzc2lvbiBldmFsIG1heSBoYXZl IHVzZWQgc3BhY2UgaW4gRXhwckNvbnRleHQgdG9vLiBBdm9pZApAQCAtMjQ5NSw2ICsyNTQzLDgg QEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGUsCiAKIAkvKiBDb3B5IHJlc3VsdCBvdXQgb2YgdGhlIHRlbXAgY29udGV4dCBiZWZvcmUgd2Ug cmVzZXQgaXQgKi8KIAlyZXN1bHQgPSBibXNfY29weShyZXN1bHQpOworCWlmICh2YWxpZHN1YnBs YW5fcnRpcykKKwkJKnZhbGlkc3VicGxhbl9ydGlzID0gYm1zX2NvcHkoKnZhbGlkc3VicGxhbl9y dGlzKTsKIAogCU1lbW9yeUNvbnRleHRSZXNldChwcnVuZXN0YXRlLT5wcnVuZV9jb250ZXh0KTsK IApAQCAtMjUwNSwxMyArMjU1NSwxNiBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZQogICoJCVJlY3Vyc2l2ZSB3b3JrZXIgZnVuY3Rpb24gZm9yIEV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucwogICoKLSAqIEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxhbiBJRHMgdG8g KnZhbGlkc3VicGxhbnMKKyAqIEFkZHMgdmFsaWQgKG5vbi1wcnVuYWJsZSkgc3VicGxhbiBJRHMg dG8gKnZhbGlkc3VicGxhbnMgYW5kIHRoZSBSVCBpbmRleGVzCisgKiBvZiB0aGVpciBjb3JyZXNw b25kaW5nIGxlYWYgcGFydGl0aW9ucyB0byAqdmFsaWRzdWJwbGFuX3J0aXMgaWYKKyAqIGl0J3Mg bm9uLU5VTEwuCiAgKi8KIHN0YXRpYyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vy c2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCQkJCQkgICBQYXJ0aXRpb25l ZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lLAot CQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMpCisJCQkJCQkJICAgQml0bWFwc2V0 ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRp cykKIHsKIAlCaXRtYXBzZXQgICpwYXJ0c2V0OwogCWludAkJCWk7CkBAIC0yNTM4LDggKzI1OTEs MTMgQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRh ICpwcnVuZWRhdGEsCiAJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHBhcnRzZXQsIGkpKSA+ PSAwKQogCXsKIAkJaWYgKHBwcnVuZS0+c3VicGxhbl9tYXBbaV0gPj0gMCkKKwkJewogCQkJKnZh bGlkc3VicGxhbnMgPSBibXNfYWRkX21lbWJlcigqdmFsaWRzdWJwbGFucywKIAkJCQkJCQkJCQkJ cHBydW5lLT5zdWJwbGFuX21hcFtpXSk7CisJCQlpZiAodmFsaWRzdWJwbGFuX3J0aXMpCisJCQkJ KnZhbGlkc3VicGxhbl9ydGlzID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlkc3VicGxhbl9ydGlzLAor CQkJCQkJCQkJCQkJCXBwcnVuZS0+bGVhZnBhcnRfcnRpX21hcFtpXSk7CisJCX0KIAkJZWxzZQog CQl7CiAJCQlpbnQJCQlwYXJ0aWR4ID0gcHBydW5lLT5zdWJwYXJ0X21hcFtpXTsKQEAgLTI1NDcs NyArMjYwNSw4IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVu aW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJaWYgKHBhcnRpZHggPj0gMCkKIAkJCQlmaW5kX21hdGNo aW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLAogCQkJCQkJCQkJCQkgICAmcHJ1bmVkYXRh LT5wYXJ0cmVscHJ1bmVkYXRhW3BhcnRpZHhdLAotCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5l LCB2YWxpZHN1YnBsYW5zKTsKKwkJCQkJCQkJCQkJICAgaW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJw bGFucywKKwkJCQkJCQkJCQkJICAgdmFsaWRzdWJwbGFuX3J0aXMpOwogCQkJZWxzZQogCQkJewog CQkJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDAwNTY0OTg1NjY4Li5jOWM3NTZm ODU2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTc3MSw3ICs3NzEsOCBAQCBFeGVj T3BlblNjYW5SZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkLCBpbnQgZWZs YWdzKQogICogaW5kZXhlZCBieSByYW5nZXRhYmxlIGluZGV4LgogICovCiB2b2lkCi1FeGVjSW5p dFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1J bmZvcykKK0V4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJs ZSwgTGlzdCAqcGVybUluZm9zLAorCQkJCSAgIEJpdG1hcHNldCAqdW5wcnVuZWRfcmVsaWRzKQog ewogCS8qIFJlbWVtYmVyIHRoZSByYW5nZSB0YWJsZSBMaXN0IGFzLWlzICovCiAJZXN0YXRlLT5l c19yYW5nZV90YWJsZSA9IHJhbmdlVGFibGU7CkBAIC03ODIsNiArNzgzLDE1IEBAIEV4ZWNJbml0 UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUlu Zm9zKQogCS8qIFNldCBzaXplIG9mIGFzc29jaWF0ZWQgYXJyYXlzICovCiAJZXN0YXRlLT5lc19y YW5nZV90YWJsZV9zaXplID0gbGlzdF9sZW5ndGgocmFuZ2VUYWJsZSk7CiAKKwkvKgorCSAqIElu aXRpYWxpemUgdGhlIGJpdG1hcHNldCBvZiBSVCBpbmRleGVzIChlc191bnBydW5lZF9yZWxpZHMp CisJICogcmVwcmVzZW50aW5nIHJlbGF0aW9ucyB0aGF0IHdpbGwgYmUgc2Nhbm5lZCBkdXJpbmcg ZXhlY3V0aW9uLiBUaGlzIHNldAorCSAqIGlzIGluaXRpYWxseSBwb3B1bGF0ZWQgYnkgdGhlIGNh bGxlciBhbmQgbWF5IGJlIGV4dGVuZGVkIGxhdGVyIGJ5CisJICogRXhlY0RvSW5pdGlhbFBydW5p bmcoKSB0byBpbmNsdWRlIFJUIGluZGV4ZXMgb2YgdW5wcnVuZWQgbGVhZgorCSAqIHBhcnRpdGlv bnMuCisJICovCisJZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSB1bnBydW5lZF9yZWxpZHM7 CisKIAkvKgogCSAqIEFsbG9jYXRlIGFuIGFycmF5IHRvIHN0b3JlIGFuIG9wZW4gUmVsYXRpb24g Y29ycmVzcG9uZGluZyB0byBlYWNoCiAJICogcmFuZ2V0YWJsZSBlbnRyeSwgYW5kIGluaXRpYWxp emUgZW50cmllcyB0byBOVUxMLiAgUmVsYXRpb25zIGFyZSBvcGVuZWQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYwppbmRleCAyMzk3ZTVlMTdiMC4uMTVjNDIyN2NjNjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQXBwZW5kLmMKQEAgLTU5NSw3ICs1OTUsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2xv Y2FsbHkoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWVsc2UgaWYgKCFub2RlLT5hc192YWxpZF9zdWJw bGFuc19pZGVudGlmaWVkKQogCQl7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQkJ RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJ CQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwg TlVMTCk7CiAJCQlub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAkJ fQogCkBAIC02NjIsNyArNjYyLDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3JfbGVhZGVyKEFw cGVuZFN0YXRlICpub2RlKQogCQlpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZp ZWQpCiAJCXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJCW5v ZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCQkvKgpAQCAtNzM4 LDcgKzczOCw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fZm9yX3dvcmtlcihBcHBlbmRTdGF0ZSAq bm9kZSkKIAllbHNlIGlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAl7 CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW5vZGUtPmFzX3ZhbGlk X3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCW1hcmtfaW52YWxpZF9zdWJwbGFuc19h c19maW5pc2hlZChub2RlKTsKQEAgLTg5MSw3ICs4OTEsNyBAQCBFeGVjQXBwZW5kQXN5bmNCZWdp bihBcHBlbmRTdGF0ZSAqbm9kZSkKIAlpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50 aWZpZWQpCiAJewogCQlub2RlLT5hc192YWxpZF9zdWJwbGFucyA9Ci0JCQlFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCUV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQlub2Rl LT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkID0gdHJ1ZTsKIAogCQljbGFzc2lmeV9tYXRj aGluZ19zdWJwbGFucyhub2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXgg NGU0ZTNkYjBiMzguLmE4YWZiZjkzYjQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YwpAQCAtMzQ3LDggKzM0NywxMyBAQCBFeGVjSW5pdExvY2tSb3dzKExvY2tSb3dzICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY1Jvd01hcmsgKmVybTsKIAkJRXhlY0F1 eFJvd01hcmsgKmFlcm07CiAKLQkJLyogaWdub3JlICJwYXJlbnQiIHJvd21hcmtzOyB0aGV5IGFy ZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJaWYgKHJjLT5pc1BhcmVudCkKKwkJLyoKKwkJ ICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNlIHRoZXkgYXJlIGlycmVsZXZhbnQg YXQgcnVudGltZS4KKwkJICogQWxzbyBpZ25vcmUgdGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBj aGlsZCB0YWJsZXMgdGhhdCBoYXZlIGJlZW4KKwkJICogcHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkuCisJCSAqLworCQlpZiAocmMtPmlzUGFyZW50IHx8CisJCQkhYm1zX2lzX21lbWJl cihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpCiAJCQljb250aW51ZTsKIAog CQkvKiBmaW5kIEV4ZWNSb3dNYXJrIGFuZCBidWlsZCBFeGVjQXV4Um93TWFyayAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBiMmRjNjYyNmM5OS4uNDA1ZThmOTQy ODUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0yMzMsNyArMjMz LDcgQEAgRXhlY01lcmdlQXBwZW5kKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKi8KIAkJaWYgKG5v ZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID09IE5VTEwpCiAJCQlub2RlLT5tc192YWxpZF9zdWJwbGFu cyA9Ci0JCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRlLCBm YWxzZSk7CisJCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPm1zX3BydW5lX3N0YXRl LCBmYWxzZSwgTlVMTCk7CiAKIAkJLyoKIAkJICogRmlyc3QgdGltZSB0aHJvdWdoOiBwdWxsIHRo ZSBmaXJzdCB0dXBsZSBmcm9tIGVhY2ggdmFsaWQgc3VicGxhbiwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggYmM4MmUwMzViYTIuLjM0OWVkMmQ2ZDJjIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNjkwLDcgKzY5MCw3IEBAIEV4ZWNJ bml0VXBkYXRlUHJvamVjdGlvbihNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQlBc3NlcnQo d2hpY2hyZWwgPj0gMCAmJiB3aGljaHJlbCA8IG10c3RhdGUtPm10X25yZWxzKTsKIAl9CiAKLQl1 cGRhdGVDb2xub3MgPSAoTGlzdCAqKSBsaXN0X250aChub2RlLT51cGRhdGVDb2xub3NMaXN0cywg d2hpY2hyZWwpOworCXVwZGF0ZUNvbG5vcyA9IChMaXN0ICopIGxpc3RfbnRoKG10c3RhdGUtPm10 X3VwZGF0ZUNvbG5vc0xpc3RzLCB3aGljaHJlbCk7CiAKIAkvKgogCSAqIEZvciBVUERBVEUsIHdl IHVzZSB0aGUgb2xkIHR1cGxlIHRvIGZpbGwgdXAgbWlzc2luZyB2YWx1ZXMgaW4gdGhlIHR1cGxl CkBAIC00NDUzLDcgKzQ0NTMsMTEgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZTsKIAlQbGFuCSAgICpzdWJwbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCUNtZFR5cGUJCW9w ZXJhdGlvbiA9IG5vZGUtPm9wZXJhdGlvbjsKLQlpbnQJCQlucmVscyA9IGxpc3RfbGVuZ3RoKG5v ZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJaW50CQkJbnJlbHM7CisJTGlzdAkgICAqcmVzdWx0UmVs YXRpb25zID0gTklMOworCUxpc3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzID0gTklMOworCUxp c3QJICAgKnJldHVybmluZ0xpc3RzID0gTklMOworCUxpc3QJICAgKnVwZGF0ZUNvbG5vc0xpc3Rz ID0gTklMOwogCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CiAJTGlzdAkgICAqYXJvd21h cmtzOwogCUxpc3RDZWxsICAgKmw7CkBAIC00NDYzLDYgKzQ0NjcsNDUgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ LyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0KCEoZWZsYWdzICYgKEVY RUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKSkpOwogCisJLyoKKwkgKiBPbmx5IGNv bnNpZGVyIHVucHJ1bmVkIHJlbGF0aW9ucyBmb3IgaW5pdGlhbGl6aW5nIHRoZWlyIFJlc3VsdFJl bEluZm8KKwkgKiBzdHJ1Y3QgYW5kIG90aGVyIGZpZWxkcyBzdWNoIGFzIHdpdGhDaGVja09wdGlv bnMsIGV0Yy4KKwkgKi8KKwlpID0gMDsKKwlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9u cykKKwl7CisJCUluZGV4CQlydGkgPSBsZmlyc3RfaW50KGwpOworCisJCWlmIChibXNfaXNfbWVt YmVyKHJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQorCQl7CisJCQlyZXN1bHRSZWxh dGlvbnMgPSBsYXBwZW5kX2ludChyZXN1bHRSZWxhdGlvbnMsIHJ0aSk7CisJCQlpZiAobm9kZS0+ d2l0aENoZWNrT3B0aW9uTGlzdHMpCisJCQl7CisJCQkJTGlzdAkgICAqd2l0aENoZWNrT3B0aW9u cyA9IGxpc3RfbnRoX25vZGUoTGlzdCwKKwkJCQkJCQkJCQkJCQkJCSBub2RlLT53aXRoQ2hlY2tP cHRpb25MaXN0cywKKwkJCQkJCQkJCQkJCQkJCSBpKTsKKworCQkJCXdpdGhDaGVja09wdGlvbkxp c3RzID0gbGFwcGVuZCh3aXRoQ2hlY2tPcHRpb25MaXN0cywgd2l0aENoZWNrT3B0aW9ucyk7CisJ CQl9CisJCQlpZiAobm9kZS0+cmV0dXJuaW5nTGlzdHMpCisJCQl7CisJCQkJTGlzdAkgICAqcmV0 dXJuaW5nTGlzdCA9IGxpc3RfbnRoX25vZGUoTGlzdCwKKwkJCQkJCQkJCQkJCQkJICBub2RlLT5y ZXR1cm5pbmdMaXN0cywKKwkJCQkJCQkJCQkJCQkJICBpKTsKKworCQkJCXJldHVybmluZ0xpc3Rz ID0gbGFwcGVuZChyZXR1cm5pbmdMaXN0cywgcmV0dXJuaW5nTGlzdCk7CisJCQl9CisJCQlpZiAo bm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMpCisJCQl7CisJCQkJTGlzdAkgICAqdXBkYXRlQ29sbm9z TGlzdCA9IGxpc3RfbnRoKG5vZGUtPnVwZGF0ZUNvbG5vc0xpc3RzLCBpKTsKKworCQkJCXVwZGF0 ZUNvbG5vc0xpc3RzID0gbGFwcGVuZCh1cGRhdGVDb2xub3NMaXN0cywgdXBkYXRlQ29sbm9zTGlz dCk7CisJCQl9CisJCX0KKwkJaSsrOworCX0KKwlucmVscyA9IGxpc3RfbGVuZ3RoKHJlc3VsdFJl bGF0aW9ucyk7CisKIAkvKgogCSAqIGNyZWF0ZSBzdGF0ZSBzdHJ1Y3R1cmUKIAkgKi8KQEAgLTQ0 ODMsNiArNDUyNiw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW10c3RhdGUtPm10X21lcmdlX2luc2VydGVkID0g MDsKIAltdHN0YXRlLT5tdF9tZXJnZV91cGRhdGVkID0gMDsKIAltdHN0YXRlLT5tdF9tZXJnZV9k ZWxldGVkID0gMDsKKwltdHN0YXRlLT5tdF91cGRhdGVDb2xub3NMaXN0cyA9IHVwZGF0ZUNvbG5v c0xpc3RzOwogCiAJLyotLS0tLS0tLS0tCiAJICogUmVzb2x2ZSB0aGUgdGFyZ2V0IHJlbGF0aW9u LiBUaGlzIGlzIHRoZSBzYW1lIGFzOgpAQCAtNDUwMCw2ICs0NTQ0LDcgQEAgRXhlY0luaXRNb2Rp ZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICovCiAJaWYgKG5vZGUtPnJvb3RSZWxhdGlvbiA+IDApCiAJeworCQlBc3NlcnQoYm1zX2lzX21l bWJlcihub2RlLT5yb290UmVsYXRpb24sIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSk7CiAJ CW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CiAJ CUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5m bywKIAkJCQkJCQkgICBub2RlLT5yb290UmVsYXRpb24pOwpAQCAtNDUxNCw3ICs0NTU5LDcgQEAg RXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAKIAkvKiBzZXQgdXAgZXBxc3RhdGUgd2l0aCBkdW1teSBzdWJwbGFuIGRhdGEg Zm9yIHRoZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFzdGF0 ZSwgZXN0YXRlLCBOVUxMLCBOSUwsCi0JCQkJCSBub2RlLT5lcHFQYXJhbSwgbm9kZS0+cmVzdWx0 UmVsYXRpb25zKTsKKwkJCQkJIG5vZGUtPmVwcVBhcmFtLCByZXN1bHRSZWxhdGlvbnMpOwogCW10 c3RhdGUtPmZpcmVCU1RyaWdnZXJzID0gdHJ1ZTsKIAogCS8qCkBAIC00NTMyLDcgKzQ1NzcsNyBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKi8KIAlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5m bzsKIAlpID0gMDsKLQlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKKwlmb3JlYWNo KGwsIHJlc3VsdFJlbGF0aW9ucykKIAl7CiAJCUluZGV4CQlyZXN1bHRSZWxhdGlvbiA9IGxmaXJz dF9pbnQobCk7CiAJCUxpc3QJICAgKm1lcmdlQWN0aW9ucyA9IE5JTDsKQEAgLTQ2NzYsNyArNDcy MSw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCSAqIEluaXRpYWxpemUgYW55IFdJVEggQ0hFQ0sgT1BUSU9OIGNv bnN0cmFpbnRzIGlmIG5lZWRlZC4KIAkgKi8KIAlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVz dWx0UmVsSW5mbzsKLQlmb3JlYWNoKGwsIG5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzKQorCWZv cmVhY2gobCwgd2l0aENoZWNrT3B0aW9uTGlzdHMpCiAJewogCQlMaXN0CSAgICp3Y29MaXN0ID0g KExpc3QgKikgbGZpcnN0KGwpOwogCQlMaXN0CSAgICp3Y29FeHBycyA9IE5JTDsKQEAgLTQ2OTks NyArNDc0NCw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qCiAJICogSW5pdGlhbGl6ZSBSRVRVUk5JTkcgcHJv amVjdGlvbnMgaWYgbmVlZGVkLgogCSAqLwotCWlmIChub2RlLT5yZXR1cm5pbmdMaXN0cykKKwlp ZiAocmV0dXJuaW5nTGlzdHMpCiAJewogCQlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKIAkJRXhwckNv bnRleHQgKmVjb250ZXh0OwpAQCAtNDcwOCw3ICs0NzUzLDcgQEAgRXhlY0luaXRNb2RpZnlUYWJs ZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIElu aXRpYWxpemUgcmVzdWx0IHR1cGxlIHNsb3QgYW5kIGFzc2lnbiBpdHMgcm93dHlwZSB1c2luZyB0 aGUgZmlyc3QKIAkJICogUkVUVVJOSU5HIGxpc3QuICBXZSBhc3N1bWUgdGhlIHJlc3Qgd2lsbCBs b29rIHRoZSBzYW1lLgogCQkgKi8KLQkJbXRzdGF0ZS0+cHMucGxhbi0+dGFyZ2V0bGlzdCA9IChM aXN0ICopIGxpbml0aWFsKG5vZGUtPnJldHVybmluZ0xpc3RzKTsKKwkJbXRzdGF0ZS0+cHMucGxh bi0+dGFyZ2V0bGlzdCA9IChMaXN0ICopIGxpbml0aWFsKHJldHVybmluZ0xpc3RzKTsKIAogCQkv KiBTZXQgdXAgYSBzbG90IGZvciB0aGUgb3V0cHV0IG9mIHRoZSBSRVRVUk5JTkcgcHJvamVjdGlv bihzKSAqLwogCQlFeGVjSW5pdFJlc3VsdFR1cGxlU2xvdFRMKCZtdHN0YXRlLT5wcywgJlRUU09w c1ZpcnR1YWwpOwpAQCAtNDcyMyw3ICs0NzY4LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2Rp ZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCSAqIEJ1aWxkIGEg cHJvamVjdGlvbiBmb3IgZWFjaCByZXN1bHQgcmVsLgogCQkgKi8KIAkJcmVzdWx0UmVsSW5mbyA9 IG10c3RhdGUtPnJlc3VsdFJlbEluZm87Ci0JCWZvcmVhY2gobCwgbm9kZS0+cmV0dXJuaW5nTGlz dHMpCisJCWZvcmVhY2gobCwgcmV0dXJuaW5nTGlzdHMpCiAJCXsKIAkJCUxpc3QJICAgKnJsaXN0 ID0gKExpc3QgKikgbGZpcnN0KGwpOwogCkBAIC00ODI0LDggKzQ4NjksMTMgQEAgRXhlY0luaXRN b2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJCUV4ZWNSb3dNYXJrICplcm07CiAJCUV4ZWNBdXhSb3dNYXJrICphZXJtOwogCi0JCS8qIGln bm9yZSAicGFyZW50IiByb3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICov Ci0JCWlmIChyYy0+aXNQYXJlbnQpCisJCS8qCisJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJr cywgYmVjYXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUuCisJCSAqIEFsc28gaWdu b3JlIHRoZSByb3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzIHRoYXQgaGF2ZSBiZWVu CisJCSAqIHBydW5lZCBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkgKi8KKwkJaWYgKHJj LT5pc1BhcmVudCB8fAorCQkJIWJtc19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBy dW5lZF9yZWxpZHMpKQogCQkJY29udGludWU7CiAKIAkJLyogRmluZCBFeGVjUm93TWFyayBhbmQg YnVpbGQgRXhlY0F1eFJvd01hcmsgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpp bmRleCBmZmQ3NTE3ZWE5Ny4uN2IxYThhMGE5ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubmVyLmMKQEAgLTU1Nyw2ICs1NTcsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJz ZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQt PnBsYW5UcmVlID0gdG9wX3BsYW47CiAJcmVzdWx0LT5wYXJ0UHJ1bmVJbmZvcyA9IGdsb2ItPnBh cnRQcnVuZUluZm9zOwogCXJlc3VsdC0+cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFibGU7CisJcmVz dWx0LT51bnBydW5hYmxlUmVsaWRzID0gYm1zX2RpZmZlcmVuY2UoZ2xvYi0+YWxsUmVsaWRzLAor CQkJCQkJCQkJCQkgIGdsb2ItPnBydW5hYmxlUmVsaWRzKTsKIAlyZXN1bHQtPnBlcm1JbmZvcyA9 IGdsb2ItPmZpbmFscnRlcGVybWluZm9zOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xv Yi0+cmVzdWx0UmVsYXRpb25zOwogCXJlc3VsdC0+YXBwZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBw ZW5kUmVsYXRpb25zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDA4Njgy NDliZTk0Li45OTlhNWE4YWI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpA QCAtNTY0LDcgKzU2NCw5IEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUoUGxhbm5lckdsb2JhbCAq Z2xvYiwgTGlzdCAqcnRlcGVybWluZm9zLAogCiAJLyoKIAkgKiBJZiBpdCdzIGEgcGxhaW4gcmVs YXRpb24gUlRFIChvciBhIHN1YnF1ZXJ5IHRoYXQgd2FzIG9uY2UgYSB2aWV3Ci0JICogcmVmZXJl bmNlKSwgYWRkIHRoZSByZWxhdGlvbiBPSUQgdG8gcmVsYXRpb25PaWRzLgorCSAqIHJlZmVyZW5j ZSksIGFkZCB0aGUgcmVsYXRpb24gT0lEIHRvIHJlbGF0aW9uT2lkcy4gIEFsc28gYWRkIGl0cyBu ZXcgUlQKKwkgKiBpbmRleCB0byB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0byBiZSBwb3RlbnRpYWxs eSBhY2Nlc3NlZCBkdXJpbmcKKwkgKiBleGVjdXRpb24uCiAJICoKIAkgKiBXZSBkbyB0aGlzIGV2 ZW4gdGhvdWdoIHRoZSBSVEUgbWlnaHQgYmUgdW5yZWZlcmVuY2VkIGluIHRoZSBwbGFuIHRyZWU7 CiAJICogdGhpcyB3b3VsZCBjb3JyZXNwb25kIHRvIGNhc2VzIHN1Y2ggYXMgdmlld3MgdGhhdCB3 ZXJlIGV4cGFuZGVkLCBjaGlsZApAQCAtNTc2LDcgKzU3OCwxMSBAQCBhZGRfcnRlX3RvX2ZsYXRf cnRhYmxlKFBsYW5uZXJHbG9iYWwgKmdsb2IsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkgKi8KIAlp ZiAobmV3cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAogCQkobmV3cnRlLT5ydGVraW5k ID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKG5ld3J0ZS0+cmVsaWQpKSkKKwl7CiAJCWds b2ItPnJlbGF0aW9uT2lkcyA9IGxhcHBlbmRfb2lkKGdsb2ItPnJlbGF0aW9uT2lkcywgbmV3cnRl LT5yZWxpZCk7CisJCWdsb2ItPmFsbFJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGdsb2ItPmFsbFJl bGlkcywKKwkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoZ2xvYi0+ZmluYWxydGFibGUpKTsKKwl9CiAK IAkvKgogCSAqIEFkZCBhIGNvcHkgb2YgdGhlIFJURVBlcm1pc3Npb25JbmZvLCBpZiBhbnksIGNv cnJlc3BvbmRpbmcgdG8gdGhpcyBSVEUKQEAgLTE3NDAsNiArMTc0NiwxMCBAQCBzZXRfY3VzdG9t c2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogICoKICAqIEFsc28gdXBkYXRlIHRo ZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zIHRvIGFkZCB0 aGUKICAqIG9mZnNldC4KKyAqCisgKiBGaW5hbGx5LCBpZiB0aGVyZSBhcmUgaW5pdGlhbCBwcnVu aW5nIHN0ZXBzLCBhZGQgdGhlIFJUIGluZGV4ZXMgb2YgdGhlCisgKiBsZWFmIHBhcnRpdGlvbnMg dG8gdGhlIHNldCBvZiByZWxhdGlvbnMgdGhhdCBhcmUgcHJ1bmFibGUgYXQgZXhlY3V0aW9uCisg KiBzdGFydHVwIHRpbWUuCiAgKi8KIHN0YXRpYyBpbnQKIHJlZ2lzdGVyX3BhcnRwcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5lX2luZGV4LCBpbnQgcnRvZmZzZXQpCkBA IC0xNzYyLDYgKzE3NzIsNyBAQCByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpy b290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50IHJ0b2Zmc2V0KQogCQlmb3JlYWNoKGwyLCBw cnVuZV9pbmZvcykKIAkJewogCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnByZWxpbmZvID0g bGZpcnN0KGwyKTsKKwkJCWludAkJCWk7CiAKIAkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zm c2V0OwogCQkJcHJlbGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyA9CkBAIC0xNzcwLDYgKzE3 ODEsMjIgQEAgcmVnaXN0ZXJfcGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBh cnRfcHJ1bmVfaW5kZXgsIGludCBydG9mZnNldCkKIAkJCXByZWxpbmZvLT5leGVjX3BydW5pbmdf c3RlcHMgPQogCQkJCWZpeF9zY2FuX2xpc3Qocm9vdCwgcHJlbGluZm8tPmV4ZWNfcHJ1bmluZ19z dGVwcywKIAkJCQkJCQkgIHJ0b2Zmc2V0LCAxKTsKKworCQkJZm9yIChpID0gMDsgaSA8IHByZWxp bmZvLT5ucGFydHM7IGkrKykKKwkJCXsKKwkJCQkvKgorCQkJCSAqIE5vbi1sZWFmIHBhcnRpdGlv bnMgYW5kIHBhcnRpdGlvbnMgdGhhdCBkbyBub3QgaGF2ZSBhCisJCQkJICogc3VicGxhbiBhcmUg bm90IGluY2x1ZGVkIGluIHRoaXMgbWFwIGFzIG1lbnRpb25lZCBpbgorCQkJCSAqIG1ha2VfcGFy dGl0aW9uZWRyZWxfcHJ1bmVpbmZvKCkuCisJCQkJICovCisJCQkJaWYgKHByZWxpbmZvLT5sZWFm cGFydF9ydGlfbWFwW2ldKQorCQkJCXsKKwkJCQkJcHJlbGluZm8tPmxlYWZwYXJ0X3J0aV9tYXBb aV0gKz0gcnRvZmZzZXQ7CisJCQkJCWlmIChwcmVsaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBz KQorCQkJCQkJZ2xvYi0+cHJ1bmFibGVSZWxpZHMgPSBibXNfYWRkX21lbWJlcihnbG9iLT5wcnVu YWJsZVJlbGlkcywKKwkJCQkJCQkJCQkJCQkJCSAgcHJlbGluZm8tPmxlYWZwYXJ0X3J0aV9tYXBb aV0pOworCQkJCX0KKwkJCX0KIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy dGl0aW9uaW5nL3BhcnRwcnVuZS5jIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jCmluZGV4IDQ2OTNlZWYwYzU4Li5mZjkyNjczMmYzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuYwpAQCAtNjQ1LDYgKzY0NSw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1 bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCWludAkJ ICAgKnN1YnBsYW5fbWFwOwogCQlpbnQJCSAgICpzdWJwYXJ0X21hcDsKIAkJT2lkCQkgICAqcmVs aWRfbWFwOworCQlpbnQJCSAgICpsZWFmcGFydF9ydGlfbWFwOwogCiAJCS8qCiAJCSAqIENvbnN0 cnVjdCB0aGUgc3VicGxhbiBhbmQgc3VicGFydCBtYXBzIGZvciB0aGlzIHBhcnRpdGlvbmluZyBs ZXZlbC4KQEAgLTY1Nyw2ICs2NTgsNyBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5laW5mbyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlzdWJwYXJ0X21hcCA9 IChpbnQgKikgcGFsbG9jKG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJbWVtc2V0KHN1YnBhcnRf bWFwLCAtMSwgbnBhcnRzICogc2l6ZW9mKGludCkpOwogCQlyZWxpZF9tYXAgPSAoT2lkICopIHBh bGxvYzAobnBhcnRzICogc2l6ZW9mKE9pZCkpOworCQlsZWFmcGFydF9ydGlfbWFwID0gKGludCAq KSBwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihpbnQpKTsKIAkJcHJlc2VudF9wYXJ0cyA9IE5VTEw7 CiAKIAkJaSA9IC0xOwpAQCAtNjcxLDkgKzY3MywyMSBAQCBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJc3Vi cGxhbl9tYXBbaV0gPSBzdWJwbGFuaWR4ID0gcmVsaWRfc3VicGxhbl9tYXBbcGFydHJlbC0+cmVs aWRdIC0gMTsKIAkJCXN1YnBhcnRfbWFwW2ldID0gc3VicGFydGlkeCA9IHJlbGlkX3N1YnBhcnRf bWFwW3BhcnRyZWwtPnJlbGlkXSAtIDE7CiAJCQlyZWxpZF9tYXBbaV0gPSBwbGFubmVyX3J0X2Zl dGNoKHBhcnRyZWwtPnJlbGlkLCByb290KS0+cmVsaWQ7CisKKwkJCS8qCisJCQkgKiBUcmFjayB0 aGUgUlQgaW5kZXhlcyBvZiAibGVhZiIgcGFydGl0aW9ucyBzbyB0aGV5IGNhbiBiZQorCQkJICog aW5jbHVkZWQgaW4gdGhlIFBsYW5uZXJHbG9iYWwucHJ1bmFibGVSZWxpZHMgc2V0LCBpbmRpY2F0 aW5nCisJCQkgKiByZWxhdGlvbnMgdGhhdCBtYXkgYmUgcHJ1bmVkIGR1cmluZyBleGVjdXRvciBz dGFydHVwLgorCQkJICoKKwkJCSAqIE9ubHkgbGVhZiBwYXJ0aXRpb25zIHdpdGggYSB2YWxpZCBz dWJwbGFuIHRoYXQgYXJlIHBydW5hYmxlCisJCQkgKiB1c2luZyBpbml0aWFsIHBydW5pbmcgYXJl IGFkZGVkIHRvIHBydW5hYmxlUmVsaWRzLiBTbworCQkJICogcGFydGl0aW9ucyB3aXRob3V0IGEg c3VicGxhbiBkdWUgdG8gY29uc3RyYWludCBleGNsdXNpb24gd2lsbAorCQkJICogcmVtYWluIGlu IFBsYW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMuCisJCQkgKi8KIAkJCWlmIChzdWJwbGFuaWR4 ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVtYmVyKHByZXNlbnRf cGFydHMsIGkpOworCQkJCWxlYWZwYXJ0X3J0aV9tYXBbaV0gPSAoaW50KSBwYXJ0cmVsLT5yZWxp ZDsKIAogCQkJCS8qIFJlY29yZCBmaW5kaW5nIHRoaXMgc3VicGxhbiAgKi8KIAkJCQlzdWJwbGFu c2ZvdW5kID0gYm1zX2FkZF9tZW1iZXIoc3VicGxhbnNmb3VuZCwgc3VicGxhbmlkeCk7CkBAIC02 OTUsNiArNzA5LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBsYW5fbWFwID0gc3Vi cGxhbl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFwOwogCQlwaW5mby0+ cmVsaWRfbWFwID0gcmVsaWRfbWFwOworCQlwaW5mby0+bGVhZnBhcnRfcnRpX21hcCA9IGxlYWZw YXJ0X3J0aV9tYXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGFydF9tYXApOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNjk2NjAzN2QyZWYuLmYwOWFiNDFj NjA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTY2OCw3 ICs2NjgsOCBAQCBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKExvZ2ljYWxSZXBSZWxNYXBFbnRy eSAqcmVsKQogCiAJYWRkUlRFUGVybWlzc2lvbkluZm8oJnBlcm1pbmZvcywgcnRlKTsKIAotCUV4 ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEocnRlKSwgcGVybWluZm9zKTsKKwlF eGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2UxKHJ0ZSksIHBlcm1pbmZvcywKKwkJ CQkJICAgYm1zX21ha2Vfc2luZ2xldG9uKDEpKTsKIAogCWVkYXRhLT50YXJnZXRSZWxJbmZvID0g cmVzdWx0UmVsSW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCAwMjI3ZmNiY2EzZC4uMmY4OTk5 NmE3NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpA QCAtODIwLDcgKzgyMCw4IEBAIGNyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHJl bCkKIAogCWFkZFJURVBlcm1pc3Npb25JbmZvKCZwZXJtaW5mb3MsIHJ0ZSk7CiAKLQlFeGVjSW5p dFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2UxKHJ0ZSksIHBlcm1pbmZvcyk7CisJRXhlY0lu aXRSYW5nZVRhYmxlKGVzdGF0ZSwgbGlzdF9tYWtlMShydGUpLCBwZXJtaW5mb3MsCisJCQkJCSAg IGJtc19tYWtlX3NpbmdsZXRvbigxKSk7CiAKIAllc3RhdGUtPmVzX291dHB1dF9jaWQgPSBHZXRD dXJyZW50Q29tbWFuZElkKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o CmluZGV4IDg1NWZlZDRmZWE1Li45NTEwMDljZjQ2YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaApAQCAtNDgsNiArNDgsOCBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxl Um91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogICogbnBhcnRzCQkJCQkJTGVuZ3Ro IG9mIHN1YnBsYW5fbWFwW10gYW5kIHN1YnBhcnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJ U3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJ CQkJCVN1YnBhcnQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KKyAqIGxlYWZwYXJ0 X3J0aV9tYXAJCQkJUlQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAwIGlmIG5vdCBhIGxl YWYKKyAqIAkJCQkJCQkJcGFydGl0aW9uLgogICogcHJlc2VudF9wYXJ0cwkJCQlBIEJpdG1hcHNl dCBvZiB0aGUgcGFydGl0aW9uIGluZGV4ZXMgdGhhdCB3ZQogICoJCQkJCQkJCWhhdmUgc3VicGxh bnMgb3Igc3VicGFydHMgZm9yLgogICogaW5pdGlhbF9wcnVuaW5nX3N0ZXBzCQlMaXN0IG9mIFBh cnRpdGlvblBydW5lU3RlcHMgdXNlZCB0bwpAQCAtNjUsNiArNjcsNyBAQCB0eXBlZGVmIHN0cnVj dCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhCiAJaW50CQkJbnBhcnRzOwogCWludAkJICAgKnN1 YnBsYW5fbWFwOwogCWludAkJICAgKnN1YnBhcnRfbWFwOworCWludAkJICAgKmxlYWZwYXJ0X3J0 aV9tYXA7CiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3By dW5pbmdfc3RlcHM7CiAJTGlzdAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOwpAQCAtMTM1LDYgKzEz OCw3IEBAIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQ cnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICpy ZWxpZHMsCiAJCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxh bnMpOwogZXh0ZXJuIEJpdG1hcHNldCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlv blBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5l KTsKKwkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkJCQkJICAgQml0bWFw c2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAjZW5kaWYJCQkJCQkJLyogRVhFQ1BBUlRJVElP Tl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA0NWI4MGU2Yjk4ZS4uMzBlMmE4MjM0 NmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtNTk1LDcgKzU5NSw4IEBAIGV4dGVybiBi b29sIEV4ZWNSZWxhdGlvbklzVGFyZ2V0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHNj YW5yZWxpZCk7CiAKIGV4dGVybiBSZWxhdGlvbiBFeGVjT3BlblNjYW5SZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkLCBpbnQgZWZsYWdzKTsKIAotZXh0ZXJuIHZvaWQgRXhl Y0luaXRSYW5nZVRhYmxlKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpw ZXJtSW5mb3MpOworZXh0ZXJuIHZvaWQgRXhlY0luaXRSYW5nZVRhYmxlKEVTdGF0ZSAqZXN0YXRl LCBMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpwZXJtSW5mb3MsCisJCQkJCQkJICAgQml0bWFwc2V0 ICp1bnBydW5lZF9yZWxpZHMpOwogZXh0ZXJuIHZvaWQgRXhlY0Nsb3NlUmFuZ2VUYWJsZVJlbGF0 aW9ucyhFU3RhdGUgKmVzdGF0ZSk7CiBleHRlcm4gdm9pZCBFeGVjQ2xvc2VSZXN1bHRSZWxhdGlv bnMoRVN0YXRlICplc3RhdGUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGFjYTE1Zjc3MWEy Li5hMmNiYTk3ZTNkNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK KysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTY1OCw2ICs2NTgsMTAgQEAg dHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9pbmZvczsJLyog TGlzdCBvZiBQYXJ0aXRpb25QcnVuZUluZm8gKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX3N0 YXRlczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0YXRlICovCiAJTGlzdAkgICAqZXNfcGFy dF9wcnVuZV9yZXN1bHRzOwkvKiBMaXN0IG9mIEJpdG1hcHNldCAqLworCUJpdG1hcHNldCAgKmVz X3VucHJ1bmVkX3JlbGlkczsgLyogUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyArIFJUCisJ CQkJCQkJCQkgKiBpbmRleGVzIG9mIGxlYWYgcGFydGl0aW9ucyB0aGF0IHN1cnZpdmUKKwkJCQkJ CQkJCSAqIGluaXRpYWwgcHJ1bmluZzsgc2VlCisJCQkJCQkJCQkgKiBFeGVjRG9Jbml0aWFsUHJ1 bmluZygpICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJv bSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZl bCBqdW5rIGZpbHRlciwgaWYgYW55ICovCkBAIC0xNDQwLDYgKzE0NDQsMTIgQEAgdHlwZWRlZiBz dHJ1Y3QgTW9kaWZ5VGFibGVTdGF0ZQogCWRvdWJsZQkJbXRfbWVyZ2VfaW5zZXJ0ZWQ7CiAJZG91 YmxlCQltdF9tZXJnZV91cGRhdGVkOwogCWRvdWJsZQkJbXRfbWVyZ2VfZGVsZXRlZDsKKworCS8q CisJICogTGlzdCBvZiB2YWxpZCB1cGRhdGVDb2xub3NMaXN0cy4gIENvbnRhaW5zIG9ubHkgdGhv c2UgYmVsb25naW5nIHRvCisJICogdW5wcnVuZWQgcmVsYXRpb25zIGZyb20gTW9kaWZ5VGFibGUu dXBkYXRlQ29sbm9zTGlzdHMuCisJICovCisJTGlzdAkgICAqbXRfdXBkYXRlQ29sbm9zTGlzdHM7 CiB9IE1vZGlmeVRhYmxlU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5v ZGVzLmgKaW5kZXggNTJkNDRmNDMwMjEuLjJmZTUxNzljYTc3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aApAQCAtMTE2LDYgKzExNiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAJLyog ImZsYXQiIHJhbmdldGFibGUgZm9yIGV4ZWN1dG9yICovCiAJTGlzdAkgICAqZmluYWxydGFibGU7 CiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2YgYWxsIHJlbGF0aW9uIFJURXMgaW4gZmluYWxydGFi bGUgKFJURV9SRUxBVElPTiBhbmQKKwkgKiBSVEVfU1VCUVVFUlkgUlRFcyBvZiB2aWV3cykgYW5k IG9mIHRob3NlIHRoYXQgYXJlIHN1YmplY3QgdG8gcnVudGltZQorCSAqIHBydW5pbmcgYXQgcGxh biBpbml0aWFsaXphdGlvbiB0aW1lICgiaW5pdGlhbCIgcHJ1bmluZykuCisJICovCisJQml0bWFw c2V0ICAqYWxsUmVsaWRzOworCUJpdG1hcHNldCAgKnBydW5hYmxlUmVsaWRzOworCiAJLyogImZs YXQiIGxpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm9zICovCiAJTGlzdAkgICAqZmluYWxydGVwZXJt aW5mb3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMDZkOTU1OWViYjkuLjRhYmVmYTdiZWMw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNzQsNiArNzQsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGxhbm5lZFN0bXQKIAogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdlVGJsRW50 cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAgKnVucHJ1bmFibGVSZWxpZHM7CS8qIFJUIGluZGV4 ZXMgb2YgcmVsYXRpb25zIHRoYXQgYXJlIG5vdAorCQkJCQkJCQkJICogc3ViamVjdCB0byBydW50 aW1lIHBydW5pbmc7IHNldCBmb3IKKwkJCQkJCQkJCSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzKCku ICovCisKIAlMaXN0CSAgICpwZXJtSW5mb3M7CQkvKiBsaXN0IG9mIFJURVBlcm1pc3Npb25JbmZv IG5vZGVzIGZvciBydGFibGUKIAkJCQkJCQkJICogZW50cmllcyBuZWVkaW5nIG9uZSAqLwogCkBA IC0xNDgzLDYgKzE0ODcsOSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5lSW5m bwogCS8qIHN1YnBhcnQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMSAqLwogCWludAkJ ICAgKnN1YnBhcnRfbWFwIHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOwogCisJLyog UlQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAwIGlmIG5vdCBhIGxlYWYgcGFydGl0aW9u ICovCisJaW50CQkgICAqbGVhZnBhcnRfcnRpX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShu cGFydHMpKTsKKwogCS8qIHJlbGF0aW9uIE9JRCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgKi8K IAlPaWQJCSAgICpyZWxpZF9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7CiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAppbmRleCBm MDcwN2U3ZjdlYS4uZTY2NzUwM2M5NjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTQ0NjksMyArNDQ2OSw0OSBAQCBkcm9wIHRhYmxlIGhw X2NvbnRyYWRpY3RfdGVzdDsKIGRyb3Agb3BlcmF0b3IgY2xhc3MgcGFydF90ZXN0X2ludDRfb3Bz MiB1c2luZyBoYXNoOwogZHJvcCBvcGVyYXRvciA9PT0oaW50NCwgaW50NCk7CiBkcm9wIGZ1bmN0 aW9uIGV4cGxhaW5fYW5hbHl6ZSh0ZXh0KTsKKy0tIFJ1bnRpbWUgcHJ1bmluZyBvbiBVUERBVEUg dXNpbmcgV0lUSCBDSEVDSyBPUFRJT05TIGFuZCBSRVRVUk5JTkcKK2NyZWF0ZSB0YWJsZSBwYXJ0 X2FiYyAoYSBpbnQsIGIgdGV4dCwgYyBib29sKSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVh dGUgdGFibGUgcGFydF9hYmNfMSAoYiB0ZXh0LCBhIGludCwgYyBib29sKTsKK2NyZWF0ZSB0YWJs ZSBwYXJ0X2FiY18yIChhIGludCwgYyBib29sLCBiIHRleHQpOworYWx0ZXIgdGFibGUgcGFydF9h YmMgYXR0YWNoIHBhcnRpdGlvbiBwYXJ0X2FiY18xIGZvciB2YWx1ZXMgaW4gKDEpOworYWx0ZXIg dGFibGUgcGFydF9hYmMgYXR0YWNoIHBhcnRpdGlvbiBwYXJ0X2FiY18yIGZvciB2YWx1ZXMgaW4g KDIpOworaW5zZXJ0IGludG8gcGFydF9hYmMgdmFsdWVzICgxLCAnYicsIHRydWUpOworaW5zZXJ0 IGludG8gcGFydF9hYmMgdmFsdWVzICgyLCAnYycsIHRydWUpOworY3JlYXRlIHZpZXcgcGFydF9h YmNfdmlldyBhcyBzZWxlY3QgKiBmcm9tIHBhcnRfYWJjIHdoZXJlIGIgPD4gJ2EnIHdpdGggY2hl Y2sgb3B0aW9uOworcHJlcGFyZSB1cGRhdGVfcGFydF9hYmNfdmlldyBhcyB1cGRhdGUgcGFydF9h YmNfdmlldyBzZXQgYiA9ICQyIHdoZXJlIGEgPSAkMSByZXR1cm5pbmcgKjsKKy0tIE9ubHkgdGhl IHVucHJ1bmVkIHBhcnRpdGlvbiBzaG91bGQgYmUgc2hvd24gaW4gdGhlIGxpc3Qgb2YgcmVsYXRp b25zIHRvIGJlCistLSB1cGRhdGVkCitleHBsYWluIChjb3N0cyBvZmYpIGV4ZWN1dGUgdXBkYXRl X3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIHBhcnRfYWJjCisgICBVcGRhdGUg b24gcGFydF9hYmNfMQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDog MQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhcnRfYWJjXzEKKyAgICAgICAgICAgICAgIEZp bHRlcjogKChiIDw+ICdhJzo6dGV4dCkgQU5EIChhID0gJDEpKQorKDYgcm93cykKKworZXhlY3V0 ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMSwgJ2QnKTsKKyBhIHwgYiB8IGMgCistLS0rLS0tKy0t LQorIDEgfCBkIHwgdAorKDEgcm93KQorCitleHBsYWluIChjb3N0cyBvZmYpIGV4ZWN1dGUgdXBk YXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7CisgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIHBhcnRfYWJjCisgICBVcGRh dGUgb24gcGFydF9hYmNfMiBwYXJ0X2FiY18xCisgICAtPiAgQXBwZW5kCisgICAgICAgICBTdWJw bGFucyBSZW1vdmVkOiAxCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcGFydF9hYmNfMiBwYXJ0 X2FiY18xCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYiA8PiAnYSc6OnRleHQpIEFORCAoYSA9 ICQxKSkKKyg2IHJvd3MpCisKK2V4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7 CitFUlJPUjogIG5ldyByb3cgdmlvbGF0ZXMgY2hlY2sgb3B0aW9uIGZvciB2aWV3ICJwYXJ0X2Fi Y192aWV3IgorREVUQUlMOiAgRmFpbGluZyByb3cgY29udGFpbnMgKDIsIGEsIHQpLgorZGVhbGxv Y2F0ZSB1cGRhdGVfcGFydF9hYmNfdmlldzsKK2Ryb3AgdmlldyBwYXJ0X2FiY192aWV3OworZHJv cCB0YWJsZSBwYXJ0X2FiYzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRp dGlvbl9wcnVuZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3Fs CmluZGV4IGVhOWE0ZmU0YTIzLi43MzA1NDVlODZhNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fcHJ1bmUuc3FsCkBAIC0xMzU0LDMgKzEzNTQsMjMgQEAgZHJvcCBvcGVyYXRvciBj bGFzcyBwYXJ0X3Rlc3RfaW50NF9vcHMyIHVzaW5nIGhhc2g7CiBkcm9wIG9wZXJhdG9yID09PShp bnQ0LCBpbnQ0KTsKIAogZHJvcCBmdW5jdGlvbiBleHBsYWluX2FuYWx5emUodGV4dCk7CisKKy0t IFJ1bnRpbWUgcHJ1bmluZyBvbiBVUERBVEUgdXNpbmcgV0lUSCBDSEVDSyBPUFRJT05TIGFuZCBS RVRVUk5JTkcKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiYyAoYSBpbnQsIGIgdGV4dCwgYyBib29sKSBw YXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUgcGFydF9hYmNfMSAoYiB0ZXh0LCBh IGludCwgYyBib29sKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18yIChhIGludCwgYyBib29sLCBi IHRleHQpOworYWx0ZXIgdGFibGUgcGFydF9hYmMgYXR0YWNoIHBhcnRpdGlvbiBwYXJ0X2FiY18x IGZvciB2YWx1ZXMgaW4gKDEpOworYWx0ZXIgdGFibGUgcGFydF9hYmMgYXR0YWNoIHBhcnRpdGlv biBwYXJ0X2FiY18yIGZvciB2YWx1ZXMgaW4gKDIpOworaW5zZXJ0IGludG8gcGFydF9hYmMgdmFs dWVzICgxLCAnYicsIHRydWUpOworaW5zZXJ0IGludG8gcGFydF9hYmMgdmFsdWVzICgyLCAnYycs IHRydWUpOworY3JlYXRlIHZpZXcgcGFydF9hYmNfdmlldyBhcyBzZWxlY3QgKiBmcm9tIHBhcnRf YWJjIHdoZXJlIGIgPD4gJ2EnIHdpdGggY2hlY2sgb3B0aW9uOworcHJlcGFyZSB1cGRhdGVfcGFy dF9hYmNfdmlldyBhcyB1cGRhdGUgcGFydF9hYmNfdmlldyBzZXQgYiA9ICQyIHdoZXJlIGEgPSAk MSByZXR1cm5pbmcgKjsKKy0tIE9ubHkgdGhlIHVucHJ1bmVkIHBhcnRpdGlvbiBzaG91bGQgYmUg c2hvd24gaW4gdGhlIGxpc3Qgb2YgcmVsYXRpb25zIHRvIGJlCistLSB1cGRhdGVkCitleHBsYWlu IChjb3N0cyBvZmYpIGV4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CitleGVj dXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworZXhwbGFpbiAoY29zdHMgb2ZmKSBl eGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworZXhlY3V0ZSB1cGRhdGVfcGFy dF9hYmNfdmlldyAoMiwgJ2EnKTsKK2RlYWxsb2NhdGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXc7Citk cm9wIHZpZXcgcGFydF9hYmNfdmlldzsKK2Ryb3AgdGFibGUgcGFydF9hYmM7Ci0tIAoyLjQzLjAK Cg== --0000000000007cffbf062d701a83 Content-Type: application/octet-stream; name="v62-0002-Don-t-lock-partitions-pruned-by-initial-pruning.patch" Content-Disposition: attachment; filename="v62-0002-Don-t-lock-partitions-pruned-by-initial-pruning.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6sq3o1y0 RnJvbSA0MGNmNzMzZTYwMzkyM2NjMzJiMzc1ZmRlNWExMzAzZDJlNmE0ZmEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNSBGZWIgMjAyNSAxNzozODoxMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjYy IDIvMl0gRG9uJ3QgbG9jayBwYXJ0aXRpb25zIHBydW5lZCBieSBpbml0aWFsIHBydW5pbmcKCkJl Zm9yZSBleGVjdXRpbmcgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuLCBBY3F1aXJlRXhlY3V0b3JMb2Nr cygpIGluCnBsYW5jYWNoZS5jIGxvY2tzIGFsbCByZWxhdGlvbnMgaW4gYSBwbGFuJ3MgcmFuZ2Ug dGFibGUgdG8gZW5zdXJlIHRoZQpwbGFuIGlzIHNhZmUgZm9yIGV4ZWN1dGlvbi4gSG93ZXZlciwg dGhpcyBsb2NrcyBydW50aW1lLXBydW5hYmxlCnJlbGF0aW9ucyB0aGF0IHdpbGwgbGF0ZXIgYmUg cHJ1bmVkIGR1cmluZyAiaW5pdGlhbCIgcnVudGltZSBwcnVuaW5nLAppbnRyb2R1Y2luZyB1bm5l Y2Vzc2FyeSBvdmVyaGVhZC4gVGhpcyBjb21taXQgZGVmZXJzIGxvY2tpbmcgZm9yIHN1Y2gKcmVs YXRpb25zIGFuZCBlbnN1cmVzIHRoYXQgYW55IGludmFsaWRhdGlvbiBjYXVzZWQgYnkgdGhpcyBk ZWZlcnJhbAp0cmlnZ2VycyByZXBsYW5uaW5nIHdoZW4gbmVlZGVkLgoKQWNxdWlyZUV4ZWN1dG9y TG9ja3MoKSBub3cgbG9ja3Mgb25seSB1bnBydW5hYmxlIHJlbGF0aW9ucyB0byBhdm9pZApsb2Nr aW5nIHJ1bnRpbWUtcHJ1bmFibGUgcGFydGl0aW9ucyB1bm5lY2Vzc2FyaWx5LiBUaGlzIGRlZmVy cmFsIG9mCmxvY2tzIGVuc3VyZXMgdGhhdCBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucyBhcmUg aGFuZGxlZCBsYXRlciBkdXJpbmcKZXhlY3V0b3Igc3RhcnR1cCwgbWluaW1pemluZyBvdmVyaGVh ZCBhbmQgcmVkdWNpbmcgY29udGVudGlvbiBpbgp3b3JrbG9hZHMgaW52b2x2aW5nIHBhcnRpdGlv bmVkIHRhYmxlcy4KClRoaXMgcmVzdWx0cyBpbiBzaWduaWZpY2FudCBzcGVlZHVwcyBmb3IgZ2Vu ZXJpYyBwbGFucyB3aXRoIG1hbnkKcnVudGltZS1wcnVuYWJsZSBwYXJ0aXRpb25zLgoKRXhlY0No ZWNrUGVybWlzc2lvbnMoKSBub3cgaW5jbHVkZXMgYW4gQXNzZXJ0IHRvIHZlcmlmeSB0aGF0IGFs bApyZWxhdGlvbnMgdW5kZXJnb2luZyBwZXJtaXNzaW9uIGNoZWNrcyBhcmUgcHJvcGVybHkgbG9j a2VkLgoKKiBQbGFuIGludmFsaWRhdGlvbiBoYW5kbGluZzoKCkRlZmVycmluZyBsb2NrcyBpbnRy b2R1Y2VzIGEgd2luZG93IHdoZXJlIHBydW5hYmxlIHJlbGF0aW9ucyBtYXkgYmUKYWx0ZXJlZCBi eSBjb25jdXJyZW50IERETCwgaW52YWxpZGF0aW5nIHRoZSBwbGFuLiBBIG5ldyBmdW5jdGlvbiwK RXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKSwgd3JhcHMgRXhlY3V0b3JTdGFydCgpIHRvIGRldGVj dCBhbmQKaGFuZGxlIGludmFsaWRhdGlvbiBjYXVzZWQgYnkgZGVmZXJyZWQgbG9ja2luZy4gSWYg aW52YWxpZGF0aW9uCm9jY3VycywgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKSB1cGRhdGVzIENh Y2hlZFBsYW4gdXNpbmcgdGhlIG5ldwpVcGRhdGVDYWNoZWRQbGFuKCkgZnVuY3Rpb24gYW5kIHJl dHJpZXMgZXhlY3V0aW9uIHdpdGggdGhlIHJlZnJlc2hlZApwbGFuLgoKVXBkYXRlQ2FjaGVkUGxh bigpIHJlcGxhY2VzIHN0YWxlIHBsYW5zIGluIENhY2hlZFBsYW4uc3RtdF9saXN0LiBBCm5ldyBD YWNoZWRQbGFuLnN0bXRfY29udGV4dCwgYXMgYSBjaGlsZCBvZiBDYWNoZWRQbGFuLmNvbnRleHQs CmFsbG93cyBmcmVlaW5nIG9sZCBQbGFubmVkU3RtdHMgd2hpbGUgcHJlc2VydmluZyB0aGUgQ2Fj aGVkUGxhbgpzdHJ1Y3R1cmUgYW5kIHN0YXRlbWVudHMgbGlzdC4KCkV4ZWN1dG9yU3RhcnQoKSBh bmQgRXhlY3V0b3JTdGFydF9ob29rIG5vdyByZXR1cm4gYSBib29sZWFuIHZhbHVlCmluZGljYXRp bmcgd2hldGhlciBwbGFuIGluaXRpYWxpemF0aW9uIHN1Y2NlZWRlZCB3aXRoIGEgdmFsaWQKUGxh blN0YXRlIHRyZWUgaW4gUXVlcnlEZXNjLnBsYW5zdGF0ZS4KCiogVGVzdGluZzoKClRoZSBkZWxh eV9leGVjdXRpb24gbW9kdWxlIHRlc3RzIHNjZW5hcmlvcyB3aGVyZSBjYWNoZWQgcGxhbnMgYmVj b21lCmludmFsaWQgZHVlIHRvIGNoYW5nZXMgaW4gcHJ1bmFibGUgcmVsYXRpb25zIGFmdGVyIGRl ZmVycmVkIGxvY2tzLgoKKiBOb3RlIHRvIGV4dGVuc2lvbiBhdXRob3JzOgoKRXhlY3V0b3JTdGFy dF9ob29rIGltcGxlbWVudGF0aW9ucyBtdXN0IHZlcmlmeSBwbGFuIHZhbGlkaXR5IGFmdGVyCmNh bGxpbmcgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpLiBGb3IgZXhhbXBsZToKCiAgICBpZiAocHJl dl9FeGVjdXRvclN0YXJ0KQogICAgICAgIHBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBlZmxhZ3MpOwogICAgZWxzZQogICAgICAgIHBsYW5fdmFsaWQgPSBzdGFuZGFy ZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKCiAgICBpZiAoIXBsYW5fdmFsaWQp CiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIDxleHRlbnNpb24tY29kZT4KCiAgICByZXR1cm4g dHJ1ZTsKCkV4dGVuc2lvbnMgdGhhdCBhY2Nlc3MgY2hpbGQgcmVsYXRpb25zLCBlc3BlY2lhbGx5 IHBydW5hYmxlIHBhcnRpdGlvbnMsCnZpYSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgbXVz dCBub3cgZW5zdXJlIHRoYXQgdGhlaXIgUlQgaW5kZXhlcwphcmUgcHJlc2VudCBpbiBlc191bnBy dW5lZF9yZWxpZHMsIGFzIGZhaWxpbmcgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4KYW4gZXJyb3Iu IFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGFmdGVyIHRoaXMgY2hhbmdlLCBvbmx5IHJlbGF0 aW9ucwppbiB0aGF0IHNldCBhcmUgbG9ja2VkLgoKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIChl YXJsaWVyIHZlcnNpb25zKQpSZXZpZXdlZC1ieTogRGF2aWQgUm93bGV5IChlYXJsaWVyIHZlcnNp b25zKQpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBPX21n QG1haWwuZ21haWwuY29tCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMg ICAgICAgICAgIHwgIDE2ICstCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jICAgfCAgMTYgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAg ICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAg ICAgICAgfCAgMjIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAg ICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAg IHwgICA5ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAg fCAgMTUgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwg IDM1ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwg MTMwICsrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAg ICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAg ICAgfCAgMzggKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAg ICAgfCAgIDggKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAg fCAgMjkgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8 ICAgNCArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwg IDUxICsrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8 IDIwNCArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAg ICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAg ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAg ICAgfCAgMzQgKystCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAg IHwgIDUwICsrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAg ICB8ICAgNCArLQogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgICAg IHwgICAzICstCiAuLi4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMg fCAgNjcgKysrKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAg ICB8IDI3MCArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL21lc29uLmJ1aWxkICB8ICAgMSArCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3Bl YyAgICAgICAgICAgICAgfCAgODAgKysrKysrCiAzMyBmaWxlcyBjaGFuZ2VkLCAxMDM5IGluc2Vy dGlvbnMoKyksIDk5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2Nh Y2hlZC1wbGFuLWludmFsLnNwZWMKCmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9h dXRvX2V4cGxhaW4uYyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4 IGYxYWQ4NzZlODIxLi44MmMxN2MwYTI4YSAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxh aW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWlu LmMKQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIEV4ZWN1dG9yUnVuX2hvb2tfdHlwZSBwcmV2X0V4 ZWN1dG9yUnVuID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckZpbmlzaF9ob29rX3R5cGUgcHJldl9F eGVjdXRvckZpbmlzaCA9IE5VTEw7CiBzdGF0aWMgRXhlY3V0b3JFbmRfaG9va190eXBlIHByZXZf RXhlY3V0b3JFbmQgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBleHBsYWluX0V4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgZXhwbGFpbl9F eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2 b2lkIGV4cGxhaW5fRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJCVNj YW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJCQkJCQl1aW50NjQgY291bnQpOwpAQCAtMjU2LDkg KzI1NiwxMSBAQCBfUEdfaW5pdCh2b2lkKQogLyoKICAqIEV4ZWN1dG9yU3RhcnQgaG9vazogc3Rh cnQgdXAgbG9nZ2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBl eHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7 CisJYm9vbAkJcGxhbl92YWxpZDsKKwogCS8qCiAJICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNo IHRvcC1sZXZlbCBzdGF0ZW1lbnQsIGRlY2lkZSB3aGV0aGVyIHdlJ2xsCiAJICogc2FtcGxlIHRo aXMgc3RhdGVtZW50LiAgSWYgbmVzdGVkLXN0YXRlbWVudCBleHBsYWluaW5nIGlzIGVuYWJsZWQs CkBAIC0yOTQsOSArMjk2LDEzIEBAIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAl9CiAKIAlpZiAocHJldl9FeGVjdXRvclN0YXJ0KQotCQlw cmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gcHJl dl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5kYXJkX0V4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRf RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisKKwkvKiBUaGUgcGxhbiBtYXkgaGF2 ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYg KCFwbGFuX3ZhbGlkKQorCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoYXV0b19leHBsYWluX2VuYWJs ZWQoKSkKIAl7CkBAIC0zMTQsNiArMzIwLDggQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN4dCk7CiAJCX0KIAl9CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggYmViZjgxMzRlYjAu LmI3MzUzODFjYjBiIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19z dGF0X3N0YXRlbWVudHMuYworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIHN0YXRpYyBQbGFubmVkU3RtdCAqcGdz c19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZywKIAkJCQkJCQkJIGludCBjdXJzb3JPcHRpb25zLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBi b3VuZFBhcmFtcyk7Ci1zdGF0aWMgdm9pZCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgcGdzc19FeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0 b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uLAogCQkJCQkJCSB1aW50NjQgY291bnQpOwpAQCAtOTg2LDEzICs5ODYsMTkgQEAgcGdzc19w bGFubmVyKFF1ZXJ5ICpwYXJzZSwKIC8qCiAgKiBFeGVjdXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVw IHRyYWNraW5nIGlmIG5lZWRlZAogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIHBnc3Nf RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29s CQlwbGFuX3ZhbGlkOworCiAJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJcHJldl9FeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJLyogVGhlIHBsYW4gbWF5IGhhdmUgYmVjb21lIGlu dmFsaWQgZHVyaW5nIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoKSAqLworCWlmICghcGxhbl92YWxp ZCkKKwkJcmV0dXJuIGZhbHNlOwogCiAJLyoKIAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJv LCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVudHMgZG91YmxlCkBAIC0xMDE1LDYgKzEwMjEs OCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KKworCXJldHVybiB0 cnVlOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCA5OWNiMjNjYjM0Ny4uMDkxZmJj MTJjYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBAIC01NTYsNyArNTU2LDcgQEAgQmVnaW5Db3B5 VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNz dGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8K LQkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3Nv dXJjZXRleHQsCisJCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5V TEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgp LAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5V TEwsIDApOwpAQCAtNTY2LDcgKzU2Niw4IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJICoKIAkJICogRXhlY3V0b3JTdGFydCBjb21wdXRlcyBhIHJlc3VsdCB0dXBkZXNjIGZv ciB1cwogCQkgKi8KLQkJRXhlY3V0b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CisJCWlm ICghRXhlY3V0b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCkpCisJCQllbG9nKEVSUk9SLCAi RXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKIAogCQl0dXBEZXNjID0gY3N0 YXRlLT5xdWVyeURlc2MtPnR1cERlc2M7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXgg MjNjZWNkOTljOWUuLjQ0YjQ2NjVjY2QzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTMz MiwxMiArMzMyLDEzIEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7 CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1 cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3Rh dGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5V TEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwg SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAK IAkJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlv biAqLwotCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSk7 CisJCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIEdldEludG9SZWxFRmxhZ3MoaW50bykp KQorCQkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7 CiAKIAkJLyogcnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24gKi8KIAkJRXhlY3V0b3JSdW4ocXVl cnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5k ZXggYzI0ZTY2ZjgyZTEuLmFmMjVjMTZkMjE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC01 MTksNyArNTE5LDggQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50 IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNl IG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywg cGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25lUGxhbihwbGFuLCBOVUxMLCBOVUxMLCAtMSwg aW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsCisJCQkJICAgcXVlcnlFbnYsCiAJCQkJICAg JnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAg ZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTY0MSw3ICs2NDIsOSBA QCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVk UGxhbiAqY3BsYW4sCisJCQkgICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVl cnlfaW5kZXgsCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJ ICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlv biwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKQEAgLTY5Nyw3ICs3MDAsNyBA QCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFubmVkc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlF bnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApAQCAtNzExLDggKzcxNCwxNyBAQCBFeHBsYWluT25l UGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJaWYgKGludG8pCiAJCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8p OwogCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1 dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCS8qIFByZXBhcmUg dGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwl7CisJ CUV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBx dWVyeV9pbmRleCk7CisJCUFzc2VydChxdWVyeURlc2MtPnBsYW5zdGF0ZSk7CisJfQorCWVsc2UK Kwl7CisJCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncykpCisJCQllbG9nKEVS Uk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKKwl9CiAKIAkvKiBF eGVjdXRlIHRoZSBwbGFuIGZvciBzdGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChlcy0+ YW5hbHl6ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5kZXggYmE1NDBlM2RlNWIuLjFiMjhk MjA0MTJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpAQCAtOTA3LDExICs5MDcsMTMgQEAg ZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCwgY29uc3QgY2hhciAqZmlsZW5hbWUp CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhz dG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2 ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKLQkJ CQlFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKKwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocWRlc2Ms IDApKQorCQkJCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVk bHkiKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDApOwog CQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRvckVuZChxZGVzYyk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9tYXR2aWV3LmMKaW5kZXggYzEyODE3MDkxZWQuLjBiZmJjNWNhNmRjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvbWF0dmlldy5jCkBAIC00MzgsMTIgKzQzOCwxMyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZp bGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNo b3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0 cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg TlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKIAkvKiBjYWxsIEV4ZWN1 dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIDApOworCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApKQor CQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKIAog CS8qIHJ1biB0aGUgcGxhbiAqLwogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5E aXJlY3Rpb24sIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IGU3YzgxNzFjMTAy Li40YzJhYzA0NTIyNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwpAQCAtMTE3LDYgKzEx Nyw3IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNv clN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJCQkJCSAgcXVlcnlTdHJpbmcsCiAJCQkJ CSAgQ01EVEFHX1NFTEVDVCwJLyogY3Vyc29yJ3MgcXVlcnkgaXMgYWx3YXlzIGEgU0VMRUNUICov CiAJCQkJCSAgbGlzdF9tYWtlMShwbGFuKSwKKwkJCQkJICBOVUxMLAogCQkJCQkgIE5VTEwpOwog CiAJLyotLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJl LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggODk4OWMwYzg4MmQuLmMw MjViMWY5ZjhjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0yMDIsNyArMjAyLDggQEAgRXhl Y3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJ CSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJ CQkgIGNwbGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSk7CiAK IAkvKgogCSAqIEZvciBDUkVBVEUgVEFCTEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5 IHRoYXQgdGhlIHByZXBhcmVkCkBAIC01ODIsNiArNTgzLDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVy eShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCiAJTWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0 IHBsYW5uZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJ aW50CQkJcXVlcnlfaW5kZXggPSAwOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNjU0LDcg KzY1Niw4IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBs Zmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAh PSBDTURfVVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlf c3RyaW5nLCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihw c3RtdCwgY3BsYW4sIGVudHJ5LT5wbGFuc291cmNlLCBxdWVyeV9pbmRleCwKKwkJCQkJCSAgIGlu dG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKIAkJCQkJ CSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpLAogCQkJ CQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIAkJZWxzZQpAQCAtNjY1 LDYgKzY2OCw4IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkvKiBTZXBhcmF0ZSBwbGFucyB3 aXRoIGFuIGFwcHJvcHJpYXRlIHNlcGFyYXRvciAqLwogCQlpZiAobG5leHQocGxhbl9saXN0LCBw KSAhPSBOVUxMKQogCQkJRXhwbGFpblNlcGFyYXRlUGxhbnMoZXMpOworCisJCXF1ZXJ5X2luZGV4 Kys7CiAJfQogCiAJaWYgKGVzdGF0ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCA3YTVmZmUz MmY2MC4uZjVmNjNjODlhODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTUwNDgsNiArNTA0 OCwyMSBAQCBBZnRlclRyaWdnZXJCZWdpblF1ZXJ5KHZvaWQpCiB9CiAKIAorLyogLS0tLS0tLS0t LQorICogQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSgpCisgKgorICogQ2FsbGVkIGJ5IHN0YW5kYXJk X0V4ZWN1dG9yRW5kKCkgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCBkdWUgdG8K KyAqIHRoZSBwbGFuIGJlY29taW5nIGludmFsaWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLgorICog LS0tLS0tLS0tLQorICovCit2b2lkCitBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KHZvaWQpCit7CisJ LyogUmV2ZXJ0IHRoZSBhY3Rpb25zIG9mIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkoKS4gKi8KKwlh ZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoLS07Cit9CisKKwogLyogLS0tLS0tLS0tLQogICogQWZ0 ZXJUcmlnZ2VyRW5kUXVlcnkoKQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCA2NDJkNjNiZTYxMy4u NDQ5YzYwNjhhZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTI4MCw2ICsyODAsMjggQEAgYXJlIHR5 cGljYWxseSByZXNldCB0byBlbXB0eSBvbmNlIHBlciB0dXBsZS4gIFBlci10dXBsZSBjb250ZXh0 cyBhcmUgdXN1YWxseQogYXNzb2NpYXRlZCB3aXRoIEV4cHJDb250ZXh0cywgYW5kIGNvbW1vbmx5 IGVhY2ggUGxhblN0YXRlIG5vZGUgaGFzIGl0cyBvd24KIEV4cHJDb250ZXh0IHRvIGV2YWx1YXRl IGl0cyBxdWFsIGFuZCB0YXJnZXRsaXN0IGV4cHJlc3Npb25zIGluLgogCitSZWxhdGlvbiBMb2Nr aW5nCistLS0tLS0tLS0tLS0tLS0tCisKK1R5cGljYWxseSwgd2hlbiB0aGUgZXhlY3V0b3IgaW5p dGlhbGl6ZXMgYSBwbGFuIHRyZWUgZm9yIGV4ZWN1dGlvbiwgaXQgZG9lc24ndAorbG9jayBub24t aW5kZXggcmVsYXRpb25zIGlmIHRoZSBwbGFuIHRyZWUgaXMgZnJlc2hseSBnZW5lcmF0ZWQgYW5k IG5vdCBkZXJpdmVkCitmcm9tIGEgQ2FjaGVkUGxhbi4gVGhpcyBpcyBiZWNhdXNlIHN1Y2ggbG9j a3MgaGF2ZSBhbHJlYWR5IGJlZW4gZXN0YWJsaXNoZWQKK2R1cmluZyB0aGUgcXVlcnkncyBwYXJz aW5nLCByZXdyaXRpbmcsIGFuZCBwbGFubmluZyBwaGFzZXMuIEhvd2V2ZXIsIHdpdGggYQorY2Fj aGVkIHBsYW4gdHJlZSwgc29tZSByZWxhdGlvbnMgbWF5IHJlbWFpbiB1bmxvY2tlZC4gVGhlIGZ1 bmN0aW9uCitBY3F1aXJlRXhlY3V0b3JMb2NrcygpIG9ubHkgbG9ja3MgdW5wcnVuYWJsZSByZWxh dGlvbnMgaW4gdGhlIHBsYW4sIGRlZmVycmluZwordGhlIGxvY2tpbmcgb2YgcHJ1bmFibGUgb25l cyB0byBleGVjdXRvciBpbml0aWFsaXphdGlvbi4gVGhpcyBhdm9pZHMKK3VubmVjZXNzYXJ5IGxv Y2tpbmcgb2YgcmVsYXRpb25zIHRoYXQgd2lsbCBiZSBwcnVuZWQgZHVyaW5nICJpbml0aWFsIiBy dW50aW1lCitwcnVuaW5nIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuCisKK1RoaXMgYXBwcm9h Y2ggY3JlYXRlcyBhIHdpbmRvdyB3aGVyZSBhIGNhY2hlZCBwbGFuIHRyZWUgd2l0aCBjaGlsZCB0 YWJsZXMKK2NvdWxkIGJlY29tZSBvdXRkYXRlZCBpZiBhbm90aGVyIGJhY2tlbmQgbW9kaWZpZXMg dGhlc2UgdGFibGVzIGJlZm9yZQorRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBsb2NrcyB0aGVtLiBB cyBhIHJlc3VsdCwgdGhlIGV4ZWN1dG9yIGhhcyB0aGUgYWRkZWQgZHV0eQordG8gdmVyaWZ5IHRo ZSBwbGFuIHRyZWUncyB2YWxpZGl0eSB3aGVuZXZlciBpdCBsb2NrcyBhIGNoaWxkIHRhYmxlIGFm dGVyCitkb2luZyBpbml0aWFsIHBydW5pbmcuIFRoaXMgdmFsaWRhdGlvbiBpcyBkb25lIGJ5IGNo ZWNraW5nIHRoZSBDYWNoZWRQbGFuLmlzX3ZhbGlkCitmbGFnLiBJZiB0aGUgcGxhbiB0cmVlIGlz IG91dGRhdGVkIChpc192YWxpZCA9IGZhbHNlKSwgdGhlIGV4ZWN1dG9yIHN0b3BzCitmdXJ0aGVy IGluaXRpYWxpemF0aW9uLCBjbGVhbnMgdXAgYW55dGhpbmcgaW4gRVN0YXRlIHRoYXQgd291bGQg aGF2ZSBiZWVuCithbGxvY2F0ZWQgdXAgdG8gdGhhdCBwb2ludCwgYW5kIHJldHJpZXMgZXhlY3V0 aW9uIGFmdGVyIHJlY3JlYXRpbmcgdGhlCitpbnZhbGlkIHBsYW4gaW4gdGhlIENhY2hlZFBsYW4u CiAKIFF1ZXJ5IFByb2Nlc3NpbmcgQ29udHJvbCBGbG93CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpAQCAtMjg4LDExICszMTAsMTMgQEAgVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9s IGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAogCUNyZWF0ZVF1ZXJ5RGVzYwogCi0J RXhlY3V0b3JTdGFydAorCUV4ZWN1dG9yU3RhcnQgb3IgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4K IAkJQ3JlYXRlRXhlY3V0b3JTdGF0ZQogCQkJY3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAotCQlz d2l0Y2ggdG8gcGVyLXF1ZXJ5IGNvbnRleHQgdG8gcnVuIEV4ZWNJbml0Tm9kZQorCQlzd2l0Y2gg dG8gcGVyLXF1ZXJ5IGNvbnRleHQgdG8gcnVuIEV4ZWNEb0luaXRpYWxQcnVuaW5nIGFuZCBFeGVj SW5pdE5vZGUKIAkJQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeQorCQlFeGVjRG9Jbml0aWFsUHJ1bmlu ZworCQkJZG9lcyBpbml0aWFsIHBydW5pbmcgYW5kIGxvY2tzIHN1cnZpdmluZyBwYXJ0aXRpb25z IGlmIG5lZWRlZAogCQlFeGVjSW5pdE5vZGUgLS0tIHJlY3Vyc2l2ZWx5IHNjYW5zIHBsYW4gdHJl ZQogCQkJRXhlY0luaXROb2RlCiAJCQkJcmVjdXJzZSBpbnRvIHN1YnNpZGlhcnkgbm9kZXMKQEAg LTMxNiw3ICszNDAsMTIgQEAgVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1 bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAogCUZyZWVRdWVyeURlc2MKIAotUGVyIGFib3ZlIGNvbW1l bnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9yIEV4ZWNFbmROb2RlIHRvIGZyZWUgYW55 CitBcyBtZW50aW9uZWQgaW4gdGhlICJSZWxhdGlvbiBMb2NraW5nIiBzZWN0aW9uLCBpZiB0aGUg cGxhbiB0cmVlIGlzIGZvdW5kIHRvCitiZSBzdGFsZSBhZnRlciBsb2NraW5nIHBhcnRpdGlvbnMg aW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwgdGhlIGNvbnRyb2wgaXMKK2ltbWVkaWF0ZWx5IHJl dHVybmVkIHRvIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCksIHdoaWNoIHdpbGwgY3JlYXRlIGEg bmV3IHBsYW4KK3RyZWUgYW5kIHBlcmZvcm0gdGhlIHN0ZXBzIHN0YXJ0aW5nIGZyb20gQ3JlYXRl RXhlY3V0b3JTdGF0ZSgpIGFnYWluLgorCitQZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJl YWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsgaXQnbGwg YWxsIGdvIGF3YXkgaW4gRnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAgSG93ZXZlciwgd2UgZG8g bmVlZCB0bwogYmUgY2FyZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVyIHBpbnMs IGV0Yywgc28gd2UgZG8gbmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0ZSB0cmVlIHRvIGZpbmQg dGhlc2Ugc29ydHMgb2YgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNWI5 ODkwNzQyMDMuLmVjMjM4N2Q3ZjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTU1LDEx ICs1NSwxMyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUg InBnc3RhdC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1 dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgorI2luY2x1 ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUg InV0aWxzL3NuYXBtZ3IuaCIKIApAQCAtMTE0LDExICsxMTYsMTYgQEAgc3RhdGljIHZvaWQgRXZh bFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKiBn ZXQgY29udHJvbCB3aGVuIEV4ZWN1dG9yU3RhcnQgaXMgY2FsbGVkLiAgU3VjaCBhIHBsdWdpbiB3 b3VsZAogICogbm9ybWFsbHkgY2FsbCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KCkuCiAgKgorICog UmV0dXJuIHZhbHVlIGluZGljYXRlcyBpZiB0aGUgcGxhbiBoYXMgYmVlbiBpbml0aWFsaXplZCBz dWNjZXNzZnVsbHkgc28KKyAqIHRoYXQgcXVlcnlEZXNjLT5wbGFuc3RhdGUgY29udGFpbnMgYSB2 YWxpZCBQbGFuU3RhdGUgdHJlZS4gIEl0IG1heSBub3QKKyAqIGlmIHRoZSBwbGFuIGdvdCBpbnZh bGlkYXRlZCBkdXJpbmcgSW5pdFBsYW4oKS4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotdm9pZAorYm9vbAog RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29s CQlwbGFuX3ZhbGlkOworCiAJLyoKIAkgKiBJbiBzb21lIGNhc2VzIChlLmcuIGFuIEVYRUNVVEUg c3RhdGVtZW50IG9yIGFuIGV4ZWN1dGUgbWVzc2FnZSB3aXRoIHRoZQogCSAqIGV4dGVuZGVkIHF1 ZXJ5IHByb3RvY29sKSB0aGUgcXVlcnlfaWQgd29uJ3QgYmUgcmVwb3J0ZWQsIHNvIGRvIGl0IG5v dy4KQEAgLTEzMCwxMiArMTM3LDE0IEBAIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJcGdzdGF0X3JlcG9ydF9xdWVyeV9pZChxdWVyeURlc2MtPnBsYW5u ZWRzdG10LT5xdWVyeUlkLCBmYWxzZSk7CiAKIAlpZiAoRXhlY3V0b3JTdGFydF9ob29rKQotCQko KkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9 ICgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3Rh bmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCXJldHVybiBwbGFu X3ZhbGlkOwogfQogCi12b2lkCitib29sCiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUVTdGF0ZQkgICAqZXN0YXRlOwpAQCAtMjU5 LDYgKzI2OCw2NCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCUluaXRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiBFeGVjUGxhblN0aWxsVmFsaWQo cXVlcnlEZXNjLT5lc3RhdGUpOworfQorCisvKgorICogRXhlY3V0b3JTdGFydENhY2hlZFBsYW4K KyAqCQlTdGFydCBleGVjdXRpb24gZm9yIGEgZ2l2ZW4gcXVlcnkgaW4gdGhlIENhY2hlZFBsYW5T b3VyY2UsIHJlcGxhbm5pbmcKKyAqCQlpZiB0aGUgcGxhbiBpcyBpbnZhbGlkYXRlZCBkdWUgdG8g ZGVmZXJyZWQgbG9ja3MgdGFrZW4gZHVyaW5nIHRoZQorICoJCXBsYW4ncyBpbml0aWFsaXphdGlv bgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBjYXNlcyB3aGVyZSB0aGUgQ2FjaGVkUGxh biBnaXZlbiBpbiBxdWVyeURlc2MtPmNwbGFuCisgKiBtaWdodCBiZWNvbWUgaW52YWxpZCBkdXJp bmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbGFuIGdpdmVuIGluCisgKiBxdWVyeURlc2Mt PnBsYW5uZWRzdG10LCBwYXJ0aWN1bGFybHkgd2hlbiBwcnVuYWJsZSByZWxhdGlvbnMgaW4gaXQg YXJlCisgKiBsb2NrZWQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcuIElmIHRoZSBs b2NrcyBpbnZhbGlkYXRlIHRoZSBwbGFuLAorICogdGhlIGZ1bmN0aW9uIGNhbGxzIFVwZGF0ZUNh Y2hlZFBsYW4oKSB0byByZXBsYW4gYWxsIHF1ZXJpZXMgaW4gdGhlCisgKiBDYWNoZWRQbGFuLCBh bmQgdGhlbiByZXRyaWVzIGluaXRpYWxpemF0aW9uLgorICoKKyAqIFRoZSBmdW5jdGlvbiByZXBl YXRzIHRoZSBwcm9jZXNzIHVudGlsIEV4ZWN1dG9yU3RhcnQoKSBzdWNjZXNzZnVsbHkKKyAqIGlu aXRpYWxpemVzIHRoZSBwbGFuLCB0aGF0IGlzIHdpdGhvdXQgdGhlIENhY2hlZFBsYW4gYmVjb21p bmcgaW52YWxpZC4KKyAqLwordm9pZAorRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAorCQkJCQkJaW50IHF1ZXJ5X2luZGV4KQoreworCWlmICh1bmxpa2VseShxdWVyeURlc2Mt PmNwbGFuID09IE5VTEwpKQorCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydENhY2hlZFBsYW4o KTogbWlzc2luZyBDYWNoZWRQbGFuIik7CisJaWYgKHVubGlrZWx5KHBsYW5zb3VyY2UgPT0gTlVM TCkpCisJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpOiBtaXNzaW5nIENh Y2hlZFBsYW5Tb3VyY2UiKTsKKworCS8qCisJICogTG9vcCBhbmQgcmV0cnkgd2l0aCBhbiB1cGRh dGVkIHBsYW4gdW50aWwgbm8gZnVydGhlciBpbnZhbGlkYXRpb24KKwkgKiBvY2N1cnMuCisJICov CisJd2hpbGUgKDEpCisJeworCQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3Mp KQorCQl7CisJCQkvKgorCQkJICogQ2xlYW4gdXAgdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRl IGJlZm9yZSBjcmVhdGluZyB0aGUgbmV3CisJCQkgKiBwbGFuIHRvIHJldHJ5IEV4ZWN1dG9yU3Rh cnQoKS4gIE1hcmsgZXhlY3V0aW9uIGFzIGFib3J0ZWQgdG8KKwkJCSAqIGVuc3VyZSB0aGF0IEFG VEVSIHRyaWdnZXIgc3RhdGUgaXMgcHJvcGVybHkgcmVzZXQuCisJCQkgKi8KKwkJCXF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19hYm9ydGVkID0gdHJ1ZTsKKwkJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7 CisKKwkJCS8qIFJldHJ5IEV4ZWN1dG9yU3RhcnQoKSB3aXRoIGFuIHVwZGF0ZWQgcGxhbiB0cmVl LiAqLworCQkJcXVlcnlEZXNjLT5wbGFubmVkc3RtdCA9IFVwZGF0ZUNhY2hlZFBsYW4ocGxhbnNv dXJjZSwgcXVlcnlfaW5kZXgsCisJCQkJCQkJCQkJCQkJICBxdWVyeURlc2MtPnF1ZXJ5RW52KTsK KwkJfQorCQllbHNlCisKKwkJCS8qCisJCQkgKiBFeGl0IHRoZSBsb29wIGlmIHRoZSBwbGFuIGlz IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseSBhbmQgbm8KKwkJCSAqIHNpbnZhbCBtZXNzYWdlcyB3 ZXJlIHJlY2VpdmVkIHRoYXQgaW52YWxpZGF0ZWQgdGhlIENhY2hlZFBsYW4uCisJCQkgKi8KKwkJ CWJyZWFrOworCX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzE3LDYgKzM4NCw3IEBAIHN0YW5kYXJk X0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCWVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ ZXN0YXRlOwogCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKKwlBc3NlcnQoIWVzdGF0ZS0+ZXNf YWJvcnRlZCk7CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VY UExBSU5fT05MWSkpOwogCiAJLyogY2FsbGVyIG11c3QgZW5zdXJlIHRoZSBxdWVyeSdzIHNuYXBz aG90IGlzIGFjdGl2ZSAqLwpAQCAtNDIzLDggKzQ5MSwxMSBAQCBzdGFuZGFyZF9FeGVjdXRvckZp bmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOwogCUFz c2VydCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsK IAotCS8qIFRoaXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4ZWN1dG9y IGluc3RhbmNlICovCi0JQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkKTsKKwkvKgorCSAqIFRo aXMgc2hvdWxkIGJlIHJ1biBvbmNlIGFuZCBvbmx5IG9uY2UgcGVyIEV4ZWN1dG9yIGluc3RhbmNl IGFuZCBuZXZlcgorCSAqIGlmIHRoZSBleGVjdXRpb24gd2FzIGFib3J0ZWQuCisJICovCisJQXNz ZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVkICYmICFlc3RhdGUtPmVzX2Fib3J0ZWQpOwogCiAJLyog U3dpdGNoIGludG8gcGVyLXF1ZXJ5IG1lbW9yeSBjb250ZXh0ICovCiAJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CkBAIC00ODcsMTEgKzU1 OCwxMCBAQCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAkJCQkJ CQkJCQkJIChQZ1N0YXRfQ291bnRlcikgZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX2xhdW5j aGVkKTsKIAogCS8qCi0JICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1 bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUuIFRoaXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJl Y2F1c2UgRXhlY3V0b3JGaW5pc2ggaXMgbmV3IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBt aWdodCBmb3JnZXQgdG8gY2FsbCBpdC4KKwkgKiBDaGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdh cyBjYWxsZWQsIHVubGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlv biB3YXMgYWJvcnRlZC4KIAkgKi8KLQlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fAorCUFz c2VydChlc3RhdGUtPmVzX2ZpbmlzaGVkIHx8IGVzdGF0ZS0+ZXNfYWJvcnRlZCB8fAogCQkgICAo ZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkpOwogCiAJLyoK QEAgLTUwNSw2ICs1NzUsMTQgQEAgc3RhbmRhcmRfRXhlY3V0b3JFbmQoUXVlcnlEZXNjICpxdWVy eURlc2MpCiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfc25hcHNob3QpOwogCVVucmVn aXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QpOwogCisJLyoKKwkg KiBSZXNldCBBRlRFUiB0cmlnZ2VyIG1vZHVsZSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBh Ym9ydGVkLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2Fib3J0ZWQgJiYKKwkJIShlc3RhdGUtPmVz X3RvcF9lZmxhZ3MgJgorCQkgIChFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUyB8IEVYRUNfRkxBR19F WFBMQUlOX09OTFkpKSkKKwkJQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSgpOworCiAJLyoKIAkgKiBN dXN0IHN3aXRjaCBvdXQgb2YgY29udGV4dCBiZWZvcmUgZGVzdHJveWluZyBpdAogCSAqLwpAQCAt NjAzLDYgKzY4MSwyMSBAQCBFeGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBM aXN0ICpydGVwZXJtaW5mb3MsCiAJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkg JiYKIAkJCQkJcnRlLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICog RW5zdXJlIHRoYXQgd2UgaGF2ZSBhdCBsZWFzdCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRp b25zCisJCQkgKiB3aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgor CQkJICogU2tpcCB0aGlzIGNoZWNrIGluIGEgcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mg d29uJ3QgYmUKKwkJCSAqIHRha2VuIHVudGlsIEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4g aW5pdGlhbGl6YXRpb24uCisJCQkgKgorCQkJICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygp IGluIGEgcGFyYWxsZWwgd29ya2VyIG1heSBiZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNo ZWNrcyBkb25lIGluIHRoZSBsZWFkZXIgcHJvY2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJl IHJldmlld2VkIHRvIGVuc3VyZSBpdOKAmXMgbmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQo SXNQYXJhbGxlbFdvcmtlcigpIHx8CisJCQkJICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUo cnRlLT5yZWxpZCwgQWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJ KHZvaWQpIGdldFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1h bnktdG8tb25lIG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJl cihydGUtPnBlcm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CkBAIC04MjgsNiArOTIxLDEyIEBAIEV4 ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAgKgogICoJCUlu aXRpYWxpemVzIHRoZSBxdWVyeSBwbGFuOiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAg KgkJYW5kIHN0YXJ0IHVwIHRoZSBydWxlIG1hbmFnZXIKKyAqCisgKgkJSWYgdGhlIHBsYW4gb3Jp Z2luYXRlcyBmcm9tIGEgQ2FjaGVkUGxhbiAoZ2l2ZW4gaW4gcXVlcnlEZXNjLT5jcGxhbiksCisg KgkJaXQgY2FuIGJlY29tZSBpbnZhbGlkIGR1cmluZyBydW50aW1lICJpbml0aWFsIiBwcnVuaW5n IHdoZW4gdGhlCisgKgkJcmVtYWluaW5nIHNldCBvZiBsb2NrcyBpcyB0YWtlbi4gIFRoZSBmdW5j dGlvbiByZXR1cm5zIGVhcmx5IGluIHRoYXQKKyAqCQljYXNlIHdpdGhvdXQgaW5pdGlhbGl6aW5n IHRoZSBwbGFuLCBhbmQgdGhlIGNhbGxlciBpcyBleHBlY3RlZCB0bworICoJCXJldHJ5IHdpdGgg YSBuZXcgdmFsaWQgcGxhbi4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogc3RhdGljIHZvaWQKQEAgLTgzNSw2 ICs5MzQsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsK IAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10OworCUNhY2hlZFBsYW4gKmNh Y2hlZHBsYW4gPSBxdWVyeURlc2MtPmNwbGFuOwogCVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3Rt dC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7 CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKQEAgLTg1NSw2ICs5NTUs NyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQkJICAg Ym1zX2NvcHkocGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKIAogCWVzdGF0ZS0+ZXNf cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBjYWNo ZWRwbGFuOwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0 UHJ1bmVJbmZvczsKIAogCS8qCkBAIC04NjUsOSArOTY2LDE1IEBAIEluaXRQbGFuKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNf cGFydF9wcnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0cyBjb3JyZXNwb25kCiAJICogdG8gZWFj aCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRz IGxpc3QgaXMKIAkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgorCSAqCisJICog VGhpcyB3aWxsIGFsc28gYWRkIHRoZSBSVCBpbmRleGVzIG9mIHN1cnZpdmluZyBsZWFmIHBhcnRp dGlvbnMgdG8KKwkgKiBlc191bnBydW5lZF9yZWxpZHMuCiAJICovCiAJRXhlY0RvSW5pdGlhbFBy dW5pbmcoZXN0YXRlKTsKIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybjsKKwogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4ZWNSb3dNYXJrIGFycmF5IGZyb20g dGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCiAJICovCkBAIC0yODY4LDYgKzI5NzUsOSBAQCBF dmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAq IHRoZSBzbmFwc2hvdCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5 IG5lZWQgdGhlaXIgb3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0 dXBsZSB0YWJsZSwgZXNfcGFyYW1fZXhlY192YWxzLAogCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRj LgorCSAqCisJICogZXNfY2FjaGVkcGxhbiBpcyBub3QgY29waWVkIGJlY2F1c2UgRVBRIHBsYW4g ZXhlY3V0aW9uIGRvZXMgbm90IGFjcXVpcmUKKwkgKiBhbnkgbmV3IGxvY2tzIHRoYXQgY291bGQg aW52YWxpZGF0ZSB0aGUgQ2FjaGVkUGxhbi4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9u ID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50 ZXN0YXRlLT5lc19zbmFwc2hvdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXgg MTM0ZmY2MmY1Y2IuLjFiZWRiODA4MzY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwpAQCAtMTI1OCw4ICsxMjU4LDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9j ICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0g UmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2Mg Zm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1 ZXJ5LiAgV2UgcGFzcyBOVUxMIGZvciBjYWNoZWRwbGFuLCBiZWNhdXNlCisJICogd2UgZG9uJ3Qg aGF2ZSBhIHBvaW50ZXIgdG8gdGhlIENhY2hlZFBsYW4gaW4gdGhlIGxlYWRlcidzIHByb2Nlc3Mu IEl0J3MKKwkgKiBmaW5lIGJlY2F1c2UgdGhlIG9ubHkgcmVhc29uIHRoZSBleGVjdXRvciBuZWVk cyB0byBzZWUgaXQgaXMgdG8gZGVjaWRlCisJICogaWYgaXQgc2hvdWxkIHRha2UgbG9ja3Mgb24g Y2VydGFpbiByZWxhdGlvbnMsIGJ1dCBwYXJhbGxlbCB3b3JrZXJzCisJICogYWx3YXlzIHRha2Ug bG9ja3MgYW55d2F5LgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJ CQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFw c2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVM TCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0NDAsNyArMTQ0Nyw4IEBAIFBhcmFsbGVsUXVl cnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykKIAogCS8qIFN0YXJ0IHVwIHRo ZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+ aml0X2ZsYWdzOwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBmcGVzLT5lZmxhZ3MpOworCWlm ICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGZwZXMtPmVmbGFncykpCisJCWVsb2coRVJST1Is ICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCiAJLyogU3BlY2lhbCBl eGVjdXRvciBpbml0aWFsaXphdGlvbiBzdGVwcyBmb3IgcGFyYWxsZWwgd29ya2VycyAqLwogCXF1 ZXJ5RGVzYy0+cGxhbnN0YXRlLT5zdGF0ZS0+ZXNfcXVlcnlfZHNhID0gYXJlYTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCBiNmU4OWQwNjIwZC4uNDMyZWVhZjkwMzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs dWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFy dHBydW5lLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJz dG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9s c3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKQEAgLTE3NjgsNyArMTc2 OSw4IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0 dHJNYXAgKmF0dHJNYXApCiAgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZzoKICAqCQlQZXJmb3JtIHJ1 bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5lIHRoZSBz ZXQKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZHVy aW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgotICoJCWFsbCBwbGFuIG5vZGVzIHRoYXQgY29udGFpbiBh IFBhcnRpdGlvblBydW5lSW5mby4KKyAqCQlhbGwgcGxhbiBub2RlcyB0aGF0IGNvbnRhaW4gYSBQ YXJ0aXRpb25QcnVuZUluZm8uICBUaGlzIGFsc28gbG9ja3MgdGhlCisgKgkJbGVhZiBwYXJ0aXRp b25zIHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaWYgbmVlZGVkLgogICoKICAq IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmc6CiAgKgkJVXBkYXRlcyB0aGUgUGFydGl0aW9u UHJ1bmVTdGF0ZSBmb3VuZCBhdCBnaXZlbiBwYXJ0X3BydW5lX2luZGV4IGluCkBAIC0xNzg5LDEx ICsxNzkxLDEzIEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xu b3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCisKIC8qCiAg KiBFeGVjRG9Jbml0aWFsUHJ1bmluZwogICoJCVBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1 bmluZywgaWYgbmVjZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNldAogICoJCW9mIGNoaWxkIHN1 Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkg Zm9yCi0gKgkJcGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFydGl0aW9uIHBydW5pbmcuCisgKgkJ cGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFydGl0aW9uIHBydW5pbmcuICBUaGlzIGFsc28gbG9j a3MgdGhlIGxlYWYKKyAqCQlwYXJ0aXRpb25zIHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUgaW5pdGlh bGl6ZWQgaWYgbmVlZGVkLgogICoKICAqIFRoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgb3ZlciBlYWNo IFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgogICogZXN0YXRlLT5lc19wYXJ0X3BydW5lX2lu Zm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlvblBydW5lU3RhdGUKQEAg LTE4MTYsNiArMTgyMCw3IEBAIHZvaWQKIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0 YXRlKQogewogCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAgKmxvY2tlZF9yZWxpZHMgPSBOSUw7 CiAKIAlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCiAJewpAQCAtMTg0 MSwxMSArMTg0Niw0MCBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJ ZWxzZQogCQkJdmFsaWRzdWJwbGFuX3J0aXMgPSBhbGxfbGVhZnBhcnRfcnRpczsKIAorCQlpZiAo RXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoZXN0YXRlKSkKKwkJeworCQkJaW50CQkJcnRpbmRleCA9 IC0xOworCisJCQl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIodmFsaWRzdWJwbGFu X3J0aXMsCisJCQkJCQkJCQkJCSAgcnRpbmRleCkpID49IDApCisJCQl7CisJCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChydGluZGV4LCBlc3RhdGUpOworCisJCQkJQXNzZXJ0 KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gJiYKKwkJCQkJICAgcnRlLT5yZWxsb2NrbW9k ZSAhPSBOb0xvY2spOworCQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxv Y2ttb2RlKTsKKwkJCQlsb2NrZWRfcmVsaWRzID0gbGFwcGVuZF9pbnQobG9ja2VkX3JlbGlkcywg cnRpbmRleCk7CisJCQl9CisJCX0KIAkJZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNf YWRkX21lbWJlcnMoZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIHZh bGlkc3VicGxhbl9ydGlzKTsKIAkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBw ZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAogCQkJCQkJCQkJCQkJdmFsaWRzdWJw bGFucyk7CiAJfQorCisJLyoKKwkgKiBSZWxlYXNlIHRoZSB1c2VsZXNzIGxvY2tzIGlmIHRoZSBw bGFuIHdvbid0IGJlIGV4ZWN1dGVkLiAgVGhpcyBpcyB0aGUKKwkgKiBzYW1lIGFzIHdoYXQgQ2hl Y2tDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgZG9lcy4KKwkgKi8KKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJZm9yZWFjaChsYywgbG9ja2VkX3JlbGlkcykKKwkJ eworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhlY19ydF9mZXRjaChsZmlyc3RfaW50KGxjKSwg ZXN0YXRlKTsKKworCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2Nr bW9kZSk7CisJCX0KKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGM5 Yzc1NmY4NTY4Li5mYTU1YjRjNjU0MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE0 Nyw2ICsxNDcsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRlKHZvaWQpCiAJZXN0YXRlLT5lc190b3Bf ZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1lbnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmlu aXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2Fib3J0ZWQgPSBmYWxzZTsKIAogCWVzdGF0ZS0+ ZXNfZXhwcmNvbnRleHRzID0gTklMOwogCkBAIC04MTMsNiArODE0LDEwIEBAIEV4ZWNJbml0UmFu Z2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9z LAogICoJCU9wZW4gdGhlIFJlbGF0aW9uIGZvciBhIHJhbmdlIHRhYmxlIGVudHJ5LCBpZiBub3Qg YWxyZWFkeSBkb25lCiAgKgogICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3NlZCBpbiBFeGVj RW5kUGxhbigpLgorICoKKyAqIE5vdGU6IFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCAncnRp JyByZWZlcnMgdG8gYW4gdW5wcnVuZWQgcmVsYXRpb24KKyAqIChpLmUuLCBpdCBpcyBhIG1lbWJl ciBvZiBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykgYmVmb3JlIGNhbGxpbmcgdGhpcworICog ZnVuY3Rpb24uIEF0dGVtcHRpbmcgdG8gb3BlbiBhIHBydW5lZCByZWxhdGlvbiB3aWxsIHJlc3Vs dCBpbiBhbiBlcnJvci4KICAqLwogUmVsYXRpb24KIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24o RVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKQEAgLTgyMSw2ICs4MjYsOSBAQCBFeGVjR2V0UmFu Z2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAKIAlBc3NlcnQocnRp ID4gMCAmJiBydGkgPD0gZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplKTsKIAorCWlmICghYm1z X2lzX21lbWJlcihydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKSkKKwkJZWxvZyhFUlJP UiwgInRyeWluZyB0byBvcGVuIGEgcHJ1bmVkIHJlbGF0aW9uIik7CisKIAlyZWwgPSBlc3RhdGUt PmVzX3JlbGF0aW9uc1tydGkgLSAxXTsKIAlpZiAocmVsID09IE5VTEwpCiAJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYwppbmRleCA3NTdmODA2OGUyMS4uNmFhOGU5YzRkOGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jCkBAIC04NDAsNiArODQwLDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0 aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCWRlc3QgPSBOb25l X1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlEZXNjKGVzLT5zdG10LAorCQkJCQkJ CSBOVUxMLAogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3Qo KSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApAQCAtODY0LDcgKzg2NSw4IEBAIHBvc3RxdWVs X3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQog CQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CiAJCWVsc2UKIAkJCWVmbGFncyA9 IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLwotCQlFeGVjdXRvclN0 YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdz KSkKKwkJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIp OwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCBlY2Iy ZTRjY2FhMS4uMzI4ODM5NmRlZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC03MCw3ICs3MCw4IEBAIHN0 YXRpYyBpbnQJX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVj dXRlT3B0aW9ucyAqb3B0aW9ucywKIHN0YXRpYyBQYXJhbUxpc3RJbmZvIF9TUElfY29udmVydF9w YXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkJCSBEYXR1bSAqVmFsdWVz LCBjb25zdCBjaGFyICpOdWxscyk7CiAKLXN0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCk7CitzdGF0aWMg aW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMs IHVpbnQ2NCB0Y291bnQsCisJCQkJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQg cXVlcnlfaW5kZXgpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFy Zyk7CiAKQEAgLTE2ODUsNyArMTY4Niw4IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25z dCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJ CQkgIHBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgc3RtdF9saXN0LAotCQkJCQkgIGNw bGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJICBwbGFuc291cmNlKTsKIAogCS8qCiAJICogU2V0 IHVwIG9wdGlvbnMgZm9yIHBvcnRhbC4gIERlZmF1bHQgU0NST0xMIHR5cGUgaXMgY2hvc2VuIHRo ZSBzYW1lIHdheQpAQCAtMjUwMCw2ICsyNTAyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxh blB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEpOwog CQlMaXN0CSAgICpzdG10X2xpc3Q7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcXVlcnlf aW5kZXggPSAwOwogCiAJCXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlf c3RyaW5nOwogCkBAIC0yNjkwLDE0ICsyNjkzLDE2IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBs YW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJCXNuYXAg PSBJbnZhbGlkU25hcHNob3Q7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAor CQkJCQkJCQkJCWNwbGFuLAogCQkJCQkJCQkJCXBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZywKIAkJ CQkJCQkJCQlzbmFwLCBjcm9zc2NoZWNrX3NuYXBzaG90LAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJ CQkJCQkJb3B0aW9ucy0+cGFyYW1zLAogCQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYs CiAJCQkJCQkJCQkJMCk7Ci0JCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dl cnMsCi0JCQkJCQkJCSAgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisKKwkJCQly ZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywgY2FuU2V0VGFnID8gb3B0aW9u cy0+dGNvdW50IDogMCwKKwkJCQkJCQkJICBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAJCQkJ RnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9CiAJCQllbHNlCkBAIC0yNzk0LDYgKzI3OTksOCBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJCW15X3JlcyA9IHJlczsKIAkJCQlnb3RvIGZhaWw7CiAJCQl9CisK KwkJCXF1ZXJ5X2luZGV4Kys7CiAJCX0KIAogCQkvKiBEb25lIHdpdGggdGhpcyBwbGFuLCBzbyBy ZWxlYXNlIHJlZmNvdW50ICovCkBAIC0yODcxLDcgKzI4NzgsOCBAQCBfU1BJX2NvbnZlcnRfcGFy YW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0KIAogc3RhdGljIGludAotX1NQSV9wcXVl cnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3Vu dCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMs IHVpbnQ2NCB0Y291bnQsCisJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcXVl cnlfaW5kZXgpCiB7CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CiAJ aW50CQkJZWZsYWdzOwpAQCAtMjkyNyw3ICsyOTM1LDE2IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCiAJZWxzZQog CQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKIAotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOworCWlmIChxdWVyeURlc2MtPmNwbGFuKQorCXsKKwkJRXhlY3V0b3JT dGFydENhY2hlZFBsYW4ocXVlcnlEZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4 KTsKKwkJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJaWYg KCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKSkKKwkJCWVsb2coRVJST1IsICJFeGVj dXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOworCX0KIAogCUV4ZWN1dG9yUnVuKHF1 ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHRjb3VudCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpp bmRleCA1NjU1MzQ4YTJlMi4uZjYwZjI3ODViYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMjQs NiArMTIyNCw3IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykK IAkJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkJICBjb21tYW5kVGFnLAogCQkJCQkJICBwbGFu dHJlZV9saXN0LAorCQkJCQkJICBOVUxMLAogCQkJCQkJICBOVUxMKTsKIAogCQkvKgpAQCAtMjAy NSw3ICsyMDI2LDggQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdl KQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwc3JjLT5jb21tYW5kVGFnLAogCQkJCQkg IGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAorCQkJCQkg IHBzcmMpOwogCiAJLyogRG9uZSB3aXRoIHRoZSBzbmFwc2hvdCB1c2VkIGZvciBwYXJhbWV0ZXIg SS9PIGFuZCBwYXJzaW5nL3BsYW5uaW5nICovCiAJaWYgKHNuYXBzaG90X3NldCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5j CmluZGV4IDZmMjI0OTYzMDVhLi5kZWEyNDQ1M2E2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2ICsx OSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3By ZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdfdHJhY2UuaCIKQEAgLTM2LDYgKzM3LDkgQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxM OwogCiAKIHN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCQkJ CSBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAorCQkJCQkJIGludCBxdWVyeV9pbmRleCwKIAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0 LAogCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LApAQCAtNjUsNiArNjksNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQ b3J0YWwgcG9ydGFsKTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hh ciAqc291cmNlVGV4dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9z c2NoZWNrX3NuYXBzaG90LApAQCAtNzcsNiArODIsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21t YW5kVHlwZTsJLyogb3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7 CS8qIHBsYW4gKi8KKwlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHN1cHBseWlu ZyB0aGUgcGxhbm5lZHN0bXQgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1 ZXJ5IHRleHQgKi8KIAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJ Lyogc25hcHNob3QgKi8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyOCw5 IEBAIEZyZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVS TklORywgb3IgUE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxh biB0cmVlIGZvciB0aGUgcXVlcnkKKyAqCWNwbGFuOiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUg cGxhbgorICoJcGxhbnNvdXJjZTogQ2FjaGVkUGxhblNvdXJjZSBzdXBwbHlpbmcgdGhlIGNwbGFu CisgKglxdWVyeV9pbmRleDogaW5kZXggb2YgdGhlIHF1ZXJ5IGluIHBsYW5zb3VyY2UtPnF1ZXJ5 X2xpc3QKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBh cmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3Vs dHMKQEAgLTEzNCw2ICsxNDMsOSBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAg Ki8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgQ2Fj aGVkUGxhbiAqY3BsYW4sCisJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCSBp bnQgcXVlcnlfaW5kZXgsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSwx NCArMTU3LDIzIEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENy ZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAogCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5 RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBjcGxhbiwgc291cmNlVGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAogCS8qCi0J ICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgor CSAqIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgogCSAqLwotCUV4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCAwKTsKKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwl7CisJCUV4ZWN1dG9yU3Rh cnRDYWNoZWRQbGFuKHF1ZXJ5RGVzYywgMCwgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOworCQlB c3NlcnQocXVlcnlEZXNjLT5wbGFuc3RhdGUpOworCX0KKwllbHNlCisJeworCQlpZiAoIUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCAwKSkKKwkJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0KCkg ZmFpbGVkIHVuZXhwZWN0ZWRseSIpOworCX0KIAogCS8qCiAJICogUnVuIHRoZSBwbGFuIHRvIGNv bXBsZXRpb24uCkBAIC00OTMsNiArNTE0LDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25l LgogCQkJCSAqLwogCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2Rl KFBsYW5uZWRTdG10LCBwb3J0YWwtPnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwK IAkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFw c2hvdCgpLAogCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCkBAIC01MTIsOSArNTM0LDE5IEBA IFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQlt eWVmbGFncyA9IGVmbGFnczsKIAogCQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRv IHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkJCSAqIFByZXBhcmUgdGhlIHBsYW4g Zm9yIGV4ZWN1dGlvbi4KIAkJCQkgKi8KLQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXll ZmxhZ3MpOworCQkJCWlmIChwb3J0YWwtPmNwbGFuKQorCQkJCXsKKwkJCQkJRXhlY3V0b3JTdGFy dENhY2hlZFBsYW4ocXVlcnlEZXNjLCBteWVmbGFncywKKwkJCQkJCQkJCQkJcG9ydGFsLT5wbGFu c291cmNlLCAwKTsKKwkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKwkJCQl9CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxh Z3MpKQorCQkJCQkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3Rl ZGx5Iik7CisJCQkJfQogCiAJCQkJLyoKIAkJCQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAg dG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgpAQCAtMTE4OCw2ICsxMjIwLDcgQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFs c2U7CiAJTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlpbnQJCQlxdWVyeV9pbmRleCA9IDA7 CiAKIAkvKgogCSAqIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hh bmdlIHRvIERlc3ROb25lLiAgVGhlCkBAIC0xMjY5LDYgKzEzMDIsOSBAQCBQb3J0YWxSdW5NdWx0 aShQb3J0YWwgcG9ydGFsLAogCQkJewogCQkJCS8qIHN0YXRlbWVudCBjYW4gc2V0IHRhZyBzdHJp bmcgKi8KIAkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCisJ CQkJCQkJIHBvcnRhbC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkgcXVlcnlfaW5kZXgsCiAJCQkJCQkJ IHBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJ CQkJIHBvcnRhbC0+cXVlcnlFbnYsCkBAIC0xMjc4LDYgKzEzMTQsOSBAQCBQb3J0YWxSdW5NdWx0 aShQb3J0YWwgcG9ydGFsLAogCQkJewogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5u b3Qgc2V0IHRhZyAqLwogCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQkJCQkgcG9ydGFsLT5j cGxhbiwKKwkJCQkJCQkgcG9ydGFsLT5wbGFuc291cmNlLAorCQkJCQkJCSBxdWVyeV9pbmRleCwK IAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFt cywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEzNDIsNiArMTM4MSw4IEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCSAqLwogCQlpZiAobG5leHQocG9ydGFsLT5zdG10 cywgc3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkKIAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7 CisKKwkJcXVlcnlfaW5kZXgrKzsKIAl9CiAKIAkvKiBQb3AgdGhlIHNuYXBzaG90IGlmIHdlIHB1 c2hlZCBvbmUuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2Fj aGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDU1ZGI4ZjUz NzA1Li43MTgzOWRjYTEwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEw MSw3ICsxMDEsOCBAQCBzdGF0aWMgZGxpc3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0g RExJU1RfU1RBVElDX0lOSVQoY2FjaGVkX2V4cHJlc3Npb25fbAogCiBzdGF0aWMgdm9pZCBSZWxl YXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlz dCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0J CQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKwkJCQkJCQkJICAgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYsCisJCQkJCQkJCSAgIGJvb2wgcmVsZWFzZV9nZW5lcmljKTsK IHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl KTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKQEAgLTU3OCwxMCArNTc5LDE3IEBA IFJlbGVhc2VHZW5lcmljUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogICogVGhl IHJlc3VsdCB2YWx1ZSBpcyB0aGUgdHJhbnNpZW50IGFuYWx5emVkLWFuZC1yZXdyaXR0ZW4gcXVl cnkgdHJlZSBpZiB3ZQogICogaGFkIHRvIGRvIHJlLWFuYWx5c2lzLCBhbmQgTklMIG90aGVyd2lz ZS4gIChUaGlzIGlzIHJldHVybmVkIGp1c3QgdG8gc2F2ZQogICogYSB0cmVlIGNvcHlpbmcgc3Rl cCBpbiBhIHN1YnNlcXVlbnQgQnVpbGRDYWNoZWRQbGFuIGNhbGwuKQorICoKKyAqIFRoaXMgYWxz byByZWxlYXNlcyBhbmQgZHJvcHMgdGhlIGdlbmVyaWMgcGxhbiAocGxhbnNvdXJjZS0+Z3BsYW4p LCBpZiBhbnksCisgKiBhcyBtb3N0IGNhbGxlcnMgd2lsbCB0eXBpY2FsbHkgYnVpbGQgYSBuZXcg Q2FjaGVkUGxhbiBmb3IgdGhlIHBsYW5zb3VyY2UKKyAqIHJpZ2h0IGFmdGVyIHRoaXMuIEhvd2V2 ZXIsIHdoZW4gY2FsbGVkIGZyb20gVXBkYXRlQ2FjaGVkUGxhbigpLCB0aGUKKyAqIGZ1bmN0aW9u IGRvZXMgbm90IHJlbGVhc2UgdGhlIGdlbmVyaWMgcGxhbiwgYXMgVXBkYXRlQ2FjaGVkUGxhbigp IHVwZGF0ZXMKKyAqIGFuIGV4aXN0aW5nIENhY2hlZFBsYW4gaW4gcGxhY2UuCiAgKi8KIHN0YXRp YyBMaXN0ICoKIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAotCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQorCQkJCQkgIFF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJCQkgIGJvb2wgcmVsZWFzZV9nZW5lcmljKQogewogCWJv b2wJCXNuYXBzaG90X3NldDsKIAlSYXdTdG10ICAgICpyYXd0cmVlOwpAQCAtNjc4LDggKzY4Niw5 IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAog CQlNZW1vcnlDb250ZXh0RGVsZXRlKHFjeHQpOwogCX0KIAotCS8qIERyb3AgdGhlIGdlbmVyaWMg cGxhbiByZWZlcmVuY2UgaWYgYW55ICovCi0JUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2Up OworCS8qIERyb3AgdGhlIGdlbmVyaWMgcGxhbiByZWZlcmVuY2UsIGlmIGFueSwgYW5kIGlmIHJl cXVlc3RlZCAqLworCWlmIChyZWxlYXNlX2dlbmVyaWMpCisJCVJlbGVhc2VHZW5lcmljUGxhbihw bGFuc291cmNlKTsKIAogCS8qCiAJICogTm93IHJlLWRvIHBhcnNlIGFuYWx5c2lzIGFuZCByZXdy aXRlLiAgVGhpcyBub3QgaW5jaWRlbnRhbGx5IGFjcXVpcmVzCkBAIC04MTUsOCArODI0LDExIEBA IFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICog Q2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgdG8g dmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAgdG8gZGF0ZS4KICAqCi0gKiBPbiBh ICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4g dGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBi ZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBh Y3F1aXJlZCBsb2NrcyBvbiB0aGUgInVucHJ1bmFibGVSZWxpZHMiIHNldAorICogZm9yIGFsbCBw bGFucyBpbiBwbGFuc291cmNlLT5zdG10X2xpc3QuIEhvd2V2ZXIsIHRoZSBwbGFucyBhcmUgbm90 IGZ1bGx5CisgKiByYWNlLWNvbmRpdGlvbi1mcmVlIHVudGlsIHRoZSBleGVjdXRvciBhY3F1aXJl cyBsb2NrcyBvbiB0aGUgcHJ1bmFibGUKKyAqIHJlbGF0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlh bCBydW50aW1lIHBydW5pbmcgZHVyaW5nIGV4ZWN1dG9yCisgKiBpbml0aWFsaXphdGlvbi4KICAq Lwogc3RhdGljIGJvb2wKIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKQpAQCAtODcwLDcgKzg4MiwxMSBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSkKIAkJICovCiAJCWlmIChwbGFuLT5pc192YWxpZCkKIAkJewotCQkJLyog U3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLworCQkJLyoK KwkJCSAqIFN1Y2Nlc3NmdWxseSByZXZhbGlkYXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4gIFNl dCBpc19yZXVzZWQKKwkJCSAqIHRvIHRydWUgc28gdGhhdCBDYWNoZWRQbGFuUmVxdWlyZXNMb2Nr aW5nKCkgcmV0dXJucyB0cnVlLgorCQkJICovCisJCQlwbGFuLT5pc19yZXVzZWQgPSB0cnVlOwog CQkJcmV0dXJuIHRydWU7CiAJCX0KIApAQCAtODk1LDEyICs5MTEsMTQgQEAgQ2hlY2tDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAgKiBUbyBidWlsZCBhIGdlbmVyaWMs IHBhcmFtZXRlci12YWx1ZS1pbmRlcGVuZGVudCBwbGFuLCBwYXNzIE5VTEwgZm9yCiAgKiBib3Vu ZFBhcmFtcy4gIFRvIGJ1aWxkIGEgY3VzdG9tIHBsYW4sIHBhc3MgdGhlIGFjdHVhbCBwYXJhbWV0 ZXIgdmFsdWVzIHZpYQogICogYm91bmRQYXJhbXMuICBGb3IgYmVzdCBlZmZlY3QsIHRoZSBQQVJB TV9GTEFHX0NPTlNUIGZsYWcgc2hvdWxkIGJlIHNldCBvbgotICogZWFjaCBwYXJhbWV0ZXIgdmFs dWU7IG90aGVyd2lzZSB0aGUgcGxhbm5lciB3aWxsIHRyZWF0IHRoZSB2YWx1ZSBhcyBhCi0gKiBo aW50IHJhdGhlciB0aGFuIGEgaGFyZCBjb25zdGFudC4KKyAqIGVhY2ggcGFyYW1ldGVyIHZhbHVl OyBvdGhlcndpc2UgdGhlIHBsYW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYSBoaW50Cisg KiByYXRoZXIgdGhhbiBhIGhhcmQgY29uc3RhbnQuCiAgKgogICogUGxhbm5pbmcgd29yayBpcyBk b25lIGluIHRoZSBjYWxsZXIncyBtZW1vcnkgY29udGV4dC4gIFRoZSBmaW5pc2hlZCBwbGFuCiAg KiBpcyBpbiBhIGNoaWxkIG1lbW9yeSBjb250ZXh0LCB3aGljaCB0eXBpY2FsbHkgc2hvdWxkIGdl dCByZXBhcmVudGVkCiAgKiAodW5sZXNzIHRoaXMgaXMgYSBvbmUtc2hvdCBwbGFuLCBpbiB3aGlj aCBjYXNlIHdlIGRvbid0IGNvcHkgdGhlIHBsYW4pLgorICoKKyAqIE5vdGU6IFdoZW4gY2hhbmdp bmcgdGhpcywgeW91IHNob3VsZCBhbHNvIGxvb2sgYXQgVXBkYXRlQ2FjaGVkUGxhbigpLgogICov CiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCkBAIC05MTEsNiArOTI5LDcgQEAgQnVpbGRDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCWJvb2wJCXNu YXBzaG90X3NldDsKIAlib29sCQlpc190cmFuc2llbnQ7CiAJTWVtb3J5Q29udGV4dCBwbGFuX2Nv bnRleHQ7CisJTWVtb3J5Q29udGV4dCBzdG10X2NvbnRleHQgPSBOVUxMOwogCU1lbW9yeUNvbnRl eHQgb2xkY3h0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAg LTkyOCw3ICs5NDcsNyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwgTGlzdCAqcWxpc3QsCiAJICogbGV0J3MgdHJlYXQgaXQgYXMgcmVhbCBhbmQgcmVkbyB0 aGUgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IGNhbGwuCiAJICovCiAJaWYgKCFwbGFuc291cmNlLT5p c192YWxpZCkKLQkJcWxpc3QgPSBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVl cnlFbnYpOworCQlxbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVy eUVudiwgdHJ1ZSk7CiAKIAkvKgogCSAqIElmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIGNvcHkg b2YgdGhlIHF1ZXJ5dHJlZSBsaXN0IHRoYXQgY2FuIGJlCkBAIC05NjcsMTAgKzk4NiwxOSBAQCBC dWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3Qs CiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIE5vcm1hbGx5IHdlIG1ha2UgYSBk ZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSBDYWNoZWRQbGFuIGFuZCBpdHMKLQkgKiBz dWJzaWRpYXJ5IGRhdGEuICAoSXQncyBwcm9iYWJseSBub3QgZ29pbmcgdG8gYmUgbGFyZ2UsIGJ1 dCBqdXN0IGluCi0JICogY2FzZSwgYWxsb3cgaXQgdG8gZ3JvdyBsYXJnZS4gIEl0J3MgdHJhbnNp ZW50IGZvciB0aGUgbW9tZW50LikgIEJ1dCBmb3IKLQkgKiBhIG9uZS1zaG90IHBsYW4sIHdlIGp1 c3QgbGVhdmUgaXQgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LgorCSAqIE5vcm1hbGx5 LCB3ZSBjcmVhdGUgYSBkZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQgZm9yIHRoZSBDYWNoZWRQbGFu IGFuZAorCSAqIGl0cyBzdWJzaWRpYXJ5IGRhdGEuIEFsdGhvdWdoIGl0J3MgdXN1YWxseSBub3Qg dmVyeSBsYXJnZSwgdGhlIGNvbnRleHQKKwkgKiBpcyBkZXNpZ25lZCB0byBhbGxvdyBncm93dGgg aWYgbmVjZXNzYXJ5LgorCSAqCisJICogVGhlIFBsYW5uZWRTdG10cyBhcmUgc3RvcmVkIGluIGEg c2VwYXJhdGUgY2hpbGQgY29udGV4dCAoc3RtdF9jb250ZXh0KQorCSAqIG9mIHRoZSBDYWNoZWRQ bGFuJ3MgbWVtb3J5IGNvbnRleHQuIFRoaXMgc2VwYXJhdGlvbiBhbGxvd3MKKwkgKiBVcGRhdGVD YWNoZWRQbGFuKCkgdG8gZnJlZSBhbmQgcmVwbGFjZSB0aGUgUGxhbm5lZFN0bXRzIHdpdGhvdXQK KwkgKiBhZmZlY3RpbmcgdGhlIENhY2hlZFBsYW4gc3RydWN0dXJlIG9yIGl0cyBzdG10X2xpc3Qg TGlzdC4KKwkgKgorCSAqIEZvciBvbmUtc2hvdCBwbGFucywgd2UgaW5zdGVhZCB1c2UgdGhlIGNh bGxlcidzIG1lbW9yeSBjb250ZXh0LCBhcyB0aGUKKwkgKiBDYWNoZWRQbGFuIHdpbGwgbm90IHBl cnNpc3QuICBzdG10X2NvbnRleHQgd2lsbCBiZSBzZXQgdG8gTlVMTCBpbiB0aGlzCisJICogY2Fz ZSwgYmVjYXVzZSBVcGRhdGVDYWNoZWRQbGFuKCkgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQgb24g YSBvbmUtc2hvdAorCSAqIHBsYW4uCiAJICovCiAJaWYgKCFwbGFuc291cmNlLT5pc19vbmVzaG90 KQogCXsKQEAgLTk3OSwxMiArMTAwNywxNyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9TVEFS VF9TTUFMTF9TSVpFUyk7CiAJCU1lbW9yeUNvbnRleHRDb3B5QW5kU2V0SWRlbnRpZmllcihwbGFu X2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZyk7CiAKLQkJLyoKLQkJICogQ29weSBw bGFuIGludG8gdGhlIG5ldyBjb250ZXh0LgotCQkgKi8KLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KHBsYW5fY29udGV4dCk7CisJCXN0bXRfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShD dXJyZW50TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJICJDYWNoZWRQbGFuIFBsYW5uZWRTdG10 cyIsCisJCQkJCQkJCQkJCSBBTExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpFUyk7CisJCU1lbW9yeUNv bnRleHRDb3B5QW5kU2V0SWRlbnRpZmllcihzdG10X2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5 X3N0cmluZyk7CisJCU1lbW9yeUNvbnRleHRTZXRQYXJlbnQoc3RtdF9jb250ZXh0LCBwbGFuX2Nv bnRleHQpOwogCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhzdG10X2NvbnRleHQpOwogCQlwbGlz dCA9IGNvcHlPYmplY3QocGxpc3QpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFuX2Nv bnRleHQpOworCQlwbGlzdCA9IGxpc3RfY29weShwbGlzdCk7CiAJfQogCWVsc2UKIAkJcGxhbl9j b250ZXh0ID0gQ3VycmVudE1lbW9yeUNvbnRleHQ7CkBAIC0xMDI1LDggKzEwNTgsMTAgQEAgQnVp bGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAog CQlwbGFuLT5zYXZlZF94bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJcGxhbi0+cmVmY291 bnQgPSAwOwogCXBsYW4tPmNvbnRleHQgPSBwbGFuX2NvbnRleHQ7CisJcGxhbi0+c3RtdF9jb250 ZXh0ID0gc3RtdF9jb250ZXh0OwogCXBsYW4tPmlzX29uZXNob3QgPSBwbGFuc291cmNlLT5pc19v bmVzaG90OwogCXBsYW4tPmlzX3NhdmVkID0gZmFsc2U7CisJcGxhbi0+aXNfcmV1c2VkID0gZmFs c2U7CiAJcGxhbi0+aXNfdmFsaWQgPSB0cnVlOwogCiAJLyogYXNzaWduIGdlbmVyYXRpb24gbnVt YmVyIHRvIG5ldyBwbGFuICovCkBAIC0xMTUzLDggKzExODgsMTEgQEAgY2FjaGVkX3BsYW5fY29z dChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBj dXN0b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qg a25vdwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBp cyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRp b24uCisgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkLCBidXQgbm90IGFsbCBsb2NrcyBh cmUgYWNxdWlyZWQgaWYgdGhlCisgKiByZXR1cm5lZCBwbGFuIGlzIGEgcmV1c2VkIGdlbmVyaWMg cGxhbi4gIEluIHN1Y2ggY2FzZXMsIGxvY2tzIG9uIHJlbGF0aW9ucworICogc3ViamVjdCB0byBp bml0aWFsIHJ1bnRpbWUgcHJ1bmluZyBhcmUgbm90IHRha2VuIGJ5IENoZWNrQ2FjaGVkUGxhbigp IGJ1dAorICogZGVmZXJyZWQgdW50aWwgdGhlIGV4ZWN1dGlvbiBzdGFydHVwIHBoYXNlLCBzcGVj aWZpY2FsbHkgd2hlbgorICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBwZXJmb3JtcyBpbml0aWFs IHBydW5pbmcuCiAgKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBsYW4gaGFz IGJlZW4gaW5jcmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkgY2FsbCBp cyBleHBlY3RlZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAtMTE4MCw3ICsxMjE4 LDcgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAogCQllbG9nKEVSUk9SLCAiY2Fubm90IGFwcGx5IFJlc291cmNl T3duZXIgdG8gbm9uLXNhdmVkIGNhY2hlZCBwbGFuIik7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHF1 ZXJ5dHJlZSBsaXN0IGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHBhcnNlLXRpbWUgbG9ja3MgKi8KLQlx bGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJcWxp c3QgPSBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYsIHRydWUpOwog CiAJLyogRGVjaWRlIHdoZXRoZXIgdG8gdXNlIGEgY3VzdG9tIHBsYW4gKi8KIAljdXN0b21wbGFu ID0gY2hvb3NlX2N1c3RvbV9wbGFuKHBsYW5zb3VyY2UsIGJvdW5kUGFyYW1zKTsKQEAgLTEyNzYs NiArMTMxNCwxMTMgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCXJldHVybiBwbGFuOwogfQogCisvKgorICog VXBkYXRlQ2FjaGVkUGxhbgorICoJCUNyZWF0ZSBmcmVzaCBwbGFucyBmb3IgYWxsIHF1ZXJpZXMg aW4gdGhlIENhY2hlZFBsYW5Tb3VyY2UsIHJlcGxhY2luZworICoJCXRob3NlIGluIHRoZSBnZW5l cmljIHBsYW4ncyBzdG10X2xpc3QsIGFuZCByZXR1cm4gdGhlIHBsYW4gZm9yIHRoZQorICoJCXF1 ZXJ5X2luZGV4J3RoIHF1ZXJ5LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IHVz ZWQgYnkgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKSB0byBoYW5kbGUKKyAqIGNhc2VzIHdoZXJl IHRoZSBvcmlnaW5hbCBnZW5lcmljIENhY2hlZFBsYW4gYmVjb21lcyBpbnZhbGlkLiBTdWNoCisg KiBpbnZhbGlkYXRpb24gbWF5IG9jY3VyIHdoZW4gcHJ1bmFibGUgcmVsYXRpb25zIGluIHRoZSBv bGQgcGxhbiBmb3IgdGhlCisgKiBxdWVyeV9pbmRleCd0aCBxdWVyeSBhcmUgbG9ja2VkIGluIHBy ZXBhcmF0aW9uIGZvciBleGVjdXRpb24uCisgKgorICogTm90ZSB0aGF0IGludmFsaWRhdGlvbnMg cmVjZWl2ZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIHF1ZXJ5X2luZGV4J3RoCisgKiBx dWVyeSBjYW4gYWZmZWN0IGJvdGggdGhlIHF1ZXJpZXMgdGhhdCBoYXZlIGFscmVhZHkgZmluaXNo ZWQgZXhlY3V0aW9uCisgKiAoZS5nLiwgZHVlIHRvIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBv biBwcnVuYWJsZSByZWxhdGlvbnMgdGhhdCB3ZXJlIG5vdAorICogbG9ja2VkIGR1cmluZyB0aGVp ciBleGVjdXRpb24pIGFuZCBhbHNvIHRoZSBxdWVyaWVzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4K KyAqIGV4ZWN1dGVkLiAgQXMgYSByZXN1bHQsIHRoaXMgZnVuY3Rpb24gdXBkYXRlcyBhbGwgcGxh bnMgdG8gZW5zdXJlCisgKiBDYWNoZWRQbGFuLmlzX3ZhbGlkIGlzIHNhZmVseSBzZXQgdG8gdHJ1 ZS4KKyAqCisgKiBUaGUgb2xkIFBsYW5uZWRTdG10cyBpbiBwbGFuc291cmNlLT5ncGxhbi0+c3Rt dF9saXN0IGFyZSBmcmVlZCBoZXJlLCBzbworICogdGhlIGNhbGxlciBhbmQgYW55IG9mIGl0cyBj YWxsZXJzIG11c3Qgbm90IHJlbHkgb24gdGhlbSByZW1haW5pbmcgYWNjZXNzaWJsZQorICogYWZ0 ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCisgKi8KK1BsYW5uZWRTdG10ICoKK1VwZGF0ZUNh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAor CQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKK3sKKwlMaXN0CSAgICpxdWVyeV9saXN0 ID0gcGxhbnNvdXJjZS0+cXVlcnlfbGlzdCwKKwkJCSAgICpwbGFuX2xpc3Q7CisJTGlzdENlbGwg ICAqbDEsCisJCQkgICAqbDI7CisJQ2FjaGVkUGxhbiAqcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFu OworCU1lbW9yeUNvbnRleHQgb2xkY3h0OworCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkp OworCisJLyogU2FuaXR5IGNoZWNrcyAqLworCWlmIChwbGFuID09IE5VTEwpCisJCWVsb2coRVJS T1IsICJVcGRhdGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBwbGFu c291cmNlLT5ncGxhbiBpcyBOVUxMIik7CisJZWxzZSBpZiAocGxhbi0+aXNfdmFsaWQpCisJCWVs b2coRVJST1IsICJVcGRhdGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0 OiBwbGFuc291cmNlLT5ncGxhbi0+aXNfdmFsaWQgaXMgdHJ1ZSIpOworCWVsc2UgaWYgKHBsYW4t PmlzX29uZXNob3QpCisJCWVsb2coRVJST1IsICJVcGRhdGVDYWNoZWRQbGFuKCkgY2FsbGVkIGlu IHRoZSB3cm9uZyBjb250ZXh0OiBwbGFuc291cmNlLT5ncGxhbi0+aXNfb25lc2hvdCBpcyB0cnVl Iik7CisKKwkvKgorCSAqIFRoZSBwbGFuc291cmNlIG1pZ2h0IGhhdmUgYmVjb21lIGludmFsaWQg c2luY2UgR2V0Q2FjaGVkUGxhbigpIHJldHVybmVkCisJICogdGhlIENhY2hlZFBsYW4uIFNlZSB0 aGUgY29tbWVudCBpbiBCdWlsZENhY2hlZFBsYW4oKSBmb3IgZGV0YWlscyBvbiB3aHkKKwkgKiB0 aGlzIG1pZ2h0IGhhcHBlbi4gIEFsdGhvdWdoIGludmFsaWRhdGlvbiBpcyBsaWtlbHkgYSBmYWxz ZSBwb3NpdGl2ZSBhcworCSAqIHN0YXRlZCB0aGVyZSwgd2UgbWFrZSB0aGUgcGxhbiB2YWxpZCB0 byBlbnN1cmUgdGhlIHF1ZXJ5IGxpc3QgdXNlZCBmb3IKKwkgKiBwbGFubmluZyBpcyB1cCB0byBk YXRlLgorCSAqCisJICogVGhlIHJpc2sgb2YgY2F0Y2hpbmcgYW4gaW52YWxpZGF0aW9uIGlzIGhp Z2hlciBoZXJlIHRoYW4gd2hlbgorCSAqIEJ1aWxkQ2FjaGVkUGxhbigpIGlzIGNhbGxlZCBmcm9t IEdldENhY2hlZFBsYW4oKSwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uCisJICogaXMgbm9ybWFsbHkg Y2FsbGVkIGxvbmcgYWZ0ZXIgR2V0Q2FjaGVkUGxhbigpIHJldHVybnMgdGhlIENhY2hlZFBsYW4s CisJICogc28gbXVjaCBtb3JlIHByb2Nlc3NpbmcgY291bGQgaGF2ZSBvY2N1cnJlZCBpbmNsdWRp bmcgdGhpbmdzIHRoYXQgbWFyaworCSAqIHRoZSBDYWNoZWRQbGFuU291cmNlIGludmFsaWQuCisJ ICoKKwkgKiBOb3RlOiBEbyBub3QgcmVsZWFzZSBwbGFuc291cmNlLT5ncGxhbiwgYmVjYXVzZSB0 aGUgdXBzdHJlYW0gY2FsbGVycworCSAqIChzdWNoIGFzIHRoZSBjYWxsZXJzIG9mIEV4ZWN1dG9y U3RhcnRDYWNoZWRQbGFuKCkpIHdvdWxkIHN0aWxsIGJlCisJICogcmVmZXJlbmNpbmcgaXQuCisJ ICovCisJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKKwkJcXVlcnlfbGlzdCA9IFJldmFsaWRh dGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgZmFsc2UpOworCUFzc2VydChxdWVy eV9saXN0ICE9IE5JTCk7CisKKwkvKgorCSAqIEJ1aWxkIGEgbmV3IGdlbmVyaWMgcGxhbiBmb3Ig YWxsIHRoZSBxdWVyaWVzIGFmdGVyIG1ha2luZyBhIGNvcHkgdG8gYmUKKwkgKiBzY3JpYmJsZWQg b24gYnkgdGhlIHBsYW5uZXIuCisJICovCisJcXVlcnlfbGlzdCA9IGNvcHlPYmplY3QocXVlcnlf bGlzdCk7CisKKwkvKgorCSAqIFBsYW5uaW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3Mg bWVtb3J5IGNvbnRleHQuICBUaGUgcmVzdWx0aW5nCisJICogUGxhbm5lZFN0bXQgaXMgdGhlbiBj b3BpZWQgaW50byBwbGFuLT5zdG10X2NvbnRleHQgYWZ0ZXIgdGhyb3dpbmcgYXdheQorCSAqIHRo ZSBvbGQgb25lcy4KKwkgKi8KKwlwbGFuX2xpc3QgPSBwZ19wbGFuX3F1ZXJpZXMocXVlcnlfbGlz dCwgcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAorCQkJCQkJCQlwbGFuc291cmNlLT5jdXJzb3Jf b3B0aW9ucywgTlVMTCk7CisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBsYW5fbGlzdCkgPT0gbGlzdF9s ZW5ndGgocGxhbi0+c3RtdF9saXN0KSk7CisKKwlNZW1vcnlDb250ZXh0UmVzZXQocGxhbi0+c3Rt dF9jb250ZXh0KTsKKwlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbi0+c3RtdF9j b250ZXh0KTsKKwlmb3Jib3RoKGwxLCBwbGFuX2xpc3QsIGwyLCBwbGFuLT5zdG10X2xpc3QpCisJ eworCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBsZmlyc3QobDEpOworCisJCWxmaXJzdChs MikgPSBjb3B5T2JqZWN0KHBsYW5uZWRzdG10KTsKKwl9CisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7CisKKwkvKgorCSAqIFhYWCBTaG91bGQgdGhpcyBhbHNvIChyZSlzZXQgdGhlIHBy b3BlcnRpZXMgb2YgdGhlIENhY2hlZFBsYW4gdGhhdCBhcmUKKwkgKiBzZXQgaW4gQnVpbGRDYWNo ZWRQbGFuKCkgYWZ0ZXIgY3JlYXRpbmcgdGhlIGZyZXNoIHBsYW5zIHN1Y2ggYXMKKwkgKiBwbGFu Um9sZUlkLCBkZXBlbmRzT25Sb2xlLCBhbmQgc2F2ZV94bWluPworCSAqLworCisJLyoKKwkgKiBX ZSd2ZSB1cGRhdGVkIGFsbCB0aGUgcGxhbnMgdGhhdCBtaWdodCBoYXZlIGJlZW4gaW52YWxpZGF0 ZWQsIHNvIG1hcmsKKwkgKiB0aGUgQ2FjaGVkUGxhbiBhcyB2YWxpZC4KKwkgKi8KKwlwbGFuLT5p c192YWxpZCA9IHRydWU7CisKKwkvKiBBbHNvIHVwZGF0ZSBnZW5lcmljX2Nvc3QgYmVjYXVzZSB3 ZSBqdXN0IGNyZWF0ZWQgYSBuZXcgZ2VuZXJpYyBwbGFuLiAqLworCXBsYW5zb3VyY2UtPmdlbmVy aWNfY29zdCA9IGNhY2hlZF9wbGFuX2Nvc3QocGxhbiwgZmFsc2UpOworCisJcmV0dXJuIGxpc3Rf bnRoX25vZGUoUGxhbm5lZFN0bXQsIHBsYW4tPnN0bXRfbGlzdCwgcXVlcnlfaW5kZXgpOworfQor CiAvKgogICogUmVsZWFzZUNhY2hlZFBsYW46IHJlbGVhc2UgYWN0aXZlIHVzZSBvZiBhIGNhY2hl ZCBwbGFuLgogICoKQEAgLTE2NTQsNyArMTc5OSw3IEBAIENhY2hlZFBsYW5HZXRUYXJnZXRMaXN0 KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCXJldHVybiBOSUw7CiAKIAkvKiBNYWtl IHN1cmUgdGhlIHF1ZXJ5dHJlZSBsaXN0IGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHBhcnNlLXRpbWUg bG9ja3MgKi8KLQlSZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYpOwor CVJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkv KiBHZXQgdGhlIHByaW1hcnkgc3RhdGVtZW50IGFuZCBmaW5kIG91dCB3aGF0IGl0IHJldHVybnMg Ki8KIAlwc3RtdCA9IFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KHBsYW5zb3VyY2UtPnF1ZXJ5X2xp c3QpOwpAQCAtMTc3Niw3ICsxOTIxLDcgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUpCiAJZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKIAl7CiAJCVBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwot CQlMaXN0Q2VsbCAgICpsYzI7CisJCWludAkJCXJ0aW5kZXg7CiAKIAkJaWYgKHBsYW5uZWRzdG10 LT5jb21tYW5kVHlwZSA9PSBDTURfVVRJTElUWSkKIAkJewpAQCAtMTc5NCwxMyArMTkzOSwxNiBA QCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAkJ CWNvbnRpbnVlOwogCQl9CiAKLQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5ydGFibGUpCisJ CXJ0aW5kZXggPSAtMTsKKwkJd2hpbGUgKChydGluZGV4ID0gYm1zX25leHRfbWVtYmVyKHBsYW5u ZWRzdG10LT51bnBydW5hYmxlUmVsaWRzLAorCQkJCQkJCQkJCSAgcnRpbmRleCkpID49IDApCiAJ CXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIp OworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbGlzdF9udGhfbm9kZShSYW5nZVRibEVudHJ5LAor CQkJCQkJCQkJCQkgICBwbGFubmVkc3RtdC0+cnRhYmxlLAorCQkJCQkJCQkJCQkgICBydGluZGV4 IC0gMSk7CiAKLQkJCWlmICghKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkg IChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkp KSkKLQkJCQljb250aW51ZTsKKwkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9O IHx8CisJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChy dGUtPnJlbGlkKSkpOwogCiAJCQkvKgogCQkJICogQWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUgdHlw ZSBvZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYwppbmRleCAwYmUxYzJiMGZmZi4uZTM1MjZlNzgwNjQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1n ci9wb3J0YWxtZW0uYwpAQCAtMjg0LDcgKzI4NCw4IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRh bCBwb3J0YWwsCiAJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRh ZyBjb21tYW5kVGFnLAogCQkJCSAgTGlzdCAqc3RtdHMsCi0JCQkJICBDYWNoZWRQbGFuICpjcGxh bikKKwkJCQkgIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSkKIHsKIAlBc3NlcnQoUG9ydGFsSXNWYWxpZChwb3J0YWwpKTsKIAlBc3NlcnQocG9y dGFsLT5zdGF0dXMgPT0gUE9SVEFMX05FVyk7CkBAIC0yOTksNiArMzAwLDcgQEAgUG9ydGFsRGVm aW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPmNvbW1hbmRUYWcgPSBjb21tYW5kVGFn OwogCXBvcnRhbC0+c3RtdHMgPSBzdG10czsKIAlwb3J0YWwtPmNwbGFuID0gY3BsYW47CisJcG9y dGFsLT5wbGFuc291cmNlID0gcGxhbnNvdXJjZTsKIAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9E RUZJTkVEOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggZWE3NDE5OTUxZjQuLjU3MGU3 Y2FkMWZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC0xMDMsOCArMTAzLDEwIEBAIGV4dGVy biB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICpp bnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCi0JCQkJCQkgICBF eHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKK2V4dGVybiB2b2lkIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4s CisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBpbnQgcGxhbl9pbmRleCwK KwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJCQkgICBj b25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBs YW5kdXJhdGlvbiwKIAkJCQkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3RyaWdnZXIuaAppbmRleCAyZWQyYzRiYjM3OC4uNDE4MDYwMWRjZDQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5k cy90cmlnZ2VyLmgKQEAgLTI1OCw2ICsyNTgsNyBAQCBleHRlcm4gdm9pZCBFeGVjQVNUcnVuY2F0 ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLAogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5Y YWN0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSh2b2lkKTsKIGV4 dGVybiB2b2lkIEFmdGVyVHJpZ2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiB2 b2lkIEFmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdn ZXJGaXJlRGVmZXJyZWQodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRYYWN0KGJv b2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5TdWJYYWN0KHZvaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggODZkYjNkYzhkMGQuLmJhNTMzMDVhZDQyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UXVlcnlEZXNjCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURl c2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBl dGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChj b3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVk UGxhbiB0aGF0IHN1cHBsaWVzIHRoZSBwbGFubmVkc3RtdCAqLwogCWNvbnN0IGNoYXIgKnNvdXJj ZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hv dDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNr X3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2 ICs1OCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwog ZXh0ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwKKwkJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkJCQkJICBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBz aG90IGNyb3NzY2hlY2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAzMGUy YTgyMzQ2Zi4uZDEyZTNmNDUxZDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTksNiAr MTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMv cGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAgLTcyLDcgKzczLDcgQEAKIAogCiAvKiBIb29rIGZv ciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4ZWN1dG9yU3RhcnQoKSAqLwotdHlwZWRlZiB2 b2lkICgqRXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncyk7Cit0eXBlZGVmIGJvb2wgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiBQR0RMTElNUE9SVCBFeGVjdXRv clN0YXJ0X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0X2hvb2s7CiAKIC8qIEhvb2sgZm9yIHBsdWdp bnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JSdW4oKSAqLwpAQCAtMTkxLDggKzE5MiwxMSBA QCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBh dHRubywgYm9vbCAqaXNOdWxsKQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4g ZXhlY01haW4uYwogICovCi1leHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKTsKLWV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgRXhlY3V0b3JT dGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gdm9pZCBFeGVj dXRvclN0YXJ0Q2FjaGVkUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncywKKwkJ CQkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkJCQlpbnQgcXVlcnlf aW5kZXgpOworZXh0ZXJuIGJvb2wgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQp OwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms CkBAIC0yNTUsNiArMjU5LDMwIEBAIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAq bm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBl eHRlcm4gdm9pZCBFeGVjU2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3Rh dGUgKmNoaWxkX25vZGUpOwogCisvKgorICogSXMgdGhlIENhY2hlZFBsYW4gaW4gZXNfY2FjaGVk cGxhbiBzdGlsbCB2YWxpZD8KKyAqCisgKiBDYWxsZWQgZnJvbSBJbml0UGxhbigpIGJlY2F1c2Ug aW52YWxpZGF0aW9uIG1lc3NhZ2VzIHRoYXQgYWZmZWN0IHRoZSBwbGFuCisgKiBtaWdodCBiZSBy ZWNlaXZlZCBhZnRlciBsb2NrcyBoYXZlIGJlZW4gdGFrZW4gb24gcnVudGltZS1wcnVuYWJsZSBy ZWxhdGlvbnMuCisgKiBUaGUgY2FsbGVyIHNob3VsZCB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbiBp ZiB0aGUgcGxhbiBoYXMgYmVjb21lIGludmFsaWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAor RXhlY1BsYW5TdGlsbFZhbGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVz X2NhY2hlZHBsYW4gPT0gTlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuVmFsaWQoZXN0YXRlLT5l c19jYWNoZWRwbGFuKTsKK30KKworLyoKKyAqIExvY2tzIGFyZSBuZWVkZWQgb25seSBpZiBydW5u aW5nIGEgY2FjaGVkIHBsYW4gdGhhdCBtaWdodCBjb250YWluIHVubG9ja2VkCisgKiByZWxhdGlv bnMsIHN1Y2ggYXMgYSByZXVzZWQgZ2VuZXJpYyBwbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJv b2wKK0V4ZWNTaG91bGRMb2NrUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBl c3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVMTCA/IGZhbHNlIDoKKwkJQ2FjaGVkUGxhblJlcXVp cmVzTG9ja2luZyhlc3RhdGUtPmVzX2NhY2hlZHBsYW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJ RXhlY1Byb2NOb2RlCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGEyY2JhOTdlM2Q1Li45NTE5ZGNh Mzc0YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJz dG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIK ICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCisjaW5jbHVkZSAidXRpbHMvcGxh bmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxz L3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgpAQCAtNjU1 LDYgKzY1Niw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dN YXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBM aXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10 OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlDYWNoZWRQbGFuICplc19jYWNoZWRw bGFuOwkvKiBDYWNoZWRQbGFuIHByb3ZpZGluZyB0aGUgcGxhbiB0cmVlICovCiAJTGlzdAkgICAq ZXNfcGFydF9wcnVuZV9pbmZvczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZUluZm8gKi8KIAlM aXN0CSAgICplc19wYXJ0X3BydW5lX3N0YXRlczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0 YXRlICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9yZXN1bHRzOwkvKiBMaXN0IG9mIEJpdG1h cHNldCAqLwpAQCAtNzA3LDYgKzcwOSw3IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCWludAkJ CWVzX3RvcF9lZmxhZ3M7CS8qIGVmbGFncyBwYXNzZWQgdG8gRXhlY3V0b3JTdGFydCAqLwogCWlu dAkJCWVzX2luc3RydW1lbnQ7CS8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KIAli b29sCQllc19maW5pc2hlZDsJLyogdHJ1ZSB3aGVuIEV4ZWN1dG9yRmluaXNoIGlzIGRvbmUgKi8K Kwlib29sCQllc19hYm9ydGVkOwkJLyogdHJ1ZSB3aGVuIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZCAq LwogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3 aXRoaW4gRVN0YXRlICovCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNo ZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggNDYwNzJkMzExYjEuLjJk ODNmN2Q0OTMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysg Yi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1 ZGUgImFjY2Vzcy90dXBkZXNjLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAi bm9kZXMvcGFyYW1zLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUg Im5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUgInRjb3AvY21kdGFnLmgiCiAjaW5jbHVkZSAi dXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCkBA IC0xMzksMTAgKzE0MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuU291cmNlCiAgKiBU aGUgcmVmZXJlbmNlIGNvdW50IGluY2x1ZGVzIGJvdGggdGhlIGxpbmsgZnJvbSB0aGUgcGFyZW50 IENhY2hlZFBsYW5Tb3VyY2UKICAqIChpZiBhbnkpLCBhbmQgYW55IGFjdGl2ZSBwbGFuIGV4ZWN1 dGlvbnMsIHNvIHRoZSBwbGFuIGNhbiBiZSBkaXNjYXJkZWQKICAqIGV4YWN0bHkgd2hlbiByZWZj b3VudCBnb2VzIHRvIHplcm8uICBCb3RoIHRoZSBzdHJ1Y3QgaXRzZWxmIGFuZCB0aGUKLSAqIHN1 YnNpZGlhcnkgZGF0YSBsaXZlIGluIHRoZSBjb250ZXh0IGRlbm90ZWQgYnkgdGhlIGNvbnRleHQg ZmllbGQuCi0gKiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gZnJlZSBhIG5vLWxvbmdlci1uZWVkZWQg Y2FjaGVkIHBsYW4uICAoSG93ZXZlciwKLSAqIGlmIGlzX29uZXNob3QgaXMgdHJ1ZSwgdGhlIGNv bnRleHQgZG9lcyBub3QgYmVsb25nIHNvbGVseSB0byB0aGUgQ2FjaGVkUGxhbgotICogc28gbm8g ZnJlZWluZyBpcyBwb3NzaWJsZS4pCisgKiBzdWJzaWRpYXJ5IGRhdGEsIGV4Y2VwdCB0aGUgUGxh bm5lZFN0bXRzIGluIHN0bXRfbGlzdCBsaXZlIGluIHRoZSBjb250ZXh0CisgKiBkZW5vdGVkIGJ5 IHRoZSBjb250ZXh0IGZpZWxkOyB0aGUgUGxhbm5lZFN0bXRzIGxpdmUgaW4gdGhlIGNvbnRleHQg ZGVub3RlZAorICogYnkgc3RtdF9jb250ZXh0LiAgU2VwYXJhdGUgY29udGV4dHMgbWFrZXMgaXQg ZWFzeSB0byBmcmVlIGEgbm8tbG9uZ2VyLW5lZWRlZAorICogY2FjaGVkIHBsYW4uIChIb3dldmVy LCBpZiBpc19vbmVzaG90IGlzIHRydWUsIHRoZSBjb250ZXh0IGRvZXMgbm90IGJlbG9uZworICog c29sZWx5IHRvIHRoZSBDYWNoZWRQbGFuIHNvIG5vIGZyZWVpbmcgaXMgcG9zc2libGUuKQogICov CiB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiB7CkBAIC0xNTAsNiArMTUzLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgQ2FjaGVkUGxhbgogCUxpc3QJICAgKnN0bXRfbGlzdDsJCS8qIGxpc3Qgb2YgUGxh bm5lZFN0bXRzICovCiAJYm9vbAkJaXNfb25lc2hvdDsJCS8qIGlzIGl0IGEgIm9uZXNob3QiIHBs YW4/ICovCiAJYm9vbAkJaXNfc2F2ZWQ7CQkvKiBpcyBDYWNoZWRQbGFuIGluIGEgbG9uZy1saXZl ZCBjb250ZXh0PyAqLworCWJvb2wJCWlzX3JldXNlZDsJCS8qIGlzIGl0IGEgcmV1c2VkIGdlbmVy aWMgcGxhbj8gKi8KIAlib29sCQlpc192YWxpZDsJCS8qIGlzIHRoZSBzdG10X2xpc3QgY3VycmVu dGx5IHZhbGlkPyAqLwogCU9pZAkJCXBsYW5Sb2xlSWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdh cyBjcmVhdGVkIGZvciAqLwogCWJvb2wJCWRlcGVuZHNPblJvbGU7CS8qIGlzIHBsYW4gc3BlY2lm aWMgdG8gdGhhdCByb2xlPyAqLwpAQCAtMTU4LDYgKzE2MiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBD YWNoZWRQbGFuCiAJaW50CQkJZ2VuZXJhdGlvbjsJCS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVt YmVyIGZvciB0aGlzIHBsYW4gKi8KIAlpbnQJCQlyZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUg cmVmZXJlbmNlcyB0byB0aGlzIHN0cnVjdCAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8q IGNvbnRleHQgY29udGFpbmluZyB0aGlzIENhY2hlZFBsYW4gKi8KKwlNZW1vcnlDb250ZXh0IHN0 bXRfY29udGV4dDsgLyogY29udGV4dCBjb250YWluaW5nIHRoZSBQbGFubmVkU3RtdHMgaW4KKwkJ CQkJCQkJICogc3RtdF9saXN0LCBidXQgbm90IHRoZSBMaXN0IGl0c2VsZiB3aGljaCBpcworCQkJ CQkJCQkgKiBpbiB0aGUgYWJvdmUgY29udGV4dDsgTlVMTCBpZiBpc19vbmVzaG90IGlzCisJCQkJ CQkJCSAqIHRydWUuICovCiB9IENhY2hlZFBsYW47CiAKIC8qCkBAIC0yMjMsNiArMjMxLDEwIEBA IGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVz b3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsK K2V4dGVybiBQbGFubmVkU3RtdCAqVXBkYXRlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAorCQkJCQkJCQkJIGludCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCSBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENh Y2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNo ZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLApAQCAtMjM1LDQgKzI0NywzNCBAQCBleHRlcm4gYm9vbCBDYWNoZWRQbGFuSXNTaW1wbHlW YWxpZChDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZEV4cHJlc3Np b24gKkdldENhY2hlZEV4cHJlc3Npb24oTm9kZSAqZXhwcik7CiBleHRlcm4gdm9pZCBGcmVlQ2Fj aGVkRXhwcmVzc2lvbihDYWNoZWRFeHByZXNzaW9uICpjZXhwcik7CiAKKy8qCisgKiBDYWNoZWRQ bGFuUmVxdWlyZXNMb2NraW5nOiBzaG91bGQgdGhlIGV4ZWN1dG9yIGFjcXVpcmUgYWRkaXRpb25h bCBsb2Nrcz8KKyAqCisgKiBJZiB0aGUgcGxhbiBpcyBhIHNhdmVkIGdlbmVyaWMgcGxhbiwgdGhl IGV4ZWN1dG9yIG11c3QgYWNxdWlyZSBsb2NrcyBmb3IKKyAqIHJlbGF0aW9ucyB0aGF0IGFyZSBu b3QgY292ZXJlZCBieSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLCBzdWNoIGFzIHBhcnRpdGlvbnMK KyAqIHRoYXQgYXJlIHN1YmplY3QgdG8gaW5pdGlhbCBydW50aW1lIHBydW5pbmcuCisgKgorICog Tm90ZTogVGhlc2UgbG9ja3MgYXJlIHVubmVjZXNzYXJ5IGlmIHRoZSBwbGFuIGlzIGV4ZWN1dGVk IGltbWVkaWF0ZWx5IGFmdGVyCisgKiBpdHMgY3JlYXRpb24sIHNpbmNlIHRoZSBwbGFubmVyIHdv dWxkIGhhdmUgYWxyZWFkeSBhY3F1aXJlZCB0aGVtLiBIb3dldmVyLAorICogd2UgZG8gbm90IG9w dGltaXplIGZvciB0aGF0IGNhc2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxh blJlcXVpcmVzTG9ja2luZyhDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gIWNwbGFuLT5p c19vbmVzaG90ICYmIGNwbGFuLT5pc19yZXVzZWQ7Cit9CisKKy8qCisgKiBDYWNoZWRQbGFuVmFs aWQKKyAqICAgICAgUmV0dXJucyB3aGV0aGVyIGEgY2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGls bCB2YWxpZC4KKyAqCisgKiBJbnZva2VkIGJ5IHRoZSBleGVjdXRvciB0byBjaGVjayBpZiB0aGUg cGxhbiBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQgYWZ0ZXIKKyAqIHRha2luZyBsb2NrcyBkdXJp bmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJv b2wKK0NhY2hlZFBsYW5WYWxpZChDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4t PmlzX3ZhbGlkOworfQorCiAjZW5kaWYJCQkJCQkJLyogUExBTkNBQ0hFX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmgKaW5kZXggMGI2MjE0M2FmOGIuLmRkZWUwMzFmNTUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4 LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24g cWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJ TGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFu ICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KKwlDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlOwkvKiBDYWNoZWRQbGFuU291cmNlLCBmb3IgY3BsYW4g Ki8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBx dWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3Ig cXVlcnkgKi8KQEAgLTI0MCw3ICsyNDEsOCBAQCBleHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVy eShQb3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJ CQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkJCQkgIExpc3QgKnN0bXRzLAotCQkJCQkJ CSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJ CQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIGV4dGVybiBQbGFubmVkU3RtdCAq UG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxD cmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFi bGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2Vm aWxlCmluZGV4IDcwZjI0ZTg0NmRhLi4zZWViMDk3ZmRlNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgsNyArOCw4IEBAIE9CSlMgPSBcCiAJZGVsYXlf ZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFydGl0aW9uLWFkZGl0aW9uIFwKLQkgICAgcGFy dGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xIFwKKwkJY2FjaGVkLXBs YW4taW52YWwKIAogaWZkZWYgVVNFX1BHWFMKIFBHX0NPTkZJRyA9IHBnX2NvbmZpZwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMg Yi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYwppbmRl eCA3YmM5N2Y4NGExYy4uODQ0YWY2YmQwNjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxl IHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnku CisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1 cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJv Y2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAq IFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVh c2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBo YXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNzIHdp bGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICog dGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0 IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rp b24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhl Y3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29t ZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNv dXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRl c2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5n IHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBA QAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnBy b3Rvcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzIsOSArMzcsMTEgQEAgUEdfTU9E VUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sgSUQgdG8gdXNlLiAgWmVybyBkaXNh YmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9zdF9wbGFubmluZ19sb2NrX2lkID0g MDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDA7CiAKLS8qIFNhdmUgcHJl dmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KKy8qIFNhdmUg cHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXplbiAqLwogc3RhdGljIHBsYW5u ZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsKK3N0YXRpYyBFeGVjdXRvclN0 YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5VTEw7CiAKIAogLyogcGxh bm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KQEAgLTcw LDExICs3Nyw0NSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0 IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKiBFeGVjdXRvclN0 YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBkZWxheSAqLworc3RhdGlj IGJvb2wKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQoreworCWJvb2wJCXBsYW5fdmFsaWQ7CisKKwkvKiBJZiBlbmFibGVkLCBk ZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxvY2sgKi8KKwlpZiAo ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShw Z19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1 dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShwZ19hZHZpc29yeV91 bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGljZSBhbnkgcGVuZGlu ZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9jayBmdW5jdGlvbnMg ZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJ fQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlhIGEgcHJldmlvdXMg aG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQorCQlwbGFuX3ZhbGlk ID0gcHJldl9FeGVjdXRvclN0YXJ0X2hvb2socXVlcnlEZXNjLCBlZmxhZ3MpOworCWVsc2UKKwkJ cGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwor CisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5p c2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgJXMiLAorCQkJIHBsYW5fdmFsaWQg PyAidmFsaWQiIDogIm5vdCB2YWxpZCIpOworCisJcmV0dXJuIHBsYW5fdmFsaWQ7Cit9CisKIC8q IE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNl dCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVw IEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRW YXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJ IlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBs YW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCAr MTI3LDIyIEBAIF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJ CQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5l eGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJ RCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJ CQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9s b2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNF VCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsK IAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFs bCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9o b29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFu bmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4 ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVk LXBsYW4taW52YWwub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0 ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5iMzdlYTQwOTZjZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dApAQCAtMCwwICsx LDI3MCBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lvbnMKKworc3RhcnRpbmcgcGVy bXV0YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFw cmVwOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBB UkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZPUiBVUERBVEU7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xvY2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgIAorICAgICAg ICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gJDEpICAgICAgICAgICAgCisgICAgICAgICAgICAg IC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EKKyAgICAgICAgICAgICAgICAgICAg SW5kZXggQ29uZDogKGEgPSAkMSkgICAgICAgIAorKDcgcm93cykKKworc3RlcCBzMmxvY2s6IFNF TEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IExPQUQg J2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFy dF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEp OyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJfMV9hOworc3Rl cCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29y eV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczFleGVjOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBF eGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmlu aXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBl bmQgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIg ICAgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8xIGZvb18xCisgICAgICAg ICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgICAgCisoNSByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMXByZXAyIHMybG9jayBzMWV4ZWMyIHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAg czFwcmVwMjogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQ UkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3 bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsKK3MxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3Vi cGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAgCisg ICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgICAgICAgICAK KyAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoQVJSQVlbb25lKCksIHR3bygp XSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAg ICAgICAgIAorKDggcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2Nr KDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiBMT0FEICdkZWxheV9leGVjdXRpb24nOwor CQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1Owor CQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19h ZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0t LS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IDwuLi4g Y29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor QXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxhbnMg UmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28x Ml8xIGZvb18xICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAg CisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorKDYgcm93cykK KworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMyBzMmxvY2sgczFleGVjMyBzMmRyb3Bp IHMydW5sb2NrCitzdGVwIHMxcHJlcDM6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CisJCSAgUFJFUEFSRSBxMyBBUyBVUERBVEUgZm9vdiBTRVQgYSA9IGEgV0hFUkUg YSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cTM7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFu IGlzIHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmVzdGVkIExvb3AgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg IC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBv biBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIEZp bHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IEFOWSAoQVJS QVlbb25lKCksIHR3bygpXSkpICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8y IGZvb18yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgRmls dGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAgICAgICAgIAorICAt PiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDog MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAg Qml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSBvbmUoKSkgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJh cjFfYV9pZHggICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBD b25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1VwZGF0 ZSBvbiBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICBVcGRhdGUgb24gYmFyMSBiYXJfMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBOZXN0ZWQgTG9vcCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9v XzEgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBv bmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gQU5ZIChBUlJBWVtvbmUoKSwgdHdv KCldKSkKKyAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9u ZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNYXRlcmlhbGl6 ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBT Y2FuIG9uIGJhcjEgYmFyXzEgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgUmVjaGVjayBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYmFyMV9hX2lkeCAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25l KCkpICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBv biBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6 IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4g IEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBm b28xMl8xX2EgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKGEgPSBBTlkgKEFSUkFZW29uZSgpLCB0d28oKV0pKSAgICAgIAorICAgICAgICAtPiAg U2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAg ICAgICAgICAgICAgICAKKyg0NyByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlz b3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1 dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0g MTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJfMV9hOworc3RlcCBzMnVubG9jazogU0VM RUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0t LS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVj MzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9y U3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4 ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTmVzdGVkIExv b3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29f MiAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9u ZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAtPiAgTWF0ZXJpYWxpemUgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYmFyMV9h X2lkeCAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9u ZSgpKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGJhciAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gYmFyMSBiYXJfMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgTmVzdGVkIExvb3AgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQXBw ZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygp KSkgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBP UiAoYSA9IHR3bygpKSkgICAgIAorICAgICAgICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQXBwZW5kICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTdWJw bGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg ICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAgIAorICAgICAgICAgICAg ICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gYmFyMV9hX2lkeAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAg ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMiBmb29fMiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1v dmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgU2Vx IFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAg ICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAg ICAgICAgIAorKDQxIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDQgczJs b2NrIHMxZXhlYzQgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA0OiBTRVQgcGxhbl9jYWNo ZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfc2Vxc2NhbiBUTyBv ZmY7CisJCSAgUFJFUEFSRSBxNCBBUyBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx KSBXSEVSRSBFWElTVFMgKFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFU RSk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsKK3MxOiBOT1RJQ0U6 ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29sMSAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAtPiAgQXBw ZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZm9vMTJfMV9hIG9uIGZvbzEyXzEg Zm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAg ICAgICAgICAgICAgIAorICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgICAg ICAgICAgICAgICAgICAgICAgICAgCisoOSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBn X2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0t LQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IExPQUQgJ2RlbGF5 X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2Nr X2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1 bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5s b2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzQ6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hl ZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29sMSAgICAgICAgIAor ICBJbml0UGxhbiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExv Y2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAtPiAgQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92 ZWQ6IDIgICAgICAgICAgCisgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEg Zm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZDogdHJ1ZSAgICAgICAgIAorICAg ICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgICAgCisgIC0+ICBGdW5jdGlv biBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAKKygxMCByb3dzKQorCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0 L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCmluZGV4IGI1MzQ4OGY3NmQyLi41 ODE1OWJmYzU3NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24v bWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24u YnVpbGQKQEAgLTI0LDYgKzI0LDcgQEAgdGVzdHMgKz0gewogICAgICdzcGVjcyc6IFsKICAgICAg ICdwYXJ0aXRpb24tYWRkaXRpb24nLAogICAgICAgJ3BhcnRpdGlvbi1yZW1vdmFsLTEnLAorICAg ICAgJ2NhY2hlZC1wbGFuLWludmFsJywKICAgICBdLAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3Bl YyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLWlu dmFsLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYyN2U4ZmI1 MjFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24v c3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYwpAQCAtMCwwICsxLDgwIEBACisjIFRlc3QgdG8g Y2hlY2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVyaW5nIEV4 ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJlLWV4ZWN1 dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4dCkgUEFS VElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMiBQQVJUSVRJT04gT0YgZm9v IEZPUiBWQUxVRVMgSU4gKDEsIDIpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRB QkxFIGZvbzEyXzEgUEFSVElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVB VEUgVEFCTEUgZm9vMTJfMiBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZBTFVFUyBJTiAoMik7Cisg IENSRUFURSBJTkRFWCBmb28xMl8xX2EgT04gZm9vMTJfMSAoYSk7CisgIENSRUFURSBUQUJMRSBm b28zIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMyk7CisgIENSRUFURSBWSUVXIGZv b3YgQVMgU0VMRUNUICogRlJPTSBmb287CisgIENSRUFURSBGVU5DVElPTiBvbmUgKCkgUkVUVVJO UyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOIDE7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFC TEU7CisgIENSRUFURSBGVU5DVElPTiB0d28gKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVU VVJOIDI7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBUQUJMRSBi YXIgKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUg YmFyMSBQQVJUSVRJT04gT0YgYmFyIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVgg T04gYmFyMShhKTsKKyAgQ1JFQVRFIFRBQkxFIGJhcjIgUEFSVElUSU9OIE9GIGJhciBGT1IgVkFM VUVTIElOICgyKTsKKyAgQ1JFQVRFIFJVTEUgdXBkYXRlX2ZvbyBBUyBPTiBVUERBVEUgVE8gZm9v IERPIEFMU08gVVBEQVRFIGJhciBTRVQgYSA9IGEgV0hFUkUgYSA9IG9uZSgpOworICBDUkVBVEUg UlVMRSB1cGRhdGVfYmFyIEFTIE9OIFVQREFURSBUTyBiYXIgRE8gQUxTTyBTRUxFQ1QgMTsKK30K KwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgUlVMRSB1cGRhdGVfZm9v IE9OIGZvbzsKKyAgRFJPUCBUQUJMRSBmb28sIGJhcjsKKyAgRFJPUCBGVU5DVElPTiBvbmUoKSwg dHdvKCk7Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVuaW5n CitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19w bGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZP UiBVUERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CisKKyMg QW5vdGhlciBjYXNlIHdpdGggQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAiczFw cmVwMiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAg UFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0 d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBDYXNlIHdp dGggYSBydWxlIGFkZGluZyBhbm90aGVyIHF1ZXJ5CitzdGVwICJzMXByZXAzIiAgIHsgU0VUIHBs YW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFTIFVQ REFURSBmb292IFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisjIEFub3RoZXIgY2FzZSB3aXRoIEFw cGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcgaW4gYSBzdWJxdWVyeQorc3RlcCAiczFwcmVwNCIg ICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgU0VUIGVu YWJsZV9zZXFzY2FuIFRPIG9mZjsKKwkJICBQUkVQQVJFIHE0IEFTIFNFTEVDVCAqIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEpIFdIRVJFIEVYSVNUUyAoU0VMRUNUICogRlJPTSBmb292IFdIRVJF IGEgPSAkMSBGT1IgVVBEQVRFKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTQg KDEpOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBMT0FE ICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3Rh cnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgx KTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBk ZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FEICdkZWxh eV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9j a19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorc3Rl cCAiczFleGVjNCIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVj dXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBxNCAoMSk7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2siCXsg U0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBTRUxF Q1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9QIElO REVYIGZvbzEyXzFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiLCBldGMuIHdhaXQgdG8gYWNxdWly ZSB0aGUgYWR2aXNvcnkgbG9jaywgInMyZHJvcCIgaXMgYWJsZSB0bworIyBkcm9wIHRoZSBpbmRl eCBiZWluZyB1c2VkIGluIHRoZSBjYWNoZWQgcGxhbi4gIFdoZW4gInMxZXhlYyIgaXMgdGhlbgor IyB1bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0aW9u LCBpdCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0aGUg Y2FjaGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0aGUg aW5kZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9waSIg InMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAiczJk cm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDMiICJzMmxvY2siICJzMWV4ZWMz IiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDQiICJzMmxvY2siICJz MWV4ZWM0IiAiczJkcm9waSIgInMydW5sb2NrIgotLSAKMi40My4wCgo= --0000000000007cffbf062d701a83--