Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vvIS2-00CV0M-3A for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Feb 2026 17:13:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvIS0-007iYN-3B for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Feb 2026 17:13:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vvIS0-007iYF-1X for pgsql-hackers@lists.postgresql.org; Wed, 25 Feb 2026 17:13:28 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vvIRx-00000001Fie-0uEw for pgsql-hackers@lists.postgresql.org; Wed, 25 Feb 2026 17:13:28 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-65a2fea1a1eso1753572a12.0 for ; Wed, 25 Feb 2026 09:13:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772039605; cv=none; d=google.com; s=arc-20240605; b=VauotpkfkgU4UOFb1X39kLkJJL2r9UB63iULtuCZsxIEn1E5AmTH50qIe5bRERt7d3 6rGbMeOfgHAhebvt/SOMHrEsSLb4Yzku7BlheCYmO6Tj7qQTMiSgB8ORvJnNZuUwGTxA CGUYc1zPYvEtQOkIauQe1vwiDgszO7ZwxD5hcUhzULHvAnJOcf7V+jujZbY6Bvt5RVpi LUflIemgbOLkiWdr4BhjhSEzhs6LD3hcIyz3hhBMVW/rVafEEuUHZiHaZDN17TJaXlSa Y15f7ElQB3FL/0iKbeZLWeGMvDD2cHNMO6hulhoOWrYLPt1vxCrUihYH02mXC1yxsi8G SR8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Hq5IaiHyvCZdH4HB/r9Z9qy4BnxkavpPXWBcn291V4I=; fh=pmYVJaWDRettDzo/6R9yOZscnED4siqNdnocHOcrRpI=; b=NGlja+zjyVrNmKZR1mxL7vq8Tdw4cqCRT1kK28RjCUGVTamBgYBQlXFJ3fbxwUFJMI Ov7WIDodTovTUjUsYL4MtfDxjElNmnb/DQE8E6vwwV6YHnrTZMHu/To7mTYK65FOYmiv CfKt9ymrOHEvjLPnFYBC7hrzJgV9pNV2fQ73xIVSSJ4QPicIlOXbiedQ62MW+DId4P4w /BHwYHlN5Dcy8Dze442eNl2n8SRSEw3lpCWz5tmSPRanvbJrWAa3FmblzXtPJcS/zspW UYa8Bk4fb3lXNV+kZxHGgXSMlcOUFhPKFmsRLY1OGKtiorU/gChyKlFZDRlxkd9WwAfR oKJA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772039605; x=1772644405; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Hq5IaiHyvCZdH4HB/r9Z9qy4BnxkavpPXWBcn291V4I=; b=HqIzvCAo5oiGAh2Hj8qtSCzZ2iJoUk+t1QIpcYKyCSCwMpb1+guV+3R+8MT7Q+ntZh THcbnsWwlu0KI924PzW/mbxU9+6jKgmMNONrGJyK2K/4uSHg0Wv+ByEDTrTQPKevfjI8 OnP1U4mepiPoetK+9sZpP4x6VXJNCdoTube7hYSTm8mKXZkZsr17BiacJs1RLds/7/Uo NHnmZwU7j5E/Z+qKjjL3hHvBxEgk8gIs9bt9i3jSURDNlt72+gsEVik4/LKJEH5FYYh0 kt6QmFJyT90lX4pavzA/YMtubEIJ2nVtWfacBLvw29upDKVO1HJHvNIYgIVKTffXKB7k JLSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772039605; x=1772644405; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Hq5IaiHyvCZdH4HB/r9Z9qy4BnxkavpPXWBcn291V4I=; b=TwRLR+Fus7DgylWS6jbv4ySNcBHTcjQVF4GGF+PsxEVTbyKZPoJo06qg7CZ9bx/9eY STrIMwoNiDQGm6WuXFVsxwtZCxZdv6n31tT5sXhXKG2FlG8ZGhW3JNVwL9+smcF1AXmX BIKILv7kMMePJsPT9G2OEmTm5rIK0LoF+W1S2CW9Dq6sZw+gW5MJDL2Epv4m3byBaWtf kE0WOrHCgybpaQEiCDoE8ibhGquImOH8uM8dISSwIQFZzoYl/w9ttygSm6uQmEXeAi70 wlQ35fmIXsxX91MWb7hoLaexHI779q8J8/8LdTJEO6M4jvxMcbmgZBKMMVrjvWi2lzTZ h6Qw== X-Forwarded-Encrypted: i=1; AJvYcCXHHZ/HF73/dWq6IpU1LQ4e2qPdFzlTLR2IbtGst6dNw8bMhtuoN6sSh4+LWMNxS5gLCQHmCTfU1VpmXj0D@lists.postgresql.org X-Gm-Message-State: AOJu0YxaJKb46WkI0runc2/ZXWTtWBmzeBEdjrNIouUwGxDCEBjv7rpT LRD80vOzy+i6UWdqU0hBIvT+109103hxpG9LamE4I9FlwvkjNAw4IlbQxpIhUx+u/3SXsHEnDok 7DvHKFL6qm1TiSIrLwIdo5rbPXfV8/pE= X-Gm-Gg: ATEYQzwCkkrgfl69rcZimDRVu5jsFpwieYtvmmgOeV4u2AITmYEUTS6Y6bW488skJJh ScHBZrf2YrzA2bhbwJ+ato7Pg6tqQ6F06Vyxzd0lQWcBS8y4afn3Sn4mQldP/CB/lbBHyvNsOEi 5MKL/6fiZD3CGO2oPBAjFEX5tS2hSoiwfiG+4YKVT1+xvNpbn+uQhMRf5tLIqKBgqdSclanwR2l gxdqKJ9pjz501GdyeQ7WazolVOAK0mbmDfInp4AIhS2oZvMcLO5H/cblyizH58q0aAPDStKpCes 7OVBRyg= X-Received: by 2002:a17:907:608c:b0:b8e:fc90:7119 with SMTP id a640c23a62f3a-b933ce36fdfmr309536166b.30.1772039604630; Wed, 25 Feb 2026 09:13:24 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Wed, 25 Feb 2026 22:43:10 +0530 X-Gm-Features: AaiRm53dPIUMAa_NnZJXlr2OGUMBaZ6_zIN_nAiqQJDvDbSBrAJ926xEJdvfGpM Message-ID: Subject: Re: Skipping schema changes in publication To: shveta malik Cc: Amit Kapila , Ashutosh Sharma , vignesh C , "David G. Johnston" , Dilip Kumar , Peter Smith , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000029be7f064ba91f9f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000029be7f064ba91f9f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 25 Feb 2026 at 16:01, shveta malik wrote: > > On Mon, Feb 23, 2026 at 4:46=E2=80=AFPM Amit Kapila wrote: > > > > On Mon, Feb 23, 2026 at 11:37=E2=80=AFAM Shlok Kyal wrote: > > > > > > I have also modified the error message as suggested by Shveta in [2]. > > > Attached the latest v48 patch. > > > > > > > I see that the second patch (0002) brings complexity in the patch to > > deal with following points: (a) The first complexity is if one of the > > partitions is specified then how to compute the initial set of > > relations to copy when pubviaroot is true. This is complex because we > > need to exclude the partitions specified. (b) The other complexity is > > combining Except list containing partitions and other publications > > specifying partitions or partitioned tables both during replication > > and probably during initial sync. > > > > I think it will be better if for the first version, we allow only root > > partitioned table to be specified in the Except Table list. This would > > mean that if the user tries to attach that root partition table to > > another root then we should give an error. If we go via this route, it > > will be important to allow users to remove some tables from the Except > > list, so we can provide Alter Publication Set Except Table > > (table_names). > > > > I think excluding specific partitions may also have some use cases but > > adding additional complexity and maintenance effort is worth, if there > > is a real field demand for such a feature. > > > > Thoughts? > > > > I fully agree. The additional complexity does not appear to be worth > the value right now, unless we receive meaningful user feedback that > justifies implementing it. > > Thanks Vignesh for the patch supporting this approach. Please find a > few comments on v49-001: > > 1) > + in EXCEPT TABLE. Doing so excludes the root tab= le and > + all of its partitions from replication, regardless of the value of > + publish_via_partition_root. The optional > + * has no effect for partitioned tables. > + > > a) > I feel it is not needed to mention 'regardless of > publish_via_partition_root' as generally that never decides what is > included and what is not. Same is the case here. > > b) > We shall mention both ONLY and *. Infact it is 'ONLY' which has no > effect. * is the default in this case. But still to make it a more > generic statement, we shall mention both for partitioned tables. > > 2) > + > + Create a publication that publishes all sequences for synchronization= , and > + all changes in all tables except users and > + departments: > + > +CREATE PUBLICATION all_sequences_tables_except FOR ALL SEQUENCES, ALL > TABLES EXCEPT (users, departments); > > If I run the command given in example, it asserts. > > TRAP: failed Assert("!stmt->for_all_sequences"), File: > "publicationcmds.c", Line: 942, PID: 70620 > postgres: shveta postgres [local] CREATE > PUBLICATION(ExceptionalCondition+0xbb)[0x611280ed8c48] > > 3) > -check_publication_add_relation(Relation targetrel) > +check_publication_add_relation(Relation targetrel, PublicationRelInfo *p= ri) > > We can avoid passing 'targetrel' now. PublicationRelInfo has that info in= side. > > 4) > postgres=3D# create publication pub2 for all tables except (tab_part_1); > ERROR: partition "tab_part_1" cannot be excluded using EXCEPT TABLE > > Other errors are in active voice (eg: cannot use system column \"%s\" > in publication column list, cannot use publication EXCEPT clause for > relation \"%s\). > > Shall we also keep this the same way? I think we can mimic the error > for tmp and unlogged tables which is: > > postgres=3D# create publication pub2 for all tables except (tmp1); > ERROR: cannot use publication EXCEPT clause for relation "tmp1" > DETAIL: This operation is not supported for temporary tables. > > We can convert concerned one to: > > postgres=3D# create publication pub2 for all tables except (tab_part_1); > ERROR: cannot use publication EXCEPT clause for partition "tab_part_1" > DETAIL: This operation is not supported for individual partitions. > > > 5) > + if (pub->alltables && pri->except && targetrel->rd_rel->relispartition) > + ereport(ERROR, > + errmsg("partition \"%s\" cannot be excluded using EXCEPT TABLE", > + RelationGetRelationName(targetrel))); > + > + check_publication_add_relation(targetrel, pri); > > I feel we can push the partition check and error to > check_publication_add_relation() itself. If we do so, we can retain > the exactly same errormsg for parition case as well which is: > errormsg =3D gettext_noop("cannot use publication EXCEPT clause for > relation \"%s\""); > > And we can just change DETAIL as suggested in pt 4. > > 6) > +++ b/src/backend/catalog/pg_subscription.c > -/* > - * Add a comma-separated list of publication names to the 'dest' string. > - */ > -void > -GetPublicationsStr(List *publications, StringInfo dest, bool quote_liter= al) > -{ > > Do we still need to move GetPublicationsStr() to logical.c? I see the > only extra call is now in pgoutput.c which already includes > catalog/pg_subscription.h > ~~ Hi Shveta, Ashutosh, Chao-san, Thanks for reviewing the patch. I have addressed the above comments and the comments in [1] and [2]. Attached is the latest v50 version. I have also split the patch 0002 to 0002 and 0003 0001 - Support CREATE PUBLICATION ... EXCEPT TABLE syntax 0002 - Support ALTER PUBLICATION ... SET EXCEPT TABLE .. syntax 0003 - Support ALTER PUBLICATION ... DROP EXCEPT TABLE .. syntax [1]: https://www.postgresql.org/message-id/CAE9k0P=3DwzzOXykzgj-7Dw7E9r8k0P= X633RY3TEVDpwLue004tg@mail.gmail.com [2]: https://www.postgresql.org/message-id/0DDF38E7-3033-47E1-98C1-49A13785= 26B3@gmail.com Thanks, Shlok Kyal --00000000000029be7f064ba91f9f Content-Type: application/octet-stream; name="v50-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Disposition: attachment; filename="v50-0001-Skip-publishing-the-tables-specified-in-EXCEPT-T.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm2alx6t0 RnJvbSA5NWFjMzk5ODllZGM3NzQzYzA2MTIzYjhmMWRkYjI3ZjRhZWZiNzc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFRodSwgMTkgRmViIDIwMjYgMjA6MTY6MzkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1MCAxLzNd IFNraXAgcHVibGlzaGluZyB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiBFWENFUFQgVEFCTEUuCgpB IG5ldyAiRVhDRVBUIFRBQkxFIiBjbGF1c2UgZm9yIENSRUFURSBQVUJMSUNBVElPTiBhbGxvd3Mg b25lIG9yIG1vcmUKdGFibGVzIHRvIGJlIGV4Y2x1ZGVkLiBUaGUgcHVibGlzaGVyIHdpbGwgbm90 IHNlbmQgdGhlIGRhdGEgb2YgZXhjbHVkZWQKdGFibGVzIHRvIHRoZSBzdWJzY3JpYmVyLgoKVGhl IG5ldyBzeW50YXggYWxsb3dzIHNwZWNpZnlpbmcgZXhjbHVkZWQgcmVsYXRpb25zIHdoZW4gY3Jl YXRpbmcgYQpwdWJsaWNhdGlvbi4gRm9yIGV4YW1wbGU6CkNSRUFURSBQVUJMSUNBVElPTiBwdWIx IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodDEsdDIpOwoKQSBuZXcgY29sdW1uICJwcmV4 Y2VwdCIgaXMgYWRkZWQgdG8gdGFibGUgInBnX3B1YmxpY2F0aW9uX3JlbCIsIHRvIGZsYWcKdGhl IHJlbGF0aW9ucyB0aGF0IHRoZSB1c2VyIHdhbnRzIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgcHVibGlj YXRpb25zLgoKT25seSByb290IHBhcnRpdGlvbmVkIHRhYmxlcyBjYW4gYmUgc3BlY2lmaWVkIGlu IHRoZSBFWENFUFQgVEFCTEUgY2xhdXNlLgpTcGVjaWZ5aW5nIGEgcm9vdCBwYXJ0aXRpb25lZCB0 YWJsZSBleGNsdWRlcyBhbGwgcGFydGl0aW9ucyBiZWxvbmdpbmcgdG8KdGhhdCBwYXJ0aXRpb24g aGllcmFyY2h5IGZyb20gcHVibGljYXRpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICAgIHwgIDEwICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwgICAgICAgICB8ICAgNiArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCAgICAgIHwgIDYxICsrKy0KIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYu c2dtbCAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5jICAgICAgICAgIHwgMjI0ICsrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAgNTAgKysrLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgMTI0ICsrKysrKysrCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgMjAgKy0KIHNyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8ICAzOSArKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAgMzEgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAyMSArLQogc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDY4ICsrKysrCiBzcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwgIDMwICsrCiBzcmMvYmluL3BzcWwvZGVz Y3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgODcgKysrKystCiBzcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAxOCArLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuaCAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDEzMCArKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCAgICAgICAgICB8ICA2NSArKysrLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIC4uLi90LzAzN19yZXBf Y2hhbmdlc19leGNlcHRfdGFibGUucGwgICAgICAgICB8IDI3NCArKysrKysrKysrKysrKysrKysK IDI1IGZpbGVzIGNoYW5nZWQsIDExNjYgaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19yZXBfY2hhbmdl c19leGNlcHRfdGFibGUucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGU3MDY3Yzg0ZWNlLi42OTU4ODkz NzcxOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTY1NzIsNiArNjU3MiwxNiBAQCBTQ1JBTS1TSEEtMjU2 JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBs YWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgPHN0cnVjdGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBT ZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZv ci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0ZXJhbD48L2xpbms+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgogICAgICAgPHN0cnVjdGZpZWxkPnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBn X25vZGVfdHJlZTwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4 IDUwMjhmZTlhZjA5Li5iY2I0NzNjMDc4YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCkBAIC0xMTYsNyArMTE2LDExIEBACiAgICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFND SEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRlcmFsPiwKICAgIG9y IDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPi4gVW5saWtlIHRhYmxlcywgc2Vx dWVuY2VzIGNhbiBiZQogICAgc3luY2hyb25pemVkIGF0IGFueSB0aW1lLiBGb3IgbW9yZSBpbmZv cm1hdGlvbiwgc2VlCi0gICA8eHJlZiBsaW5rZW5kPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXNlcXVl bmNlcyIvPi4KKyAgIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tc2VxdWVuY2Vz Ii8+LiBXaGVuIGEgcHVibGljYXRpb24gaXMKKyAgIGNyZWF0ZWQgd2l0aCA8bGl0ZXJhbD5GT1Ig QUxMIFRBQkxFUzwvbGl0ZXJhbD4sIGEgdGFibGUgb3Igc2V0IG9mIHRhYmxlcyBjYW4KKyAgIGJl IGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5r IGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNhdGlvbi1wYXJhbXMtZm9yLWV4Y2VwdC10YWJsZSI+ PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPjwvbGluaz4KKyAgIGNsYXVzZS4KICAgPC9w YXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVi bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwK aW5kZXggNmVmYmI5MTVjZWMuLmMzMDVkZmM1MGI3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMyLDEyICszMiwxNiBAQCBDUkVBVEUgUFVCTElDQVRJT04g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogCiA8cGhy YXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fYWxsX29i amVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIEFMTCBUQUJMRVMK KyAgICBBTEwgVEFCTEVTIFsgRVhDRVBUIFsgVEFCTEUgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBd CiAgICAgQUxMIFNFUVVFTkNFUwogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAog ICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0KKworPHBocmFz ZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF90YWJsZV9vYmplY3Q8 L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KKworICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KIDwvc3lub3Bz aXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtMTY0LDcgKzE2OCw4IEBAIENSRUFURSBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlv biBhcyBvbmUgdGhhdCByZXBsaWNhdGVzIGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAgICAg IHRoZSBkYXRhYmFzZSwgaW5jbHVkaW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCisg ICAgICB0aGUgZGF0YWJhc2UsIGluY2x1ZGluZyB0YWJsZXMgY3JlYXRlZCBpbiB0aGUgZnV0dXJl LiBUYWJsZXMgbGlzdGVkIGluCisgICAgICBFWENFUFQgVEFCTEUgYXJlIGV4Y2x1ZGVkIGZyb20g dGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgpAQCAtMTg0LDYgKzE4OSw0MSBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0 ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj4KKyAgICA8dGVybT48bGl0ZXJh bD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBiZSBl eGNsdWRlZCBmcm9tIHRoZQorICAgICAgcHVibGljYXRpb24uCisgICAgIDwvcGFyYT4KKyAgICAg PHBhcmE+CisgICAgICBGb3IgaW5oZXJpdGVkIHRhYmxlcywgaWYgPGxpdGVyYWw+T05MWTwvbGl0 ZXJhbD4gaXMgc3BlY2lmaWVkIGJlZm9yZSB0aGUKKyAgICAgIHRhYmxlIG5hbWUsIG9ubHkgdGhh dCB0YWJsZSBpcyBleGNsdWRlZCBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gSWYKKyAgICAgIDxsaXRl cmFsPk9OTFk8L2xpdGVyYWw+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSB0YWJsZSBhbmQgYWxsIGl0 cyBkZXNjZW5kYW50CisgICAgICB0YWJsZXMgKGlmIGFueSkgYXJlIGV4Y2x1ZGVkLiBPcHRpb25h bGx5LCA8bGl0ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUKKyAgICAgIHNwZWNpZmllZCBhZnRlciB0 aGUgdGFibGUgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudAorICAg ICAgdGFibGVzIGFyZSBleGNsdWRlZC4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAg IEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIG9ubHkgdGhlIHJvb3QgcGFydGl0aW9uZWQgdGFibGUg bWF5IGJlIHNwZWNpZmllZAorICAgICAgaW4gPGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFs Pi4gRG9pbmcgc28gZXhjbHVkZXMgdGhlIHJvb3QgdGFibGUgYW5kCisgICAgICBhbGwgb2YgaXRz IHBhcnRpdGlvbnMgZnJvbSByZXBsaWNhdGlvbi4gVGhlIG9wdGlvbmFsCisgICAgICA8bGl0ZXJh bD5PTkxZPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+KjwvbGl0ZXJhbD4gaGFzIG5vIGVmZmVjdCBm b3IKKyAgICAgIHBhcnRpdGlvbmVkIHRhYmxlcy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4K KyAgICAgIFRoZXJlIGNhbiBiZSBhIGNhc2Ugd2hlcmUgYSBzdWJzY3JpcHRpb24gaW5jbHVkZXMg bXVsdGlwbGUgcHVibGljYXRpb25zLgorICAgICAgSW4gc3VjaCBhIGNhc2UsIGEgdGFibGUgb3Ig cGFydGl0aW9uIHRoYXQgaXMgaW5jbHVkZWQgaW4gb25lIHB1YmxpY2F0aW9uCisgICAgICBhbmQg bGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGNsYXVzZSBvZiBh bm90aGVyIGlzCisgICAgICBjb25zaWRlcmVkIGluY2x1ZGVkIGZvciByZXBsaWNhdGlvbi4KKyAg ICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIFN1YnNjcmliaW5nIHRvIG11bHRpcGxlIHB1 YmxpY2F0aW9ucyB0aGF0IHNwZWNpZnkKKyAgICAgIDxsaXRlcmFsPkVYQ0VQVCBUQUJMRTwvbGl0 ZXJhbD4gbGlzdHMgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0 ZXB1YmxpY2F0aW9uLXBhcmFtcy13aXRoIj4KICAgICA8dGVybT48bGl0ZXJhbD5XSVRIICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFj ZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFi bGU+XSBbLCAuLi4gXSApPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC00ODks NiArNTI5LDIzIEBAIENSRUFURSBQVUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzIEZPUiBBTEwgU0VR VUVOQ0VTOwogICAgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uOgogPHByb2dyYW1s aXN0aW5nPgogQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfc2VxdWVuY2VzIEZPUiBBTEwg VEFCTEVTLCBBTEwgU0VRVUVOQ0VTOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisg IDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIGNoYW5n ZXMgaW4gYWxsIHRhYmxlcyBleGNlcHQKKyAgIDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1l PiBhbmQgPHN0cnVjdG5hbWU+ZGVwYXJ0bWVudHM8L3N0cnVjdG5hbWU+OgorPHByb2dyYW1saXN0 aW5nPgorQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfZXhjZXB0IEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9uIHRoYXQgcHVibGlzaGVzIGFs bCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiwgYW5kCisgICBhbGwgY2hhbmdlcyBpbiBh bGwgdGFibGVzIGV4Y2VwdCA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kCisgICA8 c3RydWN0bmFtZT5kZXBhcnRtZW50czwvc3RydWN0bmFtZT46Cis8cHJvZ3JhbWxpc3Rpbmc+CitD UkVBVEUgUFVCTElDQVRJT04gYWxsX3NlcXVlbmNlc190YWJsZXNfZXhjZXB0IEZPUiBBTEwgU0VR VUVOQ0VTLCBBTEwgVEFCTEVTIEVYQ0VQVCAodXNlcnMsIGRlcGFydG1lbnRzKTsKIDwvcHJvZ3Jh bWxpc3Rpbmc+CiAgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9wc3FsLXJlZi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCmlu ZGV4IDhiMWQ5NDhiYTA1Li4xMDQ1YmM2YTAyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbApAQCAt MjEwMyw4ICsyMTAzLDkgQEAgU0VMRUNUICQxIFxwYXJzZSBzdG10MQogICAgICAgICBsaXN0ZWQu CiAgICAgICAgIElmIDxsaXRlcmFsPng8L2xpdGVyYWw+IGlzIGFwcGVuZGVkIHRvIHRoZSBjb21t YW5kIG5hbWUsIHRoZSByZXN1bHRzCiAgICAgICAgIGFyZSBkaXNwbGF5ZWQgaW4gZXhwYW5kZWQg bW9kZS4KLSAgICAgICAgSWYgPGxpdGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhl IGNvbW1hbmQgbmFtZSwgdGhlIHRhYmxlcyBhbmQKLSAgICAgICAgc2NoZW1hcyBhc3NvY2lhdGVk IHdpdGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24gYXMgd2VsbC4KKyAgICAgICAgSWYgPGxp dGVyYWw+KzwvbGl0ZXJhbD4gaXMgYXBwZW5kZWQgdG8gdGhlIGNvbW1hbmQgbmFtZSwgdGhlIHRh YmxlcywKKyAgICAgICAgZXhjbHVkZWQgdGFibGVzLCBhbmQgc2NoZW1hcyBhc3NvY2lhdGVkIHdp dGggZWFjaCBwdWJsaWNhdGlvbiBhcmUgc2hvd24KKyAgICAgICAgYXMgd2VsbC4KICAgICAgICAg PC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggOWE0NzkxYzU3M2UuLmJkYzMyZTc3YTQ5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC0zMiw2ICszMiw3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRp b25jbWRzLmgiCiAjaW5jbHVkZSAiZnVuY2FwaS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xv Z2ljYWwuaCIKICNpbmNsdWRlICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0 aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvY2F0Y2FjaGUuaCIKQEAgLTUzLDM3ICs1NCw0OCBAQCB0 eXBlZGVmIHN0cnVjdAogICogZXJyb3IgaWYgbm90LgogICovCiBzdGF0aWMgdm9pZAotY2hlY2tf cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFJlbGF0aW9uIHRhcmdldHJlbCkKK2NoZWNrX3B1Ymxp Y2F0aW9uX2FkZF9yZWxhdGlvbihQdWJsaWNhdGlvblJlbEluZm8gKnByaSwgYm9vbCBwdWJhbGx0 YWJsZXMpCiB7CisJUmVsYXRpb24JdGFyZ2V0cmVsID0gcHJpLT5yZWxhdGlvbjsKKwljb25zdCBj aGFyICplcnJvcm1zZzsKKworCWlmIChwcmktPmV4Y2VwdCkKKwkJZXJyb3Jtc2cgPSBnZXR0ZXh0 X25vb3AoImNhbm5vdCB1c2UgcHVibGljYXRpb24gRVhDRVBUIGNsYXVzZSBmb3IgcmVsYXRpb24g XCIlc1wiIik7CisJZWxzZQorCQllcnJvcm1zZyA9IGdldHRleHRfbm9vcCgiY2Fubm90IGFkZCBy ZWxhdGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iKTsKKworCS8qIElmIGluIEVYQ0VQVCBjbGF1 c2UsIG11c3QgYmUgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZSAqLworCWlmIChwdWJhbGx0YWJsZXMg JiYgcHJpLT5leGNlcHQgJiYgdGFyZ2V0cmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAorCQkJCSBlcnJtc2coZXJyb3Jtc2csIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdl dHJlbCkpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQg Zm9yIGluZGl2aWR1YWwgcGFydGl0aW9ucy4iKSkpOworCiAJLyogTXVzdCBiZSBhIHJlZ3VsYXIg b3IgcGFydGl0aW9uZWQgdGFibGUgKi8KIAlpZiAoUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCkt PnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTiAmJgogCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0 cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQllcmVwb3J0KEVS Uk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJ CSBlcnJtc2coImNhbm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBlcnJtc2coZXJy b3Jtc2csIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRh aWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKFJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxr aW5kKSkpOwogCiAJLyogQ2FuJ3QgYmUgc3lzdGVtIHRhYmxlICovCiAJaWYgKElzQ2F0YWxvZ1Jl bGF0aW9uKHRhcmdldHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCi0JCQkJIGVycm1zZygiY2Fubm90IGFkZCByZWxh dGlvbiBcIiVzXCIgdG8gcHVibGljYXRpb24iLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUodGFyZ2V0cmVsKSksCisJCQkJIGVycm1zZyhlcnJvcm1zZywgUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUodGFyZ2V0cmVsKSksCiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90 IHN1cHBvcnRlZCBmb3Igc3lzdGVtIHRhYmxlcy4iKSkpOwogCiAJLyogVU5MT0dHRUQgYW5kIFRF TVAgcmVsYXRpb25zIGNhbm5vdCBiZSBwYXJ0IG9mIHB1YmxpY2F0aW9uLiAqLwogCWlmICh0YXJn ZXRyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZB TFVFKSwKLQkJCQkgZXJybXNnKCJjYW5ub3QgYWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNh dGlvbiIsCi0JCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkg ZXJybXNnKGVycm9ybXNnLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKIAkJ CQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3Jh cnkgdGFibGVzLiIpKSk7CiAJZWxzZSBpZiAodGFyZ2V0cmVsLT5yZF9yZWwtPnJlbHBlcnNpc3Rl bmNlID09IFJFTFBFUlNJU1RFTkNFX1VOTE9HR0VEKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAotCQkJCSBlcnJtc2coImNh bm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKLQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBlcnJtc2coZXJyb3Jtc2csIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCkpLAogCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3Bl cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHVubG9nZ2VkIHRhYmxlcy4iKSkpOwogfQogCkBA IC0zNjYsOSArMzc4LDExIEBAIEdldFRvcE1vc3RBbmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1 Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQgKmFuY2VzdG9yX2xldmVsCiAJZm9yZWFjaChsYywg YW5jZXN0b3JzKQogCXsKIAkJT2lkCQkJYW5jZXN0b3IgPSBsZmlyc3Rfb2lkKGxjKTsKLQkJTGlz dAkgICAqYXB1YmlkcyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKTsKKwkJTGlz dAkgICAqYXB1YmlkcyA9IE5JTDsKIAkJTGlzdAkgICAqYXNjaGVtYVB1YmlkcyA9IE5JTDsKIAor CQlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFwdWJpZHMsIE5VTEwpOworCiAJ CWxldmVsKys7CiAKIAkJaWYgKGxpc3RfbWVtYmVyX29pZChhcHViaWRzLCBwdWJvaWQpKQpAQCAt NDY2LDcgKzQ4MCw3IEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1Ymxp Y2F0aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0 cmVsKSwgcHViLT5uYW1lKSkpOwogCX0KIAotCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlv bih0YXJnZXRyZWwpOworCWNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwcmksIHB1Yi0+ YWxsdGFibGVzKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFuc2xhdGUgY29sdW1uIG5hbWVzIGlu dG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KIAlhdHRudW1zID0gcHViX2NvbGxpc3RfdmFs aWRhdGUocHJpLT5yZWxhdGlvbiwgcHJpLT5jb2x1bW5zKTsKQEAgLTQ4Miw2ICs0OTYsOCBAQCBw dWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnBy aSwKIAkJT2JqZWN0SWRHZXREYXR1bShwdWJpZCk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRp b25fcmVsX3BycmVsaWQgLSAxXSA9CiAJCU9iamVjdElkR2V0RGF0dW0ocmVsaWQpOworCXZhbHVl c1tBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmV4Y2VwdCAtIDFdID0KKwkJQm9vbEdldERhdHVt KHByaS0+ZXhjZXB0KTsKIAogCS8qIEFkZCBxdWFsaWZpY2F0aW9ucywgaWYgYXZhaWxhYmxlICov CiAJaWYgKHByaS0+d2hlcmVDbGF1c2UgIT0gTlVMTCkKQEAgLTUzMCwxNyArNTQ2LDI2IEBAIHB1 YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJp LAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkvKgotCSAqIEludmFs aWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuCi0JICoK LQkgKiBGb3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVzdCBpbnZhbGlkYXRlIGFsbCBw YXJ0aXRpb25zIGNvbnRhaW5lZAotCSAqIGluIHRoZSByZXNwZWN0aXZlIHBhcnRpdGlvbiBoaWVy YXJjaGllcywgbm90IGp1c3QgdGhlIG9uZSBleHBsaWNpdGx5Ci0JICogbWVudGlvbmVkIGluIHRo ZSBwdWJsaWNhdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHdlIGltcGxpY2l0bHkKLQkg KiBwdWJsaXNoIHRoZSBjaGlsZCB0YWJsZXMgd2hlbiB0aGUgcGFyZW50IHRhYmxlIGlzIHB1Ymxp c2hlZC4KKwkgKiBSZWxhdGlvbnMgZXhjbHVkZWQgdmlhIHRoZSBFWENFUFQgY2xhdXNlIGRvIG5v dCBuZWVkIGV4cGxpY2l0CisJICogaW52YWxpZGF0aW9uIGFzIENyZWF0ZVB1YmxpY2F0aW9uKCkg ZnVuY3Rpb24gaW52YWxpZGF0ZXMgYWxsIHJlbGF0aW9ucworCSAqIGFzIHBhcnQgb2YgZGVmaW5p bmcgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KIAkgKi8KLQlyZWxpZHMgPSBHZXRQdWJQ YXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVsaWRzLCBQVUJMSUNBVElPTl9QQVJUX0FMTCwKLQkJ CQkJCQkJCQkJcmVsaWQpOworCWlmICghcHJpLT5leGNlcHQpCisJeworCQkvKgorCQkgKiBJbnZh bGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LgorCQkg KgorCQkgKiBGb3IgdGhlIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVzdCBpbnZhbGlkYXRlIGFs bCBwYXJ0aXRpb25zCisJCSAqIGNvbnRhaW5lZCBpbiB0aGUgcmVzcGVjdGl2ZSBwYXJ0aXRpb24g aGllcmFyY2hpZXMsIG5vdCBqdXN0IHRoZSBvbmUKKwkJICogZXhwbGljaXRseSBtZW50aW9uZWQg aW4gdGhlIHB1YmxpY2F0aW9uLiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UKKwkJICogd2UgaW1w bGljaXRseSBwdWJsaXNoIHRoZSBjaGlsZCB0YWJsZXMgd2hlbiB0aGUgcGFyZW50IHRhYmxlIGlz CisJCSAqIHB1Ymxpc2hlZC4KKwkJICovCisJCXJlbGlkcyA9IEdldFB1YlBhcnRpdGlvbk9wdGlv blJlbGF0aW9ucyhyZWxpZHMsIFBVQkxJQ0FUSU9OX1BBUlRfQUxMLAorCQkJCQkJCQkJCQkJcmVs aWQpOwogCi0JSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVscyhyZWxpZHMpOworCQlJbnZhbGlkYXRl UHVibGljYXRpb25SZWxzKHJlbGlkcyk7CisJfQogCiAJcmV0dXJuIG15c2VsZjsKIH0KQEAgLTc0 OSwzOCArNzc0LDU0IEBAIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2No ZW1haWQsIGJvb2wgaWZfbm90X2V4aXN0cykKIAlyZXR1cm4gbXlzZWxmOwogfQogCi0vKiBHZXRz IGxpc3Qgb2YgcHVibGljYXRpb24gb2lkcyBmb3IgYSByZWxhdGlvbiAqLwotTGlzdCAqCi1HZXRS ZWxhdGlvblB1YmxpY2F0aW9ucyhPaWQgcmVsaWQpCisvKgorICogR2V0IHRoZSBsaXN0IG9mIHB1 YmxpY2F0aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWVkIHJlbGF0aW9uLgorICoK KyAqICdwdWJpZHMnIHJldHVybnMgdGhlIE9pZHMgb2YgdGhlIHB1YmxpY2F0aW9ucyB0aGUgcmVs YXRpb24gaXMgcGFydCBvZi4KKyAqCisgKiAnZXhjZXB0X3B1YmlkcycgcmV0dXJucyB0aGUgT2lk cyBvZiBwdWJsaWNhdGlvbnMgdGhlIHJlbGF0aW9uIGlzIGV4Y2x1ZGVkCisgKiBmcm9tLgorICoK KyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZSByZWxhdGlvbiBpcyBwYXJ0IG9m IGFueSBwdWJsaWNhdGlvbi4KKyAqLworYm9vbAorR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lk IHJlbGlkLCBMaXN0ICoqcHViaWRzLCBMaXN0ICoqZXhjZXB0X3B1YmlkcykKIHsKLQlMaXN0CSAg ICpyZXN1bHQgPSBOSUw7CiAJQ2F0Q0xpc3QgICAqcHVicmVsbGlzdDsKLQlpbnQJCQlpOworCWJv b2wJCWZvdW5kID0gZmFsc2U7CiAKIAkvKiBGaW5kIGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRl ZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8KIAlwdWJyZWxsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0 MShQVUJMSUNBVElPTlJFTE1BUCwKIAkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVtKHJlbGlkKSk7 Ci0JZm9yIChpID0gMDsgaSA8IHB1YnJlbGxpc3QtPm5fbWVtYmVyczsgaSsrKQorCWZvciAoaW50 IGkgPSAwOyBpIDwgcHVicmVsbGlzdC0+bl9tZW1iZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJ dHVwID0gJnB1YnJlbGxpc3QtPm1lbWJlcnNbaV0tPnR1cGxlOwotCQlPaWQJCQlwdWJpZCA9ICgo Rm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApKS0+cHJwdWJpZDsKKwkJRm9y bV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBH RVRTVFJVQ1QodHVwKTsKKwkJT2lkCQkJcHViaWQgPSBwdWJyZWwtPnBycHViaWQ7CisJCUxpc3QJ ICAqKnRhcmdldF9saXN0ID0gcHVicmVsLT5wcmV4Y2VwdCA/IGV4Y2VwdF9wdWJpZHMgOiBwdWJp ZHM7CiAKLQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCBwdWJpZCk7CisJCWlmICh0YXJn ZXRfbGlzdCkKKwkJCSp0YXJnZXRfbGlzdCA9IGxhcHBlbmRfb2lkKCp0YXJnZXRfbGlzdCwgcHVi aWQpOworCisJCWlmICghcHVicmVsLT5wcmV4Y2VwdCkKKwkJCWZvdW5kID0gdHJ1ZTsKIAl9CiAK IAlSZWxlYXNlU3lzQ2FjaGVMaXN0KHB1YnJlbGxpc3QpOwogCi0JcmV0dXJuIHJlc3VsdDsKKwly ZXR1cm4gZm91bmQ7CiB9CiAKIC8qCi0gKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3Ig YSBwdWJsaWNhdGlvbi4KKyAqIEludGVybmFsIGZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiBy ZWxhdGlvbiBPaWRzIGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkg YmUgdXNlZCBGT1IgVEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMvU0VRVUVO Q0VTCi0gKiBzaG91bGQgdXNlIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKiBJZiBl eGNlcHRfZmxhZyBpcyB0cnVlLCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucyBzcGVjaWZp ZWQgaW4gdGhlCisgKiBFWENFUFQgY2xhdXNlIG9mIHRoZSBwdWJsaWNhdGlvbjsgb3RoZXJ3aXNl LCByZXR1cm5zIHRoZSBsaXN0IG9mIHJlbGF0aW9ucworICogaW5jbHVkZWQgaW4gdGhlIHB1Ymxp Y2F0aW9uLgogICovCi1MaXN0ICoKLUdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQorc3RhdGljIExpc3QgKgorZ2V0X3B1Ymxp Y2F0aW9uX3JlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9w dCwKKwkJCQkJCSAgYm9vbCBleGNlcHRfZmxhZykKIHsKIAlMaXN0CSAgICpyZXN1bHQ7CiAJUmVs YXRpb24JcHVicmVsc3JlbDsKQEAgLTgwNSw4ICs4NDYsMTAgQEAgR2V0UHVibGljYXRpb25SZWxh dGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJCUZvcm1f cGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsKIAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNh dGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOwotCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRp b25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwKLQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJy ZWxpZCk7CisKKwkJaWYgKGV4Y2VwdF9mbGFnID09IHB1YnJlbC0+cHJleGNlcHQpCisJCQlyZXN1 bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBwdWJfcGFydG9wdCwK KwkJCQkJCQkJCQkJCQlwdWJyZWwtPnBycmVsaWQpOwogCX0KIAogCXN5c3RhYmxlX2VuZHNjYW4o c2Nhbik7CkBAIC04MTksNiArODYyLDM0IEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCXJldHVybiByZXN1bHQ7CiB9 CiAKKy8qCisgKiBHZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyB0aGF0IGFyZSBhc3NvY2lhdGVk IHdpdGggYSBwdWJsaWNhdGlvbi4KKyAqCisgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgRk9S IFRBQkxFIHB1YmxpY2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTL1NFUVVFTkNFUworICogc2hv dWxkIHVzZSBHZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucygpLgorICovCitMaXN0ICoKK0dldElu Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBhcnRPcHQg cHViX3BhcnRvcHQpCit7CisJQXNzZXJ0KCFHZXRQdWJsaWNhdGlvbihwdWJpZCktPmFsbHRhYmxl cyk7CisKKwlyZXR1cm4gZ2V0X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRv cHQsIGZhbHNlKTsKK30KKworLyoKKyAqIEdldHMgbGlzdCBvZiB0YWJsZSBvaWRzIHRoYXQgd2Vy ZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKKyAqIHB1YmxpY2F0aW9uLgor ICoKKyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlv bnMuCisgKi8KK0xpc3QgKgorR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKK3sKKwlBc3NlcnQoR2V0UHVibGljYXRp b24ocHViaWQpLT5hbGx0YWJsZXMpOworCisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlv bnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlKTsKK30KKwogLyoKICAqIEdldHMgbGlzdCBvZiBw dWJsaWNhdGlvbiBvaWRzIGZvciBwdWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBBTEwgVEFCTEVT LgogICovCkBAIC04NTgsMjQgKzkyOSwzNiBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9p ZCkKIAogLyoKICAqIEdldHMgbGlzdCBvZiBhbGwgcmVsYXRpb25zIHB1Ymxpc2hlZCBieSBGT1Ig QUxMIFRBQkxFUy9TRVFVRU5DRVMKLSAqIHB1YmxpY2F0aW9uKHMpLgorICogcHVibGljYXRpb24u CiAgKgogICogSWYgdGhlIHB1YmxpY2F0aW9uIHB1Ymxpc2hlcyBwYXJ0aXRpb24gY2hhbmdlcyB2 aWEgdGhlaXIgcmVzcGVjdGl2ZSByb290CiAgKiBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3Qg ZXhjbHVkZSBwYXJ0aXRpb25zIGluIGZhdm9yIG9mIGluY2x1ZGluZyB0aGUKICAqIHJvb3QgcGFy dGl0aW9uZWQgdGFibGVzLiBUaGlzIGlzIG5vdCBhcHBsaWNhYmxlIHRvIEZPUiBBTEwgU0VRVUVO Q0VTCiAgKiBwdWJsaWNhdGlvbi4KKyAqCisgKiBGb3IgYSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNh dGlvbiwgdGhlIHJldHVybmVkIGxpc3QgZXhjbHVkZXMgdGFibGVzIG1lbnRpb25lZAorICogaW4g RVhDRVBUIFRBQkxFIGNsYXVzZS4KICAqLwogTGlzdCAqCi1HZXRBbGxQdWJsaWNhdGlvblJlbGF0 aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKK0dldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKFB1YmxpY2F0aW9uICpwdWIsIGNoYXIgcmVsa2luZCkKIHsKIAlSZWxhdGlvbgljbGFz c1JlbDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CiAJVGFibGVTY2FuRGVzYyBzY2FuOwogCUhlYXBU dXBsZQl0dXBsZTsKIAlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0bGlz dCA9IE5JTDsKKwlib29sCQlwdWJ2aWFyb290ID0gcHViLT5wdWJ2aWFyb290OworCU9pZAkJCXB1 YmlkID0gcHViLT5vaWQ7CiAKIAlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0Ug JiYgcHVidmlhcm9vdCkpOwogCisJLyogRVhDRVBUIGZpbHRlcmluZyBhcHBsaWVzIG9ubHkgdG8g cmVsYXRpb25zLCBub3Qgc2VxdWVuY2VzICovCisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxB VElPTikKKwkJZXhjZXB0bGlzdCA9IEdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMocHViaWQs IHB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJ CQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCiAJY2xhc3NSZWwgPSB0YWJsZV9v cGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIAogCVNjYW5LZXlJbml0 KCZrZXlbMF0sCkBAIC04OTEsNyArOTc0LDggQEAgR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo Y2hhciByZWxraW5kLCBib29sIHB1YnZpYXJvb3QpCiAJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+ b2lkOwogCiAJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJ CSEocmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24gJiYgcHVidmlhcm9vdCkpCisJCQkhKHJlbEZvcm0t PnJlbGlzcGFydGl0aW9uICYmIHB1YnZpYXJvb3QpICYmCisJCQkhbGlzdF9tZW1iZXJfb2lkKGV4 Y2VwdGxpc3QsIHJlbGlkKSkKIAkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQp OwogCX0KIApAQCAtOTEyLDcgKzk5Niw4IEBAIEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25zKGNo YXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290KQogCQkJT2lkCQkJcmVsaWQgPSByZWxGb3JtLT5v aWQ7CiAKIAkJCWlmIChpc19wdWJsaXNoYWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkgJiYKLQkJ CQkhcmVsRm9ybS0+cmVsaXNwYXJ0aXRpb24pCisJCQkJIXJlbEZvcm0tPnJlbGlzcGFydGl0aW9u ICYmCisJCQkJIWxpc3RfbWVtYmVyX29pZChleGNlcHRsaXN0LCByZWxpZCkpCiAJCQkJcmVzdWx0 ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7CiAJCX0KIApAQCAtMTExNiw2ICsxMjAxLDUx IEBAIEdldFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2lu Z19vaykKIAlyZXR1cm4gT2lkSXNWYWxpZChvaWQpID8gR2V0UHVibGljYXRpb24ob2lkKSA6IE5V TEw7CiB9CiAKKy8qCisgKiBwdWJsaWNhdGlvbl9oYXNfYW55X2V4Y2VwdF90YWJsZQorICoKKyAq IFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBwdWJsaWNhdGlvbiBoYXMgYW55IHJlbGF0aW9uIGVu dHJ5CisgKiBpbiBwZ19wdWJsaWNhdGlvbl9yZWwgd2l0aCBwcmV4Y2VwdCBzZXQuCisgKi8KK2Jv b2wKK3B1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0X3RhYmxlKE9pZCBwdWJpZCkKK3sKKwlSZWxh dGlvbglwdWJyZWxzcmVsOworCVNjYW5LZXlEYXRhIHNjYW5rZXk7CisJU3lzU2NhbkRlc2Mgc2Nh bjsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwlwdWJyZWxzcmVs ID0gdGFibGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlTY2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9w cnB1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJ ZEdldERhdHVtKHB1YmlkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHB1YnJlbHNy ZWwsCisJCQkJCQkJICBQdWJsaWNhdGlvblJlbFBycHViaWRJbmRleElkLAorCQkJCQkJCSAgdHJ1 ZSwgTlVMTCwgMSwgJnNjYW5rZXkpOworCisJLyogV2Ugb25seSBuZWVkIHRvIGZpbmQgYW55IG9j Y3VycmVuY2Ugb2YgcHJleGNlcHQgPSB0cnVlICovCisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQo dHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3B1YmxpY2F0aW9u X3JlbCBwdWJyZWw7CisKKwkJcHVicmVsID0gKEZvcm1fcGdfcHVibGljYXRpb25fcmVsKSBHRVRT VFJVQ1QodHVwKTsKKwkJaWYgKHB1YnJlbC0+cHJleGNlcHQpCisJCXsKKwkJCWZvdW5kID0gdHJ1 ZTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJs ZV9jbG9zZShwdWJyZWxzcmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGZvdW5kOwor fQorCiAvKgogICogR2V0IGluZm9ybWF0aW9uIG9mIHRoZSB0YWJsZXMgaW4gdGhlIGdpdmVuIHB1 YmxpY2F0aW9uIGFycmF5LgogICoKQEAgLTExNjgsMTcgKzEyOTgsMTcgQEAgcGdfZ2V0X3B1Ymxp Y2F0aW9uX3RhYmxlcyhQR19GVU5DVElPTl9BUkdTKQogCQkJICogdGhvc2UuIE90aGVyd2lzZSwg Z2V0IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBpdHNlbGYuCiAJCQkgKi8KIAkJCWlmIChwdWJfZWxl bS0+YWxsdGFibGVzKQotCQkJCXB1Yl9lbGVtX3RhYmxlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVs YXRpb25zKFJFTEtJTkRfUkVMQVRJT04sCi0JCQkJCQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZp YXJvb3QpOworCQkJCXB1Yl9lbGVtX3RhYmxlcyA9IEdldEFsbFB1YmxpY2F0aW9uUmVsYXRpb25z KHB1Yl9lbGVtLAorCQkJCQkJCQkJCQkJCQkJIFJFTEtJTkRfUkVMQVRJT04pOwogCQkJZWxzZQog CQkJewogCQkJCUxpc3QJICAgKnJlbGlkcywKIAkJCQkJCSAgICpzY2hlbWFyZWxpZHM7CiAKLQkJ CQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAotCQkJCQkJ CQkJCQkJIHB1Yl9lbGVtLT5wdWJ2aWFyb290ID8KLQkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9Q QVJUX1JPT1QgOgotCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQkJcmVs aWRzID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJfZWxlbS0+b2lkLAorCQkJ CQkJCQkJCQkJCQkgcHViX2VsZW0tPnB1YnZpYXJvb3QgPworCQkJCQkJCQkJCQkJCQkgUFVCTElD QVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7 CiAJCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHVi X2VsZW0tPm9pZCwKIAkJCQkJCQkJCQkJCQkJCQlwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKQEAgLTEzNjcsNyArMTQ5Nyw3IEBA IHBnX2dldF9wdWJsaWNhdGlvbl9zZXF1ZW5jZXMoUEdfRlVOQ1RJT05fQVJHUykKIAkJcHVibGlj YXRpb24gPSBHZXRQdWJsaWNhdGlvbkJ5TmFtZShwdWJuYW1lLCBmYWxzZSk7CiAKIAkJaWYgKHB1 YmxpY2F0aW9uLT5hbGxzZXF1ZW5jZXMpCi0JCQlzZXF1ZW5jZXMgPSBHZXRBbGxQdWJsaWNhdGlv blJlbGF0aW9ucyhSRUxLSU5EX1NFUVVFTkNFLCBmYWxzZSk7CisJCQlzZXF1ZW5jZXMgPSBHZXRB bGxQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJsaWNhdGlvbiwgUkVMS0lORF9TRVFVRU5DRSk7CiAK IAkJZnVuY2N0eC0+dXNlcl9mY3R4ID0gc2VxdWVuY2VzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jCmluZGV4IGZjM2E0YzE5ZTY1Li4yMTgwY2I4NjZmNCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE5OCw3ICsxOTgsMTIgQEAgT2JqZWN0 c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpw c3RhdGUsCiAKIAkJc3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKKwkJCWNhc2UgUFVC TElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOgorCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9 IHRydWU7CisJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsKKwkJ CQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6CisJCQkJcHVib2JqLT5wdWJ0 YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CiAJCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmot PnB1YnRhYmxlKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVTX0lO X1NDSEVNQToKQEAgLTUxOSw4ICs1MjQsOCBAQCBJbnZhbGlkYXRlUHViUmVsU3luY0NhY2hlKE9p ZCBwdWJpZCwgYm9vbCBwdWJhbGx0YWJsZXMpCiAJCSAqIGEgdGFyZ2V0LiBIb3dldmVyLCBXQUwg cmVjb3JkcyBmb3IgVFJVTkNBVEUgc3BlY2lmeSBib3RoIGEgcm9vdCBhbmQKIAkJICogaXRzIGxl YXZlcy4KIAkJICovCi0JCXJlbGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAot CQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJCXJlbGlkcyA9IEdldEluY2x1ZGVk UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFS VF9BTEwpOwogCQlzY2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9u cyhwdWJpZCwKIAkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCkBAIC04NDUs NiArODUwLDcgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlMaXN0CSAgICpy ZWxhdGlvbnMgPSBOSUw7CiAJTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklMOworCUxpc3QJICAg KnJlbHMgPSBOSUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFz ZSAqLwogCWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhEYXRhYmFzZVJlbGF0aW9uSWQsIE15 RGF0YWJhc2VJZCwgR2V0VXNlcklkKCksIEFDTF9DUkVBVEUpOwpAQCAtOTI5LDggKzkzNSwyMCBA QCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9u U3RtdCAqc3RtdCkKIAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCiAJLyogQXNzb2NpYXRl IG9iamVjdHMgd2l0aCB0aGUgcHVibGljYXRpb24uICovCisJT2JqZWN0c0luUHVibGljYXRpb25U b09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAorCQkJCQkJCSAgICZz Y2hlbWFpZGxpc3QpOworCWlmIChyZWxhdGlvbnMgIT0gTklMKQorCQlyZWxzID0gT3BlblRhYmxl TGlzdChyZWxhdGlvbnMpOworCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVzKQogCXsKKwkJLyog UHJvY2VzcyBFWENFUFQgdGFibGUgbGlzdCAqLworCQlpZiAocmVsYXRpb25zICE9IE5JTCkKKwkJ eworCQkJQXNzZXJ0KHJlbHMgIT0gTklMKTsKKwkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9p ZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCX0KKwogCQkvKgogCQkgKiBJbnZhbGlkYXRlIHJlbGNh Y2hlIHNvIHRoYXQgcHVibGljYXRpb24gaW5mbyBpcyByZWJ1aWx0LiBTZXF1ZW5jZXMKIAkJICog cHVibGljYXRpb24gZG9lc24ndCByZXF1aXJlIGludmFsaWRhdGlvbiwgYXMgcmVwbGljYSBpZGVu dGl0eQpAQCAtOTQwLDkgKzk1OCw2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCX0KIAllbHNlIGlmICghc3RtdC0+ Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10 LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hlbWFpZGxp c3QpOwotCiAJCS8qIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwog CQlpZiAoc2NoZW1haWRsaXN0ICE9IE5JTCAmJiAhc3VwZXJ1c2VyKCkpCiAJCQllcmVwb3J0KEVS Uk9SLApAQCAtOTUxLDkgKzk2Niw2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCiAJCWlmIChyZWxhdGlvbnMgIT0g TklMKQogCQl7Ci0JCQlMaXN0CSAgICpyZWxzOwotCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChy ZWxhdGlvbnMpOwogCQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHBzdGF0ZS0+cF9z b3VyY2V0ZXh0LAogCQkJCQkJCQkJIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAt OTYyLDcgKzk3NCw2IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3Jl YXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQkJCQkJICAgcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QpOwogCiAJCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUs IE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CiAJCX0KIAogCQlpZiAoc2NoZW1haWRs aXN0ICE9IE5JTCkKQEAgLTk3Niw2ICs5ODcsOSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJfQogCX0KIAorCWlm IChyZWxzICE9IE5JTCkKKwkJQ2xvc2VUYWJsZUxpc3QocmVscyk7CisKIAl0YWJsZV9jbG9zZShy ZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCiAJSW52b2tlT2JqZWN0UG9zdENyZWF0ZUhvb2soUHVi bGljYXRpb25SZWxhdGlvbklkLCBwdWJvaWQsIDApOwpAQCAtMTA1MCw4ICsxMDY0LDggQEAgQWx0 ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwKIAkJTG9ja0RhdGFiYXNlT2JqZWN0KFB1YmxpY2F0aW9uUmVsYXRpb25JZCwg cHViZm9ybS0+b2lkLCAwLAogCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrKTsKIAotCQlyb290X3Jl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKLQkJCQkJCQkJCQkJ ICBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyb290X3JlbGlkcyA9IEdldEluY2x1ZGVkUHVi bGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJ T05fUEFSVF9ST09UKTsKIAogCQlmb3JlYWNoKGxjLCByb290X3JlbGlkcykKIAkJewpAQCAtMTE3 MCw4ICsxMTg0LDggQEAgQWx0ZXJQdWJsaWNhdGlvbk9wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJICogdHJlZXMsIG5vdCBqdXN0IHRob3Nl IGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbi4KIAkJICovCiAJCWlmIChy b290X3JlbGlkcyA9PSBOSUwpCi0JCQlyZWxpZHMgPSBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhw dWJmb3JtLT5vaWQsCi0JCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CisJCQlyZWxp ZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQllbHNlCiAJCXsKIAkJCS8qCkBAIC0x MjU2LDggKzEyNzAsOCBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQs IHJlbHMsIGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwogCXsKLQkJTGlz dAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJ CQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CisJCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdl dEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJCQkJCQkJCQkJUFVC TElDQVRJT05fUEFSVF9ST09UKTsKIAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKIAkJTGlzdENl bGwgICAqb2xkbGM7CiAKQEAgLTEzNTgsNiArMTM3Miw3IEBAIEFsdGVyUHVibGljYXRpb25UYWJs ZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJb2xkcmVs ID0gcGFsbG9jX29iamVjdChQdWJsaWNhdGlvblJlbEluZm8pOwogCQkJCW9sZHJlbC0+d2hlcmVD bGF1c2UgPSBOVUxMOwogCQkJCW9sZHJlbC0+Y29sdW1ucyA9IE5JTDsKKwkJCQlvbGRyZWwtPmV4 Y2VwdCA9IGZhbHNlOwogCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlk LAogCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJCQkJZGVscmVscyA9 IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKQEAgLTE0MDgsNyArMTQyMyw4IEBAIEFsdGVyUHVi bGljYXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMaXN0Q2VsbCAg ICpsYzsKIAkJTGlzdAkgICAqcmVsb2lkczsKIAotCQlyZWxvaWRzID0gR2V0UHVibGljYXRpb25S ZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlyZWxvaWRz ID0gR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJmb3JtLT5vaWQsCisJCQkJCQkJ CQkJCQkgIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCk7CiAKIAkJZm9yZWFjaChsYywgcmVsb2lkcykK IAkJewpAQCAtMTc3MSw2ICsxNzg3LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJ CXB1Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQlwdWJfcmVsLT53aGVyZUNsYXVzZSA9IHQtPndo ZXJlQ2xhdXNlOwogCQlwdWJfcmVsLT5jb2x1bW5zID0gdC0+Y29sdW1uczsKKwkJcHViX3JlbC0+ ZXhjZXB0ID0gdC0+ZXhjZXB0OwogCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJ cmVsaWRzID0gbGFwcGVuZF9vaWQocmVsaWRzLCBteXJlbGlkKTsKIApAQCAtMTg0Myw2ICsxODYw LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAKIAkJCQkvKiBjaGlsZCBpbmhlcml0 cyBjb2x1bW4gbGlzdCBmcm9tIHBhcmVudCAqLwogCQkJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5j b2x1bW5zOworCQkJCXB1Yl9yZWwtPmV4Y2VwdCA9IHQtPmV4Y2VwdDsKIAkJCQlyZWxzID0gbGFw cGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIGNo aWxkcmVsaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXgg NWUzYzA5NjRkMzguLmM3NDVkMTMyZjlmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKQEAgLTU3NSw2ICs1NzYsMTI2IEBAIGNoZWNrX3B1Ymxp Y2F0aW9ucyhXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRpb25zKQogCX0K IH0KIAorLyoKKyAqIEVuc3VyZSB0aGF0IGF0IG1vc3Qgb25lIHB1YmxpY2F0aW9uIGluIHRoZSBn aXZlbiBsaXN0IGRlZmluZXMgYW4KKyAqIEVYQ0VQVCBUQUJMRSBjbGF1c2UuCisgKi8KK3ZvaWQK K0NoZWNrUHVibGljYXRpb25zRm9yRXhjZXB0Q2xhdXNlcyhMaXN0ICpleGNlcHRfcHVibGljYXRp b25zKQoreworCVN0cmluZ0luZm9EYXRhIHB1Ym5hbWVzOworCisJLyogTm90aGluZyB0byBkbyBp ZiB6ZXJvIG9yIG9uZSBwdWJsaWNhdGlvbiBoYXMgRVhDRVBULiAqLworCWlmIChsaXN0X2xlbmd0 aChleGNlcHRfcHVibGljYXRpb25zKSA8PSAxKQorCQlyZXR1cm47CisKKwlpbml0U3RyaW5nSW5m bygmcHVibmFtZXMpOworCUdldFB1YmxpY2F0aW9uc1N0cihleGNlcHRfcHVibGljYXRpb25zLCAm cHVibmFtZXMsIGZhbHNlKTsKKworCWxpc3RfZnJlZV9kZWVwKGV4Y2VwdF9wdWJsaWNhdGlvbnMp OworCisJZXJlcG9ydChFUlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3QgY29tYmluZSBwdWJsaWNhdGlvbnMgJXMgd2l0aCBh biBFWENFUFQgVEFCTEUgY2xhdXNlIiwKKwkJCQkgICBwdWJuYW1lcy5kYXRhKSk7Cit9CisKKy8q CisgKiBFUlJPUiBpZiBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBFWENFUFQgY2xhdXNlcyBh cmUgcHJlc2VudC4KKyAqCisgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBvcnQg c3Vic2NyaWJpbmcgdG8gbW9yZSB0aGFuIG9uZQorICogcHVibGljYXRpb24gdGhhdCBkZWZpbmVz IGFuIGV4Y2x1c2lvbiBsaXN0LiBBbGxvd2luZyB0aGlzIHdvdWxkCisgKiBjcmVhdGUgYW1iaWd1 b3VzIGFuZCB1bnByZWRpY3RhYmxlIHJlcGxpY2F0aW9uIGJlaGF2aW9yLgorICoKKyAqIFRoZSBh bWJpZ3VpdHkgYXJpc2VzIHdoZW4gcHVibGljYXRpb25zIGRpZmZlciBpbiB0aGVpciBleGNsdXNp b25zCisgKiBhbmQgaW4gdGhlIHNldHRpbmcgb2YgJ3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 Jy4gSW4gc3VjaCBjYXNlcywKKyAqIHRoZSBlZmZlY3RpdmUgcHVibGljYXRpb24gc2V0IGNhbm5v dCBiZSBkZXRlcm1pbmVkIGNvbnNpc3RlbnRseToKKyAqCisgKiAgIC0gVGFibGVzIGV4Y2x1ZGVk IGluIG9uZSBwdWJsaWNhdGlvbiBtYXkgYmUgaW1wbGljaXRseSBpbmNsdWRlZAorICogICAgIGlu IGFub3RoZXIuCisgKiAgIC0gQ29uZmxpY3RpbmcgJ3B1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 JyBzZXR0aW5ncyBhbHRlciBob3cKKyAqICAgICBwYXJ0aXRpb25zIGFyZSByZXByZXNlbnRlZCBh bmQgZGVkdXBsaWNhdGVkLgorICoKKyAqIFRvIGF2b2lkIHRoZXNlIGNvbmZsaWN0cywgYSBzdWJz Y3JpcHRpb24gbWF5IGluY2x1ZGUgYXQgbW9zdCBvbmUKKyAqICdGT1IgQUxMIFRBQkxFUycgcHVi bGljYXRpb24gdGhhdCBzcGVjaWZpZXMgYW4gRVhDRVBUIGNsYXVzZS4KKyAqCisgKiBFeGFtcGxl OgorICoKKyAqICAgUGFydGl0aW9uZWQgdGFibGU6IHRhYl9yb290CisgKiAgIFBhcnRpdGlvbnM6 IHBhcnQxLCBwYXJ0MiwgcGFydDMKKyAqCisgKiAgIHB1YjE6CisgKiAgICAgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIChwYXJ0MSwgcGFydDIpCisgKiAgICAgICBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCA9IHRydWUpCisgKgorICogICBwdWIyOgorICogICAgIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCAocGFydDMpCisgKiAgICAgICBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9IGZhbHNlKQorICoKKyAqIFN1YnNjcmliaW5nIHRvIGJvdGggcHViMSBhbmQgcHViMiBpcyBp bnZhbGlkIGJlY2F1c2U6CisgKiAgIC0gcHViMSBleGNsdWRlcyBwYXJ0MSBhbmQgcGFydDIsIHB1 Ymxpc2hpbmcgcmVtYWluaW5nIHBhcnRpdGlvbnMKKyAqICAgICB2aWEgdGhlIHJvb3QuCisgKiAg IC0gcHViMiBleGNsdWRlcyBwYXJ0MywgcHVibGlzaGluZyBvdGhlciBwYXJ0aXRpb25zIGluZGl2 aWR1YWxseS4KKyAqCisgKiBUaGUgcmVzdWx0aW5nIHB1YmxpY2F0aW9uIHNldCBpcyBhbWJpZ3Vv dXMgYW5kIHByb3ZpZGVzIG5vIGNsZWFyCisgKiBiZW5lZml0LiBVbmxlc3MgYWxsIHB1YmxpY2F0 aW9ucyBleGNsdWRlIHRoZSBzYW1lIHRhYmxlcywgY29tYmluaW5nCisgKiB0aGVtIGludHJvZHVj ZXMgY29tcGxleCBhbmQgY29uZmxpY3RpbmcgcGFydGl0aW9uIHJlc29sdXRpb24gcnVsZXMuCisg Ki8KK3N0YXRpYyB2b2lkCitjaGVja19wdWJsaWNhdGlvbnNfZXhjZXB0X2xpc3QoV2FsUmVjZWl2 ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucykKK3sKKwlMaXN0CSAgICpleGNlcHRf cHVibGljYXRpb25zID0gTklMOworCVdhbFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlTdHJpbmdJbmZv RGF0YSBjbWQ7CisJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CisJT2lkCQkJdGFibGVSb3dbMV0gPSB7 VEVYVE9JRH07CisKKwlpZiAobGlzdF9sZW5ndGgocHVibGljYXRpb25zKSA8PSAxKQorCQlyZXR1 cm47CisKKwlpbml0U3RyaW5nSW5mbygmY21kKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZj bWQsCisJCQkJCQkgICAiU0VMRUNUIHAucHVibmFtZVxuIgorCQkJCQkJICAgIiBGUk9NIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb24gcFxuIgorCQkJCQkJICAgIiBXSEVSRSBwLnB1Ym5hbWUgSU4g KCIpOworCisJR2V0UHVibGljYXRpb25zU3RyKHB1YmxpY2F0aW9ucywgJmNtZCwgdHJ1ZSk7CisK KwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsCisJCQkJCQkgICAiKVxuIgorCQkJCQkJICAg IiAgIEFORCBFWElTVFMgKFNFTEVDVCAxXG4iCisJCQkJCQkgICAiICAgICAgICAgICAgICAgICBG Uk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCisJCQkJCQkgICAiICAgICAg ICAgICAgICAgIFdIRVJFIHByLnBycHViaWQgPSBwLm9pZFxuIgorCQkJCQkJICAgIiAgICAgICAg ICAgICAgICAgIEFORCBwci5wcmV4Y2VwdCBJUyBUUlVFKSIpOworCisJcmVzID0gd2FscmN2X2V4 ZWMod3Jjb25uLCBjbWQuZGF0YSwgMSwgdGFibGVSb3cpOworCXBmcmVlKGNtZC5kYXRhKTsKKwor CWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tfVFVQTEVTKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCWVycm1zZygiY291bGQgbm90IHJlY2VpdmUgbGlzdCBvZiBwdWJsaWNhdGlvbnMgZnJvbSB0 aGUgcHVibGlzaGVyOiAlcyIsCisJCQkJCSAgIHJlcy0+ZXJyKSk7CisKKwlzbG90ID0gTWFrZVNp bmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsK Kwl3aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBm YWxzZSwgc2xvdCkpCisJeworCQljaGFyCSAgICpwdWJuYW1lOworCQlib29sCQlpc251bGw7CisK KwkJcHVibmFtZSA9IFRleHREYXR1bUdldENTdHJpbmcoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZp c251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCWV4Y2VwdF9wdWJsaWNhdGlvbnMgPSBs YXBwZW5kKGV4Y2VwdF9wdWJsaWNhdGlvbnMsIG1ha2VTdHJpbmcocHVibmFtZSkpOworCQlFeGVj Q2xlYXJUdXBsZShzbG90KTsKKwl9CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNs b3QpOworCisJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOworCisJQ2hlY2tQdWJsaWNhdGlvbnNG b3JFeGNlcHRDbGF1c2VzKGV4Y2VwdF9wdWJsaWNhdGlvbnMpOworfQorCiAvKgogICogQXV4aWxp YXJ5IGZ1bmN0aW9uIHRvIGJ1aWxkIGEgdGV4dCBhcnJheSBvdXQgb2YgYSBsaXN0IG9mIFN0cmlu ZyBub2Rlcy4KICAqLwpAQCAtODMyLDYgKzk1Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQljaGFyCQly ZWxhdGlvbl9zdGF0ZTsKIAogCQkJY2hlY2tfcHVibGljYXRpb25zKHdyY29ubiwgcHVibGljYXRp b25zKTsKKwkJCWNoZWNrX3B1YmxpY2F0aW9uc19leGNlcHRfbGlzdCh3cmNvbm4sIHB1YmxpY2F0 aW9ucyk7CiAJCQljaGVja19wdWJsaWNhdGlvbnNfb3JpZ2luX3RhYmxlcyh3cmNvbm4sIHB1Ymxp Y2F0aW9ucywKIAkJCQkJCQkJCQkJIG9wdHMuY29weV9kYXRhLAogCQkJCQkJCQkJCQkgb3B0cy5y ZXRhaW5kZWFkdHVwbGVzLCBvcHRzLm9yaWdpbiwKQEAgLTk5Niw2ICsxMTE4LDggQEAgQWx0ZXJT dWJzY3JpcHRpb25fcmVmcmVzaChTdWJzY3JpcHRpb24gKnN1YiwgYm9vbCBjb3B5X2RhdGEsCiAJ CWlmICh2YWxpZGF0ZV9wdWJsaWNhdGlvbnMpCiAJCQljaGVja19wdWJsaWNhdGlvbnMod3Jjb25u LCB2YWxpZGF0ZV9wdWJsaWNhdGlvbnMpOwogCisJCWNoZWNrX3B1YmxpY2F0aW9uc19leGNlcHRf bGlzdCh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25zKTsKKwogCQkvKiBHZXQgdGhlIHJlbGF0aW9u IGxpc3QgZnJvbSBwdWJsaXNoZXIuICovCiAJCXB1YnJlbHMgPSBmZXRjaF9yZWxhdGlvbl9saXN0 KHdyY29ubiwgc3ViLT5wdWJsaWNhdGlvbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IGIwNGIwZGJkMmEwLi4wOGQyMGJmMjgzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMK QEAgLTg2ODYsNyArODY4Niw3IEBAIEFURXhlY1NldEV4cHJlc3Npb24oQWx0ZXJlZFRhYmxlSW5m byAqdGFiLCBSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJICogZXhwcmVzc2lv bnMuCiAJICovCiAJaWYgKGF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1ZJUlRV QUwgJiYKLQkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKSAh PSBOSUwpCisJCUdldFJlbGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg TlVMTCwgTlVMTCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkFMVEVSIFRBQkxFIC8gU0VUIEVYUFJF U1NJT04gaXMgbm90IHN1cHBvcnRlZCBmb3IgdmlydHVhbCBnZW5lcmF0ZWQgY29sdW1ucyBpbiB0 YWJsZXMgdGhhdCBhcmUgcGFydCBvZiBhIHB1YmxpY2F0aW9uIiksCkBAIC0xODg4MSw3ICsxODg4 MSw3IEBAIEFUUHJlcENoYW5nZVBlcnNpc3RlbmNlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVs YXRpb24gcmVsLCBib29sIHRvTG9nZ2VkKQogCSAqIFVOTE9HR0VELCBhcyBVTkxPR0dFRCB0YWJs ZXMgY2FuJ3QgYmUgcHVibGlzaGVkLgogCSAqLwogCWlmICghdG9Mb2dnZWQgJiYKLQkJR2V0UmVs YXRpb25QdWJsaWNhdGlvbnMoUmVsYXRpb25HZXRSZWxpZChyZWwpKSAhPSBOSUwpCisJCUdldFJl bGF0aW9uUHVibGljYXRpb25zKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgTlVMTCwgTlVMTCkpCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygiY2Fubm90IGNoYW5nZSB0YWJsZSBcIiVzXCIg dG8gdW5sb2dnZWQgYmVjYXVzZSBpdCBpcyBwYXJ0IG9mIGEgcHVibGljYXRpb24iLApAQCAtMjAz MjIsNiArMjAzMjIsNyBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRpb24oTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAljb25zdCBjaGFyICp0cmlnZ2VyX25hbWU7 CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CiAJTGlzdAkgICAqcGFydEJvdW5kQ29uc3RyYWludDsK KwlMaXN0CSAgICpleGNlcHRwdWJvaWRzID0gTklMOwogCVBhcnNlU3RhdGUgKnBzdGF0ZSA9IG1h a2VfcGFyc2VzdGF0ZShOVUxMKTsKIAogCXBzdGF0ZS0+cF9zb3VyY2V0ZXh0ID0gY29udGV4dC0+ cXVlcnlTdHJpbmc7CkBAIC0yMDM2MSw2ICsyMDM2MiwyMSBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRp b24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qg YXR0YWNoIGEgdHlwZWQgdGFibGUgYXMgcGFydGl0aW9uIikpKTsKIAorCS8qCisJICogQ2hlY2sg dGhhdCB0aGUgdGFibGUgaXMgbm90IHBhcnQgb2YgYW55IHB1YmxpY2F0aW9uIHdoZW4gY2hhbmdp bmcgdG8KKwkgKiBVTkxPR0dFRCwgYXMgVU5MT0dHRUQgdGFibGVzIGNhbid0IGJlIHB1Ymxpc2hl ZC4KKwkgKi8KKwlHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhSZWxhdGlvbkdldFJlbGlkKGF0dGFj aHJlbCksIE5VTEwsICZleGNlcHRwdWJvaWRzKTsKKwlpZiAoZXhjZXB0cHVib2lkcyAhPSBOSUwp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQllcnJtc2coImNhbm5vdCBhdHRhY2ggdGFibGUgXCIlc1wi IGFzIHBhcnRpdGlvbiBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgaW4gYSBwdWJsaWNhdGlvbiBF WENFUFQgY2xhdXNlIiwKKwkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoYXR0YWNocmVs KSksCisJCQkJZXJyZGV0YWlsKCJUYWJsZXMgZXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnMgY2Fu bm90IGJlIGF0dGFjaGVkIGFzIHBhcnRpdGlvbnMuIiksCisJCQkJZXJyaGludCgiUmVtb3ZlIHRo ZSB0YWJsZSBmcm9tIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgbGlzdCBiZWZvcmUgYXR0YWNoaW5n IGl0LiIpKTsKKworCWxpc3RfZnJlZShleGNlcHRwdWJvaWRzKTsKKwogCS8qCiAJICogVGFibGUg YmVpbmcgYXR0YWNoZWQgc2hvdWxkIG5vdCBhbHJlYWR5IGJlIHBhcnQgb2YgaW5oZXJpdGFuY2U7 IGVpdGhlcgogCSAqIGFzIGEgY2hpbGQgdGFibGUuLi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGM1NjcyNTJh Y2M0Li4yMWVmN2JlZTcyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQor KysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yMDMsNiArMjAzLDcgQEAgc3RhdGlj IHZvaWQgcHJvY2Vzc0NBU2JpdHMoaW50IGNhc19iaXRzLCBpbnQgbG9jYXRpb24sIGNvbnN0IGNo YXIgKmNvbnN0clR5cGUsCiBzdGF0aWMgUGFydGl0aW9uU3RyYXRlZ3kgcGFyc2VQYXJ0aXRpb25T dHJhdGVneShjaGFyICpzdHJhdGVneSwgaW50IGxvY2F0aW9uLAogCQkJCQkJCQkJCQkJY29yZV95 eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5 cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAorCQkJCQkJCQkJCQlMaXN0ICoqcHVib2Jq ZWN0cywKIAkJCQkJCQkJCQkJYm9vbCAqYWxsX3RhYmxlcywKIAkJCQkJCQkJCQkJYm9vbCAqYWxs X3NlcXVlbmNlcywKIAkJCQkJCQkJCQkJY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpOwpAQCAtNDU1 LDYgKzQ1Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJCQkJVHJpZ2dlclRyYW5zaXRp b25zIFRyaWdnZXJSZWZlcmVuY2luZwogCQkJCXZhY3V1bV9yZWxhdGlvbl9saXN0IG9wdF92YWN1 dW1fcmVsYXRpb25fbGlzdAogCQkJCWRyb3Bfb3B0aW9uX2xpc3QgcHViX29ial9saXN0IHB1Yl9h bGxfb2JqX3R5cGVfbGlzdAorCQkJCXB1Yl9leGNlcHRfb2JqX2xpc3Qgb3B0X3B1Yl9leGNlcHRf Y2xhdXNlCiAKICV0eXBlIDxyZXRjbGF1c2U+IHJldHVybmluZ19jbGF1c2UKICV0eXBlIDxub2Rl PglyZXR1cm5pbmdfb3B0aW9uCkBAIC01OTIsNiArNTk0LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxub2RlPgl2YXJfdmFsdWUgem9uZV92YWx1ZQogJXR5cGUgPHJvbGVzcGVj PiBhdXRoX2lkZW50IFJvbGVTcGVjIG9wdF9ncmFudGVkX2J5CiAldHlwZSA8cHVibGljYXRpb25v YmplY3RzcGVjPiBQdWJsaWNhdGlvbk9ialNwZWMKKyV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNw ZWM+IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYwogJXR5cGUgPHB1YmxpY2F0aW9uYWxsb2JqZWN0 c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBlIDxrZXl3b3JkPiB1bnJlc2VydmVk X2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAtMTA3OTIsNyArMTA3OTUsNyBAQCBB bHRlck93bmVyU3RtdDogQUxURVIgQUdHUkVHQVRFIGFnZ3JlZ2F0ZV93aXRoX2FyZ3R5cGVzIE9X TkVSIFRPIFJvbGVTcGVjCiAgKgogICogcHViX2FsbF9vYmpfdHlwZSBpcyBvbmUgb2Y6CiAgKgot ICoJCVRBQkxFUworICoJCVRBQkxFUyBbRVhDRVBUIFtUQUJMRV0gKCB0YWJsZSBbLCAuLi5dICld CiAgKgkJU0VRVUVOQ0VTCiAgKgogICogQ1JFQVRFIFBVQkxJQ0FUSU9OIEZPUiBwdWJfb2JqIFss IC4uLl0gW1dJVEggb3B0aW9uc10KQEAgLTEwODE4LDcgKzEwODIxLDggQEAgQ3JlYXRlUHVibGlj YXRpb25TdG10OgogCQkJCQlDcmVhdGVQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShDcmVh dGVQdWJsaWNhdGlvblN0bXQpOwogCiAJCQkJCW4tPnB1Ym5hbWUgPSAkMzsKLQkJCQkJcHJlcHJv Y2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdCgkNSwgJm4tPmZvcl9hbGxfdGFibGVzLAorCQkJCQlw cmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+cHVib2JqZWN0cywKKwkJCQkJ CQkJCQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCiAJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfc2Vx dWVuY2VzLAogCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CiAJCQkJCW4tPm9wdGlvbnMgPSAkNjsK QEAgLTEwOTMzLDExICsxMDkzNywxNyBAQCBwdWJfb2JqX2xpc3Q6CVB1YmxpY2F0aW9uT2JqU3Bl YwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJOwogCitvcHRfcHViX2V4Y2VwdF9j bGF1c2U6CisJCQlFWENFUFQgb3B0X3RhYmxlICcoJyBwdWJfZXhjZXB0X29ial9saXN0ICcpJwl7 ICQkID0gJDQ7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJOwor CiBQdWJsaWNhdGlvbkFsbE9ialNwZWM6Ci0JCQkJQUxMIFRBQkxFUworCQkJCUFMTCBUQUJMRVMg b3B0X3B1Yl9leGNlcHRfY2xhdXNlCiAJCQkJCXsKIAkJCQkJCSQkID0gbWFrZU5vZGUoUHVibGlj YXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05fQUxM X1RBQkxFUzsKKwkJCQkJCSQkLT5leGNlcHRfdGFibGVzID0gJDM7CiAJCQkJCQkkJC0+bG9jYXRp b24gPSBAMTsKIAkJCQkJfQogCQkJCXwgQUxMIFNFUVVFTkNFUwpAQCAtMTA5NTQsNiArMTA5NjQs MjMgQEAgcHViX2FsbF9vYmpfdHlwZV9saXN0OglQdWJsaWNhdGlvbkFsbE9ialNwZWMKIAkJCQkJ eyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCTsKIAorUHVibGljYXRpb25FeGNlcHRPYmpTcGVj OgorCQkJIHJlbGF0aW9uX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRp b25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9FWENFUFRf VEFCTEU7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwor CQkJCQkkJC0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJ0YWJsZS0+cmVs YXRpb24gPSAkMTsKKwkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCTsKKworcHViX2V4 Y2VwdF9vYmpfbGlzdDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisJCQkJCXsgJCQgPSBsaXN0 X21ha2UxKCQxKTsgfQorCQkJfCBwdWJfZXhjZXB0X29ial9saXN0ICcsJyBQdWJsaWNhdGlvbkV4 Y2VwdE9ialNwZWMKKwkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQorCTsKIAogLyoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgpAQCAtMTk4MTIsOCArMTk4MzksOSBAQCBwYXJzZVBhcnRpdGlv blN0cmF0ZWd5KGNoYXIgKnN0cmF0ZWd5LCBpbnQgbG9jYXRpb24sIGNvcmVfeXlzY2FuX3QgeXlz Y2FubmVyKQogICogQWxzbywgY2hlY2tzIGlmIHRoZSBwdWJfb2JqZWN0X3R5cGUgaGFzIGJlZW4g c3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlLgogICovCiBzdGF0aWMgdm9pZAotcHJlcHJvY2Vzc19w dWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBib29sICphbGxfdGFi bGVzLAotCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cikKK3ByZXByb2Nlc3NfcHViX2FsbF9vYmp0eXBlX2xpc3QoTGlzdCAqYWxsX29iamVjdHNfbGlz dCwgTGlzdCAqKnB1Ym9iamVjdHMsCisJCQkJCQkJCWJvb2wgKmFsbF90YWJsZXMsIGJvb2wgKmFs bF9zZXF1ZW5jZXMsCisJCQkJCQkJCWNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogewogCWlmICgh YWxsX29iamVjdHNfbGlzdCkKIAkJcmV0dXJuOwpAQCAtMTk4MzMsNiArMTk4NjEsNyBAQCBwcmVw cm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIGJvb2wg KmFsbF90YWJsZXMsCiAJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ob2JqLT5sb2NhdGlvbikpOwog CiAJCQkqYWxsX3RhYmxlcyA9IHRydWU7CisJCQkqcHVib2JqZWN0cyA9IGxpc3RfY29uY2F0KCpw dWJvYmplY3RzLCBvYmotPmV4Y2VwdF90YWJsZXMpOwogCQl9CiAJCWVsc2UgaWYgKG9iai0+cHVi b2JqdHlwZSA9PSBQVUJMSUNBVElPTl9BTExfU0VRVUVOQ0VTKQogCQl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCAyZjJmMDEyMWVjZi4uMDQ2YTUw ZjJlOWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpA QCAtMTA0LDYgKzEwNCw3IEBACiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oIgogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDdhNDkxODVkMjlkLi43YTZkZDg0MTExMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xNzk3 LDEyICsxNzk3LDE4IEBAIHBnb3V0cHV0X3NodXRkb3duKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCkKICAqIHRvIHNpbGVudGx5IGNvbnRpbnVlIHRoZSByZXBsaWNhdGlvbiBpbiB0aGUgYWJz ZW5jZSBvZiBhIG1pc3NpbmcgcHVibGljYXRpb24uCiAgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1 c2Ugd2UgYWxsb3cgdGhlIHVzZXJzIHRvIGNyZWF0ZSBwdWJsaWNhdGlvbnMgYWZ0ZXIgdGhleQog ICogaGF2ZSBzcGVjaWZpZWQgdGhlIHJlcXVpcmVkIHB1YmxpY2F0aW9ucyBhdCB0aGUgdGltZSBv ZiByZXBsaWNhdGlvbiBzdGFydC4KKyAqCisgKiBXZSBhbHNvIGVuZm9yY2UgdGhhdCBubyBtb3Jl IHRoYW4gb25lIHB1YmxpY2F0aW9uIGluIHRoZSBsaXN0IG1heSBjb250YWluCisgKiBhbiBFWENF UFQgVEFCTEUgY2xhdXNlLiBVc2luZyBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgd2l0aCBFWENFUFQg VEFCTEUgY2xhdXNlCisgKiBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgdG8gcHJldmVudCBub24t ZGV0ZXJtaW5pc3RpYyBmaWx0ZXJpbmcgYmVoYXZpb3IKKyAqIGFjcm9zcyBvdmVybGFwcGluZyBw dWJsaWNhdGlvbiBzZXRzLgogICovCiBzdGF0aWMgTGlzdCAqCiBMb2FkUHVibGljYXRpb25zKExp c3QgKnB1Ym5hbWVzKQogewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0Q2VsbCAgICps YzsKKwlMaXN0CSAgICpwdWJuYW1lc193aXRoX2V4Y2VwdCA9IE5JTDsKIAogCWZvcmVhY2gobGMs IHB1Ym5hbWVzKQogCXsKQEAgLTE4MTAsNyArMTgxNiwxMyBAQCBMb2FkUHVibGljYXRpb25zKExp c3QgKnB1Ym5hbWVzKQogCQlQdWJsaWNhdGlvbiAqcHViID0gR2V0UHVibGljYXRpb25CeU5hbWUo cHVibmFtZSwgdHJ1ZSk7CiAKIAkJaWYgKHB1YikKKwkJewogCQkJcmVzdWx0ID0gbGFwcGVuZChy ZXN1bHQsIHB1Yik7CisKKwkJCS8qIENoZWNrIGlmIHRoaXMgcHVibGljYXRpb24gaGFzIGFuIEVY Q0VQVCBUQUJMRSBsaXN0LiAqLworCQkJaWYgKHB1YmxpY2F0aW9uX2hhc19hbnlfZXhjZXB0X3Rh YmxlKHB1Yi0+b2lkKSkKKwkJCQlwdWJuYW1lc193aXRoX2V4Y2VwdCA9IGxhcHBlbmQocHVibmFt ZXNfd2l0aF9leGNlcHQsIG1ha2VTdHJpbmcocHVibmFtZSkpOworCQl9CiAJCWVsc2UKIAkJCWVy ZXBvcnQoV0FSTklORywKIAkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKQEAgLTE4MTksNiArMTgzMSw5IEBAIExvYWRQdWJsaWNhdGlvbnMoTGlz dCAqcHVibmFtZXMpCiAJCQkJCWVycmhpbnQoIkNyZWF0ZSB0aGUgcHVibGljYXRpb24gaWYgaXQg ZG9lcyBub3QgZXhpc3QuIikpOwogCX0KIAorCUNoZWNrUHVibGljYXRpb25zRm9yRXhjZXB0Q2xh dXNlcyhwdWJuYW1lc193aXRoX2V4Y2VwdCk7CisKKwlsaXN0X2ZyZWVfZGVlcChwdWJuYW1lc193 aXRoX2V4Y2VwdCk7CiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMjA4OSw3ICsyMTA0LDcgQEAg Z2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24p CiAJaWYgKCFlbnRyeS0+cmVwbGljYXRlX3ZhbGlkKQogCXsKIAkJT2lkCQkJc2NoZW1hSWQgPSBn ZXRfcmVsX25hbWVzcGFjZShyZWxpZCk7Ci0JCUxpc3QJICAgKnB1YmlkcyA9IEdldFJlbGF0aW9u UHVibGljYXRpb25zKHJlbGlkKTsKKwkJTGlzdAkgICAqcHViaWRzID0gTklMOwogCiAJCS8qCiAJ CSAqIFdlIGRvbid0IGFjcXVpcmUgYSBsb2NrIG9uIHRoZSBuYW1lc3BhY2Ugc3lzdGVtIHRhYmxl IGFzIHdlIGJ1aWxkCkBAIC0yMTA0LDYgKzIxMTksOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdP dXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJY2hhcgkJcmVsa2luZCA9IGdl dF9yZWxfcmVsa2luZChyZWxpZCk7CiAJCUxpc3QJICAgKnJlbF9wdWJsaWNhdGlvbnMgPSBOSUw7 CiAKKwkJR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQsICZwdWJpZHMsIE5VTEwpOworCiAJ CS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJlZm9yZSB1c2UuICovCiAJCWlmICgh cHVibGljYXRpb25zX3ZhbGlkKQogCQl7CkBAIC0yMjA2LDE0ICsyMjIzLDIyIEBAIGdldF9yZWxf c3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJICov CiAJCQlpZiAocHViLT5hbGx0YWJsZXMpCiAJCQl7Ci0JCQkJcHVibGlzaCA9IHRydWU7Ci0JCQkJ aWYgKHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCisJCQkJTGlzdAkgICAqZXhjZXB0 cHViaWRzID0gTklMOworCisJCQkJaWYgKGFtX3BhcnRpdGlvbiAmJiBwdWItPnB1YnZpYXJvb3Qp CiAJCQkJewogCQkJCQlMaXN0CSAgICphbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2VzdG9y cyhyZWxpZCk7CiAKIAkJCQkJcHViX3JlbGlkID0gbGxhc3Rfb2lkKGFuY2VzdG9ycyk7CiAJCQkJ CWFuY2VzdG9yX2xldmVsID0gbGlzdF9sZW5ndGgoYW5jZXN0b3JzKTsKIAkJCQl9CisKKwkJCQlH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhwdWJfcmVsaWQsIE5VTEwsICZleGNlcHRwdWJpZHMpOwor CisJCQkJaWYgKCFsaXN0X21lbWJlcl9vaWQoZXhjZXB0cHViaWRzLCBwdWItPm9pZCkpCisJCQkJ CXB1Ymxpc2ggPSB0cnVlOworCisJCQkJbGlzdF9mcmVlKGV4Y2VwdHB1Ymlkcyk7CiAJCQl9CiAK IAkJCWlmICghcHVibGlzaCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IDZiNjM0 YzlmZmYxLi5kYzAyMWRiYjZjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01 Nzg4LDcgKzU3ODgsOSBAQCBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhS ZWxhdGlvbiwKIHZvaWQKIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVs YXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIHsKLQlMaXN0CSAgICpwdWJvaWRzOwor CUxpc3QJICAgKnB1Ym9pZHMgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0cHVib2lkcyA9IE5JTDsK KwlMaXN0CSAgICphbGx0YWJsZXNwdWJvaWRzOwogCUxpc3RDZWxsICAgKmxjOwogCU1lbW9yeUNv bnRleHQgb2xkY3h0OwogCU9pZAkJCXNjaGVtYWlkOwpAQCAtNTgyNiw3ICs1ODI4LDcgQEAgUmVs YXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25E ZXNjICpwdWJkZXNjKQogCXB1YmRlc2MtPmdlbmNvbHNfdmFsaWRfZm9yX2RlbGV0ZSA9IHRydWU7 CiAKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwotCXB1Ym9p ZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CisJR2V0UmVsYXRpb25QdWJsaWNh dGlvbnMocmVsaWQsICZwdWJvaWRzLCAmZXhjZXB0cHVib2lkcyk7CiAJc2NoZW1haWQgPSBSZWxh dGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7CiAJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1 ZV9vaWQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAKQEAgLTU4 MzgsMTYgKzU4NDAsMjUgQEAgUmVsYXRpb25CdWlsZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiBy ZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNjKQogCQlmb3JlYWNoKGxjLCBhbmNlc3Rv cnMpCiAJCXsKIAkJCU9pZAkJCWFuY2VzdG9yID0gbGZpcnN0X29pZChsYyk7CisJCQlMaXN0CSAg ICphbmNlc3Rvcl9wdWJvaWRzID0gTklMOworCQkJTGlzdAkgICAqYW5jZXN0b3JfZXhjZXB0cHVi b2lkcyA9IE5JTDsKIAotCQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lk cywKLQkJCQkJCQkJCQkJIEdldFJlbGF0aW9uUHVibGljYXRpb25zKGFuY2VzdG9yKSk7CisJCQlH ZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhhbmNlc3RvciwgJmFuY2VzdG9yX3B1Ym9pZHMsCisJCQkJ CQkJCQkmYW5jZXN0b3JfZXhjZXB0cHVib2lkcyk7CisKKwkJCXB1Ym9pZHMgPSBsaXN0X2NvbmNh dF91bmlxdWVfb2lkKHB1Ym9pZHMsIGFuY2VzdG9yX3B1Ym9pZHMpOwogCQkJc2NoZW1haWQgPSBn ZXRfcmVsX25hbWVzcGFjZShhbmNlc3Rvcik7CiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5p cXVlX29pZChwdWJvaWRzLAogCQkJCQkJCQkJCQkgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVt YWlkKSk7CisJCQlleGNlcHRwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChleGNlcHRw dWJvaWRzLAorCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JfZXhjZXB0cHVib2lkcyk7CiAJCX0KIAl9 Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0QWxsVGFibGVz UHVibGljYXRpb25zKCkpOwogCisJYWxsdGFibGVzcHVib2lkcyA9IEdldEFsbFRhYmxlc1B1Ymxp Y2F0aW9ucygpOworCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9pZHMsCisJ CQkJCQkJCQkgbGlzdF9kaWZmZXJlbmNlX29pZChhbGx0YWJsZXNwdWJvaWRzLAorCQkJCQkJCQkJ CQkJCQkgZXhjZXB0cHVib2lkcykpOwogCWZvcmVhY2gobGMsIHB1Ym9pZHMpCiAJewogCQlPaWQJ CQlwdWJpZCA9IGxmaXJzdF9vaWQobGMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNDUwY2VjMjg1YjMuLjRm OTIwNTRiMzc3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ2MjMsOSArNDYyMyw1NSBAQCBnZXRQdWJsaWNh dGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcHVi dmlhcm9vdCksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9baV0ucHViZ2VuY29sc190eXBlID0KIAkJ CSooUFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZ2VuY29scykpOworCQlwdWJpbmZvW2ldLmV4Y2Vw dF90YWJsZXMgPSAoU2ltcGxlUHRyTGlzdCkKKwkJeworCQkJTlVMTCwgTlVMTAorCQl9OwogCiAJ CS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJs ZU9iamVjdCgmKHB1YmluZm9baV0uZG9iaiksIGZvdXQpOworCisJCS8qCisJCSAqIEdldCB0aGUg bGlzdCBvZiB0YWJsZXMgZm9yIHB1YmxpY2F0aW9ucyBzcGVjaWZpZWQgd2l0aCB0aGUgRVhDRVBU CisJCSAqIFRBQkxFIGNsYXVzZS4gVGhpcyBpcyBpbnRyb2R1Y2VkIGluIFBvc3RncmVTUUwgMTku CisJCSAqCisJCSAqIEVYQ0VQVCBUQUJMRVMgaXMgcHJvY2Vzc2VkIGhlcmUgYW5kIG91dHB1dCBk aXJlY3RseSBieQorCQkgKiBkdW1wUHVibGljYXRpb24oKS4gVGhpcyBkaWZmZXJzIGZyb20gdGhl IGFwcHJvYWNoIHVzZWQgaW4KKwkJICogZHVtcFB1YmxpY2F0aW9uVGFibGUoKSBhbmQgZHVtcFB1 YmxpY2F0aW9uTmFtZXNwYWNlKCksIHNpbmNlIHRoYXQKKwkJICogYXBwcm9hY2ggd291bGQgcmVx dWlyZSBFWENFUFQgVEFCTEUgc3VwcG9ydCBmb3IgQUxURVIgUFVCTElDQVRJT04sCisJCSAqIHdo aWNoIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCQkgKi8KKwkJaWYgKGZvdXQtPnJlbW90 ZVZlcnNpb24gPj0gMTkwMDAwKQorCQl7CisJCQlpbnQJCQludGJsczsKKwkJCVBHcmVzdWx0ICAg KnJlc190YmxzOworCisJCQlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKKwkJCWFwcGVuZFBRRXhw QnVmZmVyKHF1ZXJ5LAorCQkJCQkJCSAgIlNFTEVDVCBwcnJlbGlkXG4iCisJCQkJCQkJICAiRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbFxuIgorCQkJCQkJCSAgIldIRVJFIHBycHVi aWQgPSAldSBhbmQgcHJleGNlcHQiLAorCQkJCQkJCSAgcHViaW5mb1tpXS5kb2JqLmNhdElkLm9p ZCk7CisKKwkJCXJlc190YmxzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHF1ZXJ5LT5kYXRhLCBQ R1JFU19UVVBMRVNfT0spOworCisJCQludGJscyA9IFBRbnR1cGxlcyhyZXNfdGJscyk7CisKKwkJ CWZvciAoaW50IGogPSAwOyBqIDwgbnRibHM7IGorKykKKwkJCXsKKwkJCQlPaWQJCQlwcnJlbGlk OworCQkJCVRhYmxlSW5mbyAgKnRiaW5mbzsKKworCQkJCXBycmVsaWQgPSBhdG9vaWQoUFFnZXR2 YWx1ZShyZXNfdGJscywgaiwgMCkpOworCisJCQkJdGJpbmZvID0gZmluZFRhYmxlQnlPaWQocHJy ZWxpZCk7CisKKwkJCQlpZiAodGJpbmZvICE9IE5VTEwpCisJCQkJCXNpbXBsZV9wdHJfbGlzdF9h cHBlbmQoJnB1YmluZm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCX0KKworCQkJUFFj bGVhcihyZXNfdGJscyk7CisJCX0KIAl9CiAKIGNsZWFudXA6CkBAIC00NjY1LDcgKzQ3MTEsMjUg QEAgZHVtcFB1YmxpY2F0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uSW5mbyAq cHViaW5mbykKIAlpZiAocHViaW5mby0+cHViYWxsdGFibGVzICYmIHB1YmluZm8tPnB1YmFsbHNl cXVlbmNlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMs IEFMTCBTRVFVRU5DRVMiKTsKIAllbHNlIGlmIChwdWJpbmZvLT5wdWJhbGx0YWJsZXMpCisJewor CQlpbnQJCQluX2V4Y2VwdCA9IDA7CisKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIg Rk9SIEFMTCBUQUJMRVMiKTsKKworCQkvKiBJbmNsdWRlIEVYQ0VQVCBUQUJMRSBjbGF1c2UgaWYg dGhlcmUgYXJlIGV4Y2VwdF90YWJsZXMuICovCisJCWZvciAoU2ltcGxlUHRyTGlzdENlbGwgKmNl bGwgPSBwdWJpbmZvLT5leGNlcHRfdGFibGVzLmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0 KQorCQl7CisJCQlUYWJsZUluZm8gICp0YmluZm8gPSAoVGFibGVJbmZvICopIGNlbGwtPnB0cjsK KworCQkJaWYgKCsrbl9leGNlcHQgPT0gMSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiBFWENFUFQgVEFCTEUgKCIpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LCAiLCAiKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiT05MWSAlcyIsIGZt dFF1YWxpZmllZER1bXBhYmxlKHRiaW5mbykpOworCQl9CisJCWlmIChuX2V4Y2VwdCA+IDApCisJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIikiKTsKKwl9CiAJZWxzZSBpZiAocHViaW5m by0+cHViYWxsc2VxdWVuY2VzKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBGT1Ig QUxMIFNFUVVFTkNFUyIpOwogCkBAIC00ODQ1LDYgKzQ5MDksNyBAQCBnZXRQdWJsaWNhdGlvblRh YmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQog CiAJLyogQ29sbGVjdCBhbGwgcHVibGljYXRpb24gbWVtYmVyc2hpcCBpbmZvLiAqLwogCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKKwl7CiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KHF1ZXJ5LAogCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQs ICIKIAkJCQkJCQkgInBnX2NhdGFsb2cucGdfZ2V0X2V4cHIocHJxdWFsLCBwcnJlbGlkKSBBUyBw cnJlbHF1YWwsICIKQEAgLTQ4NTcsNiArNDkyMiw5IEBAIGdldFB1YmxpY2F0aW9uVGFibGVzKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkJCQkJ ICIgICAgICBXSEVSRSBhdHRyZWxpZCA9IHByLnBycmVsaWQgQU5EIGF0dG51bSA9IHByYXR0cnNb c10pXG4iCiAJCQkJCQkJICIgIEVMU0UgTlVMTCBFTkQpIHByYXR0cnMgIgogCQkJCQkJCSAiRlJP TSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwciIpOworCQlpZiAoZm91dC0+cmVtb3Rl VmVyc2lvbiA+PSAxOTAwMDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSEVS RSBOT1QgcHIucHJleGNlcHQiKTsKKwl9CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwKIAkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1YmlkLCBwcnJlbGlkLCAi CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAppbmRleCA2ZGVjZWVmMjNmMy4uZTEzOGVmMTI3NmMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApA QCAtNjc2LDYgKzY3Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9QdWJsaWNhdGlvbkluZm8KIAlib29s CQlwdWJ0cnVuY2F0ZTsKIAlib29sCQlwdWJ2aWFyb290OwogCVB1Ymxpc2hHZW5jb2xzVHlwZSBw dWJnZW5jb2xzX3R5cGU7CisJU2ltcGxlUHRyTGlzdCBleGNlcHRfdGFibGVzOwogfSBQdWJsaWNh dGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGJjN2EwODJmNTdh Li5mMDI5MGRlOWMzZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAu cGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTMxNjUsNiArMzE2 NSwzNiBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bv c3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjgnID0+IHsK KwkJY3JlYXRlX29yZGVyID0+IDUwLAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJM SUNBVElPTiBwdWI4IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoZHVtcF90ZXN0LnRlc3RfdGFibGUp OycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI4IEZPUiBB TEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZSkgV0lUSCAo cHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0s CisJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0s CisKKwknQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjknID0+IHsKKwkJY3JlYXRlX29yZGVyID0+IDUw LAorCQljcmVhdGVfc3FsID0+CisJCSAgJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI5IEZPUiBBTEwg VEFCTEVTIEVYQ0VQVCBUQUJMRSAoZHVtcF90ZXN0LnRlc3RfdGFibGUsIGR1bXBfdGVzdC50ZXN0 X3NlY29uZF90YWJsZSk7JywKKwkJcmVnZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChPTkxZIGR1bXBfdGVzdC50ZXN0 X3RhYmxlLCBPTkxZIGR1bXBfdGVzdC50ZXN0X3NlY29uZF90YWJsZSkgV0lUSCAocHVibGlzaCA9 ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJCQkveG0sCisJCWxpa2Ug PT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCX0sCisKKwknQ1JF QVRFIFBVQkxJQ0FUSU9OIHB1YjEwJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3Jl YXRlX3NxbCA9PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTAgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFIChkdW1wX3Rlc3QudGVzdF9pbmhlcml0YW5jZV9wYXJlbnQpOycsCisJCXJl Z2V4cCA9PiBxci9eCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMCBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKE9OTFkgZHVtcF90ZXN0LnRlc3RfaW5oZXJpdGFuY2VfcGFyZW50LCBP TkxZIGR1bXBfdGVzdC50ZXN0X2luaGVyaXRhbmNlX2NoaWxkKSBXSVRIIChwdWJsaXNoID0gJ2lu c2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlJyk7XEUKKwkJCS94bSwKKwkJbGlrZSA9PiB7 ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwogCSdDUkVBVEUg U1VCU0NSSVBUSU9OIHN1YjEnID0+IHsKIAkJY3JlYXRlX29yZGVyID0+IDUwLAogCQljcmVhdGVf c3FsID0+ICdDUkVBVEUgU1VCU0NSSVBUSU9OIHN1YjEKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNTcxYTZhMDAzZDUu LjI0ZGYwM2ExZmQzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9z cmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMzA3MywxNyArMzA3MywzNCBAQCBkZXNjcmliZU9u ZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJCQkJCQkgICIgICAgICAg ICAgV0hFUkUgYXR0cmVsaWQgPSBwci5wcnJlbGlkIEFORCBhdHRudW0gPSBwcmF0dHJzW3NdKVxu IgogCQkJCQkJCQkgICIgICAgICAgIEVMU0UgTlVMTCBFTkQpICIKIAkJCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiICAgICBKT0lOIHBnX2Nh dGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxuIgotCQkJ CQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBjIE9OIGMub2lkID0gcHIucHJy ZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCQkg ICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gcC5vaWQgPSBwci5w cnB1YmlkXG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBnX2NsYXNzIGMgT04gYy5v aWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4i LAorCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQpOworCisJCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0g MTkwMDAwKQorCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiIEFORCBOT1QgcHIucHJl eGNlcHRcbiIpOworCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkJICAiVU5J T05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWVcbiIKLQkJCQkJCQkJICAiICAgICAsIE5V TExcbiIKLQkJCQkJCQkJICAiICAgICAsIE5VTExcbiIKKwkJCQkJCQkJICAiCQksIE5VTExcbiIK KwkJCQkJCQkJICAiCQksIE5VTExcbiIKIAkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uIHBcbiIKLQkJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGx0YWJsZXMgQU5EIHBnX2Nh dGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVzJylcbiIKLQkJCQkJCQkJICAiT1JE RVIgQlkgMTsiLAotCQkJCQkJCQkgIG9pZCwgb2lkLCBvaWQsIG9pZCk7CisJCQkJCQkJCSAgIldI RVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hh YmxlKCclcycpXG4iLAorCQkJCQkJCQkgIG9pZCk7CisKKwkJCQlpZiAocHNldC5zdmVyc2lvbiA+ PSAxOTAwMDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCQkgICIgICAg IEFORCBOT1QgRVhJU1RTIChcbiIKKwkJCQkJCQkJCSAgIgkJU0VMRUNUIDFcbiIKKwkJCQkJCQkJ CSAgIgkJRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCQkJ ICAiCQlKT0lOIHBnX2NhdGFsb2cucGdfY2xhc3MgcGNcbiIKKwkJCQkJCQkJCSAgIgkJT04gcHIu cHJyZWxpZCA9IHBjLm9pZFxuIgorCQkJCQkJCQkJICAiCQlXSEVSRSBwci5wcnJlbGlkID0gJyVz JyBBTkQgcHIucHJwdWJpZCA9IHAub2lkKVxuIiwKKwkJCQkJCQkJCSAgb2lkKTsKKworCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJPUkRFUiBCWSAxOyIpOwogCQkJfQogCQkJZWxzZQog CQkJewpAQCAtMzEzNCw2ICszMTUxLDM1IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQlQUWNsZWFyKHJlc3VsdCk7CiAJCX0KIAorCQkvKiBQcmlu dCBwdWJsaWNhdGlvbnMgd2hlcmUgdGhlIHRhYmxlIGlzIGluIHRoZSBFWENFUFQgY2xhdXNlICov CisJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJeworCQkJcHJpbnRmUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBn X3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkgICJX SEVSRSBwci5wcnJlbGlkID0gJyVzJ1xuIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCSAgIk9S REVSIEJZIDE7Iiwgb2lkKTsKKworCQkJcmVzdWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJ aWYgKCFyZXN1bHQpCisJCQkJZ290byBlcnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVz ID0gUFFudHVwbGVzKHJlc3VsdCk7CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJCXByaW50VGFi bGVBZGRGb290ZXIoJmNvbnQsIF8oIkV4Y2VwdCBQdWJsaWNhdGlvbnM6IikpOworCisJCQkvKiBN aWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCB0 dXBsZXM7IGkrKykKKwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNc IiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQlwcmludFRhYmxlQWRkRm9vdGVy KCZjb250LCBidWYuZGF0YSk7CisJCQl9CisJCQlQUWNsZWFyKHJlc3VsdCk7CisJCX0KKwogCQkv KgogCQkgKiBJZiB2ZXJib3NlLCBwcmludCBOT1QgTlVMTCBjb25zdHJhaW50cy4KIAkJICovCkBA IC02NzUzLDggKzY3OTksMTIgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0 dGVybikKIAkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4i CiAJCQkJCQkJICAiV0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgogCQkJCQkJCSAgIiAg QU5EIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCSAgIiAgQU5EIHByLnBycHViaWQgPSAn JXMnXG4iCi0JCQkJCQkJICAiT1JERVIgQlkgMSwyIiwgcHViaWQpOworCQkJCQkJCSAgIiAgQU5E IHByLnBycHViaWQgPSAnJXMnXG4iLCBwdWJpZCk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE5MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICBBTkQgTk9UIHByLnByZXhj ZXB0XG4iKTsKKworCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIk9SREVSIEJZIDEsMiIpOwog CQkJaWYgKCFhZGRGb290ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZh bHNlLCAmY29udCkpCiAJCQkJZ290byBlcnJvcl9yZXR1cm47CiAKQEAgLTY3NzIsNiArNjgyMiwy MyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQlnb3Rv IGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQorCQllbHNlCisJCXsKKwkJCWlmIChwc2V0LnN2ZXJz aW9uID49IDE5MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQgdGFibGVzIGluIHRoZSBFWENFUFQgY2xh dXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCQkJICAiU0VMRUNUIGNvbmNhdChjLnJlbG5hbWVzcGFjZTo6cmVnbmFtZXNwYWNlLCAn LicsIGMucmVsbmFtZSlcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNc biIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHBy IE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgorCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1YmlkID0g JyVzJ1xuIgorCQkJCQkJCQkgICIgIEFORCBwci5wcmV4Y2VwdFxuIgorCQkJCQkJCQkgICJPUkRF UiBCWSAxIiwgcHViaWQpOworCQkJCWlmICghYWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1 ZiwgXygiRXhjZXB0IHRhYmxlczoiKSwKKwkJCQkJCQkJCQkJCXRydWUsICZjb250KSkKKwkJCQkJ Z290byBlcnJvcl9yZXR1cm47CisJCQl9CisJCX0KIAogCQlwcmludFRhYmxlKCZjb250LCBwc2V0 LnF1ZXJ5Rm91dCwgZmFsc2UsIHBzZXQubG9nZmlsZSk7CiAJCXByaW50VGFibGVDbGVhbnVwKCZj b250KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA4YjkxYmMwMDA2Mi4uMzk0MDRlYTBmNjkg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmlu L3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTM2NjksNyArMzY2OSwxNyBAQCBtYXRjaF9wcmV2 aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiKSkKIAkJQ09NUExFVEVfV0lUSCgi VEFCTEVTIiwgIlNFUVVFTkNFUyIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiKSkKLQkJQ09NUExFVEVf V0lUSCgiV0lUSCAoIik7CisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBUQUJMRSAoIiwgIldJVEgg KCIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIlRB QkxFICgiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIkZPUiIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQorCQlDT01Q TEVURV9XSVRIKCIoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9O IiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlRBQkxFUyIsICJFWENFUFQiLCAiVEFCTEUiLCAi KCIpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJs ZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhDRVBUIiwgIlRBQkxFIiwgIigiLCBNYXRjaEFu eU4pICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIX1NDSEVNQV9R VUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFU RSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMiLCAiRVhD RVBUIiwgIlRBQkxFIiwgIigiLCBNYXRjaEFueU4pICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywn KSkKKwkJQ09NUExFVEVfV0lUSCgiKSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFUyIpKQogCQlDT01QTEVURV9XSVRI KCJJTiBTQ0hFTUEiKTsKIAllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5kc193aXRoKHByZXZf d2QsICcsJykpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggNmU1ZjczY2Fh OWUuLmMzMzUyNGU0NDU2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0x NTAsMTYgKzE1MCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbEluZm8KIAlSZWxh dGlvbglyZWxhdGlvbjsKIAlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlMaXN0CSAgICpjb2x1bW5z OworCWJvb2wJCWV4Y2VwdDsKIH0gUHVibGljYXRpb25SZWxJbmZvOwogCiBleHRlcm4gUHVibGlj YXRpb24gKkdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4gUHVibGljYXRpb24gKkdl dFB1YmxpY2F0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKnB1Ym5hbWUsIGJvb2wgbWlzc2luZ19vayk7 Ci1leHRlcm4gTGlzdCAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoT2lkIHJlbGlkKTsKK2V4dGVy biBib29sIEdldFJlbGF0aW9uUHVibGljYXRpb25zKE9pZCByZWxpZCwgTGlzdCAqKnB1Ymlkcywg TGlzdCAqKmV4Y2VwdF9wdWJpZHMpOwogCiAvKi0tLS0tLS0tLQotICogRXhwZWN0ZWQgdmFsdWVz IGZvciBwdWJfcGFydG9wdCBwYXJhbWV0ZXIgb2YgR2V0UHVibGljYXRpb25SZWxhdGlvbnMoKSwK LSAqIHdoaWNoIGFsbG93cyBjYWxsZXJzIHRvIHNwZWNpZnkgd2hpY2ggcGFydGl0aW9ucyBvZiBw YXJ0aXRpb25lZCB0YWJsZXMKLSAqIG1lbnRpb25lZCBpbiB0aGUgcHVibGljYXRpb24gdGhleSBl eHBlY3QgdG8gc2VlLgorICogRXhwZWN0ZWQgdmFsdWVzIGZvciBwdWJfcGFydG9wdCBwYXJhbWV0 ZXIgb2YKKyAqIEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoKSwgd2hpY2ggYWxsb3dz IGNhbGxlcnMgdG8gc3BlY2lmeSB3aGljaAorICogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCB0 YWJsZXMgbWVudGlvbmVkIGluIHRoZSBwdWJsaWNhdGlvbiB0aGV5IGV4cGVjdCB0bworICogc2Vl LgogICoKICAqCVJPT1Q6CW9ubHkgdGhlIHRhYmxlIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIHRo ZSBwdWJsaWNhdGlvbgogICoJTEVBRjoJb25seSBsZWFmIHBhcnRpdGlvbnMgaW4gZ2l2ZW4gdHJl ZQpAQCAtMTcyLDkgKzE3NCwxMiBAQCB0eXBlZGVmIGVudW0gUHVibGljYXRpb25QYXJ0T3B0CiAJ UFVCTElDQVRJT05fUEFSVF9BTEwsCiB9IFB1YmxpY2F0aW9uUGFydE9wdDsKIAotZXh0ZXJuIExp c3QgKkdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0 IHB1Yl9wYXJ0b3B0KTsKK2V4dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRp b25zKE9pZCBwdWJpZCwKKwkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9w dCk7CitleHRlcm4gTGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhPaWQgcHViaWQs CisJCQkJCQkJCQkJICBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExp c3QgKkdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKTsKLWV4dGVybiBMaXN0ICpHZXRBbGxQ dWJsaWNhdGlvblJlbGF0aW9ucyhjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCk7CitleHRl cm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoUHVibGljYXRpb24gKnB1YiwgY2hh ciByZWxraW5kKTsKIGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1Ymlk KTsKIGV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4 dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCkBA IC0xODksNiArMTk0LDcgQEAgZXh0ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0 aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycywKIAogZXh0ZXJuIGJvb2wgaXNfcHVibGlz aGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBib29sIGlzX3NjaGVtYV9wdWJs aWNhdGlvbihPaWQgcHViaWQpOworZXh0ZXJuIGJvb2wgcHVibGljYXRpb25faGFzX2FueV9leGNl cHRfdGFibGUoT2lkIHB1YmlkKTsKIGV4dGVybiBib29sIGNoZWNrX2FuZF9mZXRjaF9jb2x1bW5f bGlzdChQdWJsaWNhdGlvbiAqcHViLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJTWVtb3J5Q29udGV4 dCBtY3h0LCBCaXRtYXBzZXQgKipjb2xzKTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0 aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKaW5kZXggNjNlYjdjNzVmNTMuLmNl ZmMzOGM5ZWQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u X3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKQEAg LTMzLDYgKzMzLDcgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbl9yZWwsNjEwNixQdWJsaWNhdGlv blJlbFJlbGF0aW9uSWQpCiAJT2lkCQkJb2lkOwkJCS8qIG9pZCAqLwogCU9pZAkJCXBycHViaWQg QktJX0xPT0tVUChwZ19wdWJsaWNhdGlvbik7IC8qIE9pZCBvZiB0aGUgcHVibGljYXRpb24gKi8K IAlPaWQJCQlwcnJlbGlkIEJLSV9MT09LVVAocGdfY2xhc3MpOwkvKiBPaWQgb2YgdGhlIHJlbGF0 aW9uICovCisJYm9vbAkJcHJleGNlcHQgQktJX0RFRkFVTFQoZik7CS8qIHJlbGF0aW9uIGlzIG5v dCBwdWJsaXNoZWQgKi8KIAogI2lmZGVmCUNBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVu Z3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJcGdfbm9kZV90cmVlIHBycXVhbDsJCS8qIHF1YWxp ZmljYXRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5kZXgg NjM1MDQyMzJhMTQuLjRiYjZmNWE0OTIxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5oCkBAIC0zNiw0ICszNiw2IEBAIGV4dGVybiB2b2lkIENoZWNrU3ViRGVhZFR1cGxl UmV0ZW50aW9uKGJvb2wgY2hlY2tfZ3VjLCBib29sIHN1Yl9kaXNhYmxlZCwKIAkJCQkJCQkJCSAg IGJvb2wgcmV0ZW50aW9uX2FjdGl2ZSwKIAkJCQkJCQkJCSAgIGJvb2wgbWF4X3JldGVudGlvbl9z ZXQpOwogCitleHRlcm4gdm9pZCBDaGVja1B1YmxpY2F0aW9uc0ZvckV4Y2VwdENsYXVzZXMoTGlz dCAqZXhjZXB0X3B1YmxpY2F0aW9ucyk7CisKICNlbmRpZgkJCQkJCQkvKiBTVUJTQ1JJUFRJT05D TURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmMzcxMzE4MzViZS4uZmY0MTk0M2E2 ZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQyOTksOSArNDI5OSwxMCBAQCB0eXBlZGVm IHN0cnVjdCBBbHRlclRTQ29uZmlndXJhdGlvblN0bXQKIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0 aW9uVGFibGUKIHsKIAlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyog cmVsYXRpb24gdG8gYmUgcHVibGlzaGVkICovCisJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBw dWJsaWNhdGlvbiByZWxhdGlvbiAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZp Y2F0aW9ucyAqLwogCUxpc3QJICAgKmNvbHVtbnM7CQkvKiBMaXN0IG9mIGNvbHVtbnMgaW4gYSBw dWJsaWNhdGlvbiB0YWJsZSAqLworCWJvb2wJCWV4Y2VwdDsJCQkvKiBUcnVlIGlmIGxpc3RlZCBp biB0aGUgRVhDRVBUIGNsYXVzZSAqLwogfSBQdWJsaWNhdGlvblRhYmxlOwogCiAvKgpAQCAtNDMx MCw2ICs0MzExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25UYWJsZQogdHlwZWRlZiBl bnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNBVElPTk9CSl9UQUJMRSwJCS8q IEEgdGFibGUgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUsCS8qIEEgdGFibGUgaW4g dGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BLAkv KiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwogCVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJf U0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZpcnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJICog c2VhcmNoX3BhdGggKi8KQEAgLTQzMzgsNiArNDM0MCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1Ymxp Y2F0aW9uQWxsT2JqU3BlYwogewogCU5vZGVUYWcJCXR5cGU7CiAJUHVibGljYXRpb25BbGxPYmpU eXBlIHB1Ym9ianR5cGU7CS8qIHR5cGUgb2YgdGhpcyBwdWJsaWNhdGlvbiBvYmplY3QgKi8KKwlM aXN0CSAgICpleGNlcHRfdGFibGVzOwkvKiB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBFWENFUFQg Y2xhdXNlICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEg aWYgdW5rbm93biAqLwogfSBQdWJsaWNhdGlvbkFsbE9ialNwZWM7CiAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKaW5kZXggN2ZiNDlhYWYyOWIuLmFlM2JlYmMyYjRi IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjEzLDMz ICsyMTMsMTQxIEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiAoMSByb3cpCiAKLURS T1AgVEFCTEUgdGVzdHB1Yl90YmwyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRh YmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3Ri bF9zY2hlbWE7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmwzYSAoYiB0ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gRVhDRVBUIFRBQkxF IHRlc3RzIGZvciBub3JtYWwgdGFibGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1Yl90YmwzOwotQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3RwdWJfdGJsMzsKKy0tIFNwZWNp ZnkgdGFibGUgbGlzdCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uIGFuZAorLS0gdGhlIG9wdGlvbmFsIFRBQkxFIGtleXdvcmQuCitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgRk9SIEFMTCBUQUJMRVMg RVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEsIHRlc3RwdWJfdGJsMik7CitcZFJwKyB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1 bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgor ICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl90YmwyIgorCist LSBTcGVjaWZ5IHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMg cHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0cHViX3RibDEpOworXGRScCsgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRh YmxlMQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVk IGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKK0V4Y2VwdCB0YWJs ZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCisKKy0tIENoZWNrIHRoYXQgdGhlIHRhYmxl IGRlc2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlvbnMgd2hlcmUgaXQgaXMgbGlzdGVkCist LSBpbiB0aGUgRVhDRVBUIGNsYXVzZQorXGQgdGVzdHB1Yl90YmwxCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZXN0cHViX3RibDEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgIERlZmF1bHQgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGlkICAgICB8IGludGVn ZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IG5leHR2YWwoJ3Rlc3RwdWJfdGJsMV9pZF9zZXEn OjpyZWdjbGFzcykKKyBkYXRhICAgfCB0ZXh0ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK K0luZGV4ZXM6CisgICAgInRlc3RwdWJfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlk KQorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIKK0V4Y2VwdCBQdWJs aWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIgorICAgICJ0 ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEiCisKIFJFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsMjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0 cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVz dHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBUZXN0cyBmb3IgaW5oZXJpdGVkIHRhYmxlcywgYW5k CistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudCAoYSBpbnQpOwor Q1JFQVRFIFRBQkxFIHRlc3RwdWJfdGJsX2NoaWxkIChiIHRleHQpIElOSEVSSVRTICh0ZXN0cHVi X3RibF9wYXJlbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzIEZPUiBUQUJMRSB0ZXN0 cHViX3RibF9wYXJlbnQ7CiBcZFJwKyB0ZXN0cHViMwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKICAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwg VmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50 ZXN0cHViX3RibDMiCi0gICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgorICAgICJwdWJsaWMudGVz dHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCiAKK0NSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibF9wYXJlbnQ7 CiBcZFJwKyB0ZXN0cHViNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjQKICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQogIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAg ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9u ZSAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6Ci0gICAgInB1YmxpYy50ZXN0cHViX3RibDMiCisg ICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0tIExpc3QgdGhlIHBhcmVudCB0YWJs ZSBpbiB0aGUgRVhDRVBUIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJs X3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJv b3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFibGVzOgorICAgICJwdWJsaWMu dGVzdHB1Yl90YmxfY2hpbGQiCisgICAgInB1YmxpYy50ZXN0cHViX3RibF9wYXJlbnQiCisKKy0t IEVYQ0VQVCB3aXRoICcqJzogbGlzdCB0aGUgdGFibGUgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMg aW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgQUxM IFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCAqKTsKK1xkUnArIHRlc3Rw dWI2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAg ICB8IGYKK0V4Y2VwdCB0YWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibF9jaGlsZCIKKyAg ICAicHVibGljLnRlc3RwdWJfdGJsX3BhcmVudCIKKworLS0gRVhDRVBUIHdpdGggT05MWTogbGlz dCB0aGUgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2UsIGJ1dCBub3QgaXRzIGRlc2NlbmRhbnRz CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF IChPTkxZIHRlc3RwdWJfdGJsX3BhcmVudCk7CitcZFJwKyB0ZXN0cHViNworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjcKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVl bmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRl ZCBjb2x1bW5zIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IHQgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmCitFeGNlcHQgdGFi bGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl90YmxfcGFyZW50IgogCi1EUk9QIFRBQkxFIHRlc3Rw dWJfdGJsMywgdGVzdHB1Yl90YmwzYTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRlc3Rw dWI0OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl90Ymxf cGFyZW50LCB0ZXN0cHViX3RibF9jaGlsZDsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjMsIHRl c3RwdWI0LCB0ZXN0cHViNSwgdGVzdHB1YjYsIHRlc3RwdWI3OworLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIHBh cnRpdGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUg dGVzdHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFCTEUg dGVzdHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAo MCkgVE8gKDEwMCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MiBQQVJUSVRJT04gT0YgdGVz dHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKTsKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcm9vdCk7 CitcZFJwKyB0ZXN0cHViODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI4CisgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAg ICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IG5v bmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJf cm9vdCIKKworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI5IEZPUiBBTEwgVEFCTEVTIEVYQ0VQ VCBUQUJMRSAodGVzdHB1Yl9wYXJ0MSk7CitFUlJPUjogIGNhbm5vdCB1c2UgcHVibGljYXRpb24g RVhDRVBUIGNsYXVzZSBmb3IgcmVsYXRpb24gInRlc3RwdWJfcGFydDEiCitERVRBSUw6ICBUaGlz IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBpbmRpdmlkdWFsIHBhcnRpdGlvbnMuCitD UkVBVEUgVEFCTEUgdGFiX21haW4gKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CistLSBB dHRhY2hpbmcgYSBwYXJ0aXRpb24gaXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRh YmxlIGFwcGVhcnMgaW4gYQorLS0gcHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlLgorQUxURVIg VEFCTEUgdGFiX21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBG Uk9NICgwKSBUTyAoMjAwKTsKK0VSUk9SOiAgY2Fubm90IGF0dGFjaCB0YWJsZSAidGVzdHB1Yl9y b290IiBhcyBwYXJ0aXRpb24gYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGluIGEgcHVibGljYXRp b24gRVhDRVBUIGNsYXVzZQorREVUQUlMOiAgVGFibGVzIGV4Y2x1ZGVkIGZyb20gcHVibGljYXRp b25zIGNhbm5vdCBiZSBhdHRhY2hlZCBhcyBwYXJ0aXRpb25zLgorSElOVDogIFJlbW92ZSB0aGUg dGFibGUgZnJvbSB0aGUgcHVibGljYXRpb24gRVhDRVBUIGxpc3QgYmVmb3JlIGF0dGFjaGluZyBp dC4KK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfcm9vdCwg dGVzdHB1Yl9wYXJ0MSwgdGVzdHB1Yl9wYXJ0MiwgdGFiX21haW47CitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWI4OwogLS0tIFRlc3RzIGZvciBwdWJsaWNhdGlvbnMgd2l0aCBTRVFVRU5DRVMKIENS RUFURSBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwOwogQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0 LnJlZ3Jlc3NfcHViX3NlcTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXgg ODViMDBiZDY3YzguLjMxYjliN2Q0YzU0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24u c3FsCkBAIC0xMDUsMjAgKzEwNSw2OSBAQCBTRUxFQ1QgcHVibmFtZSwgcHViYWxsdGFibGVzIEZS T00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICd0ZXN0cHViX2ZvcmFsbAogXGQrIHRl c3RwdWJfdGJsMgogXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXMKIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9y IG5vcm1hbCB0YWJsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworLS0gU3BlY2lmeSB0YWJs ZSBsaXN0IGluIHRoZSBFWENFUFQgY2xhdXNlIG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRp b24gYW5kCistLSB0aGUgb3B0aW9uYWwgVEFCTEUga2V5d29yZC4KK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg VEFCTEUgKHRlc3RwdWJfdGJsMSwgdGVzdHB1Yl90YmwyKTsKK1xkUnArIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlCistLSBTcGVjaWZ5IHRhYmxlIGluIHRoZSBFWENFUFQgY2xhdXNl IG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUICh0ZXN0 cHViX3RibDEpOworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxCistLSBD aGVjayB0aGF0IHRoZSB0YWJsZSBkZXNjcmlwdGlvbiBzaG93cyB0aGUgcHVibGljYXRpb25zIHdo ZXJlIGl0IGlzIGxpc3RlZAorLS0gaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK1xkIHRlc3RwdWJfdGJs MQorCitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7 Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzLCB0ZXN0cHViX2ZvcnRhYmxl LCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYTsKK0RST1AgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9ydGFibGUsIHRlc3RwdWJfZm9y c2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUxOwogCi1DUkVBVEUgVEFC TEUgdGVzdHB1Yl90YmwzIChhIGludCk7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmwzYSAoYiB0 ZXh0KSBJTkhFUklUUyAodGVzdHB1Yl90YmwzKTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVGVzdHMgZm9yIGluaGVyaXRlZCB0YWJsZXMsIGFuZAor LS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBpbmhlcml0ZWQgdGFibGVzCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNFVCBjbGllbnRfbWluX21lc3NhZ2Vz ID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMyBGT1IgVEFCTEUgdGVzdHB1 Yl90YmwzOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IEZPUiBUQUJMRSBPTkxZIHRlc3Rw dWJfdGJsMzsKLVJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl90YmxfcGFyZW50IChhIGludCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfY2hpbGQgKGIg dGV4dCkgSU5IRVJJVFMgKHRlc3RwdWJfdGJsX3BhcmVudCk7CitDUkVBVEUgUFVCTElDQVRJT04g dGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVudDsKIFxkUnArIHRlc3RwdWIzCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmxfcGFy ZW50OwogXGRScCsgdGVzdHB1YjQKKy0tIExpc3QgdGhlIHBhcmVudCB0YWJsZSBpbiB0aGUgRVhD RVBUIGNsYXVzZSAod2l0aG91dCBPTkxZIG9yICcqJykKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViNSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsX3BhcmVudCk7Citc ZFJwKyB0ZXN0cHViNQorLS0gRVhDRVBUIHdpdGggJyonOiBsaXN0IHRoZSB0YWJsZSBhbmQgYWxs IGl0cyBkZXNjZW5kYW50cyBpbiB0aGUgRVhDRVBUIGNsYXVzZQorQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI2IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodGVzdHB1Yl90YmxfcGFyZW50 ICopOworXGRScCsgdGVzdHB1YjYKKy0tIEVYQ0VQVCB3aXRoIE9OTFk6IGxpc3QgdGhlIHRhYmxl IGluIHRoZSBFWENFUFQgY2xhdXNlLCBidXQgbm90IGl0cyBkZXNjZW5kYW50cworQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAoT05MWSB0ZXN0 cHViX3RibF9wYXJlbnQpOworXGRScCsgdGVzdHB1YjcKIAotRFJPUCBUQUJMRSB0ZXN0cHViX3Ri bDMsIHRlc3RwdWJfdGJsM2E7Ci1EUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHViNDsK K1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfdGJsX3BhcmVu dCwgdGVzdHB1Yl90YmxfY2hpbGQ7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWIzLCB0ZXN0cHVi NCwgdGVzdHB1YjUsIHRlc3RwdWI2LCB0ZXN0cHViNzsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSBFWENFUFQgVEFCTEUgdGVzdHMgZm9yIHBhcnRp dGlvbmVkIHRhYmxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgVEFCTEUgdGVz dHB1Yl9yb290KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CitDUkVBVEUgVEFCTEUgdGVz dHB1Yl9wYXJ0MSBQQVJUSVRJT04gT0YgdGVzdHB1Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMCkg VE8gKDEwMCk7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9wYXJ0MiBQQVJUSVRJT04gT0YgdGVzdHB1 Yl9yb290IEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAoMjAwKTsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViOCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcm9vdCk7Citc ZFJwKyB0ZXN0cHViODsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViOSBGT1IgQUxMIFRBQkxF UyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfcGFydDEpOworCitDUkVBVEUgVEFCTEUgdGFiX21haW4g KGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7CistLSBBdHRhY2hpbmcgYSBwYXJ0aXRpb24g aXMgbm90IGFsbG93ZWQgaWYgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIGFwcGVhcnMgaW4gYQorLS0g cHVibGljYXRpb24ncyBFWENFUFQgY2xhdXNlLgorQUxURVIgVEFCTEUgdGFiX21haW4gQVRUQUNI IFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMjAwKTsKKwor UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yb290LCB0ZXN0 cHViX3BhcnQxLCB0ZXN0cHViX3BhcnQyLCB0YWJfbWFpbjsKK0RST1AgUFVCTElDQVRJT04gdGVz dHB1Yjg7CiAKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VRVUVOQ0VTCiBDUkVB VEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZApp bmRleCBhNGM3ZGJhZmY1OS4uMDcyODJhYTNjMTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVp bGQKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDM0X3RlbXBvcmFsLnBs JywKICAgICAgICd0LzAzNV9jb25mbGljdHMucGwnLAogICAgICAgJ3QvMDM2X3NlcXVlbmNlcy5w bCcsCisgICAgICAndC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsJywKICAgICAgICd0 LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE5ZDE3NTFkMDU0Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApA QCAtMCwwICsxLDI3NCBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI2LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIExvZ2ljYWwgcmVwbGljYXRpb24gdGVzdHMg Zm9yIEVYQ0VQVCBUQUJMRSBwdWJsaWNhdGlvbnMKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7 Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCisjIEluaXRpYWxpemUgcHVibGlzaGVyIG5vZGUKK215 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0g JG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworCisjIEluaXRp YWxpemUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0 KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCitteSAkcmVzdWx0OworCitzdWIgdGVzdF9leGNlcHRfcm9vdF9wYXJ0aXRpb24KK3sKKwlt eSAkcHVidmlhcm9vdCA9IEBfOworCisJIyBXaGVuIHRoZSByb290IHBhcnRpdGlvbmVkIHRhYmxl IGlzIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSwKKwkjIGFsbCBpdHMgcGFydGl0aW9ucyBh cmUgbm90IHB1Ymxpc2hlZC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXEoCisJCUNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFIChzY2gxLnQxKSBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCA9ICRwdWJ2aWFyb290KTsKKwkJSU5TRVJUIElOVE8gc2NoMS50MSBWQUxVRVMgKDEpLCAoMTAx KSwgKDE1MSk7CisJKSk7CisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWJfcGFydCBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHRhcF9wdWJfcGFydCIKKwkpOworCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkJJ3Rh cF9zdWJfcGFydCcpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1Qgc2xvdF9uYW1lIEZST00gcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCd0ZXN0 X3Nsb3QnLCBwZ19jdXJyZW50X3dhbF9sc24oKSk7IgorCSk7CisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHNjaDEudDEgVkFMVUVTICgyKSwg KDEwMiksICgxNTIpIik7CisKKwkjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byB0aGUg cGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHB1Ymxpc2hlZCB3aGVuCisJIyBpdCBpcyBpbiB0aGUg RVhDRVBUIGNsYXVzZS4KKwkkcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVyc2lvbics ICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3RhcF9wdWJfcGFydCcpIgorCSk7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViX3BhcnQnKTsKKworCSMgQ2hlY2sg dGhhdCBubyByb3dzIGFyZSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICogRlJPTSBz Y2gxLnQxIik7CisJaXMoJHJlc3VsdCwgcXEoKSwgJ2NoZWNrIHJvd3Mgb24gcm9vdCB0YWJsZScp OworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCAqIEZST00gc2NoMS5wYXJ0MSIpOworCWlzKCRyZXN1bHQsIHFxKCksICdjaGVj ayByb3dzIG9uIHRhYmxlIHNjaDEucGFydDEnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFydDIi KTsKKwlpcygkcmVzdWx0LCBxcSgpLCAnY2hlY2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyJyk7 CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUICogRlJPTSBzY2gxLnBhcnQyXzEiKTsKKwlpcygkcmVzdWx0LCBxcSgpLCAnY2hl Y2sgcm93cyBvbiB0YWJsZSBzY2gxLnBhcnQyXzEnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHNjaDEucGFy dDJfMiIpOworCWlzKCRyZXN1bHQsIHFxKCksICdjaGVjayByb3dzIG9uIHRhYmxlIHNjaDEucGFy dDJfMicpOworCisJJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9Q IFNVQlNDUklQVElPTiB0YXBfc3ViX3BhcnQiKTsKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnQ7Iik7Cit9CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgRVhDRVBUIFRB QkxFIHRlc3QgY2FzZXMgZm9yIG5vcm1hbCB0YWJsZXMKKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ3JlYXRlIHNjaGVtYXMgYW5kIHRhYmxlcyBvbiBw dWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAor CUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIxIEFTIFNFTEVDVCBn ZW5lcmF0ZV9zZXJpZXMoMSwxMCkgQVMgYTsKKykpOworCisjIENyZWF0ZSBzY2hlbWFzIGFuZCB0 YWJsZXMgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUNSRUFURSBTQ0hFTUEgc2NoMTsKKwlDUkVBVEUgVEFCTEUgc2NoMS50YWIx IChhIGludCk7CispKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uLCBhbmQgY3JlYXRl IGEgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90IHRvIGhlbHAgd2l0aAorIyBsYXRlciB0ZXN0cy4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViX3NjaGVtYSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHNjaDEudGFi MSkiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgndGVzdF9zbG90JywgJ3Bnb3V0 cHV0JykiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViX3NjaGVtYSIKKyk7CisKKyMgV2FpdCBmb3IgaW5p dGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vi c2NyaXB0aW9uX3N5bmMoJG5vZGVfcHVibGlzaGVyLAorCSd0YXBfc3ViX3NjaGVtYScpOworCisj IENoZWNrIHRoZSB0YWJsZSBkYXRhIGRvZXMgbm90IHN5bmMgZm9yIHRoZSB0YWJsZXMgc3BlY2lm aWVkIGluIEVYQ0VQVCBjbGF1c2UKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEudGFiMSIpOworaXMo JHJlc3VsdCwgcXEoMCksCisJJ2NoZWNrIHRoZXJlIGlzIG5vIGluaXRpYWwgZGF0YSBjb3BpZWQg Zm9yIHRoZSB0YWJsZXMgc3BlY2lmaWVkIGluIHRoZSBleGNlcHQgY2xhdXNlJworKTsKKworIyBJ bnNlcnQgc29tZSBkYXRhIGludG8gdGhlIHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVz ZQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8g c2NoMS50YWIxIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMTEsMjApKSIpOworCisjIFZlcmlmeSB0 aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byBhIHRhYmxlIGxpc3RlZCBpbiB0aGUgRVhDRVBUIGNsYXVz ZSBpcyBub3QKKyMgcHVibGlzaGVkLgorJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSA9IDAgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2JpbmFyeV9jaGFuZ2VzKCd0ZXN0X3Nsb3QnLCBOVUxMLCBOVUxMLCAncHJvdG9fdmVy c2lvbicsICcxJywgJ3B1YmxpY2F0aW9uX25hbWVzJywgJ3RhcF9zdWJfc2NoZW1hJykiCispOwor aXMoJHJlc3VsdCwgcXEodCksCisJJ3ZlcmlmeSBubyBjaGFuZ2VzIGZvciB0YWJsZSBsaXN0ZWQg aW4gdGhlIEVYQ0VQVCBjbGF1c2UgYXJlIHByZXNlbnQgaW4gdGhlIHJlcGxpY2F0aW9uIHNsb3Qn CispOworCisjIFZlcmlmeSB0aGF0IGRhdGEgaW5zZXJ0ZWQgaW50byBhIHRhYmxlIGxpc3RlZCBp biB0aGUgRVhDRVBUIGNsYXVzZSBpcyBub3QKKyMgcmVwbGljYXRlZC4KKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHNjaDEudGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMCksICdjaGVjayByZXBsaWNhdGVkIGluc2Vy dHMgb24gc3Vic2NyaWJlcicpOworCisjIGNsZWFudXAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9zY2hlbWEiKTsKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCURST1AgUFVCTElD QVRJT04gdGFwX3B1Yl9zY2hlbWE7CisJVFJVTkNBVEUgVEFCTEUgc2NoMS50YWIxOworKSk7Cisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHNj aDEudGFiMSIpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisjIEVYQ0VQVCBUQUJMRSB0ZXN0IGNhc2VzIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMKKyMg Q2hlY2sgYmVoYXZpb3Igb2YgRVhDRVBUIFRBQkxFIHdpdGggcHVibGlzaF92aWFfcGFydGl0aW9u X3Jvb3Qgb24gYQorIyBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgaXRzIHBhcnRpdGlvbnMuCisjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFNldHVwIHBhcnRp dGlvbmVkIHRhYmxlIGFuZCBwYXJ0aXRpb25zIG9uIHRoZSBwdWJsaXNoZXIgdGhhdCBtYXAgdG8g bm9ybWFsCisjIHRhYmxlcyBvbiB0aGUgc3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFRBQkxFIHNjaDEudDEoYSBpbnQpIFBB UlRJVElPTiBCWSBSQU5HRShhKTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0MSBQQVJUSVRJT04g T0Ygc2NoMS50MSBGT1IgVkFMVUVTIEZST00gKDApIFRPICgxMDApOworCUNSRUFURSBUQUJMRSBz Y2gxLnBhcnQyIFBBUlRJVElPTiBPRiBzY2gxLnQxIEZPUiBWQUxVRVMgRlJPTSAoMTAwKSBUTyAo MjAwKSBQQVJUSVRJT04gQlkgUkFOR0UoYSk7OworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzEg UEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZBTFVFUyBGUk9NICgxMDApIFRPICgxNTApOwor CUNSRUFURSBUQUJMRSBzY2gxLnBhcnQyXzIgUEFSVElUSU9OIE9GIHNjaDEucGFydDIgRk9SIFZB TFVFUyBGUk9NICgxNTApIFRPICgyMDApOworKSk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgVEFCTEUgc2NoMS50MShhIGludCk7CisJ Q1JFQVRFIFRBQkxFIHNjaDEucGFydDEoYSBpbnQpOworCUNSRUFURSBUQUJMRSBzY2gxLnBhcnQy KGEgaW50KTsKKwlDUkVBVEUgVEFCTEUgc2NoMS5wYXJ0Ml8xKGEgaW50KTsKKwlDUkVBVEUgVEFC TEUgc2NoMS5wYXJ0Ml8yKGEgaW50KTsKKykpOworCit0ZXN0X2V4Y2VwdF9yb290X3BhcnRpdGlv bignZmFsc2UnKTsKK3Rlc3RfZXhjZXB0X3Jvb3RfcGFydGl0aW9uKCd0cnVlJyk7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBzbG90X25hbWUgRlJP TSBwZ19yZXBsaWNhdGlvbl9zbG90X2FkdmFuY2UoJ3Rlc3Rfc2xvdCcsIHBnX2N1cnJlbnRfd2Fs X2xzbigpKTsiCispOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisjIFRlc3Qgd2hlbiBhIHN1YnNjcmlwdGlvbiBpcyBzdWJzY3JpYmluZyB0byBtdWx0 aXBsZSBwdWJsaWNhdGlvbnMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKyMgRVJST1IgaWYgc3Vic2NyaWJpbmcgdG8gbXVsdGlwbGUgcHVibGljYXRpb25z IGhhdmluZyBFWENFUFQgVEFCTEUuCitteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHNjaDEudGFiMSk7CisJQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIyIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoc2NoMS50MSk7CispKTsK KworKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGVfc3Vic2NyaWJlci0+cHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViMSwgdGFwX3B1YjIiCispOworbGlr ZSgKKwkkc3RkZXJyLAorCXFyL0VSUk9SOiAgY2Fubm90IGNvbWJpbmUgcHVibGljYXRpb25zICJ0 YXBfcHViMSIsICJ0YXBfcHViMiIgd2l0aCBhbiBFWENFUFQgVEFCTEUgY2xhdXNlLywKKwknc3Vi c2NyaXB0aW9uIHdpdGggbXVsdGlwbGUgRVhDRVBUIFRBQkxFIHB1YmxpY2F0aW9uJyk7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRh cF9wdWIyJyk7CisKKyMgT0sgd2hlbiBhIHRhYmxlIGlzIGV4Y2x1ZGVkIGJ5IHB1YjEgRVhDRVBU IFRBQkxFLCBidXQgaXQgaXMgaW5jbHVkZWQgYnkgcHViMgorIyBGT1IgVEFCTEUKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViMiBGT1IgVEFCTEUgc2NoMS50YWIxOworCUlOU0VSVCBJTlRPIHNjaDEudGFiMSBW QUxVRVMoMSk7CispKTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicg UFVCTElDQVRJT04gdGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWInKTsKKwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoSU5TRVJUIElOVE8gc2No MS50YWIxIFZBTFVFUygyKSkpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0 YXBfc3ViJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgKiBGUk9NIHNjaDEudGFiMSBPUkRFUiBCWSBhIik7CitpcyggJHJlc3Vs dCwgcXEoMQorMiksCisJImNoZWNrIHJlcGxpY2F0aW9uIG9mIGEgdGFibGUgaW4gdGhlIEVYQ0VQ VCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90aGVyIgorKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCURST1AgUFVC TElDQVRJT04gdGFwX3B1YjI7CisJVFJVTkNBVEUgc2NoMS50YWIxOworKSk7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoVFJVTkNBVEUgc2NoMS50YWIxKSk7CisK KyMgT0sgd2hlbiBhIHRhYmxlIGlzIGV4Y2x1ZGVkIGJ5IHB1YjEgRVhDRVBUIFRBQkxFLCBidXQg aXQgaXMgaW5jbHVkZWQgYnkgcHViMgorIyBGT1IgQUxMIFRBQkxFUworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIyIEZPUiBBTEwgVEFCTEVTOworCUlOU0VSVCBJTlRPIHNjaDEudGFiMSBWQUxVRVMoMSk7Cisp KTsKKyRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04g dGFwX3B1YjEsIHRhcF9wdWIyIgorKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX3N1YnNj cmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhcF9zdWInKTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXEoSU5TRVJUIElOVE8gc2NoMS50YWIxIFZBTFVF UygyKSkpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCd0YXBfc3ViJyk7CisK KyRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgKiBGUk9NIHNjaDEudGFiMSBPUkRFUiBCWSBhIik7CitpcyggJHJlc3VsdCwgcXEoMQorMiks CisJImNoZWNrIHJlcGxpY2F0aW9uIG9mIGEgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2Yg b25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBhbm90aGVyIgorKTsKKworIyBFUlJPUiBp ZiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gY2F1c2VzIHRoZQor IyBzdWJzY3JpcHRpb24gdG8gZW5kIHVwIHdpdGggbXVsdGlwbGUgcHVibGljYXRpb25zIGhhdmlu ZyBFWENFUFQgVEFCTEUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyOworCUNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKHNjaDEudDEpOworKSk7CisKKygkcmVzdWx0 LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXItPnBzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworbGlr ZSgKKwkkc3RkZXJyLAorCXFyL0VSUk9SOiAgY2Fubm90IGNvbWJpbmUgcHVibGljYXRpb25zICJ0 YXBfcHViMSIsICJ0YXBfcHViMiIgd2l0aCBhbiBFWENFUFQgVEFCTEUgY2xhdXNlLywKKwknc3Vi c2NyaXB0aW9uIHdpdGggbXVsdGlwbGUgRVhDRVBUIFRBQkxFIHB1YmxpY2F0aW9uJyk7CisKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBTVUJTQ1JJUFRJT04g dGFwX3N1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1Ag UFVCTElDQVRJT04gdGFwX3B1YjEnKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIyJyk7CisKKyRub2RlX3B1Ymxpc2hlci0+ c3RvcCgnZmFzdCcpOworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMzQuMQoK --00000000000029be7f064ba91f9f Content-Type: application/octet-stream; name="v50-0003-Support-DROP-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Disposition: attachment; filename="v50-0003-Support-DROP-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm2alx7g2 RnJvbSA1ZTMzMjhiOTdhOWRmYTRjZTJjYjVmZjc4N2Q4YTk1MzBjM2E0Mjg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgRmViIDIwMjYgMjE6MjY6MTggKzA1MzAKU3ViamVjdDogW1BBVENIIHY1 MCAzLzNdIFN1cHBvcnQgRFJPUCBFWENFUFQgVEFCTEUgaW4gQUxURVIgUFVCTElDQVRJT04KCkV4 dGVuZCBBTFRFUiBQVUJMSUNBVElPTiB0byBzdXBwb3J0IERST1AgRVhDRVBUIFRBQkxFIGZvcgpw dWJsaWNhdGlvbnMgZGVmaW5lZCB3aXRoIEZPUiBBTEwgVEFCTEVTLgotLS0KIGRvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgICAgICB8IDExICsrKy0tLS0KIHNyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAgICAgICAgICB8IDExICsrLS0tLS0KIHNyYy9i aW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0ICAgICB8IDIyICsrKysrKysrKy0t LS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgMyAr LQogLi4uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbCAgICAgICAgIHwgMjkgKysr KysrKysrKysrKysrKysrKwogNiBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAyNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXgg ZmVmYzRmY2JmNmQuLjBiNGE1Nzg1YjBmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sCkBAIC00MSw3ICs0MSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKIDxw aHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9kcm9w X29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsg T05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNl YWJsZT4gWyAqIF0gWywgLi4uIF0KKyAgICBbIEVYQ0VQVCBdIFRBQkxFIFsgT05MWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0g WywgLi4uIF0KICAgICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4u LiBdCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9h bmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgpAQCAtNjMsMTAgKzYzLDExIEBA IEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9y ZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICBwdWJsaWNhdGlvbi4gIFRoZSA8bGl0ZXJhbD5T RVQ8L2xpdGVyYWw+IGNsYXVzZSB3aWxsIHJlcGxhY2UgdGhlIGxpc3Qgb2YKICAgIGV4Y2VwdCB0 YWJsZXMvdGFibGVzL3NjaGVtYXMgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmll ZCBsaXN0OyB0aGUKICAgIGV4aXN0aW5nIGV4Y2VwdCB0YWJsZXMvIHRhYmxlcy9zY2hlbWFzIHRo YXQgd2VyZSBwcmVzZW50IGluIHRoZSBwdWJsaWNhdGlvbgotICAgd2lsbCBiZSByZW1vdmVkLiAg VGhlIDxsaXRlcmFsPkFERDwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+Ci0g ICBjbGF1c2VzIHdpbGwgYWRkIGFuZCByZW1vdmUgb25lIG9yIG1vcmUgdGFibGVzL3NjaGVtYXMg ZnJvbSB0aGUgcHVibGljYXRpb24uCi0gICBOb3RlIHRoYXQgYWRkaW5nIHRhYmxlcy9zY2hlbWFz IHRvIGEgcHVibGljYXRpb24gdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmliZWQKLSAgIHRvIHdpbGwg cmVxdWlyZSBhbgorICAgd2lsbCBiZSByZW1vdmVkLiAgVGhlIDxsaXRlcmFsPkFERDwvbGl0ZXJh bD4gY2xhdXNlcyB3aWxsIGFkZCBvbmUgb3IgbW9yZQorICAgdGFibGVzL3NjaGVtYXMgdG8gdGhl IHB1YmxpY2F0aW9uLiAgVGhlIDxsaXRlcmFsPkRST1A8L2xpdGVyYWw+IGNsYXVzZXMKKyAgIHdp bGwgcmVtb3ZlIG9uZSBvciBtb3JlIGV4Y2VwdCB0YWJsZXMvdGFibGVzL3NjaGVtYXMgZnJvbSB0 aGUgcHVibGljYXRpb24uCisgICBOb3RlIHRoYXQgYWRkaW5nIHRhYmxlcy9zY2hlbWFzIG9yIGRy b3BwaW5nIGV4Y2VwdCB0YWJsZXMgdG8gYSBwdWJsaWNhdGlvbgorICAgdGhhdCBpcyBhbHJlYWR5 IHN1YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCiAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0 ZXJzdWJzY3JpcHRpb24tcGFyYW1zLXJlZnJlc2gtcHVibGljYXRpb24iPgogICAgPGxpdGVyYWw+ QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OPC9saXRlcmFsPjwvbGlu az4gYWN0aW9uIG9uIHRoZQogICAgc3Vic2NyaWJpbmcgc2lkZSBpbiBvcmRlciB0byBiZWNvbWUg ZWZmZWN0aXZlLiBOb3RlIGFsc28gdGhhdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMzJlY2JiMWNmNWEuLmFl NzgyNzM0MjZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTExMDMyLDcgKzExMDMyLDcgQEAgQWx0ZXJQdWJs aWNhdGlvblN0bXQ6CiAJCQkJCWlmIChoYXNfZXhjZXB0X3RhYmxlKQogCQkJCQkJZXJlcG9ydChF UlJPUiwKIAkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCi0JCQkJCQkJCWVy cm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UiKSk7 CisJCQkJCQkJCWVycm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNF VC9EUk9QIGNsYXVzZSIpKTsKIAogCQkJCQluLT5hY3Rpb24gPSBBUF9BZGRPYmplY3RzOwogCQkJ CQkkJCA9IChOb2RlICopIG47CkBAIC0xMTA0OSwxOCArMTEwNDksMTEgQEAgQWx0ZXJQdWJsaWNh dGlvblN0bXQ6CiAJCQkJfQogCQkJfCBBTFRFUiBQVUJMSUNBVElPTiBuYW1lIERST1AgcHViX29i al9saXN0CiAJCQkJewotCQkJCQlib29sIGhhc19leGNlcHRfdGFibGUgPSBmYWxzZTsKIAkJCQkJ QWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7 CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwogCQkJCQluLT5wdWJvYmplY3RzID0gJDU7Ci0JCQkJ CWhhc19leGNlcHRfdGFibGUgPSBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMs Ci0JCQkJCQkJCQkJCQkJCQkgIHl5c2Nhbm5lcik7Ci0JCQkJCWlmIChoYXNfZXhjZXB0X3RhYmxl KQotCQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCi0JCQkJCQkJCWVycm1zZygiRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkg Zm9yIFNFVCBjbGF1c2UiKSk7Ci0KKwkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJv YmplY3RzLCB5eXNjYW5uZXIpOwogCQkJCQluLT5hY3Rpb24gPSBBUF9Ecm9wT2JqZWN0czsKIAkJ CQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAwZmMx NmEzZTExMC4uMGEzNzA1YmI4YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTIzMTcsOCAr MjMxNywxMCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExF VEVfV0lUSCgiLCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBEUk9QICovCiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkRST1AiKSkK LQkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOwotCQkvKiBBTFRF UiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCIsICJU QUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkRST1AiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJ VEgoIlRBQkxFIik7CisJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAqLwogCWVsc2Ug aWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiKSkKIAkJ Q09NUExFVEVfV0lUSCgiKCIsICJFWENFUFQiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIp OwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJT RVQiLCAiRVhDRVBUIikpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1 YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CmluZGV4IDlkMDkyOTM0ZTI1Li43M2QwZGUxYzYxNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTEyOCwxMCArMTI4LDExIEBAIFRhYmxlcyBmcm9tIHNj aGVtYXM6CiAKIC0tIGZhaWwgLSBjYW4ndCBhZGQgYW4gRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFC TEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBF WENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOwotRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFs bG93ZWQgb25seSBmb3IgU0VUIGNsYXVzZQorRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFs bG93ZWQgb25seSBmb3IgU0VUL0RST1AgY2xhdXNlCiAtLSBmYWlsIC0gY2FuJ3QgZHJvcCBhbiBF WENFUFQgVEFCTEUgZnJvbSAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3J0YWJsZSBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7Ci1FUlJP UjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBTRVQgY2xhdXNlCitFUlJP UjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRhYmxlIiBpcyBkZWZpbmVkIGFzIE5PTiBGT1Ig QUxMIFRBQkxFUworREVUQUlMOiAgRVhDRVBUIFRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3Ig ZHJvcHBlZCBmcm9tIG5vbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuCiAtLSBmYWlsIC0g Y2FuJ3Qgc2V0IGFuIEVYQ0VQVCBUQUJMRSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgRVhDRVBUIFRBQkxFIHRlc3RwdWJf dGJsMTsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9ydGFibGUiIGlzIGRlZmluZWQg YXMgTk9OIEZPUiBBTEwgVEFCTEVTCkBAIC0yMjUsMTAgKzIyNiwxMSBAQCBOb3QtbnVsbCBjb25z dHJhaW50czoKIAogLS0gZmFpbCAtIGNhbid0IGFkZCBhbiBFWENFUFQgVEFCTEUgdG8gc2NoZW1h IHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBBREQgRVhD RVBUIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKLUVSUk9SOiAgRVhDRVBUIFRBQkxFIGNs YXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UKK0VSUk9SOiAgRVhDRVBUIFRBQkxFIGNs YXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVC9EUk9QIGNsYXVzZQogLS0gZmFpbCAtIGNhbid0IGRy b3AgYW4gRVhDRVBUIFRBQkxFIGZyb20gc2NoZW1hIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHVi X25vcGs7Ci1FUlJPUjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBTRVQg Y2xhdXNlCitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnNjaGVtYSIgaXMgZGVmaW5l ZCBhcyBOT04gRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIEVYQ0VQVCBUYWJsZXMgY2Fubm90IGJl IGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBub24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25z LgogLS0gZmFpbCAtIGNhbid0IHNldCBhbiBFWENFUFQgVEFCTEUgdG8gc2NoZW1hIHB1YmxpY2F0 aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgRVhDRVBUIFRBQkxF IHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9y c2NoZW1hIiBpcyBkZWZpbmVkIGFzIE5PTiBGT1IgQUxMIFRBQkxFUwpAQCAtMjg1LDEyICsyODcs MTggQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUg U0VUIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDEKIEV4Y2VwdCB0YWJsZXM6CiAgICAgInB1Ymxp Yy50ZXN0cHViX3RibDEiCiAKLS0tIGZhaWwgLSBEcm9wcGluZyBFWENFUFQgdGFibGUgaXMgbm90 IHN1cHBvcnRlZC4KKy0tIERyb3AgdGFibGUgZnJvbSB0aGUgRVhDRVBUIGxpc3Qgb2YgYSBGT1Ig QUxMIFRBQkxFUyBwdWJsaWNhdGlvbi4KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlIERST1AgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKLUVSUk9S OiAgRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UKK1xkUnAr IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNl cHR0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2Vx dWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJh dGVkIGNvbHVtbnMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNh dGlvbl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYKKygxIHJvdykK KwogLS0gZmFpbCAtIEFkZGluZyBFWENFUFQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4KIEFMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEFERCBFWENFUFQg VEFCTEUgdGVzdHB1Yl90YmwxOwotRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQg b25seSBmb3IgU0VUIGNsYXVzZQorRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQg b25seSBmb3IgU0VUL0RST1AgY2xhdXNlCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJP UCBUQUJMRSB0ZXN0cHViX3RibDI7CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbAppbmRl eCAyMDg2NTM5ZmRjMi4uMDIzZDRiZjJlYzYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwKQEAgLTEzOCw4ICsxMzgsOSBAQCBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUxIEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAodGVzdAogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgU0VUIEVYQ0VQVCBU QUJMRSB0ZXN0cHViX3RibDE7CiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJs ZQogCi0tLSBmYWlsIC0gRHJvcHBpbmcgRVhDRVBUIHRhYmxlIGlzIG5vdCBzdXBwb3J0ZWQuCist LSBEcm9wIHRhYmxlIGZyb20gdGhlIEVYQ0VQVCBsaXN0IG9mIGEgRk9SIEFMTCBUQUJMRVMgcHVi bGljYXRpb24uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0 YWJsZSBEUk9QIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CitcZFJwKyB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZQogCiAtLSBmYWlsIC0gQWRkaW5nIEVYQ0VQVCB0YWJsZSBpcyBu b3Qgc3VwcG9ydGVkLgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhj ZXB0dGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfcmVwX2NoYW5nZXNfZXhjZXB0X3RhYmxlLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbAppbmRl eCBhOWQxNzUxZDA1NC4uNDdiZTI0MTlmZTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19yZXBfY2hhbmdlc19leGNlcHRfdGFibGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM3X3JlcF9jaGFuZ2VzX2V4Y2VwdF90YWJsZS5wbApAQCAtMTM3LDYgKzEz NywzNSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBzY2gxLnRhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDAp LCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsKIAorIyBSZW1vdmUg c2NoMS50YWIxIGZyb20gdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIGxpc3Qgc28gdGhhdCBpdCBi ZWNvbWVzIHBhcnQKKyMgb2YgdGhlIEFMTCBUQUJMRVMgcHVibGljYXRpb24uCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHVi X3NjaGVtYSBEUk9QIEVYQ0VQVCBUQUJMRSBzY2gxLnRhYjEiKTsKKworIyBSZWZyZXNoIHRoZSBz dWJzY3JpcHRpb24gc28gdGhlIHN1YnNjcmliZXIgcGlja3MgdXAgdGhlIHVwZGF0ZWQKKyMgcHVi bGljYXRpb24gZGVmaW5pdGlvbiBhbmQgaW5pdGlhdGVzIHRhYmxlIHN5bmNocm9uaXphdGlvbi4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9zY2hlbWEgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworCisjIFdhaXQgZm9y IGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwKKwkndGFwX3N1Yl9zY2hlbWEnKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gc2NoMS50YWIxIik7CitpcygkcmVzdWx0LCBxcSgyMCksICdj aGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOworCisjIEluc2VydCBhZGRp dGlvbmFsIHJvd3Mgb24gdGhlIHB1Ymxpc2hlciBhZnRlciBzeW5jaHJvbml6YXRpb24uCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyBzY2gxLnRh YjEgVkFMVUVTKGdlbmVyYXRlX3NlcmllcygyMSwzMCkpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgndGFwX3N1Yl9zY2hlbWEnKTsKKworIyBWZXJpZnkgdGhhdCB0aGUg bmV3IGluc2VydHMgYXJlIGFsc28gcmVwbGljYXRlZC4KKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHNjaDEu dGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMzApLCAnY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIG9u IHN1YnNjcmliZXInKTsKKwogIyBjbGVhbnVwCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWJfc2NoZW1hIik7CiAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLS0gCjIuMzQuMQoK --00000000000029be7f064ba91f9f Content-Type: application/octet-stream; name="v50-0002-Support-SET-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Disposition: attachment; filename="v50-0002-Support-SET-EXCEPT-TABLE-in-ALTER-PUBLICATION.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm2alx781 RnJvbSBhYWQ3NGU0OTU4NDhhNDJiNDM0YjAxMTM1MjU1NDEwMWQ5YTkzYjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgRmViIDIwMjYgMjE6MDI6NDYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY1 MCAyLzNdIFN1cHBvcnQgU0VUIEVYQ0VQVCBUQUJMRSBpbiBBTFRFUiBQVUJMSUNBVElPTgoKRXh0 ZW5kIEFMVEVSIFBVQkxJQ0FUSU9OIHRvIHN1cHBvcnQgU0VUIEVYQ0VQVCBUQUJMRSBmb3IKcHVi bGljYXRpb25zIGRlZmluZWQgd2l0aCBGT1IgQUxMIFRBQkxFUy4KLS0tCiBkb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwgICB8IDIzICsrKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgIHwgNjAgKysrKysrKysrKysrLS0tLS0tCiBzcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICB8IDc3ICsrKysrKysrKysrKysr KysrKystLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgICAgICB8ICA2 ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8IDM2ICsrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8IDI0ICsr KysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCAwMjg3NzBmMjE0 OS4uZmVmYzRmY2JmNmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwK QEAgLTIxLDE4ICsyMSwyNCBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5v cHNpc2Rpdj4KIDxzeW5vcHNpcz4KLUFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCi1BTFRF UiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBBREQgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX2FkZF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAu Li5dCitBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZTwvcmVwbGFjZWFibGU+IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGlj YXRpb25fc2V0X29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLl0KIEFMVEVSIFBVQkxJQ0FUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gRFJPUCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJvcF9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBbLCAuLi5dCiBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFNFVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4uIF0gKQog QUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPiBPV05FUiBUTyB7IDxyZXBsYWNlYWJsZT5uZXdfb3duZXI8L3JlcGxhY2VhYmxl PiB8IENVUlJFTlRfUk9MRSB8IENVUlJFTlRfVVNFUiB8IFNFU1NJT05fVVNFUiB9CiBBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFJFTkFNRSBUTyA8cmVwbGFjZWFibGU+bmV3X25hbWU8L3JlcGxhY2VhYmxlPgogCi08cGhy YXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmpl Y3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+Cis8cGhyYXNlPndoZXJlIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hZGRfb2JqZWN0PC9yZXBsYWNl YWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KICAg ICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVt YV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAKKzxwaHJh c2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX3NldF9v YmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CisKKyAgICBFWENFUFQgVEFC TEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXQorICAgIFRBQkxFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IFssIC4uLiBdCisgICAgVEFCTEVT IElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwv cmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4gXQorCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fZHJvcF9vYmplY3Q8L3Jl cGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBUQUJMRSBbIE9OTFkgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBd IFssIC4uLiBdCkBAIC01NSwxMSArNjEsMTIgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAg PHBhcmE+CiAgICBUaGUgZmlyc3QgdGhyZWUgdmFyaWFudHMgY2hhbmdlIHdoaWNoIHRhYmxlcy9z Y2hlbWFzIGFyZSBwYXJ0IG9mIHRoZQogICAgcHVibGljYXRpb24uICBUaGUgPGxpdGVyYWw+U0VU PC9saXRlcmFsPiBjbGF1c2Ugd2lsbCByZXBsYWNlIHRoZSBsaXN0IG9mCi0gICB0YWJsZXMvc2No ZW1hcyBpbiB0aGUgcHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGxpc3Q7IHRoZSBleGlz dGluZwotICAgdGFibGVzL3NjaGVtYXMgdGhhdCB3ZXJlIHByZXNlbnQgaW4gdGhlIHB1YmxpY2F0 aW9uIHdpbGwgYmUgcmVtb3ZlZC4gIFRoZQotICAgPGxpdGVyYWw+QUREPC9saXRlcmFsPiBhbmQg PGxpdGVyYWw+RFJPUDwvbGl0ZXJhbD4gY2xhdXNlcyB3aWxsIGFkZCBhbmQKLSAgIHJlbW92ZSBv bmUgb3IgbW9yZSB0YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gIE5vdGUgdGhh dCBhZGRpbmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRvIGEgcHVibGljYXRpb24gdGhhdCBpcyBhbHJl YWR5IHN1YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCisgICBleGNlcHQgdGFibGVzL3RhYmxl cy9zY2hlbWFzIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhl CisgICBleGlzdGluZyBleGNlcHQgdGFibGVzLyB0YWJsZXMvc2NoZW1hcyB0aGF0IHdlcmUgcHJl c2VudCBpbiB0aGUgcHVibGljYXRpb24KKyAgIHdpbGwgYmUgcmVtb3ZlZC4gIFRoZSA8bGl0ZXJh bD5BREQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5EUk9QPC9saXRlcmFsPgorICAgY2xhdXNlcyB3 aWxsIGFkZCBhbmQgcmVtb3ZlIG9uZSBvciBtb3JlIHRhYmxlcy9zY2hlbWFzIGZyb20gdGhlIHB1 YmxpY2F0aW9uLgorICAgTm90ZSB0aGF0IGFkZGluZyB0YWJsZXMvc2NoZW1hcyB0byBhIHB1Ymxp Y2F0aW9uIHRoYXQgaXMgYWxyZWFkeSBzdWJzY3JpYmVkCisgICB0byB3aWxsIHJlcXVpcmUgYW4K ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1w dWJsaWNhdGlvbiI+CiAgICA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg UFVCTElDQVRJT048L2xpdGVyYWw+PC9saW5rPiBhY3Rpb24gb24gdGhlCiAgICBzdWJzY3JpYmlu ZyBzaWRlIGluIG9yZGVyIHRvIGJlY29tZSBlZmZlY3RpdmUuIE5vdGUgYWxzbyB0aGF0CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDIxODBjYjg2NmY0Li5kYWM4ZDEz NDE0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTE4MSw3ICsx ODEsNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAq Lwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNw ZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3Qg KipzY2hlbWFzKQorCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHRyZWxzLCBMaXN0 ICoqc2NoZW1hcykKIHsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCVB1YmxpY2F0aW9uT2JqU3BlYyAq cHVib2JqOwpAQCAtMjAwLDcgKzIwMCw3IEBAIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExp c3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQl7CiAJCQljYXNlIFBV QkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRToKIAkJCQlwdWJvYmotPnB1YnRhYmxlLT5leGNlcHQg PSB0cnVlOwotCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJ CQkJKmV4Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxlKTsK IAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEU6CiAJCQkJcHVib2JqLT5w dWJ0YWJsZS0+ZXhjZXB0ID0gZmFsc2U7CkBAIC04NDksOCArODQ5LDggQEAgQ3JlYXRlUHVibGlj YXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJ Y2hhcgkJcHVibGlzaF9nZW5lcmF0ZWRfY29sdW1uczsKIAlBY2xSZXN1bHQJYWNscmVzdWx0Owog CUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAgICpleGNlcHRyZWxhdGlvbnMgPSBO SUw7CiAJTGlzdAkgICAqc2NoZW1haWRsaXN0ID0gTklMOwotCUxpc3QJICAgKnJlbHMgPSBOSUw7 CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwogCWFjbHJl c3VsdCA9IG9iamVjdF9hY2xjaGVjayhEYXRhYmFzZVJlbGF0aW9uSWQsIE15RGF0YWJhc2VJZCwg R2V0VXNlcklkKCksIEFDTF9DUkVBVEUpOwpAQCAtOTM2LDE3ICs5MzYsMTYgQEAgQ3JlYXRlUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlv bnMsCi0JCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7Ci0JaWYgKHJlbGF0aW9ucyAhPSBOSUwpCi0J CXJlbHMgPSBPcGVuVGFibGVMaXN0KHJlbGF0aW9ucyk7CisJCQkJCQkJICAgJmV4Y2VwdHJlbGF0 aW9ucywgJnNjaGVtYWlkbGlzdCk7CiAKIAlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMpCiAJewog CQkvKiBQcm9jZXNzIEVYQ0VQVCB0YWJsZSBsaXN0ICovCi0JCWlmIChyZWxhdGlvbnMgIT0gTklM KQorCQlpZiAoZXhjZXB0cmVsYXRpb25zICE9IE5JTCkKIAkJewotCQkJQXNzZXJ0KHJlbHMgIT0g TklMKTsKLQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7 CisJCQlleGNlcHRyZWxhdGlvbnMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7CisJ CQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIGV4Y2VwdHJlbGF0aW9ucywgdHJ1ZSwgTlVM TCk7CisJCQlDbG9zZVRhYmxlTGlzdChleGNlcHRyZWxhdGlvbnMpOwogCQl9CiAKIAkJLyoKQEAg LTk2Niw2ICs5NjUsOSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAogCQlpZiAocmVsYXRpb25zICE9IE5JTCkKIAkJ eworCQkJTGlzdAkgICAqcmVsczsKKworCQkJcmVscyA9IE9wZW5UYWJsZUxpc3QocmVsYXRpb25z KTsKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4 dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKQEAgLTk3NCw2ICs5 NzYsNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1Ymxp Y2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkJCSAgIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 KTsKIAogCQkJUHVibGljYXRpb25BZGRUYWJsZXMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMKTsK KwkJCUNsb3NlVGFibGVMaXN0KHJlbHMpOwogCQl9CiAKIAkJaWYgKHNjaGVtYWlkbGlzdCAhPSBO SUwpCkBAIC05ODcsOSArOTkwLDYgQEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0 YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCX0KIAl9CiAKLQlpZiAocmVscyAh PSBOSUwpCi0JCUNsb3NlVGFibGVMaXN0KHJlbHMpOwotCiAJdGFibGVfY2xvc2UocmVsLCBSb3dF eGNsdXNpdmVMb2NrKTsKIAogCUludm9rZU9iamVjdFBvc3RDcmVhdGVIb29rKFB1YmxpY2F0aW9u UmVsYXRpb25JZCwgcHVib2lkLCAwKTsKQEAgLTEyNzAsMTUgKzEyNzAsMjQgQEAgQWx0ZXJQdWJs aWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwK IAkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxzZQkJCQkJ CS8qIEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdldEluY2x1 ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJ T05fUEFSVF9ST09UKTsKKwkJYm9vbAkJaXNleGNlcHQgPSBwdWJmb3JtLT5wdWJhbGx0YWJsZXM7 CisJCUxpc3QJICAgKm9sZHJlbGlkczsKIAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKIAkJTGlz dENlbGwgICAqb2xkbGM7CiAKLQkJVHJhbnNmb3JtUHViV2hlcmVDbGF1c2VzKHJlbHMsIHF1ZXJ5 U3RyaW5nLCBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwkJaWYgKGlzZXhjZXB0KQorCQkJb2xkcmVs aWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhwdWJpZCwKKwkJCQkJCQkJCQkJCQkg UFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJZWxzZQorCQl7CisJCQlvbGRyZWxpZHMgPSBHZXRJ bmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQlQVUJMSUNB VElPTl9QQVJUX1JPT1QpOwogCi0JCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1 Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAotCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFy b290KTsKKwkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBxdWVyeVN0cmluZywgcHVi Zm9ybS0+cHVidmlhcm9vdCk7CisKKwkJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQt PnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAorCQkJCQkJCQkJICAgcHViZm9ybS0+cHVi dmlhcm9vdCk7CisJCX0KIAogCQkvKgogCQkgKiBUbyByZWNyZWF0ZSB0aGUgcmVsYXRpb24gbGlz dCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgpAQCAtMTQ4Niw3ICsxNDk1LDcgQEAgQWx0 ZXJQdWJsaWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAgKi8KIHN0 YXRpYyB2b2lkCiBDaGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICpzY2hlbWFpZGxp c3QpCisJCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICpleGNlcHR0YWJsZXMsIExpc3QgKnNjaGVt YWlkbGlzdCkKIHsKIAlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJs aWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAKQEAgLTE1NDQsNiArMTU1MywxNCBAQCBDaGVja0Fs dGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCQkJCQkgICBOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKIAkJCQkJZXJyZGV0YWlsKCJU YWJsZXMgb3Igc2VxdWVuY2VzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gRk9S IEFMTCBTRVFVRU5DRVMgcHVibGljYXRpb25zLiIpKTsKIAl9CisKKwkvKiBDaGVjayB0aGF0IHVz ZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRlIHRoZSBwdWJsaWNhdGlvbiB0YWJsZXMuICovCisJ aWYgKGV4Y2VwdHRhYmxlcyAmJiAhcHViZm9ybS0+cHViYWxsdGFibGVzKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBhcyBOT04gRk9S IEFMTCBUQUJMRVMiLAorCQkJCQkgICBOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKKwkJCQll cnJkZXRhaWwoIkVYQ0VQVCBUYWJsZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3BwZWQgZnJv bSBub24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLiIpKTsKIH0KIAogLyoKQEAgLTE1ODIs MTMgKzE1OTksMTUgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10KQogCWVsc2UKIAl7CiAJCUxpc3QJICAgKnJlbGF0aW9ucyA9 IE5JTDsKKwkJTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklMOwogCQlMaXN0CSAgICpzY2hl bWFpZGxpc3QgPSBOSUw7CiAJCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+b2lkOwogCiAJCU9iamVj dHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwgJnJlbGF0aW9u cywKLQkJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJCSAgICZleGNlcHRyZWxhdGlv bnMsICZzY2hlbWFpZGxpc3QpOwogCi0JCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAs IHJlbGF0aW9ucywgc2NoZW1haWRsaXN0KTsKKwkJQ2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQs IHR1cCwgcmVsYXRpb25zLCBleGNlcHRyZWxhdGlvbnMsCisJCQkJCQkJICBzY2hlbWFpZGxpc3Qp OwogCiAJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CiAKQEAgLTE2MDksNiArMTYyOCw3IEBAIEFsdGVy UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCkKIAkJCQkJZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAogCQkJ CQkJICAgc3RtdC0+cHVibmFtZSkpOwogCisJCXJlbGF0aW9ucyA9IGxpc3RfY29uY2F0KHJlbGF0 aW9ucywgZXhjZXB0cmVsYXRpb25zKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0 dXAsIHJlbGF0aW9ucywgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJICAgc2NoZW1haWRs aXN0ICE9IE5JTCk7CiAJCUFsdGVyUHVibGljYXRpb25TY2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1h aWRsaXN0KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDIxZWY3YmVlNzI5Li4zMmVjYmIxY2Y1YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHZvaWQgcHJlcHJvY2Vzc19wdWJfYWxs X29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAogCQkJCQkJCQkJCQlib29sICph bGxfdGFibGVzLAogCQkJCQkJCQkJCQlib29sICphbGxfc2VxdWVuY2VzLAogCQkJCQkJCQkJCQlj b3JlX3l5c2Nhbl90IHl5c2Nhbm5lcik7Ci1zdGF0aWMgdm9pZCBwcmVwcm9jZXNzX3B1Ym9ial9s aXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwKK3N0YXRpYyBib29sIHByZXByb2Nlc3NfcHVib2Jq X2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LAogCQkJCQkJCQkgICBjb3JlX3l5c2Nhbl90IHl5 c2Nhbm5lcik7CiBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCkBAIC01ODEsNyArNTgxLDcgQEAg c3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3Qg KmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQlCaXQgQ29uc3RCaXQgQml0V2l0aExlbmd0aCBC aXRXaXRob3V0TGVuZ3RoCiAldHlwZSA8c3RyPgkJY2hhcmFjdGVyCiAldHlwZSA8c3RyPgkJZXh0 cmFjdF9hcmcKLSV0eXBlIDxib29sZWFuPiBvcHRfdmFyeWluZyBvcHRfdGltZXpvbmUgb3B0X25v X2luaGVyaXQKKyV0eXBlIDxib29sZWFuPiBvcHRfdmFyeWluZyBvcHRfdGltZXpvbmUgb3B0X25v X2luaGVyaXQgb3B0X2V4Y2VwdAogCiAldHlwZSA8aXZhbD4JSWNvbnN0IFNpZ25lZEljb25zdAog JXR5cGUgPHN0cj4JCVNjb25zdCBjb21tZW50X3RleHQgbm90aWZ5X3BheWxvYWQKQEAgLTEwODMw LDE2ICsxMDgzMCwyOCBAQCBDcmVhdGVQdWJsaWNhdGlvblN0bXQ6CiAJCQkJfQogCQkJfCBDUkVB VEUgUFVCTElDQVRJT04gbmFtZSBGT1IgcHViX29ial9saXN0IG9wdF9kZWZpbml0aW9uCiAJCQkJ eworCQkJCQlib29sIGhhc19leGNlcHRfdGFibGU7CiAJCQkJCUNyZWF0ZVB1YmxpY2F0aW9uU3Rt dCAqbiA9IG1ha2VOb2RlKENyZWF0ZVB1YmxpY2F0aW9uU3RtdCk7CiAKIAkJCQkJbi0+cHVibmFt ZSA9ICQzOwogCQkJCQluLT5vcHRpb25zID0gJDY7CiAJCQkJCW4tPnB1Ym9iamVjdHMgPSAoTGlz dCAqKSAkNTsKLQkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLCB5eXNj YW5uZXIpOworCQkJCQloYXNfZXhjZXB0X3RhYmxlID0gcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChu LT5wdWJvYmplY3RzLAorCQkJCQkJCQkJCQkJCQkJICB5eXNjYW5uZXIpOworCQkJCQlpZiAoaGFz X2V4Y2VwdF90YWJsZSkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coIkVYQ0VQVCBUQUJMRSBjbGF1c2Ug YWxsb3dlZCBvbmx5IGZvciBBTEwgVEFCTEVTIFBVQkxJQ0FUSU9OIikpOworCiAJCQkJCSQkID0g KE5vZGUgKikgbjsKIAkJCQl9CiAJCTsKIAorb3B0X2V4Y2VwdDoKKwkJCUVYQ0VQVAkJCQkJCQkJ CXsgJCQgPSB0cnVlOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGZhbHNlOyB9CisJ CTsKKwogLyoKICAqIEZPUiBUQUJMRSBhbmQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc3BlY2lmaWNh dGlvbnMKICAqCkBAIC0xMDg1NCwxNCArMTA4NjYsMTQgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10 OgogICogcmVsYXRpb25fZXhwciBoZXJlLgogICovCiBQdWJsaWNhdGlvbk9ialNwZWM6Ci0JCQlU QUJMRSByZWxhdGlvbl9leHByIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQorCQkJb3B0 X2V4Y2VwdCBUQUJMRSByZWxhdGlvbl9leHByIG9wdF9jb2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVz ZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwotCQkJCQkk JC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RBQkxFOworCQkJCQkkJC0+cHVib2JqdHlw ZSA9ICgkMSkgPyBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUgOiBQVUJMSUNBVElPTk9CSl9U QUJMRTsKIAkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0J CQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1 bW5zID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQt PnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQzOworCQkJCQkkJC0+cHVidGFibGUtPmNvbHVtbnMgPSAk NDsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQ1OwogCQkJCX0KIAkJCXwgVEFC TEVTIElOX1AgU0NIRU1BIENvbElkCiAJCQkJewpAQCAtMTEwMTAsMTEgKzExMDIyLDE4IEBAIEFs dGVyUHVibGljYXRpb25TdG10OgogCQkJCX0KIAkJCXwgQUxURVIgUFVCTElDQVRJT04gbmFtZSBB RERfUCBwdWJfb2JqX2xpc3QKIAkJCQl7CisJCQkJCWJvb2wgaGFzX2V4Y2VwdF90YWJsZSA9IGZh bHNlOwogCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKEFsdGVyUHVibGlj YXRpb25TdG10KTsKIAogCQkJCQluLT5wdWJuYW1lID0gJDM7CiAJCQkJCW4tPnB1Ym9iamVjdHMg PSAkNTsKLQkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLCB5eXNjYW5u ZXIpOworCQkJCQloYXNfZXhjZXB0X3RhYmxlID0gcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5w dWJvYmplY3RzLAorCQkJCQkJCQkJCQkJCQkJICB5eXNjYW5uZXIpOworCQkJCQlpZiAoaGFzX2V4 Y2VwdF90YWJsZSkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coIkVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxs b3dlZCBvbmx5IGZvciBTRVQgY2xhdXNlIikpOworCiAJCQkJCW4tPmFjdGlvbiA9IEFQX0FkZE9i amVjdHM7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMTAzMCwxMSArMTEwNDks MTggQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJfQogCQkJfCBBTFRFUiBQVUJMSUNBVElP TiBuYW1lIERST1AgcHViX29ial9saXN0CiAJCQkJeworCQkJCQlib29sIGhhc19leGNlcHRfdGFi bGUgPSBmYWxzZTsKIAkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRl clB1YmxpY2F0aW9uU3RtdCk7CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwogCQkJCQluLT5wdWJv YmplY3RzID0gJDU7Ci0JCQkJCXByZXByb2Nlc3NfcHVib2JqX2xpc3Qobi0+cHVib2JqZWN0cywg eXlzY2FubmVyKTsKKwkJCQkJaGFzX2V4Y2VwdF90YWJsZSA9IHByZXByb2Nlc3NfcHVib2JqX2xp c3Qobi0+cHVib2JqZWN0cywKKwkJCQkJCQkJCQkJCQkJCSAgeXlzY2FubmVyKTsKKwkJCQkJaWYg KGhhc19leGNlcHRfdGFibGUpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJFWENFUFQgVEFCTEUgY2xh dXNlIGFsbG93ZWQgb25seSBmb3IgU0VUIGNsYXVzZSIpKTsKKwogCQkJCQluLT5hY3Rpb24gPSBB UF9Ecm9wT2JqZWN0czsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTE5ODgwLDE2 ICsxOTkwNiwxOSBAQCBwcmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9v YmplY3RzX2xpc3QsIExpc3QgKipwdWJvYmplY3RzLAogLyoKICAqIFByb2Nlc3MgcHVib2Jqc3Bl Y19saXN0IHRvIGNoZWNrIGZvciBlcnJvcnMgaW4gYW55IG9mIHRoZSBvYmplY3RzIGFuZAogICog Y29udmVydCBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04gaW50byBhcHByb3ByaWF0ZSBQdWJs aWNhdGlvbk9ialNwZWNUeXBlLgorICoKKyAqIFJldHVybiB0cnVlIGlmIGFuIEVYQ0VQVCB0YWJs ZSBpcyBmb3VuZC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBwcmVwcm9jZXNzX3B1 Ym9ial9saXN0KExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIp CiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1Ym9iajsKIAlQ dWJsaWNhdGlvbk9ialNwZWNUeXBlIHByZXZvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfQ09OVElO VUFUSU9OOworCWJvb2wJCWZvdW5kZXhjZXB0dGFibGUgPSBmYWxzZTsKIAogCWlmICghcHVib2Jq c3BlY19saXN0KQotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAogCXB1Ym9iaiA9IChQdWJs aWNhdGlvbk9ialNwZWMgKikgbGluaXRpYWwocHVib2Jqc3BlY19saXN0KTsKIAlpZiAocHVib2Jq LT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTikKQEAgLTE5OTA2LDcg KzE5OTM1LDggQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3Qs IGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBV QkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTikKIAkJCXB1Ym9iai0+cHVib2JqdHlwZSA9IHByZXZv Ymp0eXBlOwogCi0JCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFC TEUpCisJCWlmIChwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEUgfHwK KwkJCXB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUpCiAJ CXsKIAkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBiZSBzZXQgZm9yIHRoaXMg dHlwZSBvZiBvYmplY3QgKi8KIAkJCWlmICghcHVib2JqLT5uYW1lICYmICFwdWJvYmotPnB1YnRh YmxlKQpAQCAtMTk5MjUsNiArMTk5NTUsMjUgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0 ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCXB1Ym9iai0+ cHVidGFibGUgPSBwdWJ0YWJsZTsKIAkJCQlwdWJvYmotPm5hbWUgPSBOVUxMOwogCQkJfQorCisJ CQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9UQUJMRSkK KwkJCXsKKwkJCQlmb3VuZGV4Y2VwdHRhYmxlID0gdHJ1ZTsKKworCQkJCS8qIFdIRVJFIGNsYXVz ZSBpcyBub3QgYWxsb3dlZCBvbiBhbiBleGNlcHQgdGFibGUgKi8KKwkJCQlpZiAocHVib2JqLT5w dWJ0YWJsZS0+d2hlcmVDbGF1c2UpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJXSEVSRSBjbGF1c2Ugbm90 IGFsbG93ZWQgZm9yIGV4Y2VwdCB0YWJsZSIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihw dWJvYmotPmxvY2F0aW9uKSk7CisKKwkJCQkvKiBDb2x1bW4gbGlzdCBpcyBub3QgYWxsb3dlZCBv biBhIGV4Y2VwdCB0YWJsZSAqLworCQkJCWlmIChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+ cHVidGFibGUtPmNvbHVtbnMpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJjb2x1bW4gc3BlY2lmaWNhdGlv biBub3QgYWxsb3dlZCBmb3IgZXhjZXB0IHRhYmxlIiksCisJCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKwkJCX0KIAkJfQogCQllbHNlIGlmIChwdWJvYmotPnB1 Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQSB8fAogCQkJCSBwdWJv YmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEpCkBA IC0xOTk2MCw2ICsyMDAwOSw4IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jq c3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAogCQlwcmV2b2JqdHlwZSA9IHB1 Ym9iai0+cHVib2JqdHlwZTsKIAl9CisKKwlyZXR1cm4gZm91bmRleGNlcHR0YWJsZTsKIH0KIAog LyotLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggMzk0MDRlYTBmNjkuLjBmYzE2 YTNlMTEwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKKysrIGIv c3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMzE4LDkgKzIzMTgsMTEgQEAgbWF0 Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJLyogQUxURVIgUFVCTElDQVRJT04g PG5hbWU+IERST1AgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiRFJPUCIpKQogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1BIiwg IlRBQkxFIik7Ci0JLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAqLworCQkvKiBBTFRF UiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIpKQotCQlDT01QTEVURV9XSVRIKCIoIiwgIlRB QkxFUyBJTiBTQ0hFTUEiLCAiVEFCTEUiKTsKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJFWENFUFQi LCAiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVS IiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRF X1dJVEgoIlRBQkxFIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkFERHxEUk9QfFNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJ CUNPTVBMRVRFX1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJ CQkJCSAiIEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IGFlM2JlYmMyYjRiLi45ZDA5MjkzNGUy NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTEyNiw2 ICsxMjYsMTYgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEVT IElOIFNDSEVNQSBwdWJfdGVzdDsKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0 IgogCistLSBmYWlsIC0gY2FuJ3QgYWRkIGFuIEVYQ0VQVCBUQUJMRSB0byAnRk9SIFRBQkxFJyBw dWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBBREQgRVhDRVBU IFRBQkxFIHRlc3RwdWJfdGJsMTsKK0VSUk9SOiAgRVhDRVBUIFRBQkxFIGNsYXVzZSBhbGxvd2Vk IG9ubHkgZm9yIFNFVCBjbGF1c2UKKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGFuIEVYQ0VQVCBUQUJM RSBmcm9tICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnRhYmxlIERST1AgRVhDRVBUIFRBQkxFIHRlc3RwdWJfdGJsMTsKK0VSUk9SOiAgRVhDRVBU IFRBQkxFIGNsYXVzZSBhbGxvd2VkIG9ubHkgZm9yIFNFVCBjbGF1c2UKKy0tIGZhaWwgLSBjYW4n dCBzZXQgYW4gRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90Ymwx OworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YWJsZSIgaXMgZGVmaW5lZCBhcyBO T04gRk9SIEFMTCBUQUJMRVMKK0RFVEFJTDogIEVYQ0VQVCBUYWJsZXMgY2Fubm90IGJlIGFkZGVk IHRvIG9yIGRyb3BwZWQgZnJvbSBub24gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgogU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogLS0gc2hvdWxkIGJl IGFibGUgdG8gY3JlYXRlIHB1YmxpY2F0aW9uIHdpdGggc2NoZW1hIGFuZCB0YWJsZSBvZiB0aGUg c2FtZQpAQCAtMjEzLDYgKzIyMywxNiBAQCBOb3QtbnVsbCBjb25zdHJhaW50czoKICByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgog KDEgcm93KQogCistLSBmYWlsIC0gY2FuJ3QgYWRkIGFuIEVYQ0VQVCBUQUJMRSB0byBzY2hlbWEg cHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEFERCBFWENF UFQgVEFCTEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOworRVJST1I6ICBFWENFUFQgVEFCTEUgY2xh dXNlIGFsbG93ZWQgb25seSBmb3IgU0VUIGNsYXVzZQorLS0gZmFpbCAtIGNhbid0IGRyb3AgYW4g RVhDRVBUIFRBQkxFIGZyb20gc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnNjaGVtYSBEUk9QIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7 CitFUlJPUjogIEVYQ0VQVCBUQUJMRSBjbGF1c2UgYWxsb3dlZCBvbmx5IGZvciBTRVQgY2xhdXNl CistLSBmYWlsIC0gY2FuJ3Qgc2V0IGFuIEVYQ0VQVCBUQUJMRSB0byBzY2hlbWEgcHVibGljYXRp b24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBFWENFUFQgVEFCTEUg cHViX3Rlc3QudGVzdHB1Yl9ub3BrOworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3Jz Y2hlbWEiIGlzIGRlZmluZWQgYXMgTk9OIEZPUiBBTEwgVEFCTEVTCitERVRBSUw6ICBFWENFUFQg VGFibGVzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gbm9uIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9ucy4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI1NSw2ICsyNzUsMjIg QEAgRXhjZXB0IFB1YmxpY2F0aW9uczoKICAgICAidGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0 dGFibGUiCiAgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMSIKIAorLS0gUmVw bGFjZSB0aGUgcHVibGljYXRpb24gRVhDRVBUIHRhYmxlIGxpc3Qgd2l0aCBhIHNwZWNpZmljIEVY Q0VQVCB0YWJsZS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlIFNFVCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworXGRScCsgdGVzdHB1Yl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0 ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZgorRXhjZXB0IHRhYmxlczoKKyAgICAi cHVibGljLnRlc3RwdWJfdGJsMSIKKworLS0gZmFpbCAtIERyb3BwaW5nIEVYQ0VQVCB0YWJsZSBp cyBub3Qgc3VwcG9ydGVkLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUgRFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworRVJST1I6ICBFWENF UFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQgb25seSBmb3IgU0VUIGNsYXVzZQorLS0gZmFpbCAtIEFk ZGluZyBFWENFUFQgdGFibGUgaXMgbm90IHN1cHBvcnRlZC4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIEFERCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90 YmwxOworRVJST1I6ICBFWENFUFQgVEFCTEUgY2xhdXNlIGFsbG93ZWQgb25seSBmb3IgU0VUIGNs YXVzZQogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFCTEUgdGVzdHB1Yl90Ymwy OwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJs ZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9yX3RibF9zY2hlbWEsIHRlc3RwdWJfZm9y YWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTE7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMzFiOWI3ZDRjNTQuLjIwODY1 MzlmZGMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC03NCw2ICs3NCwx MyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1AgVEFCTEVTIElOIFND SEVNQSBwdWJfdGVzdDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VUIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCiAKKy0tIGZh aWwgLSBjYW4ndCBhZGQgYW4gRVhDRVBUIFRBQkxFIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9u CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBFWENFUFQgVEFCTEUgdGVz dHB1Yl90YmwxOworLS0gZmFpbCAtIGNhbid0IGRyb3AgYW4gRVhDRVBUIFRBQkxFIGZyb20gJ0ZP UiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUg RFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworLS0gZmFpbCAtIGNhbid0IHNldCBhbiBF WENFUFQgVEFCTEUgdG8gJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9ydGFibGUgU0VUIEVYQ0VQVCBUQUJMRSB0ZXN0cHViX3RibDE7CisKIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi X2ZvcnNjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIC0tIHNob3VsZCBiZSBh YmxlIHRvIGNyZWF0ZSBwdWJsaWNhdGlvbiB3aXRoIHNjaGVtYSBhbmQgdGFibGUgb2YgdGhlIHNh bWUKQEAgLTEwNSw2ICsxMTIsMTMgQEAgU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcyBGUk9N IHBnX3B1YmxpY2F0aW9uIFdIRVJFIHB1Ym5hbWUgPSAndGVzdHB1Yl9mb3JhbGwKIFxkKyB0ZXN0 cHViX3RibDIKIFxkUnArIHRlc3RwdWJfZm9yYWxsdGFibGVzCiAKKy0tIGZhaWwgLSBjYW4ndCBh ZGQgYW4gRVhDRVBUIFRBQkxFIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JzY2hlbWEgQUREIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25v cGs7CistLSBmYWlsIC0gY2FuJ3QgZHJvcCBhbiBFWENFUFQgVEFCTEUgZnJvbSBzY2hlbWEgcHVi bGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERST1AgRVhDRVBU IFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJfbm9wazsKKy0tIGZhaWwgLSBjYW4ndCBzZXQgYW4gRVhD RVBUIFRBQkxFIHRvIHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JzY2hlbWEgU0VUIEVYQ0VQVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CisKIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gRVhDRVBUIFRB QkxFIHRlc3RzIGZvciBub3JtYWwgdGFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTEyMCw2ICsxMzQsMTYgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQg KHRlc3QKIC0tIGluIHRoZSBFWENFUFQgY2xhdXNlCiBcZCB0ZXN0cHViX3RibDEKIAorLS0gUmVw bGFjZSB0aGUgcHVibGljYXRpb24gRVhDRVBUIHRhYmxlIGxpc3Qgd2l0aCBhIHNwZWNpZmljIEVY Q0VQVCB0YWJsZS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2Vw dHRhYmxlIFNFVCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworXGRScCsgdGVzdHB1Yl9mb3Jh bGx0YWJsZXNfZXhjZXB0dGFibGUKKworLS0gZmFpbCAtIERyb3BwaW5nIEVYQ0VQVCB0YWJsZSBp cyBub3Qgc3VwcG9ydGVkLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUgRFJPUCBFWENFUFQgVEFCTEUgdGVzdHB1Yl90YmwxOworCistLSBmYWlsIC0g QWRkaW5nIEVYQ0VQVCB0YWJsZSBpcyBub3Qgc3VwcG9ydGVkLgorQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUgQUREIEVYQ0VQVCBUQUJMRSB0ZXN0cHVi X3RibDE7CisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFRBQkxFIHRlc3RwdWJf dGJsMjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMsIHRlc3RwdWJfZm9y dGFibGUsIHRlc3RwdWJfZm9yc2NoZW1hLCB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hLCB0ZXN0cHVi X2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFi bGUxOwotLSAKMi4zNC4xCgo= --00000000000029be7f064ba91f9f--