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 1qRTqN-001uHd-30 for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Aug 2023 08:38:03 +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 1qRTqL-00BUNf-I9 for pgsql-hackers@arkaria.postgresql.org; Thu, 03 Aug 2023 08:38:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qRTqK-00BUNW-HW for pgsql-hackers@lists.postgresql.org; Thu, 03 Aug 2023 08:38:01 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qRTqH-000HTr-Jt for pgsql-hackers@postgresql.org; Thu, 03 Aug 2023 08:37:59 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-267fcd6985cso406462a91.2 for ; Thu, 03 Aug 2023 01:37:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691051876; x=1691656676; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1uBlOU8EZJq4ixSgHvjsy/1Pa30UoqGCSgG7JQwbfmw=; b=Ctmd/IpH1dcIKDzRVfgEdgRVxTpBcMfBHyOBqAgKkNYMjNneSNLWcissSawHux7eTI JcLw/Y+nZmlLsj+yxjZvkH9LGrC+5vpQskejM0o4q2guanQ/Z8saEZGWXUkTjbfoZWi/ ReQRPGCGgQMxzggSdWg9ZVp0wF31N08/amlDGVIdxtYKOSC/99WoiTTPPA0KUHwGnazA iTfkcO0YBmFJTIIsnpkb+h8cJDI5Ylg7zLUQwst3wQChSRqVC9IlrOfv5apM+m1VBc2O 5rZbAXzWyTr/w4ps0PpJlu11sEMHcUxrpeEoBXFM+gSUDSshRNKsN9BoS44fECQ04SBS 8k8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691051876; x=1691656676; 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=1uBlOU8EZJq4ixSgHvjsy/1Pa30UoqGCSgG7JQwbfmw=; b=ilIYqn05oXHAxy08roatony8v70/13U1npvrMzPGe3mzX1PUkj2pC5V9QabMa+iJWq SsTdfKE/2OK6bYzZauPWm53StW+pY6tm8VWwhWx8NxhzErqoTi5bkniMxZDDzLs8HDCe 1NBgHPeMLFq34smR47l+b/OQnxWmeu6lese6kJr55GIVAwxb2tFG2+b7javvkAiYN0Px zs6O3GtWnYfvQl2CjxtvCKlkNaOKp1XpKN6FbofffeEMoYyBlymUjok8MvtxmMxmLzVy TW11zJRezsa5JXzHw1cFkkcSnp2neIotXjWZ4lmC8NBuCsDf48PYjEshkVO75aTsC8XZ aX8Q== X-Gm-Message-State: ABy/qLbqG6wXa3H1y62Z17kSOsEM3P43tmnSpYcSZ00iGLPpxJMgDQrS /uN/dqbcbhq5vAfbhbfj6x59CHwlj2CfuXunk+M= X-Google-Smtp-Source: APBJJlHt+DZyIffNpbCzt1PguqQxBrQOB7yPJmpZhJjJSWaTBzrKQGL5lt3VHw57dbRhUOdi6pHFf5DFiVPHf34jgUs= X-Received: by 2002:a17:90a:8d06:b0:268:1d1e:baaf with SMTP id c6-20020a17090a8d0600b002681d1ebaafmr18130156pjo.17.1691051876189; Thu, 03 Aug 2023 01:37:56 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Thu, 3 Aug 2023 17:37:39 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Thom Brown Cc: Daniel Gustafsson , Tom Lane , Alvaro Herrera , Andres Freund , David Rowley , Jacob Champion , PostgreSQL Hackers , Robert Haas Content-Type: multipart/mixed; boundary="00000000000060a6b1060200b2c3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000060a6b1060200b2c3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Aug 2, 2023 at 10:39=E2=80=AFPM Amit Langote wrote: > Having extracted the ExecEndNode() change, I'm also starting to feel > inclined to extract a couple of other bits from the main patch as > separate patches, such as moving the ExecutorStart() call from > PortalRun() to PortalStart() for the multi-query portals. I'll do > that in the next version. Here's a patch set where the refactoring to move the ExecutorStart() calls to be closer to GetCachedPlan() (for the call sites that use a CachedPlan) is extracted into a separate patch, 0002. Its commit message notes an aspect of this refactoring that I feel a bit nervous about -- needing to also move the CommandCounterIncrement() call from the loop in PortalRunMulti() to PortalStart() which now does ExecutorStart() for the PORTAL_MULTI_QUERY case. --=20 Thanks, Amit Langote EDB: http://www.enterprisedb.com --00000000000060a6b1060200b2c3 Content-Type: application/octet-stream; name="v44-0004-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v44-0004-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkuwi1k22 RnJvbSAyNmRmMTBlYTM2YjIwODlkNTkxMjliMDY2ZDNkZmFlZGIzYWE1ZTBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ0 IDQvNl0gU2V0IGluRnJvbUNsIHRvIGZhbHNlIGluIGNoaWxkIHRhYmxlIFJURXMKClRoaXMgaXMg dG8gYWxsb3cgdGhlIGV4ZWN1dG9yIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggdGFibGVzIHRoYXQg YXJlCmRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgZnJvbSB0aG9zZSB0aGF0IGdldCBh ZGRlZCB0byB0aGUKcXVlcnkgZHVyaW5nIHBsYW5uaW5nLiAgQSBzdWJzZXF1ZW50IGNvbW1pdCB3 aWxsIHRlYWNoIHRoZSBleGVjdXRvcgp0byBsb2NrIG9ubHkgdGhlIHRhYmxlcyBvZiB0aGUgbGF0 dGVyIGtpbmQgd2hlbiBleGVjdXRpbmcgYSBjYWNoZWQKcGxhbi4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVF cGJLQjBPX21nQG1haWwuZ21haWwuY29tawotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYyB8IDYgKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgfCA3ICsrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICB8IDkg KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0ZGU4NTVhMjIuLjli YWMwN2JmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKQEAgLTQ5Miw2ICs0 OTIsMTIgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNoaWxkcnRlLT5pbmgg PSBmYWxzZTsKKwkvKgorCSAqIE1hcmsgY2hpbGQgdGFibGVzIGFzIG5vdCBiZWluZyBkaXJlY3Rs eSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LiAgVGhpcworCSAqIGFsbG93cyB0aGUgZXhlY3V0b3In cyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgdG8gY29udmVuaWVudGx5CisJICogaWRlbnRp ZnkgaXQgYXMgYW4gaW5oZXJpdGFuY2UgY2hpbGQgdGFibGUuCisJICovCisJY2hpbGRydGUtPmlu RnJvbUNsID0gZmFsc2U7CiAJY2hpbGRydGUtPnNlY3VyaXR5UXVhbHMgPSBOSUw7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggNDAwNjYzMjA5Mi4uYmNmNmZjZGRlMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC0zMjY3LDEwICszMjY3LDkgQEAgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnksIExvY2tpbmdDbGF1c2UgKmxjLAogCQkvKgogCQkg KiBMb2NrIGFsbCByZWd1bGFyIHRhYmxlcyB1c2VkIGluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmll cy4gIFdlCiAJCSAqIGV4YW1pbmUgaW5Gcm9tQ2wgdG8gZXhjbHVkZSBhdXRvLWFkZGVkIFJURXMs IHBhcnRpY3VsYXJseSBORVcvT0xECi0JCSAqIGluIHJ1bGVzLiAgVGhpcyBpcyBhIGJpdCBvZiBh biBhYnVzZSBvZiBhIG1vc3RseS1vYnNvbGV0ZSBmbGFnLCBidXQKLQkJICogaXQncyBjb252ZW5p ZW50LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSB0aGF0IGhhcwot CQkgKiBsYXJnZWx5IHJlcGxhY2VkIGluRnJvbUNsLCBzaW5jZSBmb3IgZXhhbXBsZSB3ZSBuZWVk IHRvIGxvY2sKLQkJICogYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhleSBhcmUgbWFza2Vk IGJ5IHVwcGVyIGpvaW5zLgorCQkgKiBpbiBydWxlcy4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gc2luY2UgZm9yCisJCSAqIGV4YW1wbGUgd2UgbmVlZCB0byBsb2Nr IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZAorCQkgKiBieSB1cHBl ciBqb2lucy4KIAkJICovCiAJCWkgPSAwOwogCQlmb3JlYWNoKHJ0LCBxcnktPnJ0YWJsZSkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZTAwM2RlZDUwLi43MmYyYjBjMDRmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTQsMTEgKzk5NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --00000000000060a6b1060200b2c3 Content-Type: application/octet-stream; name="v44-0006-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v44-0006-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkuwi1jw0 RnJvbSA0ZjczNTMzNTczY2I1OTU5YjE1MjY4NDU1NjA1ODE2YzAzMTZkMGU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ0 IDYvNl0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggZGNmYmY1ODQ5NS4uYzU3 NGNkM2NkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNjQ2LDEyICsxNjQ2LDEzIEBA IEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHZvaWQKIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB7Ci0JaW50CQkJaTsKKwlMaXN0 Q2VsbCAqbGM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXpl OyBpKyspCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldKQotCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19y ZWxhdGlvbnNbaV0sIE5vTG9jayk7CisJCVJlbGF0aW9uIHJlbCA9IGxmaXJzdChsYyk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCBlZTEyMjM1YjJmLi41YWU5OTNlMjljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtODM5LDYgKzgzOSw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFd ID0gcmVsOworCQllc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfb3BlbmVkX3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJICByZWwpOwogCX0KIAogCXJldHVybiBy ZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDIwYzFiYWNhZTEuLmM1MTlhNmQ1ZGMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8qIHNpemUgb2YgdGhlIHJhbmdlIHRhYmxl IGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0aW9uczsJLyogQXJyYXkgb2YgcGVyLXJh bmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJCSAqIHBvaW50ZXJzLCBvciBOVUxMIGlm IG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNfb3BlbmVkX3JlbGF0aW9uczsgLyogTGlz dCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJCQkgICogZXNfcmVsYXRpb25zIGluIG5v IHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8q IEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1LjMKCg== --00000000000060a6b1060200b2c3 Content-Type: application/octet-stream; name="v44-0002-Refactoring-to-move-ExecutorStart-calls-to-be-ne.patch" Content-Disposition: attachment; filename="v44-0002-Refactoring-to-move-ExecutorStart-calls-to-be-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkuwi1k44 RnJvbSAwZDEwNjc1MDVlZDFjNDlkNGE3NWFkNWQ3ZjRlZWM0YTE5ZDdiNWQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMyBBdWcgMjAyMyAxMjozNDozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ0 IDIvNl0gUmVmYWN0b3JpbmcgdG8gbW92ZSBFeGVjdXRvclN0YXJ0KCkgY2FsbHMgdG8gYmUgbmVh cgogR2V0Q2FjaGVkUGxhbigpCgpBbiB1cGNvbWluZyBwYXRjaCB3aWxsIG1ha2UgRXhlY3V0b3JT dGFydCgpIGRldGVjdCB0aGUgaW52YWxpZGF0aW9uCm9mIGEgQ2FjaGVkUGxhbiB3aGVuIGluaXRp YWxpemluZyB0aGUgcGxhbiB0cmVlIGNvbnRhaW5lZCBpbiBpdC4gIEEKY2FsbGVyIG11c3QgcmV0 cnkgd2l0aCBhIG5ldyBDYWNoZWRQbGFuIHdoZW4gRXhlY3V0b3JTdGFydCgpIGRldGVjdHMKYW4g aW52YWxpZGF0aW9uLiAgSGF2aW5nIHRoZSBFeGVjdXRvclN0YXJ0KCkgaW4gdGhlIHNhbWUgb3Ig bmVhcmJ5CmFzIEdldENhY2hlZFBsYW4oKSBtYWtlcyBpdCBtb3JlIGNvbnZlbmllbnQgdG8gaW1w bGVtZW50IHRoZSByZXBsYW4KbG9vcC4KClRoZSBmb2xsb3dpbmcgc2l0ZXMgaGF2ZSB0aHVzIGJl ZW4gbW9kaWZpZWQ6CgoqIFRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCBpbiBFeHBsYWluT25lUGxh bigpIGlzIG1vdmVkLCBhbG9uZyB3aXRoCiAgQ3JlYXRlUXVlcnlEZXNjKCksIGludG8gYSBuZXcg ZnVuY3Rpb24gRXhwbGFpblF1ZXJ5RGVzYygpLCB3aGljaCBpdHMKICBjYWxsZXJzIG5vdyBjYWxs IGJlZm9yZSBjYWxsaW5nIGl0LgoKKiBUaGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgaW4gX1NQSV9w cXVlcnkoKSBpcyBtb3ZlZCB0byBpdHMgY2FsbGVyCiAgX1NQSV9leGVjdXRlX3BsYW4oKS4KCiog VGhlIEV4ZWN1dG9yU3RhcnQoKSBjYWxsIGluIFBvcnRhbFJ1bk11bHRpKCkgaXMgbW92ZWQgdG8K ICBQb3J0YWxTdGFydCgpLiAgVGhpcyByZXF1aXJlcyBhIG5ldyBMaXN0IGZpZWxkIGluIFBvcnRh bERhdGEgdG8KICBzdG9yZSB0aGUgUXVlcnlEZXNjcyBjcmVhdGVkIGluIFBvcnRhbFN0YXJ0KCkg YW5kIHRoZSBhc3NvY2lhdGVkCiAgbWVtb3J5IGNvbnRleHQgZmllbGQuICBPbmUgdW5pbnRlbmRl ZCBjb25zZXF1ZW5jZSBpcyB0aGF0IHRoZQogIENvbW1hbmRDb3VudGVySW5jcmVtZW50KCkgYmV0 d2VlbiBxdWVyaWVzIGluIFBPUlRBTF9NVUxUSV9RVUVSWQogIGNhc2VzIGlzIG5vdyBkb25lIGlu IHRoZSBsb29wIGluIFBvcnRhbFN0YXJ0KCkgYW5kIG5vdCBpbgogIFBvcnRhbFJ1bk11bHRpKCku ICBUaGF0IHN0aWxsIHNlZW1zIHRvIHdvcmsgYmVjYXVzZSB0aGUgU25hcHNob3QKICByZWdpc3Rl cmVkIGluIFF1ZXJ5RGVzYy9FU3RhdGUgaXMgdXBkYXRlZCB0byBhY2NvdW50IGZvciB0aGUKICBD Q0koKS4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgIHwgMTIxICsrKysr Ky0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgIHwgIDEyICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgIHwgIDI3ICstLQogc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYyAgICAgICAgICB8IDMxMSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyB8ICAgOSArCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmggICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwu aCAgICAgICAgIHwgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgMjUwIGluc2VydGlvbnMoKyksIDIz OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggODU3MGIxNGY2Mi4uNTlk NTdmOWMxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzkzLDYgKzM5Myw3IEBAIEV4cGxh aW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVsc2UKIAl7CiAJ CVBsYW5uZWRTdG10ICpwbGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwogCQlpbnN0cl90 aW1lCXBsYW5zdGFydCwKIAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2FnZSBidWZ1c2Fn ZV9zdGFydCwKQEAgLTQxNSwxMiArNDE2LDc3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVl cnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdl LCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1ZXJ5RGVzYyA9 IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAorCQkJCQkJCQkJ IHBhcmFtcywgcXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsKKwogCQkvKiBydW4gaXQg KGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQbGFuKHBsYW4s IGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhwbGFpbk9uZVBs YW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJ CQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsK IAl9CiB9CiAKKy8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBm b3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqLworUXVlcnlEZXNjICoKK0V4cGxhaW5RdWVy eURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsCisJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJUXVlcnlEZXNjICAqcXVlcnlE ZXNjOworCURlc3RSZWNlaXZlciAqZGVzdDsKKwlpbnQJCQllZmxhZ3M7CisJaW50CQkJaW5zdHJ1 bWVudF9vcHRpb24gPSAwOworCisJLyoKKwkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVy eSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCisJICogQVMsIHdlJ2Qg YmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCisJICovCisJaWYgKGlu dG8pCisJCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOworCWVsc2UKKwkJ ZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CisKKwlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykK KwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9USU1FUjsKKwllbHNlIGlmIChlcy0+ YW5hbHl6ZSkKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOworCisJaWYg KGVzLT5idWZmZXJzKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7 CisJaWYgKGVzLT53YWwpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOwor CisJLyoKKwkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBl bnN1cmUgdGhpcyBxdWVyeSBzZWVzCisJICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVj dXRlZCBxdWVyaWVzLgorCSAqLworCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hv dCgpKTsKKwlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCisJLyogQ3JlYXRlIGEg UXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo c3RtdCwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRp b24pOworCisJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXpl KQorCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICov CisJZWxzZQorCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2Vu ZXJpYykKKwkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8p CisJCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyogQ2FsbCBFeGVjdXRv clN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCXJldHVybiBxdWVyeURlc2M7Cit9CisKIC8qCiAg KiBFeHBsYWluT25lVXRpbGl0eSAtCiAgKgkgIHByaW50IG91dCB0aGUgZXhlY3V0aW9uIHBsYW4g Zm9yIG9uZSB1dGlsaXR5IHN0YXRlbWVudApAQCAtNTI0LDI5ICs1OTAsMTYgQEAgRXhwbGFpbk9u ZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAgKiB0byBjYWxsIGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitF eHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCSAgIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFy YW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29u c3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1 ZnVzYWdlKQogewotCURlc3RSZWNlaXZlciAqZGVzdDsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7 CiAJaW5zdHJfdGltZQlzdGFydHRpbWU7CiAJZG91YmxlCQl0b3RhbHRpbWUgPSAwOwotCWludAkJ CWVmbGFnczsKLQlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CiAKLQlBc3NlcnQocGxhbm5l ZHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKTsKLQotCWlmIChlcy0+YW5hbHl6ZSAm JiBlcy0+dGltaW5nKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOwot CWVsc2UgaWYgKGVzLT5hbmFseXplKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5U X1JPV1M7Ci0KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RS VU1FTlRfQlVGRkVSUzsKLQlpZiAoZXMtPndhbCkKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5T VFJVTUVOVF9XQUw7CisJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBl ICE9IENNRF9VVElMSVRZKTsKIAogCS8qCiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZv ciB0aGUgZW50aXJlIHN0YXRlbWVudCwgZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTU1NSw0MCAr NjA4LDYgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xh dXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCSAqLwogCUlOU1RSX1RJTUVfU0VUX0NVUlJF TlQoc3RhcnR0aW1lKTsKIAotCS8qCi0JICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVk IGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMgcXVlcnkgc2VlcwotCSAqIHJlc3VsdHMgb2YgYW55 IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4KLQkgKi8KLQlQdXNoQ29waWVkU25hcHNob3Qo R2V0QWN0aXZlU25hcHNob3QoKSk7Ci0JVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsK LQotCS8qCi0JICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBp ZiBleHBsYWluaW5nIENSRUFURSBUQUJMRQotCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFw cHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLgotCSAqLwotCWlmIChpbnRvKQotCQlkZXN0ID0gQ3Jl YXRlSW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKLQllbHNlCi0JCWRlc3QgPSBOb25lX1JlY2Vp dmVyOwotCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAotCQkJCQkJCQlH ZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKLQotCS8qIFNlbGVjdCBleGVjdXRpb24g b3B0aW9ucyAqLwotCWlmIChlcy0+YW5hbHl6ZSkKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVs dCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFH X0VYUExBSU5fT05MWTsKLQlpZiAoZXMtPmdlbmVyaWMpCi0JCWVmbGFncyB8PSBFWEVDX0ZMQUdf RVhQTEFJTl9HRU5FUklDOwotCWlmIChpbnRvKQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFn cyhpbnRvKTsKLQotCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZv ciBleGVjdXRpb24gKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8q IEV4ZWN1dGUgdGhlIHBsYW4gZm9yIHN0YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVz LT5hbmFseXplKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAxOGY3MDMxOWZjLi4xZTlh OThhZDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC02MzksOCArNjM5LDE2IEBAIEV4cGxh aW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFu bmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkK LQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJ LCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1 c2FnZSA6IE5VTEwpKTsKKwkJeworCQkJUXVlcnlEZXNjICpxdWVyeURlc2M7CisKKwkJCXF1ZXJ5 RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0bXQsIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCSBp bnRvLCBlcywgcGFyYW1MSSwgcXVlcnlFbnYpOworCQkJQXNzZXJ0KHF1ZXJ5RGVzYyAhPSBOVUxM KTsKKwkJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywg cGFyYW1MSSwKKwkJCQkJCSAgIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVz LT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQl9CiAJCWVsc2UKIAkJCUV4cGxhaW5P bmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJ CQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggMzM5NzU2ODdiMy4u ZDM2Y2EzNWQzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlf U1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25z ICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQg bmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNo YXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9w cXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9p ZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAKQEAgLTI2NjEsNiArMjY2MSw3IEBA IF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlv bnMgKm9wdGlvbnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAJCQkJU25hcHNob3QJ c25hcDsKKwkJCQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAoQWN0aXZlU25hcHNob3RTZXQoKSkK IAkJCQkJc25hcCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBAIC0yNjc0LDggKzI2NzUsMTcgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9j dXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShx ZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291 bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLworCQkJCWlmIChm aXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21w bGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9U UklHR0VSUzsKKworCQkJCUV4ZWN1dG9yU3RhcnQocWRlc2MsIGVmbGFncyk7CisKKwkJCQlyZXMg PSBfU1BJX3BxdWVyeShxZGVzYywgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisK IAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTAsMTAgKzI4 NjAsOSBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0K IAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmly ZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCB1aW50NjQgdGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uOwotCWludAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlv bikKQEAgLTI4OTcsMTQgKzI5MDYsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAj ZW5kaWYKIAotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdn ZXJzKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdz ICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJv Y2Vzc2VkID0gcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4 IDU1NjVmMjAwYzMuLjcwMTgwOGYzMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgi CisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3Rv cmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNl LmgiCkBAIC0zNSwxMiArMzYsNiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAK LXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCQkJCSBjb25z dCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJCQkJ IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCQkJIERlc3RSZWNlaXZlciAqZGVzdCwK LQkJCQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lkIEZpbGxQb3J0YWxTdG9y ZShQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wTGV2ZWwpOwogc3RhdGljIHVpbnQ2NCBSdW5Gcm9t U3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3Vu dCwKIAkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCk7CkBAIC0xMTYsODYgKzExMSw2IEBAIEZy ZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKIH0KIAogCi0vKgotICogUHJvY2Vzc1F1ZXJ5 Ci0gKgkJRXhlY3V0ZSBhIHNpbmdsZSBwbGFubmFibGUgcXVlcnkgd2l0aGluIGEgUE9SVEFMX01V TFRJX1FVRVJZLAotICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9X SVRIIHBvcnRhbAotICoKLSAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQotICoJ c291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQotICoJcGFyYW1zOiBhbnkg cGFyYW1ldGVycyBuZWVkZWQKLSAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwotICoJcWM6 IHdoZXJlIHRvIHN0b3JlIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEuCi0gKgot ICogcWMgbWF5IGJlIE5VTEwgaWYgY2FsbGVyIGRvZXNuJ3Qgd2FudCBhIHN0YXR1cyBzdHJpbmcu Ci0gKgotICogTXVzdCBiZSBjYWxsZWQgaW4gYSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgYmUg cmVzZXQgb3IgZGVsZXRlZCBvbgotICogZXJyb3I7IG90aGVyd2lzZSB0aGUgZXhlY3V0b3IncyBt ZW1vcnkgdXNhZ2Ugd2lsbCBiZSBsZWFrZWQuCi0gKi8KLXN0YXRpYyB2b2lkCi1Qcm9jZXNzUXVl cnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCSBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJ CSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkgUXVlcnlDb21wbGV0aW9uICpxYykKLXsKLQlRdWVy eURlc2MgICpxdWVyeURlc2M7Ci0KLQkvKgotCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVj dAotCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAot CQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRl c3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwotCi0JLyoKLQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCi0JICovCi0JRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIDApOwotCi0JLyoKLQkgKiBSdW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbi4KLQkg Ki8KLQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVl KTsKLQotCS8qCi0JICogQnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhLCBpZiBj YWxsZXIgd2FudHMgb25lLgotCSAqLwotCWlmIChxYykKLQl7Ci0JCXN3aXRjaCAocXVlcnlEZXNj LT5vcGVyYXRpb24pCi0JCXsKLQkJCWNhc2UgQ01EX1NFTEVDVDoKLQkJCQlTZXRRdWVyeUNvbXBs ZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQp OwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfSU5TRVJUOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlv bihxYywgQ01EVEFHX0lOU0VSVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0J CQkJYnJlYWs7Ci0JCQljYXNlIENNRF9VUERBVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfVVBEQVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQli cmVhazsKLQkJCWNhc2UgQ01EX0RFTEVURToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFr OwotCQkJY2FzZSBDTURfTUVSR0U6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdf TUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJ ZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBxdWVy eURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJfQotCX0KLQotCS8q Ci0JICogTm93LCB3ZSBjbG9zZSBkb3duIGFsbCB0aGUgc2NhbnMgYW5kIGZyZWUgYWxsb2NhdGVk IHJlc291cmNlcy4KLQkgKi8KLQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwotCUV4ZWN1dG9y RW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAg KiBDaG9vc2VQb3J0YWxTdHJhdGVneQogICoJCVNlbGVjdCBwb3J0YWwgZXhlY3V0aW9uIHN0cmF0 ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBzdGF0ZW1lbnQgbGlzdC4KQEAgLTQzNSwxMCArMzUwLDkg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiB7CiAJ UG9ydGFsCQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3du ZXI7Ci0JTWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9s ZENvbnRleHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWlu dAkJCW15ZWZsYWdzID0gMDsKIAogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwogCUFz c2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5FRCk7CkBAIC00NDgsMTUgKzM2Miwx MyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkg Ki8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFsOwogCXNhdmVSZXNvdXJjZU93bmVy ID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRhbENvbnRleHQgPSBQb3J0YWxDb250 ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFsID0gcG9ydGFsOwogCQlpZiAocG9y dGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFsLT5yZXNvd25l cjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFsQ29udGV4dDsKIAotCQlvbGRDb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENvbnRleHQpOworCQlvbGRDb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCQkvKiBN dXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBhbnkgKi8KIAkJcG9ydGFsLT5wb3J0 YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzIsNiArMzg0LDggQEAgUG9ydGFsU3RhcnQoUG9ydGFs IHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3aXRjaCAocG9ydGFsLT5zdHJhdGVn eSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoKKwkJCWNhc2UgUE9SVEFMX09ORV9S RVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJVEg6CiAKIAkJCQkvKiBNdXN0IHNl dCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3IuICovCiAJCQkJaWYgKHNuYXBzaG90 KQpAQCAtNDg5LDggKzQwMyw4IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCSAqLwogCiAJCQkJLyoKLQkJCQkgKiBDcmVhdGUgUXVlcnlEZXNj IGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50LCBzZXQKLQkJCQkgKiB0aGUgZGVz dGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICogQ3JlYXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwt PnF1ZXJ5Q29udGV4dDsgZm9yIHRoZSBtb21lbnQsCisJCQkJICogc2V0IHRoZSBkZXN0aW5hdGlv biB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo bGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCiAJCQkJCQkJCQkJCXBv cnRhbC0+c291cmNlVGV4dCwKQEAgLTUwMSwzMCArNDE1LDQxIEBAIFBvcnRhbFN0YXJ0KFBvcnRh bCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5 RW52LAogCQkJCQkJCQkJCQkwKTsKIAorCQkJCS8qIFJlbWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0 aSgpLiAqLworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfUkVUVVJOSU5H IHx8CisJCQkJCXBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9NT0RfV0lUSCkKKwkJCQkJ cG9ydGFsLT5xZGVzY3MgPSBsaXN0X21ha2UxKHF1ZXJ5RGVzYyk7CisKIAkJCQkvKgogCQkJCSAq IElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwgZXhlY3V0b3IgbmVlZHMgdG8gc3VwcG9ydAog CQkJCSAqIFJFV0lORCBhbmQgYmFja3dhcmRzIHNjYW4sIGFzIHdlbGwgYXMgd2hhdGV2ZXIgdGhl IGNhbGxlcgogCQkJCSAqIG1pZ2h0J3ZlIGFza2VkIGZvci4KIAkJCQkgKi8KLQkJCQlpZiAocG9y dGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9TQ1JPTEwpCisJCQkJaWYgKHBvcnRhbC0+ c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QgJiYKKwkJCQkJKHBvcnRhbC0+Y3Vyc29yT3B0 aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKSkKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3MgfCBFWEVD X0ZMQUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEOwogCQkJCWVsc2UKIAkJCQkJbXllZmxh Z3MgPSBlZmxhZ3M7CiAKLQkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KLQkJCQkgKi8KKwkJCQkvKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAqLwogCQkJCUV4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CiAKIAkJCQkvKgotCQkJCSAqIFRoaXMgdGVsbHMg UG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCisJCQkJICogVGhpcyB0ZWxs cyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IsIHRob3VnaAorCQkJCSAq IG5vdCBuZWVkZWQgZm9yIHF1ZXJpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJ CSAqLwotCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOworCQkJCWlmIChwb3J0YWwt PnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9 IHF1ZXJ5RGVzYzsKIAogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAo Y29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCkKKwkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlw dG9yIChjb21wdXRlZCBieSBFeGVjdXRvclN0YXJ0KSwKKwkJCQkgKiB0aG91Z2ggbWFrZSBpdCBp bmRlcGVuZGVudCBvZiBRdWVyeURlc2MgZm9yIHF1ZXJpZXMgaGFuZGxlZAorCQkJCSAqIGJ5IFBv cnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0JCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNj LT50dXBEZXNjOworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRBTF9PTkVfU0VMRUNU KQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KHF1ZXJ5RGVzYy0+ dHVwRGVzYyk7CisJCQkJZWxzZQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1 cERlc2M7CiAKIAkJCQkvKgogCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJz dGFydCBvZiBxdWVyeSIKQEAgLTUzNiwyOSArNDYxLDYgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBv cnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJ CQlicmVhazsKIAotCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJCWNhc2UgUE9SVEFM X09ORV9NT0RfV0lUSDoKLQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3RhcnQgdGhlIGV4ZWN1 dG9yIHVudGlsIHdlIGFyZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0YWwuICBXZSBkbyBu ZWVkIHRvIHNldCB1cCB0aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0JCQkJewotCQkJCQlQ bGFubmVkU3RtdCAqcHN0bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQcmltYXJ5U3RtdChw b3J0YWwpOwotCQkJCQlwb3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0NsZWFuVHlwZUZyb21U TChwc3RtdC0+cGxhblRyZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJCS8qCi0JCQkJICog UmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgotCQkJCSAqLwot CQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkv KiBhbGxvdyBmZXRjaGVzICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAwOwotCQkJCWJyZWFr OwotCiAJCQljYXNlIFBPUlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBAIC01ODEsNyArNDgz LDY5IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJCWJyZWFrOwogCiAJCQljYXNlIFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJCQkvKiBOZWVkIGRv IG5vdGhpbmcgbm93ICovCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJYm9vbAkJ Zmlyc3QgPSB0cnVlOworCisJCQkJCW15ZWZsYWdzID0gZWZsYWdzOworCQkJCQlmb3JlYWNoKGxj LCBwb3J0YWwtPnN0bXRzKQorCQkJCQl7CisJCQkJCQlQbGFubmVkU3RtdCAqcGxhbiA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCQkJCQlib29sCQlpc191dGlsaXR5ID0gKHBsYW4t PnV0aWxpdHlTdG10ICE9IE5VTEwpOworCisJCQkJCQkvKgorCQkJCQkJICogUHVzaCB0aGUgc25h cHNob3QgdG8gYmUgdXNlZCBieSB0aGUgZXhlY3V0b3IuCisJCQkJCQkgKi8KKwkJCQkJCWlmICgh aXNfdXRpbGl0eSkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIE11c3QgY29weSB0aGUg c25hcHNob3QgZm9yIGFsbCBzdGF0ZW1lbnRzCisJCQkJCQkJICogZXhjZXB0IHRoZWMgZmlyc3Qg YXMgd2UnbGwgbmVlZCB0byB1cGRhdGUgaXRzCisJCQkJCQkJICogY29tbWFuZCBJRC4KKwkJCQkJ CQkgKi8KKwkJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJCQlQdXNoQ29waWVkU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCQkJfQorCisJCQkJCQkvKgor CQkJCQkJICogRnJvbSB0aGUgMm5kIHN0YXRlbWVudCBvbndhcmRzLCB1cGRhdGUgdGhlIGNvbW1h bmQKKwkJCQkJCSAqIElEIGFuZCB0aGUgc25hcHNob3QgdG8gbWF0Y2guCisJCQkJCQkgKi8KKwkJ CQkJCWlmICghZmlyc3QpCisJCQkJCQl7CisJCQkJCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKwkJCQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCQkJCQkJfQorCisJ CQkJCQlmaXJzdCA9IGZhbHNlOworCisJCQkJCQkvKgorCQkJCQkJICogQ3JlYXRlIHRoZSBRdWVy eURlc2MuICBEZXN0UmVjZWl2ZXIgd2lsbCBiZSBzZXQgaW4KKwkJCQkJCSAqIFBvcnRhbFJ1bk11 bHRpKCkgYmVmb3JlIGNhbGxpbmcgRXhlY3V0b3JSdW4oKS4KKwkJCQkJCSAqLworCQkJCQkJcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sCisJCQkJCQkJCQkJCQkJcG9ydGFsLT5zb3Vy Y2VUZXh0LAorCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KKwkJCQkJCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpIDoKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCQkJ CQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQkJcGFy YW1zLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsIDApOworCisJCQkJCQkvKiBSZW1l bWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKSAqLworCQkJCQkJcG9ydGFsLT5xZGVzY3MgPSBsYXBw ZW5kKHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCisJCQkJCQlpZiAoaXNfdXRpbGl0eSkK KwkJCQkJCQljb250aW51ZTsKKworCQkJCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZs YWdzKTsKKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCX0KKwkJCQl9CisKIAkJCQlw b3J0YWwtPnR1cERlc2MgPSBOVUxMOwogCQkJCWJyZWFrOwogCQl9CkBAIC01OTQsNyArNTU4LDYg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCS8q IFJlc3RvcmUgZ2xvYmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJvciAqLwogCQlBY3RpdmVQb3J0 YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNv dXJjZU93bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAKIAkJUEdf UkVfVEhST1coKTsKIAl9CkBAIC02MDQsNyArNTY3LDYgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBv cnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZl UG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9y dGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JU QUxfUkVBRFk7CiB9CkBAIC0xMTkzLDcgKzExNTUsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwg cG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25h cHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2Vs bCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJl bW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIxNCw5ICsxMTc2LDEw IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhl IGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkg KiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0s IHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7 Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlz dF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNj X2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJ LyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0 CkBAIC0xMjMzLDMzICsxMTk2LDI2IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJCVJlc2V0VXNhZ2UoKTsKIAotCQkJLyoKLQkJ CSAqIE11c3QgYWx3YXlzIGhhdmUgYSBzbmFwc2hvdCBmb3IgcGxhbm5hYmxlIHF1ZXJpZXMuICBG aXJzdCB0aW1lCi0JCQkgKiB0aHJvdWdoLCB0YWtlIGEgbmV3IHNuYXBzaG90OyBmb3Igc3Vic2Vx dWVudCBxdWVyaWVzIGluIHRoZQotCQkJICogc2FtZSBwb3J0YWwsIGp1c3QgdXBkYXRlIHRoZSBz bmFwc2hvdCdzIGNvcHkgb2YgdGhlIGNvbW1hbmQKLQkJCSAqIGNvdW50ZXIuCi0JCQkgKi8KKwkJ CS8qIFB1c2ggdGhlIHNuYXBzaG90IGZvciBwbGFubmFibGUgcXVlcmllcy4gKi8KIAkJCWlmICgh YWN0aXZlX3NuYXBzaG90X3NldCkKIAkJCXsKLQkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IEdldFRy YW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IHFkZXNjLT5zbmFw c2hvdDsKIAotCQkJCS8qIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2 ZSBpbiBwb3J0YWwgKi8KKwkJCQkvKgorCQkJCSAqIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBz bmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwKKwkJCQkgKgorCQkJCSAqIE5vdGUgdGhhdCB0aGUg Y29tbWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3QgZm9yIDJuZCBxdWVyeQorCQkJCSAqIG9ud2Fy ZHMgd291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgaW4gUG9ydGFsU3RhcnQoKSB0byBhY2NvdW50CisJ CQkJICogZm9yIENDSSgpIGRvbmUgYmV0d2VlbiBxdWVyaWVzLCBidXQgaXQncyBPSyB0aGF0IGhl cmUgd2UKKwkJCQkgKiBkb24ndCBsaWtld2lzZSB1cGRhdGUgaG9sZFNuYXBzaG90J3MgY29tbWFu ZCBJRC4KKwkJCQkgKi8KIAkJCQlpZiAoc2V0SG9sZFNuYXBzaG90KQogCQkJCXsKIAkJCQkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJCQkJcG9ydGFsLT5ob2xkU25h cHNob3QgPSBzbmFwc2hvdDsKIAkJCQl9CiAKLQkJCQkvKgotCQkJCSAqIFdlIGNhbid0IGhhdmUg dGhlIGhvbGRTbmFwc2hvdCBhbHNvIGJlIHRoZSBhY3RpdmUgb25lLAotCQkJCSAqIGJlY2F1c2Ug VXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQgd291bGQgY29tcGxhaW4uICBTbwotCQkJCSAq IGZvcmNlIGFuIGV4dHJhIHNuYXBzaG90IGNvcHkuICBQbGFpbiBQdXNoQWN0aXZlU25hcHNob3QK LQkJCQkgKiB3b3VsZCBoYXZlIGNvcGllZCB0aGUgdHJhbnNhY3Rpb24gc25hcHNob3QgYW55d2F5 LCBzbyB0aGlzCi0JCQkJICogb25seSBhZGRzIGEgY29weSBzdGVwIHdoZW4gc2V0SG9sZFNuYXBz aG90IGlzIHRydWUuICAoSXQncwotCQkJCSAqIG9rYXkgZm9yIHRoZSBjb21tYW5kIElEIG9mIHRo ZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZQotCQkJCSAqIGZyb20gd2hhdCBob2xkU25hcHNo b3QgaGFzLikKLQkJCQkgKi8KLQkJCQlQdXNoQ29waWVkU25hcHNob3Qoc25hcHNob3QpOworCQkJ CVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAKIAkJCQkvKgogCQkJCSAqIEFzIGZvciBQ T1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzLCBpdCBkb2VzIG5vdCBzZWVtCkBAIC0xMjY4LDI2ICsx MjI0LDM5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAKIAkJCQlhY3RpdmVfc25h cHNob3Rfc2V0ID0gdHJ1ZTsKIAkJCX0KLQkJCWVsc2UKLQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hv dENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24u CisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBjb21t YW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVkLgorCQkJICovCiAJCQlpZiAocHN0 bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5n ICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQs Ci0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52 LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyogc3RtdCBh ZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10 LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFy YW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBhbHRkZXN0LCBOVUxMKTsK KwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJeworCQkJCQljYXNlIENNRF9TRUxF Q1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHFkZXNjLT5l c3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfSU5TRVJU OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJULCBxZGVzYy0+ZXN0 YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX1VQREFURToK KwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcWRlc2MtPmVzdGF0 ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJ CQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHFkZXNjLT5lc3RhdGUt PmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJHRSwgcWRlc2MtPmVzdGF0ZS0+ZXNf cHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJU2V0UXVlcnlD b21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0 cykKQEAgLTEzNDIsMTIgKzEzMTEsMTIgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQogCQkJYnJlYWs7CiAKLQkJLyoKLQkJICogSW5j cmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVuIHF1ZXJpZXMsIGJ1dCBub3QgYWZ0ZXIgdGhl IGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYgKGxuZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRs aXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQlpZiAo cWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOworCQkJRXhlY3V0 b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCX0KIAogCS8qIFBv cCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jCmluZGV4IDA2ZGZhODVmMDQuLjBjYWQ0NTBkY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9w b3J0YWxtZW0uYwpAQCAtMjAxLDYgKzIwMSwxMyBAQCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAJcG9ydGFsLT5wb3J0YWxDb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBvcnRhbENvbnRleHQsCiAJCQkJCQkJCQkJ CQkgICJQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJCQkJCSAgQUxMT0NTRVRfU01BTExfU0laRVMp OworCS8qCisJICogaW5pdGlhbGl6ZSBwb3J0YWwncyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1 ZXJ5RGVzY3MgY3JlYXRlZCBkdXJpbmcKKwkgKiBQb3J0YWxTdGFydCgpIGFuZCB0aGVuIHVzZWQg aW4gUG9ydGFsUnVuKCkuCisJICovCisJcG9ydGFsLT5xdWVyeUNvbnRleHQgPSBBbGxvY1NldENv bnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJCQkJCSAiUG9ydGFsUXVlcnlD b250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CiAKIAkvKiBjcmVh dGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBvcnRhbCAqLwogCXBvcnRhbC0+cmVzb3duZXIg PSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5zYWN0aW9uUmVzb3VyY2VPd25lciwKQEAgLTIy NCw2ICsyMzEsNyBAQCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1 cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3IgbmFtZWQgcG9ydGFscyByZXVzZSBwb3J0YWwt Pm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBvcnRhbC0+cG9ydGFs Q29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOwor CU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBvcnRhbC0+cXVlcnlDb250ZXh0LCBwb3J0YWwt Pm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CiAKIAlyZXR1cm4gcG9ydGFs OwogfQpAQCAtNTk0LDYgKzYwMiw3IEBAIFBvcnRhbERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBp c1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vic2lkaWFyeSBzdG9yYWdlICovCiAJTWVtb3J5 Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCU1lbW9yeUNvbnRleHREZWxl dGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJLyogcmVsZWFzZSBwb3J0YWwgc3RydWN0IChp dCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJcGZyZWUocG9ydGFsKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaAppbmRleCAzZDNlNjMyYTBjLi4wOGVhODUyYjY1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oCkBAIC04OCw3ICs4OCwxMSBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2Rl ICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJu IFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwKKwkJCQkgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7 CitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCQkJ CSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBj aGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJh dGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uYWYwNTllMzBmOCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmgKQEAgLTEzOCw2ICsxMzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVl cnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRl ZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICov CiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20g b25lICovCisJTGlzdAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVlcnlEZXNjcyAqLworCU1l bW9yeUNvbnRleHQgcXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9yIFF1ZXJ5RGVzY3MgYW5kIGNo aWxkcmVuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBh c3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1l bnQgZm9yIHF1ZXJ5ICovCi0tIAoyLjM1LjMKCg== --00000000000060a6b1060200b2c3 Content-Type: application/octet-stream; name="v44-0003-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v44-0003-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkuwi1k33 RnJvbSAxMGM3YmJlOWYxYTQ4OWQwZmNmZWFmMDI3YTdkZjkxOWZlZDQ5MGM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ0 IDMvNl0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8s IGJ1dCBhIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvcgp0aGVtIHRvIGJlIGF2 YWlsYWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcKdGhvc2UgcGFy ZW50L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgoKVGhlIGNv ZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qg b2YKcGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFs cmVhZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2Nh bCB0byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBp dHMgb3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRl ZmluZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGls ZCBqb2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2Yg cGFyZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0 SW5mb3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ug b2YgY2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZv LmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAg fCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggYWY0ODEw OTA1OC4uOGFjMWQzOTA5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCkBAIC0xMjEwLDYgKzEyMTEsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJ ICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5V TEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwg aWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM1MSwxNSArMTM1MywyMyBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZp bmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJ ICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290 LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJw bGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRy ZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM4MCw3ICsxMzkwLDggQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5l cXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjYsNiArMTQzNyw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAq cmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRw cnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgog CSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQg bm9kZSBzcGxpdCBvdXQKQEAgLTE1MTUsMTUgKzE1MjcsMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJ CXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxs cGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgs IHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFw cGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFs bHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUg dXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBl eGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwot CSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNo ZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3Jt IGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5p bmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAq cHJ1bmVxdWFsOwogCkBAIC0xNTM1LDcgKzE1NTUsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJ CQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJ CQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFu czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0NGVmYjFmNGViLi5mOTdi YzA5MTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03ODU1LDggKzc4 NTUsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJCQkJCQkJ CQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFzIGNoaWxk IG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBl ZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJCWNoaWxk X3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9ncm91cGVk X2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDk3ZmE1NjFlNGUuLjg1NGRkN2M4YWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NjYsNiArMTc2Niw4IEBA IHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxp c3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4tPmFwcHJl bGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZv cmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxp ZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRf cHJ1bmVfaW5mbykKIAl7CkBAIC0xODQyLDYgKzE4NDQsOCBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygo UGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgbXBsYW4t PmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJlbGlkcykg bGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIzYjBhNC4u NWJkOGU4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAt NDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0KFJlbGF0 aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZvKTsKIHN0 YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmlidXRlX3Jv d19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisvKgorICog YWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQgc3VicGF0 aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJlbnRyZWwg YW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdhbGxwYXJ0 cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZvICpwcmVs ID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICovCisJaWYg KCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoKKwkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2Ug cmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1vc3QgcGFy dGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwKKwkgKiBh cHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFydGl0aW9u d2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2Fu IHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlh dGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFyZW50X3Jl bGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3ZSBjYW4g c2ltcGx5IHNldCB0aGUgcGFyZW50X3JlbGlkcyB0bworCQkgKiBwcmVsLT5wYXJlbnQtPnJlbGlk cy4gIEJ1dCBmb3IgcGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKKwkJICogY2hpbGQg cmVscywgd2hpbGUgd2UgY2FuIHVzZSBwcmVsLT5wYXJlbnQgdG8gbW92ZSB1cCB0aGUgdHJlZSwK KwkJICogcGFyZW50X3JlbGlkcyBtdXN0IGJlIGZvdW5kIHRoZSBoYXJkIHdheSB0aHJvdWdoIEFw cGVuZEluZm9JbmZvcywKKwkJICogYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBv aW50IHRvIFJURV9KT0lOIGVudHJpZXMsCisJCSAqIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5n IHJlbCdzIHJlbGlkcyBmaWVsZCBpcyBOVUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwo cHJlbCkpCisJCXsKKwkJCXByZWwgPSBwcmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2Ug cmVhY2ggdGhlIHJvb3QgcGFydGl0aW9uZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05F RF9SRUwocHJlbCkpCisJCQkJYnJlYWs7CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBhcmVudF9yZWxpZHMsIHByZWwtPnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlB cHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKwor CQkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZv czsgaSsrKQorCQkJeworCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsK KworCQkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJ CQkJCQkJCQkgICBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5m b3MpOworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRfcmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVs KQorCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdo aWxlIChJU19PVEhFUl9SRUwocHJlbCkpOworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJ cmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRy ZWxpZHMsIHBhcnRyZWxpZHMpOworfQorCisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRk IG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4K KyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZv ciBlYWNoIHRvcG1vc3QgcGFyZW50CisgKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNl dCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdl bGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkK KyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9u cyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2Ug Y2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2Vz dCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5z IHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3Nz aWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFz IHBhcmVudHMgb2YKKyAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1i ZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlu cyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJl bnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRo cycgdGhhdAorICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAg QWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIg dGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGgu ICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCBy ZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24g Zm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRy ZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBw b3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQg dGFibGVzCisgKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNv bnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRp Y3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9v a2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRo ZQorICogUmVsT3B0SW5mb3MuKQorICovCitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMo TGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0 YXJnZXRwYXJ0OworCUxpc3RDZWxsICAgKmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhl IGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgLTEpOworCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29r IGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBs Zmlyc3QobGMpOworCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFy dHJlbGlkcywgLTEpOworCisJCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJ CS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVy YXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJl dHVybiBhbGxwYXJ0cmVsaWRzOworCQl9CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5l dyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxs cGFydHJlbGlkcywgcGFydHJlbGlkcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKaW5kZXggNzE3OWIyMmEwNS4uMjEzNTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJl c3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExp c3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCSAgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVu ZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywzMiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zy b21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhz IGZvciBpdHMgY2hpbGQgcmVscy4KICAqICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRp YWwgcHJ1bmluZyBxdWFscyAoaS5lLiwgcmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUg YXBwbGljYWJsZSB0byB0aGUgYXBwZW5kcmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlu cyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hv c2UgcGFydGl0aW9ucycgUGF0aHMgYXJlIGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1h cHNldCBmb3IgZXZlcnkKKyAqIHBhcnRpdGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRp b25QcnVuZUluZm8gKgogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkg TGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICph bGxwYXJ0cmVsaWRzKQogewogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1h cHNldCAgKmFsbG1hdGNoZWRzdWJwbGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlk czsKIAlMaXN0CSAgICpwcnVuZXJlbGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxs cGFydHJlbGlkcykgPiAwKTsKKwogCS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdo aWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5k IGlkZW50aWZ5IHRoZWlyIHBhcmVudCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QK LQkgKiByZXN0cmljdCB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVs IG9yIGNoaWxkcmVuIG9mCi0JICogcGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJh bnNsYXRlIHBydW5lcXVhbCB0byBtYXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiBy ZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0 IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20g cGFydGl0aW9uLWNoaWxkLXJlbGF0aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJw YXRocycgb2YgdGhlIHNjYW4gcGxhbiBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAi c3VicGxhbiIgcmF0aGVyIHRoYW4gInN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1 dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJh c2VkIGluZGV4ZXMgaGVyZSwgc28KIAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1m aWxsZWQgYXJyYXkgZW50cnkuCiAJICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9z dWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUpOwogCiAJaSA9IDE7CkBAIC0yNTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRo CSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9 IHBhdGgtPnBhcmVudDsKIAotCQkvKiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lu cyBoZXJlICovCi0JCWlmIChwYXRocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1C RVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNl dCAgKnBhcnRyZWxpZHMgPSBOVUxMOwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhl IHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3Rpbmcg cGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVu dHJlbC4gIChOb3JtYWxseSwgYSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQK LQkJCSAqIGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxk IG9mCi0JCQkgKiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUg YW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUg cGFydGl0aW9uZWQgdGFibGUuKQotCQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm87Ci0KLQkJCQlBc3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVs X2FycmF5X3NpemUpOwotCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwt PnJlbGlkXTsKLQkJCQlwcmVsID0gZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRf cmVsaWQpOwotCQkJCWlmICghSVNfUEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJ CS8qIHJlYWNoZWQgYSBub24tcGFydGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRo aXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKHBhcnRyZWxpZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBw YXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVs ICovCi0JCQl9IHdoaWxlIChwcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJf UkVMKTsKLQotCQkJaWYgKHBhcnRyZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBz b21lIHJlbGV2YW50IHBhcmVudCBwYXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJ CSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBu ZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAq LwotCQkJCWFsbHBhcnRyZWxpZHMgPSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFy dHJlbGlkcyk7Ci0JCQkJLyogQWxzbyByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxh bl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJl bGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFu X21hcFtwYXRocmVsLT5yZWxpZF0gPSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMg cGxlYXNlICovCisJCUFzc2VydChyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0g MCk7CisJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9 CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0K IAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlkcwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBwYXJ0aXRpb25lZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0 cmVsaWRzJywgdGhlcmUgaXMgb25lIEJpdG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAot ICogcGFydGl0aW9uZWQgcmVsLiAgRWFjaCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4 ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBhcmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24t bGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAgU2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhl IHJhbmdldGFibGUgbGlzdCkgcGFyZW50IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBS VCBpbmRleGVzIHRoYW4gdGhlaXIgY2hpbGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9w bW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5nIHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFw c2V0LgotICoKLSAqICdwYXJ0cmVsaWRzJyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBh cmVudCBwYXJ0aXRpb25lZCByZWwsIGFuZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGls ZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRlbnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1 YnBhdGggcmVsIHBhc3NlZCB0byBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFy ZSBhZGRlZAotICogdG8gYW4gYXBwcm9wcmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4K LSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxpc3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0gKiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwg cmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mbygpIGlzIGRlYWxpbmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRz IGFyZQotICogbm90IGFsbG93ZWQgdG8gYmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFz c29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5kCi0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lk IGV4cGVuZGluZyBjeWNsZXMgb24gcGFydGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250 cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5k LgotICogKEl0IGlzIHBvc3NpYmxlIGZvciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRp dGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwg cmVsYXRpb25zIHRvIGJlIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4g bGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ugd2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBz ZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3Jl IGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0gKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0 aW9uaW5nIHN0cnVjdHVyZSByZXByZXNlbnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAq Lwotc3RhdGljIExpc3QgKgotYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJp dG1hcHNldCAqcGFydHJlbGlkcykKLXsKLQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAg ICpsYzsKLQotCS8qIFdlIGNhbiBlYXNpbHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdh eTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlB c3NlcnQodGFyZ2V0cGFydCA+IDApOwotCi0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0 IHBhcmVudCAqLwotCWZvcmVhY2gobGMsIGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQg ICpjdXJycGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1 cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1iZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAo dGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBh ZGQgYW55IG5ldyBSVCBpbmRleGVzIHRvIHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhjdXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQls Zmlyc3QobGMpID0gY3VycnBhcnRyZWxpZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJ fQotCX0KLQkvKiBObyBtYXRjaCwgc28gYWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0 byB0aGUgbGlzdCAqLwotCXJldHVybiBsYXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotfQotCiAvKgogICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBh IExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3Rp bmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5k CiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5 bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRh YmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUg bGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBj b3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisK IAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24t cGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253 YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQor CSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBw YXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29y dC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1Zjkx Zjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1 ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5m byAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBk aXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBM aXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0 aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExp c3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTEx MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVu ZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJ CQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJ CQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3Qg UmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRp b25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBy dW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --00000000000060a6b1060200b2c3 Content-Type: application/octet-stream; name="v44-0005-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v44-0005-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkuwi1k11 RnJvbSBhNTFiNzUzYWYxYzM4ZTFhNzc1MGU5ZjA5NzM4ZDMwNGViZDdkZTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ0 IDUvNl0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgRXhlY0luaXROb2RlKCkuCgpUaGlzIGNvbW1pdCByZWFycmFuZ2Vz IHRoaW5ncyB0byBtb3ZlIHRoZSBsb2NraW5nIG9mIGNoaWxkIHRhYmxlcwpyZWZlcmVuY2VkIGlu IGEgY2FjaGVkIHBsYW4gdG8gb2NjdXIgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIHNvIHRoYXQKaW5p dGlhbCBwcnVuaW5nIGluIHRoZSBFeGVjSW5pdE5vZGUoKSBzdWJyb3V0aW5lcyBvZiB0aGUgcGxh biBub2Rlcwp0aGF0IHN1cHBvcnQgcHJ1bmluZyBjYW4gZWxpbWluYXRlIGFueSBjaGlsZCB0YWJs ZXMgdGhhdCBuZWVkIG5vdCBiZQpzY2FubmVkIGFuZCB0aHVzIGxvY2tlZC4KClRvIGRldGVybWlu ZSB0aGF0IGEgZ2l2ZW4gdGFibGUgaXMgYSBjaGlsZCB0YWJsZSwKRXhlY0dldFJhbmdlVGFibGVS ZWxhdGlvbigpIG5vdyBsb29rcyBhdCB0aGUgUlRFJ3MgaW5Gcm9tQ2wgZmllbGQsCndoaWNoIGlz IG9ubHkgdHJ1ZSBmb3IgdGFibGVzIHRoYXQgYXJlIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUK cXVlcnkgYnV0IGZhbHNlIGZvciBjaGlsZCB0YWJsZXMuICBOb3RlIHRoYXQgYW55IHRhYmxlcyB3 aG9zZSBSVEVzJwppbkZyb21DbCBpcyB0cnVlIHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tl ZCBieSBHZXRDYWNoZWRQbGFuKCksCnNvIG5lZWQgbm90IGJlIGxvY2tlZCBhZ2FpbiBkdXJpbmcg ZXhlY3V0aW9uLgoKSWYgdGhlIGxvY2tpbmcgb2YgY2hpbGQgdGFibGVzIGNhdXNlcyB0aGUgQ2Fj aGVkUGxhbiB0byBnbyBzdGFsZSwgdGhhdAppcywgaXRzIGlzX3ZhbGlkIHNldCB0byBmYWxzZSBi eSBQbGFuQ2FjaGVSZWxDYWxsYmFjaygpIHdoZW4gYW4KaW52YWxpZGF0aW9uIG1lc3NhZ2UgbWF0 Y2hpbmcgc29tZSBjaGlsZCB0YWJsZSBjb250YWluZWQgaW4gdGhlIHBsYW4KaXMgcHJvY2Vzc2Vk LCBFeGVjSW5pdE5vZGUoKSBhYmFuZG9ucyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlCnJlbWFp bmluZyBub2RlcyBpbiB0aGUgcGxhbiB0cmVlLiAgSW4gdGhhdCBjYXNlLCBJbml0UGxhbigpIHJl dHVybnMKYWZ0ZXIgc2V0dGluZyBRdWVyeURlc2MucGxhbnN0YXRlIHRvIE5VTEwgdG8gaW5kaWNh dGUgdG8gdGhlIGNhbGxlcgp0aGF0IG5vIGV4ZWN1dGlvbiBpcyBwb3NzaWJsZSB3aXRoIHRoZSBw bGFuIHRyZWUgYXMgaXMuICBBbHNvLApFeGVjdXRvclN0YXJ0KCkgbm93IHJldHVybnMgdHJ1ZSBv ciBmYWxzZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdApRdWVyeURlc2MucGxhbnN0YXRlIHBv aW50cyB0byBhIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBQbGFuU3RhdGUKdHJlZS4gIENhbGwg c2l0ZXMgdGhhdCB1c2UgR2V0Q2FjaGVkUGxhbigpIHRvIGdldCB0aGUgcGxhbiB0cmVlcyB0bwpw YXNzIHRvIHRoZSBleGVjdXRvciBzaG91bGQgbm93IGJlIHByZXBhcmVkIHRvIHJldHJ5IGluIHRo ZSBjYXNlcwp3aGVyZSBFeGVjdXRvclN0YXJ0KCkgcmV0dXJucyBmYWxzZS4KCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3 b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMgICAgICAgICAgIHwgIDEyICstCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgMTIgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 dG8uYyAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0 ZWFzLmMgICAgICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jICAgICAgICAgICAgICAgIHwgIDMzICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmll dy5jICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxj bWRzLmMgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YyAgICAgICAgICAgICAgICB8ICAyMyArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAg ICAgICAgICAgICAgICAgICB8ICAzNyArKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyAgICAgICAgICAgICAgIHwgIDg5ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgIDE0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYyAgICAgICAgICAgfCAgMjAgKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgNjMgKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDIzICsrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEFuZC5jICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEluZGV4c2Nhbi5jICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwT3IuYyAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVD dXN0b20uYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9y ZWlnbnNjYW4uYyAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ci5jICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJN ZXJnZS5jICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAg ICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAg ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jICAg ICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0 LmMgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAg ICAgIHwgIDExICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAg ICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jICAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyAgICAgICAgICAg fCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICAgICAgICAgICB8ICAg MiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgICAgfCAgMjMg KysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgICAgICAgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgICA3ICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jICAgICAgICAgICB8ICAgNCArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgICAgIHwgICA0ICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU29ydC5jICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYyAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGku YyAgICAgICAgICAgICAgICAgICAgfCAgMjYgKystCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jICAgICAgICAgICAgICAgfCAgNDUgKysrKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYyAgICAgICAgICAgICAgICAgICB8ICAxOCArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YyAgICAgICAgICAgICAgICAgICAgIHwgIDQ5ICsrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDIxICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcGxhbmNhY2hlLmMgICAgICAgICAgIHwgMTU2ICsrKysrKystLS0tLS0tLS0tLQogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5j bHVkZS9leGVjdXRvci9leGVjZGVzYy5oICAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgICAgIHwgIDE5ICsrLQogc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRl L3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS90 Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0 aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGls cy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTQgKysKIHNyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVsZXMvZGVsYXlf ZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDY3ICsrKysrKystCiAuLi4vZXhwZWN0ZWQv Y2FjaGVkLXBsYW4tcmVwbGFuLm91dCAgICAgICAgICAgfCAxNTYgKysrKysrKysrKysrKysrKysr CiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgICAgICAgICAgICAgfCAgNjEgKysr KysrKwogNzEgZmlsZXMgY2hhbmdlZCwgOTg0IGluc2VydGlvbnMoKyksIDE4OSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9l eHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMK CmRpZmYgLS1naXQgYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyBiL2NvbnRy aWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCmluZGV4IGMzYWMyN2FlOTkuLmEwNjMwZDc5 NDQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBi L2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jCkBAIC03OCw3ICs3OCw3IEBAIHN0 YXRpYyBFeGVjdXRvclJ1bl9ob29rX3R5cGUgcHJldl9FeGVjdXRvclJ1biA9IE5VTEw7CiBzdGF0 aWMgRXhlY3V0b3JGaW5pc2hfaG9va190eXBlIHByZXZfRXhlY3V0b3JGaW5pc2ggPSBOVUxMOwog c3RhdGljIEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRW5kID0gTlVMTDsKIAot c3RhdGljIHZvaWQgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKTsKK3N0YXRpYyBib29sIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBzdGF0aWMgdm9pZCBleHBsYWluX0V4ZWN1dG9yUnVu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJCQkJCQlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwK IAkJCQkJCQkJdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7CkBAIC0yNTgsOSArMjU4 LDExIEBAIF9QR19pbml0KHZvaWQpCiAvKgogICogRXhlY3V0b3JTdGFydCBob29rOiBzdGFydCB1 cCBsb2dnaW5nIGlmIG5lZWRlZAogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGV4cGxh aW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwli b29sCXBsYW5fdmFsaWQ7CisKIAkvKgogCSAqIEF0IHRoZSBiZWdpbm5pbmcgb2YgZWFjaCB0b3At bGV2ZWwgc3RhdGVtZW50LCBkZWNpZGUgd2hldGhlciB3ZSdsbAogCSAqIHNhbXBsZSB0aGlzIHN0 YXRlbWVudC4gIElmIG5lc3RlZC1zdGF0ZW1lbnQgZXhwbGFpbmluZyBpcyBlbmFibGVkLApAQCAt Mjk2LDkgKzI5OCw5IEBAIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAl9CiAKIAlpZiAocHJldl9FeGVjdXRvclN0YXJ0KQotCQlwcmV2X0V4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gcHJldl9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKIAlpZiAoYXV0b19leHBsYWluX2VuYWJsZWQo KSkKIAl7CkBAIC0zMTYsNiArMzE4LDggQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4 dCk7CiAJCX0KIAl9CisKKwlyZXR1cm4gcGxhbl92YWxpZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJp Yi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNTViOTU3ZDI1 MS4uMTE2MGE3MzI2YSAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBzdGF0aWMgUGxhbm5lZFN0bXQgKnBn c3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAJCQkJCQkJCSBjb25zdCBjaGFyICpxdWVyeV9zdHJp bmcsCiAJCQkJCQkJCSBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8g Ym91bmRQYXJhbXMpOwotc3RhdGljIHZvaWQgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK3N0YXRpYyBib29sIHBnc3NfRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBzdGF0aWMgdm9pZCBwZ3NzX0V4ZWN1 dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJCQkJCSBTY2FuRGlyZWN0aW9uIGRpcmVj dGlvbiwKIAkJCQkJCQkgdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7CkBAIC05NjMs MTMgKzk2MywxNSBAQCBwZ3NzX3BsYW5uZXIoUXVlcnkgKnBhcnNlLAogLyoKICAqIEV4ZWN1dG9y U3RhcnQgaG9vazogc3RhcnQgdXAgdHJhY2tpbmcgaWYgbmVlZGVkCiAgKi8KLXN0YXRpYyB2b2lk CitzdGF0aWMgYm9vbAogcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogeworCWJvb2wJcGxhbl92YWxpZDsKKwogCWlmIChwcmV2X0V4ZWN1dG9yU3Rh cnQpCi0JCXByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFs aWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3Rh bmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCS8qCiAJICogSWYg cXVlcnkgaGFzIHF1ZXJ5SWQgemVybywgZG9uJ3QgdHJhY2sgaXQuICBUaGlzIHByZXZlbnRzIGRv dWJsZQpAQCAtOTkyLDYgKzk5NCw4IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwog CQl9CiAJfQorCisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCmluZGV4IGM1Y2FkYTU1ZmIuLjFlZGQ0YzNmMTcgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNf ZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0yNjU4LDcgKzI2NTgsMTEgQEAgcG9zdGdyZXNCZWdpbkRp cmVjdE1vZGlmeShGb3JlaWduU2NhblN0YXRlICpub2RlLCBpbnQgZWZsYWdzKQogCS8qIEdldCBp bmZvIGFib3V0IGZvcmVpZ24gdGFibGUuICovCiAJcnRpbmRleCA9IG5vZGUtPnJlc3VsdFJlbElu Zm8tPnJpX1JhbmdlVGFibGVJbmRleDsKIAlpZiAoZnNwbGFuLT5zY2FuLnNjYW5yZWxpZCA9PSAw KQorCXsKIAkJZG1zdGF0ZS0+cmVsID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBydGlu ZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0 dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJsZShSZWxhdGlvbkdldFJlbGlkKGRtc3RhdGUt PnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCA5ZTRiMjQzN2E1Li45MTZkNmRjZWQzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTU4LDcgKzU1OCw4IEBAIEJlZ2luQ29weVRvKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAK IAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0 ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0 LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLAorCQkJ CQkJCQkJCQlwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNo b3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxM LCBOVUxMLCAwKTsKQEAgLTU2Nyw4ICs1NjgsMTAgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3Ig ZXhlY3V0aW9uLgogCQkgKgogCQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1 cGRlc2MgZm9yIHVzCisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBw bGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLgogCQkgKi8KLQkJRXhlY3V0b3JTdGFydChjc3RhdGUt PnF1ZXJ5RGVzYywgMCk7CisJCSh2b2lkKSBFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNj LCAwKTsKIAogCQl0dXBEZXNjID0gY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2M7CiAJfQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggZTkxOTIwY2ExNC4uZTVjY2U0YzA3YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jcmVhdGVhcy5jCkBAIC0zMjUsMTIgKzMyNSwxNiBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3Rp dmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJl Y3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVh dGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJ CUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBh cmFtcywgcXVlcnlFbnYsIDApOwogCi0JCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJl IHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIEdl dEludG9SZWxFRmxhZ3MoaW50bykpOworCQkvKgorCQkgKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8g cHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0 aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLgorCQkgKi8KKwkJKHZv aWQpIEV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKIAog CQkvKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihxdWVyeURl c2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpp bmRleCA1OWQ1N2Y5YzEwLi42MTcxYTIwZmUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00 MTYsNyArNDE2LDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9w dGlvbnMsCiAJCQlCdWZmZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdl LCAmYnVmdXNhZ2Vfc3RhcnQpOwogCQl9CiAKLQkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVz YyhwbGFuLCBxdWVyeVN0cmluZywgaW50bywgZXMsCisJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVy eURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAogCQkJCQkJCQkJIHBhcmFt cywgcXVlcnlFbnYpOwogCQlBc3NlcnQocXVlcnlEZXNjKTsKIApAQCAtNDI5LDkgKzQyOSwxMSBA QCBFeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIC8qCiAg KiBFeHBsYWluUXVlcnlEZXNjCiAgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQTEFJTmluZyBh IGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJldHVybnMgTlVMTCBpZiBjcGxhbiBpcyBmb3VuZCB0 byBiZSBubyBsb25nZXIgdmFsaWQuCiAgKi8KIFF1ZXJ5RGVzYyAqCi1FeHBsYWluUXVlcnlEZXNj KFBsYW5uZWRTdG10ICpzdG10LAorRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwg Q2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xh dXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7CkBAIC00NjcsNyArNDY5LDcgQEAgRXhwbGFp blF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1h bmRJZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1 ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbik7CiAKQEAgLTQ4MSw4ICs0ODMsMTggQEAgRXhwbGFp blF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwKIAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdl dEludG9SZWxFRmxhZ3MoaW50byk7CiAKLQkvKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFy ZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBl ZmxhZ3MpOworCS8qCisJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4g Zm9yIGV4ZWN1dGlvbi4gIEEgY2FjaGVkIHBsYW4KKwkgKiBtYXkgZ2V0IGludmFsaWRhdGVkIGR1 cmluZyBwbGFuIGludGlhbGl6YXRpb24uCisJICovCisJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKSkKKwl7CisJCS8qIENsZWFuIHVwLiAqLworCQlFeGVjdXRvckVuZChxdWVy eURlc2MpOworCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CisJCXJldHVybiBOVUxMOworCX0KIAogCXJldHVybiBxdWVyeURlc2M7CiB9CkBAIC00ODg0 LDYgKzQ4OTYsMTcgQEAgRXhwbGFpbkR1bW15R3JvdXAoY29uc3QgY2hhciAqb2JqdHlwZSwgY29u c3QgY2hhciAqbGFiZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCX0KIH0KIAorLyoKKyAqIERp c2NhcmQgb3V0cHV0IGJ1ZmZlciBmb3IgYSBmcmVzaCByZXN0YXJ0LgorICovCit2b2lkCitFeHBs YWluUmVzZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcykKK3sKKwlBc3NlcnQoZXMtPnN0cik7CisJ cmVzZXRTdHJpbmdJbmZvKGVzLT5zdHIpOworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7Cit9CisK IC8qCiAgKiBFbWl0IHRoZSBzdGFydC1vZi1vdXRwdXQgYm9pbGVycGxhdGUuCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYwppbmRleCA0Y2M5OTRjYTMxLi44YTA4NTlhMzU1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYwpAQCAtNzk3LDExICs3OTcsMTMgQEAgZXhlY3V0ZV9zcWxfc3RyaW5n KGNvbnN0IGNoYXIgKnNxbCkKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAogCQkJCXFkZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxM LCBOVUxMLCAwKTsKIAotCQkJCUV4ZWN1dG9yU3RhcnQocWRlc2MsIDApOworCQkJCS8qIE9LIHRv IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLiAqLwor CQkJCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFk ZXNjKTsKIAkJCQlFeGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXgg YWMyZTc0ZmEzZi4uMzg3OTVjZTdjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDEy ICs0MDgsMTYgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwg UXVlcnkgKnF1ZXJ5LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBD cmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2 ZXIgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJ cXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJ CQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3Qs IE5VTEwsIE5VTEwsIDApOwogCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhl IHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwkv KgorCSAqIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRp b24KKwkgKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJl Y29tZSBpbnZhbGlkLgorCSAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7 CiAKIAkvKiBydW4gdGhlIHBsYW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRT Y2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA3 M2VkN2FhMmYwLi41MTIwZjkzNDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9w b3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0x NDIsOSArMTQyLDEwIEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVj bGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAKIAkvKgogCSAqIFN0YXJ0 IGV4ZWN1dGlvbiwgaW5zZXJ0aW5nIHBhcmFtZXRlcnMgaWYgYW55LgorCSAqCisJICogT0sgdG8g aWdub3JlIHRoZSByZXR1cm4gdmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQgaGVyZS4K IAkgKi8KLQlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3Qo KSk7Ci0KKwkodm9pZCkgUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2ZVNu YXBzaG90KCkpOwogCUFzc2VydChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNU KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMWU5YTk4YWQ2ZS4uMTU2YzNjNWZl ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1dGVRdWVy eShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhwc3RhdGUs IGVudHJ5LCBzdG10LT5wYXJhbXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyogQ3JlYXRl IGEgbmV3IHBvcnRhbCB0byBydW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3JlYXRlTmV3 UG9ydGFsKCk7CiAJLyogRG9uJ3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNvcnMsIGl0 IGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwpAQCAtMjUxLDkgKzI1MiwxNSBAQCBFeGVjdXRl UXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwg YXMgYXBwcm9wcmlhdGUuCisJICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuICBJZiB0 aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0CisJICogbXVzdCBiZSByZWNyZWF0 ZWQgaWYgdGhlIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQK KwkgKiB3aGVuIGluaXRpYWxpemluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGlu IGl0LgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRBY3Rp dmVTbmFwc2hvdCgpKTsKKwlpZiAoIVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdz LCBHZXRBY3RpdmVTbmFwc2hvdCgpKSkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7 CisJCWdvdG8gcmVwbGFuOworCX0KIAogCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLCBjb3VudCwg ZmFsc2UsIHRydWUsIGRlc3QsIGRlc3QsIHFjKTsKIApAQCAtNTc0LDcgKzU4MSw3IEBAIEV4cGxh aW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogewogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAljb25zdCBj aGFyICpxdWVyeV9zdHJpbmc7Ci0JQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhbiAqY3Bs YW4gPSBOVUxMOwogCUxpc3QJICAgKnBsYW5fbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwogCVBhcmFt TGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CkBAIC02MTgsNiArNjI1LDcgQEAgRXhwbGFpbkV4ZWN1 dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJfQogCiAJLyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFu c2llbnQgcmVmY291bnQgKi8KK3JlcGxhbjoKIAljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnkt PnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVy eUVudik7CiAKQEAgLTY0Miw5ICs2NTAsMTQgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRl U3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCXsK IAkJCVF1ZXJ5RGVzYyAqcXVlcnlEZXNjOwogCi0JCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlE ZXNjKHBzdG10LCBxdWVyeVN0cmluZywKKwkJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2Mo cHN0bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEks IHF1ZXJ5RW52KTsKLQkJCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7CisJCQlpZiAocXVlcnlE ZXNjID09IE5VTEwpCisJCQl7CisJCQkJRXhwbGFpblJlc2V0T3V0cHV0KGVzKTsKKwkJCQlSZWxl YXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNlT3duZXIpOworCQkJCWdvdG8gcmVw bGFuOworCQkJfQogCQkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlf c3RyaW5nLCBwYXJhbUxJLAogCQkJCQkJICAgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCiAJCQkJ CQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5k ZXggNjdhNWMxNzY5Yi4uNTExMzUyM2JiOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtMjgwLDYgKzI4 MCwzNyBAQCBhcmUgdHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVyIHR1cGxlLiAgUGVy LXR1cGxlIGNvbnRleHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGggRXhwckNvbnRleHRz LCBhbmQgY29tbW9ubHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93bgogRXhwckNvbnRl eHQgdG8gZXZhbHVhdGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVzc2lvbnMgaW4uCiAK K1JlbGF0aW9uIExvY2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKworTm9ybWFsbHksIHRoZSBleGVj dXRvciBkb2VzIG5vdCBsb2NrIG5vbi1pbmRleCByZWxhdGlvbnMgYXBwZWFyaW5nIGluIGEgZ2l2 ZW4KK3BsYW4gdHJlZSB3aGVuIGluaXRpYWxpemluZyBpdCBmb3IgZXhlY3V0aW9uIGlmIHRoZSBw bGFuIHRyZWUgaXMgZnJlc2hseQorY3JlYXRlZCwgdGhhdCBpcywgbm90IGRlcml2ZWQgZnJvbSBh IENhY2hlZFBsYW4uICBUaGUgcmVhc29uIGZvciB0aGF0IGlzIHRoYXQKK3RoZSBsb2NrcyBtdXN0 IGFscmVhZHkgaGF2ZSBiZWVuIHRha2VuIGR1cmluZyBwYXJzaW5nLCByZXdyaXRpbmcsIGFuZCBw bGFubmluZworb2YgdGhlIHF1ZXJ5IGluIHRoYXQgY2FzZS4gIElmIHRoZSBwbGFuIHRyZWUgaXMg YSBjYWNoZWQgb25lLCB0aGVyZSBtYXkgc3RpbGwKK2JlIHVubG9ja2VkIHJlbGF0aW9ucyBwcmVz ZW50IGluIHRoZSBwbGFuIHRyZWUsIGJlY2F1c2UgR2V0Q2FjaGVkUGxhbigpIG9ubHkKK2xvY2tz IHRoZSByZWxhdGlvbnMgdGhhdCB3b3VsZCBiZSBwcmVzZW50IGluIHRoZSBxdWVyeSdzIHJhbmdl IHRhYmxlIGJlZm9yZQorcGxhbm5pbmcgb2NjdXJzLCBidXQgbm90IHJlbGF0aW9ucyB0aGF0IHdv dWxkIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgcmFuZ2UKK3RhYmxlIGR1cmluZyBwbGFubmluZy4g IFRoaXMgbWVhbnMgdGhhdCBpbmhlcml0YW5jZSBjaGlsZCB0YWJsZXMgcHJlc2VudCBpbgorYSBj YWNoZWQgcGxhbiwgd2hpY2ggYXJlIGFkZGVkIHRvIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIGR1 cmluZyBwbGFubmluZywKK3dvdWxkIG5vdCBoYXZlIGJlZW4gbG9ja2VkIHdoZW4gdGhlIHBsYW4g ZW50ZXJzIHRoZSBleGVjdXRvci4KKworR2V0Q2FjaGVkUGxhbigpIHB1bnRzIG9uIGxvY2tpbmcg Y2hpbGQgdGFibGVzIGJlY2F1c2Ugbm90IGFsbCBtYXkgYWN0dWFsbHkgYmUKK3NjYW5uZWQgZHVy aW5nIGEgZ2l2ZW4gZXhlY3V0aW9uIG9mIHRoZSBwbGFuIGlmIHRoZSBjaGlsZCB0YWJsZXMgYXJl IHBhcnRpdGlvbnMKK3doaWNoIG1heSBnZXQgcHJ1bmVkIGF3YXkgZHVlIHRvIGV4ZWN1dGlvbi1p bml0aWFsaXphdGlvbi10aW1lIHBydW5pbmcuICBTbyB0aGUKK2xvY2tpbmcgb2YgY2hpbGQgdGFi bGVzIGlzIG1hZGUgdG8gd2FpdCB0aWxsIGV4ZWN1dGlvbi1pbml0aWFsaXphdGlvbi10aW1lLAor d2hpY2ggb2NjdXJzIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcGxhbiBub2RlcyBjb250 YWluaW5nIHRoZSBjaGlsZAordGFibGVzLgorCitTbywgdGhlcmUncyBhIHRpbWUgd2luZG93IGR1 cmluZyB3aGljaCBhIGNhY2hlZCBwbGFuIHRyZWUgY291bGQgZ28gc3RhbGUKK2lmIGl0IGNvbnRh aW5zIGNoaWxkIHRhYmxlcywgYmVjYXVzZSB0aGV5IGNvdWxkIGdldCBjaGFuZ2VkIGluIG90aGVy IGJhY2tlbmRzCitiZWZvcmUgRXhlY0luaXROb2RlKCkgZ2V0cyBhIGxvY2sgb24gdGhlbS4gIFRo aXMgbWVhbnMgdGhlIGV4ZWN1dG9yIG5vdyBtdXN0CitjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhl IHBsYW4gdHJlZSBldmVyeSB0aW1lIGl0IHRha2VzIGEgbG9jayBvbiBhIGNoaWxkCit0YWJsZSBj b250YWluZWQgaW4gdGhlIHRyZWUgYWZ0ZXIgZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXBydW5p bmcgaGFzIGJlZW4KK3BlcmZvcm1lZC4gIEl0IGRvZXMgdGhhdCBieSBsb29raW5nIGF0IENhY2hl ZFBsYW4uaXNfdmFsaWQgb2YgdGhlIENhY2hlZFBsYW4KK3Bhc3NlZCB0byBpdC4gIElmIHRoZSBw bGFuIHRyZWUgaXMgaW5kZWVkIHN0YWxlIChpc192YWxpZD1mYWxzZSksIHRoZSBleGVjdXRvcgor bXVzdCBnaXZlIHVwIGNvbnRpbnVpbmcgdG8gaW5pdGlhbGl6ZSBpdCBhbnkgZnVydGhlciBhbmQg cmV0dXJuIHRvIHRoZSBjYWxsZXIKK2xldHRpbmcgaXQga25vdyB0aGF0IHRoZSBleGVjdXRpb24g bXVzdCBiZSByZXRyaWVkIHdpdGggYSBuZXcgcGxhbiB0cmVlLgogCiBRdWVyeSBQcm9jZXNzaW5n IENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMxNiw2ICsz NDcsMTIgQEAgVGhpcyBpcyBhIHNrZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkg cHJvY2Vzc2luZzoKIAogCUZyZWVRdWVyeURlc2MKIAorQXMgbWVudGlvbmVkIGluIHRoZSAiUmVs YXRpb24gTG9ja2luZyIgc2VjdGlvbiwgaWYgdGhlIHBsYW4gdHJlZSBpcyBmb3VuZCB0bworYmUg c3RhbGUgZHVyaW5nIG9uZSBvZiB0aGUgcmVjdXJzaXZlIGNhbGxzIG9mIEV4ZWNJbml0Tm9kZSgp IGFmdGVyIHRha2luZyBhCitsb2NrIG9uIGEgY2hpbGQgdGFibGUsIHRoZSBjb250cm9sIGlzIGlt bW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIG9mCitFeGVjdXRvclN0YXJ0KCksIHdo aWNoIG11c3QgcmVkbyB0aGUgc3RlcHMgZnJvbSBDcmVhdGVRdWVyeURlc2Mgd2l0aCBhIG5ldwor cGxhbiB0cmVlLgorCiBQZXIgYWJvdmUgY29tbWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNh bCBmb3IgRXhlY0VuZFBsYW4gdG8gZnJlZSBhbnkKIG1lbW9yeTsgaXQnbGwgYWxsIGdvIGF3YXkg aW4gRnJlZUV4ZWN1dG9yU3RhdGUgYW55d2F5LiAgSG93ZXZlciwgd2UgZG8gbmVlZCB0bwogYmUg Y2FyZWZ1bCB0byBjbG9zZSByZWxhdGlvbnMsIGRyb3AgYnVmZmVyIHBpbnMsIGV0Yywgc28gd2Ug ZG8gbmVlZCB0byBzY2FuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAyMzViYjUyY2NjLi5k Y2ZiZjU4NDk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTc5LDcgKzc5LDcgQEAgRXhl Y3V0b3JFbmRfaG9va190eXBlIEV4ZWN1dG9yRW5kX2hvb2sgPSBOVUxMOwogRXhlY3V0b3JDaGVj a1Blcm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7CiAKIC8qIGRl Y2xzIGZvciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlICovCi1z dGF0aWMgdm9pZCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7Citz dGF0aWMgYm9vbCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBz dGF0aWMgdm9pZCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJvd01hcmtUeXBl IG1hcmtUeXBlKTsKIHN0YXRpYyB2b2lkIEV4ZWNQb3N0cHJvY2Vzc1BsYW4oRVN0YXRlICplc3Rh dGUpOwogc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oRVN0YXRlICplc3RhdGUpOwpAQCAtMTE5LDYg KzExOSwxMyBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3Rh dGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqCiAgKiBlZmxhZ3MgY29udGFpbnMgZmxhZyBiaXRzIGFz IGRlc2NyaWJlZCBpbiBleGVjdXRvci5oLgogICoKKyAqIFBsYW4gaW5pdGlhbGl6YXRpb24gbWF5 IGZhaWwgaWYgdGhlIGlucHV0IHBsYW4gdHJlZSBpcyBmb3VuZCB0byBoYXZlIGJlZW4KKyAqIGlu dmFsaWRhdGVkLCB3aGljaCBjYW4gaGFwcGVuIGlmIGl0IGNvbWVzIGZyb20gYSBDYWNoZWRQbGFu LgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBwbGFuIHdhcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6 ZWQgYW5kIGZhbHNlIG90aGVyd2lzZS4gIElmCisgKiB0aGUgbGF0dGVyLCB0aGUgY2FsbGVyIG11 c3QgY2FsbCBFeGVjdXRvckVuZCgpIG9uICdxdWVyeURlc2MnIHRvIGNsZWFuIHVwCisgKiBhZnRl ciBmYWlsZWQgcGxhbiBpbml0aWFsaXphdGlvbi4KKyAqCiAgKiBOQjogdGhlIEN1cnJlbnRNZW1v cnlDb250ZXh0IHdoZW4gdGhpcyBpcyBjYWxsZWQgd2lsbCBiZWNvbWUgdGhlIHBhcmVudAogICog b2YgdGhlIHBlci1xdWVyeSBjb250ZXh0IHVzZWQgZm9yIHRoaXMgRXhlY3V0b3IgaW52b2NhdGlv bi4KICAqCkBAIC0xMjgsNyArMTM1LDcgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3RhcnQo RVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKgogICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICov Ci12b2lkCitib29sCiBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKQogewogCS8qCkBAIC0xNDAsMTQgKzE0NywxNSBAQCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVz YyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCXBnc3RhdF9yZXBvcnRfcXVlcnlfaWQocXVlcnlE ZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZmFsc2UpOwogCiAJaWYgKEV4ZWN1dG9yU3RhcnRf aG9vaykKLQkJKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7Ci0JZWxz ZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcmV0dXJu ICgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJcmV0dXJuIHN0 YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogfQogCi12b2lkCitib29s CiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogeworCWJvb2wJCXBsYW5fdmFsaWQ7CiAJRVN0YXRlCSAgICplc3RhdGU7CiAJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OwogCkBAIC0yNjMsOSArMjcxLDExIEBAIHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyoKIAkgKiBJbml0aWFs aXplIHRoZSBwbGFuIHN0YXRlIHRyZWUKIAkgKi8KLQlJbml0UGxhbihxdWVyeURlc2MsIGVmbGFn cyk7CisJcGxhbl92YWxpZCA9IEluaXRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC02MjAsNiArNjMwLDE3IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExp c3QgKnJhbmdlVGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJUlRFUGVybWlzc2lvbkluZm8g KnBlcm1pbmZvID0gbGZpcnN0X25vZGUoUlRFUGVybWlzc2lvbkluZm8sIGwpOwogCiAJCUFzc2Vy dChPaWRJc1ZhbGlkKHBlcm1pbmZvLT5yZWxpZCkpOworCisJCS8qCisJCSAqIFJlbGF0aW9ucyB3 aG9zZSBwZXJtaXNzaW9ucyBuZWVkIHRvIGJlIGNoZWNrZWQgbXVzdCBhbHJlYWR5IGhhdmUKKwkJ ICogYmVlbiBsb2NrZWQgYnkgdGhlIHBhcnNlciBvciBieSBHZXRDYWNoZWRQbGFuKCkgaWYgYSBj YWNoZWQgcGxhbiBpcworCQkgKiBiZWluZyBleGVjdXRlZC4KKwkJICoKKwkJICogWFhYIHNob3Vs ZG4ndCB3ZSBza2lwIGNhbGxpbmcgRXhlY0NoZWNrUGVybWlzc2lvbnMgZnJvbSBJbml0UGxhbgor CQkgKiBpbiBhIHBhcmFsbGVsIHdvcmtlcj8KKwkJICovCisJCUFzc2VydChDaGVja1JlbExvY2tl ZEJ5TWUocGVybWluZm8tPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssIHRydWUpIHx8CisJCQkgICBJ c1BhcmFsbGVsV29ya2VyKCkpOwogCQlyZXN1bHQgPSBFeGVjQ2hlY2tPbmVSZWxQZXJtcyhwZXJt aW5mbyk7CiAJCWlmICghcmVzdWx0KQogCQl7CkBAIC04MjksOSArODUwLDEyIEBAIEV4ZWNDaGVj a1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAgKgogICoJCUluaXRpYWxp emVzIHRoZSBxdWVyeSBwbGFuOiBvcGVuIGZpbGVzLCBhbGxvY2F0ZSBzdG9yYWdlCiAgKgkJYW5k IHN0YXJ0IHVwIHRoZSBydWxlIG1hbmFnZXIKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBs YW4gdHJlZSBpcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgZm9yIGV4ZWN1dGlvbiwKKyAqIGZh bHNlIG90aGVyd2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29s CiBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAlDbWRUeXBl CQlvcGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKQEAgLTgzOSw3ICs4NjMsNyBAQCBJ bml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlQbGFuCSAgICpwbGFu ID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVk c3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7Ci0J UGxhblN0YXRlICAqcGxhbnN0YXRlOworCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZSA9IE5VTEw7CiAJ VHVwbGVEZXNjCXR1cFR5cGU7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwpAQCAtODUwLDEw ICs4NzQsMTEgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ RXhlY0NoZWNrUGVybWlzc2lvbnMocmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywg dHJ1ZSk7CiAKIAkvKgotCSAqIGluaXRpYWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3RhdGUK KwkgKiBTZXQgdXAgcmFuZ2UgdGFibGUgaW4gRVN0YXRlLgogCSAqLwogCUV4ZWNJbml0UmFuZ2VU YWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCisJZXN0 YXRlLT5lc19jYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxhbjsKIAllc3RhdGUtPmVzX3BsYW5u ZWRzdG10ID0gcGxhbm5lZHN0bXQ7CiAKIAkvKgpAQCAtODg2LDYgKzkxMSw4IEBAIEluaXRQbGFu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCWNhc2UgUk9XX01BUktfS0VZ U0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVOQ0U6CiAJCQkJCXJlbGF0aW9uID0gRXhl Y0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJjLT5ydGkpOworCQkJCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCQkJZ290byBwbGFuX2luaXRfc3VzcGVuZGVkOwog CQkJCQlicmVhazsKIAkJCQljYXNlIFJPV19NQVJLX0NPUFk6CiAJCQkJCS8qIG5vIHBoeXNpY2Fs IHRhYmxlIGFjY2VzcyBpcyByZXF1aXJlZCAqLwpAQCAtOTUzLDYgKzk4MCwxMSBAQCBJbml0UGxh bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCXNwX2VmbGFncyB8PSBFWEVD X0ZMQUdfUkVXSU5EOwogCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBl c3RhdGUsIHNwX2VmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJ CXsKKwkJCUFzc2VydChzdWJwbGFuc3RhdGUgPT0gTlVMTCk7CisJCQlnb3RvIHBsYW5faW5pdF9z dXNwZW5kZWQ7CisJCX0KIAogCQllc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMgPSBsYXBwZW5kKGVz dGF0ZS0+ZXNfc3VicGxhbnN0YXRlcywKIAkJCQkJCQkJCQkgICBzdWJwbGFuc3RhdGUpOwpAQCAt OTY2LDYgKzk5OCwxMSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFn cykKIAkgKiBwcm9jZXNzaW5nIHR1cGxlcy4KIAkgKi8KIAlwbGFuc3RhdGUgPSBFeGVjSW5pdE5v ZGUocGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJeworCQlBc3NlcnQocGxhbnN0YXRlID09IE5VTEwpOworCQlnb3RvIHBsYW5faW5pdF9z dXNwZW5kZWQ7CisJfQogCiAJLyoKIAkgKiBHZXQgdGhlIHR1cGxlIGRlc2NyaXB0b3IgZGVzY3Jp YmluZyB0aGUgdHlwZSBvZiB0dXBsZXMgdG8gcmV0dXJuLgpAQCAtMTAwOCw3ICsxMDQ1LDE4IEBA IEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCX0KIAogCXF1ZXJ5 RGVzYy0+dHVwRGVzYyA9IHR1cFR5cGU7CisJQXNzZXJ0KHBsYW5zdGF0ZSAhPSBOVUxMKTsKIAlx dWVyeURlc2MtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlyZXR1cm4gdHJ1ZTsKKworcGxhbl9p bml0X3N1c3BlbmRlZDoKKwkvKgorCSAqIFBsYW4gaW5pdGlhbGl6YXRpb24gZmFpbGVkLiAgTWFy ayBRdWVyeURlc2MgYXMgc3VjaC4gIEV4ZWNFbmRQbGFuKCkKKwkgKiB3aWxsIGNsZWFuIHVwIGlu aXRpYWxpemVkIHBsYW4gbm9kZXMgZnJvbSBlc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2Rlcy4KKwkg Ki8KKwlBc3NlcnQocGxhbnN0YXRlID09IE5VTEwpOworCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0g TlVMTDsKKwlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qCkBAIC0xNDI2LDcgKzE0NzQsNyBAQCBFeGVj R2V0QW5jZXN0b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvKQogCiAJCQkvKgogCQkJICogQWxsIGFuY2VzdG9ycyB1cCB0byB0aGUgcm9vdCB0 YXJnZXQgcmVsYXRpb24gbXVzdCBoYXZlIGJlZW4KLQkJCSAqIGxvY2tlZCBieSB0aGUgcGxhbm5l ciBvciBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCQkJICogbG9ja2VkIGJ5IHRoZSBwbGFubmVy IG9yIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucygpLgogCQkJICovCiAJCQlhbmNSZWwg PSB0YWJsZV9vcGVuKGFuY09pZCwgTm9Mb2NrKTsKIAkJCXJJbmZvID0gbWFrZU5vZGUoUmVzdWx0 UmVsSW5mbyk7CkBAIC0yODU2LDcgKzI5MDQsOCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0 ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIENoaWxkIEVQUSBFU3RhdGVzIHNoYXJl IHRoZSBwYXJlbnQncyBjb3B5IG9mIHVuY2hhbmdpbmcgc3RhdGUgc3VjaCBhcwogCSAqIHRoZSBz bmFwc2hvdCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5lZWQg dGhlaXIgb3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0 YWJsZSwgZXNfcGFyYW1fZXhlY192YWxzLAotCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgorCSAq IHJlc3VsdC1yZWwgaW5mbywgZXRjLiAgQWxzbywgd2UgZG9uJ3QgcGFzcyB0aGUgcGFyZW50J3Qg Y29weSBvZiB0aGUKKwkgKiBDYWNoZWRQbGFuLCBiZWNhdXNlIG5vIG5ldyBsb2NrcyB3aWxsIGJl IHRha2VuIGZvciBFdmFsUGxhblF1YWwoKS4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9u ID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50 ZXN0YXRlLT5lc19zbmFwc2hvdDsKQEAgLTI5NDMsNiArMjk5MiwxMiBAQCBFdmFsUGxhblF1YWxT dGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQlQbGFuU3RhdGUgICpz dWJwbGFuc3RhdGU7CiAKIAkJc3VicGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIHJj ZXN0YXRlLCAwKTsKKworCQkvKgorCQkgKiBBdCB0aGlzIHBvaW50LCB3ZSBoYWQgYmV0dGVyIG5v dCByZWNlaXZlZCBhbnkgbmV3IGludmFsaWRhdGlvbgorCQkgKiBtZXNzYWdlcyB0aGF0IHdvdWxk IGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28gc3RhbGUuCisJCSAqLworCQlBc3NlcnQo RXhlY1BsYW5TdGlsbFZhbGlkKHJjZXN0YXRlKSAmJiBzdWJwbGFuc3RhdGUpOwogCQlyY2VzdGF0 ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMs CiAJCQkJCQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0KQEAgLTI5ODYsNiArMzA0MSwxMiBAQCBF dmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAq LwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW5UcmVlLCBy Y2VzdGF0ZSwgMCk7CiAKKwkvKgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIGhhZCBiZXR0ZXIgbm90 IHJlY2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uIG1lc3NhZ2VzCisJICogdGhhdCB3b3VsZCBo YXZlIGNhdXNlZCB0aGUgcGxhbiB0cmVlIHRvIGdvIHN0YWxlLgorCSAqLworCUFzc2VydChFeGVj UGxhblN0aWxsVmFsaWQocmNlc3RhdGUpICYmIGVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlKTsK KwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApAQCAtMzAwOCw2ICsz MDY5LDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29u dGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlm IEV2YWxQbGFuUXVhbEluaXQoKSB3YXNuJ3QgZG9uZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChl cHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVw cXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemU7CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBjYzJiOGNjYWI3Li5iZmEyYThlYzE4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI0OCw4ICsxMjQ4LDE3IEBAIEV4ZWNQ YXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIs CiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElT VElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7 CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAqIENy ZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAgTm90ZSB0aGF0IG5vIENhY2hlZFBsYW4g aXMgYXZhaWxhYmxlCisJICogaGVyZSBldmVuIGlmIHRoZSBsZWFkZXIgbWF5IGhhdmUgZ290dGVu IHRoZSBwbGFuIHRyZWUgZnJvbSBvbmUuICBUaGF0J3MKKwkgKiBmaW5lIHRob3VnaCwgYmVjYXVz ZSB0aGUgbGVhZGVyIHdvdWxkIGhhdmUgdGFrZW4gdGhlIGxvY2tzIG5lY2Vzc2FyeQorCSAqIGZv ciB0aGUgcGxhbiB0cmVlIHRoYXQgd2UgaGF2ZSBoZXJlIHRvIGJlIGZ1bGx5IHZhbGlkLiAgVGhh dCBpcyB0cnVlCisJICogZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIHdpbGwgYmUgdGFraW5nIG91 ciBvd24gY29waWVzIG9mIHRob3NlIGxvY2tzCisJICogaW4gRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbigpLCBiZWNhdXNlIG5vbmUgb2YgdGhlbSB3b3VsZCBiZSB0aGUgbG9ja3MKKwkgKiB0aGF0 IGFyZSBub3QgYWxyZWFkeSB0YWtlbiBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJldHVybiBDcmVh dGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcs CiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkg ICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzAs NyArMTQzOSw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2Mg KnRvYykKIAogCS8qIFN0YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxhbm5l ZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+aml0X2ZsYWdzOwotCUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBmcGVzLT5lZmxhZ3MpOworCS8qIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBw bGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLiAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZnBlcy0+ZWZsYWdzKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRp b24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+ c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMKaW5kZXggZWI4YTg3ZmQ2My4uY2Y3M2QyOGJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywxMyBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAlvbGRjeHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQpOwogCisJLyoKKwkgKiBOb3RlIHRoYXQg d2hpbGUgd2Ugbm9ybWFsbHkgY2hlY2sgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgYWZ0ZXIg ZWFjaAorCSAqIGxvY2sgdGFrZW4gZHVyaW5nIGV4ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwgaXQg aXMgZmluZSBub3QgZG8gc28gZm9yCisJICogcGFydGl0aW9ucyBvcGVuZWQgaGVyZSwgZm9yIHR1 cGxlIHJvdXRpbmcuICBMb2NrcyB0YWtlbiBoZXJlIGNhbid0CisJICogcG9zc2libHkgaW52YWxp ZGF0ZSB0aGUgcGxhbiBnaXZlbiB0aGF0IHRoZSBwbGFuIGRvZXNuJ3QgY29udGFpbiBhbnkKKwkg KiBpbmZvIGFib3V0IHRob3NlIHBhcnRpdGlvbnMuCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29w ZW4ocGFydE9pZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5v ZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xMTExLDYgKzExMTgsOSBAQCBFeGVjSW5pdFBhcnRpdGlv bkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0 YWJsZXMgbmVlZCB0byBiZSBsb2NrZWQgaGVyZS4gIFRoZSByb290CiAJICogcGFydGl0aW9uZWQg dGFibGUgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2VkIGlu CiAJICogdGhlIHF1ZXJ5J3MgcnRhYmxlLgorCSAqCisJICogU2VlIHRoZSBjb21tZW50IGluIEV4 ZWNJbml0UGFydGl0aW9uSW5mbygpIGFib3V0IHRha2luZyBsb2NrcyBhbmQKKwkgKiBub3QgY2hl Y2tpbmcgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgaGVyZS4KIAkgKi8KIAlpZiAocGFydG9p ZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0 YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpAQCAtMTgwMSw2ICsxODExLDgg QEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyog Q3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVz dGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVk LgpAQCAtMTkyNyw2ICsxOTM5LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJh dGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJl bGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25E aXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJ CQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25v ZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCmluZGV4IDY1M2Y3NGNm NTguLjJkY2FjYWZkMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUs MTAgKzEzNSwxNyBAQCBzdGF0aWMgYm9vbCBFeGVjU2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3Rh dGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogICoJCSAgJ2VzdGF0ZScgaXMgdGhlIHNoYXJlZCBl eGVjdXRpb24gc3RhdGUgZm9yIHRoZSBwbGFuIHRyZWUKICAqCQkgICdlZmxhZ3MnIGlzIGEgYml0 d2lzZSBPUiBvZiBmbGFnIGJpdHMgZGVzY3JpYmVkIGluIGV4ZWN1dG9yLmgKICAqCi0gKgkJUmV0 dXJucyBhIFBsYW5TdGF0ZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIFBsYW4gbm9k ZS4KKyAqCQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2 ZW4gUGxhbiBub2RlIG9yIE5VTEwuCiAgKgotICoJCUFzIGEgc2lkZS1lZmZlY3QsIGFsbCBQbGFu U3RhdGUgbm9kZXMgdGhhdCBhcmUgY3JlYXRlZCBhcmUgYXBwZW5kZWQgdG8KLSAqCQllc3RhdGUt PmVzX3BsYW5zdGF0ZV9ub2RlcyBmb3IgdGhlIGNsZWFudXAgcHJvY2Vzc2luZyBpbiBFeGVjRW5k UGxhbigpLgorICoJCU5VTEwgbWF5IGJlIHJldHVybmVkIGVpdGhlciBpZiB0aGUgaW5wdXQgbm9k ZSBpcyBOVUxMIG9yIGlmIHRoZSBwbGFuCisgKgkJdHJlZSB0aGF0IHRoZSBub2RlIGlzIGEgcGFy dCBvZiBpcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbgorICoJCXRha2luZyBh IGxvY2sgb24gdGhlIHJlbGF0aW9uIG1lbnRpb25lZCBpbiB0aGUgbm9kZSBvciBpbiBhIGNoaWxk CisgKgkJbm9kZS4gIFRoZSBsYXR0ZXIgY2FzZSBhcmlzZXMgaWYgdGhlIHBsYW4gdHJlZSBjb250 YWlucyBpbmhlcml0YW5jZS8KKyAqCQlwYXJ0aXRpb24gY2hpbGQgdGFibGVzIGFuZCBpcyBmcm9t IGEgQ2FjaGVkUGxhbi4KKyAqCisgKgkJQXMgYSBzaWRlLWVmZmVjdCwgYWxsIFBsYW5TdGF0ZSBu b2RlcyB0aGF0IGFyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhcmUKKyAqCQlhcHBlbmRlZCB0byBl c3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcyBmb3IgdGhlIGNsZWFudXAgcHJvY2Vzc2luZyBpbgor ICoJCUV4ZWNFbmRQbGFuKCkuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogUGxhblN0YXRlICoK QEAgLTM5MSw2ICszOTgsMTMgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwl7CisJCUFzc2VydChyZXN1bHQgPT0gTlVMTCk7CisJCXJldHVybiBOVUxM OworCX0KKworCUFzc2VydChyZXN1bHQgIT0gTlVMTCk7CiAJRXhlY1NldEV4ZWNQcm9jTm9kZShy ZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2RlKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IGI1NjcxNjUwMDMuLmVlMTIyMzViMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCkBAIC04MDYsNyArODA2LDI1IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRl ICplc3RhdGUsIEluZGV4IHJ0aSkKIAogCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxB VElPTik7CiAKLQkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCWlmIChJc1BhcmFsbGVsV29y a2VyKCkgfHwKKwkJCShlc3RhdGUtPmVzX2NhY2hlZHBsYW4gIT0gTlVMTCAmJiAhcnRlLT5pbkZy b21DbCkpCisJCXsKKwkJCS8qCisJCQkgKiBUYWtlIGEgbG9jayBpZiB3ZSBhcmUgYSBwYXJhbGxl bCB3b3JrZXIgb3IgaWYgdGhpcyBpcyBhIGNoaWxkCisJCQkgKiB0YWJsZSByZWZlcmVuY2VkIGlu IGEgY2FjaGVkIHBsYW4uCisJCQkgKgorCQkJICogUGFyYWxsZWwgd29ya2VycyBuZWVkIHRvIGhh dmUgdGhlaXIgb3duIGxvY2FsIGxvY2sgb24gdGhlCisJCQkgKiByZWxhdGlvbi4gIFRoaXMgZW5z dXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2UgdGhlIHBhcmVudCBwcm9jZXNzCisJCQkgKiBleGl0 cyBiZWZvcmUgd2UgZG8uCisJCQkgKgorCQkJICogV2hlbiBleGVjdXRpbmcgYSBjYWNoZWQgcGxh biwgY2hpbGQgdGFibGVzIG11c3QgYmUgbG9ja2VkCisJCQkgKiBoZXJlLCBiZWNhdXNlIHBsYW5j YWNoZS5jIChHZXRDYWNoZWRQbGFuKCkpIHdvdWxkIG9ubHkgaGF2ZQorCQkJICogbG9ja2VkIHRh YmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LCB0aGF0IGlzLCB0YWJsZXMgd2hvc2UKKwkJCSAq IFJURXMnIGluRnJvbUNsIGlzIHRydWUuCisJCQkgKi8KKwkJCXJlbCA9IHRhYmxlX29wZW4ocnRl LT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwkJZWxzZQogCQl7CiAJCQkvKgogCQkJ ICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUgdGhlIGFwcHJvcHJp YXRlIGxvY2ssCkBAIC04MTksMTUgKzgzNyw2IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24o RVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAkJCUFzc2VydChydGUtPnJlbGxvY2ttb2RlID09 IEFjY2Vzc1NoYXJlTG9jayB8fAogCQkJCSAgIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHJlbCwg cnRlLT5yZWxsb2NrbW9kZSwgZmFsc2UpKTsKIAkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkg KiBJZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIsIHdlIG5lZWQgdG8gb2J0YWluIG91ciBvd24g bG9jYWwKLQkJCSAqIGxvY2sgb24gdGhlIHJlbGF0aW9uLiAgVGhpcyBlbnN1cmVzIHNhbmUgYmVo YXZpb3IgaW4gY2FzZSB0aGUKLQkJCSAqIHBhcmVudCBwcm9jZXNzIGV4aXRzIGJlZm9yZSB3ZSBk by4KLQkJCSAqLwotCQkJcmVsID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxvY2tt b2RlKTsKLQkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVsOwogCX0K QEAgLTgzNSw2ICs4NDQsMzggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVz dGF0ZSwgSW5kZXggcnRpKQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBFeGVjTG9ja0FwcGVu ZE5vbkxlYWZSZWxhdGlvbnMKKyAqCQlMb2NrIG5vbi1sZWFmIHJlbGF0aW9ucyB3aG9zZSBjaGls ZHJlbiBhcmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJQXBwZW5kL01lcmdlQXBwZW5kIG5vZGUK KyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRl LCBMaXN0ICphbGxwYXJ0cmVsaWRzKQoreworCUxpc3RDZWxsICpsOworCisJLyogVGhpcyBzaG91 bGQgZ2V0IGNhbGxlZCBvbmx5IHdoZW4gZXhlY3V0aW5nIGNhY2hlZCBwbGFucy4gKi8KKwlBc3Nl cnQoZXN0YXRlLT5lc19jYWNoZWRwbGFuICE9IE5VTEwpOworCWZvcmVhY2gobCwgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAqcGFydHJlbGlkcyA9IGxmaXJzdF9ub2RlKEJpdG1hcHNl dCwgbCk7CisJCWludAkJaTsKKworCQkvKgorCQkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbG9jayB0 aGUgZmlyc3QgbWVtYmVyIChpPTApIG9mIGVhY2ggYml0bWFwc2V0CisJCSAqIGJlY2F1c2UgaXQg c3RhbmRzIGZvciB0aGUgcm9vdCBwYXJlbnQgbWVudGlvbmVkIGluIHRoZSBxdWVyeSB0aGF0CisJ CSAqIHNob3VsZCBhbHdheXMgaGF2ZSBiZWVuIGxvY2tlZCBiZWZvcmUgZW50ZXJpbmcgdGhlIGV4 ZWN1dG9yLgorCQkgKi8KKwkJaSA9IDA7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihw YXJ0cmVsaWRzLCBpKSkgPiAwKQorCQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0 X2ZldGNoKGksIGVzdGF0ZSk7CisKKwkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUt PnJlbGxvY2ttb2RlKTsKKwkJfQorCX0KK30KKwogLyoKICAqIEV4ZWNJbml0UmVzdWx0UmVsYXRp b24KICAqCQlPcGVuIHJlbGF0aW9uIGdpdmVuIGJ5IHRoZSBwYXNzZWQtaW4gUlQgaW5kZXggYW5k IGZpbGwgaXRzCkBAIC04NTAsNiArODkxLDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3Rh dGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1 bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1bHRSZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJs ZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUp KQorCQlyZXR1cm47CiAJSW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICBy ZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpp bmRleCBmNTU0MjRlYjVhLi40ZGRmNGZkN2E5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpA QCAtODM4LDYgKzgzOCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNR TEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVz LT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9z cWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJ CQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApAQCAt ODYyLDcgKzg2Myw5IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1 bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dF UlM7CiAJCWVsc2UKIAkJCWVmbGFncyA9IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlv biBmbGFncyAqLwotCQlFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKworCQkvKiBPSyB0 byBpZ25vcmUgdGhlIHJldHVybiB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZC4gKi8K KwkJKHZvaWQpIEV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBlZmxhZ3MpOwogCX0KIAogCWVzLT5zdGF0 dXMgPSBGX0VYRUNfUlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFn Zy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IGU5ZDlhYjZiZGQuLjk1 NTNhODUxMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDQsNiArMzMwNCw4IEBAIEV4 ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFn cyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJ b3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRl LCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBO VUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBsZSB0eXBlLgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDkxNDhkN2QzYjEuLjIyMjQzNGE4NGQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQXBwZW5kLmMKQEAgLTEzMyw2ICsxMzMsMjUgQEAgRXhlY0luaXRBcHBlbmQoQXBw ZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNf c3luY2RvbmUgPSBmYWxzZTsKIAlhcHBlbmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAorCS8q CisJICogTG9jayBub24tbGVhZiBwYXJ0aXRpb25zIHdob3NlIGxlYWYgY2hpbGRyZW4gYXJlIHBy ZXNlbnQgaW4KKwkgKiBub2RlLT5hcHBlbmRwbGFucy4gIE9ubHkgbmVlZCB0byBkbyBzbyBpZiBl eGVjdXRpbmcgYSBjYWNoZWQKKwkgKiBwbGFuLCBiZWNhdXNlIGNoaWxkIHRhYmxlcyBwcmVzZW50 IGluIGNhY2hlZCBwbGFucyBhcmUgbm90CisJICogbG9ja2VkIGJlZm9yZSBleGVjdXRpb24uCisJ ICoKKwkgKiBYWFggLSBzb21lIG9mIHRoZSBub24tbGVhZiBwYXJ0aXRpb25zIG1heSBhbHNvIGJl IG1lbnRpb25lZCBpbgorCSAqIHBhcnRfcHJ1bmVfaW5mbywgd2hpY2ggaWYgdGhleSBhcmUgd291 bGQgZ2V0IGxvY2tlZCBhZ2FpbiBpbgorCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZygpIGJl Y2F1c2UgaXQgY2FsbHMKKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgd2hpY2ggbG9j a3MgY2hpbGQgdGFibGVzLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4pCisJewor CQlFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxwYXJ0cmVs aWRzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxM OworCisJfQorCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwg dGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5V TEwpCiAJewpAQCAtMTQ3LDYgKzE2Niw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9k ZS0+YXBwZW5kcGxhbnMpLAogCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbywKIAkJ CQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0g cHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwog CkBAIC0yMjEsNiArMjQyLDggQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCWZpcnN0dmFsaWQgPSBqOwogCiAJCWFwcGVuZHBsYW5z dGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJfQogCiAJ YXBwZW5kc3RhdGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbiA9IGZpcnN0dmFsaWQ7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggMTQ3NTkyZjdlMi4uNTNhZmNlZjIxYyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtODgsOCArODgsOSBAQCBFeGVjSW5p dEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CWZvcmVhY2gobCwgbm9kZS0+Yml0bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICop IGxmaXJzdChsKTsKLQkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9k ZSwgZXN0YXRlLCBlZmxhZ3MpOwotCQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNbaSsrXSA9IEV4 ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggZDU4ZWU0ZjRlMS4uMzg4YTAyZWM5 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTc2MCwx MSArNzYwLDE1IEBAIEV4ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24K IAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5v ZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVz CiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0 aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJ bmRleHNjYW4uYwppbmRleCA4M2VjOWVkZTg5Li45OTAxNTgxMmExIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yMTEsNiArMjExLDcgQEAgQml0bWFw SW5kZXhTY2FuU3RhdGUgKgogRXhlY0luaXRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlCaXRtYXBJbmRleFNjYW5T dGF0ZSAqaW5kZXhzdGF0ZTsKKwlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUxPQ0tNT0RFCWxv Y2ttb2RlOwogCiAJLyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCkBAIC0yNjIsNyAr MjYzLDEzIEBAIEV4ZWNJbml0Qml0bWFwSW5kZXhTY2FuKEJpdG1hcEluZGV4U2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlv bi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVz dGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0gaW5k ZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaW5kZXhSZWxhdGlvbiA9IGluZGV4 X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJeworCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9uLCBsb2NrbW9kZSk7CisJ CXJldHVybiBOVUxMOworCX0KKwlpbmRleHN0YXRlLT5iaXNzX1JlbGF0aW9uRGVzYyA9IGluZGV4 UmVsYXRpb247CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0 ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwppbmRleCA3MzY4NTJhMGFlLi40MjVmMjJl ZTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwpAQCAtODksOCArODksOSBAQCBF eGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9yICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAlmb3JlYWNoKGwsIG5vZGUtPmJpdG1hcHBsYW5zKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxh biAqKSBsZmlyc3QobCk7Ci0JCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5p dE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKLQkJaSsrOworCQliaXRtYXBwbGFuc3RhdGVzW2krK10g PSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0MmM2NWIyOS4uOTEyMzljYzUwMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVjSW5pdEN1c3RvbVNjYW4o Q3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2Fu cmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUs IHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJCXJldHVybiBOVUxMOwogCQljc3MtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IHNjYW5fcmVs OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2Fu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwppbmRleCBlNjYxNmRk NzE4Li43MTQ5NTMxM2RiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9y ZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpA QCAtMTczLDYgKzE3Myw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4oRm9yZWlnblNjYW4gKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJ Y3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBzY2FucmVsaWQs IGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4g TlVMTDsKIAkJc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRp b247CiAJCWZkd3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVsYXRpb24oY3VycmVudFJlbGF0 aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjQsNiArMjY2LDggQEAgRXhlY0luaXRGb3JlaWduU2NhbihG b3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG91dGVy UGxhbihub2RlKSkKIAkJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9CiAJCQlFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIFRlbGwgdGhlIEZEVyB0 byBpbml0aWFsaXplIHRoZSBzY2FuLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IGY3 YTY5ZjE4NWIuLmM1NjUyYWViMmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg5 LDYgKzg5LDkgQEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQ bGFuU3RhdGUoZ2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OworCiAJdHVwRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdhdGhlcnN0 YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhl ck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCBk MzU3ZmYwYzQ3Li4xMTkxYjllNDIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYwpAQCAtMTA4LDYgKzEwOCw4IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2Ug Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91 dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIExlYWRlciBtYXkgYWNjZXNzIEV4ZWNQ cm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4 IDJiYWRjYzdlNjAuLmI0YzMwNDRjMWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0x ODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxh blN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVM TDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYwppbmRleCBlZGQyMzI0Mzg0Li5iMjExOWZlYmI2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoLmMKQEAgLTM4Niw2ICszODYsOCBAQCBFeGVjSW5pdEhhc2goSGFzaCAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAq LwogCW91dGVyUGxhblN0YXRlKGhhc2hzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgb3VyIHJlc3VsdCBzbG90IGFu ZCB0eXBlLiBObyBuZWVkIHRvIGJ1aWxkIHByb2plY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhh c2hqb2luLmMKaW5kZXggODA3OGQ3ZjIyOS4uZDVmZjgwNjYwZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2hqb2luLmMKQEAgLTc1Miw4ICs3NTIsMTIgQEAgRXhlY0luaXRIYXNoSm9pbihIYXNo Sm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaGFzaE5vZGUgPSAoSGFz aCAqKSBpbm5lclBsYW4obm9kZSk7CiAKIAlvdXRlclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0 VHlwZShvdXRlclBsYW5TdGF0ZShoanN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUoaGpzdGF0ZSkg PSBFeGVjSW5pdE5vZGUoKFBsYW4gKikgaGFzaE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpbm5lckRlc2Mg PSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0YXRlKSk7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IDUyYjE0NmNmYjgu Ljc4NTg5NmU1ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0 LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5jcmVtZW50YWxTb3J0KEluY3JlbWVu dGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogbm9kZXMgbWF5 IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgogCSAqLwogCW91dGVyUGxhblN0 YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRl LCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBO VUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDBiNDNhOWI5NjkuLmVhOGJlZjRi OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtNDkwLDYg KzQ5MCw3IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlJbmRleE9ubHlTY2FuU3RhdGUgKmluZGV4c3Rh dGU7CiAJUmVsYXRpb24JY3VycmVudFJlbGF0aW9uOworCVJlbGF0aW9uCWluZGV4UmVsYXRpb247 CiAJTE9DS01PREUJbG9ja21vZGU7CiAJVHVwbGVEZXNjCXR1cERlc2M7CiAKQEAgLTUxMiw2ICs1 MTMsOCBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwog CWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nh bi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBj dXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVM TDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTU2NCw3ICs1NjcsMTMgQEAgRXhlY0luaXRJ bmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVj X3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKLQlp bmRleHN0YXRlLT5pb3NzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwg bG9ja21vZGUpOworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxv Y2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJaW5kZXhf Y2xvc2UoaW5kZXhSZWxhdGlvbiwgbG9ja21vZGUpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJaW5k ZXhzdGF0ZS0+aW9zc19SZWxhdGlvbkRlc2MgPSBpbmRleFJlbGF0aW9uOwogCiAJLyoKIAkgKiBJ bml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJ bmRleHNjYW4uYwppbmRleCA0NTQwYzc3ODFkLi45NTZlOWU1NTQzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC05MDQsNiArOTA0LDcgQEAgRXhlY0luaXRJbmRleFNjYW4o SW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlJbmRleFNj YW5TdGF0ZSAqaW5kZXhzdGF0ZTsKIAlSZWxhdGlvbgljdXJyZW50UmVsYXRpb247CisJUmVsYXRp b24JaW5kZXhSZWxhdGlvbjsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKIAogCS8qCkBAIC05MjUsNiAr OTI2LDggQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVu dFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5y ZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRS ZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBu byBoZWFwIHNjYW4gaGVyZSAqLwpAQCAtOTY5LDcgKzk3MiwxMyBAQCBFeGVjSW5pdEluZGV4U2Nh bihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogT3Bl biB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUt PnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKLQlpbmRleHN0YXRlLT5pc3Nf UmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaW5k ZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlpbmRleF9jbG9zZShpbmRleFJlbGF0 aW9uLCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxMOworCX0KKwlpbmRleHN0YXRlLT5pc3NfUmVs YXRpb25EZXNjID0gaW5kZXhSZWxhdGlvbjsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBpbmRleC1z cGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TGltaXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCmluZGV4IGE3NTA5OWRk NzMuLmExZmMzNmEzZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1p dC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCkBAIC00NzYsNiArNDc2 LDggQEAgRXhlY0luaXRMaW1pdChMaW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRl KGxpbWl0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBpbml0aWFsaXplIGNoaWxkIGV4cHJlc3Npb25zCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2Nr Um93cy5jCmluZGV4IDU1ZGU4ZDNkNjUuLmZmODZhODJiOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMb2NrUm93cy5jCkBAIC0zMjIsNiArMzIyLDggQEAgRXhlY0luaXRMb2NrUm93cyhMb2NrUm93 cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXpl IG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShscnN0YXRlKSA9IEV4ZWNJbml0Tm9k ZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIG5vZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNs b3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8KIAlscnN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0 cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCBlZjA0ZTlhOGU3Li44ZDAy YWMwY2NiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjE0LDYgKzIxNCw4 IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRl KG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xvdC4gTm8gbmVlZCB0byBpbml0aWFsaXpl IHByb2plY3Rpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggNjE1Nzhk NGI1Yy4uYTk5NGQ0OGZiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC05Mzgs NiArOTM4LDggQEAgRXhlY0luaXRNZW1vaXplKE1lbW9pemUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxh blN0YXRlKG1zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkv KgogCSAqIEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gaW5pdGlh bGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK aW5kZXggOGFhNjQ5NDRjOS4uMTRkMDdjMzBlOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKQEAgLTgxLDYgKzgxLDI1IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBz LnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJn ZUFwcGVuZDsKIAorCS8qCisJICogTG9jayBub24tbGVhZiBwYXJ0aXRpb25zIHdob3NlIGxlYWYg Y2hpbGRyZW4gYXJlIHByZXNlbnQgaW4KKwkgKiBub2RlLT5tZXJnZXBsYW5zLiAgT25seSBuZWVk IHRvIGRvIHNvIGlmIGV4ZWN1dGluZyBhIGNhY2hlZAorCSAqIHBsYW4sIGJlY2F1c2UgY2hpbGQg dGFibGVzIHByZXNlbnQgaW4gY2FjaGVkIHBsYW5zIGFyZSBub3QKKwkgKiBsb2NrZWQgYmVmb3Jl IGV4ZWN1dGlvbi4KKwkgKgorCSAqIFhYWCAtIHNvbWUgb2YgdGhlIG5vbi1sZWFmIHBhcnRpdGlv bnMgbWF5IGFsc28gYmUgbWVudGlvbmVkIGluCisJICogcGFydF9wcnVuZV9pbmZvLCB3aGljaCBp ZiB0aGV5IGFyZSB3b3VsZCBnZXQgbG9ja2VkIGFnYWluIGluCisJICogRXhlY0luaXRQYXJ0aXRp b25QcnVuaW5nKCkgYmVjYXVzZSBpdCBjYWxscworCSAqIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRp b24oKSB3aGljaCBsb2NrcyBjaGlsZCB0YWJsZXMuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2Fj aGVkcGxhbikKKwl7CisJCUV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhlc3RhdGUsIG5v ZGUtPmFsbHBhcnRyZWxpZHMpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQkJcmV0dXJuIE5VTEw7CisKKwl9CisKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmlu ZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwogCWlmIChub2RlLT5wYXJ0X3By dW5lX2luZm8gIT0gTlVMTCkKIAl7CkBAIC05NSw2ICsxMTQsOCBAQCBFeGVjSW5pdE1lcmdlQXBw ZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwKIAkJCQkJCQkJCQkJICBub2Rl LT5wYXJ0X3BydW5lX2luZm8sCiAJCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCW1lcmdlc3Rh dGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1i ZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xNTEsNiArMTcyLDggQEAgRXhlY0luaXRNZXJnZUFw cGVuZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCVBs YW4JICAgKmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+bWVyZ2VwbGFucywgaSk7 CiAKIAkJbWVyZ2VwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVy biBOVUxMOwogCX0KIAogCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJbmZvID0gTlVMTDsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA3YjUzMGQ5MDg4Li4wZDkyZWMyNzhhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDkwLDExICsxNDkwLDE1IEBA IEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+c2tpcF9tYXJr X3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShv dXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlw ZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUobWVyZ2VzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJCQkJCQkJCSAg bWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBlZmxhZ3MgOgog CQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCWlubmVyRGVzYyA9IEV4ZWNHZXRS ZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpKTsKIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IGJkYmFhNDc1M2IuLjIyNDVhNjczOTcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0zOTg0LDYgKzM5ODQsOSBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25z KSk7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5V TEw7CisKIAkvKiBzZXQgdXAgZXBxc3RhdGUgd2l0aCBkdW1teSBzdWJwbGFuIGRhdGEgZm9yIHRo ZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFzdGF0ZSwgZXN0 YXRlLCBOVUxMLCBOSUwsCiAJCQkJCSBub2RlLT5lcHFQYXJhbSwgbm9kZS0+cmVzdWx0UmVsYXRp b25zKTsKQEAgLTQwMTEsNiArNDAxNCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlpZiAocmVzdWx0UmVsSW5m byAhPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbykKIAkJewogCQkJRXhlY0luaXRSZXN1bHRS ZWxhdGlvbihlc3RhdGUsIHJlc3VsdFJlbEluZm8sIHJlc3VsdFJlbGF0aW9uKTsKKwkJCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAKIAkJCS8qCiAJ CQkgKiBGb3IgY2hpbGQgcmVzdWx0IHJlbGF0aW9ucywgc3RvcmUgdGhlIHJvb3QgcmVzdWx0IHJl bGF0aW9uCkBAIC00MDM4LDYgKzQwNDMsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRh YmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBOb3cgd2UgbWF5IGlu aXRpYWxpemUgdGhlIHN1YnBsYW4uCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobXRzdGF0ZSkgPSBF eGVjSW5pdE5vZGUoc3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBEbyBhZGRpdGlvbmFs IHBlci1yZXN1bHQtcmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVO ZXN0bG9vcC5jCmluZGV4IDVjZmI1MGEzNjYuLmUyNDU1NGY0ZjggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVOZXN0bG9vcC5jCkBAIC0yOTUsMTEgKzI5NSwxNSBAQCBFeGVjSW5pdE5lc3RMb29wKE5l c3RMb29wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB2YWx1ZXMuCiAJ ICovCiAJb3V0ZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIE5VTEw7CiAJaWYgKG5vZGUtPm5lc3RQYXJhbXMgPT0gTklMKQogCQllZmxhZ3Mg fD0gRVhFQ19GTEFHX1JFV0lORDsKIAllbHNlCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lO RDsKIAlpbm5lclBsYW5TdGF0ZShubHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4obm9k ZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCwgdHlwZSBh bmQgcHJvamVjdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9q ZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCmluZGV4IDRh Mzg4MjIwZWUuLjg2M2JmMmNjNjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQu YwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIEV4ZWNJbml0UHJvamVjdFNldChQcm9qZWN0U2V0ICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVz CiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihu b2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBhZWUzMWM3MTM5Li4z ZjNkZTc3MWQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZl dW5pb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpA QCAtMjQ0LDcgKzI0NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9u ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxk IG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0 ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJaW5uZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVj SW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElmIGhhc2hp bmcsIHByZWNvbXB1dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIgbG9vcCwgYW5kIGNyZWF0 ZSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCBhMTAwYjE0NGJlLi5mMjIwNmFm NDUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDgsNiArMjA4LDggQEAgRXhl Y0luaXRSZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocmVzc3RhdGUp ID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiB3 ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMK aW5kZXggZDdlMjJiMWRiYi4uMjIzNTdlN2EwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Ft cGxlc2Nhbi5jCkBAIC0xMjUsNiArMTI1LDggQEAgRXhlY0luaXRTYW1wbGVTY2FuKFNhbXBsZVNj YW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxh dGlvbihlc3RhdGUsCiAJCQkJCQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CiAJLyogd2Ugd29uJ3Qgc2V0IHVwIHRoZSBIZWFwU2NhbkRlc2MgdGlsbCBsYXRlciAqLwogCXNj YW5zdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2Vxc2Nhbi5jCmluZGV4IDRkYTBmMjhmN2IuLmIwYjM0Y2QxNGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNlcXNjYW4uYwpAQCAtMTUzLDYgKzE1Myw4IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRp b24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3d0eXBlICovCiAJRXhl Y0luaXRTY2FuVHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5zdGF0ZS0+c3MsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jCmluZGV4IGY3ZGI5YTM0MTUuLjM1MzVhYTI5OGMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jCkBAIC01MjgsNiArNTI4LDggQEAgRXhlY0luaXRTZXRPcChTZXRPcCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYgKG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9Q X0hBU0hFRCkKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5EOwogCW91dGVyUGxhblN0YXRl KHNldG9wc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUp KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwppbmRleCAwNzhkMDQxYzQwLi41NDcyMDNl YmZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKQEAgLTI2Myw2ICsyNjMsOCBAQCBFeGVjSW5p dFNvcnQoU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZWZsYWdzICY9 IH4oRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJL KTsKIAogCW91dGVyUGxhblN0YXRlKHNvcnRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0 eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCmluZGV4IGJjNTVhODJm YzMuLjhiNjYyOWM5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJx dWVyeXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMK QEAgLTEyNCw2ICsxMjQsOCBAQCBFeGVjSW5pdFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgc3VicXVlcnkK IAkgKi8KIAlzdWJxdWVyeXN0YXRlLT5zdWJwbGFuID0gRXhlY0luaXROb2RlKG5vZGUtPnN1YnBs YW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUg KG5lZWRlZCBieSBFeGVjQXNzaWduU2NhblByb2plY3Rpb25JbmZvKQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmluZGV4IDIxMjRjNTVlZjUuLjYxM2IzNzdjN2MgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKQEAgLTM4Niw2ICszODYsOCBAQCBF eGVjSW5pdFRpZFJhbmdlU2NhbihUaWRSYW5nZVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVs YXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlk LCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBO VUxMOwogCiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJl bGF0aW9uOwogCXRpZHJhbmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8q IG5vIHRhYmxlIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKaW5kZXgg ODYyYmQwMzMwYi4uMWIwYTJkODA4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVRpZHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCkBA IC01MjksNiArNTI5LDggQEAgRXhlY0luaXRUaWRTY2FuKFRpZFNjYW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAlj dXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4u c2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJ CXJldHVybiBOVUxMOwogCiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJl bnRSZWxhdGlvbjsKIAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsgLyog bm8gaGVhcCBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwppbmRleCA1MGJh YmFjZGM4Li5hZTlhZjhmMjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCkBAIC0xMzYs NiArMTM2LDggQEAgRXhlY0luaXRVbmlxdWUoVW5pcXVlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVy UGxhblN0YXRlKHVuaXF1ZXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5p cXVlIG5vZGVzIGRvIG5vIHByb2plY3Rpb25zLCBzbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCmluZGV4IDY0OGNkYWRjMzIuLjc3ZGUyZDBjMjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV2luZG93QWdnLmMKQEAgLTI0NTgsNiArMjQ1OCw4IEBAIEV4ZWNJbml0V2luZG93QWdnKFdp bmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQ bGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKHdpbnN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3Vy Y2UgdHVwbGUgdHlwZSAod2hpY2ggaXMgYWxzbyB0aGUgdHVwbGUgdHlwZSB0aGF0IHdlJ2xsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jCmluZGV4IGQzNmNhMzVkM2EuLjljNGVkNzQyNDAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCkBA IC0xNTgyLDYgKzE1ODIsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAq bmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCVNuYXBzaG90CXNuYXBzaG90OwogCU1lbW9yeUNvbnRl eHQgb2xkY29udGV4dDsKIAlQb3J0YWwJCXBvcnRhbDsKKwlib29sCQlwbGFuX3ZhbGlkOwogCVNQ SUNhbGxiYWNrQXJnIHNwaWNhbGxiYWNrYXJnOwogCUVycm9yQ29udGV4dENhbGxiYWNrIHNwaWVy cmNvbnRleHQ7CiAKQEAgLTE2MjMsNiArMTYyNCw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5h bChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJX1NQSV9jdXJyZW50LT5wcm9j ZXNzZWQgPSAwOwogCV9TUElfY3VycmVudC0+dHVwdGFibGUgPSBOVUxMOwogCityZXBsYW46CiAJ LyogQ3JlYXRlIHRoZSBwb3J0YWwgKi8KIAlpZiAobmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gPT0g J1wwJykKIAl7CkBAIC0xNzY2LDE1ICsxNzY4LDIzIEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5h bChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJfQogCiAJLyoKLQkgKiBTdGFy dCBwb3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUg cG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQg aWYgdGhlIGNhY2hlZCBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hl bgorCSAqIGluaXRpYWxpemluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0 LgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgMCwgc25hcHNob3QpOworCXBs YW5fdmFsaWQgPSBQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIDAsIHNuYXBzaG90KTsKIAog CUFzc2VydChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRBTF9NVUxUSV9RVUVSWSk7CiAKIAkvKiBQ b3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gc3Bp ZXJyY29udGV4dC5wcmV2aW91czsKIAorCWlmICghcGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERy b3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCS8qIFBvcCB0aGUgU1BJ IHN0YWNrICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsKIApAQCAtMjU1Miw2ICsyNTYyLDcgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBwbGFuIHJl ZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBtdXN0IGJl IGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCityZXBsYW46CiAJCWNwbGFuID0gR2V0 Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJICBwbGFuX293 bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApAQCAtMjY2OSw2ICsyNjgwLDcgQEAgX1NQ SV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAq b3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxhbnNvdXJj ZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJ CQkJCQkJCQkJZGVzdCwKQEAgLTI2ODIsMTAgKzI2OTQsMTYgQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQll bHNlCiAJCQkJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwogCi0JCQkJRXhlY3V0 b3JTdGFydChxZGVzYywgZWZsYWdzKTsKKwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocWRlc2MsIGVm bGFncykpCisJCQkJeworCQkJCQlFeGVjdXRvckVuZChxZGVzYyk7CisJCQkJCUZyZWVRdWVyeURl c2MocWRlc2MpOworCQkJCQlBc3NlcnQoY3BsYW4pOworCQkJCQlSZWxlYXNlQ2FjaGVkUGxhbihj cGxhbiwgcGxhbl9vd25lcik7CisJCQkJCWdvdG8gcmVwbGFuOworCQkJCX0KIAogCQkJCXJlcyA9 IF9TUElfcHF1ZXJ5KHFkZXNjLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKLQog CQkJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCQkJfQogCQkJZWxzZQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s bWdyLmMKaW5kZXggZWU5Yjg5YTY3Mi4uYzgwN2U5Y2RjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1n ci5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNp bmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyoKQEAgLTM2NCw2ICszNjUsNTAgQEAg Q2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2tt b2RlLCBib29sIG9yc3Ryb25nZXIpCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICoJCUNoZWNr UmVsTG9ja2VkQnlNZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBjdXJyZW50IHRyYW5zYWN0aW9u IGhvbGRzIGEgbG9jayBvbiB0aGUgZ2l2ZW4gcmVsYXRpb24gb2YKKyAqIG1vZGUgJ2xvY2ttb2Rl Jy4gIElmICdvcnN0cm9uZ2VyJyBpcyB0cnVlLCBhIHN0cm9uZ2VyIGxvY2ttb2RlIGlzIGFsc28g T0suCisgKiAoIlN0cm9uZ2VyIiBpcyBkZWZpbmVkIGFzICJudW1lcmljYWxseSBoaWdoZXIiLCB3 aGljaCBpcyBhIGJpdAorICogc2VtYW50aWNhbGx5IGR1YmlvdXMgYnV0IGlzIE9LIGZvciB0aGUg cHVycG9zZXMgd2UgdXNlIHRoaXMgZm9yLikKKyAqLworYm9vbAorQ2hlY2tSZWxMb2NrZWRCeU1l KE9pZCByZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKK3sKKwlPaWQJ CQlkYklkID0gZ2V0X3JlbF9yZWxpc3NoYXJlZChyZWxpZCkgPyBJbnZhbGlkT2lkIDogTXlEYXRh YmFzZUlkOworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX1JFTEFUSU9OKHRhZywgZGJJ ZCwgcmVsaWQpOworCisJaWYgKExvY2tIZWxkQnlNZSgmdGFnLCBsb2NrbW9kZSkpCisJCXJldHVy biB0cnVlOworCisJaWYgKG9yc3Ryb25nZXIpCisJeworCQlMT0NLTU9ERQlzbG9ja21vZGU7CisK KwkJZm9yIChzbG9ja21vZGUgPSBsb2NrbW9kZSArIDE7CisJCQkgc2xvY2ttb2RlIDw9IE1heExv Y2tNb2RlOworCQkJIHNsb2NrbW9kZSsrKQorCQl7CisJCQlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcs IHNsb2NrbW9kZSkpCisJCQl7CisjaWZkZWYgTk9UX1VTRUQKKwkJCQkvKiBTb21ldGltZXMgdGhp cyBtaWdodCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyAqLworCQkJCWVsb2coV0FS TklORywgImxvY2sgbW9kZSAlcyBzdWJzdGl0dXRlZCBmb3IgJXMgb24gcmVsYXRpb24gJXMiLAor CQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgc2xvY2ttb2Rl KSwKKwkJCQkJIEdldExvY2ttb2RlTmFtZSh0YWcubG9ja3RhZ19sb2NrbWV0aG9kaWQsIGxvY2tt b2RlKSwKKwkJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSk7CisjZW5kaWYK KwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiBmYWxzZTsKK30KKwog LyoKICAqCQlMb2NrSGFzV2FpdGVyc1JlbGF0aW9uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDM2 Y2M5OWVjOWMuLjg4NzI0YThkNjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMzIsNyArMTIzMiwx MiBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCS8qCiAJ CSAqIFN0YXJ0IHRoZSBwb3J0YWwuICBObyBwYXJhbWV0ZXJzIGhlcmUuCiAJCSAqLwotCQlQb3J0 YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJCXsKKwkJCWJvb2wJ cGxhbl92YWxpZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJCXBsYW5fdmFsaWQgPSBQ b3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJCQlBc3NlcnQo cGxhbl92YWxpZCk7CisJCX0KIAogCQkvKgogCQkgKiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIG91 dHB1dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBkb2luZyBhCkBAIC0xNzM3LDYgKzE3NDIs NyBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCQki Y29tbWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24gYmxvY2siKSwKIAkJCQkg ZXJyZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgogCS8qCiAJICogQ3JlYXRlIHRoZSBwb3J0 YWwuICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2YgYW4gZXhpc3RpbmcgcG9ydGFsIG9ubHkK IAkgKiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3BlY2lmaWVkLgpAQCAtMjAyOCw5ICsyMDM0 LDE1IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJUG9w QWN0aXZlU25hcHNob3QoKTsKIAogCS8qCi0JICogQW5kIHdlJ3JlIHJlYWR5IHRvIHN0YXJ0IHBv cnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0 YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJlY3JlYXRlZCBpZiB0 aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuCisJ ICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJ ICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCk7CisJ aWYgKCFQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgSW52YWxpZFNuYXBzaG90KSkKKwl7 CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KIAogCS8q CiAJICogQXBwbHkgdGhlIHJlc3VsdCBmb3JtYXQgcmVxdWVzdHMgdG8gdGhlIHBvcnRhbC4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCmluZGV4IDcwMTgwOGYzMDMuLjQ4Y2Q2ZjQzMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtNjAs NiArNjAsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAq LwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs CisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJ CQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApA QCAtNzIsNiArNzMsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0 aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+ Y3BsYW4gPSBjcGxhbjsJCQkJLyogQ2FjaGVkUGxhbiwgaWYgcGxhbiBpcyBmcm9tIG9uZSAqLwog CXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFw c2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJ IGNoZWNrIHNuYXBzaG90ICovCkBAIC0zNDEsMTAgKzM0MywxMiBAQCBGZXRjaFN0YXRlbWVudFRh cmdldExpc3QoTm9kZSAqc3RtdCkKICAqIHByZXNlbnRseSBpZ25vcmVkIGZvciBub24tUE9SVEFM X09ORV9TRUxFQ1QgcG9ydGFscyAoaXQncyBvbmx5IGludGVuZGVkCiAgKiB0byBiZSB1c2VkIGZv ciBjdXJzb3JzKS4KICAqCi0gKiBPbiByZXR1cm4sIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQg UG9ydGFsUnVuKCkgY2FsbHMsIGFuZCB0aGUgcmVzdWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlz IGtub3duLgorICogVHJ1ZSBpcyByZXR1cm5lZCBpZiBwb3J0YWwgaXMgcmVhZHkgdG8gYWNjZXB0 IFBvcnRhbFJ1bigpIGNhbGxzLCBhbmQgdGhlCisgKiByZXN1bHQgdHVwZGVzYyAoaWYgYW55KSBp cyBrbm93bi4gIEZhbHNlIGlmIHRoZSBwbGFuIHRyZWUgaXMgbm8gbG9uZ2VyCisgKiB2YWxpZCwg aW4gd2hpY2ggY2FzZSwgdGhlIGNhbGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBu ZXcKKyAqIENhY2hlZFBsYW4uCiAgKi8KLXZvaWQKK2Jvb2wKIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25h cHNob3QpCiB7CkBAIC0zNTMsNiArMzU3LDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJTWVtb3J5Q29udGV4dCBvbGRDb250ZXh0OwogCVF1ZXJ5 RGVzYyAgKnF1ZXJ5RGVzYzsKIAlpbnQJCQlteWVmbGFncyA9IDA7CisJYm9vbAkJcGxhbl92YWxp ZCA9IHRydWU7CiAKIAlBc3NlcnQoUG9ydGFsSXNWYWxpZChwb3J0YWwpKTsKIAlBc3NlcnQocG9y dGFsLT5zdGF0dXMgPT0gUE9SVEFMX0RFRklORUQpOwpAQCAtNDA3LDYgKzQxMiw3IEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCSAqIHNldCB0 aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAor CQkJCQkJCQkJCQlwb3J0YWwtPmNwbGFuLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQs CiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFw c2hvdCwKQEAgLTQzMSw4ICs0MzcsMTkgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFy YW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJZWxzZQogCQkJCQlteWVmbGFncyA9IGVmbGFnczsKIAot CQkJCS8qIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRp b24uICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQkvKgor CQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRp b24uICBBCisJCQkJICogY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZCBkdXJpbmcgcGxh biBpbnRpYWxpemF0aW9uLgorCQkJCSAqLworCQkJCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIG15ZWZsYWdzKSkKKwkJCQl7CisJCQkJCUFzc2VydChxdWVyeURlc2MtPmNwbGFuKTsKKwkJ CQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2Mp OworCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQlwbGFuX3ZhbGlkID0gZmFsc2U7CisJ CQkJCWdvdG8gcGxhbl9pbml0X2ZhaWxlZDsKKwkJCQl9CiAKIAkJCQkvKgogCQkJCSAqIFRoaXMg dGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yLCB0aG91Z2gKQEAg LTUyNSw3ICs1NDIsNyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZv IHBhcmFtcywKIAkJCQkJCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjLiAgRGVzdFJlY2VpdmVyIHdp bGwgYmUgc2V0IGluCiAJCQkJCQkgKiBQb3J0YWxSdW5NdWx0aSgpIGJlZm9yZSBjYWxsaW5nIEV4 ZWN1dG9yUnVuKCkuCiAJCQkJCQkgKi8KLQkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVz YyhwbGFuLAorCQkJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBvcnRhbC0+ Y3BsYW4sCiAJCQkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCQkJCQkJCSFp c191dGlsaXR5ID8KIAkJCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpIDoKQEAgLTU0MSw3 ICs1NTgsMjAgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJh bXMsCiAJCQkJCQlpZiAoaXNfdXRpbGl0eSkKIAkJCQkJCQljb250aW51ZTsKIAotCQkJCQkJRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQkJCS8qCisJCQkJCQkgKiBDYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1dGlv bi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZAorCQkJCQkJICogZHVyaW5nIHBs YW4gaW50aWFsaXphdGlvbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJCQkJeworCQkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CisJCQkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQkJCUV4ZWN1dG9yRW5kKHF1 ZXJ5RGVzYyk7CisJCQkJCQkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCQkJCQkJCXBsYW5f dmFsaWQgPSBmYWxzZTsKKwkJCQkJCQlnb3RvIHBsYW5faW5pdF9mYWlsZWQ7CisJCQkJCQl9CiAJ CQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJCQl9CiAJCQkJfQpAQCAtNTYzLDEyICs1OTMs MTUgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJ fQogCVBHX0VORF9UUlkoKTsKIAorCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOworCitw bGFuX2luaXRfZmFpbGVkOgogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIAog CUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJQ3VycmVudFJlc291cmNlT3duZXIg PSBzYXZlUmVzb3VyY2VPd25lcjsKIAotCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOwor CXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUu YwppbmRleCBmYzZkMjY3ZTQ0Li4yNzI1ZDAyMzEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYwpAQCAtMjA5NSw2ICsyMDk1LDI3IEBAIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJl bGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBnZXRfcmVsX3JlbGlzc2hhcmVkCisg KgorICoJCVJldHVybnMgaWYgdGhlIGdpdmVuIHJlbGF0aW9uIGlzIHNoYXJlZCBvciBub3QKKyAq LworYm9vbAorZ2V0X3JlbF9yZWxpc3NoYXJlZChPaWQgcmVsaWQpCit7CisJSGVhcFR1cGxlCXRw OworCUZvcm1fcGdfY2xhc3MgcmVsdHVwOworCWJvb2wJCXJlc3VsdDsKKworCXRwID0gU2VhcmNo U3lzQ2FjaGUxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxpZCkpOworCWlmICghSGVhcFR1 cGxlSXNWYWxpZCh0cCkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBy ZWxhdGlvbiAldSIsIHJlbGlkKTsKKwlyZWx0dXAgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNU KHRwKTsKKwlyZXN1bHQgPSByZWx0dXAtPnJlbGlzc2hhcmVkOworCVJlbGVhc2VTeXNDYWNoZSh0 cCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKgkJCQktLS0tLS0tLS0tIFRSQU5TRk9STSBD QUNIRSAtLS0tLS0tLS0tCQkJCQkJICovCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMK aW5kZXggZDY3Y2Q5YTQwNS4uYzVhNzYxNmIzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNh Y2hlLmMKQEAgLTEwMiwxMyArMTAyLDEzIEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VHZW5lcmljUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBMaXN0ICpSZXZhbGlkYXRl Q2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJICAgUXVl cnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgQ2hlY2tDYWNoZWRQbGFuKENh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOworc3RhdGljIGJvb2wgR2VuZXJpY1BsYW5Jc1Zh bGlkKENhY2hlZFBsYW4gKmNwbGFuKTsKIHN0YXRpYyBDYWNoZWRQbGFuICpCdWlsZENhY2hlZFBs YW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCQkJCQkJCSAg IFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsK IHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwogc3RhdGljIGRvdWJs ZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVy KTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpOwot c3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFj cXVpcmUpOwogc3RhdGljIHZvaWQgQWNxdWlyZVBsYW5uZXJMb2NrcyhMaXN0ICpzdG10X2xpc3Qs IGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFy c2V0cmVlLCBib29sIGFjcXVpcmUpOwogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUg Km5vZGUsIGJvb2wgKmFjcXVpcmUpOwpAQCAtNzkwLDggKzc5MCwxNSBAQCBSZXZhbGlkYXRlQ2Fj aGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKICAqIENhbGxlciBtdXN0IGhh dmUgYWxyZWFkeSBjYWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlmeSB0aGF0IHRo ZQogICogcXVlcnl0cmVlIGlzIHVwIHRvIGRhdGUuCiAgKgotICogT24gYSAidHJ1ZSIgcmV0dXJu LCB3ZSBoYXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgotICog KFdlIG11c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRp b24tZnJlZS4pCisgKiBJZiB0aGUgcGxhbiBjb250YWlucyBhbnkgY2hpbGQgcmVsYXRpb25zIHRo YXQgd291bGQgaGF2ZSBiZWVuIGFkZGVkIGJ5IHRoZQorICogcGxhbm5lciwgdGhleSB3b3VsZCBu b3QgaGF2ZSBiZWVuIGxvY2tlZCB5ZXQsIGJlY2F1c2UgQWNxdWlyZVBsYW5uZXJMb2NrcygpCisg KiBvbmx5IGxvY2tzIHJlbGF0aW9ucyB0aGF0IHdvdWxkIGJlIHByZXNlbnQgaW4gdGhlIG9yaWdp bmFsIHF1ZXJ5J3MgcmFuZ2UKKyAqIHRhYmxlICh0aGF0IGlzLCBiZWZvcmUgZW50ZXJpbmcgdGhl IHBsYW5uZXIpLiAgU28sIHRoZSBwbGFuIGNvdWxkIGdvIHN0YWxlCisgKiBiZWZvcmUgaXQgcmVh Y2hlcyBleGVjdXRpb24gaWYgYW55IG9mIHRob3NlIGNoaWxkIHJlbGF0aW9ucyBnZXQgbW9kaWZp ZWQKKyAqIGNvbmN1cnJlbnRseS4gIFRoZSBleGVjdXRvciBtdXN0IGNoZWNrIHRoYXQgdGhlIHBs YW4gKENhY2hlZFBsYW4pIGlzIHN0aWxsCisgKiB2YWxpZCBhZnRlciB0YWtpbmcgYSBsb2NrIG9u IGVhY2ggb2YgdGhlIGNoaWxkIHRhYmxlcyBkdXJpbmcgdGhlIHBsYW4KKyAqIGluaXRpYWxpemF0 aW9uIHBoYXNlLCBhbmQgaWYgaXQgaXMgbm90LCBhc2sgdGhlIGNhbGxlciB0byByZWNyZWF0ZSB0 aGUKKyAqIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNSw2MCArODEyLDU2IEBAIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikKIAkJcmV0dXJuIGZh bHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOwotCS8qIEdl bmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFuLT5pc19vbmVz aG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4gdHJ1ZTsKIAog CS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBjYW4ndCB1 c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5rIGl0IGZyb20g dGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQgJiYg cGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdldFVzZXJJZCgp KQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291 cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBsb2NrcyBhbmQg cmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4gUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQp CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlkCisgKgkJSXMg YSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUgZ29uZSBzdGFs ZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxhdGlvbnMKKyAq IG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGluZ3MgbWVudGlv bmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBs YW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQoY3BsYW4tPm1h Z2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9u ZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAoY3BsYW4tPmlz X3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVmY291bnQg YmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQg dG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlBc3NlcnQocGxh bi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xp c3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJLyoKLQkJICog SWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhh cwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAqIElmIHBsYW4g aXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgogCQkgKi8KLQkJ aWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChwbGFuLT5zYXZl ZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRfeG1pbiwgVHJh bnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlmIChjcGxhbi0+ ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkKKwkJCWNw bGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYgYW55IGludmFs aWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBmdW5jdGlvbnMg d2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFuIHdhcyB0cmFu c2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAqIGFkdmFuY2Vk LCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192YWxpZCkK LQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5 LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhh cHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2Nr cyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNw bGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3BsYW4tPnNhdmVk X3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKIAl9 CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9t IHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVyaWNQbGFuKHBs YW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7CiB9 CiAKIC8qCkBAIC0xMTI4LDggKzExMzEsMTYgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFu ICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxhbiBm b3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICogd2hp Y2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQg d2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24uCisgKiBPbiBy ZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIHVubGVzcyBpdCBjb250YWlucyBpbmhlcml0YW5jZS9w YXJ0aXRpb24gY2hpbGQKKyAqIHRhYmxlcywgYmVjYXVzZSB0aGV5IHdpbGwgbm90IGhhdmUgYmVl biBsb2NrZWQgYXMgaGVyZSB3ZSBvbmx5IGxvY2sgdGhlCisgKiB0YWJsZXMgbWVudGlvbmVkIGlu IHRoZSBvcmlnaW5hbCBxdWVyeS4gIEluaGVyaXRhbmNlL3BhcnRpdGlvbiBjaGlsZCB0YWJsZXMK KyAqIGFyZSBsb2NrZWQgYnkgdGhlIGV4ZWN1dG9yIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBwbGFu IHRyZWUgYW5kIGlmIHRoZSBwbGFuCisgKiBnZXRzIGludmFsaWRhdGVkIGFzIGEgcmVzdWx0IG9m IHRha2luZyB0aG9zZSBsb2NrcywgdGhlIGV4ZWN1dG9yIG11c3QgYXNrCisgKiB0aGUgY2FsbGVy IHRvIGdldCBhIG5ldyBwbGFuIGJ5IGNhbGxpbmcgaGVyZSBhZ2Fpbi4gIExvY2tpbmcgb2YgdGhl IGNoaWxkCisgKiB0YWJsZXMgaXMgZGVmZXJyZWQgdG8gdGhlIGV4ZWN1dG9yIGluIHRoaXMgbWFu bmVyLCBiZWNhdXNlIG5vdCBhbGwgY2hpbGQKKyAqIHRhYmxlcyBtYXkgbmVlZCB0byBiZSBsb2Nr ZWQgYXMgc29tZSBtYXkgZ2V0IHBydW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yCisgKiBwbGFuIGlu aXRpYWxpemF0aW9uIHdoaWNoIHBlcmZvcm1zIGluaXRpYWwgcHJ1aW5nIG9uIGFueSBub2RlcyB0 aGF0CisgKiBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgogICoKICAqIE9uIHJldHVybiwgdGhl IHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVudGVkOyBhIGxhdGVyCiAgKiBS ZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJZiAib3duZXIiIGlzIG5vdCBO VUxMIHRoZW4KQEAgLTExNjQsNyArMTE3NSwxMCBAQCBHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsCiAJewogCQlpZiAo Q2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UpKQogCQl7Ci0JCQkvKiBXZSB3YW50IGEgZ2VuZXJp YyBwbGFuLCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgdmFsaWQgb25lICovCisJCQkvKgorCQkJICog V2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIHZhbGlkIG9uZSwg dGhvdWdoCisJCQkgKiBzZWUgdGhlIGhlYWRlciBjb21tZW50LgorCQkJICovCiAJCQlwbGFuID0g cGxhbnNvdXJjZS0+Z3BsYW47CiAJCQlBc3NlcnQocGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9N QUdJQyk7CiAJCX0KQEAgLTEzNjIsOCArMTM3Niw4IEBAIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVW YWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJfQogCiAJLyoKLQkg KiBSZWplY3QgaWYgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mgd291bGQgaGF2ZSBhbnl0aGluZyB0byBk by4gIFRoaXMgaXMKLQkgKiBwcm9iYWJseSB1bm5lY2Vzc2FyeSBnaXZlbiB0aGUgcHJldmlvdXMg Y2hlY2ssIGJ1dCBsZXQncyBiZSBzYWZlLgorCSAqIFJlamVjdCBpZiB0aGUgZXhlY3V0b3Igd291 bGQgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgbG9ja3MsIHRoYXQgaXMsIGluCisJICogYWRkaXRp b24gdG8gdGhvc2UgdGFrZW4gYnkgQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9uIGEgZ2l2ZW4gcXVl cnkuCiAJICovCiAJZm9yZWFjaChsYywgcGxhbi0+c3RtdF9saXN0KQogCXsKQEAgLTE3MzksNTgg KzE3NTMsNiBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIAlyZXR1cm4g TlVMTDsKIH0KIAotLyoKLSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5l ZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0g aWYgYWNxdWlyZSBpcyBmYWxzZS4KLSAqLwotc3RhdGljIHZvaWQKLUFjcXVpcmVFeGVjdXRvckxv Y2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQotewotCUxpc3RDZWxsICAgKmxjMTsK LQotCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCi0JewotCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOwot Ci0JCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCi0JCXsKLQkJ CS8qCi0JCQkgKiBJZ25vcmUgdXRpbGl0eSBzdGF0ZW1lbnRzLCBleGNlcHQgdGhvc2UgKHN1Y2gg YXMgRVhQTEFJTikgdGhhdAotCQkJICogY29udGFpbiBhIHBhcnNlZC1idXQtbm90LXBsYW5uZWQg cXVlcnkuICBOb3RlOiBpdCdzIG9rYXkgdG8gdXNlCi0JCQkgKiBTY2FuUXVlcnlGb3JMb2Nrcywg ZXZlbiB0aG91Z2ggdGhlIHF1ZXJ5IGhhc24ndCBiZWVuIHRocm91Z2gKLQkJCSAqIHJ1bGUgcmV3 cml0aW5nLCBiZWNhdXNlIHJld3JpdGluZyBkb2Vzbid0IGNoYW5nZSB0aGUgcXVlcnkKLQkJCSAq IHJlcHJlc2VudGF0aW9uLgotCQkJICovCi0JCQlRdWVyeQkgICAqcXVlcnkgPSBVdGlsaXR5Q29u dGFpbnNRdWVyeShwbGFubmVkc3RtdC0+dXRpbGl0eVN0bXQpOwotCi0JCQlpZiAocXVlcnkpCi0J CQkJU2NhblF1ZXJ5Rm9yTG9ja3MocXVlcnksIGFjcXVpcmUpOwotCQkJY29udGludWU7Ci0JCX0K LQotCQlmb3JlYWNoKGxjMiwgcGxhbm5lZHN0bXQtPnJ0YWJsZSkKLQkJewotCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gKFJhbmdlVGJsRW50cnkgKikgbGZpcnN0KGxjMik7Ci0KLQkJCWlmICghKHJ0 ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKLQkJCQkgIChydGUtPnJ0ZWtpbmQgPT0gUlRF X1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKSkKLQkJCQljb250aW51ZTsKLQot CQkJLyoKLQkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNo IHJlbGF0aW9uIE9JRC4gTm90ZQotCQkJICogdGhhdCB3ZSBkb24ndCBhY3R1YWxseSB0cnkgdG8g b3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKLQkJCSAqIGZhaWwgaWYgaXQncyBiZWVu IGRyb3BwZWQgZW50aXJlbHkgLS0tIHdlJ2xsIGp1c3QgdHJhbnNpZW50bHkKLQkJCSAqIGFjcXVp cmUgYSBub24tY29uZmxpY3RpbmcgbG9jay4KLQkJCSAqLwotCQkJaWYgKGFjcXVpcmUpCi0JCQkJ TG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQkJZWxzZQot CQkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOwotCQl9 Ci0JfQotfQotCiAvKgogICogQWNxdWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVk ZWQgZm9yIHBsYW5uaW5nIG9mIGEgcXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0g aWYgYWNxdWlyZSBpcyBmYWxzZS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCAwOGVhODUyYjY1 Li4zOTJhYmI1MTUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgK KysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC04OCw3ICs4OCw3IEBAIGV4 dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNl ICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRlICplcywgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYpOwogCi1leHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10 ICpzdG10LAorZXh0ZXJuIFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAq c3RtdCwgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCQkgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4dGVybiB2b2lkIEV4 cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMTA4LDYgKzEwOCw3IEBAIGV4 dGVybiB2b2lkIEV4cGxhaW5RdWVyeVBhcmFtZXRlcnMoRXhwbGFpblN0YXRlICplcywgUGFyYW1M aXN0SW5mbyBwYXJhbXMsIGludCBtCiAKIGV4dGVybiB2b2lkIEV4cGxhaW5CZWdpbk91dHB1dChF eHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5FbmRPdXRwdXQoRXhwbGFpblN0 YXRlICplcyk7CitleHRlcm4gdm9pZCBFeHBsYWluUmVzZXRPdXRwdXQoRXhwbGFpblN0YXRlICpl cyk7CiBleHRlcm4gdm9pZCBFeHBsYWluU2VwYXJhdGVQbGFucyhFeHBsYWluU3RhdGUgKmVzKTsK IAogZXh0ZXJuIHZvaWQgRXhwbGFpblByb3BlcnR5TGlzdChjb25zdCBjaGFyICpxbGFiZWwsIExp c3QgKmRhdGEsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAppbmRleCBhZjJiZjM2ZGZiLi40YjczNjhh MGRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKQEAgLTMyLDkgKzMyLDEyIEBACiAgKi8KIHR5 cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogeworCU5vZGVUYWcJCXR5cGU7CisKIAkvKiBUaGVzZSBm aWVsZHMgYXJlIHByb3ZpZGVkIGJ5IENyZWF0ZVF1ZXJ5RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJh dGlvbjsJCS8qIENNRF9TRUxFQ1QsIENNRF9VUERBVEUsIGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQ7CS8qIHBsYW5uZXIncyBvdXRwdXQgKGNvdWxkIGJlIHV0aWxpdHksIHRvbykg Ki8KKwlzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW47CS8qIENhY2hlZFBsYW4sIGlmIHBsYW5uZWRz dG10IGlzIGZyb20gb25lICovCiAJY29uc3QgY2hhciAqc291cmNlVGV4dDsJCS8qIHNvdXJjZSB0 ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNuYXBzaG90OwkJLyogc25hcHNob3QgdG8g dXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3NzY2hlY2tfc25hcHNob3Q7CS8qIGNyb3Nz Y2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAgLTU3LDYgKzYwLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5jICovCiBleHRlcm4gUXVlcnlEZXNjICpD cmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIHN0cnVj dCBDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAog CQkJCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkgIFNuYXBzaG90IGNyb3NzY2hl Y2tfc25hcHNob3QsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBjNjc3ZTQ5MGQ3Li5lZGYy ZjEzZDA0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNs dWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIK ICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5o IgogCiAKIC8qCkBAIC03Miw3ICs3Myw3IEBACiAKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBn ZXQgY29udHJvbCBpbiBFeGVjdXRvclN0YXJ0KCkgKi8KLXR5cGVkZWYgdm9pZCAoKkV4ZWN1dG9y U3RhcnRfaG9va190eXBlKSAoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwordHlw ZWRlZiBib29sICgqRXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncyk7CiBleHRlcm4gUEdETExJTVBPUlQgRXhlY3V0b3JTdGFydF9ob29rX3R5 cGUgRXhlY3V0b3JTdGFydF9ob29rOwogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250 cm9sIGluIEV4ZWN1dG9yUnVuKCkgKi8KQEAgLTE5Nyw4ICsxOTgsOCBAQCBFeGVjR2V0SnVua0F0 dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNO dWxsKQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY01haW4uYwogICov Ci1leHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKLWV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitleHRlcm4gYm9vbCBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWN1 dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJlY3Rp b24sIHVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwogZXh0ZXJuIHZvaWQgc3RhbmRh cmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCkBAIC0yNTYsNiArMjU3LDE3IEBA IGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBF eGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2V0VHVw bGVCb3VuZChpbnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpOwogCisv KgorICogSXMgdGhlIGNhY2hlZCBwbGFuLCBpZiBhbnksIHN0aWxsIHZhbGlkIGF0IHRoaXMgcG9p bnQ/ICBUaGF0IGlzLCBub3QKKyAqIGludmFsaWRhdGVkIGJ5IHRoZSBpbmNvbWluZyBpbnZhbGlk YXRpb24gbWVzc2FnZXMgdGhhdCBoYXZlIGJlZW4gcHJvY2Vzc2VkCisgKiByZWNlbnRseS4KKyAq Lworc3RhdGljIGlubGluZSBib29sCitFeGVjUGxhblN0aWxsVmFsaWQoRVN0YXRlICplc3RhdGUp Cit7CisJcmV0dXJuIGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9PSBOVUxMID8gdHJ1ZSA6CisJCUNh Y2hlZFBsYW5TdGlsbFZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlFeGVjUHJvY05vZGUKQEAgLTU5MCw2ICs2MDIsNyBAQCBleGVjX3J0X2ZldGNoKElu ZGV4IHJ0aSwgRVN0YXRlICplc3RhdGUpCiB9CiAKIGV4dGVybiBSZWxhdGlvbiBFeGVjR2V0UmFu Z2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpOworZXh0ZXJuIHZvaWQg RXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxw YXJ0cmVsaWRzKTsKIGV4dGVybiB2b2lkIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCSAgIEluZGV4IHJ0 aSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMjMzZmI2YjRmOS4uMjBjMWJhY2FlMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTYyMyw2ICs2MjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3Rh dGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJ ICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBs YW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICov CisJc3RydWN0IENhY2hlZFBsYW4gKmVzX2NhY2hlZHBsYW47CS8qIENhY2hlZFBsYW4gaWYgcGxh bm5lZHN0bXQgaXMgZnJvbQorCQkJCQkJCQkJCSAqIG9uZSAqLwogCWNvbnN0IGNoYXIgKmVzX3Nv dXJjZVRleHQ7CS8qIFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKIAlKdW5rRmlsdGVy ICplc19qdW5rRmlsdGVyOwkvKiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdl L2xtZ3IuaAppbmRleCA0ZWU5MWUzY2Y5Li41OThiZjI2ODhhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaApAQCAt NDgsNiArNDgsNyBAQCBleHRlcm4gYm9vbCBDb25kaXRpb25hbExvY2tSZWxhdGlvbihSZWxhdGlv biByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIHZvaWQgVW5sb2NrUmVsYXRp b24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiBib29sIENo ZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9k ZSwKIAkJCQkJCQkJCWJvb2wgb3JzdHJvbmdlcik7CitleHRlcm4gYm9vbCBDaGVja1JlbExvY2tl ZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKTsKIGV4 dGVybiBib29sIExvY2tIYXNXYWl0ZXJzUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tN T0RFIGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZvaWQgTG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uKExv Y2tSZWxJZCAqcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3Rjb3AvcHF1ZXJ5LmggYi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCmluZGV4IGE1ZTY1 Yjk4YWEuLjU3N2I4MWE5ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgK KysrIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaApAQCAtMjksNyArMjksNyBAQCBleHRlcm4g TGlzdCAqRmV0Y2hQb3J0YWxUYXJnZXRMaXN0KFBvcnRhbCBwb3J0YWwpOwogCiBleHRlcm4gTGlz dCAqRmV0Y2hTdGF0ZW1lbnRUYXJnZXRMaXN0KE5vZGUgKnN0bXQpOwogCi1leHRlcm4gdm9pZCBQ b3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKK2V4dGVybiBi b29sIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJ CQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpOwogCiBleHRlcm4gdm9pZCBQb3J0YWxT ZXRSZXN1bHRGb3JtYXQoUG9ydGFsIHBvcnRhbCwgaW50IG5Gb3JtYXRzLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaAppbmRleCBmNWZkYmZlMTE2Li5hMDI0ZTVkY2QwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApA QCAtMTQwLDYgKzE0MCw3IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcmVsa2luZChPaWQgcmVsaWQp OwogZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlnZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBjaGFyIGdldF9yZWxf cGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxfcmVsaXNzaGFyZWQo T2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0eXBpZCwg T2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJhbnNmb3JtX3Rv c3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wg Z2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCA5MTZl NTlkOWZlLi5jODNhNjdmZWEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2Fj aGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMjIxLDYgKzIyMSwy MCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJ IFJlc291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CisKKy8qCisgKiBDYWNoZWRQbGFuU3RpbGxWYWxpZAorICoJCVJldHVybnMgaWYgYSBjYWNo ZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkCisgKgorICogQ2FsbGVkIGJ5IHRoZSBleGVj dXRvciBvbiBldmVyeSByZWxhdGlvbiBsb2NrIHRha2VuIHdoZW4gaW5pdGlhbGl6aW5nIHRoZQor ICogcGxhbiB0cmVlIGluIHRoZSBDYWNoZWRQbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wK K0NhY2hlZFBsYW5TdGlsbFZhbGlkKENhY2hlZFBsYW4gKmNwbGFuKQoreworCXJldHVybiBjcGxh bi0+aXNfdmFsaWQ7Cit9CisKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBs YW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFu QWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZk Li4yZmNhODRkMDI3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmls ZQpAQCAtOCw3ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJU09MQVRJ T04gPSBwYXJ0aXRpb24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xCisJICAg IHBhcnRpdGlvbi1yZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1yZXBsYW4KIAogaWZkZWYgVVNF X1BHWFMKIFBHX0NPTkZJRyA9IHBnX2NvbmZpZwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2Rl bGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYwppbmRleCA3Y2Q3NmViMzRiLi5jZTE4OTE1 NmFkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9l eGVjdXRpb24uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9l eGVjdXRpb24uYwpAQCAtMSwxNCArMSwxOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICog ZGVsYXlfZXhlY3V0aW9uLmMKLSAqCQlUZXN0IG1vZHVsZSB0byBhbGxvdyBkZWxheSBiZXR3ZWVu IHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhIHF1ZXJ5LgorICoJCVRlc3QgbW9kdWxlIHRvIGlu dHJvZHVjZSBkZWxheSBhdCB2YXJpb3VzIHBvaW50cyBkdXJpbmcgZXhlY3V0aW9uIG9mIGEKKyAq CQlxdWVyeSB0byB0ZXN0IHRoYXQgZXhlY3V0aW9uIHByb2NlZWRzIHNhZmVseSBpbiBsaWdodCBv ZiBjb25jdXJyZW50CisgKgkJY2hhbmdlcy4KICAqCiAgKiBUaGUgZGVsYXkgaXMgaW1wbGVtZW50 ZWQgYnkgdGFraW5nIGFuZCBpbW1lZGlhdGVseSByZWxlYXNpbmcgYSBzcGVjaWZpZWQKICAqIGFk dmlzb3J5IGxvY2suICBJZiBhbm90aGVyIHByb2Nlc3MgaGFzIHByZXZpb3VzbHkgdGFrZW4gdGhh dCBsb2NrLCB0aGUKICAqIGN1cnJlbnQgcHJvY2VzcyB3aWxsIGJlIGJsb2NrZWQgdW50aWwgdGhl IGxvY2sgaXMgcmVsZWFzZWQ7IG90aGVyd2lzZSwKICAqIHRoZXJlJ3Mgbm8gZWZmZWN0LiAgVGhp cyBhbGxvd3MgYW4gaXNvbGF0aW9udGVzdGVyIHNjcmlwdCB0byByZWxpYWJseQotICogdGVzdCBi ZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBi YWNrZW5kCi0gKiBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBx dWVyeS4KKyAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBw ZW5zIGluIGFub3RoZXIgYmFja2VuZCBpbgorICogYSBjb3VwbGUgb2YgY2FzZXM6IDEpIGJldHdl ZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5CisgKiB3aGVuIHVz aW5nIHRoZSBwbGFubmVyX2hvb2ssIDIpIGJldHdlZW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KCkg YW5kCisgKiBFeGVjdXRvclN0YXJ0KCkgd2hlbiB1c2luZyB0aGUgRXhlY3V0b3JTdGFydF9ob29r LgogICoKICAqIENvcHlyaWdodCAoYykgMjAyMC0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAogICoKQEAgLTIyLDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5o PgogCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv cGxhbm5lci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMv Z3VjLmgiCkBAIC0zMiw5ICszNywxMSBAQCBQR19NT0RVTEVfTUFHSUM7CiAKIC8qIEdVQzogYWR2 aXNvcnkgbG9jayBJRCB0byB1c2UuICBaZXJvIGRpc2FibGVzIHRoZSBmZWF0dXJlLiAqLwogc3Rh dGljIGludAlwb3N0X3BsYW5uaW5nX2xvY2tfaWQgPSAwOworc3RhdGljIGludAlleGVjdXRvcl9z dGFydF9sb2NrX2lkID0gMDsKIAotLyogU2F2ZSBwcmV2aW91cyBwbGFubmVyIGhvb2sgdXNlciB0 byBiZSBhIGdvb2QgY2l0aXplbiAqLworLyogU2F2ZSBwcmV2aW91cyBob29rIHVzZXJzIHRvIGJl IGEgZ29vZCBjaXRpemVuICovCiBzdGF0aWMgcGxhbm5lcl9ob29rX3R5cGUgcHJldl9wbGFubmVy X2hvb2sgPSBOVUxMOworc3RhdGljIEV4ZWN1dG9yU3RhcnRfaG9va190eXBlIHByZXZfRXhlY3V0 b3JTdGFydF9ob29rID0gTlVMTDsKIAogCiAvKiBwbGFubmVyX2hvb2sgZnVuY3Rpb24gdG8gcHJv dmlkZSB0aGUgZGVzaXJlZCBkZWxheSAqLwpAQCAtNzAsMTEgKzc3LDQ1IEBAIGRlbGF5X2V4ZWN1 dGlvbl9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCXJl dHVybiByZXN1bHQ7CiB9CiAKKy8qIEV4ZWN1dG9yU3RhcnRfaG9vayBmdW5jdGlvbiB0byBwcm92 aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCitzdGF0aWMgYm9vbAorZGVsYXlfZXhlY3V0aW9uX0V4 ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCit7CisJYm9vbAlw bGFuX3ZhbGlkOworCisJLyogSWYgZW5hYmxlZCwgZGVsYXkgYnkgdGFraW5nIGFuZCByZWxlYXNp bmcgdGhlIHNwZWNpZmllZCBsb2NrICovCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0g MCkKKwl7CisJCURpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfbG9ja19pbnQ4LAorCQkJ CQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisJCURp cmVjdEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfdW5sb2NrX2ludDgsCisJCQkJCQkJSW50NjRH ZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKworCQkvKgorCQkgKiBF bnN1cmUgdGhhdCB3ZSBub3RpY2UgYW55IHBlbmRpbmcgaW52YWxpZGF0aW9ucywgc2luY2UgdGhl IGFkdmlzb3J5CisJCSAqIGxvY2sgZnVuY3Rpb25zIGRvbid0IGRvIHRoaXMuCisJCSAqLworCQlB Y2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCX0KKworCS8qIE5vdyBzdGFydCB0aGUgZXhl Y3V0b3IsIHBvc3NpYmx5IHZpYSBhIHByZXZpb3VzIGhvb2sgdXNlciAqLworCWlmIChwcmV2X0V4 ZWN1dG9yU3RhcnRfaG9vaykKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydF9ob29r KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2Nr X2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzICVzIiwKKwkJCSBwbGFuX3ZhbGlkID8gInZhbGlkIiA6ICJub3QgdmFsaWQiKTsK KworCXJldHVybiBwbGFuX3ZhbGlkOworfQorCiAvKiBNb2R1bGUgbG9hZCBmdW5jdGlvbiAqLwog dm9pZAogX1BHX2luaXQodm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0byBjb250cm9sIHdo aWNoIGxvY2sgaXMgdXNlZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRyb2wgd2hpY2ggbG9j ayBpcyB1c2VkICovCiAJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5w b3N0X3BsYW5uaW5nX2xvY2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElE IHRvIGJlIGxvY2tlZC91bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJCQkJCSJaZXJvIGRp c2FibGVzIHRoZSBkZWxheS4iLApAQCAtODYsMTAgKzEyNywyMiBAQCBfUEdfaW5pdCh2b2lkKQog CQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQorCURlZmluZUN1c3Rv bUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCIsCisJ CQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGJl Zm9yZSBzdGFydGluZyBleGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVs YXkuIiwKKwkJCQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJCQkwLAorCQkJCQkJ CTAsIElOVF9NQVgsCisJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxM LAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJk ZWxheV9leGVjdXRpb24iKTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8KKwkvKiBJbnN0YWxs IG91ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsKIAlwbGFu bmVyX2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRf aG9vayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBkZWxheV9l eGVjdXRpb25fRXhlY3V0b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgYi9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBhYzZhMTdjMmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9j YWNoZWQtcGxhbi1yZXBsYW4ub3V0CkBAIC0wLDAgKzEsMTU2IEBACitQYXJzZWQgdGVzdCBzcGVj IHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwIHMybG9jayBz MWV4ZWMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUg PSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9v diBXSEVSRSBhID0gJDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOwor UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAg ICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vXzEgICAgICAg CisgICAgICAgIFJlY2hlY2sgQ29uZDogKGEgPSAkMSkgICAgICAgICAgICAgIAorICAgICAgICAt PiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYV9pZHgKKyAgICAgICAgICAgICAgSW5kZXgg Q29uZDogKGEgPSAkMSkgICAgICAgICAgCisoNiByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNU IHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogTE9BRCAnZGVs YXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xv Y2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVu bG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxv Y2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0 ZXAgczFleGVjOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAg ICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgIAorICAtPiAgU2Vx IFNjYW4gb24gZm9vMTEgZm9vXzEKKyAgICAgICAgRmlsdGVyOiAoYSA9ICQxKSAgICAgCisoNCBy b3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAyIHMybG9jayBzMWV4ZWMyIHMy ZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMjogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNl X2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVS RSBhID0gMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNF OiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0JpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vICAgICAgICAgCisg IFJlY2hlY2sgQ29uZDogKGEgPSAxKSAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gZm9vMTFfYV9pZHgKKyAgICAgICAgSW5kZXggQ29uZDogKGEgPSAxKSAgICAgICAg ICAgCisoNCByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIz NDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAg U0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJv cGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29y eV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0K K3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IDwuLi4gY29tcGxl dGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBp cyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitTZXEgU2NhbiBvbiBmb28xMSBmb28KKyAgRmlsdGVyOiAoYSA9IDEpICAgIAorKDIgcm93 cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMyBzMmxvY2sgczFleGVjMyBzMmRy b3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDM6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9n ZW5lcmljX3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9u OworCQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBx MyBBUyBTRUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0 MS5hID0gdDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBx MzsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAg S2V5OiB0MS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmb28x MV9hX2lkeCBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIElu ZGV4IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9vMTEgdDIKKyAgLT4gIEdyb3VwQWdncmVn YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg R3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgLT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQyXzEuYSkgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6 IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGZvbzIgdDFfMSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMSAgICAg ICAgICAgICAgICAgICAKKygxOCByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlz b3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAg ICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1 dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0g MTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+ CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0t LS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6 IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTog Q2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0 YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg LT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91 cCBLZXk6IHQxLmEgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2lu ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEg PSB0Mi5hKSAgICAgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MS5hICAgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQxIAorICAgICAgICAgICAgICAt PiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0Mi5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzExIHQyIAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgIEdyb3VwIEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg LT4gIE1lcmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJn ZSBDb25kOiAodDFfMS5hID0gdDJfMS5hKSAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAg ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xCisg ICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gZm9vMiB0Ml8xCisoMjEgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMg Yi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBs YW4uc3BlYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYzkyY2JkNWM2 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3Bl Y3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKQEAgLTAsMCArMSw2MSBAQAorIyBUZXN0IHRvIGNo ZWNrIHRoYXQgaW52YWxpZGF0aW9uIG9mIGNhY2hlZCBnZW5lcmljIHBsYW5zIGR1cmluZyBFeGVj dXRvclN0YXJ0CisjIGNvcnJlY3RseSB0cmlnZ2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRp b24uCisKK3NldHVwCit7CisgIENSRUFURSBUQUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJ VElPTiBCWSBMSVNUKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZP UiBWQUxVRVMgSU4gKDEpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZv bzExIFBBUlRJVElPTiBPRiBmb28xIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVgg Zm9vMTFfYSBPTiBmb28xIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9GIGZv byBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9N IGZvbzsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFCTEUg Zm9vOworfQorCitzZXNzaW9uICJzMSIKKyMgQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZwor c3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxh bjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJ ICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KKworIyBubyBBcHBlbmQgY2Fz ZSAob25seSBvbmUgcGFydGl0aW9uIHNlbGVjdGVkIGJ5IHRoZSBwbGFubmVyKQorc3RlcCAiczFw cmVwMiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAg UFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJ TiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CisKKyMgQXBwZW5kIHdpdGggcGFydGl0aW9uLXdp c2Ugam9pbiBhZ2dyZWdhdGUgYW5kIGpvaW4gcGxhbnMgYXMgY2hpbGQgc3VicGxhbnMKK3N0ZXAg InMxcHJlcDMiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5h YmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQx LmEsIGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JP VVAgQlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworIyBFeGVj dXRlcyBhIGdlbmVyaWMgcGxhbgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlv bic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIz NDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4 ZWMyIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5l eGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEyOyB9CitzdGVwICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJ CSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJ CSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24gInMyIgorc3Rl cCAiczJsb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1 bmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0ZXAgInMyZHJv cGkiCXsgRFJPUCBJTkRFWCBmb28xMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIsIGV0Yy4gd2Fp dCB0byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvCisjIGRy b3AgdGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hlbiAiczFleGVj IiBpcyB0aGVuCisjIHVuYmxvY2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZv ciBleGVjdXRpb24sIGl0IGRldGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQg Y2F1c2VzIHRoZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3 aXRob3V0IHRoZSBpbmRleC4KK3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMi ICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMx ZXhlYzIiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9j ayIgInMxZXhlYzMiICJzMmRyb3BpIiAiczJ1bmxvY2siCi0tIAoyLjM1LjMKCg== --00000000000060a6b1060200b2c3 Content-Type: application/octet-stream; name="v44-0001-Make-PlanState-tree-cleanup-non-recursive.patch" Content-Disposition: attachment; filename="v44-0001-Make-PlanState-tree-cleanup-non-recursive.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lkuwi1k55 RnJvbSBhNTViZDM2MzY5MGJjNGMyODA0N2U0Yjg3NGNlODAzODRlMzdjNDlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMSBBdWcgMjAyMyAxMTozNjoyNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ0 IDEvNl0gTWFrZSBQbGFuU3RhdGUgdHJlZSBjbGVhbnVwIG5vbi1yZWN1cnNpdmUKCldpdGggdGhp cyBjaGFuZ2UsIG5vZGUgdHlwZSBzcGVjaWZpYyBzdWJyb3V0aW5lcyBvZiBFeGVjRW5kTm9kZSgp CmFyZSBubyBsb25nZXIgcmVxdWlyZWQgdG8gYWxzbyBjbGVhbiB1cCB0aGUgY2hpbGQgbm9kZXMg b2YgYSBnaXZlbgpub2RlLCBvbmx5IGl0cyBvd24gc3R1ZmYuICBJbnN0ZWFkLCBFeGVjRW5kUGxh bigpIGNhbGxzCkV4ZWNJbml0Tm9kZSgpIGRpcmVjdGx5IGZvciBlYWNoIG5vZGUgaW4gdGhlIFBs YW5TdGF0ZSB0cmVlIGJ5Cml0ZXJhdGluZyBvdmVyIGEgbGlzdCAoRVN0YXRlLmVzX3BsYW5zdGF0 ZV9ub2Rlcykgb2YgYWxsIHRob3NlIG5vZGVzCmJ1aWx0IGR1cmluZyB0aGUgRXhlY0luaXROb2Rl KCkgdHJhdmVyc2FsIG9mIHRoZSB0cmVlLgoKVGhpcyBjaGFuZ2VzIHRoZSBvcmRlciBpbiB3aGlj aCB0aGUgbm9kZXMgZ2V0IGNsZWFuZWQgdXAsIGJlY2F1c2UKdGhleSBhcmUgbm93IGNsZWFuZWQg dXAgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGFkZGVkIGludG8KdGhlIGxpc3Qgd2hp Y2ggaXMgZnJvbSBsZWFmLWxldmVsIHVwIHRvIHRoZSByb290LCB3aGVyZWFzIHdpdGggdGhlCmN1 cnJlbnQgcmVjdXJzaXZlIGFwcHJvYWNoIGNsZWFudXAgb2NjdXJzIGZyb20gdGhlIHJvb3QgdG8g dGhlCmxlYXZlcy4gIFRoZSBjaGFuZ2Ugc2VlbXMgaGFybWxlc3MgdGhvdWdoLCBiZWNhdXNlIHRo ZXJlIGlzbid0Cm5lY2Vzc2FyaWx5IGFueSBjb3VwbGluZyBiZXR3ZWVuIG9mIHRoZSBjbGVhbnVw IGFjdGlvbnMgb2YgcGFyZW50CmFuZCBjaGlsZCBub2Rlcy4KClRoZSBtYWluIG1vdGl2YXRpb24g YmVoaW5kIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IHRoZSBjYXNlcyBpbgp0aGUgZnV0dXJlIHdo ZXJlIEV4ZWNJbml0Tm9kZSgpIHRyYXZlcnNhbCBvZiB0aGUgcGxhbiB0cmVlIG1heQpiZSBhYm9y dGVkIGluIHRoZSBtaWRkbGUgcmVzdWx0aW5nIGluIGEgcGFydGlhbGx5IGluaXRpYWxpemVkClBs YW5TdGF0ZSB0cmVlLiAgRGVhbGluZyB3aXRoIHRoYXQgY2FzZSBieSBtYWtpbmcgdGhlIGNsZWFu dXAKcGhhc2Ugd2FsayBvdmVyIGEgbGlzdCBvZiBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgbm9k ZXMgc2VlbXMKYmV0dGVyIC8gbW9yZSByb2J1c3QgdGhhbiBtYWtpbmcgdGhlIGluZGl2aWR1YWwg RXhlY0VuZE5vZGUoKQpzdWJyb3V0aW5lcyBkZWFsIHdpdGggcGFydGlhbGx5IHZhbGlkIFBsYW5T dGF0ZSBub2Rlcy4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAg ICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgIHwg MzYgKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAg ICAgICB8IDU2ICsrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jICAgICAgICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cu YyAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMg ICAgICAgICAgfCAyMCArLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFu ZC5jICAgICAgIHwgMjMgKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyAgfCAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMg ICAgICAgIHwgMjMgKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYyAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgNSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAgICAgICAgIHwgIDggKy0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgIHwgIDYgKy0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgfCAgNSArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVMb2NrUm93cy5jICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWF0ZXJpYWwuYyAgICAgICAgfCAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lbW9pemUuYyAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jICAgICB8IDIwICstLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2Vqb2luLmMgICAgICAgfCAgNiArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICB8ICA3ICstLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMg ICAgICAgIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAg ICAgfCAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwg IDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAgfCAgNSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgfCAgNSArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCAgICAgICAgICAgICAgfCAgMiArCiAzMyBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRp b25zKCspLCAyMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCmluZGV4IDE3Nzc1YTQ5ZTIu LjY3YTVjMTc2OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTMxMCwxMyArMzEwLDEzIEBAIFRoaXMg aXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAJ CUFmdGVyVHJpZ2dlckVuZFF1ZXJ5CiAKIAlFeGVjdXRvckVuZAotCQlFeGVjRW5kTm9kZSAtLS0g cmVjdXJzaXZlbHkgcmVsZWFzZXMgcmVzb3VyY2VzCisJCUV4ZWNFbmRQbGFuIC0tLSByZWxlYXNl cyBwbGFuIHJlc291cmNlcwogCQlGcmVlRXhlY3V0b3JTdGF0ZQogCQkJZnJlZXMgcGVyLXF1ZXJ5 IGNvbnRleHQgYW5kIGNoaWxkIGNvbnRleHRzCiAKIAlGcmVlUXVlcnlEZXNjCiAKLVBlciBhYm92 ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kTm9kZSB0byBm cmVlIGFueQorUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9y IEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBtZW1vcnk7IGl0J2xsIGFsbCBnbyBhd2F5IGluIEZy ZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhvd2V2ZXIsIHdlIGRvIG5lZWQgdG8KIGJlIGNhcmVm dWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9wIGJ1ZmZlciBwaW5zLCBldGMsIHNvIHdlIGRvIG5l ZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUgdHJlZSB0byBmaW5kIHRoZXNlIHNvcnRzIG9mIHJl c291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDRjNWE3YmJmNjIuLjIzNWJiNTJj Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtODIsNyArODIsNyBAQCBFeGVjdXRvckNo ZWNrUGVybXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rID0gTlVMTDsKIHN0YXRp YyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRp YyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFy a1R5cGUpOwogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVzdGF0ZSk7 Ci1zdGF0aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICpl c3RhdGUpOworc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oRVN0YXRlICplc3RhdGUpOwogc3RhdGlj IHZvaWQgRXhlY3V0ZVBsYW4oRVN0YXRlICplc3RhdGUsIFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJYm9vbCB1c2VfcGFyYWxsZWxfbW9kZSwKIAkJCQkJCUNtZFR5cGUgb3BlcmF0aW9uLApA QCAtNTAwLDcgKzUwMCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjKQogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5l c19xdWVyeV9jeHQpOwogCi0JRXhlY0VuZFBsYW4ocXVlcnlEZXNjLT5wbGFuc3RhdGUsIGVzdGF0 ZSk7CisJRXhlY0VuZFBsYW4oZXN0YXRlKTsKIAogCS8qIGRvIGF3YXkgd2l0aCBvdXIgc25hcHNo b3RzICovCiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfc25hcHNob3QpOwpAQCAtMTQ5 OSwyMyArMTQ5OSwyMSBAQCBFeGVjUG9zdHByb2Nlc3NQbGFuKEVTdGF0ZSAqZXN0YXRlKQogICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICovCiBzdGF0aWMgdm9pZAotRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlKQorRXhlY0VuZFBsYW4oRVN0YXRlICplc3RhdGUpCiB7CiAJTGlz dENlbGwgICAqbDsKIAogCS8qCi0JICogc2h1dCBkb3duIHRoZSBub2RlLXR5cGUtc3BlY2lmaWMg cXVlcnkgcHJvY2Vzc2luZworCSAqIFNodXQgZG93biB0aGUgbm9kZS10eXBlLXNwZWNpZmljIHF1 ZXJ5IHByb2Nlc3NpbmcgZm9yIGFsbCBub2RlcyB0aGF0CisJICogd2VyZSBpbml0aWFsaXplZCBp biBJbml0UGxhbigpLiAgVGhhdCBpbmNsdWRlcyB0aGUgbm9kZXMgaW4gYm90aCB0aGUKKwkgKiBt YWluIHBsYW4gdHJlZSAoZXNfcGxhbm5lZHN0bXQtPnBsYW5UcmVlKSBhbmQgdGhvc2UgaW4gc3Vi cGxhbnMKKwkgKiAoZXNfcGxhbm5lZHN0bXQtPnN1YnBsYW5zKS4KIAkgKi8KLQlFeGVjRW5kTm9k ZShwbGFuc3RhdGUpOwotCi0JLyoKLQkgKiBmb3Igc3VicGxhbnMgdG9vCi0JICovCi0JZm9yZWFj aChsLCBlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMpCisJZm9yZWFjaChsLCBlc3RhdGUtPmVzX3Bs YW5zdGF0ZV9ub2RlcykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3Rh dGUgKikgbGZpcnN0KGwpOworCQlQbGFuU3RhdGUgICpwc3RhdGUgPSAoUGxhblN0YXRlICopIGxm aXJzdChsKTsKIAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShw c3RhdGUpOwogCX0KIAogCS8qCkBAIC0zMDMwLDEzICszMDI4LDE3IEBAIEV2YWxQbGFuUXVhbEVu ZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAotCUV4ZWNFbmROb2RlKGVwcXN0YXRlLT5yZWNo ZWNrcGxhbnN0YXRlKTsKLQotCWZvcmVhY2gobCwgZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzKQor CS8qCisJICogU2h1dCBkb3duIHRoZSBub2RlLXR5cGUtc3BlY2lmaWMgcXVlcnkgcHJvY2Vzc2lu ZyBmb3IgYWxsIG5vZGVzIHRoYXQKKwkgKiB3ZXJlIGluaXRpYWxpemVkIGluIEluaXRQbGFuKCku ICBUaGF0IGluY2x1ZGVzIHRoZSBub2RlcyBpbiBib3RoIHRoZQorCSAqIG1haW4gcGxhbiB0cmVl IChlcHFzdGF0ZS0+cGxhbikgYW5kIHRob3NlIGluIHN1YnBsYW5zCisJICogKGVzX3BsYW5uZWRz dG10LT5zdWJwbGFucykuCisJICovCisJZm9yZWFjaChsLCBlc3RhdGUtPmVzX3BsYW5zdGF0ZV9u b2RlcykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3RhdGUgKikgbGZp cnN0KGwpOworCQlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSAoUGxhblN0YXRlICopIGxmaXJzdChs KTsKIAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShwbGFuc3Rh dGUpOwogCX0KIAogCS8qIHRocm93IGF3YXkgdGhlIHBlci1lc3RhdGUgdHVwbGUgdGFibGUsIHNv bWUgbm9kZSBtYXkgaGF2ZSB1c2VkIGl0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5j CmluZGV4IDRkMjg4YmM4ZDQuLjY1M2Y3NGNmNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jCkBAIC0xLDExICsxLDEzIEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBleGVj UHJvY25vZGUuYwotICoJIGNvbnRhaW5zIGRpc3BhdGNoIGZ1bmN0aW9ucyB3aGljaCBjYWxsIHRo ZSBhcHByb3ByaWF0ZSAiaW5pdGlhbGl6ZSIsCi0gKgkgImdldCBhIHR1cGxlIiwgYW5kICJjbGVh bnVwIiByb3V0aW5lcyBmb3IgdGhlIGdpdmVuIG5vZGUgdHlwZS4KLSAqCSBJZiB0aGUgbm9kZSBo YXMgY2hpbGRyZW4sIHRoZW4gaXQgd2lsbCBwcmVzdW1hYmx5IGNhbGwgRXhlY0luaXROb2RlLAot ICoJIEV4ZWNQcm9jTm9kZSwgb3IgRXhlY0VuZE5vZGUgb24gaXRzIHN1Ym5vZGVzIGFuZCBkbyB0 aGUgYXBwcm9wcmlhdGUKLSAqCSBwcm9jZXNzaW5nLgorICoJIENvbnRhaW5zIGRpc3BhdGNoIGZ1 bmN0aW9ucyBFeGVjSW5pdE5vZGUoKSwgRXhlY1Byb2NOb2RlKCksIGFuZAorICoJIEV4ZWNFbmRO b2RlKCksIHdoaWNoIGNhbGwgdGhlIGFwcHJvcHJpYXRlICJpbml0aWFsaXplIiwgImdldCBhIHR1 cGxlIiwKKyAqCSBhbmQgImNsZWFudXAiIHJvdXRpbmVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUg Z2l2ZW4gbm9kZSB0eXBlLgorICoKKyAqCSBXaGlsZSB0aGUgZmlyc3QgdHdvIHByb2Nlc3MgdGhl IG5vZGUncyBjaGlsZHJlbiByZWN1cnNpdmVseSwgRXhlY0VuZE5vZGUoKQorICoJIGlzIG9ubHkg Y29uY2VybmVkIHdpdGggdGhlIGNsZWFuaW5nIG9mIHRoZSBub2RlIGl0c2VsZiB3aGlsZSB0aGUg Y2hpbGRyZW4KKyAqCSBhcmUgcHJvY2Vzc2VkIGJ5IHRoZSBjYWxsZXIuCiAgKgogICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQpAQCAtNDksNyArNTEsOSBAQAogICoJCUV2ZW50dWFsbHkg dGhpcyBjYWxscyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcmlnaHQgYW5kIGxlZnQgc3VicGxhbnMK ICAqCQlhbmQgc28gZm9ydGggdW50aWwgdGhlIGVudGlyZSBwbGFuIGlzIGluaXRpYWxpemVkLiAg VGhlIHJlc3VsdAogICoJCW9mIEV4ZWNJbml0Tm9kZSgpIGlzIGEgcGxhbiBzdGF0ZSB0cmVlIGJ1 aWx0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlCi0gKgkJYXMgdGhlIHVuZGVybHlpbmcgcGxhbiB0 cmVlLgorICoJCWFzIHRoZSB1bmRlcmx5aW5nIHBsYW4gdHJlZS4gIChUaGUgcGxhbiBzdGF0ZSBu b2RlcyBhcmUgYWxzbyBhZGRlZCB0bworICoJCWEgbGlzdCBpbiB0aGUgc2FtZSBvcmRlciBpbiB3 aGljaCB0aGV5IGFyZSBjcmVhdGVkIGZvciB0aGUgZmluYWwKKyAqCQljbGVhbnVwIHByb2Nlc3Np bmcuKQogICoKICAqCSAgKiBUaGVuIHdoZW4gRXhlY3V0b3JSdW4oKSBpcyBjYWxsZWQsIGl0IGNh bGxzIEV4ZWN1dGVQbGFuKCkgd2hpY2ggY2FsbHMKICAqCQlFeGVjUHJvY05vZGUoKSByZXBlYXRl ZGx5IG9uIHRoZSB0b3Agbm9kZSBvZiB0aGUgcGxhbiBzdGF0ZSB0cmVlLgpAQCAtNjEsMTQgKzY1 LDEwIEBACiAgKgkJZm9ybSB0aGUgdHVwbGVzIGl0IHJldHVybnMuCiAgKgogICoJICAqIEV2ZW50 dWFsbHkgRXhlY1NlcVNjYW4oKSBzdG9wcyByZXR1cm5pbmcgdHVwbGVzIGFuZCB0aGUgbmVzdAot ICoJCWxvb3Agam9pbiBlbmRzLiAgTGFzdGx5LCBFeGVjdXRvckVuZCgpIGNhbGxzIEV4ZWNFbmRO b2RlKCkgd2hpY2gKLSAqCQljYWxscyBFeGVjRW5kTmVzdExvb3AoKSB3aGljaCBpbiB0dXJuIGNh bGxzIEV4ZWNFbmROb2RlKCkgb24KLSAqCQlpdHMgc3VicGxhbnMgd2hpY2ggcmVzdWx0IGluIEV4 ZWNFbmRTZXFTY2FuKCkuCisgKgkJbG9vcCBqb2luIGVuZHMuICBMYXN0bHksIEV4ZWN1dG9yRW5k KCkgY2FsbHMgRXhlY0VuZFBsYW4oKSwgd2hpY2gKKyAqCQlpbiB0dXJuIGNhbGxzIEV4ZWNFbmRO b2RlKCkgb24gYWxsIHRoZSBub2RlcyB0aGF0IHdlcmUgaW5pdGlhbGl6ZWQ6CisgKgkJdGhlIHR3 byBTZXEgU2NhbnMgYW5kIHRoZSBOZXN0IExvb3AgaW4gdGhpcyBjYXNlLgogICoKLSAqCQlUaGlz IHNob3VsZCBzaG93IGhvdyB0aGUgZXhlY3V0b3Igd29ya3MgYnkgaGF2aW5nCi0gKgkJRXhlY0lu aXROb2RlKCksIEV4ZWNQcm9jTm9kZSgpIGFuZCBFeGVjRW5kTm9kZSgpIGRpc3BhdGNoCi0gKgkJ dGhlaXIgd29yayB0byB0aGUgYXBwcm9wcmlhdGUgbm9kZSBzdXBwb3J0IHJvdXRpbmVzIHdoaWNo IG1heQotICoJCWluIHR1cm4gY2FsbCB0aGVzZSByb3V0aW5lcyB0aGVtc2VsdmVzIG9uIHRoZWly IHN1YnBsYW5zLgogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIApAQCAtMTM2LDYgKzEzNiw5 IEBAIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwg dm9pZCAqY29udGV4dCk7CiAgKgkJICAnZWZsYWdzJyBpcyBhIGJpdHdpc2UgT1Igb2YgZmxhZyBi aXRzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5oCiAgKgogICoJCVJldHVybnMgYSBQbGFuU3RhdGUg bm9kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUuCisgKgorICoJCUFzIGEg c2lkZS1lZmZlY3QsIGFsbCBQbGFuU3RhdGUgbm9kZXMgdGhhdCBhcmUgY3JlYXRlZCBhcmUgYXBw ZW5kZWQgdG8KKyAqCQllc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcyBmb3IgdGhlIGNsZWFudXAg cHJvY2Vzc2luZyBpbiBFeGVjRW5kUGxhbigpLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBs YW5TdGF0ZSAqCkBAIC00MTEsNiArNDE0LDEwIEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJcmVzdWx0LT5pbnN0cnVtZW50ID0gSW5zdHJB bGxvYygxLCBlc3RhdGUtPmVzX2luc3RydW1lbnQsCiAJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19j YXBhYmxlKTsKIAorCS8qIEFuZCByZW1lbWJlciBmb3IgdGhlIGNsZWFudXAgcHJvY2Vzc2luZyBp biBFeGVjRW5kUGxhbigpLiAqLworCWVzdGF0ZS0+ZXNfcGxhbnN0YXRlX25vZGVzID0gbGFwcGVu ZChlc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcywKKwkJCQkJCQkJCQkgcmVzdWx0KTsKKwogCXJl dHVybiByZXN1bHQ7CiB9CiAKQEAgLTU0NSwyOSArNTUyLDE4IEBAIE11bHRpRXhlY1Byb2NOb2Rl KFBsYW5TdGF0ZSAqbm9kZSkKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5kTm9kZQogICoKLSAqCQlS ZWN1cnNpdmVseSBjbGVhbnMgdXAgYWxsIHRoZSBub2RlcyBpbiB0aGUgcGxhbiByb290ZWQKLSAq CQlhdCAnbm9kZScuCisgKgkJQ2xlYW5zIHVwIG5vZGUKICAqCi0gKgkJQWZ0ZXIgdGhpcyBvcGVy YXRpb24sIHRoZSBxdWVyeSBwbGFuIHdpbGwgbm90IGJlIGFibGUgdG8gYmUKLSAqCQlwcm9jZXNz ZWQgYW55IGZ1cnRoZXIuICBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlcgotICoJCXRo ZSBxdWVyeSBwbGFuIGhhcyBiZWVuIGZ1bGx5IGV4ZWN1dGVkLgorICoJCVVubGlrZSBFeGVjSW5p dE5vZGUoKSwgdGhpcyBkb2VzIG5vdCByZWN1cnNlIGludG8gY2hpbGQgbm9kZXMsIGJlY2F1c2UK KyAqCQl0aGV5IGFyZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4gIFNvIHRoZSBFeGVjRW5kKiByb3V0 aW5lIGZvciBhbnkgZ2l2ZW4KKyAqCQlub2RlIHR5cGUgaXMgb25seSByZXNwb25zaWJsZSBmb3Ig Y2xlYW5pbmcgdXAgaXRzIG93biByZXNvdXJjZXMuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4 ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSkKIHsKLQkvKgotCSAqIGRvIG5vdGhpbmcgd2hlbiB3 ZSBnZXQgdG8gdGhlIGVuZCBvZiBhIGxlYWYgb24gdHJlZS4KLQkgKi8KLQlpZiAobm9kZSA9PSBO VUxMKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIE1ha2Ugc3VyZSB0aGVyZSdzIGVub3VnaCBzdGFj ayBhdmFpbGFibGUuIE5lZWQgdG8gY2hlY2sgaGVyZSwgaW4KLQkgKiBhZGRpdGlvbiB0byBFeGVj UHJvY05vZGUoKSAodmlhIEV4ZWNQcm9jTm9kZUZpcnN0KCkpLCBiZWNhdXNlIGl0J3Mgbm90Ci0J ICogZ3VhcmFudGVlZCB0aGF0IEV4ZWNQcm9jTm9kZSgpIGlzIHJlYWNoZWQgZm9yIGFsbCBub2Rl cy4KLQkgKi8KLQljaGVja19zdGFja19kZXB0aCgpOworCS8qIFdlIG9ubHkgZXZlciBnZXQgY2Fs bGVkIG9uIG5vZGVzIHRoYXQgd2VyZSBhY3R1YWxseSBpbml0aWFsaXplZC4gKi8KKwlBc3NlcnQo bm9kZSAhPSBOVUxMKTsKIAogCWlmIChub2RlLT5jaGdQYXJhbSAhPSBOVUxMKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggYzA2YjIyODg1OC4uYjU2NzE2NTAwMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE1NCw2ICsxNTQsOCBAQCBDcmVhdGVFeGVjdXRvclN0YXRl KHZvaWQpCiAKIAllc3RhdGUtPmVzX2V4cHJjb250ZXh0cyA9IE5JTDsKIAorCWVzdGF0ZS0+ZXNf cGxhbnN0YXRlX25vZGVzID0gTklMOworCiAJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gTklM OwogCiAJZXN0YXRlLT5lc19hdXhtb2RpZnl0YWJsZXMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdn LmMKaW5kZXggNDY4ZGI5NGZlNS4uZTlkOWFiNmJkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpA QCAtNDMwNCw3ICs0MzA0LDYgQEAgR2V0QWdnSW5pdFZhbChEYXR1bSB0ZXh0SW5pdFZhbCwgT2lk IHRyYW5zdHlwZSkKIHZvaWQKIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0 YXRlICAqb3V0ZXJQbGFuOwogCWludAkJCXRyYW5zbm87CiAJaW50CQkJbnVtR3JvdXBpbmdTZXRz ID0gTWF4KG5vZGUtPm1heHNldHMsIDEpOwogCWludAkJCXNldG5vOwpAQCAtNDM2Nyw4ICs0MzY2 LDcgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAkvKiBjbGVhbiB1cCB0dXBsZSB0YWJs ZSAqLwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCi0Jb3V0 ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsK KwkvKiBvdXRlclBsYW4gaXMgY2xvc2VseSBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNjA5ZGY2YjllNi4uOTE0OGQ3ZDNiMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMzc2LDMwICszNzYsMTIgQEAgRXhlY0FwcGVuZChQ bGFuU3RhdGUgKnBzdGF0ZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmRBcHBlbmQKLSAqCi0g KgkJU2h1dHMgZG93biB0aGUgc3Vic2NhbnMgb2YgdGhlIGFwcGVuZCBub2RlLgotICoKLSAqCQlS ZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNF bmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqYXBwZW5kcGxhbnM7 Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBm cm9tIHRoZSBub2RlCi0JICovCi0JYXBwZW5kcGxhbnMgPSBub2RlLT5hcHBlbmRwbGFuczsKLQlu cGxhbnMgPSBub2RlLT5hc19ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRo ZSBzdWJzY2FucwotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKLQkJRXhlY0Vu ZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCS8qIE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGlu IGFwcGVuZHBsYW5zIGFyZSBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4IDRjNWViMmIyM2IuLjE0NzU5MmY3ZTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKQEAgLTE2OCwzMyArMTY4LDEyIEBAIE11 bHRpRXhlY0JpdG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUV4ZWNFbmRCaXRtYXBBbmQKLSAqCi0gKgkJU2h1dHMgZG93biB0aGUgc3Vic2NhbnMgb2YgdGhl IEJpdG1hcEFuZCBub2RlLgotICoKLSAqCQlSZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNFbmRCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5v ZGUpCiB7Ci0JUGxhblN0YXRlICoqYml0bWFwcGxhbnM7Ci0JaW50CQkJbnBsYW5zOwotCWludAkJ CWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JYml0 bWFwcGxhbnMgPSBub2RlLT5iaXRtYXBwbGFuczsKLQlucGxhbnMgPSBub2RlLT5ucGxhbnM7Ci0K LQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucyAodGhhdCB3ZSd2ZSBpbml0 aWFsaXplZCkKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JewotCQlpZiAo Yml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7Ci0JfQorCS8q IE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGluIGJpdG1hcHBsYW5zIGFyZSBjbG9zZWQgc2Vw YXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVh cHNjYW4uYwppbmRleCBmMzVkZjBiOGJmLi5kNThlZTRmNGUxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNjY3LDEwICs2NjcsNyBAQCBFeGVjRW5kQml0 bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5z cy5zc19TY2FuVHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAq LwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gaXMg Y2xvc2VkIHNlcGFyYXRlbHkuICovCiAKIAkvKgogCSAqIHJlbGVhc2UgYml0bWFwcyBhbmQgYnVm ZmVycyBpZiBhbnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBP ci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKaW5kZXggMGJmOGFmOTY1 Mi4uNzM2ODUyYTBhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTE4Niwz MyArMTg2LDEyIEBAIE11bHRpRXhlY0JpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUpCiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqCQlFeGVjRW5kQml0bWFwT3IKLSAqCi0gKgkJU2h1dHMgZG93biB0aGUgc3Vi c2NhbnMgb2YgdGhlIEJpdG1hcE9yIG5vZGUuCi0gKgotICoJCVJldHVybnMgbm90aGluZyBvZiBp bnRlcmVzdC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0VuZEJpdG1hcE9yKEJpdG1hcE9y U3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqYml0bWFwcGxhbnM7Ci0JaW50CQkJbnBsYW5z OwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0J ICovCi0JYml0bWFwcGxhbnMgPSBub2RlLT5iaXRtYXBwbGFuczsKLQlucGxhbnMgPSBub2RlLT5u cGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucyAodGhhdCB3 ZSd2ZSBpbml0aWFsaXplZCkKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0J ewotCQlpZiAoYml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7 Ci0JfQorCS8qIE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGluIGJpdG1hcHBsYW5zIGFyZSBj bG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9y ZWlnbnNjYW4uYwppbmRleCBjMjEzOWFjY2EwLi5lNjYxNmRkNzE4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMzA5LDkgKzMwOSw3IEBAIEV4ZWNFbmRGb3JlaWdu U2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCWVsc2UKIAkJbm9kZS0+ZmR3cm91dGluZS0+ RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKLQkvKiBTaHV0IGRvd24gYW55IG91dGVyIHBsYW4uICov Ci0JaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQotCQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0 ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogCiAJLyog RnJlZSB0aGUgZXhwcmNvbnRleHQgKi8KIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5w cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggMzA3ZmMxMGVlYS4uZjdhNjlmMTg1 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ4LDcgKzI0OCw3IEBAIEV4ZWNH YXRoZXIoUGxhblN0YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kR2F0aGVyKEdhdGhlclN0YXRl ICpub2RlKQogewotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNo aWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0 ZWx5LiAqLwogCUV4ZWNTaHV0ZG93bkdhdGhlcihub2RlKTsKIAlFeGVjRnJlZUV4cHJDb250ZXh0 KCZub2RlLT5wcyk7CiAJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKaW5kZXggOWQ1ZTFhNDZlOS4uZDM1N2ZmMGM0NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAgLTI4OCw3ICsyODgsNyBA QCBFeGVjR2F0aGVyTWVyZ2UoUGxhblN0YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kR2F0aGVy TWVyZ2UoR2F0aGVyTWVyZ2VTdGF0ZSAqbm9kZSkKIHsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5T dGF0ZShub2RlKSk7CS8qIGxldCBjaGlsZHJlbiBjbGVhbiB1cCBmaXJzdCAqLworCS8qIG91dGVy UGxhbiBpcyBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIAlFeGVjU2h1dGRvd25HYXRoZXJNZXJnZShu b2RlKTsKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7CiAJaWYgKG5vZGUtPnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH cm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggMjVhMTYxODk1 Mi4uMmJhZGNjN2U2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3Vw LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAgLTIyNiwxNSArMjI2 LDEyIEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogdm9pZAogRXhlY0VuZEdyb3VwKEdyb3VwU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRl ICAqb3V0ZXJQbGFuOwotCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCiAJ LyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KTsKIAotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4 ZWNFbmROb2RlKG91dGVyUGxhbik7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5 LiAqLwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCA4YjVjMzViODJiLi5l ZGQyMzI0Mzg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTQxMywxOCArNDEzLDEyIEBA IEV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZv aWQKIEV4ZWNFbmRIYXNoKEhhc2hTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBs YW47Ci0KIAkvKgogCSAqIGZyZWUgZXhwcmNvbnRleHQKIAkgKi8KIAlFeGVjRnJlZUV4cHJDb250 ZXh0KCZub2RlLT5wcyk7CiAKLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwot CW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxh bik7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggOTgwNzQ2MTI4Yi4uODA3OGQ3ZjIyOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTg3OSwxMSArODc5LDcgQEAgRXhlY0Vu ZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpf T3V0ZXJUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3Qp OwogCi0JLyoKLQkgKiBjbGVhbiB1cCBzdWJ0cmVlcwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CisJ Lyogb3V0ZXJQbGFuIGFuZCBpbm5lclBsYW4gYXJlIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29y dC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IDc2 ODNlMzM0MWMuLjUyYjE0NmNmYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVt ZW50YWxTb3J0LmMKQEAgLTExMDEsMTAgKzExMDEsNyBAQCBFeGVjRW5kSW5jcmVtZW50YWxTb3J0 KEluY3JlbWVudGFsU29ydFN0YXRlICpub2RlKQogCQlub2RlLT5wcmVmaXhzb3J0X3N0YXRlID0g TlVMTDsKIAl9CiAKLQkvKgotCSAqIFNodXQgZG93biB0aGUgc3VicGxhbi4KLQkgKi8KLQlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBz ZXBhcmF0ZWx5LiAqLwogCiAJU09fcHJpbnRmKCJFeGVjRW5kSW5jcmVtZW50YWxTb3J0OiBzb3J0 IG5vZGUgc2h1dGRvd25cbiIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA0MjVm YmZjNDA1Li5hNzUwOTlkZDczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM1LDcg KzUzNSw3IEBAIHZvaWQKIEV4ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShu b2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggZTQ1OTk3MWQzMi4uNTVkZThkM2Q2NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTM4Niw3ICszODYsNyBAQCBFeGVj RW5kTG9ja1Jvd3MoTG9ja1Jvd3NTdGF0ZSAqbm9kZSkKIHsKIAkvKiBXZSBtYXkgaGF2ZSBzaHV0 IGRvd24gRVBRIGFscmVhZHksIGJ1dCBubyBoYXJtIGluIGFub3RoZXIgY2FsbCAqLwogCUV2YWxQ bGFuUXVhbEVuZCgmbm9kZS0+bHJfZXBxc3RhdGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0 YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gaXMgY2xvc2VkIHNlcGFyYXRlbHkuICovCiB9CiAK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCAwOTYzMjY3OGIwLi5lZjA0ZTlh OGU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjUxLDEwICsyNTEsNyBA QCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkJdHVwbGVzdG9yZV9lbmQo bm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKIAlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOwog Ci0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRl clBsYW5TdGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAq LwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0ZjA0 MjY5ZTI2Li42MTU3OGQ0YjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTEx MDAsMTAgKzExMDAsNyBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJICov CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCi0JLyoKLQkgKiBzaHV0IGRv d24gdGhlIHN1YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7 CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDIxYjU3MjZlNmUuLjhhYTY0OTQ0 YzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0zMTAsMzAgKzMx MCwxMiBAQCBoZWFwX2NvbXBhcmVfc2xvdHMoRGF0dW0gYSwgRGF0dW0gYiwgdm9pZCAqYXJnKQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZE1lcmdlQXBwZW5kCi0gKgotICoJCVNodXRzIGRvd24g dGhlIHN1YnNjYW5zIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlLgotICoKLSAqCQlSZXR1cm5zIG5v dGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNFbmRNZXJnZUFw cGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnM7 Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBm cm9tIHRoZSBub2RlCi0JICovCi0JbWVyZ2VwbGFucyA9IG5vZGUtPm1lcmdlcGxhbnM7Ci0JbnBs YW5zID0gbm9kZS0+bXNfbnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUg c3Vic2NhbnMKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JCUV4ZWNFbmRO b2RlKG1lcmdlcGxhbnNbaV0pOworCS8qIE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGluIG1l cmdlcGxhbnMgYXJlIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMDBmOTZkMDQ1ZS4uN2I1MzBkOTA4OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTY1NCwxMSArMTY1NCw3IEBAIEV4ZWNF bmRNZXJnZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+ anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5tal9NYXJr ZWRUdXBsZVNsb3QpOwogCi0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW5zCi0JICovCi0J RXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gYW5kIGlubmVyUGxhbiBhcmUgY2xvc2VkIHNl cGFyYXRlbHkuICovCiAKIAlNSjFfcHJpbnRmKCJFeGVjRW5kTWVyZ2VKb2luOiAlc1xuIiwKIAkJ CSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKaW5kZXggMmE1ZmVjOGQwMS4uYmRiYWE0NzUzYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQzOTcsNyArNDM5Nyw3IEBAIEV4ZWNJbml0TW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUV4ZWNFbmRNb2RpZnlUYWJsZQogICoKLSAqCQlTaHV0cyBkb3duIHRoZSBw bGFuLgorICoJCVJlbGVhc2VzIE1vZGlmeVRhYmxlIHJlc291cmNlcy4KICAqCiAgKgkJUmV0dXJu cyBub3RoaW5nIG9mIGludGVyZXN0LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDQ2MSwxMCArNDQ2MSw3IEBA IEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCSAqLwogCUV2YWxQ bGFuUXVhbEVuZCgmbm9kZS0+bXRfZXBxc3RhdGUpOwogCi0JLyoKLQkgKiBzaHV0IGRvd24gc3Vi cGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwkvKiBvdXRl clBsYW4gaXMgY2xvc2VkIHNlcGFyYXRlbHkuICovCiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU5lc3Rsb29wLmMKaW5kZXggYjNkNTJlNjllYy4uNWNmYjUwYTM2NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTM3NCwxMSArMzc0LDcgQEAgRXhlY0VuZE5lc3RMb29w KE5lc3RMb29wU3RhdGUgKm5vZGUpCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAq LwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5l clBsYW5TdGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGFuZCBpbm5lclBsYW4gYXJlIGNsb3Nl ZCBzZXBhcmF0ZWx5LiAqLwogCiAJTkwxX3ByaW50ZigiRXhlY0VuZE5lc3RMb29wOiAlc1xuIiwK IAkJCSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJv amVjdFNldC5jCmluZGV4IGY2ZmYzZGM0NGMuLjRhMzg4MjIwZWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVByb2plY3RTZXQuYwpAQCAtMzMwLDEwICszMzAsNyBAQCBFeGVjRW5kUHJvamVjdFNl dChQcm9qZWN0U2V0U3RhdGUgKm5vZGUpCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKIAotCS8qCi0JICogc2h1dCBkb3duIHN1YnBsYW5zCi0JICov Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCS8qIG91dGVyUGxhbiBpcyBj bG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAzOTM0Li5hZWUzMWM3MTM5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtMjgxLDExICsyODEsNyBAQCBF eGVjRW5kUmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSkKIAlpZiAobm9k ZS0+dGFibGVDb250ZXh0KQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4 dCk7CiAKLQkvKgotCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7Ci0JRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCS8qIG91dGVyUGxhbiBhbmQgaW5uZXJQbGFuIGFyZSBjbG9zZWQgc2VwYXJhdGVseS4gKi8K IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl c3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IDQyMTk3MTJk MzAuLmExMDBiMTQ0YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1 bHQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTI1MCwxMCAr MjUwLDcgQEAgRXhlY0VuZFJlc3VsdChSZXN1bHRTdGF0ZSAqbm9kZSkKIAkgKi8KIAlFeGVjQ2xl YXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCi0JLyoKLQkgKiBzaHV0IGRv d24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJ Lyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXRPcC5jCmluZGV4IDRiYzI0MDZiODkuLmY3ZGI5YTM0MTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXRPcC5jCkBAIC01OTAsNyArNTkwLDcgQEAgRXhlY0VuZFNldE9wKFNldE9wU3Rh dGUgKm5vZGUpCiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKIAlF eGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7CiAKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5T dGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQog CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGM2YzcyYzZlNjcuLjA3OGQwNDFjNDAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMzE3LDEwICszMTcsNyBAQCBFeGVjRW5kU29ydChT b3J0U3RhdGUgKm5vZGUpCiAJCXR1cGxlc29ydF9lbmQoKFR1cGxlc29ydHN0YXRlICopIG5vZGUt PnR1cGxlc29ydHN0YXRlKTsKIAlub2RlLT50dXBsZXNvcnRzdGF0ZSA9IE5VTEw7CiAKLQkvKgot CSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0 YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gaXMgY2xvc2VkIHNlcGFyYXRlbHkuICovCiAKIAlT TzFfcHJpbnRmKCJFeGVjRW5kU29ydDogJXNcbiIsCiAJCQkgICAic29ydCBub2RlIHNodXRkb3du Iik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggNDI0NzFiZmMw NC4uYmM1NWE4MmZjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1 ZXJ5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpA QCAtMTc5LDEwICsxNzksNyBAQCBFeGVjRW5kU3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhblN0YXRl ICpub2RlKQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCi0JLyoKLQkg KiBjbG9zZSBkb3duIHN1YnF1ZXJ5Ci0JICovCi0JRXhlY0VuZE5vZGUobm9kZS0+c3VicGxhbik7 CisJLyogc3VicGxhbiBpcyBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4IDQ1MDM1ZDc0ZmEuLjUwYmFiYWNkYzggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAgLTE3Myw3ICsxNzMsNyBAQCBFeGVjRW5kVW5p cXVlKFVuaXF1ZVN0YXRlICpub2RlKQogCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMp OwogCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCS8qIG91dGVyUGxhbiBp cyBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMKaW5kZXggMzEwYWMyM2UzYS4uNjQ4Y2RhZGMzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYwpAQCAtMjY4MSw3ICsyNjgxLDYgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2lu ZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRX aW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFu OwogCWludAkJCWk7CiAKIAlyZWxlYXNlX3BhcnRpdGlvbihub2RlKTsKQEAgLTI3MTQsOCArMjcx Myw3IEBAIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiAJcGZyZWUobm9k ZS0+cGVyZnVuYyk7CiAJcGZyZWUobm9kZS0+cGVyYWdnKTsKIAotCW91dGVyUGxhbiA9IG91dGVy UGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CisJLyogb3V0ZXJQbGFu IGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5Li4yMzNmYjZiNGY5IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtNjcxLDYgKzY3MSw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCiAJTGlz dAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0 YXRlICovCiAKKwlMaXN0CSAgICplc19wbGFuc3RhdGVfbm9kZXM7IC8qICJmbGF0IiBsaXN0IG9m IFBsYW5TdGF0ZSBub2RlcyAqLworCiAJTGlzdAkgICAqZXNfc3VicGxhbnN0YXRlczsJLyogTGlz dCBvZiBQbGFuU3RhdGUgZm9yIFN1YlBsYW5zICovCiAKIAlMaXN0CSAgICplc19hdXhtb2RpZnl0 YWJsZXM7IC8qIExpc3Qgb2Ygc2Vjb25kYXJ5IE1vZGlmeVRhYmxlU3RhdGVzICovCi0tIAoyLjM1 LjMKCg== --00000000000060a6b1060200b2c3--