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 1srYig-002jvj-61 for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2024 08:10:27 +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 1srYid-000lvQ-Vc for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Sep 2024 08:10:25 +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 1srYid-000lv1-Ch for pgsql-hackers@lists.postgresql.org; Fri, 20 Sep 2024 08:10:24 +0000 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1srYia-0009Pw-Ku for pgsql-hackers@postgresql.org; Fri, 20 Sep 2024 08:10:24 +0000 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-7cf5e179b68so1532891a12.1 for ; Fri, 20 Sep 2024 01:10:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1726819820; x=1727424620; 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=auWnvFSVlw/MEGHs3gZk8ia4WjYdIC8XsTGysjWUWW8=; b=UdCsmk8Pq8oVw67YwJ/JIQw8Ow4bdLmK6yxdUggYGF+SpnuR21r/28u2XkZPtwI4N1 dqNrMrg2CgwV0TdOM+XNjn+eZssxQFLJazlZtDKjoJ0L6aaZa/mXPARe71u6aNmGWB/D U4PhNPgCRBguk9NO7RbhhIRtAhZrWhjtZDhtWAr2/U2oXoNDV/WDkQb9mUicbY4DEfni sv3+qlK+/6Z1JAgKbQN9EeDhbQvV1jn3wIdyeRZtO6OKWQVCufE/k9Gn1BNpwOw0KcUY 9SuNAf9mnP9vNs0MZmewSEq8/nGDKM/5g8AL3sfoa07axuFpGGE0y8vtYnpy9PDPaunr trlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726819820; x=1727424620; 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=auWnvFSVlw/MEGHs3gZk8ia4WjYdIC8XsTGysjWUWW8=; b=w6KLoHthQpqpxyChSR+mKkD/d3eQu4sFcvesShwv0DoelKEqZk2IuX4qE/iDpYQFNP HujmnZsxXq9Mg3nK+AJqJiFQjHlo3rZH/KLTOk98B4wWjeZXgMG/AEGBUQYd2OX/EBGG dD/FD/fHjV6SxIxzgH+yxFlFlOmJx5nBghR4Vyr7+Cqm8rSsZlI/IJQ6ckqEJcAPOC3Y gcybjWRgAIN9p5VfjCCL5H0A2yNjIWb0PbvkuAL4DJZASWI8nVsAiYOWy6tqPRELXZNo ssnaiL/NLR7xRgdTsnsSSfDiBbLn7N4kZGo40oLJJdzTUMf1RK4itIsNZf5xS7EA2bqj 4JKQ== X-Forwarded-Encrypted: i=1; AJvYcCVM1iUgnnLaeUZE+SmlNdkaSjIHlk0Vo5yq84D3BfnD9oJeX4Aw36xCZxQMO03/rByxATu+BhgRDvg3KRjK@postgresql.org X-Gm-Message-State: AOJu0YyOBYWITWmgcrAK9nyWYNoHWEFEnNzIv7dFxm8t6vhewykkZ5iP 8FS+8OTz+Sql7uK4KJ4/1bJ+uLWhsbf+IAKA9JlNbBhktlSdk98x1xcPpbDx4x2F7TO+jxQmycr +FZs1/+9aJM0Y6s/WiJjQnKMtxiM= X-Google-Smtp-Source: AGHT+IGmg6vMX8VekBwIX5JlJp2CWfx6JDcOuclzJHpqZtgmnh+Vm12Rb0RwjiDhDB15XSI6ljm+BFRjeaCZ31jnkcU= X-Received: by 2002:a05:6a21:3943:b0:1cf:359b:1a31 with SMTP id adf61e73a8af0-1d30a9aac33mr3364069637.19.1726819819719; Fri, 20 Sep 2024 01:10:19 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Fri, 20 Sep 2024 17:10:03 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="000000000000f23687062288914f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f23687062288914f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Sep 19, 2024 at 9:10=E2=80=AFPM Amit Langote wrote: > On Thu, Sep 19, 2024 at 5:39=E2=80=AFPM Amit Langote wrote: > > For > > ResultRelInfos, I took the approach of memsetting them to 0 for pruned > > result relations and adding checks at multiple sites to ensure the > > ResultRelInfo being handled is valid. > > After some reflection, Not enough reflection, evidently... > I realized that nobody would think that that > approach is very robust. In the attached, I=E2=80=99ve modified > ExecInitModifyTable() to allocate ResultRelInfos only for unpruned > relations, instead of allocating for all in > ModifyTable.resultRelations and setting pruned ones to 0. This > approach feels more robust. Except, I forgot that ModifyTable has other lists that parallel resultRelations (of the same length) viz. withCheckOptionLists, returningLists, and updateColnosLists, which need to be similarly truncated to only consider unpruned relations. I've updated 0004 to do so. This was broken even in the other design where locking is delayed all the way until ExecInitAppend does initial pruning(), because ResultRelInfos are created before initializing the plan subtree containing the Append node, which would try to lock and open *all* partitions. Also, I've switched the order of 0002 and 0003 to avoid a situation where I add a function in 0002 only to remove it in 0003. By doing the refactoring to initialize PartitionPruneContexts lazily first, the patch to move the initial pruning to occur before ExecInitNode() became much simpler as it doesn't need to touch the code related to exec pruning. --=20 Thanks, Amit Langote --000000000000f23687062288914f Content-Type: application/octet-stream; name="v56-0005-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Disposition: attachment; filename="v56-0005-Handle-CachedPlan-invalidation-in-the-executor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1afwhzj0 RnJvbSA3NDgzMDQzOTk0NWZiOWQ3YjU5M2JiZWE4YjE5YTIxM2FhNGViNDdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjIgQXVnIDIwMjQgMTk6Mzg6MTMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NiA1LzVdIEhhbmRsZSBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBpbiB0aGUgZXhlY3V0b3IKClRo aXMgY29tbWl0IG1ha2VzIGNoYW5nZXMgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIGEgY2FjaGVkIHBs YW4KYmVjb21lcyBpbnZhbGlkIGJlZm9yZSBkZWZlcnJlZCBsb2NrcyBvbiBwcnVuYWJsZSByZWxh dGlvbnMgYXJlIHRha2VuLgoKKiBBZGQgY2hlY2tzIGF0IHZhcmlvdXMgcG9pbnRzIGluIEV4ZWN1 dG9yU3RhcnQoKSBhbmQgaXRzIGNhbGxlZAogIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgaWYgdGhl IHBsYW4gYmVjb21lcyBpbnZhbGlkLiBJZiBkZXRlY3RlZCwKICB0aGUgZnVuY3Rpb24gYW5kIGl0 cyBjYWxsZXJzIHJldHVybiBpbW1lZGlhdGVseS4gQSBwcmV2aW91cyBjb21taXQKICBlbnN1cmVz IGFueSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgUGxhblN0YXRlIHRyZWUgb2JqZWN0cyBhcmUgY2xl YW5lZAogIHVwIGFwcHJvcHJpYXRlbHkuCgoqIEludHJvZHVjZSBFeGVjdXRvclN0YXJ0RXh0KCks IGEgd3JhcHBlciBvdmVyIEV4ZWN1dG9yU3RhcnQoKSwgdG8KICBoYW5kbGUgY2FzZXMgd2hlcmUg cGxhbiBpbml0aWFsaXphdGlvbiBpcyBhYm9ydGVkIGR1ZSB0byBpbnZhbGlkYXRpb24uCiAgRXhl Y3V0b3JTdGFydEV4dCgpIGNyZWF0ZXMgYSBuZXcgdHJhbnNpZW50IENhY2hlZFBsYW4gaWYgbmVl ZGVkIGFuZAogIHJldHJpZXMgZXhlY3V0aW9uLiBUaGlzIG5ldyBlbnRyeSBwb2ludCBpcyBvbmx5 IHJlcXVpcmVkIGZvciBzaXRlcwogIHVzaW5nIHBsYW5jYWNoZS5jLiBJdCByZXF1aXJlcyBwYXNz aW5nIHRoZSBRdWVyeURlc2MsIGVmbGFncywKICBDYWNoZWRQbGFuU291cmNlLCBhbmQgcXVlcnlf aW5kZXggKGluZGV4IGluIENhY2hlZFBsYW5Tb3VyY2UucXVlcnlfbGlzdCkuCgoqIEFkZCBHZXRT aW5nbGVDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgdG8gY3JlYXRlIGEgdHJhbnNpZW50CiAg Q2FjaGVkUGxhbiBmb3IgYSBzcGVjaWZpZWQgcXVlcnkgaW4gdGhlIGdpdmVuIENhY2hlZFBsYW5T b3VyY2UuCiAgU3VjaCBDYWNoZWRQbGFucyBhcmUgdHJhY2tlZCBpbiBhIHNlcGFyYXRlIGdsb2Jh bCBsaXN0IGZvciB0aGUKICBwbGFuY2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrcyB0byBjaGVj ay4KClRoaXMgYWxzbyBhZGRzIGlzb2xhdGlvbiB0ZXN0cyB1c2luZyB0aGUgZGVsYXlfZXhlY3V0 aW9uIHRlc3QgbW9kdWxlCnRvIHZlcmlmeSBzY2VuYXJpb3Mgd2hlcmUgYSBDYWNoZWRQbGFuIGJl Y29tZXMgaW52YWxpZCBiZWZvcmUgdGhlCmRlZmVycmVkIGxvY2tzIGFyZSB0YWtlbi4KCkFsbCBF eGVjdXRvclN0YXJ0X2hvb2sgaW1wbGVtZW50YXRpb25zIG5vdyBtdXN0IGFkZCB0aGUgZm9sbG93 aW5nCmJsb2NrIGFmdGVyIHRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCB0byBlbnN1cmUgaXQgZG9l c24ndCB3b3JrIHdpdGggYW4KaW52YWxpZCBwbGFuOgoKICAgIC8qIFRoZSBwbGFuIG1heSBoYXZl IGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47CgpSZXZpZXdl ZC1ieTogUm9iZXJ0IEhhYXMKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdx RkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5j b21rCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwg ICA0ICsKIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAg NCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgIDgg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMTAgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICAxNCArKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwgIDM1ICsrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgIDg0ICsrKysr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICAgMyAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDE5ICst CiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8ICAzMSArKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDIwNiArKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAg ICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmggICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAx NyArKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAgICAgICAgICB8ICAyNiAr Kwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMgKy0K IC4uLi9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2MyArKysr LQogLi4uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCAgICAgICAgICAgIHwgMjMwICsr KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVzb24u YnVpbGQgIHwgICAxICsKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjICAgICAgICAg ICAgICB8ICA3NSArKysrKysKIDI2IGZpbGVzIGNoYW5nZWQsIDgxNCBpbnNlcnRpb25zKCspLCAz NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1p bnZhbC5zcGVjCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWlu LmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCA2NzdjMTM1ZjU5 Li45ZWI1ZTlhNjE5IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxh aW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtMzAwLDYg KzMwMCwxMCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZs YWdzKTsKIAorCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChxdWVyeURl c2MtPmVzdGF0ZSkpCisJCXJldHVybjsKKwogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQog CXsKIAkJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRf c3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmMKaW5kZXggM2M3MmU0MzdmNy4uNzY2NDJiNTU3YSAxMDA2NDQKLS0tIGEvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTk4NSw2ICs5ODUsMTAgQEAg cGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCWVs c2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKKwkvKiBU aGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3RhbmRhcmRfRXhlY3V0b3JT dGFydCgpICovCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlEZXNjLT5lc3RhdGUpKQor CQlyZXR1cm47CisKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRy YWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKIAkgKiBjb3VudGluZyBvZiBvcHRpbWl6YWJs ZSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGRpcmVjdGx5IGNvbnRhaW5lZCBpbgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhw bGFpbi5jCmluZGV4IDQ5ZjczNzA3MzQuLmI3YTBiOGMwNWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMKQEAgLTUwOSw3ICs1MDksOCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1 ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIAl9CiAKIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5k IHByb2R1Y2Ugb3V0cHV0ICovCi0JRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMs IHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5V TEwsIE5VTEwsIC0xLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywKKwkJCQkgICBxdWVy eUVudiwKIAkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBO VUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQpAQCAt NjE4LDYgKzYxOSw3IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRv Q2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICovCiB2b2lkCiBFeHBsYWluT25lUGxh bihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJICAgQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAogCQkJICAgSW50b0Ns YXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3Ry aW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCkBAIC02ODgsOCArNjkwLDggQEAg RXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxh biwKIAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7CiAKLQkv KiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICov Ci0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJLyogQ2FsbCBFeGVjdXRvclN0 YXJ0RXh0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlFeGVjdXRvclN0 YXJ0RXh0KHF1ZXJ5RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAkv KiBFeGVjdXRlIHRoZSBwbGFuIGZvciBzdGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChl cy0+YW5hbHl6ZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA0ZjZhY2Y2NzE5Li40 YjE1MDNjMDVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMDcsNiArMTA3LDcg QEAgUGVyZm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3Rt dCAqY3N0bXQsIFBhcmFtTGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJCQkJICBD TURUQUdfU0VMRUNULAkvKiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1QgKi8KIAkJ CQkJICBsaXN0X21ha2UxKHBsYW4pLAorCQkJCQkgIE5VTEwsCiAJCQkJCSAgTlVMTCk7CiAKIAkv Ki0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAzMTFiOWViZDViLi40Y2Q3OWE2 ZTNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0yMDIsNyArMjAyLDggQEAgRXhlY3V0ZVF1 ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgZW50 cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxhbl9saXN0LAotCQkJCQkgIGNw bGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSk7CiAKIAkvKgog CSAqIEZvciBDUkVBVEUgVEFCTEUgLi4uIEFTIEVYRUNVVEUsIHdlIG11c3QgdmVyaWZ5IHRoYXQg dGhlIHByZXBhcmVkCkBAIC01ODMsNiArNTg0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ TWVtb3J5Q29udGV4dENvdW50ZXJzIG1lbV9jb3VudGVyczsKIAlNZW1vcnlDb250ZXh0IHBsYW5u ZXJfY3R4ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IHNhdmVkX2N0eCA9IE5VTEw7CisJaW50CQkJ aSA9IDA7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTUsOCArNjU3LDggQEAgRXhwbGFp bkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4 cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQot CQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBw YXJhbUxJLAotCQkJCQkJICAgcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwgY3Bs YW4sIGVudHJ5LT5wbGFuc291cmNlLCBpLAorCQkJCQkJICAgaW50bywgZXMsIHF1ZXJ5X3N0cmlu ZywgcGFyYW1MSSwgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZl cnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50 ZXJzIDogTlVMTCk7CiAJCWVsc2UKQEAgLTY2OCw2ICs2NzAsOCBAQCBFeHBsYWluRXhlY3V0ZVF1 ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRl ICplcywKIAkJLyogU2VwYXJhdGUgcGxhbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSBzZXBhcmF0b3Ig Ki8KIAkJaWYgKGxuZXh0KHBsYW5fbGlzdCwgcCkgIT0gTlVMTCkKIAkJCUV4cGxhaW5TZXBhcmF0 ZVBsYW5zKGVzKTsKKworCQlpKys7CiAJfQogCiAJaWYgKGVzdGF0ZSkKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYwppbmRleCAyOWQzMGJmYjZmLi5lMzNiOGY1NzNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j CkBAIC01MTIwLDYgKzUxMjAsMjAgQEAgQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkoRVN0YXRlICplc3Rh dGUpCiAJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aC0tOwogfQogCisvKiAtLS0tLS0tLS0tCisg KiBBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KCkKKyAqCisgKiBDYWxsZWQgYnkgRXhlY3V0b3JFbmQo KSBpZiB0aGUgcXVlcnkgZXhlY3V0aW9uIHdhcyBhYm9ydGVkIGR1ZSB0byB0aGUKKyAqIHBsYW4g YmVjb21pbmcgaW52YWxpZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgKiAtLS0tLS0tLS0tCisg Ki8KK3ZvaWQKK0FmdGVyVHJpZ2dlckFib3J0UXVlcnkodm9pZCkKK3sKKwkvKiBSZXZlcnQgdGhl IGFjdGlvbnMgb2YgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSgpLiAqLworCWFmdGVyVHJpZ2dlcnMu cXVlcnlfZGVwdGgtLTsKK30KKwogCiAvKgogICogQWZ0ZXJUcmlnZ2VyRnJlZVF1ZXJ5CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9SRUFETUUKaW5kZXggNjQyZDYzYmU2MS4uYzc2YTAwYjM5NCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpA QCAtMjgwLDYgKzI4MCwyOCBAQCBhcmUgdHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVy IHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRleHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGgg RXhwckNvbnRleHRzLCBhbmQgY29tbW9ubHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93 bgogRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVz c2lvbnMgaW4uCiAKK1JlbGF0aW9uIExvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKworVHlwaWNh bGx5LCB3aGVuIHRoZSBleGVjdXRvciBpbml0aWFsaXplcyBhIHBsYW4gdHJlZSBmb3IgZXhlY3V0 aW9uLCBpdCBkb2Vzbid0Citsb2NrIG5vbi1pbmRleCByZWxhdGlvbnMgaWYgdGhlIHBsYW4gdHJl ZSBpcyBmcmVzaGx5IGdlbmVyYXRlZCBhbmQgbm90IGRlcml2ZWQKK2Zyb20gYSBDYWNoZWRQbGFu LiBUaGlzIGlzIGJlY2F1c2Ugc3VjaCBsb2NrcyBoYXZlIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hl ZAorZHVyaW5nIHRoZSBxdWVyeSdzIHBhcnNpbmcsIHJld3JpdGluZywgYW5kIHBsYW5uaW5nIHBo YXNlcy4gSG93ZXZlciwgd2l0aCBhCitjYWNoZWQgcGxhbiB0cmVlLCBzb21lIHJlbGF0aW9ucyBt YXkgcmVtYWluIHVubG9ja2VkLiBUaGUgZnVuY3Rpb24KK0FjcXVpcmVFeGVjdXRvckxvY2tzKCkg b25seSBsb2NrcyB1bnBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgcGxhbiwgZGVmZXJyaW5nCit0 aGUgbG9ja2luZyBvZiBwcnVuYWJsZSBvbmVzIHRvIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uLiBU aGlzIGF2b2lkcwordW5uZWNlc3NhcnkgbG9ja2luZyBvZiByZWxhdGlvbnMgdGhhdCB3aWxsIGJl IHBydW5lZCBkdXJpbmcgImluaXRpYWwiIHJ1bnRpbWUKK3BydW5pbmcgaW4gRXhlY0RvSW5pdGlh bFBydW5pbmcoKS4KKworVGhpcyBhcHByb2FjaCBjcmVhdGVzIGEgd2luZG93IHdoZXJlIGEgY2Fj aGVkIHBsYW4gdHJlZSB3aXRoIGNoaWxkIHRhYmxlcworY291bGQgYmVjb21lIG91dGRhdGVkIGlm IGFub3RoZXIgYmFja2VuZCBtb2RpZmllcyB0aGVzZSB0YWJsZXMgYmVmb3JlCitFeGVjRG9Jbml0 aWFsUHJ1bmluZygpIGxvY2tzIHRoZW0uIEFzIGEgcmVzdWx0LCB0aGUgZXhlY3V0b3IgaGFzIHRo ZSBhZGRlZCBkdXR5Cit0byB2ZXJpZnkgdGhlIHBsYW4gdHJlZSdzIHZhbGlkaXR5IHdoZW5ldmVy IGl0IGxvY2tzIGEgY2hpbGQgdGFibGUgYWZ0ZXIKK2RvaW5nIGluaXRpYWwgcHJ1bmluZy4gVGhp cyB2YWxpZGF0aW9uIGlzIGRvbmUgYnkgY2hlY2tpbmcgdGhlIENhY2hlZFBsYW4uaXNfdmFsaWQK K2F0dHJpYnV0ZS4gSWYgdGhlIHBsYW4gdHJlZSBpcyBvdXRkYXRlZCAoaXNfdmFsaWQ9ZmFsc2Up LCB0aGUgZXhlY3V0b3IgaGFsdHMKK2Z1cnRoZXIgaW5pdGlhbGl6YXRpb24sIGNsZWFucyB1cCBh bnl0aGluZyBpbiBFU3RhdGUgdGhhdCB3b3VsZCBoYXZlIGJlZW4KK2FsbG9jYXRlZCB1cCB0byB0 aGF0IHBvaW50LCBhbmQgcmV0cmllcyBleGVjdXRpb24gYWZ0ZXIgcmVjcmVhdGluZyB0aGUKK2lu dmFsaWQgcGxhbiBpbiB0aGUgQ2FjaGVkUGxhbi4KIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9s IEZsb3cKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yODgsMTEgKzMxMCwxMyBA QCBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNz aW5nOgogCiAJQ3JlYXRlUXVlcnlEZXNjCiAKLQlFeGVjdXRvclN0YXJ0CisJRXhlY3V0b3JTdGFy dCBvciBFeGVjdXRvclN0YXJ0RXh0CiAJCUNyZWF0ZUV4ZWN1dG9yU3RhdGUKIAkJCWNyZWF0ZXMg cGVyLXF1ZXJ5IGNvbnRleHQKLQkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBF eGVjSW5pdE5vZGUKKwkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjRG9J bml0aWFsUHJ1bmluZyBhbmQgRXhlY0luaXROb2RlCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVlcnkK KwkJRXhlY0RvSW5pdGlhbFBydW5pbmcKKwkJCWRvZXMgaW5pdGlhbCBwcnVuaW5nIGFuZCBsb2Nr cyBzdXJ2aXZpbmcgcGFydGl0aW9ucyBpZiBuZWVkZWQKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1 cnNpdmVseSBzY2FucyBwbGFuIHRyZWUKIAkJCUV4ZWNJbml0Tm9kZQogCQkJCXJlY3Vyc2UgaW50 byBzdWJzaWRpYXJ5IG5vZGVzCkBAIC0zMTYsNyArMzQwLDEyIEBAIFRoaXMgaXMgYSBza2V0Y2gg b2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlE ZXNjCiAKLVBlciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBF eGVjRW5kTm9kZSB0byBmcmVlIGFueQorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRpb24gTG9j a2luZyIgc2VjdGlvbiwgaWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3RhbGUgYWZ0 ZXIgbG9ja2luZyBwYXJ0aXRpb25zIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHRoZSBjb250 cm9sIGlzCitpbW1lZGlhdGVseSByZXR1cm5lZCB0byBFeGVjdXRvclN0YXJ0RXh0KCksIHdoaWNo IHdpbGwgY3JlYXRlIGEgbmV3IHBsYW4gdHJlZQorYW5kIHBlcmZvcm0gdGhlIHN0ZXBzIHN0YXJ0 aW5nIGZyb20gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpIGFnYWluLgorCitQZXIgYWJvdmUgY29tbWVu dHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkK IG1lbW9yeTsgaXQnbGwgYWxsIGdvIGF3YXkgaW4gRnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAg SG93ZXZlciwgd2UgZG8gbmVlZCB0bwogYmUgY2FyZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRy b3AgYnVmZmVyIHBpbnMsIGV0Yywgc28gd2UgZG8gbmVlZCB0byBzY2FuCiB0aGUgcGxhbiBzdGF0 ZSB0cmVlIHRvIGZpbmQgdGhlc2Ugc29ydHMgb2YgcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggMmMxNGVlMmI2Yi4uN2E2OTU0MjA0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIK ICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUu aCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9ybHMuaCIK ICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAKQEAgLTEzOCw2ICsxMzksNjAgQEAgRXhlY3V0 b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJc3RhbmRhcmRfRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiB9CiAKKy8qCisgKiBBIHZhcmlhbnQgb2Yg RXhlY3V0b3JTdGFydCgpIHRoYXQgaGFuZGxlcyBjbGVhbnVwIGFuZCByZXBsYW5uaW5nIGlmIHRo ZQorICogaW5wdXQgQ2FjaGVkUGxhbiBiZWNvbWVzIGludmFsaWQgZHVlIHRvIGxvY2tzIGJlaW5n IHRha2VuIGR1cmluZworICogRXhlY3V0b3JTdGFydEludGVybmFsKCkuICBJZiB0aGF0IGhhcHBl bnMsIGEgbmV3IENhY2hlZFBsYW4gaXMgY3JlYXRlZAorICogb25seSBmb3IgdGhlIGF0IHRoZSBp bmRleCAncXVlcnlfaW5kZXgnIGluIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QsIHdoaWNoCisgKiBp cyByZWxlYXNlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIG9yaWdpbmFsIENhY2hlZFBsYW4uCisgKi8K K3ZvaWQKK0V4ZWN1dG9yU3RhcnRFeHQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Ms CisJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJIGludCBxdWVyeV9pbmRl eCkKK3sKKwlpZiAocXVlcnlEZXNjLT5jcGxhbiA9PSBOVUxMKQorCXsKKwkJRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGVmbGFncyk7CisJCXJldHVybjsKKwl9CisKKwl3aGlsZSAoMSkKKwl7CisJ CUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlpZiAoIUNhY2hlZFBsYW5WYWxp ZChxdWVyeURlc2MtPmNwbGFuKSkKKwkJeworCQkJQ2FjaGVkUGxhbiAqY3BsYW47CisKKwkJCS8q CisJCQkgKiBUaGUgcGxhbiBnb3QgaW52YWxpZGF0ZWQsIHNvIHRyeSB3aXRoIGEgbmV3IHVwZGF0 ZWQgcGxhbi4KKwkJCSAqCisJCQkgKiBCdXQgZmlyc3QgdW5kbyB3aGF0IEV4ZWN1dG9yU3RhcnQo KSB3b3VsZCd2ZSBkb25lLiAgTWFyaworCQkJICogZXhlY3V0aW9uIGFzIGFib3J0ZWQgdG8gZW5z dXJlIHRoYXQgQUZURVIgdHJpZ2dlciBzdGF0ZSBpcworCQkJICogcHJvcGVybHkgcmVzZXQuCisJ CQkgKi8KKwkJCXF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19hYm9ydGVkID0gdHJ1ZTsKKwkJCUV4ZWN1 dG9yRW5kKHF1ZXJ5RGVzYyk7CisKKwkJCWNwbGFuID0gR2V0U2luZ2xlQ2FjaGVkUGxhbihwbGFu c291cmNlLCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCQlxdWVyeURlc2MtPnF1ZXJ5RW52KTsKKwor CQkJLyoKKwkJCSAqIEluc3RhbGwgdGhlIG5ldyB0cmFuc2llbnQgY3BsYW4gaW50byB0aGUgUXVl cnlEZXNjIHJlcGxhY2luZworCQkJICogdGhlIG9sZCBvbmUgc28gdGhhdCBleGVjdXRvciBpbml0 aWFsaXphdGlvbiBjb2RlIGNhbiBzZWUgaXQuCisJCQkgKiBNYXJrIGl0IGFzIGluIHVzZSBieSB1 cyBhbmQgYXNrIEZyZWVRdWVyeURlc2MoKSB0byByZWxlYXNlIGl0LgorCQkJICovCisJCQljcGxh bi0+cmVmY291bnQgPSAxOworCQkJcXVlcnlEZXNjLT5jcGxhbiA9IGNwbGFuOworCQkJcXVlcnlE ZXNjLT5jcGxhbl9yZWxlYXNlID0gdHJ1ZTsKKwkJCXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQgPSBs aW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LAorCQkJCQkJCQkJCQkJICAgcXVlcnlEZXNjLT5jcGxh bi0+c3RtdF9saXN0KTsKKwkJfQorCQllbHNlCisJCQlicmVhazsJLyogRXhlY3V0b3JTdGFydCgp IHN1Y2NlZWRlZCEgKi8KKwl9Cit9CisKIHZvaWQKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CkBAIC0zMjQsNiArMzc5LDcgQEAgc3Rh bmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlE ZXNjLT5lc3RhdGU7CiAKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRl LT5lc19hYm9ydGVkKTsKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZM QUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mg c25hcHNob3QgaXMgYWN0aXZlICovCkBAIC00MzMsOCArNDg5LDExIEBAIHN0YW5kYXJkX0V4ZWN1 dG9yRmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7 CiAJQXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05M WSkpOwogCi0JLyogVGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhl Y3V0b3IgaW5zdGFuY2UgKi8KLQlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQpOworCS8qCisJ ICogVGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5z dGFuY2UgYW5kIG5ldmVyCisJICogaWYgdGhlIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8K KwlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQgJiYgIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAK IAkvKiBTd2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgKi8KIAlvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTQ5Niwx MSArNTU1LDEwIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQog CUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAKIAkvKgotCSAqIENoZWNrIHRoYXQgRXhlY3V0b3JG aW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2RlLiBUaGlzCi0JICog QXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzIG5ldyBhcyBvZiA5LjEs IGFuZCBjYWxsZXJzCi0JICogbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCisJICogQ2hlY2sgdGhh dCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJTi1vbmx5IG1vZGUg b3IgaWYKKwkgKiBleGVjdXRpb24gd2FzIGFib3J0ZWQuCiAJICovCi0JQXNzZXJ0KGVzdGF0ZS0+ ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8fCBlc3RhdGUtPmVz X2Fib3J0ZWQgfHwKIAkJICAgKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBM QUlOX09OTFkpKTsKIAogCS8qCkBAIC01MTQsNiArNTcyLDE0IEBAIHN0YW5kYXJkX0V4ZWN1dG9y RW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCVVucmVnaXN0ZXJTbmFwc2hvdChlc3RhdGUtPmVz X3NuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19jcm9zc2NoZWNrX3Nu YXBzaG90KTsKIAorCS8qCisJICogUmVzZXQgQUZURVIgdHJpZ2dlciBtb2R1bGUgaWYgdGhlIHF1 ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19hYm9ydGVk ICYmCisJCSEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYKKwkJICAoRVhFQ19GTEFHX1NLSVBfVFJJ R0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkpCisJCUFmdGVyVHJpZ2dlckFib3J0UXVl cnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ry b3lpbmcgaXQKIAkgKi8KQEAgLTk3Miw2ICsxMDM4LDkgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxh bm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwogCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVzdGF0ZSk7 CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CisKIAkvKgog CSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93TWFy ayhzKSwgaWYgYW55LgogCSAqLwpAQCAtMjk1OCw2ICszMDI3LDkgQEAgRXZhbFBsYW5RdWFsU3Rh cnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkgKiB0aGUgc25hcHNob3Qs IHJhbmdldGFibGUsIGFuZCBleHRlcm5hbCBQYXJhbSBpbmZvLiAgVGhleSBuZWVkIHRoZWlyIG93 bgogCSAqIGNvcGllcyBvZiBsb2NhbCBzdGF0ZSwgaW5jbHVkaW5nIGEgdHVwbGUgdGFibGUsIGVz X3BhcmFtX2V4ZWNfdmFscywKIAkgKiByZXN1bHQtcmVsIGluZm8sIGV0Yy4KKwkgKgorCSAqIGVz X2NhY2hlZHBsYW4gaXMgbm90IGNvcGllZCBiZWNhdXNlIEVQUSBwbGFuIGV4ZWN1dGlvbiBkb2Vz IG5vdCBhY3F1aXJlCisJICogYW55IG5ldyBsb2NrcyB0aGF0IGNvdWxkIGludmFsaWRhdGUgdGhl IENhY2hlZFBsYW4uCiAJICovCiAJcmNlc3RhdGUtPmVzX2RpcmVjdGlvbiA9IEZvcndhcmRTY2Fu RGlyZWN0aW9uOwogCXJjZXN0YXRlLT5lc19zbmFwc2hvdCA9IHBhcmVudGVzdGF0ZS0+ZXNfc25h cHNob3Q7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDY3NzM0OTc5YjAuLjQzNWFlMGRm N2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC0xNDcsNiArMTQ3LDcgQEAgQ3JlYXRl RXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNfdG9wX2VmbGFncyA9IDA7CiAJZXN0YXRl LT5lc19pbnN0cnVtZW50ID0gMDsKIAllc3RhdGUtPmVzX2ZpbmlzaGVkID0gZmFsc2U7CisJZXN0 YXRlLT5lc19hYm9ydGVkID0gZmFsc2U7CiAKIAllc3RhdGUtPmVzX2V4cHJjb250ZXh0cyA9IE5J TDsKIApAQCAtNzU3LDcgKzc1OCw3IEBAIEV4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0 ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zKQogICogRXhlY0dldFJhbmdlVGFi bGVSZWxhdGlvbgogICoJCU9wZW4gdGhlIFJlbGF0aW9uIGZvciBhIHJhbmdlIHRhYmxlIGVudHJ5 LCBpZiBub3QgYWxyZWFkeSBkb25lCiAgKgotICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3Nl ZCBhZ2FpbiBpbiBFeGVjRW5kUGxhbigpLgorICogVGhlIFJlbGF0aW9ucyB3aWxsIGJlIGNsb3Nl ZCBpbiBFeGVjRW5kUGxhbigpLgogICovCiBSZWxhdGlvbgogRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCA2NTliZDZk Y2Q5Li5mODRmMzc2YzljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtNzAsNyArNzAsOCBAQCBzdGF0aWMg aW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9w dGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1z KGludCBuYXJncywgT2lkICphcmd0eXBlcywKIAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29u c3QgY2hhciAqTnVsbHMpOwogCi1zdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGludAlf U1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50 NjQgdGNvdW50LAorCQkJCQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5 X2luZGV4KTsKIAogc3RhdGljIHZvaWQgX1NQSV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwog CkBAIC0xNjgyLDcgKzE2ODMsOCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hh ciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBw bGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7 CisJCQkJCSAgY3BsYW4sCisJCQkJCSAgcGxhbnNvdXJjZSk7CiAKIAkvKgogCSAqIFNldCB1cCBv cHRpb25zIGZvciBwb3J0YWwuICBEZWZhdWx0IFNDUk9MTCB0eXBlIGlzIGNob3NlbiB0aGUgc2Ft ZSB3YXkKQEAgLTI0OTQsNiArMjQ5Niw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIg cGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCUNhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UgPSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBsZmlyc3QobGMxKTsKIAkJTGlz dAkgICAqc3RtdF9saXN0OwogCQlMaXN0Q2VsbCAgICpsYzI7CisJCWludAkJCWkgPSAwOwogCiAJ CXNwaWNhbGxiYWNrYXJnLnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0y NjkxLDggKzI2OTQsOSBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0 IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQkJCQkJCW9wdGlvbnMtPnBhcmFtcywK IAkJCQkJCQkJCQlfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCTApOwotCQkJCXJl cyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLAotCQkJCQkJCQkgIGNhblNldFRh ZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOworCisJCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2Ms IGZpcmVfdHJpZ2dlcnMsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDAsCisJCQkJCQkJ CSAgcGxhbnNvdXJjZSwgaSk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9CiAJCQll bHNlCkBAIC0yNzg5LDYgKzI3OTMsOCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBs YW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCW15X3JlcyA9IHJlczsK IAkJCQlnb3RvIGZhaWw7CiAJCQl9CisKKwkJCWkrKzsKIAkJfQogCiAJCS8qIERvbmUgd2l0aCB0 aGlzIHBsYW4sIHNvIHJlbGVhc2UgcmVmY291bnQgKi8KQEAgLTI4NjYsNyArMjg3Miw4IEBAIF9T UElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBzdGF0aWMg aW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJz LCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIGludCBxdWVyeV9pbmRleCkKIHsKIAlpbnQJCQlvcGVyYXRpb24gPSBxdWVyeURlc2Mt Pm9wZXJhdGlvbjsKIAlpbnQJCQllZmxhZ3M7CkBAIC0yOTIyLDcgKzI5MjksNyBAQCBfU1BJX3Bx dWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNv dW50KQogCWVsc2UKIAkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CiAKLQlFeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwlFeGVjdXRvclN0YXJ0RXh0KHF1ZXJ5RGVz YywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CiAKIAlFeGVjdXRvclJ1bihxdWVy eURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCB0Y291bnQsIHRydWUpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKaW5kZXggZTM5NGYxNDE5YS4uYjk1Yzg1OTY1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIz Nyw2ICsxMjM3LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5n KQogCQkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRUYWcsCiAJCQkJCQkgIHBs YW50cmVlX2xpc3QsCisJCQkJCQkgIE5VTEwsCiAJCQkJCQkgIE5VTEwpOwogCiAJCS8qCkBAIC0y MDM5LDcgKzIwNDAsOCBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3Nh Z2UpCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJ CSAgY3BsYW4tPnN0bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7CisJCQkJCSAgY3BsYW4sCisJCQkJ CSAgcHNyYyk7CiAKIAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcmFtZXRl ciBJL08gYW5kIHBhcnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25hcHNob3Rfc2V0KQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5 LmMKaW5kZXggNmU4ZjZiMWI4Zi4uZGJiMGZmYjc3MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2ICsx OSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3By ZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAi cGdfdHJhY2UuaCIKQEAgLTM3LDYgKzM4LDggQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxM OwogCiBzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJCQkJCQkg Q2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK KwkJCQkJCSBpbnQgcXVlcnlfaW5kZXgsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwK IAkJCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKQEAgLTgwLDYgKzgzLDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlOwkv KiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsJLyogcGxhbiAq LwogCXFkLT5jcGxhbiA9IGNwbGFuOwkJCS8qIENhY2hlZFBsYW4gc3VwcGx5aW5nIHRoZSBwbGFu bmVkc3RtdCAqLworCXFkLT5jcGxhbl9yZWxlYXNlID0gZmFsc2U7CiAJcWQtPnNvdXJjZVRleHQg PSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3Qg Ki8KQEAgLTExNCw2ICsxMTgsMTMgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQog CVVucmVnaXN0ZXJTbmFwc2hvdChxZGVzYy0+c25hcHNob3QpOwogCVVucmVnaXN0ZXJTbmFwc2hv dChxZGVzYy0+Y3Jvc3NjaGVja19zbmFwc2hvdCk7CiAKKwkvKgorCSAqIFJlbGVhc2UgQ2FjaGVk UGxhbiBpZiByZXF1ZXN0ZWQuICBUaGUgQ2FjaGVkUGxhbiBpcyBub3QgYXNzb2NpYXRlZCB3aXRo CisJICogYSBSZXNvdXJjZU93bmVyIHdoZW4gY3BsYW5fcmVsZWFzZSBpcyB0cnVlOyBzZWUgRXhl Y3V0b3JTdGFydEV4dCgpLgorCSAqLworCWlmIChxZGVzYy0+Y3BsYW5fcmVsZWFzZSkKKwkJUmVs ZWFzZUNhY2hlZFBsYW4ocWRlc2MtPmNwbGFuLCBOVUxMKTsKKwogCS8qIE9ubHkgdGhlIFF1ZXJ5 RGVzYyBpdHNlbGYgbmVlZCBiZSBmcmVlZCAqLwogCXBmcmVlKHFkZXNjKTsKIH0KQEAgLTEyNiw2 ICsxMzcsOCBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgogICoJcGxhbjog dGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CiAgKgljcGxhbjogQ2FjaGVkUGxhbiBzdXBwbHlp bmcgdGhlIHBsYW4KKyAqCXBsYW5zb3VyY2U6IENhY2hlZFBsYW5Tb3VyY2Ugc3VwcGx5aW5nIHRo ZSBjcGxhbgorICoJcXVlcnlfaW5kZXg6IGluZGV4IG9mIHRoZSBxdWVyeSBpbiBwbGFuc291cmNl LT5xdWVyeV9saXN0CiAgKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5 CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8gc2Vu ZCByZXN1bHRzCkBAIC0xMzksNiArMTUyLDggQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFk ZXNjKQogc3RhdGljIHZvaWQKIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkJCSBD YWNoZWRQbGFuICpjcGxhbiwKKwkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJ IGludCBxdWVyeV9pbmRleCwKIAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAtMTU3 LDcgKzE3Miw3IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENh bGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KIAkgKi8K LQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJRXhlY3V0b3JTdGFydEV4dChxdWVyeURl c2MsIDAsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFu IHRvIGNvbXBsZXRpb24uCkBAIC01MTgsOSArNTMzLDEyIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAog CQkJCS8qCi0JCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9y IGV4ZWN1dGlvbgorCQkJCSAqIEV4ZWN1dG9yU3RhcnRFeHQoKSB0byBwcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24uICBJZgorCQkJCSAqIHRoZSBwb3J0YWwgaXMgdXNpbmcgYSBjYWNoZWQg cGxhbiwgaXQgIG1heSBnZXQgaW52YWxpZGF0ZWQKKwkJCQkgKiBkdXJpbmcgcGxhbiBpbnRpYWxp emF0aW9uLCBpbiB3aGljaCBjYXNlIGEgbmV3IG9uZSBpcworCQkJCSAqIGNyZWF0ZWQgYW5kIHNh dmVkIGluIHRoZSBRdWVyeURlc2MuCiAJCQkJICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIG15ZWZsYWdzKTsKKwkJCQlFeGVjdXRvclN0YXJ0RXh0KHF1ZXJ5RGVzYywgbXllZmxhZ3Ms IHBvcnRhbC0+cGxhbnNvdXJjZSwgMCk7CiAKIAkJCQkvKgogCQkJCSAqIFRoaXMgdGVsbHMgUG9y dGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCkBAIC0xMjAxLDYgKzEyMTksNyBA QCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hv dF9zZXQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpzdG10bGlzdF9pdGVtOworCWludAkJCWkgPSAw OwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNo YW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTI4Myw2ICsxMzAyLDggQEAgUG9ydGFsUnVuTXVs dGkoUG9ydGFsIHBvcnRhbCwKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICov CiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAogCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAorCQkJCQkJ CSBwb3J0YWwtPnBsYW5zb3VyY2UsCisJCQkJCQkJIGksCiAJCQkJCQkJIHBvcnRhbC0+c291cmNl VGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+cXVl cnlFbnYsCkBAIC0xMjkzLDYgKzEzMTQsOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFs LAogCQkJCS8qIHN0bXQgYWRkZWQgYnkgcmV3cml0ZSBjYW5ub3Qgc2V0IHRhZyAqLwogCQkJCVBy b2Nlc3NRdWVyeShwc3RtdCwKIAkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJCQkJCQkgcG9ydGFs LT5wbGFuc291cmNlLAorCQkJCQkJCSBpLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJ CQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApA QCAtMTM1Nyw2ICsxMzgwLDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJICov CiAJCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBOVUxMKQogCQkJ Q29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCQlpKys7CiAJfQogCiAJLyogUG9wIHRoZSBz bmFwc2hvdCBpZiB3ZSBwdXNoZWQgb25lLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YwppbmRleCA1Yjc1ZGFkZjEzLi5kMzNmODcxZWEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFu Y2FjaGUuYwpAQCAtOTQsNiArOTQsMTQgQEAKICAqLwogc3RhdGljIGRsaXN0X2hlYWQgc2F2ZWRf cGxhbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoc2F2ZWRfcGxhbl9saXN0KTsKIAorLyoKKyAq IEhlYWQgb2YgdGhlIGJhY2tlbmQncyBsaXN0IG9mICJzdGFuZGFsb25lIiBDYWNoZWRQbGFucyB0 aGF0IGFyZSBub3QKKyAqIGFzc29jaWF0ZWQgd2l0aCBhIENhY2hlZFBsYW5Tb3VyY2UsIGNyZWF0 ZWQgYnkgR2V0U2luZ2xlQ2FjaGVkUGxhbigpIGZvcgorICogdHJhbnNpZW50IHVzZSBieSB0aGUg ZXhlY3V0b3IgaW4gY2VydGFpbiBzY2VuYXJpb3Mgd2hlcmUgdGhleSdyZSBuZWVkZWQKKyAqIG9u bHkgZm9yIG9uZSBleGVjdXRpb24gb2YgdGhlIHBsYW4uCisgKi8KK3N0YXRpYyBkbGlzdF9oZWFk IHN0YW5kYWxvbmVfcGxhbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoc3RhbmRhbG9uZV9wbGFu X2xpc3QpOworCiAvKgogICogVGhpcyBpcyB0aGUgaGVhZCBvZiB0aGUgYmFja2VuZCdzIGxpc3Qg b2YgQ2FjaGVkRXhwcmVzc2lvbnMuCiAgKi8KQEAgLTkwNSw2ICs5MTMsOCBAQCBDaGVja0NhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFBsYW5uaW5nIHdvcmsgaXMg ZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuICBUaGUgZmluaXNoZWQgcGxhbgog ICogaXMgaW4gYSBjaGlsZCBtZW1vcnkgY29udGV4dCwgd2hpY2ggdHlwaWNhbGx5IHNob3VsZCBn ZXQgcmVwYXJlbnRlZAogICogKHVubGVzcyB0aGlzIGlzIGEgb25lLXNob3QgcGxhbiwgaW4gd2hp Y2ggY2FzZSB3ZSBkb24ndCBjb3B5IHRoZSBwbGFuKS4KKyAqCisgKiBOb3RlOiBXaGVuIGNoYW5n aW5nIHRoaXMsIHlvdSBzaG91bGQgYWxzbyBsb29rIGF0IEdldFNpbmdsZUNhY2hlZFBsYW4oKS4K ICAqLwogc3RhdGljIENhY2hlZFBsYW4gKgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LApAQCAtMTAzNCw2ICsxMDQ0LDcgQEAgQnVpbGRD YWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCXBs YW4tPmlzX2dlbmVyaWMgPSBnZW5lcmljOwogCXBsYW4tPmlzX3NhdmVkID0gZmFsc2U7CiAJcGxh bi0+aXNfdmFsaWQgPSB0cnVlOworCXBsYW4tPmlzX3N0YW5kYWxvbmUgPSBmYWxzZTsKIAogCS8q IGFzc2lnbiBnZW5lcmF0aW9uIG51bWJlciB0byBuZXcgcGxhbiAqLwogCXBsYW4tPmdlbmVyYXRp b24gPSArKyhwbGFuc291cmNlLT5nZW5lcmF0aW9uKTsKQEAgLTEyODIsNiArMTI5MywxMjEgQEAg R2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCXJldHVybiBwbGFuOwogfQogCisvKgorICogQ3JlYXRlIGEgZnJlc2gg Q2FjaGVkUGxhbiBmb3IgdGhlIHF1ZXJ5X2luZGV4J3RoIHF1ZXJ5IGluIHRoZSBwcm92aWRlZAor ICogQ2FjaGVkUGxhblNvdXJjZS4KKyAqCisgKiBUaGUgY3JlYXRlZCBDYWNoZWRQbGFuIGlzIHN0 YW5kYWxvbmUsIG1lYW5pbmcgaXQgaXMgbm90IHRyYWNrZWQgaW4gdGhlCisgKiBDYWNoZWRQbGFu U291cmNlLiBUaGUgQ2FjaGVkUGxhbiBhbmQgaXRzIHBsYW4gdHJlZXMgYXJlIGFsbG9jYXRlZCBp biBhCisgKiBjaGlsZCBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBtZW1vcnkgY29udGV4dC4gVGhl IGNhbGxlciBtdXN0IGVuc3VyZSB0aGV5CisgKiByZW1haW4gdmFsaWQgdW50aWwgZXhlY3V0aW9u IGlzIGNvbXBsZXRlLCBhZnRlciB3aGljaCB0aGUgcGxhbiBzaG91bGQgYmUKKyAqIHJlbGVhc2Vk IGJ5IGNhbGxpbmcgUmVsZWFzZUNhY2hlZFBsYW4oKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHBy aW1hcmlseSBzdXBwb3J0cyBFeGVjdXRvclN0YXJ0RXh0KCksIHdoaWNoIGhhbmRsZXMgY2FzZXMK KyAqIHdoZXJlIHRoZSBvcmlnaW5hbCBnZW5lcmljIENhY2hlZFBsYW4gYmVjb21lcyBpbnZhbGlk IGFmdGVyIHBydW5hYmxlCisgKiByZWxhdGlvbnMgYXJlIGxvY2tlZC4KKyAqLworQ2FjaGVkUGxh biAqCitHZXRTaW5nbGVDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGlu dCBxdWVyeV9pbmRleCwKKwkJCQkJUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJTGlz dCAqcXVlcnlfbGlzdCA9IHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QsCisJCSAqcGxhbl9saXN0Owor CUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKKwlNZW1vcnlDb250ZXh0IG9s ZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQlwbGFuX2NvbnRleHQ7CisJUGxhbm5lZFN0 bXQgKnBsYW5uZWRzdG10OworCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyog U2FuaXR5IGNoZWNrcyAqLworCWlmIChwbGFuID09IE5VTEwpCisJCWVsb2coRVJST1IsICJHZXRT aW5nbGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBwbGFuc291cmNl LT5ncGxhbiBpcyBOVUxMIik7CisJZWxzZSBpZiAocGxhbi0+aXNfdmFsaWQpCisJCWVsb2coRVJS T1IsICJHZXRTaW5nbGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBw bGFuc291cmNlLT5ncGxhbi0+aXNfdmFsaWQiKTsKKworCS8qCisJICogVGhlIHBsYW5zb3VyY2Ug bWlnaHQgaGF2ZSBiZWNvbWUgaW52YWxpZCBzaW5jZSBHZXRDYWNoZWRQbGFuKCkuIFNlZSB0aGUK KwkgKiBjb21tZW50IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGZvciBkZXRhaWxzIG9uIHdoeSB0aGlz IG1pZ2h0IGhhcHBlbi4KKwkgKgorCSAqIFRoZSByaXNrIGlzIGdyZWF0ZXIgaGVyZSBiZWNhdXNl IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlCisJICogZXhlY3V0b3IsIG1lYW5pbmcg bXVjaCBtb3JlIHByb2Nlc3NpbmcgbWF5IGhhdmUgb2NjdXJyZWQgY29tcGFyZWQgdG8KKwkgKiB3 aGVuIEJ1aWxkQ2FjaGVkUGxhbigpIGlzIGNhbGxlZCBmcm9tIEdldENhY2hlZFBsYW4oKS4KKwkg Ki8KKwlpZiAoIXBsYW5zb3VyY2UtPmlzX3ZhbGlkKQorCQlxdWVyeV9saXN0ID0gUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwlBc3NlcnQocXVlcnlfbGlzdCAh PSBOSUwpOworCisJLyoKKwkgKiBCdWlsZCBhIG5ldyBnZW5lcmljIHBsYW4gZm9yIHRoZSBxdWVy eV9pbmRleCd0aCBxdWVyeSwgYnV0IG1ha2UgYSBjb3B5CisJICogdG8gYmUgc2NyaWJibGVkIG9u IGJ5IHRoZSBwbGFubmVyCisJICovCisJcXVlcnlfbGlzdCA9IGxpc3RfbWFrZTEoY29weU9iamVj dChsaXN0X250aF9ub2RlKFF1ZXJ5LCBxdWVyeV9saXN0LAorCQkJCQkJCQkJCQkJCSBxdWVyeV9p bmRleCkpKTsKKwlwbGFuX2xpc3QgPSBwZ19wbGFuX3F1ZXJpZXMocXVlcnlfbGlzdCwgcGxhbnNv dXJjZS0+cXVlcnlfc3RyaW5nLAorCQkJCQkJCQlwbGFuc291cmNlLT5jdXJzb3Jfb3B0aW9ucywg TlVMTCk7CisKKwlsaXN0X2ZyZWVfZGVlcChxdWVyeV9saXN0KTsKKworCS8qCisJICogTWFrZSBh IGRlZGljYXRlZCBtZW1vcnkgY29udGV4dCBmb3IgdGhlIENhY2hlZFBsYW4gYW5kIGl0cyBzdWJz aWRpYXJ5CisJICogZGF0YSBzbyB0aGF0IHdlIGNhbiByZWxlYXNlIGl0IGluIFJlbGVhc2VDYWNo ZWRQbGFuKCkgdGhhdCB3aWxsIGJlCisJICogY2FsbGVkIGluIEZyZWVRdWVyeURlc2MoKS4KKwkg Ki8KKwlwbGFuX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNv bnRleHQsCisJCQkJCQkJCQkJICJTdGFuZGFsb25lIENhY2hlZFBsYW4iLAorCQkJCQkJCQkJCSBB TExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpFUyk7CisJTWVtb3J5Q29udGV4dENvcHlBbmRTZXRJZGVu dGlmaWVyKHBsYW5fY29udGV4dCwgcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nKTsKKworCS8qCisJ ICogQ29weSBwbGFuIGludG8gdGhlIG5ldyBjb250ZXh0LgorCSAqLworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhwbGFuX2NvbnRleHQpOworCXBsYW5fbGlzdCA9IGNvcHlPYmplY3QocGxhbl9saXN0 KTsKKworCS8qCisJICogQ3JlYXRlIGFuZCBmaWxsIHRoZSBDYWNoZWRQbGFuIHN0cnVjdCB3aXRo aW4gdGhlIG5ldyBjb250ZXh0LgorCSAqLworCXBsYW4gPSAoQ2FjaGVkUGxhbiAqKSBwYWxsb2Mo c2l6ZW9mKENhY2hlZFBsYW4pKTsKKwlwbGFuLT5tYWdpYyA9IENBQ0hFRFBMQU5fTUFHSUM7CisJ cGxhbi0+c3RtdF9saXN0ID0gcGxhbl9saXN0OworCisJcGxhbi0+cGxhblJvbGVJZCA9IEdldFVz ZXJJZCgpOworCUFzc2VydChsaXN0X2xlbmd0aChwbGFuX2xpc3QpID09IDEpOworCXBsYW5uZWRz dG10ID0gbGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcGxhbl9saXN0KTsKKworCS8qCisJICog Q2FjaGVkUGxhbiBpcyBkZXBlbmRlbnQgb24gcm9sZSBlaXRoZXIgaWYgUkxTIGFmZmVjdGVkIHRo ZSByZXdyaXRlCisJICogcGhhc2Ugb3IgaWYgYSByb2xlIGRlcGVuZGVuY3kgd2FzIGluamVjdGVk IGR1cmluZyBwbGFubmluZy4gIEFuZCBpdCdzCisJICogdHJhbnNpZW50IGlmIGFueSBwbGFuIGlz IG1hcmtlZCBzby4KKwkgKi8KKwlwbGFuLT5kZXBlbmRzT25Sb2xlID0gcGxhbnNvdXJjZS0+ZGVw ZW5kc09uUkxTIHx8IHBsYW5uZWRzdG10LT5kZXBlbmRzT25Sb2xlOworCWlmIChwbGFubmVkc3Rt dC0+dHJhbnNpZW50UGxhbikKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNOb3JtYWwoVHJh bnNhY3Rpb25YbWluKSk7CisJCXBsYW4tPnNhdmVkX3htaW4gPSBUcmFuc2FjdGlvblhtaW47CisJ fQorCWVsc2UKKwkJcGxhbi0+c2F2ZWRfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXBs YW4tPnJlZmNvdW50ID0gMDsKKwlwbGFuLT5jb250ZXh0ID0gcGxhbl9jb250ZXh0OworCXBsYW4t PmlzX29uZXNob3QgPSBmYWxzZTsKKwlwbGFuLT5pc19nZW5lcmljID0gdHJ1ZTsKKwlwbGFuLT5p c19zYXZlZCA9IGZhbHNlOworCXBsYW4tPmlzX3ZhbGlkID0gdHJ1ZTsKKwlwbGFuLT5pc19zdGFu ZGFsb25lID0gdHJ1ZTsKKwlwbGFuLT5nZW5lcmF0aW9uID0gMTsKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3h0KTsKKworCS8qCisJICogQWRkIHRoZSBlbnRyeSB0byB0aGUgZ2xvYmFsIGxp c3Qgb2YgInN0YW5kYWxvbmUiIGNhY2hlZCBwbGFucy4gIEl0IGlzCisJICogcmVtb3ZlZCBmcm9t IHRoZSBsaXN0IGJ5IFJlbGVhc2VDYWNoZWRQbGFuKCkuCisJICovCisJZGxpc3RfcHVzaF90YWls KCZzdGFuZGFsb25lX3BsYW5fbGlzdCwgJnBsYW4tPm5vZGUpOworCisJcmV0dXJuIHBsYW47Cit9 CisKIC8qCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbjogcmVsZWFzZSBhY3RpdmUgdXNlIG9mIGEgY2Fj aGVkIHBsYW4uCiAgKgpAQCAtMTMwOSw2ICsxNDM1LDEwIEBAIFJlbGVhc2VDYWNoZWRQbGFuKENh Y2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpCiAJCS8qIE1hcmsgaXQgbm8gbG9u Z2VyIHZhbGlkICovCiAJCXBsYW4tPm1hZ2ljID0gMDsKIAorCQkvKiBSZW1vdmUgZnJvbSB0aGUg Z2xvYmFsIGxpc3QgaWYgd2UgYXJlIGEgc3RhbmRhbG9uZSBwbGFuLiAqLworCQlpZiAocGxhbi0+ aXNfc3RhbmRhbG9uZSkKKwkJCWRsaXN0X2RlbGV0ZSgmcGxhbi0+bm9kZSk7CisKIAkJLyogT25l LXNob3QgcGxhbnMgZG8gbm90IG93biB0aGVpciBjb250ZXh0LCBzbyB3ZSBjYW4ndCBmcmVlIHRo ZW0gKi8KIAkJaWYgKCFwbGFuLT5pc19vbmVzaG90KQogCQkJTWVtb3J5Q29udGV4dERlbGV0ZShw bGFuLT5jb250ZXh0KTsKQEAgLTIwNjYsNiArMjE5NiwzMyBAQCBQbGFuQ2FjaGVSZWxDYWxsYmFj ayhEYXR1bSBhcmcsIE9pZCByZWxpZCkKIAkJCWNleHByLT5pc192YWxpZCA9IGZhbHNlOwogCQl9 CiAJfQorCisJLyogRmluYWxseSwgaW52YWxpZGF0ZSBhbnkgc3RhbmRhbG9uZSBjYWNoZWQgcGxh bnMgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIsICZzdGFuZGFsb25lX3BsYW5fbGlzdCkKKwl7CisJ CUNhY2hlZFBsYW4gKmNwbGFuID0gZGxpc3RfY29udGFpbmVyKENhY2hlZFBsYW4sCisJCQkJCQkJ CQkJCW5vZGUsIGl0ZXIuY3VyKTsKKworCQlBc3NlcnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBM QU5fTUFHSUMpOworCisJCWlmIChjcGxhbi0+aXNfdmFsaWQpCisJCXsKKwkJCUxpc3RDZWxsICAg KmxjOworCisJCQlmb3JlYWNoKGxjLCBjcGxhbi0+c3RtdF9saXN0KQorCQkJeworCQkJCVBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisKKwkJ CQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQorCQkJCQljb250 aW51ZTsJLyogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cyAqLworCQkJCWlmICgocmVsaWQgPT0g SW52YWxpZE9pZCkgPyBwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzICE9IE5JTCA6CisJCQkJCWxp c3RfbWVtYmVyX29pZChwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzLCByZWxpZCkpCisJCQkJCWNw bGFuLT5pc192YWxpZCA9IGZhbHNlOworCQkJCWlmICghY3BsYW4tPmlzX3ZhbGlkKQorCQkJCQli cmVhazsJCS8qIG91dCBvZiBzdG10X2xpc3Qgc2NhbiAqLworCQkJfQorCQl9CisJfQogfQogCiAv KgpAQCAtMjE3Niw2ICsyMzMzLDQ0IEBAIFBsYW5DYWNoZU9iamVjdENhbGxiYWNrKERhdHVtIGFy ZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiAJCQl9CiAJCX0KIAl9CisKKwkvKiBG aW5hbGx5LCBpbnZhbGlkYXRlIGFueSBzdGFuZGFsb25lIGNhY2hlZCBwbGFucyAqLworCWRsaXN0 X2ZvcmVhY2goaXRlciwgJnN0YW5kYWxvbmVfcGxhbl9saXN0KQorCXsKKwkJQ2FjaGVkUGxhbiAq Y3BsYW4gPSBkbGlzdF9jb250YWluZXIoQ2FjaGVkUGxhbiwKKwkJCQkJCQkJCQkJbm9kZSwgaXRl ci5jdXIpOworCisJCUFzc2VydChjcGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CisK KwkJaWYgKGNwbGFuLT5pc192YWxpZCkKKwkJeworCQkJTGlzdENlbGwgICAqbGM7CisKKwkJCWZv cmVhY2gobGMsIGNwbGFuLT5zdG10X2xpc3QpCisJCQl7CisJCQkJUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjKTsKKwkJCQlMaXN0Q2VsbCAgICps YzM7CisKKwkJCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQor CQkJCQljb250aW51ZTsJLyogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cyAqLworCQkJCWZvcmVh Y2gobGMzLCBwbGFubmVkc3RtdC0+aW52YWxJdGVtcykKKwkJCQl7CisJCQkJCVBsYW5JbnZhbEl0 ZW0gKml0ZW0gPSAoUGxhbkludmFsSXRlbSAqKSBsZmlyc3QobGMzKTsKKworCQkJCQlpZiAoaXRl bS0+Y2FjaGVJZCAhPSBjYWNoZWlkKQorCQkJCQkJY29udGludWU7CisJCQkJCWlmIChoYXNodmFs dWUgPT0gMCB8fAorCQkJCQkJaXRlbS0+aGFzaFZhbHVlID09IGhhc2h2YWx1ZSkKKwkJCQkJewor CQkJCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCQkJCQlicmVhazsJLyogb3V0IG9mIGlu dmFsSXRlbXMgc2NhbiAqLworCQkJCQl9CisJCQkJfQorCQkJCWlmICghY3BsYW4tPmlzX3ZhbGlk KQorCQkJCQlicmVhazsJCS8qIG91dCBvZiBzdG10X2xpc3Qgc2NhbiAqLworCQkJfQorCQl9CisJ fQogfQogCiAvKgpAQCAtMjIzNSw2ICsyNDMwLDE3IEBAIFJlc2V0UGxhbkNhY2hlKHZvaWQpCiAK IAkJY2V4cHItPmlzX3ZhbGlkID0gZmFsc2U7CiAJfQorCisJLyogRmluYWxseSwgaW52YWxpZGF0 ZSBhbnkgc3RhbmRhbG9uZSBjYWNoZWQgcGxhbnMgKi8KKwlkbGlzdF9mb3JlYWNoKGl0ZXIsICZz dGFuZGFsb25lX3BsYW5fbGlzdCkKKwl7CisJCUNhY2hlZFBsYW4gKmNwbGFuID0gZGxpc3RfY29u dGFpbmVyKENhY2hlZFBsYW4sCisJCQkJCQkJCQkJCW5vZGUsIGl0ZXIuY3VyKTsKKworCQlBc3Nl cnQoY3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCisJCWNwbGFuLT5pc192YWxp ZCA9IGZhbHNlOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4 IDRhMjQ2MTM1MzcuLmJmNzBmZDRjZTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21t Z3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpA QCAtMjg0LDcgKzI4NCw4IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJ ICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAog CQkJCSAgTGlzdCAqc3RtdHMsCi0JCQkJICBDYWNoZWRQbGFuICpjcGxhbikKKwkJCQkgIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJCSAgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIHsKIAlB c3NlcnQoUG9ydGFsSXNWYWxpZChwb3J0YWwpKTsKIAlBc3NlcnQocG9ydGFsLT5zdGF0dXMgPT0g UE9SVEFMX05FVyk7CkBAIC0yOTksNiArMzAwLDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFs IHBvcnRhbCwKIAlwb3J0YWwtPmNvbW1hbmRUYWcgPSBjb21tYW5kVGFnOwogCXBvcnRhbC0+c3Rt dHMgPSBzdG10czsKIAlwb3J0YWwtPmNwbGFuID0gY3BsYW47CisJcG9ydGFsLT5wbGFuc291cmNl ID0gcGxhbnNvdXJjZTsKIAlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9ERUZJTkVEOwogfQogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmgKaW5kZXggMjFjNzFlMGQ1My4uYTM5OTg5YTk1MCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaApAQCAtMTA0LDYgKzEwNCw3IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVV dGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgUGFy YW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAogZXh0ZXJu IHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFu ICpjcGxhbiwKKwkJCQkJCSAgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBwbGFu X2luZGV4LAogCQkJCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJ CQkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBw YXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmlu ZGV4IDhhNWE5ZmU2NDIuLmRiMjE1NjFjOGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3RyaWdnZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTI1 OCw2ICsyNTgsNyBAQCBleHRlcm4gdm9pZCBFeGVjQVNUcnVuY2F0ZVRyaWdnZXJzKEVTdGF0ZSAq ZXN0YXRlLAogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5YYWN0KHZvaWQpOwogZXh0ZXJu IHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVyVHJp Z2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckFi b3J0UXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJGaXJlRGVmZXJyZWQodm9p ZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRYYWN0KGJvb2wgaXNDb21taXQpOwogZXh0 ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQmVnaW5TdWJYYWN0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmgKaW5kZXggMGU3MjQ1NDM1ZC4uZjZjYjY0NzljMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCkBAIC0zNiw2ICszNiw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCUNtZFR5cGUJ CW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1QsIENNRF9VUERBVEUsIGV0Yy4gKi8KIAlQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5uZXIncyBvdXRwdXQgKGNvdWxkIGJlIHV0aWxpdHks IHRvbykgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHRoYXQgc3VwcGxp ZXMgdGhlIHBsYW5uZWRzdG10ICovCisJYm9vbAkJY3BsYW5fcmVsZWFzZTsJLyogU2hvdWxkIEZy ZWVRdWVyeURlc2MoKSByZWxlYXNlIGNwbGFuPyAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQ7 CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJCS8q IHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3NuYXBz aG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y3V0b3IuaAppbmRleCA2OWMzZWJmZjAwLi41YmMwZWRiNWEwIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1 dG9yLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgog I2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5o IgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogCiAKIC8qCkBAIC0xOTgsNiArMTk5LDgg QEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIg YXR0bm8sIGJvb2wgKmlzTnVsbCkKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhl Y01haW4uYwogICovCiBleHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnRFeHQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQkJIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsIGludCBxdWVyeV9pbmRleCk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1 dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rp b24sIHVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpAQCAtMjYxLDYgKzI2NCwxOSBA QCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1 cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAor LyoKKyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3RpbGwgdmFsaWQ/Cisg KgorICogQ2FsbGVkIGZyb20gSW5pdFBsYW4oKSBiZWNhdXNlIGludmFsaWRhdGlvbiBtZXNzYWdl cyB0aGF0IGFmZmVjdCB0aGUgcGxhbgorICogbWlnaHQgYmUgcmVjZWl2ZWQgYWZ0ZXIgbG9ja3Mg aGF2ZSBiZWVuIHRha2VuIG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLgorICogVGhlIGNh bGxlciBzaG91bGQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29t ZSBpbnZhbGlkLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChF U3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwg PyB0cnVlIDoKKwkJQ2FjaGVkUGxhblZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CiAK IC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjUHJvY05vZGUKQEAgLTU4OSw2ICs2MDUsNyBAQCBleHRlcm4g dm9pZCBFeGVjQ3JlYXRlU2NhblNsb3RGcm9tT3V0ZXJQbGFuKEVTdGF0ZSAqZXN0YXRlLAogZXh0 ZXJuIGJvb2wgRXhlY1JlbGF0aW9uSXNUYXJnZXRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5k ZXggc2NhbnJlbGlkKTsKIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNPcGVuU2NhblJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBlZmxhZ3MpOworZXh0ZXJuIFJlbGF0 aW9uIEV4ZWNPcGVuU2NhbkluZGV4UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIE9pZCBpbmRleGlk LCBpbnQgbG9ja21vZGUpOwogCiBleHRlcm4gdm9pZCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRl ICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcyk7CiBleHRlcm4gdm9p ZCBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggYmQ2OGM2MGEwYi4uYzgwY2NmMDM0OSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTY5MCw2ICs2OTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190 b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQll c19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJ ZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICovCisJYm9v bAkJZXNfYWJvcnRlZDsJCS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGFib3J0ZWQgKi8KIAog CUxpc3QJICAgKmVzX2V4cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHByQ29udGV4dHMgd2l0aGlu IEVTdGF0ZSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBi L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDBiNWVlMDA3Y2EuLjE1NGY2OGY2 NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiYWNj ZXNzL3R1cGRlc2MuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKICNpbmNsdWRlICJub2Rlcy9w YXJhbXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidGNvcC9j bWR0YWcuaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAi dXRpbHMvcmVzb3duZXIuaCIKQEAgLTE1Miw2ICsxNTMsOCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNo ZWRQbGFuCiAJYm9vbAkJaXNfZ2VuZXJpYzsJCS8qIGlzIGl0IGEgcmV1c2FibGUgZ2VuZXJpYyBw bGFuPyAqLwogCWJvb2wJCWlzX3NhdmVkOwkJLyogaXMgQ2FjaGVkUGxhbiBpbiBhIGxvbmctbGl2 ZWQgY29udGV4dD8gKi8KIAlib29sCQlpc192YWxpZDsJCS8qIGlzIHRoZSBzdG10X2xpc3QgY3Vy cmVudGx5IHZhbGlkPyAqLworCWJvb2wJCWlzX3N0YW5kYWxvbmU7CS8qIGlzIGl0IG5vdCBhc3Nv Y2lhdGVkIHdpdGggYQorCQkJCQkJCQkgKiBDYWNoZWRQbGFuU291cmNlPyAqLwogCU9pZAkJCXBs YW5Sb2xlSWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdhcyBjcmVhdGVkIGZvciAqLwogCWJvb2wJ CWRlcGVuZHNPblJvbGU7CS8qIGlzIHBsYW4gc3BlY2lmaWMgdG8gdGhhdCByb2xlPyAqLwogCVRy YW5zYWN0aW9uSWQgc2F2ZWRfeG1pbjsJLyogaWYgdmFsaWQsIHJlcGxhbiB3aGVuIFRyYW5zYWN0 aW9uWG1pbgpAQCAtMTU5LDYgKzE2MiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJ aW50CQkJZ2VuZXJhdGlvbjsJCS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlz IHBsYW4gKi8KIAlpbnQJCQlyZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0 byB0aGlzIHN0cnVjdCAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29u dGFpbmluZyB0aGlzIENhY2hlZFBsYW4gKi8KKworCS8qCisJICogSWYgdGhlIHBsYW4gaXMgbm90 IGFzc29jaWF0ZWQgd2l0aCBhIENhY2hlZFBsYW5Tb3VyY2UsIGl0IGlzIHNhdmVkIGluCisJICog YSBzZXBhcmF0ZSBnbG9iYWwgbGlzdC4KKwkgKi8KKwlkbGlzdF9ub2RlCW5vZGU7CQkJLyogbGlz dCBsaW5rLCBpZiBpc19zdGFuZGFsb25lICovCiB9IENhY2hlZFBsYW47CiAKIC8qCkBAIC0yMjQs NiArMjMzLDEwIEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAog CQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKK2V4dGVybiBDYWNoZWRQbGFuICpHZXRTaW5nbGVDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkJCQkJCQkgICBpbnQgcXVlcnlfaW5kZXgsCisJ CQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKIGV4dGVybiB2b2lkIFJl bGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwog CiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjQ1LDQgKzI1OCwxNyBAQCBDYWNoZWRQbGFuUmVx dWlyZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFuKQogCXJldHVybiBjcGxhbi0+aXNfZ2VuZXJp YzsKIH0KIAorLyoKKyAqIENhY2hlZFBsYW5WYWxpZAorICogICAgICBSZXR1cm5zIHdoZXRoZXIg YSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkLgorICoKKyAqIEludm9rZWQgYnkg dGhlIGV4ZWN1dG9yIHRvIGNoZWNrIGlmIHRoZSBwbGFuIGhhcyBub3QgYmVlbiBpbnZhbGlkYXRl ZCBhZnRlcgorICogdGFraW5nIGxvY2tzIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhl IHBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblZhbGlkKENhY2hlZFBs YW4gKmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9CisKICNlbmRpZgkJCQkJ CQkvKiBQTEFOQ0FDSEVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCAyOWY0OTgyOWYyLi41OGMzODI4 ZDJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFBv cnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRh dGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQ bGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBz dG10cyBhcmUgZnJvbSBvbmUgKi8KKwlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwkvKiBD YWNoZWRQbGFuU291cmNlLCBmb3IgY3BsYW4gKi8KIAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFy YW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52OyAvKiBlbnZpcm9ubWVudCBmb3IgcXVlcnkgKi8KQEAgLTI0MSw3ICsyNDIsOCBAQCBl eHRlcm4gdm9pZCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCQkJCSAgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJ CQkJCQkgIExpc3QgKnN0bXRzLAotCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pOworCQkJCQkJ CSAgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0bXQoUG9ydGFsIHBv cnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9ydGFsIHBvcnRhbCk7 CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjNlZWIwOTdm ZGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxl CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcg KzgsOCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRp dGlvbi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9u LXJlbW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLWludmFsCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19D T05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXggMTU1YzhhOGQ1NS4uMzA0Y2E3N2Y3YiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMK QEAgLTEsMTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1 dGlvbi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFu ZCBleGVjdXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVs YXkgYXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8g dGVzdCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVu dAorICoJCWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2lu ZyBhbmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2Nr LiAgSWYgYW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhl CiAgKiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJl bGVhc2VkOyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFu IGlzb2xhdGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdo ZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICog YmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0 ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90 aGVyIGJhY2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcg YW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxh bm5lcl9ob29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhl Y3V0b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBD b3B5cmlnaHQgKGMpIDIwMjAtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKICAqCkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIK ICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAt MzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sg SUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9z dF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29k IGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0 aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVM TDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v ayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRl c2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5l cihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0 OwogfQogCisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVz aXJlZCBkZWxheSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCS8qIElmIGVuYWJsZWQsIGRl bGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChl eGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBn X2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0 b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3Vu bG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9s b2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5n IGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBk b24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9 CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBo b29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hvb2spCisJCXByZXZfRXhlY3V0 b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgJXMiLAorCQkJIENhY2hlZFBsYW5WYWxpZChxdWVyeURlc2MtPmNwbGFuKSA/ICJ2 YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9uICovCiB2 b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRyb2wgd2hp Y2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGljaCBsb2Nr IGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0aW9uLnBv c3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQg dG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlplcm8gZGlz YWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZvaWQpCiAJ CQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5lQ3VzdG9t SW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkIiwKKwkJ CQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2NrZWQgYmVm b3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxh eS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJCQkJCQkJ MCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJCU5VTEws CisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2ZWQoImRl bGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIEluc3RhbGwg b3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwogCXBsYW5u ZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JTdGFydF9o b29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRlbGF5X2V4 ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0IGIvc3JjL3Rlc3Qv bW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUwMDJjZmJjOWMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNo ZWQtcGxhbi1pbnZhbC5vdXQKQEAgLTAsMCArMSwyMzAgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0 aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJsb2NrIHMxZXhl YyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZv cmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitMb2NrUm93 cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1v dmVkOiAyICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2Fu IG9uIGZvbzEyXzEgZm9vXzEgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQx KSAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9v MTJfMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAK Kyg3IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7 CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCiso MSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBk ZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3Bp OiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29y eV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0K K3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4uLiBjb21wbGV0 ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlz IG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNj YW4gb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAg IAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFl eGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUg PSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZv b3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYp IEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAg UmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBC aXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAg Qml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA9IHR3bygpKSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAg ICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkp KSAgICAgIAorKDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsK KwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdf YWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0t LS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4u IGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5z IFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1Ig KGEgPSB0d28oKSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAg IAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKyg2IHJvd3Mp CisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJsb2NrIHMxZXhlYzMgczJkcm9w aSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2Vu ZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJF IGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRF IHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTJfMSBmb29fMSAg ICAgICAgICAgICAgICAgCisgICAgICAgIFJlY2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChh ID0gdHdvKCkpKSAgICAgIAorICAgICAgICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9u IGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0g b25lKCkpICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gZm9vMTJfMV9hICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEg PSB0d28oKSkgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24gZm9vICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAx ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNj YW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29u ZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKQorICAgICAgICAgICAgICAtPiAgQml0bWFw T3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4g IEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgCisgICAgICAgICAgICAgICAgICAgICAg ICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28oKSkgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0 ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKygyNiByb3dzKQorCitzdGVw IHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9j aworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMx ZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5l eGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJf MV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5P VElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFs aWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBw ZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxh bnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBTZXEgU2Nh biBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEy XzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkp IE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKK1VwZGF0ZSBvbiBmb28gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAgICAgICAg ICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBmb28xMl8yIGZvb18yICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6 ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkKKygxNiByb3dzKQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMXByZXA0IHMybG9jayBzMWV4ZWM0IHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAg czFwcmVwNDogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBT RVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgV0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3Yg V0hFUkUgYSA9ICQxIEZPUiBVUERBVEUpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxNCAoMSk7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmVzdWx0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIE9uZS1UaW1lIEZpbHRlcjog KEluaXRQbGFuIDEpLmNvbDEgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgSW5pdFBsYW4g MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg IC0+ICBMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgRGlzYWJsZWQgTm9kZXM6IDIgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIERpc2FibGVkIE5vZGVzOiAyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAtPiAg SW5kZXggU2NhbiB1c2luZyBmb28xMl8xX2Egb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgICAgICAgICAgICAgICAgCisgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAgICAgICAgICAgICAgICAg ICAKKygxMSByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIz NDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAg U0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBz MmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19h ZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0t LS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IDwuLi4g Y29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6 IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRp bWUgRmlsdGVyOiAoSW5pdFBsYW4gMSkuY29sMSAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBEaXNhYmxlZCBOb2RlczogMyAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgICAgRGlzYWJsZWQgTm9kZXM6IDMgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBmb28xMl8xIGZvb18xCisgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQg Tm9kZXM6IDEgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAg ICAgIAorICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgICAgICAgCisoMTIg cm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZApp bmRleCA0MWYzYWMwYjg5Li41YTcwYjE4M2QwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9tZXNvbi5idWlsZApAQCAtMjQsNiArMjQsNyBAQCB0ZXN0cyArPSB7CiAgICAg J3NwZWNzJzogWwogICAgICAgJ3BhcnRpdGlvbi1hZGRpdGlvbicsCiAgICAgICAncGFydGl0aW9u LXJlbW92YWwtMScsCisgICAgICAnY2FjaGVkLXBsYW4taW52YWwnLAogICAgIF0sCiAgIH0sCiB9 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNo ZWQtcGxhbi1pbnZhbC5zcGVjIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3Bl Y3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi44MjBhODQzMDUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYwpAQCAtMCwwICsxLDc1 IEBACisjIFRlc3QgdG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMg cGxhbnMgZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5p bmcgYW5kIHJlLWV4ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBp bnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMiBQ QVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEsIDIpIFBBUlRJVElPTiBCWSBMSVNUIChh KTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyXzEgUEFSVElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMg SU4gKDEpOworICBDUkVBVEUgVEFCTEUgZm9vMTJfMiBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZB TFVFUyBJTiAoMik7CisgIENSRUFURSBJTkRFWCBmb28xMl8xX2EgT04gZm9vMTJfMSAoYSk7Cisg IENSRUFURSBUQUJMRSBmb28zIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMyk7Cisg IENSRUFURSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287CisgIENSRUFURSBGVU5DVElP TiBvbmUgKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOIDE7IEVORDsgJCQgTEFOR1VB R0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBGVU5DVElPTiB0d28gKCkgUkVUVVJOUyBpbnQg QVMgJCQgQkVHSU4gUkVUVVJOIDI7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7Cisg IENSRUFURSBSVUxFIHVwZGF0ZV9mb28gQVMgT04gVVBEQVRFIFRPIGZvbyBETyBBTFNPIFNFTEVD VCAxOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJPUCBSVUxFIHVw ZGF0ZV9mb28gT04gZm9vOworICBEUk9QIFRBQkxFIGZvbzsKKyAgRFJPUCBGVU5DVElPTiBvbmUo KSwgdHdvKCk7Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVu aW5nCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQx IEZPUiBVUERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CisK KyMgQW5vdGhlciBjYXNlIHdpdGggQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAi czFwcmVwMiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJ CSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEg PSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBDYXNl IHdpdGggYSBydWxlIGFkZGluZyBhbm90aGVyIHF1ZXJ5CitzdGVwICJzMXByZXAzIiAgIHsgU0VU IHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEzIEFT IFVQREFURSBmb292IFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkg IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisjIEFub3RoZXIgY2FzZSB3aXRo IEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcgaW4gYSBzdWJxdWVyeQorc3RlcCAiczFwcmVw NCIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgU0VU IGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKKwkJICBQUkVQQVJFIHE0IEFTIFNFTEVDVCAqIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEpIFdIRVJFIEVYSVNUUyAoU0VMRUNUICogRlJPTSBmb292IFdI RVJFIGEgPSAkMSBGT1IgVVBEQVRFKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUg cTQgKDEpOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBM T0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jf c3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx ICgxKTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVjMyIJeyBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQor c3RlcCAiczFleGVjNCIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9l eGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7IH0KKworc2Vzc2lvbiAiczIiCitzdGVwICJzMmxvY2si CXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJzMnVubG9jayIJeyBT RUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJkcm9waSIJeyBEUk9Q IElOREVYIGZvbzEyXzFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiLCBldGMuIHdhaXQgdG8gYWNx dWlyZSB0aGUgYWR2aXNvcnkgbG9jaywgInMyZHJvcCIgaXMgYWJsZSB0bworIyBkcm9wIHRoZSBp bmRleCBiZWluZyB1c2VkIGluIHRoZSBjYWNoZWQgcGxhbi4gIFdoZW4gInMxZXhlYyIgaXMgdGhl bgorIyB1bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0 aW9uLCBpdCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0 aGUgY2FjaGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0 aGUgaW5kZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9w aSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAi czJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDMiICJzMmxvY2siICJzMWV4 ZWMzIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDQiICJzMmxvY2si ICJzMWV4ZWM0IiAiczJkcm9waSIgInMydW5sb2NrIgotLSAKMi40My4wCgo= --000000000000f23687062288914f Content-Type: application/octet-stream; name="v56-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Disposition: attachment; filename="v56-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1afwhzy3 RnJvbSA3YmE3NDhhMTA1NTg4MGVlMjBmOTA4YTJjZjI3NTdmMmFkODJlOWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTggU2VwIDIwMjQgMTE6MTY6NDggKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NiAyLzVdIEluaXRpYWxpemUgUGFydGl0aW9uUHJ1bmVDb250ZXh0cyBsYXppbHkKTUlNRS1WZXJz aW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgY29tbWl0IG1vdmVzIHRoZSBpbml0aWFsaXph dGlvbiBvZiBQYXJ0aXRpb25QcnVuZUNvbnRleHRzIGZvcgpib3RoIGluaXRpYWwgYW5kIGV4ZWMg cHJ1bmluZyBzdGVwcyBmcm9tIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoKQp0byBmaW5kX21h dGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSwgd2hlcmUgdGhleSBhcmUgYWN0dWFsbHkgbmVlZGVk LgpUbyB0cmFjayB3aGV0aGVyIHRoZSBjb250ZXh0IGhhcyBiZWVuIGluaXRpYWxpemVkIGFuZCBp cyByZWFkeSBmb3IKdXNlLCBhIGJvb2xlYW4gZmllbGQgaXNfdmFsaWQgaGFzIGJlZW4gYWRkZWQg dG8gUGFydGl0aW9uUHJ1bmVDb250ZXh0LgoKVGhlIHByaW1hcnkgbW90aXZhdGlvbiBpcyB0byBl bGltaW5hdGUgdGhlIG5lZWQgdG8gcGVyZm9ybQpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkg ZHVyaW5nIEV4ZWNJbml0Tm9kZSgpLCBhcyBjcmVhdGluZyB0aGUKZXhlYyBwcnVuaW5nIGNvbnRl eHQgcmVxdWlyZXMgYWNjZXNzIHRvIHRoZSBwYXJlbnQgcGxhbiBub2Rl4oCZcwpQbGFuU3RhdGUu IEJ5IGRlZmVycmluZyBjb250ZXh0IGNyZWF0aW9uIHRvIHdoZXJlIGl04oCZcyBuZWVkZWQsIHRo aXMKY2hhbmdlIGVuYWJsZXMgY2FsbGluZyBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgYmVm b3JlIEV4ZWNJbml0Tm9kZSgpLgoKVGhpcyB3aWxsIGJlIHVzZWZ1bCBpbiBhIGZ1dHVyZSBjb21t aXQsIHdoaWNoIHdpbGwgbW92ZSBpbml0aWFsCnBydW5pbmcgdG8gb2NjdXIgYmVmb3JlIEV4ZWNJ bml0Tm9kZSgpLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyB8IDE1 MCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uaCB8ICAxMSArKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5o IHwgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCBlYzczMDY3NGYyLi42 M2MzNDI5ZmU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xODEsMTgg KzE4MSwxNyBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0 aW9uKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJCSAgaW50IG1heGZpZWxkbGVuKTsKIHN0YXRp YyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3VsdFJlbElu Zm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9z X3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwotc3RhdGljIFBhcnRp dGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFu c3RhdGUsCitzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVT dGF0ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKTsKLXN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0 aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAorc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5l Q29udGV4dChQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCisJCQkJCQkJCQkgIFBh cnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19z dGVwcywKLQkJCQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYywKLQkJCQkJCQkJCSAgUGFy dGl0aW9uS2V5IHBhcnRrZXksCi0JCQkJCQkJCQkgIFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAotCQkJ CQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOworCQkJCQkJCQkJICBQbGFuU3RhdGUgKnBs YW5zdGF0ZSk7CiBzdGF0aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCQlCaXRtYXBzZXQgKmluaXRpYWxs eV92YWxpZF9zdWJwbGFucywKIAkJCQkJCQkJCQlpbnQgbl90b3RhbF9zdWJwbGFucyk7Ci1zdGF0 aWMgdm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0Rh dGEgKnBydW5lZGF0YSwKK3N0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJz ZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJCQkJCQkJCSAgIFBhcnRpdGlvblBydW5pbmdE YXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAq cHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKIAkJCQkJCQkJCQkgICBC aXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsKQEAgLTE4MjUsNyArMTgyNCwxNCBAQCBFeGVjSW5p dFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJRXhlY0Fzc2lnbkV4cHJD b250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKIAogCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRh IHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvKTsKKwlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisKKwkvKgorCSAqIFN0b3JlIFBs YW5TdGF0ZSBmb3IgdXNpbmcgaXQgdG8gaW5pdGlhbGl6ZSBleGVjIHBydW5pbmcgY29udGV4dHMg bGF0ZXIKKwkgKiBpbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVyZSB0aGV5 IGFyZSBuZWVkZWQuCisJICovCisJaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpCisJCXBy dW5lc3RhdGUtPnBhcmVudF9wbGFuID0gcGxhbnN0YXRlOwogCiAJLyoKIAkgKiBQZXJmb3JtIGFu IGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTg2NSw4ICsx ODcxLDYgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog ICogQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZQogICoJCUJ1aWxkIHRoZSBkYXRhIHN0cnVjdHVy ZSByZXF1aXJlZCBmb3IgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAqCi0gKiAn cGxhbnN0YXRlJyBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0ZS4KLSAq CiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlvblBydW5lSW5mbyBhcyBnZW5lcmF0ZWQgYnkK ICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4gIEhlcmUgd2UgYnVpbGQgYSBQYXJ0aXRpb25Q cnVuZVN0YXRlIGNvbnRhaW5pbmcgYQogICogUGFydGl0aW9uUHJ1bmluZ0RhdGEgZm9yIGVhY2gg cGFydGl0aW9uaW5nIGhpZXJhcmNoeSAoaS5lLiwgZWFjaCBzdWJsaXN0IG9mCkBAIC0xODc3LDE2 ICsxODgxLDIwIEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKICAqIHN0b3JlZCBpbiBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgY2FuIGJlIHJl LXVzZWQgZWFjaCB0aW1lIHdlCiAgKiByZS1ldmFsdWF0ZSB3aGljaCBwYXJ0aXRpb25zIG1hdGNo IHRoZSBwcnVuaW5nIHN0ZXBzIHByb3ZpZGVkIGluIGVhY2gKICAqIFBhcnRpdGlvbmVkUmVsUHJ1 bmVJbmZvLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgUGFydGl0aW9uUHJ1bmVDb250ZXh0cyBmb3Ig Ym90aCBpbml0aWFsIGFuZCBleGVjIHBydW5pbmcKKyAqICh3aGljaCBhcmUgc3RvcmVkIGluIGVh Y2ggUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSkgYXJlIGluaXRpYWxpemVkIGxhemlseQorICog aW4gZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKCkgd2hlbiB1c2VkIGZvciB0aGUgZmly c3QgdGltZS4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFydGl0 aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpw cnVuZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9IHBsYW5z dGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQlu X3BhcnRfaGllcmFyY2hpZXM7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKLQlFeHByQ29u dGV4dCAqZWNvbnRleHQgPSBwbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0OworCS8qIFdlIG1heSBu ZWVkIGFuIGV4cHJlc3Npb24gY29udGV4dCB0byBldmFsdWF0ZSBwYXJ0aXRpb24gZXhwcnMgKi8K KwlFeHByQ29udGV4dCAqZWNvbnRleHQgPSBDcmVhdGVFeHByQ29udGV4dChlc3RhdGUpOwogCiAJ LyogRm9yIGRhdGEgcmVhZGluZywgZXhlY3V0b3IgYWx3YXlzIGluY2x1ZGVzIGRldGFjaGVkIHBh cnRpdGlvbnMgKi8KIAlpZiAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwp CkBAIC0xOTA4LDYgKzE5MTYsNyBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0 ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAlwcnVuZXN0YXRl LT5vdGhlcl9zdWJwbGFucyA9IGJtc19jb3B5KHBydW5laW5mby0+b3RoZXJfc3VicGxhbnMpOwog CXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBiZWxv dyAqLwogCXBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBi ZWxvdyAqLworCXBydW5lc3RhdGUtPnBhcmVudF9wbGFuID0gTlVMTDsKIAlwcnVuZXN0YXRlLT5u dW1fcGFydHBydW5lZGF0YSA9IG5fcGFydF9oaWVyYXJjaGllczsKIAogCS8qCkBAIC0xOTQzLDE2 ICsxOTUyLDI1IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3Rh dGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJUGFydGl0aW9uZWRSZWxQcnVu aW5nRGF0YSAqcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtqXTsKIAkJCVJl bGF0aW9uCXBhcnRyZWw7CiAJCQlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjOwotCQkJUGFydGl0aW9u S2V5IHBhcnRrZXk7CiAKIAkJCS8qCi0JCQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29waWVzIG9m IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdzIHBhcnRpdGlvbgotCQkJICoga2V5IGFuZCBwYXJ0aXRp b24gZGVzY3JpcHRvciBhcHBlYXJpbmcgaW4gaXRzIHJlbGNhY2hlIGVudHJ5LAotCQkJICogYmVj YXVzZSB0aGF0IGVudHJ5IHdpbGwgYmUgaGVsZCBvcGVuIGFuZCBsb2NrZWQgZm9yIHRoZQotCQkJ ICogZHVyYXRpb24gb2YgdGhpcyBleGVjdXRvciBydW4uCisJCQkgKiBVc2VkIGZvciBpbml0aWFs aXppbmcgdGhlIGV4cHJlc3Npb25zIGluIGluaXRpYWwgcHJ1bmluZyBzdGVwcy4KKwkJCSAqIEZv ciBleGVjIHBydW5pbmcgc3RlcHMsIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0YXRlJ3MK KwkJCSAqIHBzX0V4cHJDb250ZXh0IHdpbGwgYmUgdXNlZC4KIAkJCSAqLworCQkJcHBydW5lLT5l c3RhdGUgPSBlc3RhdGU7CisJCQlwcHJ1bmUtPmVjb250ZXh0ID0gZWNvbnRleHQ7CisKKwkJCS8q IFJlbWVtYmVyIFJlbGF0aW9uIGZvciB1c2UgaW4gSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dC4g Ki8KIAkJCXBhcnRyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8t PnJ0aW5kZXgpOwotCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwp OworCQkJcHBydW5lLT5wYXJ0cmVsID0gcGFydHJlbDsKKworCQkJLyoKKwkJCSAqIFdlIGNhbiBy ZWx5IG9uIHRoZSBjb3B5IHBhcnRydGl0aW9uZWQgdGFibGUncyBwYXJ0aXRpb24KKwkJCSAqIGRl c2NyaXB0b3IgYXBwZWFyaW5nIGluIGl0cyByZWxjYWNoZSBlbnRyeSwgYmVjYXVzZSB0aGF0IGVu dHJ5CisJCQkgKiB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUgZHVyYXRpb24g b2YgdGhpcyBleGVjdXRvcgorCQkJICogcnVuLgorCQkJICovCiAJCQlwYXJ0ZGVzYyA9IFBhcnRp dGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJ CQkJCQkJCQlwYXJ0cmVsKTsKIApAQCAtMjA2MywzMiArMjA4MSwyNiBAQCBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBy dW5laW5mbykKIAkJCXBwcnVuZS0+cHJlc2VudF9wYXJ0cyA9IGJtc19jb3B5KHBpbmZvLT5wcmVz ZW50X3BhcnRzKTsKIAogCQkJLyoKLQkJCSAqIEluaXRpYWxpemUgcHJ1bmluZyBjb250ZXh0cyBh cyBuZWVkZWQuICBOb3RlIHRoYXQgd2UgbXVzdCBza2lwCi0JCQkgKiBleGVjdXRpb24tdGltZSBw YXJ0aXRpb24gcHJ1bmluZyBpbiBFWFBMQUlOIChHRU5FUklDX1BMQU4pLAotCQkJICogc2luY2Ug cGFyYW1ldGVyIHZhbHVlcyBtYXkgYmUgbWlzc2luZy4KKwkJCSAqIFBydW5pbmcgY29udGV4dHMg KGluaXRpYWxfY29udGV4dCBhbmQgZXhlY19jb250ZXh0KSBhcmUKKwkJCSAqIGluaXRpYWxpemVk IGxhemlseSBpbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVuIHVzZWQKKwkJ CSAqIGZvciB0aGUgZmlyc3QgdGltZS4KKwkJCSAqCisJCQkgKiBOb3RlIHRoYXQgd2UgbXVzdCBz a2lwIGV4ZWN1dGlvbi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGluCisJCQkgKiBFWFBMQUlOIChH RU5FUklDX1BMQU4pLCBzaW5jZSBwYXJhbWV0ZXIgdmFsdWVzIG1heSBiZSBtaXNzaW5nLgogCQkJ ICovCiAJCQlwcHJ1bmUtPmluaXRpYWxfcHJ1bmluZ19zdGVwcyA9IHBpbmZvLT5pbml0aWFsX3By dW5pbmdfc3RlcHM7CisJCQlwcHJ1bmUtPmluaXRpYWxfY29udGV4dC5pc192YWxpZCA9IGZhbHNl OwogCQkJaWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgJiYKIAkJCQkhKGVjb250ZXh0 LT5lY3h0X2VzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUMp KQotCQkJewotCQkJCUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoJnBwcnVuZS0+aW5pdGlhbF9j b250ZXh0LAotCQkJCQkJCQkJCSAgcGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcywKLQkJCQkJ CQkJCQkgIHBhcnRkZXNjLCBwYXJ0a2V5LCBwbGFuc3RhdGUsCi0JCQkJCQkJCQkJICBlY29udGV4 dCk7CiAJCQkJLyogUmVjb3JkIHdoZXRoZXIgaW5pdGlhbCBwcnVuaW5nIGlzIG5lZWRlZCBhdCBh bnkgbGV2ZWwgKi8KIAkJCQlwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lID0gdHJ1ZTsKLQkJ CX0KKwogCQkJcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMgPSBwaW5mby0+ZXhlY19wcnVuaW5n X3N0ZXBzOworCQkJcHBydW5lLT5leGVjX2NvbnRleHQuaXNfdmFsaWQgPSBmYWxzZTsKIAkJCWlm IChwaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzICYmCiAJCQkJIShlY29udGV4dC0+ZWN4dF9lc3Rh dGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkKLQkJCXsKLQkJ CQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmV4ZWNfY29udGV4dCwKLQkJCQkJ CQkJCQkgIHBpbmZvLT5leGVjX3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCQkJICBwYXJ0ZGVzYywg cGFydGtleSwgcGxhbnN0YXRlLAotCQkJCQkJCQkJCSAgZWNvbnRleHQpOwogCQkJCS8qIFJlY29y ZCB3aGV0aGVyIGV4ZWMgcHJ1bmluZyBpcyBuZWVkZWQgYXQgYW55IGxldmVsICovCiAJCQkJcHJ1 bmVzdGF0ZS0+ZG9fZXhlY19wcnVuZSA9IHRydWU7Ci0JCQl9CiAKIAkJCS8qCiAJCQkgKiBBY2N1 bXVsYXRlIHRoZSBJRHMgb2YgYWxsIFBBUkFNX0VYRUMgUGFyYW1zIGFmZmVjdGluZyB0aGUKQEAg LTIxMDksMTYgKzIxMjEsNDMgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAgKiBJbml0aWFsaXpl IGEgUGFydGl0aW9uUHJ1bmVDb250ZXh0IGZvciB0aGUgZ2l2ZW4gbGlzdCBvZiBwcnVuaW5nIHN0 ZXBzLgogICovCiBzdGF0aWMgdm9pZAotSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRp b25QcnVuZUNvbnRleHQgKmNvbnRleHQsCitJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRp dGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKKwkJCQkJCSAgUGFydGl0aW9uUHJ1bmVDb250 ZXh0ICpjb250ZXh0LAogCQkJCQkJICBMaXN0ICpwcnVuaW5nX3N0ZXBzLAotCQkJCQkJICBQYXJ0 aXRpb25EZXNjIHBhcnRkZXNjLAotCQkJCQkJICBQYXJ0aXRpb25LZXkgcGFydGtleSwKLQkJCQkJ CSAgUGxhblN0YXRlICpwbGFuc3RhdGUsCi0JCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4dCkK KwkJCQkJCSAgUGxhblN0YXRlICpwbGFuc3RhdGUpCiB7CiAJaW50CQkJbl9zdGVwczsKIAlpbnQJ CQlwYXJ0bmF0dHM7CiAJTGlzdENlbGwgICAqbGM7CisJRXhwckNvbnRleHQgKmVjb250ZXh0Owor CUVTdGF0ZQkgICAqZXN0YXRlID0gcHBydW5lLT5lc3RhdGU7CisJTWVtb3J5Q29udGV4dCBvbGRj eHQ7CisJUmVsYXRpb24JcGFydHJlbCA9IHBwcnVuZS0+cGFydHJlbDsKKwlQYXJ0aXRpb25LZXkg cGFydGtleTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjOworCisJLyogTXVzdCBhbGxvY2F0ZSB0 aGUgbmVlZGVkIHN0dWZmIGluIHRoZSBxdWVyeSBsaWZldGltZSBjb250ZXh0LiAqLworCW9sZGN4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisKKwkvKiBV c2UgcGFyZW50X3BsYW4ncyBFeHByQ29udGV4dCB3aGVuIGF2YWlsYWJsZS4gKi8KKwlpZiAocGxh bnN0YXRlKQorCXsKKwkJaWYgKHBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQgPT0gTlVMTCkKKwkJ CUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CisJCWVjb250ZXh0ID0g cGxhbnN0YXRlLT5wc19FeHByQ29udGV4dDsKKwl9CisJZWxzZQorCQllY29udGV4dCA9IHBwcnVu ZS0+ZWNvbnRleHQ7CisKKwkvKgorCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhl IHBhcnRpdGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVz Y3JpcHRvciBhcHBlYXJpbmcgaW4gaXRzIHJlbGNhY2hlIGVudHJ5LAorCSAqIGJlY2F1c2UgdGhh dCBlbnRyeSB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUKKwkgKiBkdXJhdGlv biBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KKwkgKi8KKwlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0 aXRpb25LZXkocGFydHJlbCk7CisJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAo ZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAorCQkJCQkJCQkJCXBhcnRyZWwpOwogCiAJ bl9zdGVwcyA9IGxpc3RfbGVuZ3RoKHBydW5pbmdfc3RlcHMpOwogCkBAIC0yMTg3LDYgKzIyMjYs OSBAQCBJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29u dGV4dCwKIAkJCX0KIAkJfQogCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwor CWNvbnRleHQtPmlzX3ZhbGlkID0gdHJ1ZTsKIH0KIAogLyoKQEAgLTIzNTAsMTIgKzIzOTIsMTYg QEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGUsCiAJCSAqIHJlY3Vyc2luZyB0byBvdGhlciAobG93ZXItbGV2ZWwpIHBhcmVudHMgYXMgbmVl ZGVkLgogCQkgKi8KIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVswXTsK LQkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwgcHBydW5lLCBpbml0 aWFsX3BydW5lLAorCQlmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVzdGF0ZS0+ cGFyZW50X3BsYW4sCisJCQkJCQkJCQkgICBwcnVuZWRhdGEsIHBwcnVuZSwgaW5pdGlhbF9wcnVu ZSwKIAkJCQkJCQkJCSAgICZyZXN1bHQpOwogCiAJCS8qIEV4cHJlc3Npb24gZXZhbCBtYXkgaGF2 ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwotCQlpZiAocHBydW5lLT5leGVjX3By dW5pbmdfc3RlcHMpCisJCWlmIChwcHJ1bmUtPmV4ZWNfY29udGV4dC5pc192YWxpZCkKKwkJewor CQkJQXNzZXJ0KHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzICE9IE5JTCk7CiAJCQlSZXNldEV4 cHJDb250ZXh0KHBwcnVuZS0+ZXhlY19jb250ZXh0LmV4cHJjb250ZXh0KTsKKwkJfQogCX0KIAog CS8qIEFkZCBpbiBhbnkgc3VicGxhbnMgdGhhdCBwYXJ0aXRpb24gcHJ1bmluZyBkaWRuJ3QgYWNj b3VudCBmb3IgKi8KQEAgLTIzNzgsNyArMjQyNCw4IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogICogQWRkcyB2YWxpZCAobm9uLXBy dW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRzdWJwbGFucwogICovCiBzdGF0aWMgdm9pZAot ZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVu ZWRhdGEsCitmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJlbnRf cGxhbiwKKwkJCQkJCQkgICBQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJ CSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkgICBib29sIGlu aXRpYWxfcHJ1bmUsCiAJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucykKQEAgLTIz OTUsMTEgKzI0NDIsMjcgQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRpdGlv blBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJICogbGV2ZWwuCiAJICovCiAJaWYgKGluaXRpYWxf cHJ1bmUgJiYgcHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCisJeworCQkvKiBJbml0aWFs aXplIGluaXRpYWxfY29udGV4dCBpZiBub3QgYWxyZWFkeSBkb25lLiAqLworCQlpZiAodW5saWtl bHkoIXBwcnVuZS0+aW5pdGlhbF9jb250ZXh0LmlzX3ZhbGlkKSkKKwkJCUluaXRQYXJ0aXRpb25Q cnVuZUNvbnRleHQocHBydW5lLAorCQkJCQkJCQkJICAmcHBydW5lLT5pbml0aWFsX2NvbnRleHQs CisJCQkJCQkJCQkgIHBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzLAorCQkJCQkJCQkJICBw YXJlbnRfcGxhbik7CiAJCXBhcnRzZXQgPSBnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucygmcHBydW5l LT5pbml0aWFsX2NvbnRleHQsCiAJCQkJCQkJCQkJICBwcHJ1bmUtPmluaXRpYWxfcHJ1bmluZ19z dGVwcyk7CisJfQogCWVsc2UgaWYgKCFpbml0aWFsX3BydW5lICYmIHBwcnVuZS0+ZXhlY19wcnVu aW5nX3N0ZXBzKQorCXsKKwkJLyogSW5pdGlhbGl6ZSBleGVjX2NvbnRleHQgaWYgbm90IGFscmVh ZHkgZG9uZS4gKi8KKwkJaWYgKHVubGlrZWx5KCFwcHJ1bmUtPmV4ZWNfY29udGV4dC5pc192YWxp ZCkpCisJCQlJbml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KHBwcnVuZSwKKwkJCQkJCQkJCSAgJnBw cnVuZS0+ZXhlY19jb250ZXh0LAorCQkJCQkJCQkJICBwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVw cywKKwkJCQkJCQkJCSAgcGFyZW50X3BsYW4pOwogCQlwYXJ0c2V0ID0gZ2V0X21hdGNoaW5nX3Bh cnRpdGlvbnMoJnBwcnVuZS0+ZXhlY19jb250ZXh0LAogCQkJCQkJCQkJCSAgcHBydW5lLT5leGVj X3BydW5pbmdfc3RlcHMpOworCX0KIAllbHNlCiAJCXBhcnRzZXQgPSBwcHJ1bmUtPnByZXNlbnRf cGFydHM7CiAKQEAgLTI0MTUsNyArMjQ3OCw4IEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJaW50CQkJcGFydGlkeCA9 IHBwcnVuZS0+c3VicGFydF9tYXBbaV07CiAKIAkJCWlmIChwYXJ0aWR4ID49IDApCi0JCQkJZmlu ZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwKKwkJCQlmaW5kX21hdGNoaW5n X3N1YnBsYW5zX3JlY3Vyc2UocGFyZW50X3BsYW4sCisJCQkJCQkJCQkJCSAgIHBydW5lZGF0YSwK IAkJCQkJCQkJCQkJICAgJnBydW5lZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKIAkJ CQkJCQkJCQkJICAgaW5pdGlhbF9wcnVuZSwgdmFsaWRzdWJwbGFucyk7CiAJCQllbHNlCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggMTJhYWNjODRmZi4uNDFhZmI1MjJmMyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDIsNiArNDIsMTAgQEAgZXh0 ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0 ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIChzZWUgcGxhbm5vZGVzLmgpOyB0aG91Z2gg bm90ZSB0aGF0IGhlcmUsCiAgKiBzdWJwYXJ0X21hcCBjb250YWlucyBpbmRleGVzIGludG8gUGFy dGl0aW9uUHJ1bmluZ0RhdGEucGFydHJlbHBydW5lZGF0YVtdLgogICoKKyAqIGVzdGF0ZQkJCQkJ CVRoZSBFU3RhdGUgZm9yIHRoZSBxdWVyeSBkb2luZyBydW50aW1lIHBydW5pbmcKKyAqIHBhcnRy ZWwJCQkJCQlQYXJ0aXRpb25lZCB0YWJsZSBSZWxhdGlvbjsgcG9pbnRzIHRvCisgKgkJCQkJCQkJ ZXN0YXRlLT5lc19yZWxhdGlvbnNbcnRpLTFdIHdoZXJlIHJ0aSBpcworICoJCQkJCQkJCXRoZSB0 YWJsZSdzIFJUIGluZGV4LgogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10g YW5kIHN1YnBhcnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBw YXJ0aXRpb24gaW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXgg YnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4KQEAgLTUxLDYgKzU1LDcgQEAgZXh0ZXJuIHZvaWQg RXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqCQkJ CQkJCQlwZXJmb3JtIGV4ZWN1dG9yIHN0YXJ0dXAgcHJ1bmluZy4KICAqIGV4ZWNfcHJ1bmluZ19z dGVwcwkJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCiAgKgkJCQkJCQkJcGVy Zm9ybSBwZXItc2NhbiBwcnVuaW5nLgorICogZWNvbnRleHQJCQkJCQlFeHByQ29udGV4dCB0byB1 c2UgZm9yIGluaXRpYWwgcHJ1bmluZyBzdGVwcwogICogaW5pdGlhbF9jb250ZXh0CQkJCUlmIGlu aXRpYWxfcHJ1bmluZ19zdGVwcyBpc24ndCBOSUwsIGNvbnRhaW5zCiAgKgkJCQkJCQkJdGhlIGRl dGFpbHMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhvc2Ugc3RlcHMuCiAgKiBleGVjX2NvbnRleHQJCQkJ CUlmIGV4ZWNfcHJ1bmluZ19zdGVwcyBpc24ndCBOSUwsIGNvbnRhaW5zCkBAIC01OCwxMiArNjMs MTUgQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0 ZSAqbXRzdGF0ZSwKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0 YQogeworCUVTdGF0ZQkgICAqZXN0YXRlOworCVJlbGF0aW9uCXBhcnRyZWw7CiAJaW50CQkJbnBh cnRzOwogCWludAkJICAgKnN1YnBsYW5fbWFwOwogCWludAkJICAgKnN1YnBhcnRfbWFwOwogCUJp dG1hcHNldCAgKnByZXNlbnRfcGFydHM7CiAJTGlzdAkgICAqaW5pdGlhbF9wcnVuaW5nX3N0ZXBz OwogCUxpc3QJICAgKmV4ZWNfcHJ1bmluZ19zdGVwczsKKwlFeHByQ29udGV4dCAqZWNvbnRleHQ7 CiAJUGFydGl0aW9uUHJ1bmVDb250ZXh0IGluaXRpYWxfY29udGV4dDsKIAlQYXJ0aXRpb25QcnVu ZUNvbnRleHQgZXhlY19jb250ZXh0OwogfSBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhOwpAQCAt MTA1LDYgKzExMyw4IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5pbmdEYXRhCiAgKgkJ CQkJCXN0YXJ0dXAgKGF0IGFueSBoaWVyYXJjaHkgbGV2ZWwpLgogICogZG9fZXhlY19wcnVuZQkJ dHJ1ZSBpZiBwcnVuaW5nIHNob3VsZCBiZSBwZXJmb3JtZWQgZHVyaW5nCiAgKgkJCQkJCWV4ZWN1 dG9yIHJ1biAoYXQgYW55IGhpZXJhcmNoeSBsZXZlbCkuCisgKiBwYXJlbnRfcGxhbgkJCVBhcmVu dCBwbGFuIG5vZGUncyBQbGFuU3RhdGUgdXNlZCB0byBpbml0aWFsaXplIGV4ZWMKKyAqCQkJCQkJ cHJ1bmluZyBjb250ZXh0cwogICogbnVtX3BhcnRwcnVuZWRhdGEJTnVtYmVyIG9mIGl0ZW1zIGlu ICJwYXJ0cHJ1bmVkYXRhIiBhcnJheS4KICAqIHBhcnRwcnVuZWRhdGEJCUFycmF5IG9mIFBhcnRp dGlvblBydW5pbmdEYXRhIHBvaW50ZXJzIGZvciB0aGUgcGxhbidzCiAgKgkJCQkJCXBhcnRpdGlv bmVkIHJlbGF0aW9uKHMpLCBvbmUgZm9yIGVhY2ggcGFydGl0aW9uaW5nCkBAIC0xMTcsNiArMTI3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZQogCU1lbW9yeUNvbnRleHQg cHJ1bmVfY29udGV4dDsKIAlib29sCQlkb19pbml0aWFsX3BydW5lOwogCWJvb2wJCWRvX2V4ZWNf cHJ1bmU7CisJUGxhblN0YXRlICAqcGFyZW50X3BsYW47CiAJaW50CQkJbnVtX3BhcnRwcnVuZWRh dGE7CiAJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJSQVlf TUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1bmVTdGF0ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0 cHJ1bmUuaAppbmRleCBjNTM2YTFmZTE5Li5iN2Y0OGVlZmNjIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oCkBAIC0yNiw2ICsyNiw3IEBAIHN0cnVjdCBSZWxPcHRJbmZvOwogICoJ CVN0b3JlcyBpbmZvcm1hdGlvbiBuZWVkZWQgYXQgcnVudGltZSBmb3IgcHJ1bmluZyBjb21wdXRh dGlvbnMKICAqCQlyZWxhdGVkIHRvIGEgc2luZ2xlIHBhcnRpdGlvbmVkIHRhYmxlLgogICoKKyAq IGlzX3ZhbGlkCQkJSGFzIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGlzIHN0cnVjdCBiZWVuIGluaXRp YWxpemVkPwogICogc3RyYXRlZ3kJCQlQYXJ0aXRpb24gc3RyYXRlZ3ksIGUuZy4gTElTVCwgUkFO R0UsIEhBU0guCiAgKiBwYXJ0bmF0dHMJCU51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBwYXJ0aXRp b24ga2V5LgogICogbnBhcnRzCQkJTnVtYmVyIG9mIHBhcnRpdGlvbnMgaW4gdGhpcyBwYXJ0aXRp b25lZCB0YWJsZS4KQEAgLTQ4LDYgKzQ5LDcgQEAgc3RydWN0IFJlbE9wdEluZm87CiAgKi8KIHR5 cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lQ29udGV4dAogeworCWJvb2wJCWlzX3ZhbGlkOwog CWNoYXIJCXN0cmF0ZWd5OwogCWludAkJCXBhcnRuYXR0czsKIAlpbnQJCQlucGFydHM7Ci0tIAoy LjQzLjAKCg== --000000000000f23687062288914f Content-Type: application/octet-stream; name="v56-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v56-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1afwhzz4 RnJvbSBiZmMyNTBlNzZhMTM1NDZlNzFlMGVhNWQ5NTY3NTA2NTA3NWFlZTQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgNiBTZXAgMjAyNCAxMzoxMTowNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU2 IDEvNV0gTW92ZSBQYXJ0aXRpb25QcnVuZUluZm8gb3V0IG9mIHBsYW4gbm9kZXMgaW50bwogUGxh bm5lZFN0bXQKClRoaXMgY2hhbmdlIG1vdmVzIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIGluZGl2 aWR1YWwgcGxhbiBub2RlcyB0bwpQbGFubmVkU3RtdCwgYWxsb3dpbmcgcnVudGltZSBpbml0aWFs IHBydW5pbmcgdG8gYmUgcGVyZm9ybWVkIGFjcm9zcwp0aGUgZW50aXJlIHBsYW4gdHJlZSB3aXRo b3V0IHRyYXZlcnNpbmcgdGhlIHRyZWUgdG8gZmluZCBub2Rlcwpjb250YWluaW5nIFBhcnRpdGlv blBydW5lSW5mb3MuCgpUaGUgUGFydGl0aW9uUHJ1bmVJbmZvIHBvaW50ZXIgZmllbGRzIGluIEFw cGVuZCBhbmQgTWVyZ2VBcHBlbmQgbm9kZXMKaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYW4gaW50 ZWdlciBpbmRleCB0aGF0IHBvaW50cyB0bwpQYXJ0aXRpb25QcnVuZUluZm9zIGluIGEgbGlzdCB3 aXRoaW4gUGxhbm5lZFN0bXQsIHdoaWNoIGhvbGRzIHRoZQpQYXJ0aXRpb25QcnVuZUluZm9zIGZv ciBhbGwgc3VicXVlcmllcy4KClJldmlld2VkLWJ5OiBBbHZhcm8gSGVycmVyYQotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYyAgICB8IDE5ICsrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAg ICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICB8ICA1 ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAyNCArKystLS0t CiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgfCAgMSArCiBzcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCA4NiArKysrKysrKysrKysrKysrLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgfCAxOSArKysr LS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgICB8ICA0ICstCiBzcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgfCAgNiArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgIHwgMTQgKystLQogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5oICAgIHwgIDggKy0tCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygr KSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNzEzY2YzZTgw Mi4uZjI2MzIzMmM2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04NjAsNiArODYwLDcg QEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRS YW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAK IAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0 X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBhcnRQcnVuZUluZm9zOwogCiAJLyoKIAkgKiBO ZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyks IGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYmZiMzQxOWVmYi4u YjAxYTJmZGZkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVs LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE4MSw2ICsx ODEsNyBAQCBFeGVjU2VyaWFsaXplUGxhbihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlw c3RtdC0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwogCXBzdG10LT5wYXJhbGxlbE1vZGVOZWVkZWQg PSBmYWxzZTsKIAlwc3RtdC0+cGxhblRyZWUgPSBwbGFuOworCXBzdG10LT5wYXJ0UHJ1bmVJbmZv cyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvczsKIAlwc3RtdC0+cnRhYmxlID0gZXN0YXRl LT5lc19yYW5nZV90YWJsZTsKIAlwc3RtdC0+cGVybUluZm9zID0gZXN0YXRlLT5lc19ydGVwZXJt aW5mb3M7CiAJcHN0bXQtPnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCA3NjUxODg2MjI5Li5lYzczMDY3NGYyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xNzg2LDYgKzE3ODYsOSBAQCBhZGp1c3RfcGFydGl0 aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICoJ CUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0aXRpb24g cHJ1bmluZyBhbmQKICAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYgbmVlZGVkCiAgKgorICogJ3Jv b3RfcGFyZW50X3JlbGlkcycgaWRlbnRpZmllcyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90aCB0 aGUgcGFyZW50IHBsYW4KKyAqIGFuZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5ICdw YXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCisgKgogICogT24gcmV0dXJuLCAqaW5pdGlhbGx5X3Zh bGlkX3N1YnBsYW5zIGlzIGFzc2lnbmVkIHRoZSBzZXQgb2YgaW5kZXhlcyBvZgogICogY2hpbGQg c3VicGxhbnMgdGhhdCBtdXN0IGJlIGluaXRpYWxpemVkIGFsb25nIHdpdGggdGhlIHBhcmVudCBw bGFuIG5vZGUuCiAgKiBJbml0aWFsIHBydW5pbmcgaXMgcGVyZm9ybWVkIGhlcmUgaWYgbmVlZGVk IGFuZCBpbiB0aGF0IGNhc2Ugb25seSB0aGUKQEAgLTE3OTgsMTEgKzE4MDEsMjUgQEAgYWRqdXN0 X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1h cCkKIFBhcnRpdGlvblBydW5lU3RhdGUgKgogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLAogCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJIFBh cnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJIGludCBwYXJ0X3BydW5lX2luZGV4 LAorCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJCQkJIEJpdG1hcHNl dCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykKIHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpw cnVuZXN0YXRlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcGxhbnN0YXRlLT5zdGF0ZTsKKwlQYXJ0 aXRpb25QcnVuZUluZm8gKnBydW5laW5mbzsKKworCS8qIE9idGFpbiB0aGUgcHJ1bmVpbmZvIHdl IG5lZWQsIGFuZCBtYWtlIHN1cmUgaXQncyB0aGUgcmlnaHQgb25lICovCisJcHJ1bmVpbmZvID0g bGlzdF9udGhfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcywKKwkJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgpOworCWlmICghYm1zX2VxdWFsKHJvb3Rf cGFyZW50X3JlbGlkcywgcHJ1bmVpbmZvLT5yb290X3BhcmVudF9yZWxpZHMpKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlRFUk5BTF9FUlJPUiksCisJCQkJZXJybXNn X2ludGVybmFsKCJtaXNtYXRjaGluZyBQYXJ0aXRpb25QcnVuZUluZm8gZm91bmQgYXQgcGFydF9w cnVuZV9pbmRleCAlZCIsCisJCQkJCQkJCXBhcnRfcHJ1bmVfaW5kZXgpLAorCQkJCWVycmRldGFp bF9pbnRlcm5hbCgicGxhbiBub2RlIHJlbGlkcyAlcywgcHJ1bmVpbmZvIHJlbGlkcyAlcyIsCisJ CQkJCQkJCSAgIGJtc1RvU3RyaW5nKHJvb3RfcGFyZW50X3JlbGlkcyksCisJCQkJCQkJCSAgIGJt c1RvU3RyaW5nKHBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzKSkpOwogCiAJLyogV2UgbWF5 IG5lZWQgYW4gZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAq LwogCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCmluZGV4IDU3MzdmOWY0ZWIuLjY3NzM0OTc5YjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNVdGlscy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lk KQogCWVzdGF0ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcnRlcGVybWluZm9z ID0gTklMOwogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9pbmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Li5kZTdlYmFiNWMyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0luaXRB cHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRz dGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVu aW5nIGlzIGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRf cHJ1bmVfaW5mbyAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJ ewogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1LDgg QEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVu ZHN0YXRlLT5wcywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyks Ci0JCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUt PnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJ CQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0g cHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBlMWI5Yjk4NGE3Li4zZWQ5 MTgwOGRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODIsNyAr ODIsNyBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVy Z2VBcHBlbmQ7CiAKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVk LCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0g TlVMTCkKKwlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIApAQCAtOTMsNyArOTMsOCBAQCBFeGVjSW5pdE1lcmdl QXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJ ICovCiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUt PnBzLAogCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJ CQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbywKKwkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3By dW5lX2luZGV4LAorCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAm dmFsaWRzdWJwbGFucyk7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0 ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IGJiNDVlZjMxOGYuLjY2NDJkMDlhMzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyMjUsNyArMTIy NSw2IEBAIGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAq YmVzdF9wYXRoLCBpbnQgZmxhZ3MpCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJaW50CQkJbmFz eW5jcGxhbnMgPSAwOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7 Ci0JUGFydGl0aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAlpbnQJCQlub2Rl bnVtc29ydGtleXMgPSAwOwogCUF0dHJOdW1iZXIgKm5vZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlP aWQJCSAgICpub2RlU29ydE9wZXJhdG9ycyA9IE5VTEw7CkBAIC0xMzc2LDYgKzEzNzUsOSBAQCBj cmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0 aCwgaW50IGZsYWdzKQogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwog CX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBy dW4tdGltZSBwcnVuZSAqLworCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJ ICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0 aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xMzk5LDE2ICsxNDAxLDE0IEBA IGNyZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9w YXRoLCBpbnQgZmxhZ3MpCiAJCX0KIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRw cnVuZWluZm8gPQotCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJ CQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlw bGFuLT5wYXJ0X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJl bCwKKwkJCQkJCQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJ CSAgcHJ1bmVxdWFsKTsKIAl9CiAKIAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwogCXBs YW4tPm5hc3luY3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFu ID0gYmVzdF9wYXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZv ID0gcGFydHBydW5laW5mbzsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4s IChQYXRoICopIGJlc3RfcGF0aCk7CiAKQEAgLTE0NDcsNyArMTQ0Nyw2IEBAIGNyZWF0ZV9tZXJn ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3Bh dGgsCiAJTGlzdAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJ UmVsT3B0SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVu ZUluZm8gKnBhcnRwcnVuZWluZm8gPSBOVUxMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZlIHRo ZSBhY3R1YWwgY3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0x NTQwLDYgKzE1MzksOSBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3Vi cGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRo YXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCW5vZGUtPnBhcnRfcHJ1bmVfaW5k ZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2Vm dWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1 dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0x NTU1LDEzICsxNTU3LDEzIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAq cm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCUFzc2VydChiZXN0X3BhdGgtPnBh dGgucGFyYW1faW5mbyA9PSBOVUxMKTsKIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBh cnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJ CQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOwor CQkJbm9kZS0+cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJ CQkJCQkgIHBydW5lcXVhbCk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwot CW5vZGUtPnBhcnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CisKIAogCS8qCiAJICogSWYg cHJlcGFyZV9zb3J0X2Zyb21fcGF0aGtleXMgYWRkZWQgc29ydCBjb2x1bW5zLCBidXQgd2Ugd2Vy ZSB0b2xkIHRvCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZDkyZDQzYTE3 ZS4uOGNmZmE0NDdmZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTUz LDYgKzU1Myw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpx dWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+ZGVwZW5kc09uUm9sZSA9 IGdsb2ItPmRlcGVuZHNPblJvbGU7CiAJcmVzdWx0LT5wYXJhbGxlbE1vZGVOZWVkZWQgPSBnbG9i LT5wYXJhbGxlbE1vZGVOZWVkZWQ7CiAJcmVzdWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOworCXJl c3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9iLT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0 YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+Zmlu YWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRS ZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZz LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggOTFjN2M0ZmUy Zi4uZTJlYTQwNmM0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTcz Miw2ICsxNzMyLDQ4IEBAIHNldF9jdXN0b21zY2FuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAJY3NjYW4tPmN1c3RvbV9yZWxpZHMgPSBvZmZzZXRfcmVsaWRfc2V0KGNzY2FuLT5jdXN0 b21fcmVsaWRzLCBydG9mZnNldCk7CiB9CiAKKy8qCisgKiByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZv CisgKgkJU3Vicm91dGluZSBmb3Igc2V0X2FwcGVuZF9yZWZlcmVuY2VzIGFuZCBzZXRfbWVyZ2Vh cHBlbmRfcmVmZXJlbmNlcworICoKKyAqIEFkZCB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIGZyb20g cm9vdC0+cGFydFBydW5lSW5mb3MgYXQgdGhlIGdpdmVuIGluZGV4CisgKiBpbnRvIFBsYW5uZXJH bG9iYWwtPnBhcnRQcnVuZUluZm9zIGFuZCByZXR1cm4gaXRzIGluZGV4IHRoZXJlLgorICoKKyAq IEFsc28gdXBkYXRlIHRoZSBSVCBpbmRleGVzIHByZXNlbnQgaW4gUGFydGl0aW9uZWRSZWxQcnVu ZUluZm9zIHRvIGFkZCB0aGUKKyAqIG9mZnNldC4KKyAqLworc3RhdGljIGludAorcmVnaXN0ZXJf cGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGlu dCBydG9mZnNldCkKK3sKKwlQbGFubmVyR2xvYmFsICAqZ2xvYiA9IHJvb3QtPmdsb2I7CisJUGFy dGl0aW9uUHJ1bmVJbmZvICpwaW5mbzsKKwlMaXN0Q2VsbAkqbDsKKworCUFzc2VydChwYXJ0X3By dW5lX2luZGV4ID49IDAgJiYKKwkJICAgcGFydF9wcnVuZV9pbmRleCA8IGxpc3RfbGVuZ3RoKHJv b3QtPnBhcnRQcnVuZUluZm9zKSk7CisJcGluZm8gPSBsaXN0X250aF9ub2RlKFBhcnRpdGlvblBy dW5lSW5mbywgcm9vdC0+cGFydFBydW5lSW5mb3MsCisJCQkJCQkgIHBhcnRfcHJ1bmVfaW5kZXgp OworCisJcGluZm8tPnJvb3RfcGFyZW50X3JlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQocGluZm8t PnJvb3RfcGFyZW50X3JlbGlkcywKKwkJCQkJCQkJCQkJCSBydG9mZnNldCk7CisJZm9yZWFjaChs LCBwaW5mby0+cHJ1bmVfaW5mb3MpCisJeworCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJz dChsKTsKKwkJTGlzdENlbGwgICAqbDI7CisKKwkJZm9yZWFjaChsMiwgcHJ1bmVfaW5mb3MpCisJ CXsKKwkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9IGxmaXJzdChsMik7CisK KwkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCQl9CisJfQorCisJZ2xvYi0+cGFy dFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwaW5mbyk7CisKKwly ZXR1cm4gbGlzdF9sZW5ndGgoZ2xvYi0+cGFydFBydW5lSW5mb3MpIC0gMTsKK30KKwogLyoKICAq IHNldF9hcHBlbmRfcmVmZXJlbmNlcwogICoJCURvIHNldF9wbGFuX3JlZmVyZW5jZXMgcHJvY2Vz c2luZyBvbiBhbiBBcHBlbmQKQEAgLTE3ODQsMjEgKzE4MjYsMTMgQEAgc2V0X2FwcGVuZF9yZWZl cmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwogCi0JaWYgKGFwbGFuLT5wYXJ0 X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIGFwbGFuLT5wYXJ0X3BydW5lX2luZm8tPnBy dW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJzdChsKTsKLQkJ CUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKLQkJCXsKLQkJ CQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOwotCi0JCQkJcGlu Zm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9CisJLyoKKwkgKiBBZGQgUGFy dGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9iYWwgYW5kIHVwZGF0ZSB0aGUg aW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBpbiBpdCB0byBh ZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkK KwkJYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhy b290LCBhcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3Qg bmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQo YXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CkBAIC0xODYwLDIxICsxODk0LDEzIEBAIHNl dF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJbXBsYW4tPmFw cHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwog Ci0JaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIG1wbGFuLT5w YXJ0X3BydW5lX2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZv cyA9IGxmaXJzdChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVu ZV9pbmZvcykKLQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmly c3QobDIpOwotCi0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9 CisJLyoKKwkgKiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9i YWwgYW5kIHVwZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMg cHJlc2VudCBpbiBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAobXBsYW4tPnBhcnRf cHJ1bmVfaW5kZXggPj0gMCkKKwkJbXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0 ZXJfcGFydHBydW5laW5mbyhyb290LCBtcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQp OwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJl ZSAuLi4gKi8KIAlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9w YXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggOWExYTdmYWFjNy4uNjBmYWJiMTczNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMjA3LDE2ICsyMDcsMjAgQEAgc3Rh dGljIHZvaWQgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpj b250ZXh0LAogCiAvKgogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvCi0gKgkJQnVpbGRzIGEg UGFydGl0aW9uUHJ1bmVJbmZvIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBleGVjdXRvciB0byBh bGxvdwotICoJCWFkZGl0aW9uYWwgcGFydGl0aW9uIHBydW5pbmcgdG8gdGFrZSBwbGFjZS4gIFJl dHVybnMgTlVMTCB3aGVuCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgd291bGQgYmUgdXNlbGVzcy4K KyAqCQlDaGVja3MgaWYgdGhlIGdpdmVuIHNldCBvZiBxdWFscyBjYW4gYmUgdXNlZCB0byBidWls ZCBwcnVuaW5nIHN0ZXBzCisgKgkJdGhhdCB0aGUgZXhlY3V0b3IgY2FuIHVzZSB0byBwcnVuZSBh d2F5IHVubmVlZGVkIHBhcnRpdGlvbnMuICBJZgorICoJCXN1aXRhYmxlIHF1YWxzIGFyZSBmb3Vu ZCB0aGVuIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIGJ1aWx0IGFuZCB0YWdnZWQKKyAqCQlvbnRv IHRoZSBQbGFubmVySW5mbydzIHBhcnRQcnVuZUluZm9zIGxpc3QuCisgKgorICogVGhlIHJldHVy biB2YWx1ZSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgaXRlbSBhZGRlZCB0byB0aGUKKyAq IHBhcnRQcnVuZUluZm9zIGxpc3Qgb3IgLTEgaWYgbm90aGluZyB3YXMgYWRkZWQuCiAgKgogICog J3BhcmVudHJlbCcgaXMgdGhlIFJlbE9wdEluZm8gZm9yIGFuIGFwcGVuZHJlbCwgYW5kICdzdWJw YXRocycgaXMgdGhlIGxpc3QKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGlsZCByZWxzLgog ICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1YWxzIChpLmUu LCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBhcHBl bmRyZWwpLgogICovCi1QYXJ0aXRpb25QcnVuZUluZm8gKgoraW50CiBtYWtlX3BhcnRpdGlvbl9w cnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJ CSBMaXN0ICpzdWJwYXRocywKIAkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCkBAIC0zMzAsMTAgKzMz NCwxMSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBub3QgYm90aGVy IHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZvcyA9PSBOSUwp Ci0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxkIHRoZSByZXN1 bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0aXRpb25QcnVu ZUluZm8pOworCXBydW5laW5mby0+cm9vdF9wYXJlbnRfcmVsaWRzID0gcGFyZW50cmVsLT5yZWxp ZHM7CiAJcHJ1bmVpbmZvLT5wcnVuZV9pbmZvcyA9IHBydW5lcmVsaW5mb3M7CiAKIAkvKgpAQCAt MzU2LDcgKzM2MSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCWVsc2UKIAkJcHJ1bmVpbmZvLT5vdGhlcl9zdWJw bGFucyA9IE5VTEw7CiAKLQlyZXR1cm4gcHJ1bmVpbmZvOworCXJvb3QtPnBhcnRQcnVuZUluZm9z ID0gbGFwcGVuZChyb290LT5wYXJ0UHJ1bmVJbmZvcywgcHJ1bmVpbmZvKTsKKworCXJldHVybiBs aXN0X2xlbmd0aChyb290LT5wYXJ0UHJ1bmVJbmZvcykgLSAxOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IGMwOWJjODNiMmEuLjEyYWFjYzg0ZmYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEyMyw5ICsxMjMsOSBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAKIGV4dGVybiBQYXJ0aXRpb25QcnVuZVN0YXRl ICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJ CQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJCSBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbywKKwkJCQkJCQkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCisJ CQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcm9vdF9wYXJlbnRfcmVsaWRzLAogCQkJCQkJCQkJCQkJ CSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpOwogZXh0ZXJuIEJpdG1hcHNl dCAqRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3Rh dGUsCiAJCQkJCQkJCQkJICAgYm9vbCBpbml0aWFsX3BydW5lKTsKLQogI2VuZGlmCQkJCQkJCS8q IEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA4ODQ2Nzk3N2Y4Li4y MmI5MjhlMDg1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjM2LDYgKzYzNiw3IEBAIHR5cGVk ZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBu b25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Np b25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBv ZiBwbGFuIHRyZWUgKi8KKwlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBQbGFubmVk U3RtdC5wYXJ0UHJ1bmVJbmZvcyAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNv dXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVy OwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApp bmRleCAwN2UyNDE1Mzk4Li44ZDMwYjZlODk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTI4 LDYgKzEyOCw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlz dCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIAorCS8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUgcGxhbiAqLworCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4g ZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2Miw5 IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkg cGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8q IFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlz dAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggNjJj ZDZhNjY2Ni4uMzlkMDI4MWMyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJlZTsJ CS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7IC8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKKwkJCQkJCQkJICog cGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBu b2RlcyAqLwogCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mbyBub2RlcyBmb3IgcnRhYmxlCkBAIC0yNzYsOCArMjc5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3Ig cnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICov Ci0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4 IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5p bmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0KQEAgLTMxMSw4ICszMTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAog CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Qg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRp bWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3Ry dWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBs YW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8K KwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTQxNCw2ICsxNDE3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblJvd01hcmsK ICAqIFRoZW4sIHNpbmNlIGFuIEFwcGVuZC10eXBlIG5vZGUgY291bGQgaGF2ZSBtdWx0aXBsZSBw YXJ0aXRpb25pbmcKICAqIGhpZXJhcmNoaWVzIGFtb25nIGl0cyBjaGlsZHJlbiwgd2UgaGF2ZSBh biB1bm9yZGVyZWQgTGlzdCBvZiB0aG9zZSBMaXN0cy4KICAqCisgKiByb290X3BhcmVudF9yZWxp ZHMJUmVsT3B0SW5mby5yZWxpZHMgb2YgdGhlIHJlbGF0aW9uIHRvIHdoaWNoIHRoZSBwYXJlbnQK KyAqCQkJCQkJcGxhbiBub2RlIGFuZCB0aGlzIFBhcnRpdGlvblBydW5lSW5mbyBub2RlIGJlbG9u ZwogICogcHJ1bmVfaW5mb3MJCQlMaXN0IG9mIExpc3RzIGNvbnRhaW5pbmcgUGFydGl0aW9uZWRS ZWxQcnVuZUluZm8gbm9kZXMsCiAgKgkJCQkJCW9uZSBzdWJsaXN0IHBlciBydW4tdGltZS1wcnVu YWJsZSBwYXJ0aXRpb24gaGllcmFyY2h5CiAgKgkJCQkJCWFwcGVhcmluZyBpbiB0aGUgcGFyZW50 IHBsYW4gbm9kZSdzIHN1YnBsYW5zLgpAQCAtMTQyNiw2ICsxNDMxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUHJ1bmVJbmZvCiAJcGdfbm9kZV9hdHRyKG5vX2VxdWFsLCBub19xdWVyeV9q dW1ibGUpCiAKIAlOb2RlVGFnCQl0eXBlOworCUJpdG1hcHNldCAgKnJvb3RfcGFyZW50X3JlbGlk czsKIAlMaXN0CSAgICpwcnVuZV9pbmZvczsKIAlCaXRtYXBzZXQgICpvdGhlcl9zdWJwbGFuczsK IH0gUGFydGl0aW9uUHJ1bmVJbmZvOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9u aW5nL3BhcnRwcnVuZS5oIGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmlu ZGV4IGJkNDkwZDE1NGYuLmM1MzZhMWZlMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRp dGlvbmluZy9wYXJ0cHJ1bmUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmgKQEAgLTcwLDEwICs3MCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNv bnRleHQKICNkZWZpbmUgUHJ1bmVDeHRTdGF0ZUlkeChwYXJ0bmF0dHMsIHN0ZXBfaWQsIGtleW5v KSBcCiAJKChwYXJ0bmF0dHMpICogKHN0ZXBfaWQpICsgKGtleW5vKSkKIAotZXh0ZXJuIFBhcnRp dGlvblBydW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5m byAqcm9vdCwKLQkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAotCQkJ CQkJCQkJCQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7 CitleHRlcm4gaW50IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJCQkJ TGlzdCAqc3VicGF0aHMsCisJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOwogZXh0ZXJuIEJpdG1h cHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVjdCBSZWxPcHRJbmZvICpyZWwp OwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoUGFydGl0aW9uUHJ1 bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcyk7Ci0t IAoyLjQzLjAKCg== --000000000000f23687062288914f Content-Type: application/octet-stream; name="v56-0004-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Disposition: attachment; filename="v56-0004-Defer-locking-of-runtime-prunable-relations-to-e.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1afwhzv1 RnJvbSBjNmJjNTVhZDY5M2VhNWE1MjkzNmU0YTBlMWUxMDUwMzZlZmM4ZDAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMTggU2VwIDIwMjQgMTI6MDA6NDEgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NiA0LzVdIERlZmVyIGxvY2tpbmcgb2YgcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMgdG8KIGV4 ZWN1dG9yCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpXaGVuIHByZXBhcmluZyBh IGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIHBsYW5jYWNoZS5jIGxvY2tzIHRoZQpyZWxhdGlv bnMgaW4gdGhlIHBsYW4ncyByYW5nZSB0YWJsZSB0byBlbnN1cmUgdGhleSBhcmUgc2FmZSBmb3IK ZXhlY3V0aW9uLiBIb3dldmVyLCB0aGlzIGFwcHJvYWNoLCBpbXBsZW1lbnRlZCBpbgpBY3F1aXJl RXhlY3V0b3JMb2NrcygpLCByZXN1bHRzIGluIHVubmVjZXNzYXJpbHkgbG9ja2luZyByZWxhdGlv bnMKdGhhdCBtaWdodCBiZSBwcnVuZWQgZHVyaW5nICJpbml0aWFsIiBydW50aW1lIHBydW5pbmcu CgpUbyBvcHRpbWl6ZSB0aGlzLCBsb2NraW5nIGlzIG5vdyBkZWZlcnJlZCBmb3IgcmVsYXRpb25z IHN1YmplY3QgdG8KImluaXRpYWwiIHJ1bnRpbWUgcHJ1bmluZy4gVGhlIHBsYW5uZXIgbm93IHBy b3ZpZGVzIGEgc2V0IG9mCiJ1bnBydW5hYmxlIiByZWxhdGlvbnMgdGhyb3VnaCB0aGUgbmV3IFBs YW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMKZmllbGQuIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkg d2lsbCBvbmx5IGxvY2sgdGhlc2UgdW5wcnVuYWJsZQpyZWxhdGlvbnMuIFBsYW5uZWRTdG10LnVu cHJ1bmFibGVSZWxpZHMgaXMgcG9wdWxhdGVkIGJ5IHN1YnRyYWN0aW5nCnRoZSBzZXQgb2YgaW5p dGlhbGx5IHBydW5hYmxlIHJlbGlkcyBmcm9tIGFsbCBSVCBpbmRleGVzLiBUaGUgcHJ1bmFibGUK cmVsaWRzIGFyZSBpZGVudGlmaWVkIGJ5IGV4YW1pbmluZyBhbGwgUGFydGl0aW9uUHJ1bmVJbmZv cyBkdXJpbmcKc2V0X3BsYW5fcmVmcygpIGFuZCBzdG9yaW5nIHRoZSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbnMgc3ViamVjdCB0bwoiaW5pdGlhbCIgcHJ1bmluZyBzdGVwcy4gV2hpbGUgYXQgaXQs IHNvbWUgZHVwbGljYXRlZCBjb2RlIGluCnNldF9hcHBlbmRfcmVmZXJlbmNlcygpIGFuZCBzZXRf bWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIHRoYXQKY29uc3RydWN0cyB0aGUgcHJ1bmFibGUgcmVs aWRzIHNldCBoYXMgYmVlbiByZWZhY3RvcmVkIGludG8gYSBjb21tb24KZnVuY3Rpb24uCgpEZWZl cnJlZCBsb2NrcyBhcmUgdGFrZW4sIGlmIG5lY2Vzc2FyeSwgYWZ0ZXIgRXhlY0RvSW5pdGlhbFBy dW5pbmcoKQpkZXRlcm1pbmVzIHRoZSBzZXQgb2YgdW5wcnVuZWQgcGFydGl0aW9ucy4gVG8gYWxs b3cgdGhlIGV4ZWN1dG9yIHRvCmRldGVybWluZSB3aGV0aGVyIHRoZSBwbGFuIHRyZWUgaXTigJlz IGV4ZWN1dGluZyBpcyBjYWNoZWQgYW5kIG1heQpjb250YWluIHVubG9ja2VkIHJlbGF0aW9ucywg dGhlIENhY2hlZFBsYW4gaXMgbm93IG1hZGUgYXZhaWxhYmxlIHZpYQp0aGUgUXVlcnlEZXNjLiBU aGUgZXhlY3V0b3IgY2FuIGNhbGwgQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZygpLAp3aGljaCBy ZXR1cm5zIHRydWUgaWYgdGhlIENhY2hlZFBsYW4gaXMgYSByZXVzYWJsZSBnZW5lcmljIHBsYW4g dGhhdAptaWdodCBjb250YWluIHVubG9ja2VkIHJlbGF0aW9ucy4KClBsYW4gbm9kZXMgbGlrZSBB cHBlbmQgaGF2ZSBhbHJlYWR5IGJlZW4gdXBkYXRlZCB0byBjb25zaWRlciBvbmx5IHRoZQpzZXQg b2YgdW5wcnVuZWQgcmVsYXRpb25zLiBIb3dldmVyLCB0aGVyZSBhcmUgY2FzZXMsIHN1Y2ggYXMg Y2hpbGQKUm93TWFya3MgYW5kIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHdoZXJlIHRoZSBjb2Rl IG1hbmlwdWxhdGluZyB0aG9zZQpkbyBub3QgZGlyZWN0bHkgcmVjZWl2ZSBpbmZvcm1hdGlvbiBh Ym91dCB1bnBydW5lZCBwYXJ0aXRpb25zLgpUaGVyZWZvcmUsIGNvZGUgaGFuZGxpbmcgY2hpbGQg Um93TWFya3MgYW5kIHJlc3VsdCByZWxhdGlvbnMgaGFzIGJlZW4KbW9kaWZpZWQgdG8gZW5zdXJl IHRoZXkgZG9u4oCZdCBiZWxvbmcgdG8gcHJ1bmVkIHBhcnRpdGlvbnMuIEZvciB0aGlzLAp0aGUg UlQgaW5kZXhlcyBvZiB1bnBydW5lZCBwYXJ0aXRpb25zIGFyZSBhZGRlZCBpbgpFeGVjRG9Jbml0 aWFsUHJ1bmluZygpIHRvIGVzX3VucHJ1bmFibGVfcmVsaWRzLCB3aGljaCBpbml0aWFsbHkKY29u dGFpbnMgUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcy4gVGhlIGNvcnJlc3BvbmRpbmcgY29k ZSBub3cKcHJvY2Vzc2VzIG9ubHkgdGhvc2UgY2hpbGQgUm93TWFya3MgYW5kIHJlc3VsdCByZWxh dGlvbnMgd2hvc2Ugb3duaW5nCnJlbGF0aW9ucyBhcmUgaW4gdGhpcyBzZXQuIEZvciByZXN1bHQg cmVsYXRpb25zIG1hbmFnZWQgYnkgYQpNb2RpZnlUYWJsZSBub2RlLCBpdHMgcmVzdWx0UmVsYXRp b25zIGxpc3QgYW5kIG90aGVyIGxpc3RzIHRoYXQKcGFyYWxsZWwgaXQgKHdpdGhDaGVja09wdGlv bkxpc3RzLCByZXR1cm5pbmdMaXN0cywgYW5kCnVwZGF0ZUNvbG5vc0xpc3RzKSBhcmUgdHJ1bmNh dGVkIGluIEV4ZWNJbml0TW9kaWZ5VGFibGUgdG8gb25seQpjb25zaWRlciB1bnBydW5lZCByZWxh dGlvbnMgYW5kIHRoZSBSZXN1bHRSZWxJbmZvIHN0cnVjdHMgYXJlIGNyZWF0ZWQKb25seSBmb3Ig dGhvc2UuCgpGaW5hbGx5LCBhbiBBc3NlcnQgaGFzIGFsc28gYmVlbiBhZGRlZCBpbiBFeGVjQ2hl Y2tQZXJtaXNzaW9ucygpIHRvCmVuc3VyZSB0aGF0IGFsbCByZWxhdGlvbnMgd2hvc2UgcGVybWlz c2lvbnMgYXJlIGNoZWNrZWQgaGF2ZSBiZWVuCnByb3Blcmx5IGxvY2tlZCwgaGVscGluZyB0byBj YXRjaCBhbnkgYWNjaWRlbnRhbCBvbWlzc2lvbiBvZiByZWxhdGlvbnMKZnJvbSB0aGUgdW5wcnVu YWJsZVJlbGlkcyBzZXQgdGhhdCBzaG91bGQgaGF2ZSB0aGVpciBwZXJtaXNzaW9ucwpjaGVja2Vk LgoKVGhpcyBkZWZlcm1lbnQgaW50cm9kdWNlcyBhIHdpbmRvdyB3aGVyZSBwcnVuYWJsZSByZWxh dGlvbnMgbWF5IGJlCmFsdGVyZWQgYnkgY29uY3VycmVudCBEREwsIHBvdGVudGlhbGx5IGNhdXNp bmcgdGhlIHBsYW4gdG8gYmVjb21lCmludmFsaWQuIENvbnNlcXVlbnRseSwgdGhlIGV4ZWN1dG9y IG1pZ2h0IGF0dGVtcHQgdG8gZXhlY3V0ZSBhbgppbnZhbGlkIHBsYW4sIGxlYWRpbmcgdG8gZXJy b3JzIHN1Y2ggYXMgZmFpbGluZyB0byBsb2NhdGUgdGhlIGluZGV4Cm9mIGFuIHVucHJ1bmVkIHBh cnRpdGlvbiB0aGF0IG1heSBoYXZlIGJlZW4gZHJvcHBlZCBjb25jdXJyZW50bHkKZHVyaW5nIEV4 ZWNJbml0SW5kZXhTY2FuKCkgKGlmIGl0J3MgcGFydGl0aW9uLWxvY2FsLCBub3QgaW5oZXJpdGVk LApmb3IgZXhhbXBsZSkuICBGdXR1cmUgY29tbWl0cyB3aWxsIGludHJvZHVjZSBjaGFuZ2VzIHRv IGVuYWJsZSB0aGUKZXhlY3V0b3IgdG8gY2hlY2sgcGxhbiB2YWxpZGl0eSBkdXJpbmcgRXhlY3V0 b3JTdGFydCgpIGFuZCByZXRyeSB3aXRoCmEgbmV3bHkgY3JlYXRlZCBwbGFuIGlmIHRoZSBvcmln aW5hbCBiZWNvbWVzIGludmFsaWQgYWZ0ZXIgdGFraW5nCmRlZmVycmVkIGxvY2tzLgotLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgMiArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDcgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jICAgICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy9wcmVwYXJlLmMgICAgICAgICAgICAgICAgfCAgMyArLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgNzUgKysrKysrKysrKysrKysrKystCiBz cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyAgICAgICAgICAgfCAgOSArKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyAgICAgICAgICB8IDM2ICsrKysrKyst LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgIDEgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDggKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jICAgICAgICAgICB8IDEwICsrLQogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAgICAgIHwgIDIgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDc4ICsrKysrKysrKysr KysrKystLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8 ICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8ICAy ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8ICA3ICsr CiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgICAgICAgICAgfCAxOCArKysr Kwogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMTAgKyst CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCA0MCArKysr KystLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAg NSArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgICAgICAgIHwgIDUg Ky0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAyICsK IHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8IDEyICsrKwog c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgIDYgKysKIHNy Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA3ICsrCiBzcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAxMCArKysKIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDQ0ICsrKysrKysrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsICAgICAgfCAxOCArKysr KwogMjkgZmlsZXMgY2hhbmdlZCwgMzY2IGluc2VydGlvbnMoKyksIDU3IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKaW5kZXggOTFkZTQ0MmY0My4uZGI5NzZmOTI4YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weXRvLmMKQEAgLTU1Miw3ICs1NTIsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpw c3RhdGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJCS8qIENy ZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUtPnF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJY3N0 YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3Nv dXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUlu dmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY3JlYXRlYXMuYwppbmRleCAwYjYyOWIxZjc5Li41N2EzMzc1Y2FkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NyZWF0ZWFzLmMKQEAgLTMyNCw3ICszMjQsNyBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFw c2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcg b3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywg cXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggYWFlYzQzOTg5Mi4uNDlm NzM3MDczNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtNTA5LDcgKzUwOSw3IEBAIHN0YW5k YXJkX0V4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCX0K IAogCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQlFeHBsYWlu T25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJ RXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs IHF1ZXJ5RW52LAogCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2Fn ZSA6IE5VTEwpLAogCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CiB9 CkBAIC02MTcsNyArNjE3LDggQEAgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAgKiB0byBjYWxsIGl0LgogICov CiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1 c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBp bnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNh Z2UsCkBAIC02NzMsNyArNjc0LDcgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQlkZXN0ID0gTm9u ZV9SZWNlaXZlcjsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0J cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKKwlx dWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIGNwbGFuLCBxdWVyeVN0cmlu ZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJ CQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMKaW5kZXggZmFiNTlhZDVmNi4uYmQxNjllZGVmZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMKQEAgLTc0Miw2ICs3NDIsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29u c3QgY2hhciAqc3FsKQogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOwogCiAJCQkJcWRlc2MgPSBDcmVh dGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5V TEwsIDApOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IDAxMDA5Nzg3M2QuLjY5YmU3NGI0YmQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzOCw3ICs0MzgsNyBAQCByZWZyZXNoX21hdHZp ZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0 aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJl Y3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0 ZVF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURl c2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwppbmRleCAwNzI1N2Q0ZGI5Li4zMTFiOWViZDViIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCkBAIC02NTUsNyArNjU1LDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRl U3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBs YW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAo cHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0 bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBhcmFtTEksIHF1ZXJ5RW52LAorCQkJRXhwbGFp bk9uZVBsYW4ocHN0bXQsIGNwbGFuLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAor CQkJCQkJICAgcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJz IDogTlVMTCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDUyMjJhYTlhYjMu LjJjMTRlZTJiNmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNTQsNiArNTQsNyBAQAog I2luY2x1ZGUgIm5vZGVzL3F1ZXJ5anVtYmxlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0 aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCkBAIC05MSw2ICs5 Miw3IEBAIHN0YXRpYyBib29sIEV4ZWNDaGVja1Blcm1pc3Npb25zTW9kaWZpZWQoT2lkIHJlbE9p ZCwgT2lkIHVzZXJpZCwKIAkJCQkJCQkJCQkgQWNsTW9kZSByZXF1aXJlZFBlcm1zKTsKIHN0YXRp YyB2b2lkIEV4ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpOwog c3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpw bGFuVHJlZSk7CitzdGF0aWMgaW5saW5lIGJvb2wgRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoRVN0 YXRlICplc3RhdGUpOwogCiAvKiBlbmQgb2YgbG9jYWwgZGVjbHMgKi8KIApAQCAtNjEwLDYgKzYx MiwyMSBAQCBFeGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVw ZXJtaW5mb3MsCiAJCQkJICAgKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYKIAkJCQkJ cnRlLT5yZWxraW5kID09IFJFTEtJTkRfVklFVykpOwogCisJCQkvKgorCQkJICogRW5zdXJlIHRo YXQgd2UgaGF2ZSBhdCBsZWFzdCBhbiBBY2Nlc3NTaGFyZUxvY2sgb24gcmVsYXRpb25zCisJCQkg KiB3aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQuCisJCQkgKgorCQkJICogU2tp cCB0aGlzIGNoZWNrIGluIGEgcGFyYWxsZWwgd29ya2VyIGJlY2F1c2UgbG9ja3Mgd29uJ3QgYmUK KwkJCSAqIHRha2VuIHVudGlsIEV4ZWNJbml0Tm9kZSgpIHBlcmZvcm1zIHBsYW4gaW5pdGlhbGl6 YXRpb24uCisJCQkgKgorCQkJICogWFhYOiBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIGluIGEgcGFy YWxsZWwgd29ya2VyIG1heSBiZQorCQkJICogcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrcyBkb25l IGluIHRoZSBsZWFkZXIgcHJvY2Vzcywgc28gdGhpcworCQkJICogc2hvdWxkIGJlIHJldmlld2Vk IHRvIGVuc3VyZSBpdOKAmXMgbmVjZXNzYXJ5LgorCQkJICovCisJCQlBc3NlcnQoSXNQYXJhbGxl bFdvcmtlcigpIHx8CisJCQkJICAgQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUocnRlLT5yZWxp ZCwgQWNjZXNzU2hhcmVMb2NrLAorCQkJCQkJCQkJCQkgIHRydWUpKTsKKwogCQkJKHZvaWQpIGdl dFJURVBlcm1pc3Npb25JbmZvKHJ0ZXBlcm1pbmZvcywgcnRlKTsKIAkJCS8qIE1hbnktdG8tb25l IG1hcHBpbmcgbm90IGFsbG93ZWQgKi8KIAkJCUFzc2VydCghYm1zX2lzX21lbWJlcihydGUtPnBl cm1pbmZvaW5kZXgsIGluZGV4c2V0KSk7CkBAIC04NzIsMTIgKzg4OSw0NiBAQCBFeGVjRG9Jbml0 aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJICogcmVzdWx0LgogCQkgKi8KIAkJaWYgKHBy dW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRN YXRjaGluZ1N1YlBsYW5zKHBydW5lc3RhdGUsIHRydWUpOworCQl7CisJCQlCaXRtYXBzZXQgKnZh bGlkc3VicGxhbl9ydGlzID0gTlVMTDsKKworCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJCSAmdmFsaWRzdWJw bGFuX3J0aXMpOworCQkJaWYgKEV4ZWNTaG91bGRMb2NrUmVsYXRpb25zKGVzdGF0ZSkpCisJCQl7 CisJCQkJaW50CQlydGluZGV4ID0gLTE7CisKKwkJCQlydGluZGV4ID0gLTE7CisJCQkJd2hpbGUg KChydGluZGV4ID0gYm1zX25leHRfbWVtYmVyKHZhbGlkc3VicGxhbl9ydGlzLAorCQkJCQkJCQkJ CQkJICBydGluZGV4KSkgPj0gMCkKKwkJCQl7CisJCQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4 ZWNfcnRfZmV0Y2gocnRpbmRleCwgZXN0YXRlKTsKKworCQkJCQlBc3NlcnQocnRlLT5ydGVraW5k ID09IFJURV9SRUxBVElPTiAmJgorCQkJCQkJICAgcnRlLT5yZWxsb2NrbW9kZSAhPSBOb0xvY2sp OworCQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJ CQkJfQorCQkJfQorCQkJZXN0YXRlLT5lc191bnBydW5hYmxlX3JlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhlc3RhdGUtPmVzX3VucHJ1bmFibGVfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQkgICB2YWxp ZHN1YnBsYW5fcnRpcyk7CisJCX0KKwogCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9 IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCQkJCQl2YWxp ZHN1YnBsYW5zKTsKIAl9CiB9CiAKKy8qCisgKiBMb2NrcyBtaWdodCBiZSBuZWVkZWQgb25seSBp ZiBydW5uaW5nIGEgY2FjaGVkIHBsYW4gdGhhdCBtaWdodCBjb250YWluCisgKiB1bmxvY2tlZCBy ZWxhdGlvbnMsIHN1Y2ggYXMgcmV1c2VkIGdlbmVyaWMgcGxhbnMuCisgKi8KK3N0YXRpYyBpbmxp bmUgYm9vbAorRXhlY1Nob3VsZExvY2tSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCit7CisJcmV0 dXJuIGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9PSBOVUxMID8gZmFsc2UgOgorCQlDYWNoZWRQbGFu UmVxdWlyZXNMb2NraW5nKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CisKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqCQlJbml0UGxhbgogICoKQEAgLTg5MCw2ICs5NDEsNyBAQCBJbml0UGxhbihRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlDbWRUeXBlCQlvcGVyYXRpb24gPSBxdWVyeURl c2MtPm9wZXJhdGlvbjsKIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2MtPnBs YW5uZWRzdG10OworCUNhY2hlZFBsYW4gKmNhY2hlZHBsYW4gPSBxdWVyeURlc2MtPmNwbGFuOwog CVBsYW4JICAgKnBsYW4gPSBwbGFubmVkc3RtdC0+cGxhblRyZWU7CiAJTGlzdAkgICAqcmFuZ2VU YWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBxdWVyeURl c2MtPmVzdGF0ZTsKQEAgLTkwOSwxMCArOTYxLDEzIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFi bGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9 IHBsYW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IGNhY2hlZHBsYW47CisJZXN0 YXRlLT5lc191bnBydW5hYmxlX3JlbGlkcyA9IGJtc19jb3B5KHBsYW5uZWRzdG10LT51bnBydW5h YmxlUmVsaWRzKTsKIAogCS8qCiAJICogUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5n IHRvIGRldGVybWluZSB0aGUgcGxhbiBub2RlcyB0aGF0IHdpbGwKLQkgKiBub3QgYmUgZXhlY3V0 ZWQuCisJICogbm90IGJlIGV4ZWN1dGVkLiAgVGhpcyB3aWxsIGFsc28gYWRkIHRoZSBSVCBpbmRl eGVzIG9mIHN1cnZpdmluZyBsZWFmCisJICogcGFydGl0aW9ucyB0byBlc191bnBydW5hYmxlX3Jl bGlkcy4KIAkgKi8KIAllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+ cGFydFBydW5lSW5mb3M7CiAJRXhlY0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKQEAgLTkzMSw4 ICs5ODYsMTMgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ CQlSZWxhdGlvbglyZWxhdGlvbjsKIAkJCUV4ZWNSb3dNYXJrICplcm07CiAKLQkJCS8qIGlnbm9y ZSAicGFyZW50IiByb3dtYXJrczsgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lICovCi0J CQlpZiAocmMtPmlzUGFyZW50KQorCQkJLyoKKwkJCSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJr cywgYmVjYXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50IGF0CisJCQkgKiBydW50aW1lLiAgQWxzbyBp Z25vcmUgdGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJsZXMKKwkJCSAqIHRoYXQg aGF2ZSBiZWVuIHBydW5lZCBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkJICovCisJCQlp ZiAocmMtPmlzUGFyZW50IHx8CisJCQkJIWJtc19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5l c191bnBydW5hYmxlX3JlbGlkcykpCiAJCQkJY29udGludWU7CiAKIAkJCS8qIGdldCByZWxhdGlv bidzIE9JRCAod2lsbCBwcm9kdWNlIEludmFsaWRPaWQgaWYgc3VicXVlcnkpICovCkBAIC0yOTY5 LDYgKzMwMjksMTMgQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFu ICpwbGFuVHJlZSkKIAkJfQogCX0KIAorCS8qCisJICogQ29weSBlc191bnBydW5hYmxlX3JlbGlk cyBzbyB0aGF0IFJvd01hcmtzIG9mIHBydW5lZCByZWxhdGlvbnMgYXJlCisJICogaWdub3JlZCBp biBFeGVjSW5pdExvY2tSb3dzKCkgYW5kIEV4ZWNJbml0TW9kaWZ5VGFibGUoKSB3aGVuCisJICog aW5pdGlhbGl6aW5nIHRoZSBwbGFuIHRyZWVzIGJlbG93LgorCSAqLworCXJjZXN0YXRlLT5lc191 bnBydW5hYmxlX3JlbGlkcyA9IHBhcmVudGVzdGF0ZS0+ZXNfdW5wcnVuYWJsZV9yZWxpZHM7CisK IAkvKgogCSAqIEluaXRpYWxpemUgcHJpdmF0ZSBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBT dWJQbGFuLiAgV2UgbXVzdCBkbyB0aGlzCiAJICogYmVmb3JlIHJ1bm5pbmcgRXhlY0luaXROb2Rl IG9uIHRoZSBtYWluIHF1ZXJ5IHRyZWUsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jCmluZGV4IGIwMWEyZmRmZGQuLjc1MTljOWE4NjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJhbGxlbC5jCkBAIC0xMjU3LDggKzEyNTcsMTUgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNj KHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2ht X3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBh cmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1 ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZv ciB0aGUgcXVlcnkuICBXZSBwYXNzIE5VTEwgZm9yIGNhY2hlZHBsYW4sIGJlY2F1c2UKKwkgKiB3 ZSBkb24ndCBoYXZlIGEgcG9pbnRlciB0byB0aGUgQ2FjaGVkUGxhbiBpbiB0aGUgbGVhZGVyJ3Mg cHJvY2Vzcy4gSXQncworCSAqIGZpbmUgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdGhlIGV4ZWN1 dG9yIG5lZWRzIHRvIHNlZSBpdCBpcyB0byBkZWNpZGUKKwkgKiBpZiBpdCBzaG91bGQgdGFrZSBs b2NrcyBvbiBjZXJ0YWluIHJlbGF0aW9ucywgYnV0IHBhcmFsbGVyIHdvcmtlcnMKKwkgKiBhbHdh eXMgdGFrZSBsb2NrcyBhbnl3YXkuCisJICovCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3Rt dCwKKwkJCQkJCSAgIE5VTEwsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJh bUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jCmluZGV4IDQwZWI3NGQxODcuLjEzZDI1NDJjNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFydGl0aW9uLmMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcv cGFydGRlc2MuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydHBydW5lLmgiCiAjaW5jbHVk ZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNp bmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKQEAgLTE5Miw3ICsxOTMsOCBAQCBzdGF0aWMgdm9pZCBm aW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJlbnRfcGxhbiwKIAkJ CQkJCQkJCQkgICBQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJCSAg IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkJCQkgICBib29sIGlu aXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucyk7CisJ CQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywKKwkJCQkJCQkJCQkgICBCaXRt YXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiAKIAogLyoKQEAgLTE5ODUsOCArMTk4Nyw4IEBA IEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIFRoZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IGV4 aXN0IG5vdyBtaWdodCBub3QgYmUgdGhlIHNhbWUgdGhhdAogCQkJICogZXhpc3RlZCB3aGVuIHRo ZSBwbGFuIHdhcyBtYWRlLiAgVGhlIG5vcm1hbCBjYXNlIGlzIHRoYXQgaXQgaXM7CiAJCQkgKiBv cHRpbWl6ZSBmb3IgdGhhdCBjYXNlIHdpdGggYSBxdWljayBjb21wYXJpc29uLCBhbmQganVzdCBj b3B5Ci0JCQkgKiB0aGUgc3VicGxhbl9tYXAgYW5kIG1ha2Ugc3VicGFydF9tYXAgcG9pbnQgdG8g dGhlIG9uZSBpbgotCQkJICogUHJ1bmVJbmZvLgorCQkJICogdGhlIHN1YnBsYW5fbWFwIGFuZCBt YWtlIHN1YnBhcnRfbWFwLCBydGlfbWFwIHBvaW50IHRvIHRoZQorCQkJICogb25lcyBpbiBQcnVu ZUluZm8uCiAJCQkgKgogCQkJICogRm9yIHRoZSBjYXNlIHdoZXJlIHRoZXkgYXJlbid0IGlkZW50 aWNhbCwgd2UgY291bGQgaGF2ZSBtb3JlCiAJCQkgKiBwYXJ0aXRpb25zIG9uIGVpdGhlciBzaWRl OyBvciBldmVuIGV4YWN0bHkgdGhlIHNhbWUgbnVtYmVyIG9mCkBAIC0yMDA1LDYgKzIwMDcsNyBA QCBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJCSAgIHNpemVvZihpbnQpICogcGFydGRlc2MtPm5w YXJ0cykgPT0gMCkKIAkJCXsKIAkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFwID0gcGluZm8tPnN1YnBh cnRfbWFwOworCQkJCXBwcnVuZS0+cnRpX21hcCA9IHBpbmZvLT5ydGlfbWFwOwogCQkJCW1lbWNw eShwcHJ1bmUtPnN1YnBsYW5fbWFwLCBwaW5mby0+c3VicGxhbl9tYXAsCiAJCQkJCSAgIHNpemVv ZihpbnQpICogcGluZm8tPm5wYXJ0cyk7CiAJCQl9CkBAIC0yMDI1LDYgKzIwMjgsNyBAQCBFeGVj Q3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8pCiAJCQkJICogbWlzbWF0Y2hlcy4KIAkJCQkgKi8KIAkJCQlwcHJ1bmUt PnN1YnBhcnRfbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0cyk7CisJ CQkJcHBydW5lLT5ydGlfbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0 cyk7CiAKIAkJCQlmb3IgKHBwX2lkeCA9IDA7IHBwX2lkeCA8IHBhcnRkZXNjLT5ucGFydHM7IHBw X2lkeCsrKQogCQkJCXsKQEAgLTIwNDIsNiArMjA0Niw4IEBAIEV4ZWNDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IAkJCQkJCQlwaW5mby0+c3VicGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9CiAJCQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJ CQlwcHJ1bmUtPnJ0aV9tYXBbcHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPnJ0aV9tYXBbcGRfaWR4 XTsKIAkJCQkJCXBkX2lkeCsrOwogCQkJCQkJY29udGludWU7CiAJCQkJCX0KQEAgLTIwNzksNiAr MjA4NSw3IEBAIEV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAogCQkJCQlwcHJ1bmUtPnN1YnBhcnRfbWFw W3BwX2lkeF0gPSAtMTsKIAkJCQkJcHBydW5lLT5zdWJwbGFuX21hcFtwcF9pZHhdID0gLTE7CisJ CQkJCXBwcnVuZS0+cnRpX21hcFtwcF9pZHhdID0gMDsKIAkJCQl9CiAJCQl9CiAKQEAgLTIzNjAs MTAgKzIzNjcsMTMgQEAgUGFydGl0aW9uUHJ1bmVGaXhTdWJQbGFuTWFwKFBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGUsCiAgKiBQYXNzIGluaXRpYWxfcHJ1bmUgaWYgUEFSQU1fRVhFQyBQ YXJhbXMgY2Fubm90IHlldCBiZSBldmFsdWF0ZWQuICBUaGlzCiAgKiBkaWZmZXJlbnRpYXRlcyB0 aGUgaW5pdGlhbCBleGVjdXRvci10aW1lIHBydW5pbmcgc3RlcCBmcm9tIGxhdGVyCiAgKiBydW50 aW1lIHBydW5pbmcuCisgKgorICogdmFsaXN1YnBsYW5fcnRpcyBtdXN0IGJlIG5vbi1OVUxMIGlm IGluaXRpYWxfcHJ1bmluZyBpcyB0cnVlLgogICovCiBCaXRtYXBzZXQgKgogRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCi0JCQkJCQkgYm9v bCBpbml0aWFsX3BydW5lKQorCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSwKKwkJCQkJCSBCaXRt YXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcykKIHsKIAlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxM OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKQEAgLTIzOTksNyArMjQwOSw3IEBAIEV4ZWNG aW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQlw cHJ1bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhWzBdOwogCQlmaW5kX21hdGNoaW5n X3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVzdGF0ZS0+cGFyZW50X3BsYW4sCiAJCQkJCQkJCQkgICBw cnVuZWRhdGEsIHBwcnVuZSwgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCSAgICZyZXN1bHQpOwor CQkJCQkJCQkJICAgJnJlc3VsdCwgdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAJCS8qIEV4cHJlc3Np b24gZXZhbCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvbyAqLwogCQlpZiAo cHBydW5lLT5leGVjX2NvbnRleHQuaXNfdmFsaWQpCkBAIC0yNDE2LDYgKzI0MjYsOCBAQCBFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAog CS8qIENvcHkgcmVzdWx0IG91dCBvZiB0aGUgdGVtcCBjb250ZXh0IGJlZm9yZSB3ZSByZXNldCBp dCAqLwogCXJlc3VsdCA9IGJtc19jb3B5KHJlc3VsdCk7CisJaWYgKHZhbGlkc3VicGxhbl9ydGlz KQorCQkqdmFsaWRzdWJwbGFuX3J0aXMgPSBibXNfY29weSgqdmFsaWRzdWJwbGFuX3J0aXMpOwog CiAJTWVtb3J5Q29udGV4dFJlc2V0KHBydW5lc3RhdGUtPnBydW5lX2NvbnRleHQpOwogCkBAIC0y NDI2LDE0ICsyNDM4LDE2IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAogICogZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlCiAg KgkJUmVjdXJzaXZlIHdvcmtlciBmdW5jdGlvbiBmb3IgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5z CiAgKgotICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFsaWRz dWJwbGFucworICogQWRkcyB2YWxpZCAobm9uLXBydW5hYmxlKSBzdWJwbGFuIElEcyB0byAqdmFs aWRzdWJwbGFucyBhbmQgdGhlIFJUIGluZGV4ZXMKKyAqIG9mIHRoZWlyIG93bmluZyBsZWFmIHBh cnRpdGlvbnMgdG8gKnZhbGlkc3VicGxhbl9ydGlzIGlmIGl0J3Mgbm9uLU5VTEwuCiAgKi8KIHN0 YXRpYyB2b2lkCiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJl bnRfcGxhbiwKIAkJCQkJCQkgICBQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJ CQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkgICBib29s IGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucykKKwkJ CQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCSAgIEJpdG1hcHNldCAq KnZhbGlkc3VicGxhbl9ydGlzKQogewogCUJpdG1hcHNldCAgKnBhcnRzZXQ7CiAJaW50CQkJaTsK QEAgLTI0NzYsOCArMjQ5MCwxMyBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxh blN0YXRlICpwYXJlbnRfcGxhbiwKIAl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocGFydHNl dCwgaSkpID49IDApCiAJewogCQlpZiAocHBydW5lLT5zdWJwbGFuX21hcFtpXSA+PSAwKQorCQl7 CiAJCQkqdmFsaWRzdWJwbGFucyA9IGJtc19hZGRfbWVtYmVyKCp2YWxpZHN1YnBsYW5zLAogCQkJ CQkJCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW2ldKTsKKwkJCWlmICh2YWxpZHN1YnBsYW5fcnRp cykKKwkJCQkqdmFsaWRzdWJwbGFuX3J0aXMgPSBibXNfYWRkX21lbWJlcigqdmFsaWRzdWJwbGFu X3J0aXMsCisJCQkJCQkJCQkJCQkJcHBydW5lLT5ydGlfbWFwW2ldKTsKKwkJfQogCQllbHNlCiAJ CXsKIAkJCWludAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwpAQCAtMjQ4Niw3 ICsyNTA1LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBsYW5TdGF0ZSAqcGFy ZW50X3BsYW4sCiAJCQkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBhcmVudF9wbGFu LAogCQkJCQkJCQkJCQkgICBwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBh cnRyZWxwcnVuZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZh bGlkc3VicGxhbnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5z LAorCQkJCQkJCQkJCQkgICB2YWxpZHN1YnBsYW5fcnRpcyk7CiAJCQllbHNlCiAJCQl7CiAJCQkJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggNjkyODU0ZTJiMy4uNmY2ZjQ1ZTBhZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0MCw2ICs4NDAsNyBAQCBwb3N0cXVlbF9z dGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJ ZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2MoZXMtPnN0 bXQsCisJCQkJCQkJIE5VTEwsCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3Rp dmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMKaW5kZXggZGU3ZWJhYjVjMi4uMDA2YmRhZmFlYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBcHBlbmQuYwpAQCAtNTgxLDcgKzU4MSw3IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxs eShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJZWxzZSBpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5z X2lkZW50aWZpZWQpCiAJCXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVj RmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlF eGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxM KTsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCQl9CiAK QEAgLTY0OCw3ICs2NDgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBwZW5k U3RhdGUgKm5vZGUpCiAJCWlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkK IAkJewogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hp bmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCQkJbm9kZS0+ YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJCS8qCkBAIC03MjQsNyAr NzI0LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2Rl KQogCWVsc2UgaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKIAkJ bm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5v ZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMo bm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJbm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJbWFya19pbnZhbGlkX3N1YnBsYW5zX2FzX2Zp bmlzaGVkKG5vZGUpOwpAQCAtODc3LDcgKzg3Nyw3IEBAIEV4ZWNBcHBlbmRBc3luY0JlZ2luKEFw cGVuZFN0YXRlICpub2RlKQogCWlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmll ZCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGlu Z1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW5vZGUtPmFz X3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCWNsYXNzaWZ5X21hdGNoaW5n X3N1YnBsYW5zKG5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxv Y2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0MTc1 NGRkZmVhLi5iNWIyY2Q1M2M1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAt MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2Nh Y2hlLmgiCiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzQ3LDggKzM0OCwxMyBAQCBFeGVjSW5pdExvY2tS b3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY1Jv d01hcmsgKmVybTsKIAkJRXhlY0F1eFJvd01hcmsgKmFlcm07CiAKLQkJLyogaWdub3JlICJwYXJl bnQiIHJvd21hcmtzOyB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJaWYgKHJj LT5pc1BhcmVudCkKKwkJLyoKKwkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNl IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQKKwkJICogcnVudGltZS4gIEFsc28gaWdub3JlIHRoZSBy b3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzCisJCSAqIHRoYXQgaGF2ZSBiZWVuIHBy dW5lZCBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkgKi8KKwkJaWYgKHJjLT5pc1BhcmVu dCB8fAorCQkJIWJtc19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBydW5hYmxlX3Jl bGlkcykpCiAJCQljb250aW51ZTsKIAogCQkvKiBmaW5kIEV4ZWNSb3dNYXJrIGFuZCBidWlsZCBF eGVjQXV4Um93TWFyayAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRl eCAzZWQ5MTgwOGRkLi5mNzgyMWFhMTc4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYwpAQCAtMjE5LDcgKzIxOSw3IEBAIEV4ZWNNZXJnZUFwcGVuZChQbGFuU3RhdGUgKnBz dGF0ZSkKIAkJICovCiAJCWlmIChub2RlLT5tc192YWxpZF9zdWJwbGFucyA9PSBOVUxMKQogCQkJ bm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhu b2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFu cyhub2RlLT5tc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5VTEwpOwogCiAJCS8qCiAJCSAqIEZpcnN0 IHRpbWUgdGhyb3VnaDogcHVsbCB0aGUgZmlyc3QgdHVwbGUgZnJvbSBlYWNoIHZhbGlkIHN1YnBs YW4sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDhiZjRjODBkNGEu LjY1MmQ3MDIyM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC02 MzYsNyArNjM2LDcgQEAgRXhlY0luaXRVcGRhdGVQcm9qZWN0aW9uKE1vZGlmeVRhYmxlU3RhdGUg Km10c3RhdGUsCiAJCUFzc2VydCh3aGljaHJlbCA+PSAwICYmIHdoaWNocmVsIDwgbXRzdGF0ZS0+ bXRfbnJlbHMpOwogCX0KIAotCXVwZGF0ZUNvbG5vcyA9IChMaXN0ICopIGxpc3RfbnRoKG5vZGUt PnVwZGF0ZUNvbG5vc0xpc3RzLCB3aGljaHJlbCk7CisJdXBkYXRlQ29sbm9zID0gKExpc3QgKikg bGlzdF9udGgobXRzdGF0ZS0+bXRfdXBkYXRlQ29sbm9zTGlzdHMsIHdoaWNocmVsKTsKIAogCS8q CiAJICogRm9yIFVQREFURSwgd2UgdXNlIHRoZSBvbGQgdHVwbGUgdG8gZmlsbCB1cCBtaXNzaW5n IHZhbHVlcyBpbiB0aGUgdHVwbGUKQEAgLTQxNzYsMTIgKzQxNzYsMTcgQEAgRXhlY0xvb2t1cFJl c3VsdFJlbEJ5T2lkKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUsIE9pZCByZXN1bHRvaWQsCiAJCQlo YXNoX3NlYXJjaChub2RlLT5tdF9yZXN1bHRPaWRIYXNoLCAmcmVzdWx0b2lkLCBIQVNIX0ZJTkQs IE5VTEwpOwogCQlpZiAobXRsb29rdXApCiAJCXsKKwkJCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm87CisKIAkJCWlmICh1cGRhdGVfY2FjaGUpCiAJCQl7CiAJCQkJbm9kZS0+bXRfbGFzdFJl c3VsdE9pZCA9IHJlc3VsdG9pZDsKIAkJCQlub2RlLT5tdF9sYXN0UmVzdWx0SW5kZXggPSBtdGxv b2t1cC0+cmVsYXRpb25JbmRleDsKIAkJCX0KLQkJCXJldHVybiBub2RlLT5yZXN1bHRSZWxJbmZv ICsgbXRsb29rdXAtPnJlbGF0aW9uSW5kZXg7CisKKwkJCXJlc3VsdFJlbEluZm8gPSBub2RlLT5y ZXN1bHRSZWxJbmZvICsgbXRsb29rdXAtPnJlbGF0aW9uSW5kZXg7CisKKwkJCXJldHVybiByZXN1 bHRSZWxJbmZvOwogCQl9CiAJfQogCWVsc2UKQEAgLTQyMTgsNyArNDIyMywxMSBAQCBFeGVjSW5p dE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlOwogCVBsYW4JICAgKnN1YnBsYW4gPSBvdXRl clBsYW4obm9kZSk7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gbm9kZS0+b3BlcmF0aW9uOwotCWlu dAkJCW5yZWxzID0gbGlzdF9sZW5ndGgobm9kZS0+cmVzdWx0UmVsYXRpb25zKTsKKwlpbnQJCQlu cmVsczsKKwlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqd2l0aENo ZWNrT3B0aW9uTGlzdHMgPSBOSUw7CisJTGlzdAkgICAqcmV0dXJuaW5nTGlzdHMgPSBOSUw7CisJ TGlzdAkgICAqdXBkYXRlQ29sbm9zTGlzdHMgPSBOSUw7CiAJUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbzsKIAlMaXN0CSAgICphcm93bWFya3M7CiAJTGlzdENlbGwgICAqbDsKQEAgLTQyMjgs NiArNDIzNyw0NiBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgZmxhZ3Mg Ki8KIAlBc3NlcnQoIShlZmxhZ3MgJiAoRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01B UkspKSk7CiAKKwkvKgorCSAqIE9ubHkgY29uc2lkZXIgdW5wcnVuZWQgcmVsYXRpb25zLiBJbiB0 aGUgZnV0dXJlLCBpdCBtaWdodCBiZSBtb3JlCisJICogZWZmaWNpZW50IHRvIHN0b3JlIHJlc3Vs dFJlbGF0aW9ucyBhcyBhIGJpdG1hcHNldCwgd2hpY2ggd291bGQgbWFrZQorCSAqIHRoaXMgb3Bl cmF0aW9uIGNoZWFwZXIuCisJICovCisJaSA9IDA7CisJZm9yZWFjaChsLCBub2RlLT5yZXN1bHRS ZWxhdGlvbnMpCisJeworCQlJbmRleAlydGkgPSBsZmlyc3RfaW50KGwpOworCisJCWlmIChibXNf aXNfbWVtYmVyKHJ0aSwgZXN0YXRlLT5lc191bnBydW5hYmxlX3JlbGlkcykpCisJCXsKKwkJCXJl c3VsdFJlbGF0aW9ucyA9IGxhcHBlbmRfaW50KHJlc3VsdFJlbGF0aW9ucywgcnRpKTsKKwkJCWlm IChub2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cykKKwkJCXsKKwkJCQlMaXN0ICp3aXRoQ2hlY2tP cHRpb25zID0gbGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCSAgIG5vZGUtPndpdGhD aGVja09wdGlvbkxpc3RzLAorCQkJCQkJCQkJCQkJCSAgIGkpOworCisJCQkJd2l0aENoZWNrT3B0 aW9uTGlzdHMgPSBsYXBwZW5kKHdpdGhDaGVja09wdGlvbkxpc3RzLCB3aXRoQ2hlY2tPcHRpb25z KTsKKwkJCX0KKwkJCWlmIChub2RlLT5yZXR1cm5pbmdMaXN0cykKKwkJCXsKKwkJCQlMaXN0ICpy ZXR1cm5pbmdMaXN0ID0gbGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCW5vZGUtPnJl dHVybmluZ0xpc3RzLAorCQkJCQkJCQkJCQkJCWkpOworCisJCQkJcmV0dXJuaW5nTGlzdHMgPSBs YXBwZW5kKHJldHVybmluZ0xpc3RzLCByZXR1cm5pbmdMaXN0KTsKKwkJCX0KKwkJCWlmIChub2Rl LT51cGRhdGVDb2xub3NMaXN0cykKKwkJCXsKKwkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0ID0g bGlzdF9udGgobm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMsIGkpOworCisJCQkJdXBkYXRlQ29sbm9z TGlzdHMgPSBsYXBwZW5kKHVwZGF0ZUNvbG5vc0xpc3RzLCB1cGRhdGVDb2xub3NMaXN0KTsKKwkJ CX0KKwkJfQorCQlpKys7CisJfQorCW5yZWxzID0gbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25z KTsKKwogCS8qCiAJICogY3JlYXRlIHN0YXRlIHN0cnVjdHVyZQogCSAqLwpAQCAtNDI0OCw2ICs0 Mjk3LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJbXRzdGF0ZS0+bXRfbWVyZ2VfaW5zZXJ0ZWQgPSAwOwogCW10 c3RhdGUtPm10X21lcmdlX3VwZGF0ZWQgPSAwOwogCW10c3RhdGUtPm10X21lcmdlX2RlbGV0ZWQg PSAwOworCW10c3RhdGUtPm10X3VwZGF0ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7 CiAKIAkvKi0tLS0tLS0tLS0KIAkgKiBSZXNvbHZlIHRoZSB0YXJnZXQgcmVsYXRpb24uIFRoaXMg aXMgdGhlIHNhbWUgYXM6CkBAIC00MjY1LDYgKzQzMTUsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlp ZiAobm9kZS0+cm9vdFJlbGF0aW9uID4gMCkKIAl7CisJCUFzc2VydChibXNfaXNfbWVtYmVyKG5v ZGUtPnJvb3RSZWxhdGlvbiwgZXN0YXRlLT5lc191bnBydW5hYmxlX3JlbGlkcykpOwogCQltdHN0 YXRlLT5yb290UmVzdWx0UmVsSW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCQlFeGVj SW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwgbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8sCiAJ CQkJCQkJICAgbm9kZS0+cm9vdFJlbGF0aW9uKTsKQEAgLTQyNzksNyArNDMzMCw3IEBAIEV4ZWNJ bml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0 aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVz dGF0ZSwgTlVMTCwgTklMLAotCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0 aW9ucyk7CisJCQkJCSBub2RlLT5lcHFQYXJhbSwgcmVzdWx0UmVsYXRpb25zKTsKIAltdHN0YXRl LT5maXJlQlNUcmlnZ2VycyA9IHRydWU7CiAKIAkvKgpAQCAtNDI5Nyw3ICs0MzQ4LDcgQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICovCiAJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87CiAJ aSA9IDA7Ci0JZm9yZWFjaChsLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMpCisJZm9yZWFjaChsLCBy ZXN1bHRSZWxhdGlvbnMpCiAJewogCQlJbmRleAkJcmVzdWx0UmVsYXRpb24gPSBsZmlyc3RfaW50 KGwpOwogCQlMaXN0CSAgICptZXJnZUFjdGlvbnMgPSBOSUw7CkBAIC00NDQxLDcgKzQ0OTIsNyBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiBJbml0aWFsaXplIGFueSBXSVRIIENIRUNLIE9QVElPTiBjb25zdHJh aW50cyBpZiBuZWVkZWQuCiAJICovCiAJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJl bEluZm87Ci0JZm9yZWFjaChsLCBub2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cykKKwlmb3JlYWNo KGwsIHdpdGhDaGVja09wdGlvbkxpc3RzKQogCXsKIAkJTGlzdAkgICAqd2NvTGlzdCA9IChMaXN0 ICopIGxmaXJzdChsKTsKIAkJTGlzdAkgICAqd2NvRXhwcnMgPSBOSUw7CkBAIC00NDY0LDcgKzQ1 MTUsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkvKgogCSAqIEluaXRpYWxpemUgUkVUVVJOSU5HIHByb2plY3Rp b25zIGlmIG5lZWRlZC4KIAkgKi8KLQlpZiAobm9kZS0+cmV0dXJuaW5nTGlzdHMpCisJaWYgKHJl dHVybmluZ0xpc3RzKQogCXsKIAkJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJCUV4cHJDb250ZXh0 ICplY29udGV4dDsKQEAgLTQ0NzMsNyArNDUyNCw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9k aWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBJbml0aWFs aXplIHJlc3VsdCB0dXBsZSBzbG90IGFuZCBhc3NpZ24gaXRzIHJvd3R5cGUgdXNpbmcgdGhlIGZp cnN0CiAJCSAqIFJFVFVSTklORyBsaXN0LiAgV2UgYXNzdW1lIHRoZSByZXN0IHdpbGwgbG9vayB0 aGUgc2FtZS4KIAkJICovCi0JCW10c3RhdGUtPnBzLnBsYW4tPnRhcmdldGxpc3QgPSAoTGlzdCAq KSBsaW5pdGlhbChub2RlLT5yZXR1cm5pbmdMaXN0cyk7CisJCW10c3RhdGUtPnBzLnBsYW4tPnRh cmdldGxpc3QgPSAoTGlzdCAqKSBsaW5pdGlhbChyZXR1cm5pbmdMaXN0cyk7CiAKIAkJLyogU2V0 IHVwIGEgc2xvdCBmb3IgdGhlIG91dHB1dCBvZiB0aGUgUkVUVVJOSU5HIHByb2plY3Rpb24ocykg Ki8KIAkJRXhlY0luaXRSZXN1bHRUdXBsZVNsb3RUTCgmbXRzdGF0ZS0+cHMsICZUVFNPcHNWaXJ0 dWFsKTsKQEAgLTQ0ODgsNyArNDUzOSw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkgKiBCdWlsZCBhIHByb2pl Y3Rpb24gZm9yIGVhY2ggcmVzdWx0IHJlbC4KIAkJICovCiAJCXJlc3VsdFJlbEluZm8gPSBtdHN0 YXRlLT5yZXN1bHRSZWxJbmZvOwotCQlmb3JlYWNoKGwsIG5vZGUtPnJldHVybmluZ0xpc3RzKQor CQlmb3JlYWNoKGwsIHJldHVybmluZ0xpc3RzKQogCQl7CiAJCQlMaXN0CSAgICpybGlzdCA9IChM aXN0ICopIGxmaXJzdChsKTsKIApAQCAtNDU4OSw4ICs0NjQwLDEzIEBAIEV4ZWNJbml0TW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlF eGVjUm93TWFyayAqZXJtOwogCQlFeGVjQXV4Um93TWFyayAqYWVybTsKIAotCQkvKiBpZ25vcmUg InBhcmVudCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwotCQlp ZiAocmMtPmlzUGFyZW50KQorCQkvKgorCQkgKiBJZ25vcmUgInBhcmVudCIgcm93bWFya3MsIGJl Y2F1c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdAorCQkgKiBydW50aW1lLiAgQWxzbyBpZ25vcmUg dGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBjaGlsZCB0YWJsZXMKKwkJICogdGhhdCBoYXZlIGJl ZW4gcHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuCisJCSAqLworCQlpZiAocmMtPmlz UGFyZW50IHx8CisJCQkhYm1zX2lzX21lbWJlcihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmFi bGVfcmVsaWRzKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIEZpbmQgRXhlY1Jvd01hcmsgYW5kIGJ1 aWxkIEV4ZWNBdXhSb3dNYXJrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9z cGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IDkwZDk4MzQ1NzYuLjY1OWJk NmRjZDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC0yNjg0LDYgKzI2ODQsNyBAQCBfU1BJX2V4ZWN1dGVf cGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog CQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90OwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURl c2Moc3RtdCwKKwkJCQkJCQkJCQljcGxhbiwKIAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9z dHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jvc3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlk ZXN0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDhjZmZhNDQ3ZmQuLjNi NTBiNzY3ZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTU1NSw2ICs1 NTUsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlf c3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnBsYW5UcmVlID0gdG9wX3BsYW47 CiAJcmVzdWx0LT5wYXJ0UHJ1bmVJbmZvcyA9IGdsb2ItPnBhcnRQcnVuZUluZm9zOwogCXJlc3Vs dC0+cnRhYmxlID0gZ2xvYi0+ZmluYWxydGFibGU7CisJcmVzdWx0LT51bnBydW5hYmxlUmVsaWRz ID0gYm1zX2RpZmZlcmVuY2UoYm1zX2FkZF9yYW5nZShOVUxMLCAxLCBsaXN0X2xlbmd0aChyZXN1 bHQtPnJ0YWJsZSkpLAorCQkJCQkJCQkJCQkgIGdsb2ItPnBydW5hYmxlUmVsaWRzKTsKIAlyZXN1 bHQtPnBlcm1JbmZvcyA9IGdsb2ItPmZpbmFscnRlcGVybWluZm9zOwogCXJlc3VsdC0+cmVzdWx0 UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwogCXJlc3VsdC0+YXBwZW5kUmVsYXRp b25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCmluZGV4IGUyZWE0MDZjNGUuLjI4M2E2MWE5NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9zZXRyZWZzLmMKQEAgLTE3NjQsOCArMTc2NCwxNSBAQCByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZv KFBsYW5uZXJJbmZvICpyb290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50IHJ0b2Zmc2V0KQog CQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykKIAkJewogCQkJUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8gKnByZWxpbmZvID0gbGZpcnN0KGwyKTsKKwkJCWludAkJaTsKIAogCQkJcHJlbGluZm8tPnJ0 aW5kZXggKz0gcnRvZmZzZXQ7CisJCQlmb3IgKGkgPSAwOyBpIDwgcHJlbGluZm8tPm5wYXJ0czsg aSsrKQorCQkJeworCQkJCXByZWxpbmZvLT5ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0OworCQkJCWds b2ItPnBydW5hYmxlUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZ2xvYi0+cHJ1bmFibGVSZWxpZHMs CisJCQkJCQkJCQkJCQkJICBwcmVsaW5mby0+cnRpX21hcFtpXSk7CisJCQl9CiAJCX0KIAl9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9i YWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA2MGZhYmIxNzM0Li44NTg5NGM4 N2FmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC02NDUsNiArNjQ1LDcg QEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJCWludAkJICAgKnN1 YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJCWludAkJICAgKnJ0aV9tYXA7CiAK IAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFuZCBzdWJwYXJ0IG1hcHMgZm9yIHRo aXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU3LDYgKzY1OCw3IEBAIG1ha2VfcGFydGl0aW9u ZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWws CiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBhcnRzICogc2l6ZW9mKGludCkpOwog CQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBzaXplb2YoaW50KSk7CiAJCXJlbGlk X21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoT2lkKSk7CisJCXJ0aV9tYXAg PSAoaW50ICopIHBhbGxvYzAobnBhcnRzICogc2l6ZW9mKGludCkpOwogCQlwcmVzZW50X3BhcnRz ID0gTlVMTDsKIAogCQlpID0gLTE7CkBAIC02NzEsOSArNjczLDI0IEBAIG1ha2VfcGFydGl0aW9u ZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWws CiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBsYW5pZHggPSByZWxpZF9zdWJwbGFuX21hcFtwYXJ0 cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFydF9tYXBbaV0gPSBzdWJwYXJ0aWR4ID0gcmVsaWRf c3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJCXJlbGlkX21hcFtpXSA9IHBsYW5u ZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQsIHJvb3QpLT5yZWxpZDsKKworCQkJLyoKKwkJCSAq IFRyYWNrIHRoZSBSVCBpbmRleGVzIG9mIHBhcnRpdGlvbnMgdG8gZW5zdXJlIHRoZXkgYXJlIGlu Y2x1ZGVkCisJCQkgKiBpbiB0aGUgcHJ1bmFibGVSZWxpZHMgc2V0IG9mIHJlbGF0aW9ucyB0aGF0 IGFyZSBsb2NrZWQgZHVyaW5nCisJCQkgKiBleGVjdXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGlm IHRoZSBwbGFuIGlzIGNhY2hlZCwgdGhlc2UKKwkJCSAqIHBhcnRpdGlvbnMgYXJlIGxvY2tlZCB3 aGVuIHRoZSBwbGFuIGlzIHJldXNlZC4KKwkJCSAqCisJCQkgKiBQYXJ0aXRpb25zIHdpdGhvdXQg YSBzdWJwbGFuIGFuZCBzdWItcGFydGl0aW9uZWQgcGFydGl0aW9ucworCQkJICogd2hlcmUgbm9u ZSBvZiB0aGUgc3ViLXBhcnRpdGlvbnMgaGF2ZSBhIHN1YnBsYW4gZHVlIHRvCisJCQkgKiBjb25z dHJhaW50IGV4Y2x1c2lvbiBhcmUgbm90IGluY2x1ZGVkIGluIHRoaXMgc2V0LiBJbnN0ZWFkLAor CQkJICogdGhleSBhcmUgYWRkZWQgdG8gdGhlIHVucHJ1bmFibGVSZWxpZHMgc2V0LCBhbmQgdGhl IHJlbGF0aW9ucworCQkJICogaW4gdGhpcyBzZXQgYXJlIGxvY2tlZCBieSBBY3F1aXJlRXhlY3V0 b3JMb2NrcygpIGJlZm9yZQorCQkJICogZXhlY3V0aW5nIGEgY2FjaGVkIHBsYW4uCisJCQkgKi8K IAkJCWlmIChzdWJwbGFuaWR4ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19h ZGRfbWVtYmVyKHByZXNlbnRfcGFydHMsIGkpOworCQkJCXJ0aV9tYXBbaV0gPSAoaW50KSBwYXJ0 cmVsLT5yZWxpZDsKIAogCQkJCS8qIFJlY29yZCBmaW5kaW5nIHRoaXMgc3VicGxhbiAgKi8KIAkJ CQlzdWJwbGFuc2ZvdW5kID0gYm1zX2FkZF9tZW1iZXIoc3VicGxhbnNmb3VuZCwgc3VicGxhbmlk eCk7CkBAIC02OTUsNiArNzEyLDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBsYW5f bWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFwOwog CQlwaW5mby0+cmVsaWRfbWFwID0gcmVsaWRfbWFwOworCQlwaW5mby0+cnRpX21hcCA9IHJ0aV9t YXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGFydF9tYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggYTFm OGQwM2RiMS4uNmU4ZjZiMWI4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0zNiw2ICszNiw3IEBAIFBvcnRh bAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCiBzdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxh bm5lZFN0bXQgKnBsYW4sCisJCQkJCQkgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkgY29uc3Qg Y2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCSBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY1LDYgKzY2LDcgQEAgc3RhdGljIHZvaWQg RG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8KIFF1ZXJ5RGVzYyAqCiBDcmVhdGVR dWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCUNhY2hlZFBsYW4gKmNwbGFu LAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJ CQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAgLTc3LDYgKzc5LDcgQEAgQ3JlYXRl UXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKIAogCXFkLT5vcGVyYXRpb24gPSBw bGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlvbiAqLwogCXFkLT5wbGFubmVkc3Rt dCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPmNwbGFuID0gY3BsYW47CQkJLyogQ2Fj aGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW5uZWRzdG10ICovCiAJcWQtPnNvdXJjZVRleHQgPSBz b3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFw c2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8K QEAgLTEyMiw2ICsxMjUsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJ UE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVfTU9EX1dJVEggcG9ydGFsCiAgKgog ICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5CisgKgljcGxhbjogQ2FjaGVkUGxh biBzdXBwbHlpbmcgdGhlIHBsYW4KICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0 aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVy ZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2ICsxMzgsNyBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5 RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQg KnBsYW4sCisJCQkgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4 dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudiwKQEAgLTE0NSw3ICsxNTAsNyBAQCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4s CiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QKIAkgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVR dWVyeURlc2MocGxhbiwgY3BsYW4sIHNvdXJjZVRleHQsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBz aG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwg MCk7CiAKQEAgLTQ5Myw2ICs0OTgsNyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJ CQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxh bm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlwb3J0YWwtPmNwbGFuLAogCQkJ CQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKQEAgLTEyNzYsNiArMTI4Miw3IEBAIFBv cnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBz ZXQgdGFnIHN0cmluZyAqLwogCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQkJCQkgcG9ydGFs LT5jcGxhbiwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBv cnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyODUsNiArMTI5Miw3 IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7CiAJCQkJLyogc3RtdCBhZGRl ZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCiAJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAor CQkJCQkJCSBwb3J0YWwtPmNwbGFuLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJ CQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA1YWYxYTE2OGVjLi41Yjc1ZGFkZjEzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTA0LDcgKzEwNCw4IEBAIHN0YXRp YyBMaXN0ICpSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwKIAkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wg Q2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIENh Y2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBM aXN0ICpxbGlzdCwKLQkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlF bnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKKwkJCQkJCQkJICAgYm9vbCBnZW5lcmlj KTsKIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRv dWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFu bmVyKTsKQEAgLTgxNSw4ICs4MTYsMTEgQEAgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVzdCBoYXZlIGFscmVhZHkgY2FsbGVk IFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBp cyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJl ZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KLSAqIChXZSBtdXN0IGRvIHRoaXMg Zm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9uLWZyZWUuKQorICogT24g YSAidHJ1ZSIgcmV0dXJuLCB3ZSBoYXZlIGFjcXVpcmVkIGxvY2tzIG9uIHRoZSAidW5wcnVuYWJs ZVJlbGlkcyIgc2V0CisgKiBmb3IgYWxsIHBsYW5zIGluIHBsYW5zb3VyY2UtPnN0bXRfbGlzdC4g VGhlIHBsYW5zIGFyZSBub3QgY29tcGxldGVseQorICogcmFjZS1jb25kaXRpb24tZnJlZSB1bnRp bCB0aGUgZXhlY3V0b3IgdGFrZXMgbG9ja3Mgb24gdGhlIHNldCBvZiBwcnVuYWJsZQorICogcmVs YXRpb25zIHRoYXQgc3Vydml2ZSBpbml0aWFsIHJ1bnRpbWUgcHJ1bmluZyBkdXJpbmcgZXhlY3V0 b3IKKyAqIGluaXRpYWxpemF0aW9uOwogICovCiBzdGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCkBAIC04OTMsMTAgKzg5NywxMCBAQCBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIG9yIGl0IGNhbiBi ZSBzZXQgdG8gTklMIGlmIHdlIG5lZWQgdG8gcmUtY29weSB0aGUgcGxhbnNvdXJjZSdzIHF1ZXJ5 X2xpc3QuCiAgKgogICogVG8gYnVpbGQgYSBnZW5lcmljLCBwYXJhbWV0ZXItdmFsdWUtaW5kZXBl bmRlbnQgcGxhbiwgcGFzcyBOVUxMIGZvcgotICogYm91bmRQYXJhbXMuICBUbyBidWlsZCBhIGN1 c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwgcGFyYW1ldGVyIHZhbHVlcyB2aWEKLSAqIGJvdW5k UGFyYW1zLiAgRm9yIGJlc3QgZWZmZWN0LCB0aGUgUEFSQU1fRkxBR19DT05TVCBmbGFnIHNob3Vs ZCBiZSBzZXQgb24KLSAqIGVhY2ggcGFyYW1ldGVyIHZhbHVlOyBvdGhlcndpc2UgdGhlIHBsYW5u ZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYQotICogaGludCByYXRoZXIgdGhhbiBhIGhhcmQg Y29uc3RhbnQuCisgKiBib3VuZFBhcmFtcywgYW5kIHRydWUgZm9yIGdlbmVyaWMuICBUbyBidWls ZCBhIGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwKKyAqIHBhcmFtZXRlciB2YWx1ZXMgdmlh IGJvdW5kUGFyYW1zLCBhbmQgZmFsc2UgZm9yIGdlbmVyaWMuICBGb3IgYmVzdCBlZmZlY3QsCisg KiB0aGUgUEFSQU1fRkxBR19DT05TVCBmbGFnIHNob3VsZCBiZSBzZXQgb24gZWFjaCBwYXJhbWV0 ZXIgdmFsdWU7IG90aGVyd2lzZQorICogdGhlIHBsYW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUg YXMgYSBoaW50IHJhdGhlciB0aGFuIGEgaGFyZCBjb25zdGFudC4KICAqCiAgKiBQbGFubmluZyB3 b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhlIGZpbmlzaGVk IHBsYW4KICAqIGlzIGluIGEgY2hpbGQgbWVtb3J5IGNvbnRleHQsIHdoaWNoIHR5cGljYWxseSBz aG91bGQgZ2V0IHJlcGFyZW50ZWQKQEAgLTkwNCw3ICs5MDgsOCBAQCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqLwogc3RhdGljIENhY2hlZFBsYW4gKgog QnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0 LAotCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52KQorCQkJCVBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52LAorCQkJCWJvb2wgZ2VuZXJpYykKIHsKIAlDYWNoZWRQbGFuICpwbGFuOwogCUxpc3QJ ICAgKnBsaXN0OwpAQCAtMTAyNiw2ICsxMDMxLDcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCXBsYW4tPnJlZmNvdW50ID0gMDsK IAlwbGFuLT5jb250ZXh0ID0gcGxhbl9jb250ZXh0OwogCXBsYW4tPmlzX29uZXNob3QgPSBwbGFu c291cmNlLT5pc19vbmVzaG90OworCXBsYW4tPmlzX2dlbmVyaWMgPSBnZW5lcmljOwogCXBsYW4t PmlzX3NhdmVkID0gZmFsc2U7CiAJcGxhbi0+aXNfdmFsaWQgPSB0cnVlOwogCkBAIC0xMTk2LDcg KzEyMDIsNyBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIFBh cmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJCWVsc2UKIAkJewogCQkJLyogQnVpbGQgYSBuZXcg Z2VuZXJpYyBwbGFuICovCi0JCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHFs aXN0LCBOVUxMLCBxdWVyeUVudik7CisJCQlwbGFuID0gQnVpbGRDYWNoZWRQbGFuKHBsYW5zb3Vy Y2UsIHFsaXN0LCBOVUxMLCBxdWVyeUVudiwgdHJ1ZSk7CiAJCQkvKiBKdXN0IG1ha2UgcmVhbCBz dXJlIHBsYW5zb3VyY2UtPmdwbGFuIGlzIGNsZWFyICovCiAJCQlSZWxlYXNlR2VuZXJpY1BsYW4o cGxhbnNvdXJjZSk7CiAJCQkvKiBMaW5rIHRoZSBuZXcgZ2VuZXJpYyBwbGFuIGludG8gdGhlIHBs YW5zb3VyY2UgKi8KQEAgLTEyNDEsNyArMTI0Nyw3IEBAIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAlpZiAoY3Vz dG9tcGxhbikKIAl7CiAJCS8qIEJ1aWxkIGEgY3VzdG9tIHBsYW4gKi8KLQkJcGxhbiA9IEJ1aWxk Q2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwgYm91bmRQYXJhbXMsIHF1ZXJ5RW52KTsKKwkJ cGxhbiA9IEJ1aWxkQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxbGlzdCwgYm91bmRQYXJhbXMsIHF1 ZXJ5RW52LCBmYWxzZSk7CiAJCS8qIEFjY3VtdWxhdGUgdG90YWwgY29zdHMgb2YgY3VzdG9tIHBs YW5zICovCiAJCXBsYW5zb3VyY2UtPnRvdGFsX2N1c3RvbV9jb3N0ICs9IGNhY2hlZF9wbGFuX2Nv c3QocGxhbiwgdHJ1ZSk7CiAKQEAgLTEzODcsOCArMTM5Myw4IEBAIENhY2hlZFBsYW5BbGxvd3NT aW1wbGVWYWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJfQogCiAJ LyoKLQkgKiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQgaGF2ZSBhbnl0aGlu ZyB0byBkby4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJl dmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBpZiB0aGVyZSBhcmUg YW55IGxvY2thYmxlIHJlbGF0aW9ucy4gIFRoaXMgaXMgcHJvYmFibHkKKwkgKiB1bm5lY2Vzc2Fy eSBnaXZlbiB0aGUgcHJldmlvdXMgY2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgogCSAqLwogCWZv cmVhY2gobGMsIHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzc2LDcgKzE3ODIsNyBAQCBBY3F1 aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIAlmb3JlYWNo KGxjMSwgc3RtdF9saXN0KQogCXsKIAkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0 X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKKwkJaW50CQkJcnRp bmRleDsKIAogCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQog CQl7CkBAIC0xNzk0LDkgKzE4MDAsMTMgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWZvcmVhY2gobGMy LCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQlydGluZGV4ID0gLTE7CisJCXdoaWxlICgocnRpbmRl eCA9IGJtc19uZXh0X21lbWJlcihwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcywKKwkJCQkJ CQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQogCQl7Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFu Z2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGxpc3Rf bnRoX25vZGUoUmFuZ2VUYmxFbnRyeSwKKwkJCQkJCQkJCQkJICAgcGxhbm5lZHN0bXQtPnJ0YWJs ZSwKKwkJCQkJCQkJCQkJICAgcnRpbmRleCAtIDEpOwogCiAJCQlpZiAoIShydGUtPnJ0ZWtpbmQg PT0gUlRFX1JFTEFUSU9OIHx8CiAJCQkJICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAm JiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9leHBsYWluLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggM2Fi MGFhZTc4Zi4uMjFjNzFlMGQ1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhw bGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtMTAzLDggKzEw Myw5IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJ bnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYpOwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3Rt dCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCi0JCQkJCQkgICBFeHBsYWluU3RhdGUg KmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFu KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCQkJICAgY29uc3QgY2hhciAq cXVlcnlTdHJpbmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9u bWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24s CiAJCQkJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKaW5kZXggOGQ4NWZhOTkwZS4uNTk5YWMwMzE4ZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApAQCAtNDksNiArNDksNyBAQCBleHRlcm4gdm9pZCBFeGVj Q2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogICogbnBhcnRz CQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10gYW5kIHN1YnBhcnRfbWFwW10uCiAgKiBzdWJw bGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgogICog c3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXggYnkgcGFydGl0aW9uIGluZGV4LCBvciAtMS4K KyAqIHJ0aV9tYXAJCQkJCQlSVCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAuCiAgKiBw cmVzZW50X3BhcnRzCQkJCUEgQml0bWFwc2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0aGF0 IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJwbGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0aWFs X3BydW5pbmdfc3RlcHMJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBAIC02 OCw2ICs2OSw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEKIAlp bnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9t YXA7CisJaW50CQkgICAqcnRpX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShucGFydHMpKTsK IAlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmluZ19z dGVwczsKIAlMaXN0CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xMzgsNyArMTQwLDggQEAg ZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFu U3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICpyb290X3BhcmVudF9y ZWxpZHMsCiAJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFu cyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUp OworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKKwkJCQkJCQkJCQkgICBCaXRtYXBz ZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiBleHRlcm4gUGFydGl0aW9uUHJ1bmVTdGF0ZSAqRXhl Y0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCQkJ CSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pOwogI2VuZGlmCQkJCQkJCS8qIEVYRUNQ QVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2Mu aCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggMGE3Mjc0ZTI2Yy4uMGU3 MjQ1NDM1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVk ZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3Jl YXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01E X1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidz IG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCUNhY2hlZFBsYW4gKmNwbGFuOwkJ CS8qIENhY2hlZFBsYW4gdGhhdCBzdXBwbGllcyB0aGUgcGxhbm5lZHN0bXQgKi8KIAljb25zdCBj aGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNo b3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJ Y3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAq LwpAQCAtNTcsNiArNTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1 ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJ CQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCA1MThhOWZjZDE1Li5iZDY4YzYwYTBiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDIsNiAr NDIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVk ZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIK KyNpbmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2Vy LmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVkdHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxz L3NuYXBzaG90LmgiCkBAIC02MzYsOSArNjM3LDE0IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQog CQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAq ZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5l ZFN0bXQgKmVzX3BsYW5uZWRzdG10OwkvKiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlD YWNoZWRQbGFuICplc19jYWNoZWRwbGFuOwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7 CS8qIFBsYW5uZWRTdG10LnBhcnRQcnVuZUluZm9zICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVu ZV9zdGF0ZXM7CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqLwogCUxpc3QJICAgKmVz X3BhcnRfcHJ1bmVfcmVzdWx0czsJLyogTGlzdCBvZiBCaXRtYXBzZXQgKi8KKwlCaXRtYXBzZXQg ICplc191bnBydW5hYmxlX3JlbGlkczsJLyogUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyAr IFJUCisJCQkJCQkJCQkJICogaW5kZXhlcyBvZiBsZWFmIHBhcnRpdGlvbnMgdGhhdAorCQkJCQkJ CQkJCSAqIHN1cnZpdmUgaW5pdGlhbCBwcnVuaW5nOyBzZWUKKwkJCQkJCQkJCQkgKiBFeGVjRG9J bml0aWFsUHJ1bmluZygpICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNl IHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8q IHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCkBAIC0xNDE5LDYgKzE0MjUsMTIgQEAg dHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGVTdGF0ZQogCWRvdWJsZQkJbXRfbWVyZ2VfaW5zZXJ0 ZWQ7CiAJZG91YmxlCQltdF9tZXJnZV91cGRhdGVkOwogCWRvdWJsZQkJbXRfbWVyZ2VfZGVsZXRl ZDsKKworCS8qCisJICogTGlzdCBvZiB2YWxpZCB1cGRhdGVDb2xub3NMaXN0cy4gIENvbnRhaW5z IG9ubHkgdGhvc2UgYmVsb25naW5nIHRvCisJICogdW5wcnVuZWQgcmVsYXRpb25zIGZyb20gTW9k aWZ5VGFibGUudXBkYXRlQ29sbm9zTGlzdHMuCisJICovCisJTGlzdAkgICAqbXRfdXBkYXRlQ29s bm9zTGlzdHM7CiB9IE1vZGlmeVRhYmxlU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGF0aG5vZGVzLmgKaW5kZXggOGQzMGI2ZTg5Ni4uY2MyMTkwZWE2MyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKQEAgLTExNiw2ICsxMTYsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2Jh bAogCS8qICJmbGF0IiByYW5nZXRhYmxlIGZvciBleGVjdXRvciAqLwogCUxpc3QJICAgKmZpbmFs cnRhYmxlOwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBzdWJqZWN0IHRvIHJl bW92YWwgZnJvbSB0aGUgcGxhbiBkdWUgdG8gcnVudGltZQorCSAqIHBydW5pbmcgYXQgcGxhbiBp bml0aWFsaXphdGlvbiB0aW1lCisJICovCisJQml0bWFwc2V0ICAqcHJ1bmFibGVSZWxpZHM7CisK IAkvKiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mb3MgKi8KIAlMaXN0CSAgICpmaW5h bHJ0ZXBlcm1pbmZvczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAzOWQwMjgxYzIzLi4zMThl MzBmZTJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNzQsNiArNzQsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgUGxhbm5lZFN0bXQKIAogCUxpc3QJICAgKnJ0YWJsZTsJCQkvKiBsaXN0IG9mIFJhbmdl VGJsRW50cnkgbm9kZXMgKi8KIAorCUJpdG1hcHNldCAgKnVucHJ1bmFibGVSZWxpZHM7CS8qIFJU IGluZGV4ZXMgb2YgcmVsYXRpb25zIHRoYXQgYXJlIG5vdAorCQkJCQkJCQkJICogc3ViamVjdCB0 byBydW50aW1lIHBydW5pbmc7IGZvcgorCQkJCQkJCQkJICogQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo KSAqLworCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5m byBub2RlcyBmb3IgcnRhYmxlCiAJCQkJCQkJCSAqIGVudHJpZXMgbmVlZGluZyBvbmUgKi8KIApA QCAtMTQ3NCw2ICsxNDc4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uZWRSZWxQcnVuZUlu Zm8KIAkvKiBzdWJwYXJ0IGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEgKi8KIAlpbnQJ CSAgICpzdWJwYXJ0X21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShucGFydHMpKTsKIAorCS8q IFJUIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgMCAqLworCWludAkJICAgKnJ0aV9tYXAg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7CisKIAkvKiByZWxhdGlvbiBPSUQgYnkg cGFydGl0aW9uIGluZGV4LCBvciAwICovCiAJT2lkCQkgICAqcmVsaWRfbWFwIHBnX25vZGVfYXR0 cihhcnJheV9zaXplKG5wYXJ0cykpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9w bGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IGE5MGRmZGY5 MDYuLjBiNWVlMDA3Y2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0xNDksNiArMTQ5LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgogCWludAkJCW1hZ2ljOwkJCS8qIHNob3VsZCBlcXVh bCBDQUNIRURQTEFOX01BR0lDICovCiAJTGlzdAkgICAqc3RtdF9saXN0OwkJLyogbGlzdCBvZiBQ bGFubmVkU3RtdHMgKi8KIAlib29sCQlpc19vbmVzaG90OwkJLyogaXMgaXQgYSAib25lc2hvdCIg cGxhbj8gKi8KKwlib29sCQlpc19nZW5lcmljOwkJLyogaXMgaXQgYSByZXVzYWJsZSBnZW5lcmlj IHBsYW4/ICovCiAJYm9vbAkJaXNfc2F2ZWQ7CQkvKiBpcyBDYWNoZWRQbGFuIGluIGEgbG9uZy1s aXZlZCBjb250ZXh0PyAqLwogCWJvb2wJCWlzX3ZhbGlkOwkJLyogaXMgdGhlIHN0bXRfbGlzdCBj dXJyZW50bHkgdmFsaWQ/ICovCiAJT2lkCQkJcGxhblJvbGVJZDsJCS8qIFJvbGUgSUQgdGhlIHBs YW4gd2FzIGNyZWF0ZWQgZm9yICovCkBAIC0yMzUsNCArMjM2LDEzIEBAIGV4dGVybiBib29sIENh Y2hlZFBsYW5Jc1NpbXBseVZhbGlkKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRl cm4gQ2FjaGVkRXhwcmVzc2lvbiAqR2V0Q2FjaGVkRXhwcmVzc2lvbihOb2RlICpleHByKTsKIGV4 dGVybiB2b2lkIEZyZWVDYWNoZWRFeHByZXNzaW9uKENhY2hlZEV4cHJlc3Npb24gKmNleHByKTsK IAorLyoKKyAqIENhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmc6IHNob3VsZCB0aGUgZXhlY3V0b3Ig YWNxdWlyZSBsb2Nrcz8KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuUmVxdWly ZXNMb2NraW5nKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfZ2VuZXJp YzsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFBMQU5DQUNIRV9IICovCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggN2EwM2I0ZTM2MC4uNzA1Y2Q5 MjJmYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1 bmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dApAQCAtNDQ0MCwzICs0NDQwLDQ3IEBAIGRyb3AgdGFibGUgaHBfY29udHJhZGljdF90ZXN0Owog ZHJvcCBvcGVyYXRvciBjbGFzcyBwYXJ0X3Rlc3RfaW50NF9vcHMyIHVzaW5nIGhhc2g7CiBkcm9w IG9wZXJhdG9yID09PShpbnQ0LCBpbnQ0KTsKIGRyb3AgZnVuY3Rpb24gZXhwbGFpbl9hbmFseXpl KHRleHQpOworLS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9Q VElPTlMgYW5kIFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0 LCBjIGJvb2wpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18x IChiIHRleHQsIGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50 LCBjIGJvb2wsIGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9u IHBhcnRfYWJjXzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRh Y2ggcGFydGl0aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBw YXJ0X2FiYyB2YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1 ZXMgKDIsICdjJywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAq IGZyb20gcGFydF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJl IHVwZGF0ZV9wYXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIg d2hlcmUgYSA9ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVw ZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBk YXRlIG9uIHBhcnRfYWJjXzEKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92 ZWQ6IDEKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0X2FiY18xCisgICAgICAgICAgICAg ICBGaWx0ZXI6ICgoYiA8PiAnYSc6OnRleHQpIEFORCAoYSA9ICQxKSkKKyg2IHJvd3MpCisKK2V4 ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CisgYSB8IGIgfCBjIAorLS0tKy0t LSstLS0KKyAxIHwgZCB8IHQKKygxIHJvdykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRl IHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAg VXBkYXRlIG9uIHBhcnRfYWJjXzIgcGFydF9hYmNfMQorICAgLT4gIEFwcGVuZAorICAgICAgICAg U3VicGxhbnMgUmVtb3ZlZDogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhcnRfYWJjXzIg cGFydF9hYmNfMQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKGIgPD4gJ2EnOjp0ZXh0KSBBTkQg KGEgPSAkMSkpCisoNiByb3dzKQorCitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAn YScpOworRVJST1I6ICBuZXcgcm93IHZpb2xhdGVzIGNoZWNrIG9wdGlvbiBmb3IgdmlldyAicGFy dF9hYmNfdmlldyIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgyLCBhLCB0KS4KK2Rl YWxsb2NhdGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXc7Citkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsK K2Ryb3AgdGFibGUgcGFydF9hYmM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5l LnNxbAppbmRleCA0NDI0MjhkOTM3Li5hZjI2YWQyZmIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTEzMzksMyArMTMzOSwyMSBAQCBkcm9wIG9wZXJhdG9y IGNsYXNzIHBhcnRfdGVzdF9pbnQ0X29wczIgdXNpbmcgaGFzaDsKIGRyb3Agb3BlcmF0b3IgPT09 KGludDQsIGludDQpOwogCiBkcm9wIGZ1bmN0aW9uIGV4cGxhaW5fYW5hbHl6ZSh0ZXh0KTsKKwor LS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9QVElPTlMgYW5k IFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0LCBjIGJvb2wp IHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18xIChiIHRleHQs IGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50LCBjIGJvb2ws IGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJj XzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0 aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2 YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDIsICdj JywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAqIGZyb20gcGFy dF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJlIHVwZGF0ZV9w YXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIgd2hlcmUgYSA9 ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0 X2FiY192aWV3ICgxLCAnZCcpOworZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMSwgJ2Qn KTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMiwg J2EnKTsKK2V4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7CitkZWFsbG9jYXRl IHVwZGF0ZV9wYXJ0X2FiY192aWV3OworZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7Citkcm9wIHRh YmxlIHBhcnRfYWJjOwotLSAKMi40My4wCgo= --000000000000f23687062288914f Content-Type: application/octet-stream; name="v56-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v56-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1afwhzx2 RnJvbSA4NGI4NzViMWNhM2FmODlhOTI0MmNkYWY5YmVhMDUyMjIzZjk1MzBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMTIgU2VwIDIwMjQgMTU6NDQ6NDMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 NiAzLzVdIFBlcmZvcm0gcnVudGltZSBpbml0aWFsIHBydW5pbmcgb3V0c2lkZQogRXhlY0luaXRO b2RlKCkKClRoaXMgY29tbWl0IGZvbGxvd3MgdXAgb24gdGhlIHByZXZpb3VzIGNoYW5nZSB0aGF0 IG1vdmVkClBhcnRpdGlvblBydW5lSW5mb3Mgb3V0IG9mIGluZGl2aWR1YWwgcGxhbiBub2RlcyBp bnRvIGEgbGlzdCBpbgpQbGFubmVkU3RtdC4gSXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9m IFBhcnRpdGlvblBydW5lU3RhdGVzCmFuZCBydW50aW1lIGluaXRpYWwgcHJ1bmluZyBvdXQgb2Yg RXhlY0luaXROb2RlKCkgYW5kIGludG8gYSBuZXcKcm91dGluZSwgRXhlY0RvSW5pdGlhbFBydW5p bmcoKSwgd2hpY2ggaXMgY2FsbGVkIGJ5IEluaXRQbGFuKCkKYmVmb3JlIEV4ZWNJbml0Tm9kZSgp IGlzIGludm9rZWQgb24gdGhlIG1haW4gcGxhbiB0cmVlIGFuZCBzdWJwbGFucy4KCkV4ZWNEb0lu aXRpYWxQcnVuaW5nKCkgc3RvcmVzIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlcyB0aGF0IGl0CmNy ZWF0ZXMgdG8gZG8gdGhlIGluaXRpYWwgcHJ1bmluZyB0byB1c2UgZHVyaW5nIGV4ZWMgcHJ1bmlu bmcgaW4gYQpsaXN0IG1hdGNoaW5nIHRoZSBsZW5ndGggb2YgZXNfcGFydF9wcnVuZV9pbmZvcyAo d2hpY2ggaG9sZHMgdGhlClBhcnRpdGlvblBydW5lSW5mb3MgZnJvbSBQbGFubmVkU3RtdCksIGFs bG93aW5nIGJvdGggbGlzdHMgdG8gc2hhcmUKdGhlIHNhbWUgaW5kZXguIEl0IGFsc28gc2F2ZXMg dGhlIGluaXRpYWwgcHJ1bmluZyByZXN1bHQgLS0gYQpiaXRtYXBzZXQgb2YgaW5kZXhlcyBmb3Ig c3Vydml2aW5nIGNoaWxkIHN1Ym5vZGVzIC0tIGluIGEgc2ltaWxhcmx5CmluZGV4ZWQgbGlzdC4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgfCA1NSArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMg fCA1MSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oIHwgIDIgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAg IHwgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCBmMjYzMjMyYzY3Li41MjIyYWE5YWIzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy9tYXR2aWV3LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5oIgogI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9m ZHdhcGkuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgpAQCAtODI4LDYgKzgyOSw1NCBAQCBF eGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10KQogCQlQcmV2ZW50 Q29tbWFuZElmUGFyYWxsZWxNb2RlKENyZWF0ZUNvbW1hbmROYW1lKChOb2RlICopIHBsYW5uZWRz dG10KSk7CiB9CiAKKy8qCisgKiBFeGVjRG9Jbml0aWFsUHJ1bmluZworICoJCVBlcmZvcm0gcnVu dGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVjZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNl dAorICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJp bmcgRXhlY0luaXROb2RlKCkKKyAqCQlmb3IgcGxhbiBub2RlcyB0aGF0IHN1cHBvcnQgcGFydGl0 aW9uIHBydW5pbmcuCisgKgorICogRm9yIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGluIGVzdGF0 ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcywgdGhpcyBmdW5jdGlvbgorICogY3JlYXRlcyBhIFBhcnRp dGlvblBydW5lU3RhdGUgKGV2ZW4gaWYgbm8gaW5pdGlhbCBwcnVuaW5nIGlzIGRvbmUpIGFuZCBh ZGRzCisgKiBpdCB0byBlc19wYXJ0X3BydW5lX3N0YXRlcy4gRm9yIFBhcnRpdGlvblBydW5lSW5m byBlbnRyaWVzIHRoYXQgaW5jbHVkZQorICogaW5pdGlhbCBwcnVuaW5nIHN0ZXBzLCB0aGUgcmVz dWx0IG9mIHRob3NlIHN0ZXBzIGlzIHNhdmVkIGFzIGEgYml0bWFwc2V0CisgKiBvZiBpbmRleGVz IHJlcHJlc2VudGluZyBjaGlsZCBzdWJub2RlcyB0aGF0IGFyZSAidmFsaWQiIGFuZCBzaG91bGQg YmUKKyAqIGluaXRpYWxpemVkIGZvciBleGVjdXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitFeGVj RG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKK3sKKwlMaXN0Q2VsbCAqbGM7CisKKwlm b3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCisJeworCQlQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBydW5lSW5mbywgbGMp OworCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOworCQlCaXRtYXBzZXQgKnZhbGlk c3VicGxhbnMgPSBOVUxMOworCisJCS8qCisJCSAqIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0 cnVjdHVyZSBmb3IgcHJ1bmluZywgYW5kIHNhdmUgaXQgZm9yIHVzZQorCQkgKiBsYXRlciBpbiBF eGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKSwgd2hpY2ggd2lsbCBiZSBjYWxsZWQgYnkgdGhlCisJ CSAqIHBhcmVudCBwbGFuIG5vZGUncyBFeGVjSW5pdCogZnVuY3Rpb24uCisJCSAqLworCQlwcnVu ZXN0YXRlID0gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8p OworCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfc3RhdGVzLAorCQkJCQkJCQkJCQkgICBwcnVuZXN0YXRlKTsKKworCQkvKgorCQkg KiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5pbmcgcGFzcywgaWYgbmVjZXNzYXJ5 LCBhbmQgc2F2ZQorCQkgKiB0aGUgYml0bWFwc2V0IG9mIHZhbGlkIHN1YnBsYW5zIGZvciB1c2Ug aW4KKwkJICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkuICBJZiBubyBpbml0aWFsIHBydW5p bmcgaXMgcGVyZm9ybWVkLCB3ZQorCQkgKiBzdGlsbCBzdG9yZSBhIE5VTEwgdG8gZW5zdXJlIHRo YXQgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGlzIHRoZSBzYW1lCisJCSAqIGxlbmd0aCBhcyBlc19w YXJ0X3BydW5lX2luZm9zLiAgVGhpcyBlbnN1cmVzIHRoYXQKKwkJICogRXhlY0luaXRQYXJ0aXRp b25QcnVuaW5nKCkgY2FuIHVzZSB0aGUgc2FtZSBpbmRleCB0byBsb2NhdGUgdGhlCisJCSAqIHJl c3VsdC4KKwkJICovCisJCWlmIChwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQorCQkJdmFs aWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsK KwkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFy dF9wcnVuZV9yZXN1bHRzLAorCQkJCQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CisJfQorfQogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJSW5pdFBsYW4KQEAgLTg2MCw3ICs5MDksMTMgQEAgSW5pdFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0 ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7CiAKIAllc3RhdGUtPmVzX3Bs YW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CisKKwkvKgorCSAqIFBlcmZvcm0gcnVudGltZSAiaW5p dGlhbCIgcHJ1bmluZyB0byBkZXRlcm1pbmUgdGhlIHBsYW4gbm9kZXMgdGhhdCB3aWxsCisJICog bm90IGJlIGV4ZWN1dGVkLgorCSAqLwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBs YW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKwlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUp OwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUg UGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpp bmRleCA2M2MzNDI5ZmU3Li40MGViNzRkMTg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jCkBAIC0xODEsOCArMTgxLDYgQEAgc3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0 aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkJCQkgIGludCBtYXhm aWVsZGxlbik7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29s bm9zLCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1c3Rf cGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFw KTsKLXN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KEVTdGF0ZSAqZXN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25l ZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lQ29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKQEAgLTE3ODIsMjAg KzE3ODAsMjYgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5v cywgQXR0ck1hcCAqYXR0ck1hcCkKIAogLyoKICAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZwot ICoJCUluaXRpYWxpemUgZGF0YSBzdHJ1Y3R1cmUgbmVlZGVkIGZvciBydW4tdGltZSBwYXJ0aXRp b24gcHJ1bmluZyBhbmQKLSAqCQlkbyBpbml0aWFsIHBydW5pbmcgaWYgbmVlZGVkCisgKgkJSW5p dGlhbGl6ZSB0aGUgZGF0YSBzdHJ1Y3R1cmVzIG5lZWRlZCBmb3IgcnVudGltZSAiZXhlYyIgcGFy dGl0aW9uCisgKgkJcHJ1bmluZyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgaW5pdGlhbCBwcnVu aW5nLCBpZiBhdmFpbGFibGUuCiAgKgogICogJ3Jvb3RfcGFyZW50X3JlbGlkcycgaWRlbnRpZmll cyB0aGUgcmVsYXRpb24gdG8gd2hpY2ggYm90aCB0aGUgcGFyZW50IHBsYW4KLSAqIGFuZCB0aGUg UGFydGl0aW9uUHJ1bmVJbmZvIGdpdmVuIGJ5ICdwYXJ0X3BydW5lX2luZGV4JyBiZWxvbmcuCisg KiBhbmQgdGhlIFBhcnRpdGlvblBydW5lSW5mbyBhc3NvY2lhdGVkIHdpdGggJ3BhcnRfcHJ1bmVf aW5kZXgnIGJlbG9uZy4KICAqCi0gKiBPbiByZXR1cm4sICppbml0aWFsbHlfdmFsaWRfc3VicGxh bnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVzIG9mCi0gKiBjaGlsZCBzdWJwbGFucyB0 aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxvbmcgd2l0aCB0aGUgcGFyZW50IHBsYW4gbm9kZS4K LSAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVyZSBpZiBuZWVkZWQgYW5kIGluIHRo YXQgY2FzZSBvbmx5IHRoZQotICogc3Vydml2aW5nIHN1YnBsYW5zJyBpbmRleGVzIGFyZSBhZGRl ZC4KKyAqIFRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHdvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ5 IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkKKyAqIGFuZCBzdG9yZWQgYXMgdGhlIHBhcnRfcHJ1bmVf aW5kZXgndGggZWxlbWVudCBvZiBFU3RhdGUuZXNfcGFydF9wcnVuZV9zdGF0ZXMuCisgKiBIZXJl LCB3ZSBpbml0aWFsaXplIG9ubHkgdGhlIFBhcnRpdGlvblBydW5lQ29udGV4dCBuZWNlc3Nhcnkg Zm9yIGV4ZWN1dGlvbgorICogcHJ1bmluZy4KICAqCi0gKiBJZiBzdWJwbGFucyBhcmUgaW5kZWVk IHBydW5lZCwgc3VicGxhbl9tYXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0aGUgcmV0dXJuZWQKLSAq IFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBub3QgY291bnQgdGhvc2Us IHRob3VnaCBvbmx5IGlmIHRoZQotICogbWFwcyB3aWxsIGJlIG5lZWRlZCBmb3Igc3Vic2VxdWVu dCBleGVjdXRpb24gcHJ1bmluZyBwYXNzZXMuCisgKiBPbiByZXR1cm4sICppbml0aWFsbHlfdmFs aWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVzIG9mIGNoaWxkCisgKiBz dWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxvbmdzaWRlIHRoZSBwYXJlbnQgcGxh biBub2RlLiBJbml0aWFsCisgKiBwcnVuaW5nIHdvdWxkIGhhdmUgYmVlbiBwZXJmb3JtZWQgYnkg RXhlY0RvSW5pdGlhbFBydW5pbmcoKSBpZiBuZWNlc3NhcnksCisgKiBhbmQgdGhlIGJpdG1hcHNl dCBvZiBzdXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMgd291bGQgaGF2ZSBiZWVuIHN0b3JlZCBh cworICogdGhlIHBhcnRfcHJ1bmVfaW5kZXgndGggZWxlbWVudCBvZiBFU3RhdGUuZXNfcGFydF9w cnVuZV9yZXN1bHRzLgorICoKKyAqIElmIHN1YnBsYW5zIGFyZSBwcnVuZWQsIHRoZSBzdWJwbGFu X21hcCBhcnJheXMgaW4gdGhlIHJldHVybmVkCisgKiBQYXJ0aXRpb25QcnVuZVN0YXRlIGFyZSBy ZS1zZXF1ZW5jZWQgdG8gZXhjbHVkZSB0aG9zZSBzdWJwbGFucywgYnV0IG9ubHkgaWYKKyAqIHRo ZSBtYXBzIHdpbGwgYmUgbmVlZGVkIGZvciBzdWJzZXF1ZW50IGV4ZWN1dGlvbiBwcnVuaW5nIHBh c3Nlcy4KICAqLwogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBydW5p bmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCkBAIC0xODIwLDExICsxODI0LDEyIEBAIEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJICAgYm1zVG9T dHJpbmcocm9vdF9wYXJlbnRfcmVsaWRzKSwKIAkJCQkJCQkJICAgYm1zVG9TdHJpbmcocHJ1bmVp bmZvLT5yb290X3BhcmVudF9yZWxpZHMpKSk7CiAKLQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNz aW9uIGNvbnRleHQgdG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCi0JRXhlY0Fzc2lnbkV4 cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKLQotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBk YXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkvKgorCSAqIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkgbXVzdCBoYXZlIGluaXRpYWxpemVkIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHRv CisJICogcGVyZm9ybSB0aGUgaW5pdGlhbCBwcnVuaW5nLgorCSAqLworCXBydW5lc3RhdGUgPSBs aXN0X250aChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLCBwYXJ0X3BydW5lX2luZGV4KTsK KwlBc3NlcnQocHJ1bmVzdGF0ZSAhPSBOVUxMKTsKIAogCS8qCiAJICogU3RvcmUgUGxhblN0YXRl IGZvciB1c2luZyBpdCB0byBpbml0aWFsaXplIGV4ZWMgcHJ1bmluZyBjb250ZXh0cyBsYXRlcgpA QCAtMTgzMywxMSArMTgzOCwxMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRl ICpwbGFuc3RhdGUsCiAJaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpCiAJCXBydW5lc3Rh dGUtPnBhcmVudF9wbGFuID0gcGxhbnN0YXRlOwogCi0JLyoKLQkgKiBQZXJmb3JtIGFuIGluaXRp YWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgotCSAqLworCS8qIFVzZSB0aGUg cmVzdWx0IG9mIGluaXRpYWwgcHJ1bmluZyBkb25lIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCku ICovCiAJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFs aWRfc3VicGxhbnMgPSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7 CisJCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgPSBsaXN0X250aF9ub2RlKEJpdG1hcHNldCwK KwkJCQkJCQkJCQkJCSAgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCisJCQkJCQkJCQkJ CQkgIHBhcnRfcHJ1bmVfaW5kZXgpOwogCWVsc2UKIAl7CiAJCS8qIE5vIHBydW5pbmcsIHNvIHdl J2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8KQEAgLTE4ODYsOCArMTg5MSw4 IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKICAqICh3 aGljaCBhcmUgc3RvcmVkIGluIGVhY2ggUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSkgYXJlIGlu aXRpYWxpemVkIGxhemlseQogICogaW4gZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKCkg d2hlbiB1c2VkIGZvciB0aGUgZmlyc3QgdGltZS4KICAqLwotc3RhdGljIFBhcnRpdGlvblBydW5l U3RhdGUgKgotQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0 aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCitQYXJ0aXRpb25QcnVuZVN0YXRlICoKK0V4ZWNDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8g KnBydW5laW5mbykKIHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCWludAkJ CW5fcGFydF9oaWVyYXJjaGllczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRl eCA0MWFmYjUyMmYzLi44ZDg1ZmE5OTBlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oCkBAIC0xMzksNCArMTM5LDYgQEAgZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJ bml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkJCQkJCQkg Qml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRtYXBzZXQg KkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRl LAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CitleHRlcm4gUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsCisJ CQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pOwogI2VuZGlmCQkJ CQkJCS8qIEVYRUNQQVJUSVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAyMmI5Mjhl MDg1Li41MThhOWZjZDE1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjM3LDYgKzYzNyw4IEBA IHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlz dCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJ LyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9p bmZvczsJLyogUGxhbm5lZFN0bXQucGFydFBydW5lSW5mb3MgKi8KKwlMaXN0CSAgICplc19wYXJ0 X3BydW5lX3N0YXRlczsJLyogTGlzdCBvZiBQYXJ0aXRpb25QcnVuZVN0YXRlICovCisJTGlzdAkg ICAqZXNfcGFydF9wcnVuZV9yZXN1bHRzOwkvKiBMaXN0IG9mIEJpdG1hcHNldCAqLwogCWNvbnN0 IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAK IAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlm IGFueSAqLwotLSAKMi40My4wCgo= --000000000000f23687062288914f--