Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nPRai-0000ve-Tu for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Mar 2022 16:12:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nPRah-00009O-8y for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Mar 2022 16:12:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nPRag-000092-QQ for pgsql-hackers@lists.postgresql.org; Wed, 02 Mar 2022 16:12:38 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nPRad-0003xW-Km for pgsql-hackers@lists.postgresql.org; Wed, 02 Mar 2022 16:12:38 +0000 Received: by mail-ed1-x52c.google.com with SMTP id s1so2907368edd.13 for ; Wed, 02 Mar 2022 08:12:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=D4CQr6UreRWAva9VlOtJ8TJTBhK0Tf/h1SNODZ4UPUw=; b=PDMQuwpEWq6A3jCCJo21nT3484VcrD8usN+AEgbXXZNM4ikFd2CO75Y/xyMZ3SrzEG z+j0jaDnlkYwdDCSAfovFgQ9kU8M8puWc6+FpEqZHXqRMjlsJtAReHz2fTZYPOchf9fb phM0cPgDSYkn53DBKrHeNjHQtG51rBTfaQQunNfwfIkATE7j6wvHgNRmPTu+XHnovDKB 3DWE3qP95zwjUU3/H9Am5VwRP04pGv7UFWSvLa68zg2laZ3bxd/tXx75EEJwtKGNKvbA zdvANIKN+ocec3tdUQa5FlRrA0V5VBPD3WBncyWUXGfLlShbdFGiZwRWkn9YkKGP4lcA utDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=D4CQr6UreRWAva9VlOtJ8TJTBhK0Tf/h1SNODZ4UPUw=; b=vW0U/3JRt0ddG9u3RyLXPKE+YdfAXogGbLUD2oPHJ2lg14A32skSFXcYDv20oSwQZ/ NxopJ0RQC8VQ/To2eRHzwA6F23suynfkmigETDyLoMcJwK/FroUl+ELdJy/pKm555DCu L+xPpMWeBVkPYl1v8hk/YpuCKNe0jS2i0AhMPfEEaAhowN6FKqji3jdGeHP5V+1KWhjz mGP7GWjmF5t1+ezJpStY01T4gocGayVI7nQNQX3YDUfpTXrObEs2Dc9nb3KChJwjX3xV R5/Z4j1eWhdN2/6fID3oE6LqepRn6ySk4eMHxfacoJpYvduhXU+Dm89mk/rLxWgq/n3z 1aXg== X-Gm-Message-State: AOAM533/t+X7GsUvfKR0sqjokCbPwLyJhbd6+KR2wgJ7dL5utensAgL8 ljTg3g5AcNeC+NtC0fWLijY4yfprbXipMMNSs98= X-Google-Smtp-Source: ABdhPJy0lXYv89wGajQ/wA36m0qFYggDA9yvRmOd7q782wX7820c8ivn1YitbQQzzU52E8jyDkq8ROgMT7Ci+zIhHz8= X-Received: by 2002:a05:6402:268c:b0:411:e086:b7d1 with SMTP id w12-20020a056402268c00b00411e086b7d1mr30086778edd.111.1646237554207; Wed, 02 Mar 2022 08:12:34 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Wed, 2 Mar 2022 21:42:11 +0530 Message-ID: Subject: Re: Handle infinite recursion in logical replication setup To: "kuroda.hayato@fujitsu.com" Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a29eb905d93e8c3a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a29eb905d93e8c3a Content-Type: text/plain; charset="UTF-8" On Tue, Mar 1, 2022 at 4:12 PM kuroda.hayato@fujitsu.com wrote: > > Hi Vignesh, > > > In logical replication, currently Walsender sends the data that is > > generated locally and the data that are replicated from other > > instances. This results in infinite recursion in circular logical > > replication setup. > > Thank you for good explanation. I understand that this fix can be used > for a bidirectional replication. > > > Here there are two problems for the user: a) incremental > > synchronization of table sending both local data and replicated data > > by walsender b) Table synchronization of table using copy command > > sending both local data and replicated data > > So you wanted to solve these two problem and currently focused on > the first one, right? We can check one by one. > > > For the first problem "Incremental synchronization of table by > > Walsender" can be solved by: > > Currently the locally generated data does not have replication origin > > associated and the data that has originated from another instance will > > have a replication origin associated. We could use this information to > > differentiate locally generated data and replicated data and send only > > the locally generated data. This "only_local" could be provided as an > > option while subscription is created: > > ex: CREATE SUBSCRIPTION sub1 CONNECTION 'dbname =postgres port=5433' > > PUBLICATION pub1 with (only_local = on); > > Sounds good, but I cannot distinguish whether the assumption will keep. > > I played with your patch, but it could not be applied to current master. > I tested from bd74c40 and I confirmed infinite loop was not appeared. Rebased the patch on top of head > local_only could not be set from ALTER SUBSCRIPTION command. > Is it expected? Modified Thanks for the comments, the attached patch has the changes for the same. Regards, Vignesh --000000000000a29eb905d93e8c3a Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Skip-replication-of-non-local-data.patch" Content-Disposition: attachment; filename="v2-0001-Skip-replication-of-non-local-data.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l09razu40 RnJvbSA3YzY3Y2MyMzU4NGUxMTA2ZmJmMjAxMWM4YzY2NTg0NDIxMjVlNDhmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNod2FyYW4gQyA8dmlnbmVzaDIxQGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyIE1hciAyMDIyIDIwOjQwOjM0ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2Ml0g U2tpcCByZXBsaWNhdGlvbiBvZiBub24gbG9jYWwgZGF0YS4KCkFkZCBhbiBvcHRpb24gb25seV9s b2NhbCB3aGljaCB3aWxsIHN1YnNjcmliZSBvbmx5IHRvIHRoZSBsb2NhbGx5CmdlbmVyYXRlZCBk YXRhIGluIHRoZSBwdWJsaXNoZXIgbm9kZS4gSWYgc3Vic2NyaWJlciBpcyBjcmVhdGVkIHdpdGgg dGhpcwpvcHRpb24sIHB1Ymxpc2hlciB3aWxsIHNraXAgcHVibGlzaGluZyB0aGUgZGF0YSB0aGF0 IHdhcyBzdWJzY3JpYmVkCmZyb20gb3RoZXIgbm9kZXMuIEl0IGNhbiBiZSBjcmVhdGVkIHVzaW5n IGZvbGxvd2luZyBzeW50YXg6CmV4OiBDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEgQ09OTkVDVElP TiAnZGJuYW1lID1wb3N0Z3JlcyBwb3J0PTk5OTknIFBVQkxJQ0FUSU9OIHB1YjEgd2l0aCAob25s eV9sb2NhbCA9IG9uKTsKLS0tCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5j ICAgICAgICAgfCAgMTMgKysrCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5z Z21sICAgICAgfCAgIDMgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sICAgICB8ICAxMiArKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAg ICAgIHwgIDI5ICsrKystCiAuLi4vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMg ICAgICAgfCAgMTggKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j ICAgICAgfCAgMzYgKysrKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2lj YWwuYyAgICAgfCAgMzUgKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jICAgfCAgMjUgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAg ICAgICAgICAgfCAgMTggKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5j ICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAg ICAgICAgICB8ICAyMSArKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAg ICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAg ICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWwuaCAgICAgICAg ICAgICB8ICAgNCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggICAg ICAgfCAgIDcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8 ICAgOCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwg ICA1ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAg IDQgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgIHwgICA0 ICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOV9jaXJjdWxhci5wbCAgICAgICB8IDEwOCAr KysrKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg ICAgICAgICB8ICAgMSArCiAyOSBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5zZXJ0aW9ucygrKSwgMzkg ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDI5X2NpcmN1bGFyLnBsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3Rf ZGVjb2RpbmcuYyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKaW5kZXgg ZWEyMjY0OWU0MS4uNThiYzVkYmMxYyAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5n L3Rlc3RfZGVjb2RpbmcuYworKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGlu Zy5jCkBAIC03Myw2ICs3Myw4IEBAIHN0YXRpYyB2b2lkIHBnX2RlY29kZV90cnVuY2F0ZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJICAgUmVvcmRlckJ1ZmZlckNoYW5nZSAq Y2hhbmdlKTsKIHN0YXRpYyBib29sIHBnX2RlY29kZV9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCSBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOworc3RhdGljIGJvb2wg cGdfZGVjb2RlX2ZpbHRlcl9yZW1vdGVkYXRhKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwK KwkJCQkJCQkJCQlSZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZvaWQgcGdfZGVjb2Rl X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSAgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAogCQkJCQkJCSAgYm9vbCB0cmFu c2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCkBAIC0xNDgsNiArMTUwLDcgQEAgX1BHX291 dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT50cnVuY2F0 ZV9jYiA9IHBnX2RlY29kZV90cnVuY2F0ZTsKIAljYi0+Y29tbWl0X2NiID0gcGdfZGVjb2RlX2Nv bW1pdF90eG47CiAJY2ItPmZpbHRlcl9ieV9vcmlnaW5fY2IgPSBwZ19kZWNvZGVfZmlsdGVyOwor CWNiLT5maWx0ZXJfcmVtb3RlZGF0YV9jYiA9IHBnX2RlY29kZV9maWx0ZXJfcmVtb3RlZGF0YTsK IAljYi0+c2h1dGRvd25fY2IgPSBwZ19kZWNvZGVfc2h1dGRvd247CiAJY2ItPm1lc3NhZ2VfY2Ig PSBwZ19kZWNvZGVfbWVzc2FnZTsKIAljYi0+c2VxdWVuY2VfY2IgPSBwZ19kZWNvZGVfc2VxdWVu Y2U7CkBAIC00ODQsNiArNDg3LDE2IEBAIHBnX2RlY29kZV9maWx0ZXIoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LAogCXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wKK3BnX2RlY29k ZV9maWx0ZXJfcmVtb3RlZGF0YShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJ ICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpCit7CisJVGVzdERlY29kaW5nRGF0YSAqZGF0YSA9IGN0 eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJaWYgKGRhdGEtPm9ubHlfbG9jYWwgJiYgb3Jp Z2luX2lkICE9IEludmFsaWRSZXBPcmlnaW5JZCkKKwkJcmV0dXJuIHRydWU7CisJcmV0dXJuIGZh bHNlOworfQogLyoKICAqIFByaW50IGxpdGVyYWwgYG91dHB1dHN0cicgYWxyZWFkeSByZXByZXNl bnRlZCBhcyBzdHJpbmcgb2YgdHlwZSBgdHlwaWQnCiAgKiBpbnRvIHN0cmluZ2J1ZiBgcycuCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbAppbmRleCAwZDZmMDY0ZjU4Li5i ZDJlZjE5Y2NlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKQEAg LTIwNCw3ICsyMDQsOCBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPAogICAgICAgaW5mb3JtYXRp b24uICBUaGUgcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBhbHRlcmVkCiAgICAgICBhcmUgPGxpdGVy YWw+c2xvdF9uYW1lPC9saXRlcmFsPiwKICAgICAgIDxsaXRlcmFsPnN5bmNocm9ub3VzX2NvbW1p dDwvbGl0ZXJhbD4sCi0gICAgICA8bGl0ZXJhbD5iaW5hcnk8L2xpdGVyYWw+LCBhbmQKKyAgICAg IDxsaXRlcmFsPmJpbmFyeTwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5vbmx5X2xvY2FsPC9s aXRlcmFsPiwgYW5kCiAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+LgogICAgICA8 L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKaW5kZXggZTgwYTI2MTdhMy4uYjU1NTJkYzU4YyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTE1Miw2ICsxNTIsMTggQEAgQ1JFQVRFIFNV QlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25h bWU8L3JlcGxhY2VhYmwKICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRy eT4KIAorICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPm9ubHlf bG9jYWw8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRo ZSBzdWJzY3JpcHRpb24gc2hvdWxkIHN1YnNjcmliZSBvbmx5IHRvIHRoZQorICAgICAgICAgIGxv Y2FsbHkgZ2VuZXJhdGVkIGNoYW5nZXMgb3Igc3Vic2NyaWJlIHRvIGJvdGggdGhlIGxvY2FsbHkg Z2VuZXJhdGVkCisgICAgICAgICAgY2hhbmdlcyBhbmQgdGhlIHJlcGxpY2F0ZWQgZGF0YSBwcmVz ZW50IGZyb20gdGhlIHB1Ymxpc2hlci4gIFRoZQorICAgICAgICAgIGRlZmF1bHQgaXMgPGxpdGVy YWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVt PgorICAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAg ICAgPHRlcm0+PGxpdGVyYWw+c2xvdF9uYW1lPC9saXRlcmFsPiAoPHR5cGU+c3RyaW5nPC90eXBl Pik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCmluZGV4IGNhNjVhOGJkMjAuLjk0ZTA5NmU1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uYwpAQCAtNjksNiArNjksNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1 YmlkLCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5iaW5hcnkgPSBzdWJmb3JtLT5zdWJiaW5hcnk7 CiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRl ID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKKwlzdWItPm9ubHlsb2NhbGRhdGEgPSBzdWJm b3JtLT5zdWJvbmx5bG9jYWxkYXRhOwogCiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBT eXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCmluZGV4IDQwYjdiY2E1YTkuLmM3NjUzMjk4YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKQEAgLTk1OCw3ICs5NTgsOCBAQCBDUkVBVEUgVklFVyBwZ19yZXBsaWNh dGlvbl9zbG90cyBBUwogICAgICAgICAgICAgTC5jb25maXJtZWRfZmx1c2hfbHNuLAogICAgICAg ICAgICAgTC53YWxfc3RhdHVzLAogICAgICAgICAgICAgTC5zYWZlX3dhbF9zaXplLAotICAgICAg ICAgICAgTC50d29fcGhhc2UKKyAgICAgICAgICAgIEwudHdvX3BoYXNlLAorICAgICAgICAgICAg TC5vbmx5X2xvY2FsCiAgICAgRlJPTSBwZ19nZXRfcmVwbGljYXRpb25fc2xvdHMoKSBBUyBMCiAg ICAgICAgICAgICBMRUZUIEpPSU4gcGdfZGF0YWJhc2UgRCBPTiAoTC5kYXRvaWQgPSBELm9pZCk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCAzZWY2NjA3ZDI0 Li41YmUwMjExYWMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBA IC02MSw2ICs2MSw3IEBACiAjZGVmaW5lIFNVQk9QVF9CSU5BUlkJCQkJMHgwMDAwMDA4MAogI2Rl ZmluZSBTVUJPUFRfU1RSRUFNSU5HCQkJMHgwMDAwMDEwMAogI2RlZmluZSBTVUJPUFRfVFdPUEhB U0VfQ09NTUlUCQkweDAwMDAwMjAwCisjZGVmaW5lIFNVQk9QVF9PTkxZTE9DQUxfREFUQSAJCTB4 MDAwMDA0MDAKIAogLyogY2hlY2sgaWYgdGhlICd2YWwnIGhhcyAnYml0cycgc2V0ICovCiAjZGVm aW5lIElzU2V0KHZhbCwgYml0cykgICgoKHZhbCkgJiAoYml0cykpID09IChiaXRzKSkKQEAgLTgy LDYgKzgzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWJpbmFyeTsKIAlib29s CQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CisJYm9vbAkJb25seWxvY2FsX2RhdGE7CiB9 IFN1Yk9wdHM7CiAKIHN0YXRpYyBMaXN0ICpmZXRjaF90YWJsZV9saXN0KFdhbFJlY2VpdmVyQ29u biAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlvbnMpOwpAQCAtMTMwLDYgKzEzMiw4IEBAIHBhcnNl X3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRp b25zLAogCQlvcHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwor CWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX09OTFlMT0NBTF9EQVRBKSkKKwkJb3B0 cy0+b25seWxvY2FsX2RhdGEgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlmb3Jl YWNoKGxjLCBzdG10X29wdGlvbnMpCkBAIC0yMjgsNiArMjMyLDE1IEBAIHBhcnNlX3N1YnNjcmlw dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJ b3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlORzsKIAkJCW9wdHMtPnN0cmVh bWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKElzU2V0KHN1cHBv cnRlZF9vcHRzLCBTVUJPUFRfT05MWUxPQ0FMX0RBVEEpICYmCisJCQkJIHN0cmNtcChkZWZlbC0+ ZGVmbmFtZSwgIm9ubHlfbG9jYWwiKSA9PSAwKQorCQl7CisJCQlpZiAoSXNTZXQob3B0cy0+c3Bl Y2lmaWVkX29wdHMsIFNVQk9QVF9PTkxZTE9DQUxfREFUQSkpCisJCQkJZXJyb3JDb25mbGljdGlu Z0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CisKKwkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNV Qk9QVF9PTkxZTE9DQUxfREFUQTsKKwkJCW9wdHMtPm9ubHlsb2NhbF9kYXRhID0gZGVmR2V0Qm9v bGVhbihkZWZlbCk7CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdv X3BoYXNlIikgPT0gMCkKIAkJewogCQkJLyoKQEAgLTM5MCw3ICs0MDMsOCBAQCBDcmVhdGVTdWJz Y3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCXN1cHBvcnRlZF9vcHRzID0gKFNVQk9QVF9DT05ORUNUIHwgU1VCT1BUX0VOQUJMRUQgfCBT VUJPUFRfQ1JFQVRFX1NMT1QgfAogCQkJCQkgIFNVQk9QVF9TTE9UX05BTUUgfCBTVUJPUFRfQ09Q WV9EQVRBIHwKIAkJCQkJICBTVUJPUFRfU1lOQ0hST05PVVNfQ09NTUlUIHwgU1VCT1BUX0JJTkFS WSB8Ci0JCQkJCSAgU1VCT1BUX1NUUkVBTUlORyB8IFNVQk9QVF9UV09QSEFTRV9DT01NSVQpOwor CQkJCQkgIFNVQk9QVF9TVFJFQU1JTkcgfCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUIHwKKwkJCQkJ ICBTVUJPUFRfT05MWUxPQ0FMX0RBVEEpOwogCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBz dGF0ZSwgc3RtdC0+b3B0aW9ucywgc3VwcG9ydGVkX29wdHMsICZvcHRzKTsKIAogCS8qCkBAIC00 NjAsNiArNDc0LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuYmlu YXJ5KTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBCb29s R2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJvbmx5bG9jYWxkYXRhIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5vbmx5bG9jYWxfZGF0YSk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJ CUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0Vf U1RBVEVfUEVORElORyA6CkBAIC01NjUsNyArNTgwLDggQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBh cnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJdHdv cGhhc2VfZW5hYmxlZCA9IHRydWU7CiAKIAkJCQl3YWxyY3ZfY3JlYXRlX3Nsb3Qod3Jjb25uLCBv cHRzLnNsb3RfbmFtZSwgZmFsc2UsIHR3b3BoYXNlX2VuYWJsZWQsCi0JCQkJCQkJCSAgIENSU19O T0VYUE9SVF9TTkFQU0hPVCwgTlVMTCk7CisJCQkJCQkJCSAgIENSU19OT0VYUE9SVF9TTkFQU0hP VCwgTlVMTCwKKwkJCQkJCQkJICAgb3B0cy5vbmx5bG9jYWxfZGF0YSk7CiAKIAkJCQlpZiAodHdv cGhhc2VfZW5hYmxlZCkKIAkJCQkJVXBkYXRlVHdvUGhhc2VTdGF0ZShzdWJpZCwgTE9HSUNBTFJF UF9UV09QSEFTRV9TVEFURV9FTkFCTEVEKTsKQEAgLTg2NCw3ICs4ODAsNyBAQCBBbHRlclN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwK IAkJCXsKIAkJCQlzdXBwb3J0ZWRfb3B0cyA9IChTVUJPUFRfU0xPVF9OQU1FIHwKIAkJCQkJCQkJ ICBTVUJPUFRfU1lOQ0hST05PVVNfQ09NTUlUIHwgU1VCT1BUX0JJTkFSWSB8Ci0JCQkJCQkJCSAg U1VCT1BUX1NUUkVBTUlORyk7CisJCQkJCQkJCSAgU1VCT1BUX1NUUkVBTUlORyB8IFNVQk9QVF9P TkxZTE9DQUxfREFUQSk7CiAKIAkJCQlwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhwc3RhdGUs IHN0bXQtPm9wdGlvbnMsCiAJCQkJCQkJCQkJICAgc3VwcG9ydGVkX29wdHMsICZvcHRzKTsKQEAg LTkxMyw2ICs5MjksMTMgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBB bHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKKwkJCQlpZiAoSXNTZXQob3B0 cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX09OTFlMT0NBTF9EQVRBKSkKKwkJCQl7CisJCQkJCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvbmx5bG9jYWxkYXRhIC0gMV0gPQorCQkJCQkJ Qm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3Vib25seWxvY2FsZGF0YSAtIDFdID0gdHJ1ZTsKKwkJCQl9CisKIAkJCQl1cGRh dGVfdHVwbGUgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpp bmRleCAwZDg5ZGI0ZTZhLi4zMjZmNjA0MTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAt NzUsNyArNzUsOCBAQCBzdGF0aWMgY2hhciAqbGlicHFyY3ZfY3JlYXRlX3Nsb3QoV2FsUmVjZWl2 ZXJDb25uICpjb25uLAogCQkJCQkJCQkgIGJvb2wgdGVtcG9yYXJ5LAogCQkJCQkJCQkgIGJvb2wg dHdvX3BoYXNlLAogCQkJCQkJCQkgIENSU1NuYXBzaG90QWN0aW9uIHNuYXBzaG90X2FjdGlvbiwK LQkJCQkJCQkJICBYTG9nUmVjUHRyICpsc24pOworCQkJCQkJCQkgIFhMb2dSZWNQdHIgKmxzbiwK KwkJCQkJCQkJICBib29sIG9ubHlsb2NhbF9kYXRhKTsKIHN0YXRpYyBwaWRfdCBsaWJwcXJjdl9n ZXRfYmFja2VuZF9waWQoV2FsUmVjZWl2ZXJDb25uICpjb25uKTsKIHN0YXRpYyBXYWxSY3ZFeGVj UmVzdWx0ICpsaWJwcXJjdl9leGVjKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJCSAg IGNvbnN0IGNoYXIgKnF1ZXJ5LApAQCAtNDUzLDYgKzQ1NCwxMCBAQCBsaWJwcXJjdl9zdGFydHN0 cmVhbWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCQlQUXNlcnZlclZlcnNpb24oY29ubi0+ c3RyZWFtQ29ubikgPj0gMTUwMDAwKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAi LCB0d29fcGhhc2UgJ29uJyIpOwogCisJCWlmIChvcHRpb25zLT5wcm90by5sb2dpY2FsLm9ubHls b2NhbF9kYXRhICYmCisJCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTUw MDAwKQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCBvbmx5X2xvY2FsICdvbici KTsKKwogCQlwdWJuYW1lcyA9IG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFt ZXM7CiAJCXB1Ym5hbWVzX3N0ciA9IHN0cmluZ2xpc3RfdG9faWRlbnRpZmllcnN0cihjb25uLT5z dHJlYW1Db25uLCBwdWJuYW1lcyk7CiAJCWlmICghcHVibmFtZXNfc3RyKQpAQCAtODY5LDcgKzg3 NCw3IEBAIGxpYnBxcmN2X3NlbmQoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBjb25zdCBjaGFyICpi dWZmZXIsIGludCBuYnl0ZXMpCiBzdGF0aWMgY2hhciAqCiBsaWJwcXJjdl9jcmVhdGVfc2xvdChX YWxSZWNlaXZlckNvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RuYW1lLAogCQkJCQkgYm9vbCB0 ZW1wb3JhcnksIGJvb2wgdHdvX3BoYXNlLCBDUlNTbmFwc2hvdEFjdGlvbiBzbmFwc2hvdF9hY3Rp b24sCi0JCQkJCSBYTG9nUmVjUHRyICpsc24pCisJCQkJCSBYTG9nUmVjUHRyICpsc24sIGJvb2wg b25seWxvY2FsX2RhdGEpCiB7CiAJUEdyZXN1bHQgICAqcmVzOwogCVN0cmluZ0luZm9EYXRhIGNt ZDsKQEAgLTg5OSw2ICs5MDQsMTUgQEAgbGlicHFyY3ZfY3JlYXRlX3Nsb3QoV2FsUmVjZWl2ZXJD b25uICpjb25uLCBjb25zdCBjaGFyICpzbG90bmFtZSwKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cigmY21kLCAnICcpOwogCQl9CiAKKwkJaWYgKG9ubHlsb2NhbF9kYXRhKQorCQl7CisJCQlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICJPTkxZX0xPQ0FMIik7CisJCQlpZiAodXNlX25ld19v cHRpb25zX3N5bnRheCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsICIpOwor CQkJZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcgJyk7CisJCX0KKwogCQlp ZiAodXNlX25ld19vcHRpb25zX3N5bnRheCkKIAkJewogCQkJc3dpdGNoIChzbmFwc2hvdF9hY3Rp b24pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAxOGNmOTMx ODIyLi42MzA1YjkzZmM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMKQEAgLTU1NSw2ICs1NTUsMTUgQEAgRmlsdGVyQnlPcmlnaW4oTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBSZXBPcmlnaW5JZCBvcmlnaW5faWQpCiAJcmV0dXJuIGZpbHRlcl9ieV9vcmln aW5fY2Jfd3JhcHBlcihjdHgsIG9yaWdpbl9pZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAor RmlsdGVyUmVtb3RlT3JpZ2luRGF0YShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlcE9y aWdpbklkIG9yaWdpbl9pZCkKK3sKKwlpZiAoY3R4LT5jYWxsYmFja3MuZmlsdGVyX3JlbW90ZWRh dGFfY2IgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGZpbHRlcl9yZW1vdGVk YXRhX2NiX3dyYXBwZXIoY3R4LCBvcmlnaW5faWQpOworfQorCiAvKgogICogSGFuZGxlIHJtZ3Ig TE9HSUNBTE1TR19JRCByZWNvcmRzIGZvciBEZWNvZGVSZWNvcmRJbnRvUmVvcmRlckJ1ZmZlcigp LgogICovCkBAIC01ODUsNyArNTk0LDggQEAgbG9naWNhbG1zZ19kZWNvZGUoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJbWVzc2FnZSA9ICh4bF9s b2dpY2FsX21lc3NhZ2UgKikgWExvZ1JlY0dldERhdGEocik7CiAKIAlpZiAobWVzc2FnZS0+ZGJJ ZCAhPSBjdHgtPnNsb3QtPmRhdGEuZGF0YWJhc2UgfHwKLQkJRmlsdGVyQnlPcmlnaW4oY3R4LCBv cmlnaW5faWQpKQorCQlGaWx0ZXJCeU9yaWdpbihjdHgsIG9yaWdpbl9pZCkgfHwKKwkJRmlsdGVy UmVtb3RlT3JpZ2luRGF0YShjdHgsIG9yaWdpbl9pZCkpCiAJCXJldHVybjsKIAogCWlmIChtZXNz YWdlLT50cmFuc2FjdGlvbmFsICYmCkBAIC04NjQsNyArODc0LDggQEAgRGVjb2RlSW5zZXJ0KExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQlyZXR1 cm47CiAKIAkvKiBvdXRwdXQgcGx1Z2luIGRvZXNuJ3QgbG9vayBmb3IgdGhpcyBvcmlnaW4sIG5v IG5lZWQgdG8gcXVldWUgKi8KLQlpZiAoRmlsdGVyQnlPcmlnaW4oY3R4LCBYTG9nUmVjR2V0T3Jp Z2luKHIpKSkKKwlpZiAoRmlsdGVyQnlPcmlnaW4oY3R4LCBYTG9nUmVjR2V0T3JpZ2luKHIpKSB8 fAorCQlGaWx0ZXJSZW1vdGVPcmlnaW5EYXRhKGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkpCiAJ CXJldHVybjsKIAogCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJHZXRDaGFuZ2UoY3R4LT5yZW9yZGVy KTsKQEAgLTkxNCw3ICs5MjUsOCBAQCBEZWNvZGVVcGRhdGUoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCXJldHVybjsKIAogCS8qIG91dHB1dCBw bHVnaW4gZG9lc24ndCBsb29rIGZvciB0aGlzIG9yaWdpbiwgbm8gbmVlZCB0byBxdWV1ZSAqLwot CWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpKQorCWlmIChGaWx0 ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpIHx8CisJCUZpbHRlclJlbW90ZU9y aWdpbkRhdGEoY3R4LCBYTG9nUmVjR2V0T3JpZ2luKHIpKSkKIAkJcmV0dXJuOwogCiAJY2hhbmdl ID0gUmVvcmRlckJ1ZmZlckdldENoYW5nZShjdHgtPnJlb3JkZXIpOwpAQCAtOTgwLDcgKzk5Miw4 IEBAIERlY29kZURlbGV0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1ZikKIAkJcmV0dXJuOwogCiAJLyogb3V0cHV0IHBsdWdpbiBkb2Vzbid0IGxvb2sg Zm9yIHRoaXMgb3JpZ2luLCBubyBuZWVkIHRvIHF1ZXVlICovCi0JaWYgKEZpbHRlckJ5T3JpZ2lu KGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkpCisJaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExv Z1JlY0dldE9yaWdpbihyKSkgfHwKKwkJRmlsdGVyUmVtb3RlT3JpZ2luRGF0YShjdHgsIFhMb2dS ZWNHZXRPcmlnaW4ocikpKQogCQlyZXR1cm47CiAKIAljaGFuZ2UgPSBSZW9yZGVyQnVmZmVyR2V0 Q2hhbmdlKGN0eC0+cmVvcmRlcik7CkBAIC0xMDMyLDcgKzEwNDUsOCBAQCBEZWNvZGVUcnVuY2F0 ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJ cmV0dXJuOwogCiAJLyogb3V0cHV0IHBsdWdpbiBkb2Vzbid0IGxvb2sgZm9yIHRoaXMgb3JpZ2lu LCBubyBuZWVkIHRvIHF1ZXVlICovCi0JaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExvZ1JlY0dl dE9yaWdpbihyKSkpCisJaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExvZ1JlY0dldE9yaWdpbihy KSkgfHwKKwkJRmlsdGVyUmVtb3RlT3JpZ2luRGF0YShjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikp KQogCQlyZXR1cm47CiAKIAljaGFuZ2UgPSBSZW9yZGVyQnVmZmVyR2V0Q2hhbmdlKGN0eC0+cmVv cmRlcik7CkBAIC0xMDgyLDcgKzEwOTYsOCBAQCBEZWNvZGVNdWx0aUluc2VydChMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkJcmV0dXJuOwogCiAJ Lyogb3V0cHV0IHBsdWdpbiBkb2Vzbid0IGxvb2sgZm9yIHRoaXMgb3JpZ2luLCBubyBuZWVkIHRv IHF1ZXVlICovCi0JaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkp CisJaWYgKEZpbHRlckJ5T3JpZ2luKGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkgfHwKKwkJRmls dGVyUmVtb3RlT3JpZ2luRGF0YShjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpKQogCQlyZXR1cm47 CiAKIAkvKgpAQCAtMTE3NSw3ICsxMTkwLDggQEAgRGVjb2RlU3BlY0NvbmZpcm0oTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCXJldHVybjsKIAog CS8qIG91dHB1dCBwbHVnaW4gZG9lc24ndCBsb29rIGZvciB0aGlzIG9yaWdpbiwgbm8gbmVlZCB0 byBxdWV1ZSAqLwotCWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikp KQorCWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpIHx8CisJCUZp bHRlclJlbW90ZU9yaWdpbkRhdGEoY3R4LCBYTG9nUmVjR2V0T3JpZ2luKHIpKSkKIAkJcmV0dXJu OwogCiAJY2hhbmdlID0gUmVvcmRlckJ1ZmZlckdldENoYW5nZShjdHgtPnJlb3JkZXIpOwpAQCAt MTI1MCw3ICsxMjY2LDggQEAgRGVjb2RlVFhOTmVlZFNraXAoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiB7CiAJcmV0dXJuIChTbmFwQnVpbGRYYWN0 TmVlZHNTa2lwKGN0eC0+c25hcHNob3RfYnVpbGRlciwgYnVmLT5vcmlncHRyKSB8fAogCQkJKHR4 bl9kYmlkICE9IEludmFsaWRPaWQgJiYgdHhuX2RiaWQgIT0gY3R4LT5zbG90LT5kYXRhLmRhdGFi YXNlKSB8fAotCQkJY3R4LT5mYXN0X2ZvcndhcmQgfHwgRmlsdGVyQnlPcmlnaW4oY3R4LCBvcmln aW5faWQpKTsKKwkJCWN0eC0+ZmFzdF9mb3J3YXJkIHx8IEZpbHRlckJ5T3JpZ2luKGN0eCwgb3Jp Z2luX2lkKSB8fAorCQkJRmlsdGVyUmVtb3RlT3JpZ2luRGF0YShjdHgsIG9yaWdpbl9pZCkpOwog fQogCiAvKgpAQCAtMTMzNSw3ICsxMzUyLDggQEAgc2VxdWVuY2VfZGVjb2RlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQlyZXR1cm47CiAKIAkv KiBvdXRwdXQgcGx1Z2luIGRvZXNuJ3QgbG9vayBmb3IgdGhpcyBvcmlnaW4sIG5vIG5lZWQgdG8g cXVldWUgKi8KLQlpZiAoRmlsdGVyQnlPcmlnaW4oY3R4LCBYTG9nUmVjR2V0T3JpZ2luKHIpKSkK KwlpZiAoRmlsdGVyQnlPcmlnaW4oY3R4LCBYTG9nUmVjR2V0T3JpZ2luKHIpKSB8fAorCQlGaWx0 ZXJSZW1vdGVPcmlnaW5EYXRhKGN0eCwgWExvZ1JlY0dldE9yaWdpbihyKSkpCiAJCXJldHVybjsK IAogCXR1cGxlZGF0YSA9IFhMb2dSZWNHZXREYXRhKHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWwuYwppbmRleCA5MzRhYTEzZjJkLi4xOTU4NGVhZWE3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtMjQ2LDYgKzI0Niw4IEBA IFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCQko Y3R4LT5jYWxsYmFja3Muc3RyZWFtX3NlcXVlbmNlX2NiICE9IE5VTEwpIHx8CiAJCShjdHgtPmNh bGxiYWNrcy5zdHJlYW1fdHJ1bmNhdGVfY2IgIT0gTlVMTCk7CiAKKwljdHgtPm9ubHlsb2NhbF9k YXRhID0gY3R4LT5jYWxsYmFja3MuZmlsdGVyX3JlbW90ZWRhdGFfY2IgIT0gTlVMTDsKKwogCS8q CiAJICogc3RyZWFtaW5nIGNhbGxiYWNrcwogCSAqCkBAIC00NTEsNiArNDUzLDggQEAgQ3JlYXRl SW5pdERlY29kaW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJICovCiAJY3R4LT50d29w aGFzZSAmPSBzbG90LT5kYXRhLnR3b19waGFzZTsKIAorCWN0eC0+b25seWxvY2FsX2RhdGEgJj0g c2xvdC0+ZGF0YS5vbmx5bG9jYWxfZGF0YTsKKwogCWN0eC0+cmVvcmRlci0+b3V0cHV0X3Jld3Jp dGVzID0gY3R4LT5vcHRpb25zLnJlY2VpdmVfcmV3cml0ZXM7CiAKIAlyZXR1cm4gY3R4OwpAQCAt MTE3OCw2ICsxMTgyLDM3IEBAIGZpbHRlcl9ieV9vcmlnaW5fY2Jfd3JhcHBlcihMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFJlcE9yaWdpbklkIG9yaWdpbl9pZCkKIAlyZXR1cm4gcmV0Owog fQogCitib29sCitmaWx0ZXJfcmVtb3RlZGF0YV9jYl93cmFwcGVyKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwKKwkJCQkJCQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpCit7CisJTG9naWNh bEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxs YmFjazsKKwlib29sCQlyZXQ7CisKKwlBc3NlcnQoIWN0eC0+ZmFzdF9mb3J3YXJkKTsKKworCS8q IFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJc3Rh dGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAiZmlsdGVyX3JlbW90ZW9yaWdp biI7CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gSW52YWxpZFhMb2dSZWNQdHI7CisJZXJyY2Fs bGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxi YWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9y X2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwor CS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSBmYWxzZTsKKwor CS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLworCXJldCA9IGN0eC0+Y2Fs bGJhY2tzLmZpbHRlcl9yZW1vdGVkYXRhX2NiKGN0eCwgb3JpZ2luX2lkKTsKKworCS8qIFBvcCB0 aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxs YmFjay5wcmV2aW91czsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyB2b2lkCiBtZXNzYWdl X2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkgICBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCAxNjU5OTY0NTcx Li5mNTA5M2NlOGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKQEAgLTEyMjQsNyArMTIyNCw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9n UmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJSE9MRF9JTlRFUlJVUFRTKCk7CiAJd2FscmN2X2Ny ZWF0ZV9zbG90KExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sCiAJCQkJCSAgIHNsb3RuYW1lLCBmYWxz ZSAvKiBwZXJtYW5lbnQgKi8gLCBmYWxzZSAvKiB0d29fcGhhc2UgKi8gLAotCQkJCQkgICBDUlNf VVNFX1NOQVBTSE9ULCBvcmlnaW5fc3RhcnRwb3MpOworCQkJCQkgICBDUlNfVVNFX1NOQVBTSE9U LCBvcmlnaW5fc3RhcnRwb3MsIGZhbHNlIC8qIG9ubHlfbG9jYWwgKi8pOwogCVJFU1VNRV9JTlRF UlJVUFRTKCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK aW5kZXggN2UyNjdmNzk2MC4uYTEzYjgwMDdlNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCkBAIC0yOTYwLDYgKzI5NjAsNyBAQCBtYXliZV9yZXJlYWRfc3Vic2Ny aXB0aW9uKHZvaWQpCiAJCW5ld3N1Yi0+YmluYXJ5ICE9IE15U3Vic2NyaXB0aW9uLT5iaW5hcnkg fHwKIAkJbmV3c3ViLT5zdHJlYW0gIT0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbSB8fAogCQluZXdz dWItPm93bmVyICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8fAorCQluZXdzdWItPm9ubHlsb2Nh bGRhdGEgIT0gTXlTdWJzY3JpcHRpb24tPm9ubHlsb2NhbGRhdGEgfHwKIAkJIWVxdWFsKG5ld3N1 Yi0+cHVibGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zKSkKIAl7CiAJCWVy ZXBvcnQoTE9HLApAQCAtMzU2OSw2ICszNTcwLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlwdGlvbi0+ YmluYXJ5OwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNjcmlwdGlv bi0+c3RyZWFtOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOworCW9w dGlvbnMucHJvdG8ubG9naWNhbC5vbmx5bG9jYWxfZGF0YSA9IE15U3Vic2NyaXB0aW9uLT5vbmx5 bG9jYWxkYXRhOwogCiAJaWYgKCFhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJewpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggZWE1N2EwNDc3Zi4uMGM5 YjYwYmQ2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CkBAIC01NSw2ICs1NSw4IEBAIHN0YXRpYyB2b2lkIHBnb3V0cHV0X21lc3NhZ2UoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdl KTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOworc3RhdGljIGJv b2wgcGdvdXRwdXRfcmVtb3Rlb3JpZ2luX2ZpbHRlcihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCisJCQkJCQkJCQkJIFJlcE9yaWdpbklkIG9yaWdpbl9pZCk7CiBzdGF0aWMgdm9pZCBwZ291 dHB1dF9iZWdpbl9wcmVwYXJlX3R4bihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJ CQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogc3RhdGljIHZvaWQgcGdvdXRwdXRfcHJl cGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtMjE1LDYgKzIxNyw3IEBA IF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ Y29tbWl0X3ByZXBhcmVkX2NiID0gcGdvdXRwdXRfY29tbWl0X3ByZXBhcmVkX3R4bjsKIAljYi0+ cm9sbGJhY2tfcHJlcGFyZWRfY2IgPSBwZ291dHB1dF9yb2xsYmFja19wcmVwYXJlZF90eG47CiAJ Y2ItPmZpbHRlcl9ieV9vcmlnaW5fY2IgPSBwZ291dHB1dF9vcmlnaW5fZmlsdGVyOworCWNiLT5m aWx0ZXJfcmVtb3RlZGF0YV9jYiA9IHBnb3V0cHV0X3JlbW90ZW9yaWdpbl9maWx0ZXI7CiAJY2It PnNodXRkb3duX2NiID0gcGdvdXRwdXRfc2h1dGRvd247CiAKIAkvKiB0cmFuc2FjdGlvbiBzdHJl YW1pbmcgKi8KQEAgLTIzOSwxMSArMjQyLDEzIEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExp c3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29sCQltZXNzYWdlc19vcHRpb25f Z2l2ZW4gPSBmYWxzZTsKIAlib29sCQlzdHJlYW1pbmdfZ2l2ZW4gPSBmYWxzZTsKIAlib29sCQl0 d29fcGhhc2Vfb3B0aW9uX2dpdmVuID0gZmFsc2U7CisJYm9vbAkJb25seWxvY2FsX2RhdGFfZ2l2 ZW4gPSBmYWxzZTsKIAogCWRhdGEtPmJpbmFyeSA9IGZhbHNlOwogCWRhdGEtPnN0cmVhbWluZyA9 IGZhbHNlOwogCWRhdGEtPm1lc3NhZ2VzID0gZmFsc2U7CiAJZGF0YS0+dHdvX3BoYXNlID0gZmFs c2U7CisJZGF0YS0+b25seWxvY2FsX2RhdGEgPSBmYWxzZTsKIAogCWZvcmVhY2gobGMsIG9wdGlv bnMpCiAJewpAQCAtMzMyLDYgKzMzNywxNiBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0 ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEpCiAKIAkJCWRhdGEtPnR3b19waGFzZSA9IGRl ZkdldEJvb2xlYW4oZGVmZWwpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFt ZSwgIm9ubHlfbG9jYWwiKSA9PSAwKQorCQl7CisJCQlpZiAob25seWxvY2FsX2RhdGFfZ2l2ZW4p CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsK KwkJCW9ubHlsb2NhbF9kYXRhX2dpdmVuID0gdHJ1ZTsKKworCQkJZGF0YS0+b25seWxvY2FsX2Rh dGEgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJfQogCQllbHNlCiAJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIHBnb3V0cHV0IG9wdGlvbjogJXMiLCBkZWZlbC0+ZGVmbmFtZSk7CiAJfQpA QCAtMTQ1MCw2ICsxNDY1LDE2IEBAIHBnb3V0cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCXJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wKK3Bnb3V0 cHV0X3JlbW90ZW9yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJ CQkJCSBSZXBPcmlnaW5JZCBvcmlnaW5faWQpCit7CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBH T3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCWlmIChkYXRhLT5v bmx5bG9jYWxfZGF0YSAmJiBvcmlnaW5faWQgIT0gSW52YWxpZFJlcE9yaWdpbklkKQorCQlyZXR1 cm4gdHJ1ZTsKKwlyZXR1cm4gZmFsc2U7Cit9CiAvKgogICogU2h1dGRvd24gdGhlIG91dHB1dCBw bHVnaW4uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IGNhYTZiMjk3NTYuLmZlZDAxODI5 ZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTI1Myw3ICsyNTMsOCBAQCBSZXBsaWNhdGlv blNsb3RWYWxpZGF0ZU5hbWUoY29uc3QgY2hhciAqbmFtZSwgaW50IGVsZXZlbCkKICAqLwogdm9p ZAogUmVwbGljYXRpb25TbG90Q3JlYXRlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZGJfc3BlY2lm aWMsCi0JCQkJCSAgUmVwbGljYXRpb25TbG90UGVyc2lzdGVuY3kgcGVyc2lzdGVuY3ksIGJvb2wg dHdvX3BoYXNlKQorCQkJCQkgIFJlcGxpY2F0aW9uU2xvdFBlcnNpc3RlbmN5IHBlcnNpc3RlbmN5 LCBib29sIHR3b19waGFzZSwKKwkJCQkJICBib29sIG9ubHlsb2NhbF9kYXRhKQogewogCVJlcGxp Y2F0aW9uU2xvdCAqc2xvdCA9IE5VTEw7CiAJaW50CQkJaTsKQEAgLTMxMyw2ICszMTQsNyBAQCBS ZXBsaWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBkYl9zcGVjaWZpYywK IAlzbG90LT5kYXRhLnBlcnNpc3RlbmN5ID0gcGVyc2lzdGVuY3k7CiAJc2xvdC0+ZGF0YS50d29f cGhhc2UgPSB0d29fcGhhc2U7CiAJc2xvdC0+ZGF0YS50d29fcGhhc2VfYXQgPSBJbnZhbGlkWExv Z1JlY1B0cjsKKwlzbG90LT5kYXRhLm9ubHlsb2NhbF9kYXRhID0gb25seWxvY2FsX2RhdGE7CiAK IAkvKiBhbmQgdGhlbiBkYXRhIG9ubHkgcHJlc2VudCBpbiBzaGFyZWQgbWVtb3J5ICovCiAJc2xv dC0+anVzdF9kaXJ0aWVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCmlu ZGV4IDg4Njg5OWFmZDIuLjBlMGJjMWU5NDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5j cy5jCkBAIC00Miw3ICs0Miw4IEBAIGNyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KGNo YXIgKm5hbWUsIGJvb2wgaW1tZWRpYXRlbHlfcmVzZXJ2ZSwKIAogCS8qIGFjcXVpcmUgcmVwbGlj YXRpb24gc2xvdCwgdGhpcyB3aWxsIGNoZWNrIGZvciBjb25mbGljdGluZyBuYW1lcyAqLwogCVJl cGxpY2F0aW9uU2xvdENyZWF0ZShuYW1lLCBmYWxzZSwKLQkJCQkJCSAgdGVtcG9yYXJ5ID8gUlNf VEVNUE9SQVJZIDogUlNfUEVSU0lTVEVOVCwgZmFsc2UpOworCQkJCQkJICB0ZW1wb3JhcnkgPyBS U19URU1QT1JBUlkgOiBSU19QRVJTSVNURU5ULAorCQkJCQkJICBmYWxzZSwgZmFsc2UpOwogCiAJ aWYgKGltbWVkaWF0ZWx5X3Jlc2VydmUpCiAJewpAQCAtMTE4LDcgKzExOSw4IEBAIHN0YXRpYyB2 b2lkCiBjcmVhdGVfbG9naWNhbF9yZXBsaWNhdGlvbl9zbG90KGNoYXIgKm5hbWUsIGNoYXIgKnBs dWdpbiwKIAkJCQkJCQkJYm9vbCB0ZW1wb3JhcnksIGJvb2wgdHdvX3BoYXNlLAogCQkJCQkJCQlY TG9nUmVjUHRyIHJlc3RhcnRfbHNuLAotCQkJCQkJCQlib29sIGZpbmRfc3RhcnRwb2ludCkKKwkJ CQkJCQkJYm9vbCBmaW5kX3N0YXJ0cG9pbnQsCisJCQkJCQkJCWJvb2wgb25seWxvY2FsX2RhdGEp CiB7CiAJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0gTlVMTDsKIApAQCAtMTMzLDcgKzEz NSw4IEBAIGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoY2hhciAqbmFtZSwgY2hhciAq cGx1Z2luLAogCSAqIGVycm9yIGFzIHdlbGwuCiAJICovCiAJUmVwbGljYXRpb25TbG90Q3JlYXRl KG5hbWUsIHRydWUsCi0JCQkJCQkgIHRlbXBvcmFyeSA/IFJTX1RFTVBPUkFSWSA6IFJTX0VQSEVN RVJBTCwgdHdvX3BoYXNlKTsKKwkJCQkJCSAgdGVtcG9yYXJ5ID8gUlNfVEVNUE9SQVJZIDogUlNf RVBIRU1FUkFMLCB0d29fcGhhc2UsCisJCQkJCQkgIG9ubHlsb2NhbF9kYXRhKTsKIAogCS8qCiAJ ICogQ3JlYXRlIGxvZ2ljYWwgZGVjb2RpbmcgY29udGV4dCB0byBmaW5kIHN0YXJ0IHBvaW50IG9y LCBpZiB3ZSBkb24ndApAQCAtMTcxLDYgKzE3NCw3IEBAIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxp Y2F0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKIAlOYW1lCQlwbHVnaW4gPSBQR19HRVRBUkdf TkFNRSgxKTsKIAlib29sCQl0ZW1wb3JhcnkgPSBQR19HRVRBUkdfQk9PTCgyKTsKIAlib29sCQl0 d29fcGhhc2UgPSBQR19HRVRBUkdfQk9PTCgzKTsKKwlib29sCQlvbmx5bG9jYWxfZGF0YSA9IFBH X0dFVEFSR19CT09MKDQpOwogCURhdHVtCQlyZXN1bHQ7CiAJVHVwbGVEZXNjCXR1cGRlc2M7CiAJ SGVhcFR1cGxlCXR1cGxlOwpAQCAtMTg5LDcgKzE5Myw4IEBAIHBnX2NyZWF0ZV9sb2dpY2FsX3Jl cGxpY2F0aW9uX3Nsb3QoUEdfRlVOQ1RJT05fQVJHUykKIAkJCQkJCQkJCXRlbXBvcmFyeSwKIAkJ CQkJCQkJCXR3b19waGFzZSwKIAkJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJ dHJ1ZSk7CisJCQkJCQkJCQl0cnVlLAorCQkJCQkJCQkJb25seWxvY2FsX2RhdGEpOwogCiAJdmFs dWVzWzBdID0gTmFtZUdldERhdHVtKCZNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5uYW1lKTsKIAl2 YWx1ZXNbMV0gPSBMU05HZXREYXR1bShNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5jb25maXJtZWRf Zmx1c2gpOwpAQCAtMjMxLDcgKzIzNiw3IEBAIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdChQR19G VU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElP Tl9BUkdTKQogewotI2RlZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNAorI2Rl ZmluZSBQR19HRVRfUkVQTElDQVRJT05fU0xPVFNfQ09MUyAxNQogCVJldHVyblNldEluZm8gKnJz aW5mbyA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKIAlUdXBsZURlc2MJ dHVwZGVzYzsKIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlOwpAQCAtNDI5LDYgKzQzNCw4IEBA IHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cyhQR19GVU5DVElPTl9BUkdTKQogCiAJCXZhbHVlc1tp KytdID0gQm9vbEdldERhdHVtKHNsb3RfY29udGVudHMuZGF0YS50d29fcGhhc2UpOwogCisJCXZh bHVlc1tpKytdID0gQm9vbEdldERhdHVtKHNsb3RfY29udGVudHMuZGF0YS5vbmx5bG9jYWxfZGF0 YSk7CisKIAkJQXNzZXJ0KGkgPT0gUEdfR0VUX1JFUExJQ0FUSU9OX1NMT1RTX0NPTFMpOwogCiAJ CXR1cGxlc3RvcmVfcHV0dmFsdWVzKHR1cHN0b3JlLCB0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKTsK QEAgLTc5NCw2ICs4MDEsNyBAQCBjb3B5X3JlcGxpY2F0aW9uX3Nsb3QoRnVuY3Rpb25DYWxsSW5m byBmY2luZm8sIGJvb2wgbG9naWNhbF9zbG90KQogCQkJCQkJCQkJCXRlbXBvcmFyeSwKIAkJCQkJ CQkJCQlmYWxzZSwKIAkJCQkJCQkJCQlzcmNfcmVzdGFydF9sc24sCisJCQkJCQkJCQkJZmFsc2Us CiAJCQkJCQkJCQkJZmFsc2UpOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuYwppbmRleCBjZWFmZjA5N2I5Li5jZmRlZmIxZjIyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTM3NCw3ICszNzQsNyBAQCBXYWxSZWNlaXZlck1haW4odm9p ZCkKIAkJCQkJICJwZ193YWxyZWNlaXZlcl8lbGxkIiwKIAkJCQkJIChsb25nIGxvbmcgaW50KSB3 YWxyY3ZfZ2V0X2JhY2tlbmRfcGlkKHdyY29ubikpOwogCi0JCQl3YWxyY3ZfY3JlYXRlX3Nsb3Qo d3Jjb25uLCBzbG90bmFtZSwgdHJ1ZSwgZmFsc2UsIDAsIE5VTEwpOworCQkJd2FscmN2X2NyZWF0 ZV9zbG90KHdyY29ubiwgc2xvdG5hbWUsIHRydWUsIGZhbHNlLCAwLCBOVUxMLCBmYWxzZSk7CiAK IAkJCVNwaW5Mb2NrQWNxdWlyZSgmd2FscmN2LT5tdXRleCk7CiAJCQlzdHJsY3B5KHdhbHJjdi0+ c2xvdG5hbWUsIHNsb3RuYW1lLCBOQU1FREFUQUxFTik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNl bmRlci5jCmluZGV4IDVhNzE4YjFmZTkuLmI4MjYzMjZiOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3dhbHNlbmRlci5jCkBAIC05NjMsMTIgKzk2MywxNCBAQCBzdGF0aWMgdm9pZAogcGFyc2VDcmVh dGVSZXBsU2xvdE9wdGlvbnMoQ3JlYXRlUmVwbGljYXRpb25TbG90Q21kICpjbWQsCiAJCQkJCQkg ICBib29sICpyZXNlcnZlX3dhbCwKIAkJCQkJCSAgIENSU1NuYXBzaG90QWN0aW9uICpzbmFwc2hv dF9hY3Rpb24sCi0JCQkJCQkgICBib29sICp0d29fcGhhc2UpCisJCQkJCQkgICBib29sICp0d29f cGhhc2UsCisJCQkJCQkgICBib29sICpvbmx5bG9jYWxfZGF0YSkKIHsKIAlMaXN0Q2VsbCAgICps YzsKIAlib29sCQlzbmFwc2hvdF9hY3Rpb25fZ2l2ZW4gPSBmYWxzZTsKIAlib29sCQlyZXNlcnZl X3dhbF9naXZlbiA9IGZhbHNlOwogCWJvb2wJCXR3b19waGFzZV9naXZlbiA9IGZhbHNlOworCWJv b2wJCW9ubHlsb2NhbF9kYXRhX2dpdmVuID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBvcHRpb25zICov CiAJZm9yZWFjaChsYywgY21kLT5vcHRpb25zKQpAQCAtMTAxOSw2ICsxMDIxLDE1IEBAIHBhcnNl Q3JlYXRlUmVwbFNsb3RPcHRpb25zKENyZWF0ZVJlcGxpY2F0aW9uU2xvdENtZCAqY21kLAogCQkJ dHdvX3BoYXNlX2dpdmVuID0gdHJ1ZTsKIAkJCSp0d29fcGhhc2UgPSBkZWZHZXRCb29sZWFuKGRl ZmVsKTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJvbmx5X2xvY2Fs IikgPT0gMCkKKwkJeworCQkJaWYgKG9ubHlsb2NhbF9kYXRhX2dpdmVuIHx8IGNtZC0+a2luZCAh PSBSRVBMSUNBVElPTl9LSU5EX0xPR0lDQUwpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5n IG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCW9ubHlsb2NhbF9kYXRhX2dpdmVuID0gdHJ1 ZTsKKwkJCSpvbmx5bG9jYWxfZGF0YSA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQl9CiAJCWVs c2UKIAkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb3B0aW9uOiAlcyIsIGRlZmVsLT5kZWZu YW1lKTsKIAl9CkBAIC0xMDM1LDYgKzEwNDYsNyBAQCBDcmVhdGVSZXBsaWNhdGlvblNsb3QoQ3Jl YXRlUmVwbGljYXRpb25TbG90Q21kICpjbWQpCiAJY2hhcgkgICAqc2xvdF9uYW1lOwogCWJvb2wJ CXJlc2VydmVfd2FsID0gZmFsc2U7CiAJYm9vbAkJdHdvX3BoYXNlID0gZmFsc2U7CisJYm9vbAkJ b25seWxvY2FsX2RhdGEgPSBmYWxzZTsKIAlDUlNTbmFwc2hvdEFjdGlvbiBzbmFwc2hvdF9hY3Rp b24gPSBDUlNfRVhQT1JUX1NOQVBTSE9UOwogCURlc3RSZWNlaXZlciAqZGVzdDsKIAlUdXBPdXRw dXRTdGF0ZSAqdHN0YXRlOwpAQCAtMTA0NCwxMyArMTA1NiwxNCBAQCBDcmVhdGVSZXBsaWNhdGlv blNsb3QoQ3JlYXRlUmVwbGljYXRpb25TbG90Q21kICpjbWQpCiAKIAlBc3NlcnQoIU15UmVwbGlj YXRpb25TbG90KTsKIAotCXBhcnNlQ3JlYXRlUmVwbFNsb3RPcHRpb25zKGNtZCwgJnJlc2VydmVf d2FsLCAmc25hcHNob3RfYWN0aW9uLCAmdHdvX3BoYXNlKTsKKwlwYXJzZUNyZWF0ZVJlcGxTbG90 T3B0aW9ucyhjbWQsICZyZXNlcnZlX3dhbCwgJnNuYXBzaG90X2FjdGlvbiwgJnR3b19waGFzZSwK KwkJCQkJCQkgICAmb25seWxvY2FsX2RhdGEpOwogCiAJaWYgKGNtZC0+a2luZCA9PSBSRVBMSUNB VElPTl9LSU5EX1BIWVNJQ0FMKQogCXsKIAkJUmVwbGljYXRpb25TbG90Q3JlYXRlKGNtZC0+c2xv dG5hbWUsIGZhbHNlLAogCQkJCQkJCSAgY21kLT50ZW1wb3JhcnkgPyBSU19URU1QT1JBUlkgOiBS U19QRVJTSVNURU5ULAotCQkJCQkJCSAgZmFsc2UpOworCQkJCQkJCSAgZmFsc2UsIGZhbHNlKTsK IAl9CiAJZWxzZQogCXsKQEAgLTEwNjUsNyArMTA3OCw3IEBAIENyZWF0ZVJlcGxpY2F0aW9uU2xv dChDcmVhdGVSZXBsaWNhdGlvblNsb3RDbWQgKmNtZCkKIAkJICovCiAJCVJlcGxpY2F0aW9uU2xv dENyZWF0ZShjbWQtPnNsb3RuYW1lLCB0cnVlLAogCQkJCQkJCSAgY21kLT50ZW1wb3JhcnkgPyBS U19URU1QT1JBUlkgOiBSU19FUEhFTUVSQUwsCi0JCQkJCQkJICB0d29fcGhhc2UpOworCQkJCQkJ CSAgdHdvX3BoYXNlLCBvbmx5bG9jYWxfZGF0YSk7CiAJfQogCiAJaWYgKGNtZC0+a2luZCA9PSBS RVBMSUNBVElPTl9LSU5EX0xPR0lDQUwpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggNjk1NzU2NzI2NC4u MDJhMWY5NmQxZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBi L3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMTgzNCw3ICsxODM0LDcgQEAgcHNxbF9j b21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJQ09NUExF VEVfV0lUSCgiKCIsICJQVUJMSUNBVElPTiIpOwogCS8qIEFMVEVSIFNVQlNDUklQVElPTiA8bmFt ZT4gU0VUICggKi8KIAllbHNlIGlmIChIZWFkTWF0Y2hlcygiQUxURVIiLCAiU1VCU0NSSVBUSU9O IiwgTWF0Y2hBbnkpICYmIFRhaWxNYXRjaGVzKCJTRVQiLCAiKCIpKQotCQlDT01QTEVURV9XSVRI KCJiaW5hcnkiLCAic2xvdF9uYW1lIiwgInN0cmVhbWluZyIsICJzeW5jaHJvbm91c19jb21taXQi KTsKKwkJQ09NUExFVEVfV0lUSCgiYmluYXJ5IiwgIm9ubHlfbG9jYWwiLCAic2xvdF9uYW1lIiwg InN0cmVhbWluZyIsICJzeW5jaHJvbm91c19jb21taXQiKTsKIAkvKiBBTFRFUiBTVUJTQ1JJUFRJ T04gPG5hbWU+IFNFVCBQVUJMSUNBVElPTiAqLwogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJBTFRF UiIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSkgJiYgVGFpbE1hdGNoZXMoIlNFVCIsICJQVUJM SUNBVElPTiIpKQogCXsKQEAgLTMxMDQsNyArMzEwNCw3IEBAIHBzcWxfY29tcGxldGlvbihjb25z dCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJZWxzZSBpZiAoSGVhZE1hdGNoZXMo IkNSRUFURSIsICJTVUJTQ1JJUFRJT04iKSAmJiBUYWlsTWF0Y2hlcygiV0lUSCIsICIoIikpCiAJ CUNPTVBMRVRFX1dJVEgoImJpbmFyeSIsICJjb25uZWN0IiwgImNvcHlfZGF0YSIsICJjcmVhdGVf c2xvdCIsCiAJCQkJCSAgImVuYWJsZWQiLCAic2xvdF9uYW1lIiwgInN0cmVhbWluZyIsCi0JCQkJ CSAgInN5bmNocm9ub3VzX2NvbW1pdCIsICJ0d29fcGhhc2UiKTsKKwkJCQkJICAic3luY2hyb25v dXNfY29tbWl0IiwgInR3b19waGFzZSIsICJvbmx5X2xvY2FsIik7CiAKIC8qIENSRUFURSBUUklH R0VSIC0tLSBpcyBhbGxvd2VkIGluc2lkZSBDUkVBVEUgU0NIRU1BLCBzbyB1c2UgVGFpbE1hdGNo ZXMgKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYmY4ODg1ODE3MS4uNzRhNWYyYWMw YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMDc3Niw5ICsxMDc3Niw5IEBACiAgIHBy b25hbWUgPT4gJ3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycsIHByb3Jvd3MgPT4gJzEwJywgcHJv aXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycs IHByb3JldHR5cGUgPT4gJ3JlY29yZCcsCiAgIHByb2FyZ3R5cGVzID0+ICcnLAotICBwcm9hbGxh cmd0eXBlcyA9PiAne25hbWUsbmFtZSx0ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBn X2xzbixwZ19sc24sdGV4dCxpbnQ4LGJvb2x9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxv LG8sbyxvLG8sbyxvLG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tzbG90X25hbWUscGx1 Z2luLHNsb3RfdHlwZSxkYXRvaWQsdGVtcG9yYXJ5LGFjdGl2ZSxhY3RpdmVfcGlkLHhtaW4sY2F0 YWxvZ194bWluLHJlc3RhcnRfbHNuLGNvbmZpcm1lZF9mbHVzaF9sc24sd2FsX3N0YXR1cyxzYWZl X3dhbF9zaXplLHR3b19waGFzZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne25hbWUsbmFtZSx0 ZXh0LG9pZCxib29sLGJvb2wsaW50NCx4aWQseGlkLHBnX2xzbixwZ19sc24sdGV4dCxpbnQ4LGJv b2wsYm9vbH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7c2xvdF9uYW1lLHBsdWdpbixzbG90X3R5cGUsZGF0 b2lkLHRlbXBvcmFyeSxhY3RpdmUsYWN0aXZlX3BpZCx4bWluLGNhdGFsb2dfeG1pbixyZXN0YXJ0 X2xzbixjb25maXJtZWRfZmx1c2hfbHNuLHdhbF9zdGF0dXMsc2FmZV93YWxfc2l6ZSx0d29fcGhh c2Usb25seV9sb2NhbH0nLAogICBwcm9zcmMgPT4gJ3BnX2dldF9yZXBsaWNhdGlvbl9zbG90cycg fSwKIHsgb2lkID0+ICczNzg2JywgZGVzY3IgPT4gJ3NldCB1cCBhIGxvZ2ljYWwgcmVwbGljYXRp b24gc2xvdCcsCiAgIHByb25hbWUgPT4gJ3BnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Ns b3QnLCBwcm92b2xhdGlsZSA9PiAndicsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAppbmRleCAxOGMyOTEyODlmLi42ZTMxMTkyNDdjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKQEAgLTY1LDYgKzY1LDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEw MCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAog CWJvb2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICov CiAKKwlib29sCQlzdWJvbmx5bG9jYWxkYXRhOyAvKiBza2lwIGNvcHlpbmcgb2YgcmVtb3RlIG9y aWdpbiBkYXRhICovCisKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBo YXNlIHRyYW5zYWN0aW9ucyAqLwogCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJs ZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KQEAgLTEwMiw2ICsxMDQsNyBAQCB0eXBlZGVm IHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRo ZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICov CiAJYm9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnMuICovCisJYm9vbAkJb25seWxvY2FsZGF0YTsJLyogU2tpcCBjb3B5aW5nIG9mIHJlbW90 ZSBvcmdpbmcgZGF0YSAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWlu ZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25u ZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkv KiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs LmgKaW5kZXggMTA5N2NjOTc5OS4uODIwMTRmZTI1MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWwuaApAQCAtOTksNiArOTksOCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250 ZXh0CiAJICovCiAJYm9vbAkJdHdvcGhhc2Vfb3B0X2dpdmVuOwogCisJYm9vbCAJCW9ubHlsb2Nh bF9kYXRhOworCiAJLyoKIAkgKiBTdGF0ZSBmb3Igd3JpdGluZyBvdXRwdXQuCiAJICovCkBAIC0x MzgsNiArMTQwLDggQEAgZXh0ZXJuIHZvaWQgTG9naWNhbENvbmZpcm1SZWNlaXZlZExvY2F0aW9u KFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiBib29sIGZpbHRlcl9wcmVwYXJlX2NiX3dyYXBwZXIo TG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHhp ZCwgY29uc3QgY2hhciAqZ2lkKTsKIGV4dGVybiBib29sIGZpbHRlcl9ieV9vcmlnaW5fY2Jfd3Jh cHBlcihMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlcE9yaWdpbklkIG9yaWdpbl9pZCk7 CitleHRlcm4gYm9vbCBmaWx0ZXJfcmVtb3RlZGF0YV9jYl93cmFwcGVyKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJCQkgUmVwT3JpZ2luSWQgb3JpZ2luX2lkKTsKIGV4dGVy biB2b2lkIFJlc2V0TG9naWNhbFN0cmVhbWluZ1N0YXRlKHZvaWQpOwogZXh0ZXJuIHZvaWQgVXBk YXRlRGVjb2RpbmdTdGF0cyhMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgpOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKaW5kZXggYTE2YmViZjc2Yy4uNTJiNWRlM2Vi OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaApAQCAtMTA2LDYgKzEw NiwxMiBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU2VxdWVuY2VDQikgKHN0cnVjdCBM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiB0eXBlZGVmIGJvb2wgKCpMb2dpY2FsRGVjb2Rl RmlsdGVyQnlPcmlnaW5DQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJ CQkJCQkJCQkJCSAgIFJlcE9yaWdpbklkIG9yaWdpbl9pZCk7CiAKKy8qCisgKiBGaWx0ZXIgcmVt b3RlIG9yaWdpbiBjaGFuZ2VzLgorICovCit0eXBlZGVmIGJvb2wgKCpMb2dpY2FsRGVjb2RlRmls dGVyUmVtb3RlT3JpZ2luQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAor CQkJCQkJCQkJCQkJICAgUmVwT3JpZ2luSWQgb3JpZ2luX2lkKTsKKwogLyoKICAqIENhbGxlZCB0 byBzaHV0ZG93biBhbiBvdXRwdXQgcGx1Z2luLgogICovCkBAIC0yNDYsNiArMjUyLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERlY29kZU1lc3NhZ2VD QiBtZXNzYWdlX2NiOwogCUxvZ2ljYWxEZWNvZGVTZXF1ZW5jZUNCIHNlcXVlbmNlX2NiOwogCUxv Z2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNCIGZpbHRlcl9ieV9vcmlnaW5fY2I7CisJTG9naWNh bERlY29kZUZpbHRlclJlbW90ZU9yaWdpbkNCIGZpbHRlcl9yZW1vdGVkYXRhX2NiOwogCUxvZ2lj YWxEZWNvZGVTaHV0ZG93bkNCIHNodXRkb3duX2NiOwogCiAJLyogc3RyZWFtaW5nIG9mIGNoYW5n ZXMgYXQgcHJlcGFyZSB0aW1lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAppbmRleCBl YWZlZGQ2MTBhLi5lOGZhYzZiM2Y4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAg LTI5LDYgKzI5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJYm9vbAkJc3RyZWFt aW5nOwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKKwlib29sCQlvbmx5bG9j YWxfZGF0YTsKIH0gUEdPdXRwdXREYXRhOwogCiAjZW5kaWYJCQkJCQkJLyogUEdPVVRQVVRfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDI0YjMwMjEwYzMuLjgzM2QzODBiMGYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9zbG90LmgKQEAgLTk0LDYgKzk0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUmVwbGlj YXRpb25TbG90UGVyc2lzdGVudERhdGEKIAkgKi8KIAlib29sCQl0d29fcGhhc2U7CiAKKwlib29s CQlvbmx5bG9jYWxfZGF0YTsKKwogCS8qIHBsdWdpbiBuYW1lICovCiAJTmFtZURhdGEJcGx1Z2lu OwogfSBSZXBsaWNhdGlvblNsb3RQZXJzaXN0ZW50RGF0YTsKQEAgLTE5NSw3ICsxOTcsOCBAQCBl eHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RzU2htZW1Jbml0KHZvaWQpOwogCiAvKiBtYW5hZ2Vt ZW50IG9mIGluZGl2aWR1YWwgc2xvdHMgKi8KIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdENy ZWF0ZShjb25zdCBjaGFyICpuYW1lLCBib29sIGRiX3NwZWNpZmljLAotCQkJCQkJCQkgIFJlcGxp Y2F0aW9uU2xvdFBlcnNpc3RlbmN5IHAsIGJvb2wgdHdvX3BoYXNlKTsKKwkJCQkJCQkJICBSZXBs aWNhdGlvblNsb3RQZXJzaXN0ZW5jeSBwLCBib29sIHR3b19waGFzZSwKKwkJCQkJCQkJICBib29s IG9ubHlsb2NhbF9kYXRhKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdFBlcnNpc3Qodm9p ZCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUsIGJv b2wgbm93YWl0KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggOTJm NzNhNTViOC4uZTYyZGNhOWI0NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5o CkBAIC0xODMsNiArMTgzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkJCWJvb2wJCXN0cmVhbWluZzsJ LyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhhc2U7 CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkgKiBw cmVwYXJlIHRpbWUgKi8KKwkJCWJvb2wJCW9ubHlsb2NhbF9kYXRhOwogCQl9CQkJbG9naWNhbDsK IAl9CQkJcHJvdG87CiB9IFdhbFJjdlN0cmVhbU9wdGlvbnM7CkBAIC0zNTEsNyArMzUyLDggQEAg dHlwZWRlZiBjaGFyICooKndhbHJjdl9jcmVhdGVfc2xvdF9mbikgKFdhbFJlY2VpdmVyQ29ubiAq Y29ubiwKIAkJCQkJCQkJCQlib29sIHRlbXBvcmFyeSwKIAkJCQkJCQkJCQlib29sIHR3b19waGFz ZSwKIAkJCQkJCQkJCQlDUlNTbmFwc2hvdEFjdGlvbiBzbmFwc2hvdF9hY3Rpb24sCi0JCQkJCQkJ CQkJWExvZ1JlY1B0ciAqbHNuKTsKKwkJCQkJCQkJCQlYTG9nUmVjUHRyICpsc24sCisJCQkJCQkJ CQkJYm9vbCBvbmx5bG9jYWxfZGF0YSk7CiAKIC8qCiAgKiB3YWxyY3ZfZ2V0X2JhY2tlbmRfcGlk X2ZuCkBAIC00MjMsOCArNDI1LDggQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFdhbFJlY2VpdmVyRnVu Y3Rpb25zVHlwZSAqV2FsUmVjZWl2ZXJGdW5jdGlvbnM7CiAJV2FsUmVjZWl2ZXJGdW5jdGlvbnMt PndhbHJjdl9yZWNlaXZlKGNvbm4sIGJ1ZmZlciwgd2FpdF9mZCkKICNkZWZpbmUgd2FscmN2X3Nl bmQoY29ubiwgYnVmZmVyLCBuYnl0ZXMpIFwKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2FscmN2 X3NlbmQoY29ubiwgYnVmZmVyLCBuYnl0ZXMpCi0jZGVmaW5lIHdhbHJjdl9jcmVhdGVfc2xvdChj b25uLCBzbG90bmFtZSwgdGVtcG9yYXJ5LCB0d29fcGhhc2UsIHNuYXBzaG90X2FjdGlvbiwgbHNu KSBcCi0JV2FsUmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9jcmVhdGVfc2xvdChjb25uLCBzbG90 bmFtZSwgdGVtcG9yYXJ5LCB0d29fcGhhc2UsIHNuYXBzaG90X2FjdGlvbiwgbHNuKQorI2RlZmlu ZSB3YWxyY3ZfY3JlYXRlX3Nsb3QoY29ubiwgc2xvdG5hbWUsIHRlbXBvcmFyeSwgdHdvX3BoYXNl LCBzbmFwc2hvdF9hY3Rpb24sIGxzbiwgb25seWxvY2FsX2RhdGEpIFwKKwlXYWxSZWNlaXZlckZ1 bmN0aW9ucy0+d2FscmN2X2NyZWF0ZV9zbG90KGNvbm4sIHNsb3RuYW1lLCB0ZW1wb3JhcnksIHR3 b19waGFzZSwgc25hcHNob3RfYWN0aW9uLCBsc24sIG9ubHlsb2NhbF9kYXRhKQogI2RlZmluZSB3 YWxyY3ZfZ2V0X2JhY2tlbmRfcGlkKGNvbm4pIFwKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+d2Fs cmN2X2dldF9iYWNrZW5kX3BpZChjb25uKQogI2RlZmluZSB3YWxyY3ZfZXhlYyhjb25uLCBleGVj LCBuUmV0VHlwZXMsIHJldFR5cGVzKSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cmlu ZGV4IGFjNDY4NTY4YTEuLmQ0YTJlYzg1ZTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMu b3V0CkBAIC0xNDU2LDggKzE0NTYsOSBAQCBwZ19yZXBsaWNhdGlvbl9zbG90c3wgU0VMRUNUIGwu c2xvdF9uYW1lLAogICAgIGwuY29uZmlybWVkX2ZsdXNoX2xzbiwKICAgICBsLndhbF9zdGF0dXMs CiAgICAgbC5zYWZlX3dhbF9zaXplLAotICAgIGwudHdvX3BoYXNlCi0gICBGUk9NIChwZ19nZXRf cmVwbGljYXRpb25fc2xvdHMoKSBsKHNsb3RfbmFtZSwgcGx1Z2luLCBzbG90X3R5cGUsIGRhdG9p ZCwgdGVtcG9yYXJ5LCBhY3RpdmUsIGFjdGl2ZV9waWQsIHhtaW4sIGNhdGFsb2dfeG1pbiwgcmVz dGFydF9sc24sIGNvbmZpcm1lZF9mbHVzaF9sc24sIHdhbF9zdGF0dXMsIHNhZmVfd2FsX3NpemUs IHR3b19waGFzZSkKKyAgICBsLnR3b19waGFzZSwKKyAgICBsLm9ubHlfbG9jYWwKKyAgIEZST00g KHBnX2dldF9yZXBsaWNhdGlvbl9zbG90cygpIGwoc2xvdF9uYW1lLCBwbHVnaW4sIHNsb3RfdHlw ZSwgZGF0b2lkLCB0ZW1wb3JhcnksIGFjdGl2ZSwgYWN0aXZlX3BpZCwgeG1pbiwgY2F0YWxvZ194 bWluLCByZXN0YXJ0X2xzbiwgY29uZmlybWVkX2ZsdXNoX2xzbiwgd2FsX3N0YXR1cywgc2FmZV93 YWxfc2l6ZSwgdHdvX3BoYXNlLCBvbmx5X2xvY2FsKQogICAgICBMRUZUIEpPSU4gcGdfZGF0YWJh c2UgZCBPTiAoKGwuZGF0b2lkID0gZC5vaWQpKSk7CiBwZ19yb2xlc3wgU0VMRUNUIHBnX2F1dGhp ZC5yb2xuYW1lLAogICAgIHBnX2F1dGhpZC5yb2xzdXBlciwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCA4MGFhZTgzNTYyLi5kYmY3NWQ4YjE3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC03MCw3ICs3MCwx MSBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViMyBFTkFCTEU7CiBFUlJPUjog IGNhbm5vdCBlbmFibGUgc3Vic2NyaXB0aW9uIHRoYXQgZG9lcyBub3QgaGF2ZSBhIHNsb3QgbmFt ZQogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjMgUkVGUkVTSCBQVUJMSUNBVElP TjsKIEVSUk9SOiAgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIGlzIG5vdCBhbGxvd2Vk IGZvciBkaXNhYmxlZCBzdWJzY3JpcHRpb25zCistLSBvayAtIHdpdGggb25seV9sb2NhbCA9IHRy dWUKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBDT05ORUNUSU9OICdkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoc2xvdF9u YW1lID0gTk9ORSwgY29ubmVjdCA9IGZhbHNlLCBvbmx5X2xvY2FsID0gdHJ1ZSk7CitXQVJOSU5H OiAgdGFibGVzIHdlcmUgbm90IHN1YnNjcmliZWQsIHlvdSB3aWxsIGhhdmUgdG8gcnVuIEFMVEVS IFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiB0byBzdWJzY3JpYmUgdGhlIHRh YmxlcwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViMzsKK0RST1AgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjQ7CiAtLSBmYWlsIC0gaW52YWxpZCBjb25uZWN0aW9uIHN0cmlu ZwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdmb29iYXIn OwogRVJST1I6ICBpbnZhbGlkIGNvbm5lY3Rpb24gc3RyaW5nIHN5bnRheDogbWlzc2luZyAiPSIg YWZ0ZXIgImZvb2JhciIgaW4gY29ubmVjdGlvbiBpbmZvIHN0cmluZwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggYmQwZjRhZjFlNC4uM2I2NWM0MjE0MiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCkBAIC01NCw3ICs1NCwxMSBAQCBDUkVBVEUgU1VC U0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjMgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0JyBQVQogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjMgRU5BQkxF OwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjMgUkVGUkVTSCBQVUJMSUNBVElP TjsKIAorLS0gb2sgLSB3aXRoIG9ubHlfbG9jYWwgPSB0cnVlCitDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjQgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKHNsb3RfbmFtZSA9IE5PTkUsIGNvbm5lY3QgPSBm YWxzZSwgb25seV9sb2NhbCA9IHRydWUpOworCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIzOworRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNDsKIAogLS0gZmFpbCAt IGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZm9vYmFyJzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyOV9jaXJjdWxhci5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyOV9jaXJj dWxhci5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41NTM2MzVhZTVk Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI5X2NpcmN1bGFy LnBsCkBAIC0wLDAgKzEsMTA4IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBjaXJjdWxhciBsb2dpY2Fs IHJlcGxpY2F0aW9uLgorIworIyBJbmNsdWRlcyB0ZXN0cyBmb3IgY2lyY3VsYXRpb24gcmVwbGlj YXRpb24gdXNpbmcgb25seV9sb2NhbCBvcHRpb24uCisjCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFNldHVwIGEgY2lyY3VsYXRpb24gcmVwbGljYXRp b24gb2YgcHViL3N1YiBub2Rlcy4KKyMgbm9kZV9BIC0+IG5vZGVfQiAtPiBub2RlX0EKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEluaXRp YWxpemUgbm9kZXMKKyMgbm9kZV9BCitteSAkbm9kZV9BID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3Rlci0+bmV3KCdub2RlX0EnKTsKKyRub2RlX0EtPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJG5vZGVfQS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxKAor bWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCitsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVt ID0gNjRrQgorKSk7Ciskbm9kZV9BLT5zdGFydDsKKyMgbm9kZV9CCitteSAkbm9kZV9CID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlX0InKTsKKyRub2RlX0ItPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsIHFxKAorbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCitsb2dpY2Fs X2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQgorKSk7Ciskbm9kZV9CLT5zdGFydDsKKworIyBDcmVh dGUgdGFibGVzIG9uIG5vZGVfQQorJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBUQUJMRSB0YWJfZnVsbCAoYSBpbnQgUFJJTUFSWSBLRVkpIik7CisKKyMgQ3JlYXRlIHRo ZSBzYW1lIHRhYmxlcyBvbiBub2RlX0IKKyRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGFiX2Z1bGwgKGEgaW50IFBSSU1BUlkgS0VZKSIpOworCisjIFNldHVw IGxvZ2ljYWwgcmVwbGljYXRpb24KKyMgbm9kZV9BIChwdWIpIC0+IG5vZGVfQiAoc3ViKQorbXkg JG5vZGVfQV9jb25uc3RyID0gJG5vZGVfQS0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsK KyRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1Yl9BIEZPUiBUQUJMRSB0YWJfZnVsbCIpOworbXkgJGFwcG5hbWVfQiA9ICd0YXBfc3ViX0In OworJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCSIKKwlDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWJfQgorCUNPTk5FQ1RJT04gJyRub2RlX0FfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1l PSRhcHBuYW1lX0InCisJUFVCTElDQVRJT04gdGFwX3B1Yl9BCisJV0lUSCAob25seV9sb2NhbCA9 IG9uKSIpOworCisjIG5vZGVfQiAocHViKSAtPiBub2RlX0EgKHN1YikKK215ICRub2RlX0JfY29u bnN0ciA9ICRub2RlX0ItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9CLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfQiBGT1Ig VEFCTEUgdGFiX2Z1bGwiKTsKK215ICRhcHBuYW1lX0EgPSAndGFwX3N1Yl9BJzsKKyRub2RlX0Et PnNhZmVfcHNxbCgncG9zdGdyZXMnLAkiCisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViX0EK KwlDT05ORUNUSU9OICckbm9kZV9CX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZV9B JworCVBVQkxJQ0FUSU9OIHRhcF9wdWJfQgorCVdJVEggKG9ubHlfbG9jYWwgPSBvbikiKTsKKwor IyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKyRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ciskbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0EpOworCisjIEFsc28gd2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZp bmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdf c3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5PVCBJTiAoJ3InLCAncycpOyI7Cisk bm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9y IGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25p emUgZGF0YSI7Ciskbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRf cXVlcnkpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIg dG8gc3luY2hyb25pemUgZGF0YSI7CisKK2lzKDEsMSwgIkNpcmN1bGFyIHJlcGxpY2F0aW9uIHNl dHVwIGlzIGNvbXBsZXRlIik7CisKK215ICRyZXN1bHQ7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IGNoZWNrIHRoYXQgY2lyY3VsYXIgcmVwbGljYXRpb24gc2V0dXAgZG9lcyBub3QgY2F1c2UgaW5m aW5pdGUgcmVjdXJzaXZlCisjIGluc2VydGlvbi4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgaW5z ZXJ0IGEgcmVjb3JkCiskbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRhYl9mdWxsIFZBTFVFUyAoMTEpOyIpOworJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0YWJfZnVsbCBWQUxVRVMgKDEyKTsiKTsKKworJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKyRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQSk7CisKKyMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIocykKKyRyZXN1bHQgPSAkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCAqIEZST00gdGFiX2Z1bGw7Iik7CitpcygkcmVzdWx0LCBxcSgxMQorMTIpLCAnSW5zZXJ0ZWQg c3VjY2Vzc2Z1bGx5IHdpdGhvdXQgbGVhZGluZyB0byBpbmZpbml0ZSByZWN1cnNpb24gaW4gY2ly Y3VsYXIgcmVwbGljYXRpb24gc2V0dXAnKTsKKyRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCAqIEZST00gdGFiX2Z1bGw7Iik7CitpcygkcmVzdWx0LCBxcSgx MQorMTIpLCAnSW5zZXJ0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGhvdXQgbGVhZGluZyB0byBpbmZpbml0 ZSByZWN1cnNpb24gaW4gY2lyY3VsYXIgcmVwbGljYXRpb24gc2V0dXAnKTsKKworIyBzaHV0ZG93 bgorJG5vZGVfQi0+c3RvcCgnZmFzdCcpOworJG5vZGVfQS0+c3RvcCgnZmFzdCcpOworCitkb25l X3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZDliODNmNzQ0Zi4uOTYw OGNiN2JiYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysr IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTEzNzAsNiArMTM3MCw3IEBA IExvZ2ljYWxEZWNvZGVDb21taXRDQgogTG9naWNhbERlY29kZUNvbW1pdFByZXBhcmVkQ0IKIExv Z2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNCCiBMb2dpY2FsRGVjb2RlRmlsdGVyUHJlcGFyZUNC CitMb2dpY2FsRGVjb2RlRmlsdGVyUmVtb3RlT3JpZ2luQ0IKIExvZ2ljYWxEZWNvZGVNZXNzYWdl Q0IKIExvZ2ljYWxEZWNvZGVQcmVwYXJlQ0IKIExvZ2ljYWxEZWNvZGVSb2xsYmFja1ByZXBhcmVk Q0IKLS0gCjIuMzIuMAoK --000000000000a29eb905d93e8c3a--